File tree 3 files changed +50
-1
lines changed 3 files changed +50
-1
lines changed Original file line number Diff line number Diff line change 1
1
2
2
from dateutil .relativedelta import relativedelta
3
3
from odoo import fields , models , api
4
+ from odoo .exceptions import UserError
4
5
5
6
6
7
class Properties (models .Model ):
@@ -62,3 +63,19 @@ def _onchange_garden(self):
62
63
else :
63
64
self .garden_area = None
64
65
self .garden_orientation = None
66
+
67
+ def action_sold (self ):
68
+ for a_property in self :
69
+ if a_property .state not in ["cancelled" ]:
70
+ a_property .state = "sold"
71
+ else :
72
+ raise UserError ("Property is already cancelled" )
73
+ return True
74
+
75
+ def action_cancel (self ):
76
+ for a_property in self :
77
+ if a_property .state not in ["sold" ]:
78
+ a_property .state = "cancelled"
79
+ else :
80
+ raise UserError ("Property is already sold" )
81
+ return True
Original file line number Diff line number Diff line change 1
1
from dateutil .relativedelta import relativedelta
2
2
from odoo import fields , models , api
3
+ from odoo .exceptions import UserError
3
4
4
5
5
6
class PropertyOffer (models .Model ):
@@ -24,3 +25,28 @@ def _update_validity(self):
24
25
for offer in self :
25
26
if offer .create_date :
26
27
offer .validity = (offer .date_deadline - offer .create_date .date ()).days
28
+
29
+ def action_confirm (self ):
30
+ for offer in self :
31
+
32
+ for other_offer in offer .property_id .offer_ids :
33
+ if other_offer .status == "accepted" :
34
+ offer .status = "refused"
35
+
36
+ if offer .status == "refused" :
37
+ raise UserError ("Offer already refused" )
38
+
39
+ offer .status = "accepted"
40
+ offer .property_id .buyer = offer .partner_id
41
+ offer .property_id .selling_price = offer .price
42
+ for other_offer in offer .property_id .mapped ("offer_ids" ):
43
+ if other_offer .id != offer .id :
44
+ other_offer .status = "refused"
45
+ return True
46
+
47
+ def action_cancel (self ):
48
+ for offer in self :
49
+ if offer .status == "accepted" :
50
+ raise UserError ("Offer already accepted" )
51
+ offer .status = "refused"
52
+ return True
Original file line number Diff line number Diff line change 47
47
</field >
48
48
</record >
49
49
50
- <!-- Usual view -->
50
+ <!-- Form view -->
51
51
<record id =" estate_property_view_form" model =" ir.ui.view" >
52
52
<field name =" name" >estate.property.form</field >
53
53
<field name =" model" >estate_property</field >
54
54
<field name =" arch" type =" xml" >
55
55
<form string =" Property" >
56
+ <header >
57
+ <button name =" action_sold" type =" object" string =" Sold" />
58
+ <button name =" action_cancel" type =" object" string =" Cancel" />
59
+ </header >
56
60
<sheet >
57
61
<h1 ><field name =" name" /></h1 >
58
62
<field name =" tag_ids" widget =" many2many_tags" />
88
92
<list string =" Offers" >
89
93
<field name =" price" />
90
94
<field name =" partner_id" />
95
+ <button name =" action_confirm" string =" Accept" states =" draft" type =" object" icon =" fa-check" />
96
+ <button name =" action_cancel" string =" Refuse" states =" draft,open" type =" object" icon =" fa-times" />
91
97
<field name =" status" />
92
98
</list >
93
99
</field >
You can’t perform that action at this time.
0 commit comments