Skip to content

Commit af44200

Browse files
committed
[IMP] estate: chapter 8
1 parent 3ebb0c4 commit af44200

File tree

8 files changed

+47
-10
lines changed

8 files changed

+47
-10
lines changed

estate/__manifest__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@
77
'base',
88
],
99
'data': [
10-
'security/ir.model.access.csv',
10+
'security/ir.model.access.csv',
1111
'views/estate_property_views.xml',
1212
'views/estate_property_type_views.xml',
1313
'views/estate_property_tag_views.xml',

estate/models/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from . import estate_property
2-
from . import estate_property_type
1+
from . import estate_property
2+
from . import estate_property_type
33
from . import estate_property_tag
44
from . import estate_property_offer

estate/models/estate_property.py

Lines changed: 24 additions & 5 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):
@@ -10,7 +10,7 @@ class EstateProperty(models.Model):
1010
postcode = fields.Char()
1111
date_availability = fields.Date(default=fields.Date.add(fields.Date.today(), months=3), copy=False)
1212
expected_price = fields.Float(required=True)
13-
selling_price = fields.Float(readonly=True,copy=False)
13+
selling_price = fields.Float(readonly=True, copy=False)
1414
bedrooms = fields.Integer(default=2)
1515
living_area = fields.Integer()
1616
facades = fields.Integer()
@@ -19,7 +19,7 @@ class EstateProperty(models.Model):
1919
garden_area = fields.Integer()
2020
garden_orientation = fields.Selection(
2121
string='Garden orientation',
22-
selection=[('North', 'N'), ('South', 'S'),('East', 'E'),('West', 'W')],
22+
selection=[('North', 'N'), ('South', 'S'), ('East', 'E'), ('West', 'W')],
2323
help="Specify the orientation of the garden to know when you're gonna enjoy the sun")
2424
state = fields.Selection(
2525
selection=[('New', 'New'), ('Offer Received', 'Offer Received'), ('Offer Accepted', 'Offer Accepted'), ('Sold', 'Sold'), ('Cancelled', 'Cancelled')],
@@ -28,5 +28,24 @@ class EstateProperty(models.Model):
2828
active = fields.Boolean(default=True)
2929
salesman = fields.Many2one("res.users")
3030
buyer = fields.Many2one("res.partner", copy=False)
31-
tag_ids=fields.Many2many("estate.property.tag", string="Tags")
32-
offer_ids=fields.One2many("estate.property.offer","property_id")
31+
tag_ids = fields.Many2many("estate.property.tag", string="Tags")
32+
offer_ids = fields.One2many("estate.property.offer", "property_id")
33+
total_area = fields.Float(compute="_compute_total")
34+
best_price = fields.Float(compute="_compute_highest_price")
35+
36+
@api.depends("living_area", "garden_area")
37+
def _compute_total(self):
38+
for record in self:
39+
record.total_area = record.living_area + record.garden_area
40+
41+
@api.depends("offer_ids")
42+
def _compute_highest_price(self):
43+
for record in self:
44+
record.best_price=max(record.offer_ids.mapped("price")) if record.offer_ids else 0
45+
46+
@api.onchange("garden")
47+
def _onchange_garden(self):
48+
self.garden_area = 10 if self.garden else 0
49+
self.garden_orientation = "North" if self.garden else None
50+
51+
Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,22 @@
1-
from odoo import fields, models
1+
from odoo import api, fields, models
2+
23

34
class EstatePropertyOffer(models.Model):
45
_name = "estate.property.offer"
56
_description = "ici je mets une phrase 4"
67

78
price = fields.Float()
8-
status = fields.Selection(copy=False, selection=[('Accepted', 'Accepted'), ('Refused', 'Refused')],)
9+
status = fields.Selection(copy=False, selection=[('Accepted', 'Accepted'), ('Refused', 'Refused')])
910
partner_id = fields.Many2one("res.partner", required=True)
1011
property_id = fields.Many2one("estate.property", required=True)
12+
validity = fields.Integer(default=7)
13+
date_deadline = fields.Date(compute="_compute_deadline", inverse="_inverse_deadline")
14+
15+
@api.depends("validity")
16+
def _compute_deadline(self):
17+
for record in self:
18+
record.date_deadline = fields.Date.add(record.create_date or fields.Date.today(), days=record.validity)
19+
20+
def _inverse_deadline(self):
21+
for record in self :
22+
record.validity = (record.date_deadline - fields.Date.to_date(record.create_date)).days

estate/models/estate_property_tag.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from odoo import fields, models
22

3+
34
class EstatePropertyTag(models.Model):
45
_name = "estate.property.tag"
56
_description = "ici je mets une phrase 3"

estate/models/estate_property_type.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from odoo import fields, models
22

3+
34
class EstatePropertyType(models.Model):
45
_name = "estate.property.type"
56
_description = "ici je mets une phrase 2"

estate/views/estate_property_offer_views.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
<field name="price"/>
1212
<field name="partner_id"/>
1313
<field name="status"/>
14+
<field name="validity"/>
15+
<field name="date_deadline"/>
1416
</group>
1517
</sheet>
1618
</form>

estate/views/estate_property_views.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@
4242
</group>
4343
<group>
4444
<field name="expected_price"/>
45+
<field name="best_price"/>
4546
<field name="selling_price"/>
4647
</group>
4748
</group>
@@ -57,6 +58,7 @@
5758
<field name="garden_area"/>
5859
<field name="garden_orientation"/>
5960
<field name="state"/>
61+
<field name="total_area"/>
6062
</group>
6163
</page>
6264
<page string="Offers">

0 commit comments

Comments
 (0)