1
- from odoo import api , exceptions , fields , models
2
- from datetime import date
3
- from dateutil .relativedelta import relativedelta
1
+ from odoo import fields , models
4
2
5
3
6
4
class Estate_Property_Type (models .Model ):
7
5
_name = "estate_property_type"
8
6
_description = "Estate property Types"
9
- active = False
7
+ _order = "name"
10
8
11
9
name = fields .Char (
12
10
required = True ,
13
11
string = "Type"
14
12
)
15
13
14
+ property_ids = fields .One2many (
15
+ "estate_property" ,
16
+ "type_id" ,
17
+ string = "Estate Properties"
18
+ )
19
+
16
20
_sql_constraints = [
17
21
("check_unique_type" , "UNIQUE(name)" , "Property types must be unique." )
18
22
]
@@ -21,6 +25,7 @@ class Estate_Property_Type(models.Model):
21
25
class Estate_Property_Tag (models .Model ):
22
26
_name = "estate_property_tag"
23
27
_description = "Estate property Tags"
28
+ _order = "name"
24
29
25
30
name = fields .Char (
26
31
required = True ,
@@ -35,75 +40,3 @@ class Estate_Property_Tag(models.Model):
35
40
_sql_constraints = [
36
41
("check_unique_tag" , "UNIQUE(name)" , "Property tags must be unique." )
37
42
]
38
-
39
-
40
- class Estate_Property_Offer (models .Model ):
41
- _name = "estate_property_offer"
42
- _description = "Estate Property Offers"
43
-
44
- price = fields .Float (
45
- string = "Price"
46
- )
47
-
48
- status = fields .Selection (
49
- [("accepted" , "Accepted" ), ("refused" , "Refused" )],
50
- readonly = True ,
51
- copy = False ,
52
- string = "Status"
53
- )
54
-
55
- partner_id = fields .Many2one (
56
- 'res.partner' ,
57
- required = True ,
58
- string = "Partner"
59
- )
60
-
61
- property_id = fields .Many2one (
62
- 'estate_property' ,
63
- string = "Property"
64
- )
65
-
66
- validity = fields .Integer (
67
- default = 7 ,
68
- string = "Validity (days)"
69
- )
70
-
71
- deadline = fields .Date (
72
- compute = "_compute_deadline" ,
73
- copy = False ,
74
- string = "Deadline"
75
- )
76
-
77
- _sql_constraints = [
78
- ("check_positive_price" , "CHECK(price > 0.0)" , "Offer Price should be a positive number (higher than 0)." )
79
- ]
80
-
81
- @api .depends ("validity" )
82
- def _compute_deadline (self ):
83
- for record in self :
84
- record .deadline = date .today () + relativedelta (days = + record .validity )
85
-
86
- def _inverse_deadline (self ):
87
- for record in self :
88
- record .validity = relativedelta (date .today (), record .deadline )
89
-
90
- def action_accept (self ):
91
- for record in self :
92
- if not any (offer_status == "accepted" for offer_status in record .property_id .offer_ids .mapped ("status" )):
93
- # Set values in the Property itself
94
- record .property_id .selling_price = record .price
95
- record .property_id .buyer = record .partner_id
96
-
97
- record .status = "accepted"
98
- else :
99
- raise exceptions .UserError ("An offer has already been accepted." )
100
- return True
101
-
102
- def action_refuse (self ):
103
- for record in self :
104
- if record .status == "accepted" :
105
- # Set values in the Property itself
106
- record .property_id .selling_price = 0.0
107
- record .property_id .buyer = None
108
- record .status = "refused"
109
- return True
0 commit comments