1
1
import datetime
2
2
3
- from odoo import fields , models
3
+ from odoo import api , fields , models
4
4
5
5
6
- class Estate_Property (models .Model ):
6
+ class EstateProperty (models .Model ):
7
7
_name = "estate.property"
8
8
_description = "Estate Property"
9
9
name = fields .Char (string = "Title" )
@@ -17,23 +17,55 @@ class Estate_Property(models.Model):
17
17
+ datetime .timedelta (days = 90 ), # Setting the date availability 3 months from now.
18
18
copy = False ,
19
19
)
20
+ validity_date = fields .Integer (default = 7 )
21
+ deadline_date = fields .Date (compute = "_compute_deadline_date" , inverse = "_compute_validity_date" )
20
22
expected_price = fields .Float ()
21
23
selling_price = fields .Float (readonly = True , copyright = False , copy = False )
22
24
bedrooms = fields .Integer (default = 4 )
23
25
living_area = fields .Integer ()
26
+ garden_area = fields .Integer ()
27
+ total_area = fields .Integer (compute = "_compute_total_area" )
24
28
facades = fields .Integer ()
25
29
has_garage = fields .Boolean ()
26
30
has_garden = fields .Boolean ()
27
31
active = fields .Boolean (default = True )
28
- garden_area = fields .Integer ()
29
32
garden_orientation = fields .Selection (
30
33
selection = [("north" , "North" ), ("south" , "South" ), ("east" , "East" ), ("west" , "West" )]
31
34
)
32
35
status = fields .Selection (
33
- selection = [("new" , "New" ), ("offer_receieved" , "Offer Recieved" ), ("sold" , "Sold" )],
36
+ selection = [("new" , "New" ), ("offer_receieved" , "Offer Recieved" ), ("sold" , "Sold" ), ( "cancelled" , "Cancelled" ) ],
34
37
readonly = True ,
35
38
default = "new" ,
36
39
)
37
40
property_type_id = fields .Many2one ("estate.property.type" , string = "Property type" )
38
41
property_tag_id = fields .Many2many ("estate.property.tag" , string = "Property tag" )
39
42
offer_ids = fields .One2many ("estate.property.offer" , "property_id" )
43
+ best_offer_price = fields .Float (compute = "_compute_best_offer_price" )
44
+
45
+ @api .depends ("garden_area" , "living_area" )
46
+ def _compute_total_area (self ):
47
+ for record in self :
48
+ record .total_area = record .living_area + record .garden_area
49
+
50
+ @api .depends ("offer_ids.price" )
51
+ def _compute_best_offer_price (self ):
52
+ for record in self :
53
+ record .best_offer_price = max (record .offer_ids .mapped ("price" )) if record .offer_ids else 0.0
54
+
55
+ @api .depends ("validity_date" )
56
+ def _compute_deadline_date (self ):
57
+ for record in self :
58
+ record .deadline_date = datetime .date .today () + datetime .timedelta (days = record .validity_date )
59
+
60
+ @api .depends ("deadline_date" )
61
+ def _compute_validity_date (self ):
62
+ for record in self :
63
+ record .validity_date = (record .deadline .date - datetime .date .today ()).days
64
+
65
+ @api .onchange ("has_garden" )
66
+ def _onchange_has_garden (self ):
67
+ for record in self :
68
+ if record .has_garden :
69
+ record .garden_orientation , record .garden_area = "north" , 10
70
+ else :
71
+ record .garden_orientation , record .garden_area = None , None
0 commit comments