Skip to content

Commit ed5ba1c

Browse files
[IMP] estate : Server101 Finished Chapter 12
[FIX] estate: Fixed bug where the stat button from property type to property offer would crash on new install of the estate module
1 parent 090b2e9 commit ed5ba1c

File tree

7 files changed

+44
-3
lines changed

7 files changed

+44
-3
lines changed

estate/__manifest__.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -9,10 +9,11 @@
99
'application': True,
1010
'data': [
1111
'views/estate_property_views.xml',
12+
'views/estate_property_offer_views.xml',
1213
'views/estate_property_type_views.xml',
1314
'views/estate_property_tag_views.xml',
14-
'views/estate_property_offer_views.xml',
1515
'views/estate_menu_views.xml',
16+
'views/res_user_views.xml',
1617
'security/ir.model.access.csv'],
1718
'author': 'Odoo S.A.',
1819
'license': 'LGPL-3'

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_user

estate/models/estate_property.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -88,3 +88,9 @@ def _constrain_prices(self):
8888
continue
8989
if (float_compare(record.selling_price, record.expected_price * 0.8, 2) == -1):
9090
raise ValidationError(f"Selling price is too low {record.selling_price}")
91+
92+
@api.ondelete(at_uninstall=False)
93+
def _unlink_excpet_cancel_new(self):
94+
for record in self:
95+
if (record.state != 'new' and record.state != 'cancel'):
96+
raise UserError("Can't delete non-new and non-cancelled property")

estate/models/estate_property_offer.py

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
from datetime import datetime, time
22
from dateutil.relativedelta import relativedelta
33
from odoo import fields, models, api
4+
from odoo.exceptions import UserError
5+
from odoo.tools.float_utils import float_compare
46

57

68
class EstatePropertyOffer(models.Model):
@@ -21,7 +23,6 @@ class EstatePropertyOffer(models.Model):
2123
validity = fields.Integer(string="Validity Duration", default=7)
2224
date_deadline = fields.Date(string="Deadline", compute="_compute_date_deadline", inverse="_inverse_date_deadline")
2325

24-
2526
def accept_offer(self):
2627
for record in self:
2728
if (record.property_id.selling_price == 0):
@@ -47,3 +48,12 @@ def _compute_date_deadline(self):
4748
def _inverse_date_deadline(self):
4849
for record in self:
4950
record.validity = (datetime.combine(record.date_deadline, time()) - record.create_date).days
51+
52+
@api.model
53+
def create(self, vals_list):
54+
for record in vals_list:
55+
property = self.env['estate.property'].browse(record['property_id'])
56+
if (float_compare(record['price'], property.best_price, 2) == -1):
57+
raise UserError("This offer is lower than what has already been offered.")
58+
property.state = 'offer_received'
59+
return super().create(vals_list)

estate/models/res_user.py

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,6 @@
1+
from odoo import models, fields
2+
3+
4+
class ResUsers(models.Model):
5+
_inherit = 'res.users'
6+
property_ids = fields.One2many("estate.property", "seller_id", domain="['|',('state','=','Offer_Received'),('state','=','New')]")

estate/views/estate_property_type_views.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
<form string="Property type Form">
1515
<sheet>
1616
<div class="oe_stat_button">
17-
<button name="estate.estate_property_offer_model_action" string="Offers" type="action"/>
17+
<button name="%(estate.estate_property_offer_model_action)d" string="Offers" type="action"/>
1818
</div>
1919
<group>
2020
<h1 class="mb32">

estate/views/res_user_views.xml

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
<odoo>
2+
<data>
3+
4+
<record id="res_users_view_form" model="ir.ui.view">
5+
<field name="name">res.users.view.form.inherit.estate</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+
<notebook position="inside">
10+
<page name="properties" string="Real Estate Properties">
11+
<field name="property_ids"/>
12+
</page>
13+
</notebook>
14+
</field>
15+
</record>
16+
</data>
17+
</odoo>

0 commit comments

Comments
 (0)