Skip to content

Commit 9a66bbf

Browse files
committed
[ADD] estate: added all sprinkles
1 parent d546346 commit 9a66bbf

9 files changed

+44
-33
lines changed

estate/__manifest__.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@
1919
'data': [
2020
'security/ir.model.access.csv',
2121
'views/estate_property_views.xml',
22+
'views/estate_property_offer_views.xml',
2223
'views/estate_property_type_views.xml',
2324
'views/estate_property_tag_views.xml',
24-
'views/estate_property_offer_views.xml',
2525
'views/estate_menus.xml',
2626
],
2727
'assets': {

estate/models/estate_property_offer.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ class EstatePropertyOffer(models.Model):
1919
property_id = fields.Many2one('estate.property', required=True)
2020
validity = fields.Integer(string="Validity (days)", default=7)
2121
date_deadline = fields.Date(compute="_compute_date_deadline", inverse="_inverse_date_deadline")
22+
property_type_id = fields.Many2one(related="property_id.property_type_id")
2223

2324
_offer_price_strictly_positive = models.Constraint(
2425
'CHECK(price > 0)',
@@ -40,6 +41,7 @@ def accept_offer(self):
4041
record.status = 'accepted'
4142
record.property_id.selling_price = record.price
4243
record.property_id.buyer = record.partner_id
44+
record.property_id.state = 'offer accepted'
4345
record.property_id.offer_accepted = True
4446
else:
4547
raise(UserError("Can not accept more than one offer"))

estate/models/estate_property_tag.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ class EstatePropertyTag(models.Model):
88

99
name = fields.Char('Tag', required=True)
1010
description = fields.Char('Description')
11+
color = fields.Integer()
1112

1213
_unique_tag = models.Constraint(
1314
'UNIQUE(name)',
Lines changed: 10 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,25 +1,24 @@
1-
from odoo import fields, models
1+
from odoo import fields, models, api
22

33

44
class EstatePropertyType(models.Model):
55
_name = "estate.property.type"
66
_description = "Estate Property Type"
7-
_order = 'name'
7+
_order = 'sequence, name, id'
88

99
name = fields.Char('Type', required=True)
1010
description = fields.Text()
11-
property_type_line_ids = fields.One2many('estate.property.type.line', 'name')
11+
property_ids = fields.One2many('estate.property', 'property_type_id')
12+
sequence = fields.Integer('Sequence', default=1)
13+
offer_ids = fields.One2many('estate.property.offer', 'property_type_id')
14+
offer_count = fields.Integer(compute="_computer_offers_count")
1215

1316
_unique_type = models.Constraint(
1417
'UNIQUE(name)',
1518
'Property type name exists'
1619
)
1720

18-
class EstatePropertyTypeLine(models.Model):
19-
_name = 'estate.property.type.line'
20-
_description = 'estate property view per type'
21-
22-
name = fields.Many2one('estate.property.type')
23-
title = fields.Char()
24-
expected_price = fields.Char()
25-
state = fields.Char()
21+
@api.depends("offer_ids")
22+
def _compute_offers_count(self):
23+
for record in self:
24+
record.offer_count = len(record.offer_ids)

estate/security/ir.model.access.csv

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,4 +3,3 @@ access_estate_property_tag,estate.property.tag,model_estate_property_tag,base.gr
33
access_estate_property,estate.property,model_estate_property,base.group_user,1,1,1,1
44
access_estate_property_type,estate.property.type,model_estate_property_type,base.group_user,1,1,1,1
55
access_estate_property_offer,estate.property.offer,model_estate_property_offer,base.group_user,1,1,1,1
6-
access_estate_property_type_line,estate.property.type.line,model_estate_property_type_line,base.group_user,1,1,1,1

estate/views/estate_property_offer_views.xml

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,6 @@
1313
<field name="partner_id" string="Partner id"/>
1414
<field name="validity" string="Valid until"/>
1515
<field name="date_deadline" string="Deadline"/>
16-
<field name="status" string="Status"/>
1716
</h1>
1817
</group>
1918
</sheet>
@@ -25,16 +24,21 @@
2524
<field name="name">estate.property.offer.list</field>
2625
<field name="model">estate.property.offer</field>
2726
<field name="arch" type="xml">
28-
<list>
27+
<list editable="top" decoration-success="status == 'accepted'" decoration-danger="status == 'refused'">
2928
<field name="price"/>
3029
<field name="partner_id"/>
3130
<field name="validity"/>
3231
<field name="date_deadline"/>
33-
<button name="accept_offer" string="Accept" type="object" icon="fa-check"/>
34-
<button name="reject_offer" string="Reject" type="object" icon="fa-times"/>
35-
<field name="status"/>
32+
<button name="accept_offer" string="Accept" type="object" invisible="status in ('accepted', 'refused')" icon="fa-check"/>
33+
<button name="reject_offer" string="Reject" type="object" invisible="status in ('accepted', 'refused')" icon="fa-times"/>
3634
</list>
3735
</field>
3836
</record>
3937

38+
<record id="estate_property_offer_action" model="ir.actions.act_window">
39+
<field name="name">Offers</field>
40+
<field name="res_model">estate.property.offer</field>
41+
<field name="view_mode">list</field>
42+
</record>
43+
4044
</odoo>

estate/views/estate_property_tag_views.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@
1111
<field name="name">estate.property.tag.list</field>
1212
<field name="model">estate.property.tag</field>
1313
<field name="arch" type="xml">
14-
<list>
14+
<list editable="top">
1515
<field name="name"/>
1616
<field name="description"/>
1717
</list>

estate/views/estate_property_type_views.xml

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@
1212
<field name="model">estate.property.type</field>
1313
<field name="arch" type="xml">
1414
<list>
15+
<field name="sequence" widget="handle"/>
1516
<field name="name"/>
1617
<field name="description"/>
1718
</list>
@@ -24,16 +25,20 @@
2425
<field name="arch" type="xml">
2526
<form>
2627
<sheet>
28+
<div class="oe_button_box" name="button_box">
29+
<button name="%(estate.estate_property_offer_action)d" class="oe_stat_button"
30+
icon="fa-money" string="offers" type="action" context="{'search_default_property_type_id': id}"/>
31+
</div>
2732
<group>
2833
<h1>
2934
<field name="name"/>
3035
</h1>
3136
</group>
3237
<notebook>
3338
<page string="Properties">
34-
<field name="property_type_line_ids">
39+
<field name="property_ids">
3540
<list>
36-
<field name="title"/>
41+
<field name="name"/>
3742
<field name="expected_price"/>
3843
<field name="state"/>
3944
</list>

estate/views/estate_property_views.xml

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
<field name="name">Properties</field>
55
<field name="res_model">estate.property</field>
66
<field name="view_mode">list,form</field>
7+
<field name="context">{'search_default_available': True, 'search_default_current': True}</field>
78
</record>
89

910
<record id="estate_property_view_search" model="ir.ui.view">
@@ -15,9 +16,9 @@
1516
<field name="postcode"/>
1617
<field name="expected_price"/>
1718
<field name="bedrooms"/>
18-
<field name="living_area"/>
19+
<field name="living_area" filter_domain="[('living_area', '>=', self)]"/>
1920
<field name="facades"/>
20-
<filter string="Available" name="available properties" domain="[ ('state', 'in', ['new', 'offer received']) ]"/>
21+
<filter string="Available" name="available" domain="[ ('state', 'in', ['new', 'offer received']) ]"/>
2122
<filter string="Postcode" name="postcode" context="{'group_by':'postcode', 'residual_visible':True}"/>
2223
</search>
2324
</field>
@@ -27,15 +28,15 @@
2728
<field name="name">estate.property.list</field>
2829
<field name="model">estate.property</field>
2930
<field name="arch" type="xml">
30-
<list string="Channel">
31+
<list string="Channel" decoration-muted="state == 'sold'" decoration-success="state in ('offer received', 'offer accepted')" decoration-bf="state == 'offer accepted'">
3132
<field name="name"/>
3233
<field name="postcode"/>
3334
<field name="bedrooms"/>
3435
<field name="living_area"/>
3536
<field name="expected_price"/>
3637
<field name="selling_price"/>
37-
<field name="date_availability"/>
38-
<field name="tag_ids" widget="many2many_tags"/>
38+
<field name="date_availability" optional="hide"/>
39+
<field name="tag_ids" widget="many2many_tags" options="{'color_field': 'color'}"/>
3940
<field name="total_area"/>
4041
</list>
4142
</field>
@@ -47,8 +48,8 @@
4748
<field name="arch" type="xml">
4849
<form string="property">
4950
<header>
50-
<button name="set_property_sold" type="object" string="SOLD"/>
51-
<button name="set_property_cancelled" type="object" string="CANCEL"/>
51+
<button name="set_property_sold" type="object" string="SOLD" invisible="state in ('sold', 'cancelled')"/>
52+
<button name="set_property_cancelled" type="object" string="CANCEL" invisible="state in ('sold', 'cancelled')"/>
5253
<field name="state" widget="statusbar" statusbar_visible="new, offer received, offer accepted, sold"/>
5354
</header>
5455
<sheet>
@@ -58,11 +59,11 @@
5859
</h1>
5960
</group>
6061
<group>
61-
<field name="tag_ids" widget="many2many_tags"/>
62+
<field name="tag_ids" widget="many2many_tags" options="{'color_field': 'color'}"/>
6263
</group>
6364
<group>
6465
<group>
65-
<field name="property_type_id"/>
66+
<field name="property_type_id" options="{'no_create': true, 'no_create_edit': true}"/>
6667
<field name="postcode"/>
6768
<field name="date_availability"/>
6869
</group>
@@ -81,14 +82,14 @@
8182
<field name="facades"/>
8283
<field name="garage"/>
8384
<field name="garden"/>
84-
<field name="garden_area"/>
85-
<field name="garden_orientation"/>
85+
<field name="garden_area" invisible="not garden"/>
86+
<field name="garden_orientation" invisible="not garden"/>
8687
<field name="total_area"/>
8788
</group>
8889
</page>
8990
<page string="Offers">
9091
<group>
91-
<field name="offer_ids"/>
92+
<field name="offer_ids" readonly="state in ('sold', 'offer received', 'cancelled')"/>
9293
</group>
9394
</page>
9495
<page name="notes" string="Notes">

0 commit comments

Comments
 (0)