Skip to content

Commit 3b6035d

Browse files
committed
[ADD] estate: added action buttons
1 parent 1d50e6a commit 3b6035d

File tree

4 files changed

+45
-10
lines changed

4 files changed

+45
-10
lines changed

estate/models/estate_property.py

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

45

@@ -31,14 +32,14 @@ class Estateproperty(models.Model):
3132
)
3233
property_type_id = fields.Many2one("estate.property.type", string="Type")
3334
salesperson = fields.Many2one('res.partner', string='Salesperson')
34-
buyer = fields.Many2one('res.users', string='Buyer', default=lambda self: self.env.user)
35+
buyer = fields.Many2one('res.users', string='Buyer')
3536
tag_ids = fields.Many2many('estate.property.tag', string='Tag')
3637
offer_ids = fields.One2many('estate.property.offer', 'property_id', string='Offer')
3738
total_area = fields.Float(compute="_compute_total_area")
3839
best_offer = fields.Float(compute="_compute_best_offer")
40+
offer_accepted = fields.Boolean()
3941

40-
41-
@api.depends("garden_area","living_area")
42+
@api.depends("garden_area", "living_area")
4243
def _compute_total_area(self):
4344
for record in self:
4445
record.total_area = record.garden_area + record.living_area
@@ -56,3 +57,17 @@ def _onchange_garden(self):
5657
else:
5758
self.garden_area = 0
5859
self.garden_orientation = None
60+
61+
def set_property_sold(self):
62+
for record in self:
63+
if record.state != 'cancelled':
64+
record.state = 'sold'
65+
else:
66+
raise(UserError("Can not cancel sold property"))
67+
68+
def set_property_cancelled(self):
69+
for record in self:
70+
if record.state != 'sold':
71+
record.state = 'cancelled'
72+
else:
73+
raise(UserError("Can not cancel sold property"))

estate/models/estate_property_offer.py

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

@@ -13,12 +14,11 @@ class EstatePropertyOffer(models.Model):
1314
selection=[('accepted', 'Accepted'), ('refused', 'Refused')],
1415
copy=False
1516
)
16-
partner_id = fields.Many2one('res.partner', required=True)
17+
partner_id = fields.Many2one('res.users', required=True, default=lambda self: self.env.user)
1718
property_id = fields.Many2one('estate.property', required=True)
1819
validity = fields.Integer(string="Validity (days)", default=7)
1920
date_deadline = fields.Date(compute="_compute_date_deadline", inverse="_inverse_date_deadline")
2021

21-
2222
@api.depends("validity")
2323
def _compute_date_deadline(self):
2424
for record in self:
@@ -28,3 +28,17 @@ def _inverse_date_deadline(self):
2828
for record in self:
2929
deadline = datetime(record.date_deadline.year, record.date_deadline.month, record.date_deadline.day)
3030
record.validity = int((deadline - fields.Datetime.now()).days)
31+
32+
def accept_offer(self):
33+
for record in self:
34+
if not record.property_id.offer_accepted:
35+
record.status = 'accepted'
36+
record.property_id.selling_price = record.price
37+
record.property_id.buyer = record.partner_id
38+
record.property_id.offer_accepted = True
39+
else:
40+
raise(UserError("Can not accept more than one offer"))
41+
42+
def reject_offer(self):
43+
for record in self:
44+
record.status = 'refused'

estate/views/estate_property_offer_views.xml

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -9,11 +9,11 @@
99
<sheet>
1010
<group>
1111
<h1>
12-
<field name="price"/>
13-
<field name="partner_id"/>
14-
<field name="validity"/>
15-
<field name="date_deadline"/>
16-
<field name="status"/>
12+
<field name="price" string="Price"/>
13+
<field name="partner_id" string="Partner id"/>
14+
<field name="validity" string="Valid until"/>
15+
<field name="date_deadline" string="Deadline"/>
16+
<field name="status" string="Status"/>
1717
</h1>
1818
</group>
1919
</sheet>
@@ -30,6 +30,8 @@
3030
<field name="partner_id"/>
3131
<field name="validity"/>
3232
<field name="date_deadline"/>
33+
<button name="accept_offer" string="Accept" type="object" icon="fa-check"/>
34+
<button name="reject_offer" string="Reject" type="object" icon="fa-times"/>
3335
<field name="status"/>
3436
</list>
3537
</field>

estate/views/estate_property_views.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,10 @@
4646
<field name="model">estate.property</field>
4747
<field name="arch" type="xml">
4848
<form string="property">
49+
<header>
50+
<button name="set_property_sold" type="object" string="SOLD"/>
51+
<button name="set_property_cancelled" type="object" string="CANCEL"/>
52+
</header>
4953
<sheet>
5054
<group>
5155
<h1>

0 commit comments

Comments
 (0)