Skip to content

Commit 4a9112c

Browse files
committed
[IMP] estate: created new inherited model and view for the users page and overriden some default create and delete functions
1 parent 7bd56df commit 4a9112c

File tree

6 files changed

+46
-0
lines changed

6 files changed

+46
-0
lines changed

estate/__manifest__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,7 @@
1111
'license': "LGPL-3",
1212
'data': [
1313
'security/ir.model.access.csv',
14+
'views/res_users_child_views.xml',
1415
'views/estate_property_offer_views.xml',
1516
'views/estate_property_type_views.xml',
1617
'views/estate_property_tag_views.xml',

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_type
33
from . import estate_property_tag
44
from . import estate_property_offer
5+
from . import res_users_child

estate/models/estate_property.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -79,3 +79,9 @@ def action_cancel(self):
7979
else:
8080
raise UserError("A sold property can not be cancelled")
8181
return True
82+
83+
@api.ondelete(at_uninstall=False)
84+
def _unlink_property(self):
85+
for property in self:
86+
if (property.state not in ['New', 'Cancelled']):
87+
raise UserError("Only new or cancelled properties can be deleted")

estate/models/estate_property_offer.py

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,3 +56,17 @@ def _check_price_validity(self):
5656
min_amount = self.property_id.expected_price * 0.9
5757
if (float_compare(self.price, min_amount, 2) < 0):
5858
raise ValidationError("Offered price must be at least 90% of the expected price")
59+
60+
@api.model_create_multi
61+
def create(self, vals_list):
62+
property_ids = [property['property_id'] for property in vals_list]
63+
property_objs = self.env['estate.property'].browse(property_ids)
64+
for property_obj in property_objs:
65+
if (property_obj.offer_ids):
66+
curr_lowest_offer = min(property_obj.offer_ids.mapped('price'))
67+
if float_compare(vals_list[0]['price'], curr_lowest_offer, 2) < 0:
68+
raise ValidationError("Offered price must be higher than already existing offers")
69+
70+
if not property_obj.offer_ids:
71+
property_obj.state = 'Offer Received'
72+
return super().create(vals_list)

estate/models/res_users_child.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
from odoo import fields, models
2+
3+
4+
class resUsersChild(models.Model):
5+
_inherit = 'res.users'
6+
7+
property_ids = fields.One2many('estate.property', 'salesperson_id', string="sales person", domain="[('state', 'in', ['New', 'Offer Received'])]")
Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
<odoo>
3+
<data>
4+
<record id="res_users_view_form" model="ir.ui.view">
5+
<field name="name">res.users.view.form.inherit.form</field>
6+
<field name="model">res.users</field>
7+
<field name="inherit_id" ref="base.view_users_form"/>
8+
<field name="arch" type="xml">
9+
<xpath expr="//page[@name='page_security']" position="after">
10+
<page string="Real estate properties" name="real estate properties">
11+
<field name="property_ids"/>
12+
</page>
13+
</xpath>
14+
</field>
15+
</record>
16+
</data>
17+
</odoo>

0 commit comments

Comments
 (0)