Skip to content

Commit 65fe366

Browse files
committed
[IMP] estate: change property state upon creation of offer and add properties assigned to salesman in the users form
1 parent 783a0a0 commit 65fe366

File tree

6 files changed

+46
-9
lines changed

6 files changed

+46
-9
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_type_views.xml',
1010
'views/estate_property_views.xml',
1111
'views/estate_menus.xml',
12+
'views/res_users_views.xml',
1213
],
1314
'installable': True,
1415
'application': True,

estate/models/__init__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
from . import property, property_offer, property_tag, property_type
1+
from . import property, property_offer, property_tag, property_type, res_users

estate/models/property.py

Lines changed: 9 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@
88
class Property(models.Model):
99
_name = 'estate.property'
1010
_description = "Estate property"
11-
_order = "id desc"
11+
_order = 'id desc'
1212

1313
name = fields.Char(string="Title", required=True)
1414
description = fields.Text()
@@ -73,13 +73,6 @@ def _onchange_garden(self):
7373
self.garden_area = 10 if self.garden else 0
7474
self.garden_orientation = 'north' if self.garden else ''
7575

76-
@api.onchange('offer_ids')
77-
def _onchange_state(self):
78-
if not self.offer_ids:
79-
return
80-
81-
self.state = 'offer_received'
82-
8376
@api.constrains('selling_price', 'expected_price')
8477
def _check_selling_price(self):
8578
for record in self:
@@ -107,3 +100,11 @@ def action_set_cancelled(self):
107100

108101
self.state = 'cancelled'
109102
return True
103+
104+
@api.ondelete(at_uninstall=False)
105+
def _unlink_except_new_or_cancelled(self):
106+
for record in self:
107+
if record.state not in ['new', 'cancelled']:
108+
raise UserError(
109+
self.env._("Only new and cancelled properties can be deleted.")
110+
)

estate/models/property_offer.py

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
from dateutil.relativedelta import relativedelta
22

33
from odoo import api, fields, models
4+
from odoo.exceptions import UserError
45

56

67
class PropertyOffer(models.Model):
@@ -46,3 +47,15 @@ def action_confirm(self):
4647
def action_refuse(self):
4748
self.status = 'refused'
4849
return True
50+
51+
@api.model_create_multi
52+
def create(self, vals):
53+
for record in vals:
54+
property = self.env['estate.property'].browse(record['property_id'])
55+
min_price = min(property.offer_ids.mapped('price')) if property.offer_ids else 0.0
56+
if record['price'] < min_price:
57+
raise UserError(self.env._("The offer must be higher than %d.", min_price))
58+
59+
property.state = 'offer_received'
60+
61+
return super(PropertyOffer, self).create(vals)

estate/models/res_users.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 ResUsers(models.Model):
5+
_inherit = 'res.users'
6+
7+
property_ids = fields.One2many('estate.property', 'user_id', string="Properties", domain="[('active', '=', 'True')]")

estate/views/res_users_views.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="res_users_view_form_test" model="ir.ui.view">
4+
<field name="name">res.users.view.form.inherit.estate</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+
<notebook position="inside">
9+
<page name="Properties">
10+
<field name="property_ids" readonly="True"/>
11+
</page>
12+
</notebook>
13+
</field>
14+
</record>
15+
</odoo>

0 commit comments

Comments
 (0)