Skip to content

Commit ea014ea

Browse files
committed
[IMP] estate: add some protection on create/delete operation using inheritance and add a page in User to see Properties linked to salesperson
1 parent 2d1fc29 commit ea014ea

File tree

6 files changed

+36
-0
lines changed

6 files changed

+36
-0
lines changed

estate/__manifest__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@
99
'views/estate_property_tag_views.xml',
1010
'views/estate_property_views.xml',
1111
'views/estate_menus.xml',
12+
'views/inherited_user.xml',
1213
'security/ir.model.access.csv',
1314
],
1415
'application': True

estate/models/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,3 +2,4 @@
22
from . import estate_property_tag
33
from . import estate_property_offer
44
from . import estate_properties
5+
from . import inherited_user

estate/models/estate_properties.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,3 +92,8 @@ def _check_minimum_sell_price(self):
9292
for a_property in self:
9393
if float_compare(a_property.selling_price, a_property.expected_price * 0.9, 2) == -1:
9494
raise ValidationError("The seling prce can not be lower than 90% of the expected price")
95+
96+
@api.ondelete(at_uninstall=False)
97+
def _unlink_if_new_or_cancelled(self):
98+
if any(record.state not in ["new", "cancelled"] for record in self):
99+
raise UserError("Property should be New or Cancelled in order to be deleted")

estate/models/estate_property_offer.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,3 +56,12 @@ def action_cancel(self):
5656
raise UserError("Offer already accepted")
5757
offer.status = "refused"
5858
return True
59+
60+
@api.model
61+
def create(self, vals):
62+
property_id = self.env["estate_property"].browse(vals["property_id"])
63+
if property_id.state == "new":
64+
property_id.state = "offer received"
65+
if property_id.best_price > vals["price"]:
66+
raise UserError("The price of a new offer can't be below the price of an already existing offer.")
67+
return super().create(vals)

estate/models/inherited_user.py

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
from odoo import fields, models
2+
class InheritedUser(models.Model):
3+
_inherit = "res.users"
4+
5+
property_ids = fields.One2many("estate_property", inverse_name="salesperson")

estate/views/inherited_user.xml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
<?xml version="1.0"?>
2+
<odoo>
3+
<record id="inherited_user_estate_view_form" model="ir.ui.view">
4+
<field name="name">inherited.base.view_users_form</field>
5+
<field name="model">res.users</field>
6+
<field name="inherit_id" ref="base.view_users_form"/>
7+
<field name="arch" type="xml">
8+
<xpath expr="//page" position="after">
9+
<page string="Properties">
10+
<field name="property_ids" />
11+
</page>
12+
</xpath>
13+
</field>
14+
</record>
15+
</odoo>

0 commit comments

Comments
 (0)