Skip to content

Commit 63624e0

Browse files
committed
[IMP] estate: added restrictions,automation and action in property offer
1 parent 397c8c9 commit 63624e0

File tree

6 files changed

+54
-24
lines changed

6 files changed

+54
-24
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: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from dateutil.relativedelta import relativedelta
22

3-
from odoo import api, models, fields
3+
from odoo import api, models, fields, exceptions
44

55

66
class EstatePropertyOffer(models.Model):
@@ -30,3 +30,18 @@ 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
47+

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)