Skip to content

Commit 1d50e6a

Browse files
committed
[ADD] estate: added computed fields and onchanges
1 parent 9734e7f commit 1d50e6a

File tree

5 files changed

+50
-3
lines changed

5 files changed

+50
-3
lines changed

estate/models/estate_property.py

Lines changed: 23 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 fields, models, api
22
from dateutil.relativedelta import relativedelta
33

44

@@ -34,3 +34,25 @@ class Estateproperty(models.Model):
3434
buyer = fields.Many2one('res.users', string='Buyer', default=lambda self: self.env.user)
3535
tag_ids = fields.Many2many('estate.property.tag', string='Tag')
3636
offer_ids = fields.One2many('estate.property.offer', 'property_id', string='Offer')
37+
total_area = fields.Float(compute="_compute_total_area")
38+
best_offer = fields.Float(compute="_compute_best_offer")
39+
40+
41+
@api.depends("garden_area","living_area")
42+
def _compute_total_area(self):
43+
for record in self:
44+
record.total_area = record.garden_area + record.living_area
45+
46+
@api.depends("offer_ids")
47+
def _compute_best_offer(self):
48+
for record in self:
49+
record.best_offer = max(record.offer_ids.mapped("price") or [0])
50+
51+
@api.onchange("garden")
52+
def _onchange_garden(self):
53+
if self.garden:
54+
self.garden_area = 10
55+
self.garden_orientation = 'north'
56+
else:
57+
self.garden_area = 0
58+
self.garden_orientation = None

estate/models/estate_property_offer.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
1-
from odoo import fields, models
1+
from odoo import fields, models, api
2+
from dateutil.relativedelta import relativedelta
3+
from datetime import datetime
24

35

46
class EstatePropertyOffer(models.Model):
@@ -13,3 +15,16 @@ class EstatePropertyOffer(models.Model):
1315
)
1416
partner_id = fields.Many2one('res.partner', required=True)
1517
property_id = fields.Many2one('estate.property', required=True)
18+
validity = fields.Integer(string="Validity (days)", default=7)
19+
date_deadline = fields.Date(compute="_compute_date_deadline", inverse="_inverse_date_deadline")
20+
21+
22+
@api.depends("validity")
23+
def _compute_date_deadline(self):
24+
for record in self:
25+
record.date_deadline = fields.Datetime.now() + relativedelta(days=record.validity)
26+
27+
def _inverse_date_deadline(self):
28+
for record in self:
29+
deadline = datetime(record.date_deadline.year, record.date_deadline.month, record.date_deadline.day)
30+
record.validity = int((deadline - fields.Datetime.now()).days)

estate/models/estate_property_type.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@ class EstatePropertyType(models.Model):
66
_description = "Estate Property Type"
77

88
name = fields.Char('Type', required=True)
9-
description = fields.Text('Description')
9+
description = fields.Text()

estate/views/estate_property_offer_views.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -10,6 +10,10 @@
1010
<group>
1111
<h1>
1212
<field name="price"/>
13+
<field name="partner_id"/>
14+
<field name="validity"/>
15+
<field name="date_deadline"/>
16+
<field name="status"/>
1317
</h1>
1418
</group>
1519
</sheet>
@@ -24,6 +28,8 @@
2428
<list>
2529
<field name="price"/>
2630
<field name="partner_id"/>
31+
<field name="validity"/>
32+
<field name="date_deadline"/>
2733
<field name="status"/>
2834
</list>
2935
</field>

estate/views/estate_property_views.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@
3636
<field name="selling_price"/>
3737
<field name="date_availability"/>
3838
<field name="tag_ids" widget="many2many_tags"/>
39+
<field name="total_area"/>
3940
</list>
4041
</field>
4142
</record>
@@ -56,10 +57,12 @@
5657
</group>
5758
<group>
5859
<group>
60+
<field name="property_type_id"/>
5961
<field name="postcode"/>
6062
<field name="date_availability"/>
6163
</group>
6264
<group>
65+
<field name="best_offer"/>
6366
<field name="expected_price"/>
6467
<field name="selling_price"/>
6568
</group>
@@ -75,6 +78,7 @@
7578
<field name="garden"/>
7679
<field name="garden_area"/>
7780
<field name="garden_orientation"/>
81+
<field name="total_area"/>
7882
</group>
7983
</page>
8084
<page string="Offers">

0 commit comments

Comments
 (0)