Skip to content

Commit 5563be0

Browse files
committed
[IMP] estate: Chapter 8
1 parent 23db79f commit 5563be0

File tree

4 files changed

+47
-10
lines changed

4 files changed

+47
-10
lines changed

estate/models/estate_properties.py

Lines changed: 27 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,7 @@
1-
from odoo import fields, models
1+
from odoo import api, fields, models
2+
3+
DEFAULT_GARDEN_AREA = 10
4+
DEFAULT_GARDEN_ORIENTATION = "north"
25

36

47
class PropertyModel(models.Model):
@@ -10,6 +13,7 @@ class PropertyModel(models.Model):
1013
postcode = fields.Char()
1114
date_availability = fields.Date(default=fields.Date.add(fields.Date.today(), months=3), copy=False)
1215
expected_price = fields.Float(required=True)
16+
best_offer = fields.Float(compute="_get_highest_price")
1317
selling_price = fields.Float(readonly=True, copy=False)
1418
bedrooms = fields.Integer(default=2)
1519
living_area = fields.Integer()
@@ -18,13 +22,9 @@ class PropertyModel(models.Model):
1822
garden = fields.Boolean()
1923
garden_area = fields.Integer()
2024
garden_orientation = fields.Selection(
21-
selection=[
22-
('north', 'North'),
23-
('south', 'South'),
24-
('east', 'East'),
25-
('west', 'West')
26-
]
25+
selection=[('north', 'North'), ('south', 'South'), ('east', 'East'), ('west', 'West')]
2726
)
27+
total_living_area = fields.Integer(compute="_compute_total_area")
2828

2929
active = fields.Boolean(default=True)
3030
state = fields.Selection(
@@ -44,3 +44,23 @@ class PropertyModel(models.Model):
4444
salesperson = fields.Many2one("res.users", default=lambda self: self.env.user)
4545
tag_ids = fields.Many2many("estate.property.tag")
4646
offer_ids = fields.One2many("estate.property.offer", "property_id")
47+
48+
@api.depends("living_area", "garden_area")
49+
def _compute_total_area(self):
50+
for record in self:
51+
record.total_living_area = record.living_area + record.garden_area
52+
53+
@api.depends("offer_ids")
54+
def _get_highest_price(self):
55+
for record in self:
56+
record.best_offer = max(record.offer_ids.mapped("price")) if record.offer_ids else 0
57+
58+
@api.onchange("garden")
59+
def _update_garden_area_and_orientation(self):
60+
for record in self:
61+
if record.garden:
62+
record.garden_area = DEFAULT_GARDEN_AREA
63+
record.garden_orientation = DEFAULT_GARDEN_ORIENTATION
64+
else:
65+
record.garden_area = 0
66+
record.garden_orientation = None

estate/models/estate_property_offers.py

Lines changed: 12 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 PropertyOfferModel(models.Model):
@@ -15,3 +15,14 @@ class PropertyOfferModel(models.Model):
1515
)
1616
partner_id = fields.Many2one("res.partner", required=True)
1717
property_id = fields.Many2one("estate.property", required=True)
18+
validity = fields.Integer(default=7)
19+
date_deadline = fields.Date(compute="_compute_deadline", inverse="_inverse_deadline")
20+
21+
@api.depends("validity")
22+
def _compute_deadline(self):
23+
for record in self:
24+
record.date_deadline = fields.Date.add(record.create_date, days=record.validity) if record.create_date else None
25+
26+
def _inverse_deadline(self):
27+
for record in self:
28+
record.validity = (record.date_deadline - fields.Date.to_date(record.create_date)).days if record.date_deadline else record.validity

estate/views/estate_property_offer_views.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
<list string="Channel">
77
<field name="price"/>
88
<field name="partner_id"/>
9+
<field name="validity"/>
10+
<field name="date_deadline" string="Deadline"/>
911
<field name="status"/>
1012
</list>
1113
</field>
@@ -23,6 +25,8 @@
2325
<group>
2426
<field name="price"/>
2527
<field name="partner_id"/>
28+
<field name="validity"/>
29+
<field name="date_deadline" string="Deadline"/>
2630
<field name="status"/>
2731
</group>
2832
</sheet>

estate/views/estate_property_views.xml

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@
3939
</group>
4040
<group>
4141
<field name="expected_price"/>
42+
<field name="best_offer"/>
4243
<field name="selling_price"/>
4344
</group>
4445
</group>
@@ -47,12 +48,13 @@
4748
<group>
4849
<field name="description"/>
4950
<field name="bedrooms"/>
50-
<field name="living_area"/>
51+
<field name="living_area" string="Living Area (sqm)"/>
5152
<field name="facades"/>
5253
<field name="garage"/>
5354
<field name="garden"/>
54-
<field name="garden_area"/>
55+
<field name="garden_area" string="Garden Area (sqm)"/>
5556
<field name="garden_orientation"/>
57+
<field name="total_living_area" string="Total Living Area (sqm)"/>
5658
</group>
5759
</page>
5860
<page string="Offers">

0 commit comments

Comments
 (0)