Skip to content

Commit 7519102

Browse files
committed
[IMP] estate: added restrictions and action in property offer.
added action method on sold and cancel button. added UserError() to prevent sold property to cancel. added UserError() to prevent cancelled property to be sold.
1 parent 8013e8d commit 7519102

File tree

6 files changed

+52
-23
lines changed

6 files changed

+52
-23
lines changed

estate/__manifest__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,11 +8,11 @@
88
"application": True,
99
"license": "LGPL-3",
1010
"description": """
11-
Description text
11+
Real Estate Module to Buy and Sell Your Real Estate with Ease.
1212
""",
1313
"data": [
14+
"security/ir.model.access.csv",
1415
"views/estate_property_views.xml",
1516
"views/estate_menus.xml",
16-
"security/ir.model.access.csv",
1717
],
1818
}

estate/models/estate_property.py

Lines changed: 19 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
#!/usr/bin/env python3
22
from dateutil.relativedelta import relativedelta
33

4-
from odoo import api, models, fields
4+
from odoo import api, models, fields, exceptions
55

66

77
class EstateProperty(models.Model):
@@ -47,9 +47,9 @@ class EstateProperty(models.Model):
4747
default="new",
4848
)
4949
property_type_id = fields.Many2one("estate.property.type", string="Property Type")
50-
customer = fields.Many2one("res.users", string="Customer", copy=False)
50+
customer = fields.Many2one("res.partner", string="Customer", copy=False)
5151
salesperson = fields.Many2one(
52-
"res.partner", string="Salesperson", default=lambda self: self.env.user
52+
"res.users", string="Salesperson", default=lambda self: self.env.user
5353
)
5454
tag_ids = fields.Many2many("estate.property.tag", string="Property Tags")
5555
offer_ids = fields.One2many("estate.property.offer", "property_id", string="Offer")
@@ -76,3 +76,19 @@ def _onchange_garden(self):
7676
self.garden_orientation = "north"
7777
else:
7878
self.garden_area = 0
79+
80+
def action_sold_property(self):
81+
for record in self:
82+
if record.state == "cancelled":
83+
raise exceptions.UserError("Cancelled Property cannot be Sold")
84+
else:
85+
record.state = "sold"
86+
return True
87+
88+
def action_cancel_offer(self):
89+
for record in self:
90+
if record.state == "sold":
91+
raise exceptions.UserError("Sold Property cannot be Cancelled")
92+
else:
93+
record.state = "cancelled"
94+
return True

estate/models/estate_property_offer.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,3 +30,17 @@ def _inverse_date(self):
3030
record.validity = (
3131
record.date_deadline - fields.Date.to_date(default_creation_date)
3232
).days
33+
34+
def action_accept(self):
35+
for record in self:
36+
record.status = "accepted"
37+
record.property_id.selling_price = record.price
38+
record.property_id.customer = record.partner_id
39+
return True
40+
41+
def action_refuse(self):
42+
for record in self:
43+
record.status = "refused"
44+
record.property_id.selling_price = 0.00
45+
record.property_id.customer = None
46+
return True

estate/security/ir.model.access.csv

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,4 @@
22
estate.access_estate_property,"access_estate_property",estate.model_estate_property,base.group_user,1,1,1,1
33
estate.access_estate_property_type,"access_estate_property_type",estate.model_estate_property_type,base.group_user,1,1,1,1
44
estate.access_estate_property_tag,"access_estate_property_tag",estate.model_estate_property_tag,base.group_user,1,1,1,1
5-
estate.access_estate_property_offer,"access_estate_property_offer",estate.model_estate_property_offer,base.group_user,1,1,1,1
5+
estate.access_estate_property_offer,"access_estate_property_offer",estate.model_estate_property_offer,base.group_user,1,1,1,1

estate/views/estate_menus.xml

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -4,38 +4,33 @@
44
id="estate_menu_root"
55
name="Estate Property"
66
/>
7-
87
<menuitem
98
id="estate_menu_property_advertisement"
109
name="Advertisement"
1110
parent="estate_menu_root"
1211
sequence="1"
1312
/>
14-
1513
<menuitem
1614
id="estate_menu_property_advertisement_properties"
1715
name="Properties"
1816
parent="estate_menu_property_advertisement"
1917
action="action_estate"
2018
/>
21-
2219
<menuitem
2320
id="estate_menu_configuration"
2421
name="Settings"
2522
parent="estate_menu_root"
2623
/>
27-
2824
<menuitem
2925
id="configuration_menu_property_types"
3026
name="Property Types"
3127
parent="estate_menu_configuration"
3228
action="action_estate_property_type"
3329
/>
34-
3530
<menuitem
3631
id="configuration_menu_property_tags"
3732
name="Property Tags"
3833
parent="estate_menu_configuration"
3934
action="action_estate_property_tag"
4035
/>
41-
</odoo>
36+
</odoo>

estate/views/estate_property_views.xml

Lines changed: 15 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -55,12 +55,17 @@
5555
<field name="model">estate.property</field>
5656
<field name="arch" type="xml">
5757
<form string="Property">
58+
<header>
59+
<button name="action_sold_property" type="object" string="Sold"/>
60+
<button name="action_cancel_offer" type="object" string="Cancel"/>
61+
</header>
5862
<sheet>
5963
<h1>
6064
<field name="name" string="Title"/>
6165
</h1>
6266
<group>
6367
<group>
68+
<field name="state" string="Status"/>
6469
<field name="tag_ids" widget="many2many_tags"/>
6570
<field name="postcode"/>
6671
<field name="date_avaliability" string="Avaliable From"/>
@@ -85,10 +90,7 @@
8590
<field name="garden_area" string="Garden Area(sqm)"/>
8691
<field name="garden_orientation"/>
8792
<field name="total_area" string="Total Area(sqm)"/>
88-
</group>
89-
<group>
9093
<field name="active"/>
91-
<field name="state"/>
9294
</group>
9395
</group>
9496
</page>
@@ -97,8 +99,8 @@
9799
</page>
98100
<page string="Other info">
99101
<group>
100-
<field name="customer"/>
101102
<field name="salesperson"/>
103+
<field name="customer"/>
102104
</group>
103105
</page>
104106
</notebook>
@@ -116,6 +118,8 @@
116118
<field name="partner_id"/>
117119
<field name="validity" string="Validity(days)"/>
118120
<field name="date_deadline"/>
121+
<button name="action_accept" string="Accept" type="object" icon="fa-check"/>
122+
<button name="action_refuse" string="Refuse" type="object" icon="fa-times"/>
119123
<field name="status"/>
120124
</list>
121125
</field>
@@ -128,12 +132,12 @@
128132
<form string="Property">
129133
<sheet>
130134
<group>
131-
<field name="price"/>
132-
<field name="partner_id"/>
133-
<field name="validity" string="Validity(days)"/>
134-
<field name="date_deadline"/>
135-
<field name="status"/>
136-
</group>
135+
<field name="price"/>
136+
<field name="partner_id"/>
137+
<field name="validity" string="Validity(days)"/>
138+
<field name="date_deadline"/>
139+
<field name="status"/>
140+
</group>
137141
</sheet>
138142
</form>
139143
</field>
@@ -158,4 +162,4 @@
158162
</search>
159163
</field>
160164
</record>
161-
</odoo>
165+
</odoo>

0 commit comments

Comments
 (0)