Setelah kita membuat button dan actionnya pada pemrograman dengan Odoo ERP maka kita melanjutkan dengan pembuatan button pada tree atau list view pada pembuatan aplikasi dengan Odoo ERP.

Pembuatan button dalam list view pada pengembangan aplikasi Odoo ERP adalah seperti pada penjelasan-penjelasan berikut ini

  1. Update model

    Kita masuk ke Virtualmin dari Webmin dan masuk ke File Manager kemudian melakukan edit pada model seperti pada gambar di atas.
  2. Update view

    Kita kemudian melanjutkan pengubahan pada view seperti pada gambar di atas.
  3. Restart Odoo

    Setelah kita melakukan perubahan pada model maka kita melakukan restart Odoo seperti pada gambar di atas.
  4. Upgrade modul

    Setelah kita melakukan update pada view maka kita melanjutkan dengan upgrade modul seperti pada gambar di atas.
  5. Menggunakan button pada list view

    Kita kemudian masuk ke list view dan melakukan accept pada salah satunya.


    Tampak property sudah diupdate.
  6. 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
    
    	def action_accept(self):
    		if "a" in self.mapped("property_id.offer_ids.status"):
    			raise UserError("An offer as already been accepted.")
    		self.write(
    			{
    				"status": "a",
    			}
    		)
    		return self.mapped("property_id").write(
    			{
    				"state": "a",
    				"selling_price": self.price,
    				"buyer_id": self.partner_id.id,
    			}
    		)
    
    	def action_refuse(self):
    		return self.write(
    			{
    				"status": "r",
    			}
    		)
    
  7. 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"/>
                    <button name="action_accept" type="object" title="Accept" icon="fa-check" attrs="{'invisible': [('status', '!=', False)]}"/>
                    <button name="action_refuse" type="object" title="Refuse" icon="fa-times" attrs="{'invisible': [('status', '!=', False)]}"/>
                    <field name="status" invisible="1"/>            
            	</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/10_actions.html .
2. https://github.com/odoo/technical-training-solutions/tree/16.0-core/estate .

Kunjungi www.proweb.co.id untuk menambah wawasan anda.

Jika anda tertarik mengenai aplikasi Odoo ERP silahkan mengisi form di bawah ini

Pembuatan Button dalam List View pada Kustomisasi Odoo ERP
× Ada yang dapat saya bantu ? Available on SundayMondayTuesdayWednesdayThursdayFridaySaturday