Skip to content

Commit a3d2623

Browse files
committed
[IMP] estate: add inherit model for res_users and link offers to user views
1 parent 4c98e9d commit a3d2623

File tree

6 files changed

+36
-1
lines changed

6 files changed

+36
-1
lines changed

estate/__manifest__.py

+1
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
'views/estate_property_tag_views.xml',
99
'views/estate_property_offer_views.xml',
1010
'views/estate_property_views.xml',
11+
'views/res_users_views.xml',
1112
'views/estate_menu.xml',
1213
],
1314
'installable': True,

estate/models/__init__.py

+1
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@
22
from . import estate_property_type
33
from . import estate_property_tag
44
from . import estate_property_offer
5+
from . import res_users

estate/models/estate_property.py

+5-1
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,6 @@ def action_cancel(self):
8787
if "sold" in self.mapped('state'):
8888
raise UserError("You can't cancel a sold property")
8989
self.state = "cancelled"
90-
9190
return True
9291

9392
@api.constrains("selling_price", "expected_price")
@@ -96,3 +95,8 @@ def _check_selling_price(self):
9695
if not float_is_zero(record.selling_price, 2) and \
9796
float_compare(record.selling_price, 0.9 * record.expected_price, 2) < 0:
9897
raise ValidationError("The selling price has to be at least 90% of the expected price")
98+
99+
@api.ondelete(at_uninstall=False)
100+
def _unlink_if_new_or_cancelled(self):
101+
if any(x in self.mapped("state") for x in ["offer_received", "offer_accepted", "sold"]):
102+
raise UserError("You can only delete a new or cancelled property")

estate/models/estate_property_offer.py

+9
Original file line numberDiff line numberDiff line change
@@ -53,3 +53,12 @@ def action_refuse(self):
5353
if record.status == "accepted":
5454
raise UserError("You already accepted this offer")
5555
record.status = "refused"
56+
57+
@api.model
58+
def create(self, vals):
59+
property_record = self.env["estate.property"].browse(vals["property_id"])
60+
if vals["price"] < property_record.best_offer:
61+
raise UserError(f"Your offer can't be lower than {property_record.best_offer}")
62+
63+
property_record.state="offer_received"
64+
return super().create(vals)

estate/models/res_users.py

+6
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
from odoo import api, fields, models
2+
3+
class ResUsers(models.Model):
4+
_inherit = "res.users"
5+
6+
property_ids = fields.One2many("estate.property", "user_id", domain=[('state', 'in', ['new', 'offer_received'])])

estate/views/res_users_views.xml

+14
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
<odoo>
2+
<record id="users_properties_view_list" model="ir.ui.view">
3+
<field name="name">users.properties.view.list</field>
4+
<field name="model">res.users</field>
5+
<field name="inherit_id" ref="base.view_users_form"/>
6+
<field name="arch" type="xml">
7+
<notebook position="inside">
8+
<page string="Estate Properties">
9+
<field name='property_ids'/>
10+
</page>
11+
</notebook>
12+
</field>
13+
</record>
14+
</odoo>

0 commit comments

Comments
 (0)