Skip to content

Commit 4b1005a

Browse files
committed
[IMP] estate: Add actions
1 parent 5051e18 commit 4b1005a

File tree

4 files changed

+57
-1
lines changed

4 files changed

+57
-1
lines changed

estate/models/estate_property.py

Lines changed: 15 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 EstateProperty(models.Model):
@@ -77,3 +78,17 @@ def _onchange_garden(self):
7778
else:
7879
self.garden_area = None
7980
self.garden_orientation = None
81+
82+
def action_mark_as_sold(self):
83+
for record in self:
84+
if self.state == 'cancelled':
85+
raise UserError('Property is already cancelled')
86+
87+
self.state = 'sold'
88+
89+
def action_mark_as_cancelled(self):
90+
for record in self:
91+
if self.state == 'sold':
92+
raise UserError('Property is already sold')
93+
94+
self.state = 'cancelled'

estate/models/estate_property_offer.py

Lines changed: 22 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 EstatePropertyOffer(models.Model):
@@ -30,3 +31,24 @@ def _inverse_deadline(self):
3031
for record in self:
3132
created_date = record.create_date.date() or fields.Date.today()
3233
record.validity = (record.date_deadline - created_date).days
34+
35+
def action_mark_as_accepted(self):
36+
for record in self:
37+
if (
38+
self.property_id.state != 'new'
39+
and self.property_id.state != 'offer_received'
40+
):
41+
raise UserError('Cannot accept offer in this state')
42+
43+
self.status = 'accepted'
44+
self.property_id.selling_price = self.price
45+
self.property_id.buyer_id = self.partner_id
46+
self.property_id.state = 'offer_accepted'
47+
48+
def action_mark_as_refused(self):
49+
for record in self:
50+
if self.status == 'accepted':
51+
self.property_id.state = 'offer_received'
52+
self.property_id.selling_price = None
53+
self.property_id.buyer_id = None
54+
self.status = 'refused'

estate/views/estate_property_form_views.xml

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,21 @@
44
<field name="model">estate.property</field>
55
<field name="arch" type="xml">
66
<form string="Property">
7+
<header>
8+
<button
9+
name="action_mark_as_sold"
10+
string="Sold"
11+
type="object"
12+
class="oe_highlight"
13+
invisible="state == 'sold' or state == 'cancelled'"
14+
/>
15+
<button
16+
name="action_mark_as_cancelled"
17+
string="Cancel"
18+
type="object"
19+
invisible="state == 'sold' or state == 'cancelled'"
20+
/>
21+
</header>
722
<sheet>
823
<h1 class="mb32">
924
<field name="name" class="mb16"/>
@@ -12,6 +27,9 @@
1227
<field name="tag_ids" widget="many2many_tags"/>
1328
</group>
1429
<group>
30+
<group>
31+
<field name="state"/>
32+
</group>
1533
<group>
1634
<field name="property_type_id"/>
1735
</group>

estate/views/estate_property_offer_list_views.xml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,8 +8,9 @@
88
<field name="partner_id"/>
99
<field name="validity" string="Validity (days)"/>
1010
<field name="date_deadline" string="Deadline"/>
11+
<button name="action_mark_as_accepted" type="object" icon="fa-check" title="accept"/>
12+
<button name="action_mark_as_refused" type="object" icon="fa-times" title="refuse"/>
1113
<field name="status"/>
12-
<field name="property_id"/>
1314
</list>
1415
</field>
1516
</record>

0 commit comments

Comments
 (0)