Kita tentu akan membuat form dalam pengembangan aplikasi dengan framework Odoo ERP. Pada saat kita membuat form biasanya ada field-field lain yang diupdate sesuai pengisian field-field sebelumnya. Kita akan menerapkan hal ini juga dalam pembuatan aplikasi pada lingkup Odoo.
Onchange pada pengembangan aplikasi menggunakan Odoo ERP adalah seperti pada penjelasan-penjelasan berikut ini
- Update model dan restart Odoo
Kita masuk ke Virtualmin dari Webmin, menuju File Manager dan menambahkan bagian onchange seperti pada gambar di atas.
Setelah kita mengubah model maka kita perlu mengupdate database dengan restart Odoo seperti pada gambar di atas.
- Melihat tampilan form
Kita kemudian melanjutkan ke tampilan form awal seperti pada gambar di atas.
Kita kemudian mengklik Garden dan tampak ada perubahan pada Garden Area dan Garden Orientation seperti pada gambar di atas.
- Source code pada model estate_property.py
from odoo import api, fields, models class EstateProperty(models.Model): _name = "estate.property" _description = "Real Estate Property" active = fields.Boolean(default=True) state = fields.Selection( [ ('n', 'New'), ('o', 'Offer Received'), ('a', 'Offer Accepted'), ('s', 'Sold'),('c', 'Cancelled'), ], 'State', default='n' ) name = fields.Char(required=True,default='Rumah Baru') description = fields.Text() property_type_id = fields.Many2one("estate.property.type", string="Property Type") tags_id = fields.Many2many("estate.property.tag", string="Property Tags") postcode = fields.Char() date_availability = fields.Date(copy=False) expected_price = fields.Float() selling_price = fields.Float(readonly=True,copy=False) bedrooms = fields.Integer(default=2) living_area = fields.Integer() facades = fields.Integer() garage = fields.Boolean() garden = fields.Boolean() garden_area = fields.Integer() garden_orientation = fields.Selection( [ ('n', 'North'), ('s', 'South'), ('e', 'East'), ('w', 'West'), ], 'Garden Orientation', default='e' ) user_id = fields.Many2one("res.users", string="Salesman",default=lambda self: self.env.user) buyer_id = fields.Many2one("res.partner", string="Buyer",copy=False) offer_ids = fields.One2many("estate.property.offer", "property_id", string="Offer") best_price = fields.Float("Best Offer", compute="_compute_best_price", help="Best offer received") @api.depends("offer_ids.price") def _compute_best_price(self): for prop in self: prop.best_price = max(prop.offer_ids.mapped("price")) if prop.offer_ids else 0.0 @api.onchange("garden") def _onchange_garden(self): if self.garden: self.garden_area = 10 self.garden_orientation = "n" else: self.garden_area = 0 self.garden_orientation = False
Informasi lebih lanjut silahkan mengunjungi
1. https://www.odoo.com/documentation/16.0/developer/howtos/rdtraining/09_compute_onchange.html .
2. https://www.odoo.com/documentation/16.0/developer/reference/backend/orm.html#odoo.api.onchange .
3. https://github.com/odoo/technical-training-solutions/tree/16.0-core/estate .
4. https://thispointer.com/python-if-else-in-one-line-a-ternary-operator/ .
Kunjungi www.proweb.co.id untuk menambah wawasan anda.
Jika anda tertarik mengenai aplikasi Odoo ERP silahkan mengisi form di bawah ini