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
- Update model
Kita masuk ke Virtualmin dari Webmin dan masuk ke File Manager kemudian melakukan edit pada model seperti pada gambar di atas.
- Update view
Kita kemudian melanjutkan pengubahan pada view seperti pada gambar di atas.
- Restart Odoo
Setelah kita melakukan perubahan pada model maka kita melakukan restart Odoo seperti pada gambar di atas.
- Upgrade modul
Setelah kita melakukan update pada view maka kita melanjutkan dengan upgrade modul seperti pada gambar di atas.
- Menggunakan button pada list view
Kita kemudian masuk ke list view dan melakukan accept pada salah satunya.
Tampak property sudah diupdate.
- Source code pada model estate_property_offer.py
123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657
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"
,
}
)
- Source code pada view estate_property_offer_views.xml
123456789101112131415161718192021222324252627282930313233343536373839
<?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