Skip to content

Commit a786d01

Browse files
committed
[IMP] estate: chapter 10 (constraints)
1 parent d54574c commit a786d01

File tree

4 files changed

+52
-12
lines changed

4 files changed

+52
-12
lines changed

estate/__manifest__.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
'views/estate_property_views.xml',
1313
'views/estate_property_type_views.xml',
1414
'views/estate_property_tag_views.xml',
15+
'views/estate_property_offer_views.xml',
1516
'views/estate_menus.xml',
1617
],
1718
'demo': [

estate/models/estate_property.py

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
# Part of Odoo. See LICENSE file for full copyright and licensing details.
22

33
from odoo import fields, models, api, exceptions
4+
from odoo.tools.float_utils import float_is_zero, float_compare
45

56

67
class EstateProperty(models.Model):
@@ -39,7 +40,7 @@ class EstateProperty(models.Model):
3940
domain=[('is_company', '=', False)])
4041
salesperson_id = fields.Many2one('res.users', string='Salesperson',
4142
default=lambda self: self.env.user)
42-
offer_ids = fields.Many2many('estate.property.offer', 'property_id', string='Offers')
43+
offer_ids = fields.One2many('estate.property.offer', 'property_id', string='Offers')
4344
total_area = fields.Integer('Total Area (sqm)', compute='_compute_total_area')
4445
best_offer = fields.Float('Best Offer', compute='_compute_best_offer')
4546

@@ -53,6 +54,12 @@ class EstateProperty(models.Model):
5354
'The selling price must be positive',
5455
)
5556

57+
@api.constrains('selling_price', 'expected_price')
58+
def _check_selling_price(self):
59+
for record in self:
60+
if not float_is_zero(record.selling_price, 4) and float_compare(record.selling_price, record.expected_price * 0.9, 4) < 0:
61+
raise exceptions.ValidationError("The selling price must be at least 90% of the expected price.")
62+
5663
@api.depends('garden_area', 'living_area')
5764
def _compute_total_area(self):
5865
for record in self:
Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
<?xml version="1.0"?>
2+
<odoo>
3+
<record id="estate_property_offer_view_form" model="ir.ui.view">
4+
<field name="name">estate.property.offer.view.form</field>
5+
<field name="model">estate.property.offer</field>
6+
<field name="arch" type="xml">
7+
<form string="Estate Property Offer">
8+
<sheet>
9+
<group>
10+
<group>
11+
<field name="price"/>
12+
<field name="partner_id"/>
13+
<field name="property_id"/>
14+
</group>
15+
<group>
16+
<field name="validity"/>
17+
<field name="date_deadline"/>
18+
<field name="status"/>
19+
</group>
20+
</group>
21+
</sheet>
22+
</form>
23+
</field>
24+
</record>
25+
26+
<record id="estate_property_offer_view_list" model="ir.ui.view">
27+
<field name="name">estate.property.offer.view.list</field>
28+
<field name="model">estate.property.offer</field>
29+
<field name="arch" type="xml">
30+
<list string="Estate Property Offer">
31+
<field name="price"/>
32+
<field name="partner_id"/>
33+
<field name="validity"/>
34+
<field name="date_deadline"/>
35+
<field name="status"/>
36+
<button name="action_accept" title="Accept" type="object" icon="fa-check"/>
37+
<button name="action_refuse" title="Refuse" type="object" icon="fa-close"/>
38+
</list>
39+
</field>
40+
</record>
41+
42+
</odoo>

estate/views/estate_property_views.xml

Lines changed: 1 addition & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -70,17 +70,7 @@
7070
</group>
7171
</page>
7272
<page string="Offers">
73-
<field name="offer_ids">
74-
<list>
75-
<field name="price"/>
76-
<field name="partner_id"/>
77-
<field name="validity"/>
78-
<field name="date_deadline"/>
79-
<field name="status"/>
80-
<button name="action_accept" type="object" icon="fa-check"/>
81-
<button name="action_refuse" type="object" icon="fa-close"/>
82-
</list>
83-
</field>
73+
<field name="offer_ids"/>
8474
</page>
8575
<page string="Other Info">
8676
<group>

0 commit comments

Comments
 (0)