Odoo 16 | Technical Documentation | Volume 1.2
Odoo 16 | Tutorial Odoo 16 | Learn Odoo For Beginners | Odoo Technical Documentation

Selasa, 23 Januari 2024


Bertemu lagi dengan kami di tutorial Odoo 16 , Di kesempatan sebelumnya kita sudah menyelesaikan tutorial Odoo 16 pada volume 1.1. Dan pada kesempatan kali ini kita akan melanjutkan tutorial sebelumnya yang sudah kita tunggu - tunggu. Baik tanpa berlama - lama kita masuk ke tutorialnya.


D. ATRIBUTE FIELD

1. String

String adalah field yang akan terlihat oleh pengguna. Jika tidak didefinisikan, label akan mengambil nama field aslinya (coding). Umumnya, nilai dari label ini dituliskan langsung, jarang digabungkan dengan atribut kecuali menggunakan snippet.

name = fields.Char(string=’Reference’)

Atau

name = fields.Char(’Reference’)
2. Help

Help adalah hints yang jika krusor di dekat-kan ke field akan terlihat.

opening_debit = fields.Monetary(help=”Opening debit value for this account.”)
3. Invisible

Invisible adalah jika kita memberikan nilai True maka field tidak akan terlihat

password = fields.Char(invisible=True)
4. Readonly

Readonly adalah jika kita memberikan nilai True maka field tidak akan bisa di edit

company_id = fields.Many2one(readonly=True)
5. Required

Required adalah jika kita emberikanya nilai True, maka field tersebut wajib untuk di isi dan tidak boleh kosong.

name = fields.Char(required=True)
6. Index

Index adalah jika kita memberikan nilai True, Maka field akan di berikan index pada database, hal tersebut akan mempercepat proses pencarian.

date_order = fields.Datetime(index=True)
7. Default

Default adalah jika memberikan value awal pada field, Bisa berupa method atau value yang sesuai dengan jenis fieldnya.

service_type = fields.Selection(default=’manual’)
8. States

States adalah jika Memberikan kondisi readonly / required / invisible pada masing-masing status

name = fields.Char(states={‘open’: [(‘readonly’, False)]})
9. Groups

Groups adalah untuk memberikan batasan batasan akses ke group tertentu.

signup_token = fields.Char(groups=”base.group_erp_manager”)
10. Company Dependent

Company dependent adalah jika kita memberikan nilai True, Maka value field akan menjadi bergantung pada company yang sedang berjalan.

account_id = fields.Many2one(‘account.account’, company_dependent=True)
11. Copy

Copy adalah jika kita memberikan nilai true, Maka nilai field dapat di publikasi saat record. Secara default bernilai True secara normal field dan False untuk field computed, property, dan field related

name = fields.Char(copy=False)
12. Store

Store adalah jika kita memberikan Nilai True, Maka nilai field akan tersimpan pada database.  Secara default bernilai True secara normal field dan False untuk field computed, property, dan field related

balance_end = fields.Monetary(compute=’_end_balance’, store=True)
13. Group operator

Group operator adalah untuk menentukan sebuah value berdasarkan kumpulan dari semua record (nilainya : avg, sum, min, max, dll) dan hanya akan berfungsi jika dipanggil oleh method read_group().

value = fields.Float(group_operator=”avg”)
14. Group expand

Group expand adalah jika field yang menggunakan group_expand ini dipakai untuk view kanban (attribute default_group_by), dimana field ini digunakan untuk menentukan mana yang harus di expand (buka/tampil) dan mana yang harus di fold (lipat/tutup)

stage_id = fields.Many2one(‘crm.stage’, string=’Stage’, group_expand=’_read_group_stage_ids’)
15. Compute

Compute adalah jika Field ini valuenya akan ditentukan oleh sebuah method, bukan dari inputan user. Sebuah field yang menggunakan attribute compute secara default akan menjadi readonly dan tidak menyimpan valuenya.

amount_tax = fields.Monetary(compute=’_compute_amount’)
16. Inverse

Inverse di gunakan untuk membuat field compute dapat di edit oleh user dan secara otomatis dapat mempengaruhi value field lain yang menjadi dependes method computenya.

qty_delivered = fields.Float(compute=’_compute_qty_delivered’, inverse=’_inverse_qty_delivered’)
17. Search

Search adalah field compute yang tidak menyimpan valuenya karena bersifat sementara. oleh karena itu maka valuenya tidak dapat kita jadikan paramater untuk proses searching. Tetapi hal tersebut dapat di atasi dengan mengisi atributte seperti berikut

is_subcontractor = fields.Boolean(search=”_search_is_subcontractor”)
18. Related

Related yaitu berfungsi untuk memberikan value sebuah field kepada field lain kepada model yang berbeda menggunakan perantara Many2One. Default dari field ini tidak tersimpan, tidak dapat di copy, dan readonly.

visa_no = fields.Char(related=”employee_id.visa_no”)
19. Size

Size yaitu berfungsi untuk membatasi jumlah digit karakter pada field type Char.

code = fields.Char(size=64)
20. Translate

Translate yaitu berfungsi untuk menentukan apakah label dari field bisa atau tidak untuk di terjemahkan. Nilai default dari atribute ini adalah False.

name = fields.Char(string=’Account Type’, translate=True)
21. Digits

Digits yaitu berfungsi untuk menentukan jumlah digit angka pada field type float elemen sebelah kiri adalah totalan dan sebelah kanan adalah desimal.

amount = fields.Float(digits=(20, 5))
22. Max Width

Max width yaitu berfungsi untuk menetukan nilai max pada lebar field Image.

image_1920 = fields.Image(max_width=1920, max_height=1920)
23. Max Height

Max Height yaitu berfungsi untuk menentukan nilai max pada tinggi field Image.

image_1024 = fields.Image(max_width=1024, max_height=1024)
24. Selection

Selection yaitu berfungsi untuk menentukan pilihan value pada filed type selection

state = fields.Selection(selection=[(‘draft’, ‘Draft’), (‘posted’, ‘Posted’)])
25. Selection Add

Selection Add yaitu berfungsi untuk menambah pilihan value saat overriding  pada field type selection.

26. Comodel Name

Comodel name yaitu berfungsi untuk menetapkan model relasi yang menjadi tujuan pada field-field relasi, seperti many2one, one2many, dan many2many. Umumnya, nilai model relasi ini langsung dituliskan, jarang digabungkan dengan atribut kecuali menggunakan snippet.

partner_id = fields.Many2one(comodel_name=‘res.partner’, string=’Partner’)

Atau

partner_id = fields.Many2one(‘res.partner’, ‘Partner’)
27. Domain.

Domain yaitu berfungsi untuk memfilter data yang akan menjadi field - field relasi seperti many2one, one2many, dan many2many

product_id = fields.Many2one(‘product.product’, domain=[(‘purchase_ok’, ‘=’, True)])
28. context

Context yaitu atribut yang memiliki banyak fungsi dan bisa kita definisikan dengan baik menggunak python maupun xml. Context memiliki beberapa fungsi di antaranya untuk mengirim informasi, memberikan value default field , serta mengontrol tampilan data (filters, groupby, sorting), memiliki fungsi seperti domain, dll.

company_id = fields.Many2one(‘res.company’, context={‘user_preference’: True})
29. Ondelete

Ondelete yaitu berfungsi untuk menentukan action apa yang harus dilakukan ketika record referensi dihapus pada model aslinya. Ada beberapa nilai dari attribute ini, seperti berikut

Ketika record model referensi dihapus, maka value field ini akan menjadi kosong (tanpa value)

Record model referensi tidak bisa dihapus sebelum record yang mengandung value field ini dihapus

Ketika record model referensi dihapus, maka record yang mengandung value field ini ikut dihapus

30. Auto Join

Auto Join memiliki default bernilai False, Jika kita set ke True maka ORM akan melakukan proses sql joins yang akan mengabaikan security sehingga akan lebih membuat efisien dan meningkatkan performa yang lebih efisien. tetapi sebagai catatan user dapat melihat record yang tidak termasuk otoritasnya.

partner_id = fields.Many2one(‘res.partner’, auto_join=True)
31. Delegate

Delegate yaitu atrribute yang memiliki fungsi hampir sama dengan atrribute class inherits. atrribute ini memiliki default False, jika kita set ke True maka field - field yang ada pada relasi ini bisa kita akses pada model xml ataupun python sekalipun tanpa perlu mendefinisikanya terlebih dahulu.

partner_id = fields.Many2one(‘res.partner’, ‘Partner’, delegate=True)
32. Inverse Name

Inverse Name yaitu menentuka field relasi pada model yang menjadi target operasi sebagai model utama. atrribute ini busa di tulis langsung valuenya, dan jarang bersama dengan atrributenya kecuali kita menggunakan snippet. atrribut ini hanya di gunakan bersama dengan field One2Many saja.

order_line = fields.One2many(comodel_name=‘sale.order.line’, inverse_name=‘order_id’, string=’Order Lines’)

Atau

order_line = fields.One2many(‘sale.order.line’, ‘order_id’, ‘Order Lines’)
33. Limit

Limit yaitu berfungsi untuk membatasi jumlah record yang bisa di read atau di tampilkan pada field One2many. Kita bisa menentukan hal tersebut pada python maupun xml. Kita juga dapat menggunakan method "search" sebagai pembatas jumlah record yang di hasilkan.

member_ids = fields.One2many(‘hr.employee’, ‘department_id’, ‘Members’, limit=10)

Atau

self.env[‘account.move.line’].search([(‘account_id’, ‘in’, self.ids)], limit=1)


E. FIELD METHOD

Method ini jarang di gunakan oleh para developer, beberapa field di odoo memiliki method yang bermanfaat seperti pada field, Fload, Date, Dll. Sebelum kita menggunakan library milik python kita harus memastikan sudah memaxsimalkan penggunaan method pada field.

1. Round

Method ini berfungsi untuk membulatkan bilangan pada Field Fload

fields.Float.round(self.product_uom_qty, precision_rounding=self.product_uom_id.rounding)
2. Is Zero

Method ini berfungsi untuk memastikan apakah bilangan bernilai 0 atau tidak.

fields.Float.is_zero(self.product_uom_qty, precision_rounding=self.product_uom_id.rounding)
3. Compare

Method ini berfungsi untuk membandingkan 2 bilangan pada field Fload

field.Float.compare(self.product_uom_qty, self.qty_done, precision_rounding=self.product_uom_id.rounding)

4. To Date

Method ini berfungsi untuk mengconvert string ke object date pada field Date

fields.Date.to_date(self.date_order)
5. To Datetime

Method ini berfungsi untuk merubah string ke object tanggal dan waktu

fields.Datetime.to_datetime(values[‘date_start’])
6. Add

Method ini berfungsi untuk merubah object dengan bilangan detik, jam, hari, bulan atau tahun

fields.Date.add(fields.Date.today(), months=4))

fields.Datetime.add(fields.Datetime.now(), days=3)
7. Subtract

Method ini berfungsi untuk mengurangi object date/datetime dengan bilangan detik, jam, hari, bulan atau tahun

fields.Datetime.subtract(fields.Datetime.now(), days=3)
8. Context Today

Method ini berfungsi untuk memberikan tanggal hari ini berdasarkan timezone user pada field Date

fields.Date.context_today(self)
9. End Of

Method ini berfungsi untuk mendapatkan tanggal akhir dari suatu period baik tahun, quarter, bulan, pekan, hari atau jam. Harus mengimport code from odoo.tools.date_utils import *

end_of(fields.Date.today(), ‘week’)
10. Start

Method ini berfungsi untuk mendapatkan tanggal awal dari suatu period baik tahun, quarter, bulan, pekan, hari atau jam. Harus mengimport code from odoo.tools.date_utils import *

start_of(fields.Date.today(), ‘month’)


Baca Juga : https://tunasoperasi.co.id/blog/our-blog-1/odoo-16-technical-documentation-volume-1-1-3

Referensi Pembuatan Tutorial : https://tutorialopenerp.wordpress.com/2023/05/28/odoo-16-technical-documentation-part-1/

Odoo 16 | Technical Documentation | Volume 1.1
Odoo 16 | Tutorial Odoo 16 | Learn Odoo For Beginners | Odoo Technical Documentation