Skip to content

Commit 3609cce

Browse files
committed
[IMP] estate: Compute total area, best price and add onchange for garden fields
1 parent 70b0a9e commit 3609cce

File tree

6 files changed

+51
-1
lines changed

6 files changed

+51
-1
lines changed

estate/models/estate_property.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,26 @@ class EstateProperty(models.Model):
6767
total_area = fields.Float(
6868
compute="_compute_total_area"
6969
)
70+
best_price = fields.Float(
71+
compute="_compute_best_price",
72+
)
7073

7174
@api.depends('living_area', 'garden_area')
7275
def _compute_total_area(self):
7376
for record in self:
7477
record.total_area = record.living_area + record.garden_area
78+
79+
@api.depends('offer_ids.price')
80+
def _compute_best_price(self):
81+
for record in self:
82+
prices = record.offer_ids.mapped('price')
83+
record.best_price = max(prices) if prices else 0.0
84+
85+
@api.onchange("garden")
86+
def _onchange_garden(self):
87+
if self.garden:
88+
self.garden_area = 10
89+
self.garden_orientation = "north"
90+
else:
91+
self.garden_area = 0
92+
self.garden_orientation = None

estate/models/estate_property_offer.py

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,11 @@
1-
from odoo import models, fields
1+
from dateutil.relativedelta import relativedelta
2+
from odoo import models, fields, api
23

34

45
class EstatePropertyOffer(models.Model):
56
_name = "estate.property.offer"
67
_description = "Real Estate Property Offer"
8+
79
price = fields.Float(string="Price")
810
status = fields.Selection(
911
[
@@ -20,3 +22,22 @@ class EstatePropertyOffer(models.Model):
2022
"estate.property",
2123
required=True,
2224
)
25+
validity = fields.Integer(
26+
default=7,
27+
)
28+
date_deadline = fields.Date(
29+
compute="_compute_date_deadline",
30+
inverse="_inverse_date_deadline",
31+
store=True,
32+
)
33+
34+
@api.depends("validity")
35+
def _compute_date_deadline(self):
36+
for rec in self:
37+
create = rec.create_date or fields.Date.today()
38+
rec.date_deadline = (create + relativedelta(days=rec.validity))
39+
40+
def _inverse_date_deadline(self):
41+
for rec in self:
42+
create = rec.create_date or fields.Date.today()
43+
rec.validity = (rec.date_deadline - fields.Date.today(create)).days

estate/models/estate_property_tag.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@
44
class EstatePropertyTag(models.Model):
55
_name = "estate.property.tag"
66
_description = "Real Estate Property Tag"
7+
78
name = fields.Char(required=True)

estate/models/estate_property_type.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,4 +4,5 @@
44
class EstatePropertyType(models.Model):
55
_name = "estate.property.type"
66
_description = "Real Estate Property Type"
7+
78
name = fields.Char(required=True)

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="Offers">
77
<field name="price"/>
88
<field name="partner_id"/>
9+
<field name="validity"/>
10+
<field name="date_deadline"/>
911
<field name="status"/>
1012
</list>
1113
</field>
@@ -20,6 +22,8 @@
2022
<group>
2123
<field name="price"/>
2224
<field name="partner_id"/>
25+
<field name="validity"/>
26+
<field name="date_deadline"/>
2327
<field name="status"/>
2428
</group>
2529
</sheet>

estate/views/estate_property_views.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
</group>
4141
<group>
4242
<field name="expected_price" string="Expected Price"/>
43+
<field name="best_price" string="Best Offer" readonly="1"/>
4344
<field name="selling_price" string="Selling Price"/>
4445
</group>
4546
</group>
@@ -78,13 +79,17 @@
7879
<list editable="bottom">
7980
<field name="price"/>
8081
<field name="partner_id"/>
82+
<field name="validity"/>
83+
<field name="date_deadline"/>
8184
<field name="status"/>
8285
</list>
8386
<form>
8487
<sheet>
8588
<group>
8689
<field name="price"/>
8790
<field name="partner_id"/>
91+
<field name="validity"/>
92+
<field name="date_deadline"/>
8893
<field name="status"/>
8994
</group>
9095
</sheet>

0 commit comments

Comments
 (0)