Skip to content

Commit 0b0c858

Browse files
committed
[IMP] estate: adding actions to estate property and estate_property_offers
estate_property: adding cancel and sold buttons and actions for those buttons estate_property_offer: adding accept and refuse buttons and actions for those buttons learned: actions, exception example, icons in buttons
1 parent 2fd4593 commit 0b0c858

File tree

4 files changed

+54
-3
lines changed

4 files changed

+54
-3
lines changed

estate/models/estate_property.py

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from odoo import api, fields, models
22
from dateutil.relativedelta import relativedelta
33
from datetime import datetime
4+
from odoo.exceptions import UserError
45

56

67
class EstateProperty(models.Model):
@@ -31,6 +32,7 @@ class EstateProperty(models.Model):
3132
)
3233
active = fields.Boolean(default=True)
3334
state = fields.Selection(
35+
readonly=True,
3436
string="State",
3537
selection=[
3638
("new", "New"),
@@ -75,3 +77,17 @@ def _onchange_garden(self):
7577
else:
7678
self.garden_area = False
7779
self.garden_orientation = False
80+
81+
def action_cancel_property(self):
82+
if self.state == "sold":
83+
raise UserError("Sold property cannot be cancelled!")
84+
85+
for record in self:
86+
record.state = "cancelled"
87+
88+
def action_sell_property(self):
89+
if self.state == "cancelled":
90+
raise UserError("Cancelled property cannot be sold!")
91+
92+
for record in self:
93+
record.state = "sold"

estate/models/estate_property_offer.py

Lines changed: 26 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
from odoo import api, fields, models
22
from datetime import timedelta
3+
from odoo.exceptions import UserError
34

45

56
class EstatePropertyOffer(models.Model):
@@ -12,9 +13,7 @@ class EstatePropertyOffer(models.Model):
1213
partner_id = fields.Many2one("res.partner", required=True)
1314
property_id = fields.Many2one("estate_property", required=True)
1415
validity = fields.Integer("Validity", default=7)
15-
date_deadline = fields.Date(
16-
"Deadline", compute="_compute_date_deadline", inverse="_inverse_date_deadline"
17-
)
16+
date_deadline = fields.Date("Deadline", compute="_compute_date_deadline")
1817

1918
@api.depends("validity", "create_date")
2019
def _compute_date_deadline(self):
@@ -23,6 +22,30 @@ def _compute_date_deadline(self):
2322
record.create_date or fields.Datetime.now()
2423
) + timedelta(days=record.validity)
2524

25+
def action_accept_offer(self):
26+
if self.status:
27+
raise UserError("You cannot change the status!")
28+
if self.property_id.state == "offer_accepted":
29+
raise UserError("One offer has been already accepted, sorry!")
30+
if self.property_id.state == "cancelled":
31+
raise UserError("This property is cancelled")
32+
if self.property_id.state == "sold":
33+
raise UserError("This property is sold")
34+
35+
for record in self:
36+
record.status = "accepted"
37+
record.property_id.selling_price = record.price
38+
record.property_id.buyer_id = record.partner_id
39+
record.property_id.state = "offer_accepted"
40+
return True
41+
42+
def action_refuse_offer(self):
43+
if self.status:
44+
raise UserError("You cannot change the status!")
45+
for record in self:
46+
record.status = "refused"
47+
return True
48+
2649
# @api.depends("create_date", "date_deadline") Not working right now!!!
2750
# def _inverse_date_deadline(self):
2851
# print("Hello!")

estate/views/estate_property_offer_views.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,11 @@
99
<field name="status" />
1010
<field name="validity" />
1111
<field name="date_deadline" />
12+
<field name="status" />
13+
<button name="action_accept_offer" type="object" string="" icon="fa-check"
14+
title="accept" />
15+
<button name="action_refuse_offer" type="object" string="" icon="fa-times"
16+
title="refuse" />
1217
</list>
1318
</field>
1419
</record>

estate/views/estate_property_views.xml

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,12 @@
4242
<field name="model">estate_property</field>
4343
<field name="arch" type="xml">
4444
<form string="Test">
45+
<header>
46+
<button name="action_cancel_property" type="object" string="CANCEL"
47+
class="oe_highlight" />
48+
<button name="action_sell_property" type="object" string="SOLD"
49+
class="oe_highlight" />
50+
</header>
4551
<sheet>
4652
<h1>
4753
<field name="name" />
@@ -64,6 +70,7 @@
6470
<group>
6571
<field name="selling_price" string="Selling Price" />
6672
<field name="type_id" />
73+
<field name="state" />
6774
</group>
6875
</group>
6976

0 commit comments

Comments
 (0)