Skip to content

Commit d462e64

Browse files
committed
[IMP] estate: Chapter 9
1 parent a468553 commit d462e64

File tree

6 files changed

+35
-3
lines changed

6 files changed

+35
-3
lines changed

estate/models/estate_property.py

Lines changed: 15 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 date
4+
from odoo.exceptions import UserError
45

56

67
class EstatePropertyModel(models.Model):
@@ -77,3 +78,17 @@ def _onchange_garden(self):
7778
else:
7879
self.garden_area = 0
7980
self.garden_orientation = False
81+
82+
def action_sold(self):
83+
for record in self:
84+
if record.state == "cancel":
85+
raise UserError("Canceled properties cannot be sold.")
86+
record.state = "sold"
87+
return True
88+
89+
def action_cancel(self):
90+
for record in self:
91+
if record.state == "sold":
92+
raise UserError("Sold properties cannot be canceled.")
93+
record.state = "cancel"
94+
return True

estate/models/estate_property_offer.py

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,7 @@ class EstatePropertyOffer(models.Model):
1313
)
1414
partner_id = fields.Many2one('res.partner', string="Partner", required=True)
1515
property_id = fields.Many2one('estate.property', string="Property", required=True)
16-
16+
1717
validity = fields.Integer(string="Validity (days)", default=7)
1818
date_deadline = fields.Date(string="Deadline", compute='_compute_date_deadline', inverse='_inverse_date_deadline')
1919

@@ -27,3 +27,15 @@ def _inverse_date_deadline(self):
2727
for record in self:
2828
start_date = record.create_date.date() if record.create_date else fields.Date.today()
2929
record.validity = (record.date_deadline - start_date).days
30+
31+
def action_accept(self):
32+
for record in self:
33+
record.status = 'accepted'
34+
record.property_id.buyer_id = record.partner_id
35+
record.property_id.selling_price = record.price
36+
return True
37+
38+
def action_refuse(self):
39+
for record in self:
40+
record.status = 'refused'
41+
return True

estate/models/estate_property_tag.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,3 @@ class EstatePropertyTag(models.Model):
66
_description = "Property Tag"
77

88
name = fields.Char(required=True)
9-

estate/models/estate_property_type.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,3 @@ class EstatePropertyTypeModel(models.Model):
55
_name = "estate.property.type"
66
_description = "Real Estate property types database"
77
name = fields.Char(required=True)
8-

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
@@ -22,6 +22,11 @@
2222
<field name="model">estate.property</field>
2323
<field name="arch" type="xml">
2424
<form string="Property">
25+
<header>
26+
<button name="action_sold" type="object" string="Sold" statusbar_visible="new,offer_received,offer_accepted"/>
27+
<button name="action_cancel" type="object" string="Cancel" statusbar_visible="new,offer_received,offer_accepted"/>
28+
<field name="state" widget="statusbar" statusbar_visible="new,offer_received,offer_accepted,sold"/>
29+
</header>
2530
<sheet>
2631
<div class="oe_title">
2732
<h1>

0 commit comments

Comments
 (0)