Skip to content

Commit b28ab2f

Browse files
committed
[IMP] estate: computed properties for garden description and offer validiy
1 parent 577573a commit b28ab2f

File tree

4 files changed

+45
-3
lines changed

4 files changed

+45
-3
lines changed

estate/models/estate_property.py

Lines changed: 22 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):
@@ -58,3 +58,24 @@ class EstateProperty(models.Model):
5858
property_tags_ids = fields.Many2many("estate.property.tag", string="Tags")
5959

6060
offer_ids = fields.One2many("estate.property.offer", "property_id", string="Offers")
61+
total_area = fields.Float(compute="_compute_total_area")
62+
best_offer = fields.Float(compute="_compute_best_offer")
63+
64+
@api.depends("garden_area", "living_area")
65+
def _compute_total_area(self):
66+
for record in self:
67+
record.total_area = record.garden_area + record.living_area
68+
69+
@api.depends("offer_ids")
70+
def _compute_best_offer(self):
71+
for record in self:
72+
record.best_offer = 0
73+
for offer in record.offer_ids:
74+
record.best_offer = max(record.best_offer, offer.price)
75+
76+
@api.onchange("garden")
77+
def _onchange_garden(self):
78+
if self.garden:
79+
self.garden_area, self.garden_orientation = 10, "north"
80+
else:
81+
self.garden_area, self.garden_orientation = 0, None

estate/models/estate_property_offer.py

Lines changed: 17 additions & 2 deletions
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 EstatePropertyOffer(models.Model):
@@ -9,6 +9,11 @@ class EstatePropertyOffer(models.Model):
99
status = fields.Selection(
1010
string="Status", selection=[("yes", "Accepted"), ("no", "Refused")], copy=False
1111
)
12+
validity = fields.Integer(default=7)
13+
offer_creation_date = fields.Date(default=fields.Date.today())
14+
deadline = fields.Date(
15+
"Offer Deadline", compute="_compute_deadline", inverse="_inverse_deadline"
16+
)
1217

1318
partner_id = fields.Many2one(
1419
'res.partner',
@@ -17,7 +22,17 @@ class EstatePropertyOffer(models.Model):
1722
default=lambda self: self.env.user.partner_id,
1823
required=True,
1924
)
20-
2125
property_id = fields.Many2one(
2226
'estate.property', string='Property', ondelete='restrict', required=True
2327
)
28+
29+
@api.depends("validity", "offer_creation_date")
30+
def _compute_deadline(self):
31+
for record in self:
32+
record.deadline = fields.Date.add(
33+
record.offer_creation_date, days=record.validity
34+
)
35+
36+
def _inverse_deadline(self):
37+
for record in self:
38+
record.validity = (record.deadline - record.offer_creation_date).days

estate/views/estate_property_offer_view.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
<group>
1212
<field name="price"/>
1313
<field name="partner_id"/>
14+
<field name="validity"/>
15+
<field name="deadline"/>
1416
<field name="status"/>
1517
</group>
1618
</div>
@@ -26,6 +28,8 @@
2628
<list string="Channel">
2729
<field name="price"/>
2830
<field name="partner_id"/>
31+
<field name="validity"/>
32+
<field name="deadline"/>
2933
<field name="status"/>
3034
</list>
3135
</field>

estate/views/estate_property_view.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
</group>
3535
<group>
3636
<field name="expected_price"/>
37+
<field name="best_offer"/>
3738
<field name="selling_price"/>
3839
</group>
3940
</group>
@@ -49,6 +50,7 @@
4950
<field name="garden"/>
5051
<field name="garden_area"/>
5152
<field name="garden_orientation"/>
53+
<field name="total_area"/>
5254
</group>
5355
</page>
5456
<page string="Offers">

0 commit comments

Comments
 (0)