Skip to content

Commit 2721fd7

Browse files
committed
[IMP] estate: compute total area, best price and add onchange for garden fields
1 parent 44f5059 commit 2721fd7

File tree

6 files changed

+49
-1
lines changed

6 files changed

+49
-1
lines changed

estate/models/estate_property.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,24 @@ 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+
@api.depends('offer_ids.price')
79+
def _compute_best_price(self):
80+
for record in self:
81+
prices = record.offer_ids.mapped('price')
82+
record.best_price = max(prices) if prices else 0.0
83+
@api.onchange("garden")
84+
def _onchange_garden(self):
85+
if self.garden:
86+
self.garden_area = 10
87+
self.garden_orientation = "north"
88+
else:
89+
self.garden_area = 0
90+
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,12 @@
1-
from odoo import models, fields
1+
from dateutil.relativedelta import relativedelta
2+
from datetime import date
3+
from odoo import models, fields, api
24

35

46
class EstatePropertyOffer(models.Model):
57
_name = "estate.property.offer"
68
_description = "Real Estate Property Offer"
9+
710
price = fields.Float(string="Price")
811
status = fields.Selection(
912
[
@@ -20,3 +23,21 @@ class EstatePropertyOffer(models.Model):
2023
"estate.property",
2124
required=True,
2225
)
26+
validity = fields.Integer(
27+
default=7,
28+
)
29+
date_deadline = fields.Date(
30+
compute="_compute_date_deadline",
31+
inverse="_inverse_date_deadline",
32+
store=True,
33+
)
34+
35+
@api.depends("validity")
36+
def _compute_date_deadline(self):
37+
for rec in self:
38+
create = rec.create_date or fields.Date.today()
39+
rec.date_deadline = (create + relativedelta(days=rec.validity))
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)