1+ from datetime import timedelta
2+
13from odoo import models , fields , api
24from odoo .exceptions import UserError
3- from datetime import timedelta
45from odoo .tools .float_utils import float_compare
56
67
78class Offer (models .Model ):
8- _name = " estate.offers"
9- _description = " Offers"
9+ _name = ' estate.offer'
10+ _description = ' Offers'
1011 _order = "price desc"
1112
1213 price = fields .Integer (required = True )
@@ -15,7 +16,7 @@ class Offer(models.Model):
1516 string = "Status" ,
1617 required = False ,
1718 )
18- building_id = fields .Many2one ("estate.buildings " , string = "Building" )
19+ building_id = fields .Many2one ("estate.building " , string = "Building" )
1920 partner_id = fields .Many2one ("res.partner" , string = "Partner" )
2021 validity = fields .Integer (string = "Validity (days)" , default = 7 )
2122 date_deadline = fields .Date (
@@ -42,10 +43,7 @@ def _inverse_date_deadline(self):
4243
4344 def action_accept_offer (self ):
4445 for record in self :
45- if record .status != "accepted" and record .building_id .state not in [
46- "sold" ,
47- "canceled" ,
48- ]:
46+ if record .status != "accepted" and record .building_id .state not in ["sold" , "canceled" ]:
4947 record .status = "accepted"
5048 record .building_id .state = "offer_accepted"
5149 record .building_id .buyer_id = record .partner_id
@@ -58,9 +56,7 @@ def action_accept_offer(self):
5856 )
5957 other_offers .write ({"status" : "refused" })
6058 elif record .building_id .state in ["sold" , "canceled" ]:
61- raise UserError (
62- self .env ._ ("Cannot accept offers for sold or canceled buildings." )
63- )
59+ raise UserError (self .env ._ ("Cannot accept offers for sold or canceled buildings." ))
6460 else :
6561 raise UserError (self .env ._ ("Offer is already accepted." ))
6662
@@ -76,22 +72,13 @@ def action_refuse_offer(self):
7672 @api .constrains ("building_id" , "price" )
7773 def _check_price (self ):
7874 for record in self :
79- if (
80- float_compare (
81- 0.9 * record .building_id .value , record .price , precision_digits = 2
82- )
83- == 1
84- ):
85- raise UserError (
86- self .env ._ (
87- "Offer price must be at least 90% of the building's value."
88- )
89- )
75+ if float_compare (0.9 * record .building_id .value , record .price , precision_digits = 2 ) > 0 :
76+ raise UserError (self .env ._ ("Offer price must be at least 90% of the building's value." ))
9077
9178 @api .model
9279 def create (self , vals ):
9380 for val in vals :
94- self .env ["estate.buildings " ].browse (
81+ self .env ["estate.building " ].browse (
9582 val ["building_id" ]
9683 ).state = "offer_received"
9784 return super ().create (vals )
0 commit comments