1
1
import datetime
2
2
3
3
from odoo import api , fields , models
4
+ from odoo .excepetions import UserError
4
5
5
6
6
7
class EstateProperty (models .Model ):
7
8
_name = "estate.property"
8
9
_description = "Estate Property"
10
+
9
11
name = fields .Char (string = "Title" )
10
12
seller_id = fields .Many2one (
11
13
"res.users" , string = "Salesperson" , index = True , copy = True , default = lambda self : self .env .user
12
14
)
13
15
description = fields .Text ()
14
16
postcode = fields .Char ()
15
17
date_availability = fields .Date (
16
- default = datetime .datetime .now ()
17
- + datetime .timedelta (days = 90 ), # Setting the date availability 3 months from now.
18
+ default = datetime .datetime .now () + datetime .timedelta (days = 90 ),
18
19
copy = False ,
19
20
)
20
- validity_days = fields .Integer (default = 7 )
21
- deadline_date = fields .Date (compute = "_compute_deadline_date" , inverse = "_inverse_validity_days" )
22
21
expected_price = fields .Float ()
23
22
selling_price = fields .Float (readonly = True , copyright = False , copy = False )
24
23
bedrooms = fields .Integer (default = 4 )
@@ -38,7 +37,7 @@ class EstateProperty(models.Model):
38
37
default = "new" ,
39
38
)
40
39
property_type_id = fields .Many2one ("estate.property.type" , string = "Property type" )
41
- property_tag_id = fields .Many2many ("estate.property.tag" , string = "Property tag" )
40
+ property_tag_ids = fields .Many2many ("estate.property.tag" , string = "Property tag" )
42
41
offer_ids = fields .One2many ("estate.property.offer" , "property_id" )
43
42
best_offer_price = fields .Float (compute = "_compute_best_offer_price" )
44
43
@@ -50,21 +49,28 @@ def _compute_total_area(self):
50
49
@api .depends ("offer_ids.price" )
51
50
def _compute_best_offer_price (self ):
52
51
for record in self :
53
- record .best_offer_price = max (record .offer_ids .mapped ("price" )) if record .offer_ids else 0.0
54
-
55
- def _compute_deadline_date (self ):
56
- for record in self :
57
- record .deadline_date = datetime .date .today () + datetime .timedelta (days = record .validity_days )
58
-
59
- @api .depends ("deadline_date" )
60
- def _inverse_validity_days (self ):
61
- for record in self :
62
- record .validity_days = (record .deadline_date - datetime .date .today ()).days
52
+ record .best_offer_price = max (record .offer_ids .mapped ("price" ), default = 0.0 )
63
53
64
54
@api .onchange ("has_garden" )
65
55
def _onchange_has_garden (self ):
66
56
for record in self :
67
57
if record .has_garden :
68
- record .garden_orientation , record .garden_area = "north" , 10
58
+ record .garden_orientation = "north"
59
+ record .garden_area = 10
69
60
else :
70
- record .garden_orientation , record .garden_area = None , None
61
+ record .garden_orientation = False
62
+ record .garden_area = False
63
+
64
+ def action_mark_property_as_sold (self ):
65
+ if "cancelled" in self .mapped ("status" ):
66
+ raise UserError ("Cannot sell a property that was canceled." )
67
+
68
+ for record in self :
69
+ record .status = "sold"
70
+
71
+ def action_mark_property_as_cancelled (self ):
72
+ if "sold" in self .mapped ("status" ):
73
+ raise UserError ("Cannot cancel a property that was sold." )
74
+
75
+ for record in self :
76
+ record .status = "cancelled"
0 commit comments