Skip to content

Commit 1f717c8

Browse files
Tony Michel (tomic)SaddemAmine
authored andcommitted
[ADD] estate: add computed fields and onchanges
1 parent 752ec48 commit 1f717c8

3 files changed

Lines changed: 55 additions & 2 deletions

File tree

estate/models/estate_property.py

Lines changed: 27 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from odoo import fields, models
1+
from odoo import api, fields, models
22

33

44
class EstateProperty(models.Model):
@@ -53,3 +53,29 @@ class EstateProperty(models.Model):
5353
tag_ids = fields.Many2many("estate.property.tag", string="Tags")
5454

5555
offer_ids = fields.One2many("estate.property.offer", "property_id", string="Offers")
56+
57+
total_area = fields.Integer(
58+
string="Total Area (sqm)", compute="_compute_total_area"
59+
)
60+
best_price = fields.Float(
61+
string="Best Offer", compute="_compute_best_price"
62+
)
63+
64+
@api.depends("living_area", "garden_area")
65+
def _compute_total_area(self):
66+
for record in self:
67+
record.total_area = (record.living_area or 0) + (record.garden_area or 0)
68+
69+
@api.depends("offer_ids.price")
70+
def _compute_best_price(self):
71+
for record in self:
72+
record.best_price = max(record.offer_ids.mapped("price"), default=0.0)
73+
74+
@api.onchange("garden")
75+
def _onchange_garden(self):
76+
if self.garden:
77+
self.garden_area = 10
78+
self.garden_orientation = "north"
79+
else:
80+
self.garden_area = 0
81+
self.garden_orientation = False

estate/models/estate_property_offer.py

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
from odoo import fields, models
1+
from datetime import timedelta
2+
3+
from odoo import api, fields, models
24

35

46
class PropertyOffer(models.Model):
@@ -16,3 +18,24 @@ class PropertyOffer(models.Model):
1618
)
1719
partner_id = fields.Many2one("res.partner", string="Partner", required=True)
1820
property_id = fields.Many2one("estate.property", string="Property", required=True)
21+
22+
23+
validity = fields.Integer(string="Validity (days)", default=7)
24+
date_deadline = fields.Date(
25+
string="Deadline",
26+
compute="_compute_date_deadline",
27+
inverse="_inverse_date_deadline",
28+
)
29+
30+
31+
@api.depends("validity")
32+
def _compute_date_deadline(self):
33+
for record in self:
34+
date = record.create_date.date() if record.create_date else fields.Date.today()
35+
record.date_deadline = date + timedelta(days=record.validity)
36+
37+
def _inverse_date_deadline(self):
38+
for record in self:
39+
date = record.create_date.date() if record.create_date else fields.Date.today()
40+
if record.date_deadline:
41+
record.validity = (record.date_deadline - date).days

estate/views/estate_property_views.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@
4343
</group>
4444
<group>
4545
<field name="expected_price"/>
46+
<field name="best_price"/>
4647
<field name="selling_price"/>
4748
</group>
4849
</group>
@@ -67,6 +68,7 @@
6768
<field name="garden"/>
6869
<field name="garden_area"/>
6970
<field name="garden_orientation"/>
71+
<field name="total_area"/>
7072
</group>
7173
</page>
7274

@@ -75,6 +77,8 @@
7577
<list editable="bottom">
7678
<field name="price"/>
7779
<field name="partner_id"/>
80+
<field name="validity"/>
81+
<field name="date_deadline"/>
7882
<field name="status"/>
7983
</list>
8084
</field>

0 commit comments

Comments
 (0)