Skip to content

Commit 944576e

Browse files
committed
[IMP] estate: added computed fields to property and offer models
1 parent 5f0c7b7 commit 944576e

File tree

4 files changed

+35
-2
lines changed

4 files changed

+35
-2
lines changed

estate/models/estate_property.py

Lines changed: 16 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 api, fields, models
22

33

44
class Property(models.Model):
@@ -32,8 +32,23 @@ class Property(models.Model):
3232
('east', 'East'),
3333
('west', 'West'),
3434
], string='Garden Orientation')
35+
total_area = fields.Integer(compute="_compute_total_area")
3536
property_type_id = fields.Many2one('estate.property.type', string="Property Type")
3637
salesperson_id = fields.Many2one('res.users', string="Salesperson", default=lambda self: self.env.user)
3738
buyer_id = fields.Many2one('res.partner', string="Buyer", copy=False)
3839
tag_ids = fields.Many2many('estate.property.tag', string="Tags")
3940
offer_ids = fields.One2many('estate.property.offer', 'property_id', string="Offers")
41+
best_price = fields.Float(compute="_compute_best_price")
42+
43+
@api.depends('living_area', 'garden_area')
44+
def _compute_total_area(self):
45+
for record in self:
46+
record.total_area = record.living_area + record.garden_area
47+
48+
@api.depends('offer_ids')
49+
def _compute_best_price(self):
50+
for record in self:
51+
if record.offer_ids:
52+
record.best_price = max(record.offer_ids.mapped('price'))
53+
else:
54+
record.best_price = 0

estate/models/estate_property_offer.py

Lines changed: 15 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 api, fields, models
22

33

44
class PropertyOffer(models.Model):
@@ -12,3 +12,17 @@ class PropertyOffer(models.Model):
1212
], string='Status', copy=False)
1313
partner_id = fields.Many2one('res.partner', string="Partner", required=True)
1414
property_id = fields.Many2one('estate.property', string="Property", required=True)
15+
validity = fields.Integer(string="Validity (days)", default=7)
16+
date_deadline = fields.Date(string="Deadline", compute="_compute_date_deadline", inverse="_inverse_date_deadline")
17+
18+
@api.depends('create_date', 'validity')
19+
def _compute_date_deadline(self):
20+
for record in self:
21+
if record.create_date:
22+
record.date_deadline = fields.Date.add(record.create_date, days=record.validity)
23+
else:
24+
record.date_deadline = fields.Date.add(lambda self: fields.Date.today(), days=record.validity)
25+
26+
def _inverse_date_deadline(self):
27+
for record in self:
28+
record.validity = (record.date_deadline - record.create_date).days

estate/views/estate_property_offer_views.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,8 @@
77
<list string="Offer">
88
<field name="price"/>
99
<field name="partner_id"/>
10+
<field name="validity"/>
11+
<field name="date_deadline"/>
1012
<field name="status"/>
1113
</list>
1214
</field>

estate/views/estate_property_views.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,7 @@
6666
<group>
6767
<field name="expected_price"/>
6868
<field name="selling_price"/>
69+
<field name="best_price"/>
6970
</group>
7071
</group>
7172
<notebook>
@@ -79,6 +80,7 @@
7980
<field name="garden"/>
8081
<field name="garden_area"/>
8182
<field name="garden_orientation"/>
83+
<field name="total_area"/>
8284
</group>
8385
</page>
8486
<page string="Offers">

0 commit comments

Comments
 (0)