Skip to content

Commit 6bfe13f

Browse files
committed
[IMP] estate: buttons for property and offer status
1 parent 8f36d54 commit 6bfe13f

File tree

4 files changed

+41
-1
lines changed

4 files changed

+41
-1
lines changed

estate/models/estate_property.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
from odoo import api, fields, models
2+
from odoo.exceptions import UserError
23

34

45
class Property(models.Model):
@@ -13,7 +14,7 @@ class Property(models.Model):
1314
('offer accepted', 'Offer Accepted'),
1415
('sold', 'Sold'),
1516
('cancelled', 'Cancelled'),
16-
], string='State', required=True, copy=False, default='new')
17+
], string='Status', required=True, copy=False, default='new')
1718
description = fields.Text('Description')
1819
last_seen = fields.Datetime("Last Seen", default=lambda self: fields.Datetime.now())
1920
postcode = fields.Char('Postcode')
@@ -61,3 +62,17 @@ def _onchange_partner(self):
6162
else:
6263
self.garden_area = None
6364
self.garden_orientation = None
65+
66+
def action_sell_property(self):
67+
for record in self:
68+
if record.state == 'cancelled':
69+
raise UserError("Cancelled properties cannot be sold.")
70+
record.state = 'sold'
71+
return True
72+
73+
def action_cancel_property(self):
74+
for record in self:
75+
if record.state == 'sold':
76+
raise UserError("Sold properties cannot be cancelled.")
77+
record.state = 'cancelled'
78+
return True

estate/models/estate_property_offer.py

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
from odoo import api, fields, models
2+
from odoo.exceptions import UserError
23

34

45
class PropertyOffer(models.Model):
@@ -26,3 +27,20 @@ def _compute_date_deadline(self):
2627
def _inverse_date_deadline(self):
2728
for record in self:
2829
record.validity = (record.date_deadline - record.create_date).days
30+
31+
def action_accept(self):
32+
for record in self:
33+
if record.property_id.state == 'offer accepted' or record.property_id.state == 'sold':
34+
raise UserError("An offer has already been accepted for this property!")
35+
record.status = 'accepted'
36+
record.property_id.state = 'offer accepted'
37+
self.property_id.buyer_id = self.partner_id
38+
self.property_id.selling_price = self.price
39+
return True
40+
41+
def action_refuse(self):
42+
for record in self:
43+
record.status = 'refused'
44+
self.property_id.buyer_id = ''
45+
self.property_id.selling_price = 0
46+
return True

estate/views/estate_property_offer_views.xml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,8 @@
99
<field name="partner_id"/>
1010
<field name="validity"/>
1111
<field name="date_deadline"/>
12+
<button name="action_accept" type="object" icon="fa-check" title="Accept"/>
13+
<button name="action_refuse" type="object" icon="fa-times" title="Refuse"/>
1214
<field name="status"/>
1315
</list>
1416
</field>

estate/views/estate_property_views.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -50,6 +50,10 @@
5050
<field name="model">estate.property</field>
5151
<field name="arch" type="xml">
5252
<form string="Property">
53+
<header>
54+
<button name="action_sell_property" type="object" string="SOLD"/>
55+
<button name="action_cancel_property" type="object" string="CANCEL"/>
56+
</header>
5357
<sheet>
5458
<group>
5559
<h1>
@@ -59,6 +63,7 @@
5963
<group>
6064
<group>
6165
<field name="tag_ids" widget="many2many_tags"/>
66+
<field name="state"/>
6267
<field name="property_type_id"/>
6368
<field name="postcode"/>
6469
<field name="date_availability"/>

0 commit comments

Comments
 (0)