Skip to content

Commit 645e23b

Browse files
committed
[IMP] estate: Compute / Inverse field value
1 parent 719f23a commit 645e23b

File tree

5 files changed

+63
-8
lines changed

5 files changed

+63
-8
lines changed

estate/models/estate_property.py

Lines changed: 27 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

33

44
class EstateProperty(models.Model):
@@ -14,12 +14,14 @@ class EstateProperty(models.Model):
1414
)
1515
expected_price = fields.Float(required=True)
1616
selling_price = fields.Float(readonly=True, copy=False)
17+
best_price = fields.Float(compute='_compute_best_price')
1718
bedrooms = fields.Integer(default=2)
1819
living_area = fields.Integer()
20+
garden_area = fields.Integer()
21+
total_area = fields.Integer(compute='_compute_total_area')
1922
facades = fields.Integer()
2023
garage = fields.Boolean()
2124
garden = fields.Boolean()
22-
garden_area = fields.Integer()
2325
garden_orientation = fields.Selection(
2426
string='Garden orientation',
2527
selection=[
@@ -41,9 +43,9 @@ class EstateProperty(models.Model):
4143
('sold', 'Sold'),
4244
('cancelled', 'Cancelled'),
4345
],
44-
)
46+
)
4547
property_type_id = fields.Many2one(
46-
'estate.property.type', string='Property Type'
48+
'estate.property.type', string='Property Type',
4749
)
4850
buyer_id = fields.Many2one(
4951
'res.partner', string='Buyer', copy=False,
@@ -54,3 +56,24 @@ class EstateProperty(models.Model):
5456
)
5557
tag_ids = fields.Many2many('estate.property.tag', string='Tags')
5658
offer_ids = fields.One2many('estate.property.offer', 'property_id', string='Offers')
59+
60+
@api.depends('living_area', 'garden_area')
61+
def _compute_total_area(self):
62+
for record in self:
63+
living_area = record.living_area or 0
64+
garden_area = record.garden_area or 0
65+
record.total_area = living_area + garden_area
66+
67+
@api.depends('offer_ids')
68+
def _compute_best_price(self):
69+
for record in self:
70+
record.best_price = max(record.offer_ids.mapped('price')) if self.offer_ids else 0
71+
72+
@api.onchange('garden')
73+
def _onchange_garden(self):
74+
if self.garden:
75+
self.garden_area = 10
76+
self.garden_orientation = 'north'
77+
else:
78+
self.garden_area = None
79+
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,4 @@
1-
from odoo import fields, models
1+
from odoo import api, fields, models
22

33

44
class EstatePropertyOffer(models.Model):
@@ -15,3 +15,18 @@ class EstatePropertyOffer(models.Model):
1515
)
1616
partner_id = fields.Many2one('res.partner', string='Partner')
1717
property_id = fields.Many2one('estate.property', string='Property')
18+
validity = fields.Integer(default=7)
19+
date_deadline = fields.Date(compute='_compute_deadline', inverse="_inverse_deadline")
20+
21+
@api.depends('create_date', 'validity')
22+
def _compute_deadline(self):
23+
for record in self:
24+
created_date = record.create_date.date() or fields.Date.today()
25+
record.date_deadline = fields.Date.add(
26+
created_date, days=record.validity,
27+
)
28+
29+
def _inverse_deadline(self):
30+
for record in self:
31+
created_date = record.create_date.date() or fields.Date.today()
32+
record.validity = (record.date_deadline - created_date).days

estate/views/estate_property_form_views.xml

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,18 +27,27 @@
2727
<group>
2828
<field name="selling_price"/>
2929
</group>
30+
<group>
31+
<field name="best_price" string="Best Offer"/>
32+
</group>
3033
</group>
3134
<notebook>
3235
<page string="Description">
3336
<group>
3437
<field name="description"/>
3538
<field name="bedrooms"/>
36-
<field name="living_area"/>
39+
<field name="living_area" string="Living Area (sqm)"/>
3740
<field name="facades"/>
3841
<field name="garage"/>
3942
<field name="garden"/>
40-
<field name="garden_area"/>
43+
<field name="garden_area" string="Garden Area (sqm)"/>
4144
<field name="garden_orientation"/>
45+
<field name="total_area" string="Total Area (sqm)"/>
46+
</group>
47+
</page>
48+
<page string="Offers">
49+
<group>
50+
<field name="offer_ids" string=""/>
4251
</group>
4352
</page>
4453
<page string="Other Info">

estate/views/estate_property_offer_form_views.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,12 @@
1818
<group>
1919
<field name="status"/>
2020
</group>
21+
<group>
22+
<field name="validity" string="Validity (days)"/>
23+
</group>
24+
<group>
25+
<field name="date_deadline" string="Deadline"/>
26+
</group>
2127
</group>
2228
</sheet>
2329
</form>

estate/views/estate_property_offer_list_views.xml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,10 @@
55
<field name="arch" type="xml">
66
<list string="Properties">
77
<field name="price"/>
8-
<field name="status"/>
98
<field name="partner_id"/>
9+
<field name="validity" string="Validity (days)"/>
10+
<field name="date_deadline" string="Deadline"/>
11+
<field name="status"/>
1012
<field name="property_id"/>
1113
</list>
1214
</field>

0 commit comments

Comments
 (0)