Skip to content

Commit 273b85b

Browse files
[IMP] estate: Server101 Finished Chapter 10
1 parent 5952c23 commit 273b85b

File tree

4 files changed

+44
-3
lines changed

4 files changed

+44
-3
lines changed

estate/models/estate_property.py

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

44

55
class EstateProperty(models.Model):
@@ -29,6 +29,20 @@ class EstateProperty(models.Model):
2929
tag_ids = fields.Many2many("estate.property.tag",string="Tags")
3030
offer_ids = fields.One2many("estate.property.offer","property_id",string="Offers")
3131

32+
def sell_property(self):
33+
for record in self:
34+
if(record.state == "Cancelled"):
35+
raise exceptions.UserError("Can't sell cancelled property.")
36+
record.state = "Sold"
37+
return True
38+
39+
def cancel_property(self):
40+
for record in self:
41+
if(record.state == "Sold"):
42+
raise exceptions.UserError("Can't cancel sold property.")
43+
record.state = "Cancelled"
44+
return True
45+
3246
@api.depends('living_area','garden_area')
3347
def _get_total_area(self):
3448
for record in self:
@@ -41,7 +55,7 @@ def _get_best_price(self):
4155
max:int = 0
4256

4357
if(len(record.offer_ids)==0):
44-
record.best_price = 0;
58+
record.best_price = 0
4559
continue
4660

4761
for offer in record.offer_ids:

estate/models/estate_property_offer.py

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -13,9 +13,29 @@ class EstatePropertyOffer(models.Model):
1313
validity = fields.Integer(string="Validity Duration",default=7)
1414
date_deadline = fields.Date(string="Deadline",compute="_get_date_deadline",inverse="_set_date_deadline")
1515

16+
def accept_offer(self):
17+
for record in self:
18+
if(record.property_id.selling_price == 0):
19+
record.status = "Accepted";
20+
print(type(record.property_id.seller_id))
21+
print(type(record.partner_id))
22+
record.property_id.buyer_id = record.partner_id;
23+
record.property_id.selling_price = record.price;
24+
25+
return True;
26+
27+
def refused_offer(self):
28+
for record in self:
29+
record.status = "Refused";
30+
return True;
31+
32+
1633
@api.depends("validity")
1734
def _get_date_deadline(self):
1835
for record in self:
36+
if(isinstance(record.create_date,bool)):
37+
record.date_deadline = fields.Datetime.now() + relativedelta(days=record.validity)
38+
return
1939
record.date_deadline = record.create_date + relativedelta(days=record.validity)
2040

2141
def _set_date_deadline(self):

estate/views/estate_property_offer_views.xml

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,9 +26,11 @@
2626
<list string="Property offer list">
2727
<field name="price"/>
2828
<field name ="partner_id"/>
29-
<field name ="status"/>
3029
<field name="date_deadline"/>
3130
<field name="validity"/>
31+
<button name="accept_offer" type="object" string="Accept" icon="fa-check"/>
32+
<button name="refused_offer" type="object" string="Refuse" icon="fa-times"/>
33+
<field name ="status"/>
3234
</list>
3335
</field>
3436
</record>

estate/views/estate_property_views.xml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,10 @@
2626
<field name="model">estate.property</field>
2727
<field name="arch" type="xml">
2828
<form string="Property list">
29+
<header>
30+
<button name="sell_property" type="object" string="Sell"/>
31+
<button name="cancel_property" type="object" string="Cancel"/>
32+
</header>
2933
<sheet>
3034
<group>
3135
<h1 class="mb32">
@@ -34,6 +38,7 @@
3438
</group>
3539
<group>
3640
<field name="tag_ids" widget="many2many_tags"/>
41+
<field name="state"/>
3742
</group>
3843
<group>
3944
<group>

0 commit comments

Comments
 (0)