Skip to content

Commit 9195980

Browse files
committed
[IMP] estate: add computations to estate property
1 parent b7d46a1 commit 9195980

File tree

4 files changed

+50
-2
lines changed

4 files changed

+50
-2
lines changed

estate/models/estate_property.py

Lines changed: 25 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 EstateProperty(models.Model):
@@ -54,3 +54,27 @@ class EstateProperty(models.Model):
5454
offer_ids = fields.One2many(
5555
'estate.property.offer', 'property_id', string='Property Offers'
5656
)
57+
total_area = fields.Integer('Total Area (sqm)', compute='_compute_total_area')
58+
best_price = fields.Float('Best Offer', compute='_compute_best_price')
59+
60+
@api.depends('garden_area', 'living_area')
61+
def _compute_total_area(self):
62+
for property in self:
63+
property.total_area = property.garden_area + property.living_area
64+
65+
@api.depends('offer_ids.price')
66+
def _compute_best_price(self):
67+
for property in self:
68+
if len(self.offer_ids):
69+
property.best_price = max(property.offer_ids.mapped('price'))
70+
else:
71+
property.best_price = 0
72+
73+
@api.onchange('garden')
74+
def _onchange_garden(self):
75+
if self.garden:
76+
self.garden_area = 10
77+
self.garden_orientation = 'north'
78+
else:
79+
self.garden_area = 0
80+
self.garden_orientation = ''

estate/models/estate_property_offer.py

Lines changed: 19 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
from odoo import fields, models
1+
from odoo import api, fields, models
2+
from odoo.tools import date_utils
23

34

45
class EstatePropertyOffer(models.Model):
@@ -16,3 +17,20 @@ class EstatePropertyOffer(models.Model):
1617
)
1718
partner_id = fields.Many2one('res.partner', string='Partner', required=True)
1819
property_id = fields.Many2one('estate.property', string='Property', required=True)
20+
validity = fields.Integer('Validity (days)', default=7)
21+
date_deadline = fields.Date(
22+
'Deadline', compute='_compute_date_deadline', inverse='_inverse_date_deadline'
23+
)
24+
25+
@api.depends('validity')
26+
def _compute_date_deadline(self):
27+
for offer in self:
28+
offer.date_deadline = date_utils.add(
29+
(offer.create_date or fields.Date.today()), days=offer.validity
30+
)
31+
32+
def _inverse_date_deadline(self):
33+
for offer in self:
34+
offer.validity = (
35+
offer.date_deadline - (offer.create_date.date() or fields.Date.today())
36+
).days

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
<group>
1010
<field name="price" />
1111
<field name="partner_id" />
12+
<field name="validity" />
13+
<field name="date_deadline" />
1214
<field name="status" />
1315
</group>
1416
</sheet>
@@ -23,6 +25,8 @@
2325
<list string="Offers">
2426
<field name="price" />
2527
<field name="partner_id" />
28+
<field name="validity" />
29+
<field name="date_deadline" />
2630
<field name="status" />
2731
</list>
2832
</field>

estate/views/estate_property_views.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@
4040
</group>
4141
<group>
4242
<field name="expected_price" />
43+
<field name="best_price" />
4344
<field name="selling_price" />
4445
</group>
4546
</group>
@@ -54,6 +55,7 @@
5455
<field name="garden" />
5556
<field name="garden_area" />
5657
<field name="garden_orientation" />
58+
<field name="total_area" />
5759
</group>
5860
</page>
5961
<page string="Offers">

0 commit comments

Comments
 (0)