11from odoo import _ , api , fields , models
2- from odoo .exceptions import UserError
2+ from odoo .exceptions import UserError , ValidationError
33
44
55class PropertyOffer (models .Model ):
@@ -36,7 +36,7 @@ def _seven_days_from_now_date(self):
3636
3737 sequence = fields .Integer ("Sequence" , default = 0 )
3838
39- # Beginning of the deadline part
39+ # Deadline part
4040 @api .depends ("deadline" )
4141 def _compute_validity (self ):
4242 for offer in self :
@@ -48,9 +48,7 @@ def _inverse_validity(self):
4848 for offer in self :
4949 offer .deadline = fields .Date .add (offer .creation_date , days = offer .validity )
5050
51- # End of the deadline part
52-
53- # Beginning of the currency part
51+ # Currency part
5452
5553 # Translate currency to the one of the property so it's easier to compare
5654 # Also, the webpage doesn't like showing multiple currency signs (as $ and €),
@@ -66,9 +64,7 @@ def _compute_translated_price(self):
6664 for offer in self :
6765 offer .translated_price = offer ._compute_currency ()
6866
69- # End of the currency part
70-
71- # Beginning of the state / validation part
67+ # Validation part
7268 def action_confirm (self ):
7369 for offer in self :
7470 if offer .property_id .stage in ["offer_accepted" , "sold" , "cancelled" ]:
@@ -82,7 +78,17 @@ def action_refuse(self):
8278 for offer in self :
8379 offer .status = "refused"
8480
85- # End of the state / validation part
81+ @api .model_create_multi
82+ def create (self , vals_list ):
83+ for val in vals_list :
84+ property = self .env ["estate.property" ].browse (val ["property_id" ])
85+ if property .stage == "new" :
86+ property .stage = "offer_received"
87+
88+ if property .stage != "offer_received" :
89+ raise ValidationError (_ ("You can't create offers at this point" ))
90+
91+ return super ().create (vals_list )
8692
8793 _check_price = models .Constraint (
8894 'CHECK(price > 0)' ,
0 commit comments