Skip to content

Commit c501952

Browse files
committed
[IMP] estate: Adding inheritance
1 parent d31c05f commit c501952

5 files changed

Lines changed: 47 additions & 2 deletions

File tree

estate/models/__init__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,4 +5,5 @@
55
estate_property_offer,
66
estate_property_tag,
77
estate_property_type,
8+
inherited_model,
89
)

estate/models/estate_property.py

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -99,3 +99,10 @@ def _check_price_offer(self):
9999
if float_compare(selling_price, expected_price * 0.9, precision_digits=2) < 0:
100100
error_msg = "The selling price should be at least 90% of the expected price."
101101
raise ValidationError(error_msg)
102+
103+
@api.ondelete(at_uninstall=False)
104+
def _unlink_check_state(self):
105+
for record in self:
106+
if record.state != 'new' and record.state != 'canceled':
107+
error_msg = "Only properties in 'New' or 'Canceled' status can be deleted."
108+
raise UserError(error_msg)

estate/models/estate_property_offer.py

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
from datetime import timedelta
44

55
from odoo import api, fields, models
6+
from odoo.exceptions import ValidationError
67

78

89
class EstatePropertyOffer(models.Model):
@@ -16,7 +17,7 @@ class EstatePropertyOffer(models.Model):
1617
selection=[('accepted', 'Accepted'), ('refused', 'Refused')],
1718
copy=False)
1819
partner_id = fields.Many2one('res.partner', string='Partner', required=True)
19-
property_id = fields.Many2one('estate.property', string='Property', required=True)
20+
property_id = fields.Many2one('estate.property', string='Property', required=True, ondelete='cascade')
2021
validity = fields.Integer('Validity (days)', default=7)
2122
date_deadline = fields.Date('Deadline', compute='_compute_date_deadline', inverse='_inverse_date_deadline')
2223
property_type_id = fields.Many2one(related='property_id.property_type_id', store=True)
@@ -48,3 +49,17 @@ def action_refuse_offer(self):
4849
'CHECK(price > 0)',
4950
'The price of an offer should be strictly positive.',
5051
)
52+
53+
@api.model
54+
def create(self, vals):
55+
if len(vals) == 0:
56+
return super().create(vals)
57+
property_id = vals[0].get('property_id')
58+
price = vals[0].get('price')
59+
if property_id and price:
60+
property_record = self.env['estate.property'].browse(property_id)
61+
if property_record.best_price and price <= property_record.best_price:
62+
error_msg = "The offer price should be higher than the best offer of the property."
63+
raise ValidationError(error_msg)
64+
property_record.state = 'offer_received'
65+
return super().create(vals)

estate/models/inherited_model.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
# Part of Odoo. See LICENSE file for full copyright and licensing details.
2+
3+
from odoo import fields, models
4+
5+
6+
class UsersInherited(models.Model):
7+
_inherit = 'res.users'
8+
9+
property_ids = fields.One2many('estate.property', 'seller_id', string='Properties for Sale', domain="['|',('state', '=', 'new'),('state', '=', 'offer_received')]")

estate/views/estate_form_views.xml

Lines changed: 14 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -112,7 +112,7 @@
112112
<field name="name">estate.offer.form</field>
113113
<field name="model">estate.property.offer</field>
114114
<field name="arch" type="xml">
115-
<form string="Property Tag Form">
115+
<form string="Property Offer Form">
116116
<sheet>
117117
<group>
118118
<field name="price"/>
@@ -125,4 +125,17 @@
125125
</form>
126126
</field>
127127
</record>
128+
129+
<record id="res_users_view_form" model="ir.ui.view">
130+
<field name="name">res.users.form.inherit.estate</field>
131+
<field name="model">res.users</field>
132+
<field name="inherit_id" ref="base.view_users_form"/>
133+
<field name="arch" type="xml">
134+
<notebook position="inside">
135+
<page name="estate_properties" string="Real Estate Properties">
136+
<field name="property_ids"/>
137+
</page>
138+
</notebook>
139+
</field>
140+
</record>
128141
</odoo>

0 commit comments

Comments
 (0)