Skip to content

Commit e215da5

Browse files
committed
[IMP] estate: Kanban view added
[FIX] Fixed Error
1 parent b00ff55 commit e215da5

15 files changed

+106
-123
lines changed

estate/__init__.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
# --coding: utf-8 --
21
# Part of Odoo. See LICENSE file for full copyright and licensing details.
32

43
from . import models

estate/demo/estate_property_demo.xml

Lines changed: 6 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -6,16 +6,14 @@
66
<field name="description">A nice and big villa</field>
77
<field name="postcode">12345</field>
88
<field name="date_avaiblity">2020-02-02</field>
9-
<field name="expected_price">1600000</field>
10-
<field name="selling_price"></field>
9+
<field name="expected_price">1600000.0</field>
1110
<field name="bedrooms">6</field>
1211
<field name="living_area">100</field>
1312
<field name="facades">4</field>
1413
<field name="garage">1</field>
1514
<field name="garden">1</field>
1615
<field name="garden_area">100000</field>
1716
<field name="garden_orientation">south</field>
18-
<field name="property_type_id" ref="property_type_residential"/>
1917
</record>
2018

2119
<record id="estate_property_demo_2" model="estate.property">
@@ -24,46 +22,28 @@
2422
<field name="description">Home in trailer park.</field>
2523
<field name="postcode">54321</field>
2624
<field name="date_avaiblity">1970-01-01</field>
27-
<field name="expected_price">100000</field>
28-
<field name="selling_price">120000</field>
25+
<field name="expected_price">100000.00</field>
26+
<field name="selling_price">120000.00</field>
2927
<field name="bedrooms">1</field>
3028
<field name="living_area">10</field>
3129
<field name="facades">4</field>
3230
<field name="garage">0</field>
33-
<field name="property_type_id" ref="property_type_residential"/>
34-
</record>
35-
36-
<record id="estate_property_demo_2" model="estate.property">
37-
<field name="name">Trailer House</field>
38-
<field name="state">cancelled</field>
39-
<field name="description">Home in trailer court.</field>
40-
<field name="postcode">54321</field>
41-
<field name="date_avaiblity">1970-01-01</field>
42-
<field name="expected_price">1000000</field>
43-
<field name="selling_price">1200000</field>
44-
<field name="bedrooms">6</field>
45-
<field name="living_area">1000</field>
46-
<field name="facades">4</field>
47-
<field name="garage">0</field>
4831
<field name="offer_ids"
4932
eval="[
5033
Command.create({
5134
'partner_id': ref('base.res_partner_2'),
52-
'price': 10000,
35+
'price': 1500002,
5336
'validity': 14,
54-
'date_deadline': (DateContext().today() + relativedelta(days=14)).isoformat(),
5537
}),
5638
Command.create({
5739
'partner_id': ref('base.res_partner_2'),
58-
'price': 1500000,
40+
'price': 1500003,
5941
'validity': 14,
60-
'date_deadline': (DateContext().today() + relativedelta(days=14)).isoformat(),
6142
}),
6243
Command.create({
6344
'partner_id': ref('base.res_partner_3'),
64-
'price': 1500001,
45+
'price': 1500004,
6546
'validity': 11,
66-
'date_deadline': (DateContext().today() + relativedelta(days=11)).isoformat(),
6747
}),
6848
]" />
6949
</record>

estate/models/__init__.py

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,3 @@
1-
# --coding: utf-8 --
21
# Part of Odoo. See LICENSE file for full copyright and licensing details.
32

43
from . import estate_property

estate/models/estate_property.py

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
from datetime import date
22
from dateutil.relativedelta import relativedelta
3-
from odoo import fields, models, api
3+
from odoo import api, fields, models
44
from odoo.exceptions import UserError
55

66

@@ -9,30 +9,25 @@ class EstateProperty(models.Model):
99
_description = "Estate Property is defined"
1010
_order = "id desc"
1111
_sql_constraints = [
12-
('check_expectep_price', 'CHECK(expected_price > 0 AND selling_price > 0)',
12+
('check_expected_price', 'CHECK(expected_price > 0 AND selling_price > 0)',
1313
'The Price must be positve.')
1414
]
1515

1616
name = fields.Char(required=True)
17-
description = fields.Text()
18-
postcode = fields.Char()
17+
description = fields.Text(string='Description')
18+
postcode = fields.Char(string='Postcode')
1919
date_avaiblity = fields.Date(copy=False, default=date.today() + relativedelta(months=3))
2020
expected_price = fields.Float(required=True)
2121
selling_price = fields.Float(readonly=True, copy=False)
2222
bedrooms = fields.Integer(default=2)
23-
living_area = fields.Integer()
24-
facades = fields.Integer()
25-
garage = fields.Boolean()
26-
garden = fields.Boolean()
27-
garden_area = fields.Integer()
23+
living_area = fields.Integer(string='Living Area')
24+
facades = fields.Integer(string='Facades')
25+
garage = fields.Boolean(string='Garage')
26+
garden = fields.Boolean(string='Garden')
27+
garden_area = fields.Integer(string='Garden Area')
2828
property_type_id = fields.Many2one("estate.property.type", string="Property Type")
2929
salesman_id = fields.Many2one('res.users', string='Salesman', index=True, default=lambda self: self.env.user)
30-
buyer_id = fields.Many2one(
31-
'res.partner',
32-
string='Buyer',
33-
index=True,
34-
default=lambda self: self.env.user.partner_id.id
35-
)
30+
buyer_id = fields.Many2one('res.partner', string='Buyer', index=True, default=lambda self: self.env.user.partner_id.id)
3631
property_tag_ids = fields.Many2many("estate.property.tag")
3732
offer_ids = fields.One2many("estate.property.offer", "property_id", string="Offers")
3833
total_area = fields.Float(compute="_compute_total")

estate/models/estate_property_offer.py

Lines changed: 14 additions & 26 deletions
Original file line numberDiff line numberDiff line change
@@ -13,17 +13,10 @@ class EstatePropertyOffer(models.Model):
1313
]
1414

1515
price = fields.Float()
16-
partner_id = fields.Many2one(
17-
"res.partner", string='Partner', index=True, default=lambda self: self.env.user.partner_id.id
18-
)
16+
partner_id = fields.Many2one("res.partner", string='Partner', index=True, default=lambda self: self.env.user.partner_id.id)
1917
property_id = fields.Many2one("estate.property", index=True, required=True)
2018
validity = fields.Integer(default=7)
21-
date_deadline = fields.Date(
22-
string="Deadline",
23-
compute="_compute_date_deadline",
24-
inverse="_inverse_date_deadline",
25-
store=True
26-
)
19+
date_deadline = fields.Date(string="Deadline", compute="_compute_date_deadline", inverse="_inverse_date_deadline", store=True)
2720
property_type_id = fields.Many2one('estate.property.type', index=True)
2821

2922
@api.depends('create_date', 'validity')
@@ -38,32 +31,27 @@ def _inverse_date_deadline(self):
3831
if record.date_deadline:
3932
record.validity = (record.date_deadline.day - create_date.day)
4033

41-
status = fields.Selection(
42-
selection=[('accepted', 'Accepted'), ('refused', 'Refuse')],
43-
copy=False,
44-
)
34+
status = fields.Selection(selection=[('accepted', 'Accepted'), ('refused', 'Refuse')], copy=False)
4535

4636
def action_confirm(self):
4737
for record in self:
48-
if any(
49-
offer.status == 'accepted'
50-
for offer in record.property_id.offer_ids
51-
):
38+
if any(offer.status == 'accepted' for offer in record.property_id.offer_ids):
5239
raise UserError("Only one offer can be accepted per property.")
5340
min_price = record.property_id.expected_price * 0.9
5441
if float_compare(record.price, min_price, precision_digits=2) < 0:
5542
raise ValidationError("Offer must be at least 90% of the expected price to be accepted.")
56-
record.status = 'accepted'
57-
record.property_id.state = 'offer accepted'
58-
other_offers = record.property_id.offer_ids - record
59-
other_offers.write({'status': 'refused'})
60-
record.property_id.selling_price = record.price
61-
record.property_id.buyer_id = record.partner_id
43+
record.write({'status': 'accepted'})
44+
record.property_id.write({
45+
'state': 'offer accepted',
46+
'selling_price': record.price,
47+
'buyer_id': record.partner_id.id
48+
})
49+
(record.property_id.offer_ids - record).write({'status': 'refused'})
50+
6251

6352
def action_refuse(self):
6453
for record in self:
6554
record.status = 'refused'
66-
6755

6856
@api.model_create_multi
6957
def create(self, vals_list):
@@ -72,13 +60,13 @@ def create(self, vals_list):
7260
price = vals.get("price", 0.0)
7361
if property_id:
7462
property_obj = self.env["estate.property"].browse(property_id)
75-
best_price = property_obj.best_offer or 0.0
63+
best_price = property_obj.best_price or 0.0
7664
if price < best_price:
7765
raise UserError(
7866
"Offer price must be greater than or equal to the best offer price."
7967
)
8068
records = super().create(vals_list)
8169
for record in records:
8270
if record.partner_id:
83-
record.property_id.state = "offer_received"
71+
record.property_id.state = "offer received"
8472
return records

estate/models/estate_property_tag.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,4 @@ class EstatePropertyTag(models.Model):
1010
]
1111

1212
name = fields.Char(required=True)
13-
color = fields.Integer()
13+
color = fields.Integer(string='Color')

estate/models/estate_property_type.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from odoo import fields, models, api
1+
from odoo import api, fields, models
22

33

44
class EstatePropertyType(models.Model):

estate/models/res_users.py

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
from odoo import models, fields
1+
from odoo import fields, models
22

33

44
class ResUsers(models.Model):

estate/views/estate_property_tag_views.xml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -7,16 +7,16 @@
77
</record>
88

99
<record id = "estate_property_tag_tree" model="ir.ui.view">
10-
<field name = "name">estate.property.tag.list</field>
11-
<field name = "model">estate.property.tag</field>
12-
<field name = "arch" type = "xml">
13-
<list editable = "top">
14-
<field name = "name"/>
10+
<field name="name">estate.property.tag.list</field>
11+
<field name="model">estate.property.tag</field>
12+
<field name="arch" type = "xml">
13+
<list editable="top">
14+
<field name="name"/>
1515
</list>
1616
</field>
1717
</record>
1818

19-
<record id = "estate_property_tag_search" model = "ir.ui.view">
19+
<record id="estate_property_tag_search" model="ir.ui.view">
2020
<field name="name">estate.property.tag.search</field>
2121
<field name="model">estate.property.tag</field>
2222
<field name="arch" type="xml">

estate/views/estate_property_type_views.xml

Lines changed: 9 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,6 @@
1010
<field name="name">Offers</field>
1111
<field name="res_model">estate.property.offer</field>
1212
<field name="view_mode">list,form</field>
13-
<field name="context">{}</field>
1413
<field name="domain">[('property_id.property_type_id', '=', active_id)]</field>
1514
</record>
1615

@@ -20,15 +19,15 @@
2019
<field name="arch" type="xml">
2120
<list string="Properties">
2221
<field name="sequence" widget="handle"/>
23-
<field name = "name" />
22+
<field name="name" />
2423
</list>
2524
</field>
2625
</record>
2726

2827
<record id = "estate_property_type_form" model = "ir.ui.view">
29-
<field name = "name">estate.property.type.form</field>
30-
<field name = "model">estate.property.type</field>
31-
<field name = "arch" type="xml">
28+
<field name="name">estate.property.type.form</field>
29+
<field name="model">estate.property.type</field>
30+
<field name="arch" type="xml">
3231
<form>
3332
<sheet>
3433
<div class="oe_button_box" name="button_box">
@@ -45,22 +44,21 @@
4544
<notebook>
4645
<page string="Properties">
4746

48-
<field name ="property_ids">
47+
<field name="property_ids">
4948
<list>
50-
<field name ="name"/>
51-
<field name ="expected_price" />
52-
<field name ="state" />
49+
<field name="name"/>
50+
<field name="expected_price" />
51+
<field name="state" />
5352
</list>
5453
</field>
55-
5654
</page>
5755
</notebook>
5856
</sheet>
5957
</form>
6058
</field>
6159
</record>
6260

63-
<record id = "estate_property_type_search" model = "ir.ui.view">
61+
<record id="estate_property_type_search" model="ir.ui.view">
6462
<field name="name">estate.property.type.search</field>
6563
<field name="model">estate.property.type</field>
6664
<field name="arch" type="xml">

0 commit comments

Comments
 (0)