Skip to content

Commit 9b190ce

Browse files
committed
[IMP] estate: add computed fields
1 parent b5aaaa7 commit 9b190ce

File tree

4 files changed

+42
-4
lines changed

4 files changed

+42
-4
lines changed

estate/models/estate_property.py

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from odoo import models, fields
1+
from odoo import models, fields, api
22

33

44
class EstateProperty(models.Model):
@@ -32,3 +32,24 @@ class EstateProperty(models.Model):
3232
sales_person_id = fields.Many2one('res.users', string='Salesperson', default=lambda self: self.env.user)
3333
buyer_id = fields.Many2one('res.partner', string='Buyer', copy=False)
3434
offer_ids = fields.One2many('estate.property.offer', 'property_id', string="Offers")
35+
total_area = fields.Float('Total Area', compute='_compute_total_area')
36+
best_price = fields.Float('Best Offer', compute='_compute_best_price')
37+
38+
@api.depends('garden_area', 'living_area')
39+
def _compute_total_area(self):
40+
for record in self:
41+
record.total_area = record.garden_area + record.living_area
42+
43+
@api.depends('offer_ids.price')
44+
def _compute_best_price(self):
45+
for record in self:
46+
record.best_price = max(record.offer_ids, key=lambda p: p.price).price
47+
48+
@api.onchange('garden')
49+
def _onchange_garden(self):
50+
if not self.garden:
51+
self.garden_area = None
52+
self.garden_orientation = None
53+
else:
54+
self.garden_area = 10
55+
self.garden_orientation = 'north'

estate/models/estate_property_offer.py

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from odoo import models, fields
1+
from odoo import models, fields ,api
22

33

44
class EstatePropertyOffer(models.Model):
@@ -11,4 +11,15 @@ class EstatePropertyOffer(models.Model):
1111
copy=False,
1212
selection=[('accepted', 'Accepted'), ('refused', 'Refused')])
1313
partner_id = fields.Many2one('res.partner', string='Buyer', required=True)
14-
property_id = fields.Many2one('estate.property', string='Buyer', required=True)
14+
property_id = fields.Many2one('estate.property', string='Estate Property', required=True)
15+
validity = fields.Integer('Validity', default=7)
16+
date_deadline = fields.Datetime('Deadline', compute='_compute_date_deadline', inverse='_inverse_date_deadline')
17+
18+
@api.depends('validity', 'create_date')
19+
def _compute_date_deadline(self):
20+
for record in self:
21+
record.date_deadline = fields.Date.add(record.create_date, days=record.validity)
22+
23+
def _inverse_date_deadline(self):
24+
for record in self:
25+
record.validity = (record.date_deadline - record.create_date).days

estate/views/estate_property_offer_views.xml

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

estate/views/estate_property_views.xml

Lines changed: 2 additions & 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>
@@ -56,6 +57,7 @@
5657
<field name="garden" />
5758
<field name="garden_area" />
5859
<field name="garden_orientation" />
60+
<field name="total_area" />
5961
</group>
6062
</page>
6163
<page string="Offers">

0 commit comments

Comments
 (0)