Skip to content

Commit f3aee3d

Browse files
committed
[IMP] estate: update some fields to be computed and add onchange basics settings
1 parent f87c7c8 commit f3aee3d

File tree

4 files changed

+48
-3
lines changed

4 files changed

+48
-3
lines changed

estate/models/estate_properties.py

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11

22
from dateutil.relativedelta import relativedelta
3-
from odoo import fields, models
3+
from odoo import fields, models, api
44

55

66
class Properties(models.Model):
@@ -41,3 +41,24 @@ class Properties(models.Model):
4141
salesperson = fields.Many2one("res.users", default=lambda self: self.env.user)
4242
tag_ids = fields.Many2many("estate.property.tag")
4343
offer_ids = fields.One2many("estate.property.offer", inverse_name="property_id")
44+
total_area = fields.Float("Total Area", compute="_compute_area")
45+
best_price = fields.Float("Best Price", compute="_find_best_price")
46+
47+
@api.depends("garden_area", "living_area")
48+
def _compute_area(self):
49+
for record in self:
50+
record.total_area = record.living_area + record.garden_area
51+
52+
@api.depends("offer_ids")
53+
def _find_best_price(self):
54+
for record in self:
55+
record.best_price = max(record.offer_ids.mapped("price"))
56+
57+
@api.onchange("garden")
58+
def _onchange_garden(self):
59+
if self.garden:
60+
self.garden_area = 10
61+
self.garden_orientation = "north"
62+
else:
63+
self.garden_area = None
64+
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,5 @@
1-
from odoo import fields, models
1+
from dateutil.relativedelta import relativedelta
2+
from odoo import fields, models, api
23

34

45
class PropertyOffer(models.Model):
@@ -9,3 +10,17 @@ class PropertyOffer(models.Model):
910
status = fields.Selection(copy=False, selection=[('accepted', 'Accepted'), ('refused', 'Refused')])
1011
partner_id = fields.Many2one("res.partner", required=True)
1112
property_id = fields.Many2one("estate_property", required=True)
13+
date_deadline = fields.Date(compute="_compute_deadline", inverse="_update_validity")
14+
validity = fields.Integer()
15+
16+
@api.depends("validity")
17+
def _compute_deadline(self):
18+
for record in self:
19+
if record.create_date:
20+
now = record.create_date
21+
record.date_deadline = now + relativedelta(days=record.validity)
22+
23+
def _update_validity(self):
24+
for offer in self:
25+
if offer.create_date:
26+
offer.validity = (offer.date_deadline - offer.create_date.date()).days

estate/views/estate_property_offer.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -38,10 +38,17 @@
3838
<field name="arch" type="xml">
3939
<form string="Property">
4040
<sheet>
41+
<group>
4142
<field name="status"/>
4243
<field name="partner_id"/>
4344
<field name="property_id"/>
4445
<field name="price"/>
46+
<field name="date_deadline"/>
47+
<field name="create_date"/>
48+
</group>
49+
<group>
50+
<field name="validity"/>
51+
</group>
4552
</sheet>
4653
</form>
4754
</field>

estate/views/estate_property_views.xml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,10 +58,12 @@
5858
<field name="tag_ids" widget="many2many_tags"/>
5959
<group>
6060
<group>
61+
<field name="property_type_id"/>
6162
<field name="postcode"/>
6263
<field name="date_availability"/>
6364
</group>
6465
<group>
66+
<field name="best_price"/>
6567
<field name="expected_price"/>
6668
<field name="selling_price"/>
6769
</group>
@@ -78,7 +80,7 @@
7880
<field name="garden_area"/>
7981
<field name="garden_orientation"/>
8082
<field name="state"/>
81-
<field name="property_type_id"/>
83+
<field name="total_area"/>
8284
</group>
8385
</page>
8486
<page string="Offers">

0 commit comments

Comments
 (0)