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/