Skip to content

Commit fc8b37f

Browse files
committed
[IMP] estate: Partially Completed Chapter-8
1 parent 2db9029 commit fc8b37f

4 files changed

Lines changed: 87 additions & 16 deletions

File tree

estate/models/estate_property.py

Lines changed: 26 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):
@@ -60,3 +60,28 @@ class EstateProperty(models.Model):
6060
"property_id",
6161
string="Offers",
6262
)
63+
total_area = fields.Integer(
64+
compute="_compute_total_area",
65+
string="Total Area (sqm)",
66+
)
67+
@api.depends("living_area", "garden_area")
68+
def _compute_total_area(self):
69+
for record in self:
70+
record.total_area = (
71+
record.living_area +
72+
record.garden_area
73+
)
74+
best_price = fields.Float(
75+
compute="_compute_best_price",
76+
string="Best Offer",
77+
)
78+
79+
@api.depends("offer_ids.price")
80+
def _compute_best_price(self):
81+
for record in self:
82+
if record.offer_ids:
83+
record.best_price = max(
84+
record.offer_ids.mapped("price")
85+
)
86+
else:
87+
record.best_price = 0.0

estate/models/estate_property_offer.py

Lines changed: 32 additions & 3 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 EstatePropertyOffer(models.Model):
@@ -8,8 +8,8 @@ class EstatePropertyOffer(models.Model):
88
price = fields.Float()
99
status = fields.Selection(
1010
selection=[
11-
('accepted', 'Accepted'),
12-
('refused', 'Refused'),
11+
('accepted', "Accepted"),
12+
('refused', "Refused"),
1313
],
1414
copy=False
1515
)
@@ -23,3 +23,32 @@ class EstatePropertyOffer(models.Model):
2323
string="Property",
2424
required=True
2525
)
26+
validity = fields.Integer(
27+
string="Validity (days)",
28+
default=7,
29+
)
30+
date_deadline = fields.Date(
31+
string="Deadline",
32+
compute="_compute_date_deadline",
33+
inverse="_set_date_deadline",
34+
)
35+
@api.depends("validity", "create_date")
36+
def _compute_date_deadline(self):
37+
for record in self:
38+
if record.create_date:
39+
record.date_deadline = fields.Date.add(
40+
record.create_date,
41+
days=record.validity,
42+
)
43+
else:
44+
record.date_deadline = fields.Date.add(
45+
fields.Date.today(),
46+
days=record.validity,
47+
)
48+
def _set_date_deadline(self):
49+
for record in self:
50+
if record.create_date and record.date_deadline:
51+
record.validity = (
52+
record.date_deadline -
53+
record.create_date.date()
54+
).days

estate/views/estate_menus.xml

Lines changed: 11 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,17 @@
11
<odoo>
2-
<menuitem id="estate_menu_root" name="Real Estate"/>
3-
<menuitem id="estate_first_level_menu" name="Advertisements"
4-
parent="estate_menu_root"/>
2+
<menuitem id="estate_menu_root" name="Real Estate"/>
3+
<menuitem id="estate_first_level_menu" name="Advertisements"
4+
parent="estate_menu_root"/>
55

6-
<menuitem id="estate_property_menu_action" action="estate_property_action"
7-
parent="estate_first_level_menu"/>
6+
<menuitem id="estate_property_menu_action" action="estate_property_action"
7+
parent="estate_first_level_menu"/>
88

9-
<menuitem id="estate_menu_settings" name="Settings"
10-
parent="estate_menu_root"/>
9+
<menuitem id="estate_menu_settings" name="Settings"
10+
parent="estate_menu_root"/>
1111

12-
<menuitem id="estate_property_type_menu" action="estate_property_type_action"
13-
parent="estate_menu_settings"/>
12+
<menuitem id="estate_property_type_menu" action="estate_property_type_action"
13+
parent="estate_menu_settings"/>
1414

15-
<menuitem id="estate_property_tag_menu" action="estate_property_tag_action"
16-
parent="estate_menu_settings"/>
15+
<menuitem id="estate_property_tag_menu" action="estate_property_tag_action"
16+
parent="estate_menu_settings"/>
1717
</odoo>

estate/views/estate_property_views.xml

Lines changed: 18 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,12 @@
1717
<field name="expected_price"/>
1818
<field name="selling_price"/>
1919
<field name="date_availability"/>
20+
<button
21+
name="unlink"
22+
string="Delete"
23+
type="object"
24+
icon="fa-trash"
25+
confirm="Are you sure you want to delete this property?"/>
2026
</list>
2127
</field>
2228
</record>
@@ -26,10 +32,14 @@
2632
<field name="model">estate.property</field>
2733
<field name="arch" type="xml">
2834
<form>
35+
<header>
36+
<field name="state"
37+
widget="statusbar" statusbar_visible="new,offer_received,offer_accepted,sold,canceled"/>
38+
</header>
2939
<sheet>
3040
<div class="oe_title">
3141
<h1>
32-
<field name="name"/>
42+
<field name="name" placeholder="Property Name"/>
3343
</h1>
3444
</div>
3545
<field name="tag_ids" widget="many2many_tags"/>
@@ -41,6 +51,7 @@
4151
</group>
4252
<group>
4353
<field name="expected_price"/>
54+
<field name="best_price"/>
4455
<field name="selling_price"/>
4556
</group>
4657
</group>
@@ -51,10 +62,13 @@
5162
<field name="bedrooms"/>
5263
<field name="living_area"/>
5364
<field name="facades"/>
65+
<field name="active"/>
5466
<field name="garage"/>
5567
<field name="garden"/>
5668
<field name="garden_area"/>
5769
<field name="garden_orientation"/>
70+
<field name="state"/>
71+
<field name="total_area"/>
5872
</group>
5973
</page>
6074
<page string="Other Info">
@@ -68,6 +82,9 @@
6882
<list>
6983
<field name="price"/>
7084
<field name="partner_id"/>
85+
<field name="validity"/>
86+
<field name="date_deadline"/>
87+
<field name="create_date" readonly="True"/>
7188
<field name="status"/>
7289
</list>
7390
</field>

0 commit comments

Comments
 (0)