Chapter 12

This commit is contained in:
Matt Marcha 2024-07-31 08:54:43 -10:00 committed by Matt Marcha
parent 679ad963c8
commit cfda402ecb
6 changed files with 45 additions and 2 deletions

View file

@ -13,8 +13,9 @@
'views/estate_property_type_views.xml', 'views/estate_property_type_views.xml',
'views/estate_property_tag_views.xml', 'views/estate_property_tag_views.xml',
'views/estate_property_views.xml', 'views/estate_property_views.xml',
'views/res_users_views.xml',
'views/estate_menus_view.xml', 'views/estate_menus_view.xml',
'security/ir.model.access.csv' 'security/ir.model.access.csv',
], ],
'license': 'AGPL-3', 'license': 'AGPL-3',
} }

View file

@ -3,4 +3,5 @@
from . import estate_property from . import estate_property
from . import estate_property_type from . import estate_property_type
from . import estate_property_tag from . import estate_property_tag
from . import estate_property_offer from . import estate_property_offer
from . import res_users

View file

@ -41,6 +41,14 @@ class EstateProperty(models.Model):
total_area = fields.Integer(compute="_get_total_area", readonly=True) total_area = fields.Integer(compute="_get_total_area", readonly=True)
best_price = fields.Float(compute="_compute_best_price") best_price = fields.Float(compute="_compute_best_price")
# ----------------- CRUD methods --------------------------- #
@api.ondelete(at_uninstall=False)
def _unlink_if_new_cancelled(self):
for record in self:
if record.state not in ('new', 'cancelled'):
raise exceptions.UserError("Cannot delete a property not new or cancelled")
# ------------- Compute methods ------------------------- # # ------------- Compute methods ------------------------- #
@api.depends('living_area', 'garden_area') @api.depends('living_area', 'garden_area')

View file

@ -23,6 +23,15 @@ class EstatePropertyOffer(models.Model):
validity = fields.Integer(default=7, string='validity (days)') validity = fields.Integer(default=7, string='validity (days)')
date_deadline = fields.Date(compute="_compute_date_deadline", inverse="_inverse_date_deadline") date_deadline = fields.Date(compute="_compute_date_deadline", inverse="_inverse_date_deadline")
property_type_id = fields.Many2one(related="property_id.property_type_id", store="True") property_type_id = fields.Many2one(related="property_id.property_type_id", store="True")
# ---------------- CRUD Methods ------------------------- #
@api.model
def create(self, vals):
if self.env['estate.property'].browse(vals['property_id']).state == 'new':
self.env['estate.property'].browse(vals['property_id']).write({'state': 'offer_received'})
return super().create(vals)
# ------------- Compute methods ------------------------- # # ------------- Compute methods ------------------------- #

View file

@ -0,0 +1,7 @@
# -*- coding: utf-8 -*-
from odoo import models, fields
class ResUsers(models.Model):
_inherit = 'res.users'
property_ids = fields.One2many(comodel_name="estate.property", inverse_name="salesman_id")

View file

@ -0,0 +1,17 @@
<?xml version="1.0" encoding="utf-8"?>
<odoo>
<record id="res_users_view_form" model="ir.ui.view">
<field name="name">res.users.view.form.inherit.estate</field>
<field name="model">res.users</field>
<field name="inherit_id" ref="base.view_users_form"/>
<field name="arch" type="xml">
<xpath expr="//notebook" position="inside">
<page string="Properties" name="estate">
<tree >
<field name="property_ids" readonly="True" />
</tree>
</page>
</xpath>
</field>
</record>
</odoo>