@@ -14,7 +14,7 @@ class EstatePropertyOffer(models.Model):
1414 _check_price = models .Constraint ('Check(price > 0)' , "The offer price must be strictly positive." )
1515 status = fields .Selection (selection = [('accepted' , "Accepted" ), ('refused' , "Refused" )], copy = False , string = "Status" )
1616 partner_id = fields .Many2one (comodel_name = 'res.partner' , string = "Partner" , required = True )
17- property_id = fields .Many2one (comodel_name = 'estate.property' , string = "Property" , required = True )
17+ property_id = fields .Many2one (comodel_name = 'estate.property' , string = "Property" , required = True , ondelete = 'cascade' )
1818 validity = fields .Integer (default = 7 , string = "Validity (days)" )
1919 date_deadline = fields .Date (
2020 compute = '_compute_date_deadline' ,
@@ -23,13 +23,24 @@ class EstatePropertyOffer(models.Model):
2323 string = "Deadline" ,
2424 )
2525
26- # self.property_id.status = 'offer_received' when offer is created
27- @api .model
28- def create (self , vals ):
29- offer = super ().create (vals )
30- if offer .property_id .state == 'new' :
31- offer .property_id .state = 'offer_received'
32- return offer
26+ @api .model_create_multi
27+ def create (self , vals_list ):
28+ for vals in vals_list :
29+ property_id = vals .get ('property_id' )
30+ price = vals .get ('price' )
31+
32+ if property_id and price :
33+ property = self .env ['estate.property' ].browse (property_id )
34+ if property .offer_ids :
35+ max_offer = max (property .offer_ids .mapped ('price' ))
36+ if price < max_offer :
37+ raise UserError (self .env ._ ("The offer amount must be higher than %.2f" ) % max_offer )
38+
39+ offers = super ().create (vals_list )
40+ for offer in offers :
41+ if offer .property_id .state == 'new' :
42+ offer .property_id .state = 'offer_received'
43+ return offers
3344
3445 @api .depends ('validity' )
3546 def _compute_date_deadline (self ):
0 commit comments