Skip to content

Commit 62250f3

Browse files
committed
[IMP] estate: add inverse method and onchange logic
- added inverse method for date_deadline - validity updates when deadline is changed - handled case when create_date is not set - added onchange for garden field - sets default garden area = 10 and orientation = north - resets values when garden is unchecked
1 parent c6dec2b commit 62250f3

4 files changed

Lines changed: 43 additions & 1 deletion

File tree

estate/models/estate_property.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,12 @@ def _compute_total_area(self):
1515
for record in self:
1616
record.total_area = record.garden_area + record.living_area
1717

18+
@api.depends("offer_ids.price")
19+
def _compute_best_price(self):
20+
for record in self:
21+
prices = record.offer_ids.mapped("price")
22+
record.best_price = max(prices) if prices else 0
23+
1824
name = fields.Char(required=True, default="UNKNOWN")
1925
description = fields.Text()
2026
postcode = fields.Char()
@@ -71,3 +77,13 @@ def _compute_total_area(self):
7177
"property_id",
7278
)
7379
total_area = fields.Float(compute="_compute_total_area")
80+
best_price = fields.Float(compute="_compute_best_price")
81+
82+
@api.onchange("garden")
83+
def _onchange_garden(self):
84+
if self.garden:
85+
self.garden_area = 10
86+
self.garden_orientation = 'north'
87+
else:
88+
self.garden_area = 0
89+
self.garden_orientation = False

estate/models/estate_property_offer.py

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

35

46
class EstatePropertyOffer(models.Model):
57
_name = "estate.property.offer"
68
_description = "estate property offers"
79

10+
@api.depends("create_date" , "validity")
11+
def _compute_date_deadline(self):
12+
for record in self:
13+
if record.create_date:
14+
record.date_deadline = record.create_date + timedelta(days=record.validity)
15+
else:
16+
record.date_deadline = fields.Date.today() + timedelta(days=record.validity)
17+
18+
def _inverse_date_deadline(self):
19+
for record in self:
20+
if record.create_date and record.date_deadline:
21+
record.validity = (record.date_deadline - record.create_date.date()).days
22+
23+
824
price = fields.Float()
925
status = fields.Selection(
1026
[
@@ -22,3 +38,8 @@ class EstatePropertyOffer(models.Model):
2238
"estate.property",
2339
required=True
2440
)
41+
validity = fields.Integer(default=7)
42+
date_deadline = fields.Date(
43+
compute = "_compute_date_deadline",
44+
inverse = "_inverse_date_deadline"
45+
)

estate/views/estate_property_offer_views.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
<field name="price"/>
1010
<field name="partner_id"/>
1111
<field name="status"/>
12+
<field name="validity" />
13+
<field name="date_deadline" />
1214
</list>
1315
</field>
1416
</record>
@@ -22,6 +24,8 @@
2224
<field name="status"/>
2325
<field name="partner_id"/>
2426
<field name="price"/>
27+
<field name="validity" />
28+
<field name="date_deadline" />
2529
</group>
2630
</form>
2731
</field>

estate/views/estate_property_views.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,7 @@
4141
</group>
4242
<group>
4343
<field name="expected_price"/>
44+
<field name="best_price" />
4445
<field name="selling_price"/>
4546
</group>
4647
</group>

0 commit comments

Comments
 (0)