Skip to content

Commit 60bfa6c

Browse files
committed
[IMP] estate: Inheritance
1 parent dae9bd4 commit 60bfa6c

File tree

6 files changed

+44
-0
lines changed

6 files changed

+44
-0
lines changed

estate/__manifest__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
'views/estate_property_offer_views.xml',
1616
'views/estate_property_type_views.xml',
1717
'views/estate_property_tag_views.xml',
18+
'views/estate_user_views.xml',
1819
'views/estate_menus.xml',
1920
],
2021
}

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 estate_user

estate/models/estate_property.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,12 @@ def _check_selling_price(self):
9999
):
100100
raise ValidationError("Selling price cannot be lower than 90% of expected price")
101101

102+
@api.ondelete(at_uninstall=False)
103+
def _unlink_if_new_or_cancelled(self):
104+
for record in self:
105+
if record.state not in ['new', 'cancelled']:
106+
raise UserError(f"Can't delete property in {record.state} state")
107+
102108
def action_mark_as_sold(self):
103109
for record in self:
104110
if record.state == 'cancelled':

estate/models/estate_property_offer.py

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,16 @@ def _compute_deadline(self):
3434
created_date, days=record.validity,
3535
)
3636

37+
@api.model
38+
def create(self, val_lists):
39+
for vals in val_lists:
40+
linked_property = self.env['estate.property'].browse(vals['property_id'])
41+
if vals['price'] < linked_property.best_price:
42+
raise UserError(f'Offer price cannot be lower than existing offers')
43+
44+
linked_property.state = 'offer_received'
45+
return super().create(val_lists)
46+
3747
def _inverse_deadline(self):
3848
for record in self:
3949
created_date = record.create_date.date() or fields.Date.today()

estate/models/estate_user.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
from odoo import api, fields, models
2+
3+
4+
class EstateUser(models.Model):
5+
_inherit = 'res.users'
6+
7+
property_ids = fields.One2many(
8+
'estate.property', 'salesperson_id', string='Real Estate Properties',
9+
)

estate/views/estate_user_views.xml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<odoo>
2+
<record id="estate_user_view_form" model="ir.ui.view">
3+
<field name="name">res.users.view.form.estate</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="Real Estate Properties">
9+
<field
10+
name="property_ids"
11+
filter_domain="['|', (property_ids.state, '=', 'new'), (property_ids.state, '=', 'offer_received')]"
12+
/>
13+
</page>
14+
</notebook>
15+
</field>
16+
</record>
17+
</odoo>

0 commit comments

Comments
 (0)