Skip to content

Commit 1120d88

Browse files
committed
[IMP] estate: add compute fields for estate_property and estate_property_offer
1 parent f09e8e4 commit 1120d88

File tree

4 files changed

+72
-8
lines changed

4 files changed

+72
-8
lines changed

estate/models/estate_property.py

Lines changed: 37 additions & 4 deletions
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
from dateutil.relativedelta import relativedelta
33

44

@@ -7,7 +7,7 @@ class EstateProperty(models.Model):
77
_description = "Estate Property discription"
88

99
name = fields.Char('name', required=True)
10-
description = fields.Text('description')
10+
description = fields.Text('description', compute="_compute_description")
1111
postcode = fields.Char('postcode')
1212
availability_date = fields.Date(
1313
'availabilty date', copy=False, default=fields.Date.today() + relativedelta(months=3))
@@ -17,11 +17,12 @@ class EstateProperty(models.Model):
1717
living_area = fields.Integer('living area')
1818
facades = fields.Integer('facades')
1919
garage = fields.Boolean('garage')
20+
garden = fields.Boolean('garden')
2021
garden_area = fields.Integer('garden area')
2122
garden_orientation = fields.Selection(
2223
string='Garden Orientation',
23-
selection=[('North', 'North'), ('South', 'South'),
24-
('East', 'East'), ('West', 'West')]
24+
selection=[('north', 'North'), ('south', 'South'),
25+
('east', 'East'), ('west', 'West')]
2526
)
2627
active = fields.Boolean('active', default=True)
2728
state = fields.Selection(
@@ -39,3 +40,35 @@ class EstateProperty(models.Model):
3940
tag_ids = fields.Many2many("estate.property.tag", string="Tags")
4041
offer_ids = fields.One2many(
4142
"estate.property.offer", "property_id", string="Offers")
43+
total_area = fields.Integer(compute='_compute_total_area')
44+
best_offer = fields.Float(compute="_compute_best_offer")
45+
46+
@api.depends("living_area", "garden_area")
47+
def _compute_total_area(self):
48+
for record in self:
49+
record.total_area = record.living_area + record.garden_area
50+
51+
@api.depends("buyer_id")
52+
def _compute_description(self):
53+
for record in self:
54+
record.description = "Description for buyer %s" % record.buyer_id.name
55+
56+
@api.depends("offer_ids")
57+
def _compute_best_offer(self):
58+
try:
59+
for record in self:
60+
if len(record.offer_ids) > 0:
61+
record.best_offer = max(record.offer_ids.mapped("price"))
62+
else:
63+
record.best_offer = 0.0
64+
except Exception as e:
65+
print(e)
66+
67+
@api.onchange("garden")
68+
def _onchange_garden(self):
69+
if self.garden:
70+
self.garden_area = 10
71+
self.garden_orientation = "north"
72+
else:
73+
self.garden_area = 0
74+
self.garden_orientation = None

estate/models/estate_property_offer.py

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

34

45
class EstatePropertyOffer(models.Model):
@@ -12,3 +13,22 @@ class EstatePropertyOffer(models.Model):
1213
)
1314
partner_id = fields.Many2one('res.partner', required=True)
1415
property_id = fields.Many2one('estate.property', required=True)
16+
validity = fields.Integer(default=7)
17+
date_deadline = fields.Date(
18+
compute="_compute_date_deadline", inverse="_inverse_date_deadline")
19+
20+
@api.depends("validity")
21+
def _compute_date_deadline(self):
22+
for record in self:
23+
start_date = fields.Date.today()
24+
if record.create_date:
25+
start_date = record.create_date
26+
record.date_deadline = start_date + \
27+
relativedelta(days=record.validity)
28+
29+
def _inverse_date_deadline(self):
30+
for record in self:
31+
start_date = fields.Date.today()
32+
if record.create_date:
33+
start_date = record.create_date
34+
record.validity = (record.date_deadline - fields.Date.today()).days

estate/views/estate_property_offer_views.xml

Lines changed: 11 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@
66
<list string="properties offer list">
77
<field name="price"/>
88
<field name="status"/>
9+
<field name="validity"/>
10+
<field name="date_deadline"/>
911
<field name="partner_id"/>
1012
</list>
1113
</field>
@@ -18,9 +20,15 @@
1820
<form string="properties offer from">
1921
<sheet>
2022
<group>
21-
<field name="price"/>
22-
<field name="status"/>
23-
<field name="partner_id"/>
23+
<group>
24+
<field name="validity"/>
25+
<field name="date_deadline"/>
26+
</group>
27+
<group>
28+
<field name="price"/>
29+
<field name="status"/>
30+
<field name="partner_id"/>
31+
</group>
2432
</group>
2533
</sheet>
2634
</form>

estate/views/estate_property_views.xml

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@
3838
<field name="availability_date"/>
3939
</group>
4040
<group>
41+
<field name="best_offer"/>
4142
<field name="expected_price"/>
4243
<field name="selling_price"/>
4344
</group>
@@ -50,9 +51,11 @@
5051
<field name="living_area"/>
5152
<field name="facades"/>
5253
<field name="garage"/>
54+
<field name="garden"/>
5355
<field name="garden_area"/>
5456
<field name="garden_orientation"/>
5557
<field name="state"/>
58+
<field name="total_area"/>
5659
</group>
5760
</page>
5861
<page string="Offers">

0 commit comments

Comments
 (0)