Dalam melakukan pemrograman kita mungkin menginginkan pengisian field secara otomatis berdasarkan field yang lain diisi. Begitu juga kita dapat melakukan pengisian field yang diisi otomatis jika suatu field diisi lain pada pemrograman menggunakan platform Odoo ERP.

Pengisian field otomatis dan inverse pada pemrograman Odoo ERP adalah seperti pada penjelasan-penjelasan berikut ini

  1. Update model estate_property_offer.py

    Kita mengupdate source code untuk model seperti pada gambar di atas.


    Setelah melakukan update pada model kita melakukan restart Odoo.
  2. Update view estate_property_offer_views.xml

    Kita kemudian menambahkan validity dan date_deadline pada view tree dan juga form.


    Setelah kita mengubah view maka kita melekukan Upgrade aplikasi seperti pada gambar di atas.
  3. Isi Validity, auto fill di Deadline

    Kita mengisi field Validity dan Deadline terisi secara otomatis.
  4. Isi Deadline, auto fill di Validity setelah Save

    Kita kemudian mengisi Deadline dan kemudian SAVE.


    Setelah SAVE dan refresh maka validity juga terupdate seperti pada gambar di atas.
  5. Source code pada model estate_property_offer.py
    from dateutil.relativedelta import relativedelta
    from odoo import api, fields, models
    
    class EstatePropertyOffer(models.Model):
    	_name = "estate.property.offer"
    	_description = "Property Offer"
    
    	price = fields.Float()
    
    	status = fields.Selection(
        	[ 
            	('a', 'Accepted'),
            	('r', 'Refused'),
            ],
        	'Status', copy=False
    	)
    
    	partner_id = fields.Many2one("res.partner")
    	property_id = fields.Many2one("estate.property")
    
    	validity = fields.Integer(string="Validity (days)", default=7)
        
    	# Computed
    	date_deadline = fields.Date(string="Deadline", compute="_compute_date_deadline", inverse="_inverse_date_deadline")
    	@api.depends("create_date", "validity")
    	def _compute_date_deadline(self):
    		for offer in self:
    			date = offer.create_date.date() if offer.create_date else fields.Date.today()
    			offer.date_deadline = date + relativedelta(days=offer.validity)
    
    	def _inverse_date_deadline(self):
    		for offer in self:
    			date = offer.create_date.date() if offer.create_date else fields.Date.today()
    			offer.validity = (offer.date_deadline - date).days
    
  6. Source code pada view estate_property_offer_views.xml
    <?xml version="1.0"?>
    <odoo>
    
    	<record id="estate_property_offer_view_tree" model="ir.ui.view">
            <field name="name">estate.property.offer.tree</field>
            <field name="model">estate.property.offer</field>
            <field name="arch" type="xml">
                <tree string="Offernya" >
                    <field name="price"/>
                    <field name="partner_id"/>
                    <field name="validity"/>
                    <field name="date_deadline"/>
                    <field name="status"/>
                </tree>
            </field>
        </record>
    
    	<record id="estate_property_offer_view_form" model="ir.ui.view">
            <field name="name">estate.property.offer.form</field>
            <field name="model">estate.property.offer</field>
            <field name="arch" type="xml">
            	<form string="Offernya">
       				 <sheet>
            			<group>
               				<group>
                    			<field name="price"/>
                    			<field name="partner_id"/>
                    			<field name="validity"/>
                    			<field name="date_deadline"/>
                    			<field name="status"/>
                			</group>
            			</group>
        			</sheet>
    			</form>
            </field>
        </record>
    </odoo>
    

Informasi lebih lanjut silahkan mengunjungi
1. https://www.odoo.com/documentation/16.0/developer/howtos/rdtraining/09_compute_onchange.html .
2. https://github.com/odoo/technical-training-solutions/tree/16.0-core/estate .
3. 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

 

Pengisian Field Otomatis dan Inverse pada Pemrograman Odoo ERP