1
- from odoo import api , fields , models , exceptions
1
+ """Odoo modules"""
2
2
from dateutil .relativedelta import relativedelta
3
+ from odoo import api , fields , models , exceptions
3
4
4
5
class EstatePropertyOffer (models .Model ):
6
+ '''Offer for an estate property'''
5
7
_name = "estate.property.offer"
6
8
_description = "Offer for a property"
7
9
_order = "price desc"
@@ -18,57 +20,58 @@ class EstatePropertyOffer(models.Model):
18
20
validity = fields .Float (default = 7 , string = "Validity" )
19
21
property_type_id = fields .Many2one (related = "property_id.property_type_id" )
20
22
21
-
23
+
22
24
23
25
_sql_constraints = [('check_price' , 'CHECK(price > 0)' , 'The price must be strictly positive.' )]
24
26
25
27
26
28
27
29
@api .model
28
- def create (self , vals ):
29
-
30
- self .env ['estate.property' ].browse (vals ['property_id' ]).state = 'offer_received'
30
+ def create (self , vals_list ):
31
+ '''Change property state and add price warning on creation'''
32
+ self .env ['estate.property' ].browse (vals_list ['property_id' ]).state = 'offer_received'
31
33
32
34
if self .env ['estate.property' ].browse (vals ['property_id' ]).offer_ids :
33
35
if vals ['price' ] < min (self .env ['estate.property' ].browse (vals ['property_id' ]).offer_ids .mapped ('price' )):
34
36
raise exceptions .UserError ("You are trying to create the lowest offer" )
35
37
36
- return super ().create (vals )
38
+ return super ().create (vals_list )
37
39
38
40
@api .depends ("validity" )
39
41
def _compute_date_deadline (self ):
40
42
for record in self :
41
- if ( record .create_date ) :
43
+ if record .create_date :
42
44
record .date_deadline = record .create_date + relativedelta (days = record .validity )
43
45
else :
44
46
record .date_deadline = fields .Date .today () + relativedelta (days = record .validity )
45
47
46
48
@api .depends ("date_deadline" )
47
49
def _inverse_date_deadline (self ):
48
50
for record in self :
49
- if ( record .create_date ) :
51
+ if record .create_date :
50
52
record .validity = relativedelta (record .date_deadline , record .create_date ).days
51
53
else :
52
54
record .validity = relativedelta (record .date_deadline , fields .Date .today ()).days
53
55
54
56
55
57
56
58
def accept_offer (self ):
59
+ '''Accept an offer'''
57
60
for record in self :
58
61
for offer_id in record .property_id .offer_ids :
59
62
if offer_id .status == 'accepted' :
60
63
raise exceptions .UserError ("Another offer is already accepted" )
61
- return True
62
64
63
65
record .status = 'accepted'
64
66
record .property_id .buyer_id = record .partner_id
65
67
record .property_id .selling_price = record .price
66
68
67
69
return True
68
-
70
+
69
71
def refuse_offer (self ):
72
+ '''Refuse an offer'''
70
73
for record in self :
71
- if ( record .status == 'accepted' ) :
74
+ if record .status == 'accepted' :
72
75
record .property_id .buyer_id = False
73
76
record .property_id .selling_price = 0
74
77
0 commit comments