From fcf9eaafbc96123b8397c05366c98aa11dba68dd Mon Sep 17 00:00:00 2001 From: keman-odoo Date: Wed, 11 Mar 2026 17:12:35 +0530 Subject: [PATCH 01/10] [ADD] implemented new estate module - chapter :2 task - initiated manifest.py [FIX] estate : fixed the errors - added the required white spaces and new line [FIX] Resolve minor mistake [FIX] estate: resolve minor mistake --- estate/__init__.py | 0 estate/__manifest__.py | 10 ++++++++++ estate/models/__init__.py | 0 3 files changed, 10 insertions(+) create mode 100644 estate/__init__.py create mode 100644 estate/__manifest__.py create mode 100644 estate/models/__init__.py diff --git a/estate/__init__.py b/estate/__init__.py new file mode 100644 index 00000000000..e69de29bb2d diff --git a/estate/__manifest__.py b/estate/__manifest__.py new file mode 100644 index 00000000000..a872c7c004c --- /dev/null +++ b/estate/__manifest__.py @@ -0,0 +1,10 @@ +{ + 'name': "Real Estate", + 'version': "0.1.0", + 'author': "keman-odoo", + 'license': "LGPL-3", + 'category': "Tutorials", + 'depends': ['base'], + 'summary': "manage properties, track buyers offers and handle property sales efficiently", + 'sequence': "3", +} diff --git a/estate/models/__init__.py b/estate/models/__init__.py new file mode 100644 index 00000000000..e69de29bb2d From 3e41dec49e152a9290d422bd5a882deb3b9aea08 Mon Sep 17 00:00:00 2001 From: keman-odoo Date: Thu, 12 Mar 2026 16:25:50 +0530 Subject: [PATCH 02/10] [ADD] estate property model - Create estate.property model. - Add basic property fields. - Add garden orientation selection. [FIX] resolve minor issues in estate property model - Fixed minor errors in estate.property model - Corrected small issues from previous commit --- .vscode/settings.json | 3 +++ estate/__init__.py | 1 + estate/models/__init__.py | 1 + estate/models/estate_property.py | 28 ++++++++++++++++++++++++++++ 4 files changed, 33 insertions(+) create mode 100644 .vscode/settings.json create mode 100644 estate/models/estate_property.py diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 00000000000..ff5300ef481 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "python.languageServer": "None" +} \ No newline at end of file diff --git a/estate/__init__.py b/estate/__init__.py index e69de29bb2d..0650744f6bc 100644 --- a/estate/__init__.py +++ b/estate/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/estate/models/__init__.py b/estate/models/__init__.py index e69de29bb2d..5e1963c9d2f 100644 --- a/estate/models/__init__.py +++ b/estate/models/__init__.py @@ -0,0 +1 @@ +from . import estate_property diff --git a/estate/models/estate_property.py b/estate/models/estate_property.py new file mode 100644 index 00000000000..2a0b85021ca --- /dev/null +++ b/estate/models/estate_property.py @@ -0,0 +1,28 @@ +from odoo import models, fields + + +class EstateProperty(models.Model): + _name = "estate.property" + _description = " Real estate Property" + + name = fields.Char(required=True) + description = fields.Text() + postcode = fields.Char() + date_availability = fields.Date() + expected_price = fields.Float(required=True) + selling_price = fields.Float() + bedrooms = fields.Integer() + living_area = fields.Integer() + facades = fields.Integer() + garage = fields.Boolean() + garden = fields.Boolean() + garden_area = fields.Integer() + garden_orientation = fields.Selection( + [ + ('north', 'North'), + ('south', 'South'), + ('east', 'East'), + ('west', 'West') + ], + string="Garden Orientation" + ) From 9daca4f51e9ad056f8e64c086ebf855b480bb9c3 Mon Sep 17 00:00:00 2001 From: keman-odoo Date: Thu, 12 Mar 2026 18:36:36 +0530 Subject: [PATCH 03/10] [IMP] estate: add access rights for estate.property model - Created security/ir.model.access.csv - Added the access file to __manifest__.py --- estate/__manifest__.py | 4 ++++ estate/security/ir.model.access.csv | 2 ++ 2 files changed, 6 insertions(+) create mode 100644 estate/security/ir.model.access.csv diff --git a/estate/__manifest__.py b/estate/__manifest__.py index a872c7c004c..a8ea89893d9 100644 --- a/estate/__manifest__.py +++ b/estate/__manifest__.py @@ -7,4 +7,8 @@ 'depends': ['base'], 'summary': "manage properties, track buyers offers and handle property sales efficiently", 'sequence': "3", + 'data': [ + 'security/ir.model.access.csv', + ], } + diff --git a/estate/security/ir.model.access.csv b/estate/security/ir.model.access.csv new file mode 100644 index 00000000000..bc285aa83b2 --- /dev/null +++ b/estate/security/ir.model.access.csv @@ -0,0 +1,2 @@ +id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink +access_test_model,access_test_model,model_test_model,base.group_user,1,0,0,0 \ No newline at end of file From 3beeef52dfb30156c7a9b6ac2d9cb94fcb27763b Mon Sep 17 00:00:00 2001 From: keman-odoo Date: Fri, 13 Mar 2026 10:38:21 +0530 Subject: [PATCH 04/10] [FIX] resolve security access and module loading issues - - Ensured estate.property model is properly defined --- estate/__manifest__.py | 1 - estate/security/ir.model.access.csv | 4 ++-- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/estate/__manifest__.py b/estate/__manifest__.py index a8ea89893d9..08dc9fce6f8 100644 --- a/estate/__manifest__.py +++ b/estate/__manifest__.py @@ -11,4 +11,3 @@ 'security/ir.model.access.csv', ], } - diff --git a/estate/security/ir.model.access.csv b/estate/security/ir.model.access.csv index bc285aa83b2..32389642d4f 100644 --- a/estate/security/ir.model.access.csv +++ b/estate/security/ir.model.access.csv @@ -1,2 +1,2 @@ -id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink -access_test_model,access_test_model,model_test_model,base.group_user,1,0,0,0 \ No newline at end of file +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_estate_property,access_estate_property,model_estate_property,base.group_user,1,1,1,1 From 764c9d8a7ee82dd3f0af6e85c2f7573f0be6ab80 Mon Sep 17 00:00:00 2001 From: keman-odoo Date: Fri, 13 Mar 2026 19:14:20 +0530 Subject: [PATCH 05/10] [ADD] estate: estate module UI (views, actions, menus) - Added tree and form views for estate.property - Chapter - 5 - Added menu items for estate module - Completed First UI tutorial exercise --- estate/__manifest__.py | 2 ++ estate/models/estate_property.py | 23 +++++++++++++++++++---- estate/views/estate_menus.xml | 14 ++++++++++++++ estate/views/estate_property_views.xml | 9 +++++++++ 4 files changed, 44 insertions(+), 4 deletions(-) create mode 100644 estate/views/estate_menus.xml create mode 100644 estate/views/estate_property_views.xml diff --git a/estate/__manifest__.py b/estate/__manifest__.py index 08dc9fce6f8..108b60d9643 100644 --- a/estate/__manifest__.py +++ b/estate/__manifest__.py @@ -9,5 +9,7 @@ 'sequence': "3", 'data': [ 'security/ir.model.access.csv', + 'views/estate_property_views.xml', + 'views/estate_menus.xml', ], } diff --git a/estate/models/estate_property.py b/estate/models/estate_property.py index 2a0b85021ca..536e575b729 100644 --- a/estate/models/estate_property.py +++ b/estate/models/estate_property.py @@ -1,22 +1,25 @@ from odoo import models, fields +from dateutil.relativedelta import relativedelta class EstateProperty(models.Model): _name = "estate.property" _description = " Real estate Property" - name = fields.Char(required=True) + name = fields.Char(required=True, default="UNKNOWN") description = fields.Text() postcode = fields.Char() - date_availability = fields.Date() + date_availability = fields.Date( + default=lambda self: fields.Date.today() + relativedelta(months=+3), copy=False) expected_price = fields.Float(required=True) - selling_price = fields.Float() - bedrooms = fields.Integer() + selling_price = fields.Float(readonly=True, copy=False) + bedrooms = fields.Integer(default=2) living_area = fields.Integer() facades = fields.Integer() garage = fields.Boolean() garden = fields.Boolean() garden_area = fields.Integer() + active = fields.Boolean(default=True) garden_orientation = fields.Selection( [ ('north', 'North'), @@ -26,3 +29,15 @@ class EstateProperty(models.Model): ], string="Garden Orientation" ) + state = fields.Selection( + [ + ('new', 'New'), + ('offer_received', 'Offer Received'), + ('offer_accepted', 'Offer Accepted'), + ('sold', 'Sold'), + ('cancelled', 'Cancelled'), + ], + default='new', + copy=False, + required=True, + ) diff --git a/estate/views/estate_menus.xml b/estate/views/estate_menus.xml new file mode 100644 index 00000000000..d2025937b79 --- /dev/null +++ b/estate/views/estate_menus.xml @@ -0,0 +1,14 @@ + + + + + + + + + diff --git a/estate/views/estate_property_views.xml b/estate/views/estate_property_views.xml new file mode 100644 index 00000000000..911523488a5 --- /dev/null +++ b/estate/views/estate_property_views.xml @@ -0,0 +1,9 @@ + + + + Properties + estate.property + list,form + + + From 53850204f66719d12306d6a4859502ab5836d814 Mon Sep 17 00:00:00 2001 From: keman-odoo Date: Mon, 16 Mar 2026 18:12:30 +0530 Subject: [PATCH 06/10] [ADD] estate: property list, form and search views with filters - Add list, form and search views for estate.property with Available filter and Group By Postcode (Chapter 6) --- estate/views/estate_property_views.xml | 94 ++++++++++++++++++++++++++ 1 file changed, 94 insertions(+) diff --git a/estate/views/estate_property_views.xml b/estate/views/estate_property_views.xml index 911523488a5..61c004397ba 100644 --- a/estate/views/estate_property_views.xml +++ b/estate/views/estate_property_views.xml @@ -6,4 +6,98 @@ list,form + + estate.property.list + estate.property + + + + + + + + + + + + + + + estate.property.form + estate.property + +
+ + +

+ +

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + + estate.property.search + estate.property + + + + + + + + + + + + + + + + + + + + From 6f729bd79484805ec77c86873cf0555a59d9394f Mon Sep 17 00:00:00 2001 From: keman-odoo Date: Tue, 17 Mar 2026 19:25:42 +0530 Subject: [PATCH 07/10] [ADD] estate: property type menu and action - Created estate.property.type model - Added window action for property types - Added menu item under Settings - Users can now create property types (name field) --- estate/__manifest__.py | 1 + estate/models/__init__.py | 1 + estate/models/estate_property_type.py | 8 ++++++++ estate/security/ir.model.access.csv | 1 + estate/views/estate_menus.xml | 9 +++++++++ estate/views/estate_property_type_views.xml | 10 ++++++++++ 6 files changed, 30 insertions(+) create mode 100644 estate/models/estate_property_type.py create mode 100644 estate/views/estate_property_type_views.xml diff --git a/estate/__manifest__.py b/estate/__manifest__.py index 108b60d9643..2ebc8f7c7ed 100644 --- a/estate/__manifest__.py +++ b/estate/__manifest__.py @@ -10,6 +10,7 @@ 'data': [ 'security/ir.model.access.csv', 'views/estate_property_views.xml', + 'views/estate_property_type_views.xml', 'views/estate_menus.xml', ], } diff --git a/estate/models/__init__.py b/estate/models/__init__.py index 5e1963c9d2f..40092a2d810 100644 --- a/estate/models/__init__.py +++ b/estate/models/__init__.py @@ -1 +1,2 @@ from . import estate_property +from . import estate_property_type diff --git a/estate/models/estate_property_type.py b/estate/models/estate_property_type.py new file mode 100644 index 00000000000..1ab4e1f7317 --- /dev/null +++ b/estate/models/estate_property_type.py @@ -0,0 +1,8 @@ +from odoo import models, fields + + +class EstateProperty(models.Model): + _name = "estate.property.type" + _description = "estate property" + + name = fields.Char(required=True) diff --git a/estate/security/ir.model.access.csv b/estate/security/ir.model.access.csv index 32389642d4f..11da225066f 100644 --- a/estate/security/ir.model.access.csv +++ b/estate/security/ir.model.access.csv @@ -1,2 +1,3 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink access_estate_property,access_estate_property,model_estate_property,base.group_user,1,1,1,1 +access_estate_property_type,access_estate_property_type,model_estate_property_type,base.group_user,1,1,1,1 diff --git a/estate/views/estate_menus.xml b/estate/views/estate_menus.xml index d2025937b79..da42e7b2e5c 100644 --- a/estate/views/estate_menus.xml +++ b/estate/views/estate_menus.xml @@ -11,4 +11,13 @@ parent="estate_advertisements_menu" action="estate_property_action"/> + + + + diff --git a/estate/views/estate_property_type_views.xml b/estate/views/estate_property_type_views.xml new file mode 100644 index 00000000000..2189401a40c --- /dev/null +++ b/estate/views/estate_property_type_views.xml @@ -0,0 +1,10 @@ + + + + + Properties type + estate.property.type + list,form + + + From 42208db347d35250ec78e809df774b6dab97eb49 Mon Sep 17 00:00:00 2001 From: keman-odoo Date: Wed, 18 Mar 2026 17:50:24 +0530 Subject: [PATCH 08/10] [ADD] estate: add property type, tags and buyer/salesperson support - Added property type (Many2one) - Added buyer and salesperson fields - Added tags using Many2many - Updated form view and menus --- estate/__manifest__.py | 3 +- estate/models/__init__.py | 1 + estate/models/estate_property.py | 19 +++++++++- estate/models/estate_property_tag.py | 8 +++++ estate/models/estate_property_type.py | 2 +- estate/security/ir.model.access.csv | 1 + estate/views/estate_menus.xml | 10 ++++++ estate/views/estate_property_tag_views.xml | 10 ++++++ estate/views/estate_property_views.xml | 41 +++++++++++++++------- 9 files changed, 79 insertions(+), 16 deletions(-) create mode 100644 estate/models/estate_property_tag.py create mode 100644 estate/views/estate_property_tag_views.xml diff --git a/estate/__manifest__.py b/estate/__manifest__.py index 2ebc8f7c7ed..07168012025 100644 --- a/estate/__manifest__.py +++ b/estate/__manifest__.py @@ -11,6 +11,7 @@ 'security/ir.model.access.csv', 'views/estate_property_views.xml', 'views/estate_property_type_views.xml', - 'views/estate_menus.xml', + 'views/estate_property_tag_views.xml', + 'views/estate_menus.xml' ], } diff --git a/estate/models/__init__.py b/estate/models/__init__.py index 40092a2d810..c620ac481a3 100644 --- a/estate/models/__init__.py +++ b/estate/models/__init__.py @@ -1,2 +1,3 @@ from . import estate_property from . import estate_property_type +from . import estate_property_tag diff --git a/estate/models/estate_property.py b/estate/models/estate_property.py index 536e575b729..f8e582cd1eb 100644 --- a/estate/models/estate_property.py +++ b/estate/models/estate_property.py @@ -1,5 +1,5 @@ -from odoo import models, fields from dateutil.relativedelta import relativedelta +from odoo import fields, models class EstateProperty(models.Model): @@ -41,3 +41,20 @@ class EstateProperty(models.Model): copy=False, required=True, ) + property_type_id = fields.Many2one( + "estate.property.type", + string="property type", + ) + buyer_id = fields.Many2one( + "res.partner", + string="Buyer", + ) + user_id = fields.Many2one( + "res.users", + string="Salesperson", + default=lambda self: self.env.user, + ) + tags_ids = fields.Many2many( + "estate.property.tag", + string="tags", + ) diff --git a/estate/models/estate_property_tag.py b/estate/models/estate_property_tag.py new file mode 100644 index 00000000000..db0bfea5000 --- /dev/null +++ b/estate/models/estate_property_tag.py @@ -0,0 +1,8 @@ +from odoo import fields, models + + +class EstatePropertyTag(models.Model): + _name = "estate.property.tag" + _description = "property tag" + + name = fields.Char(required=True) diff --git a/estate/models/estate_property_type.py b/estate/models/estate_property_type.py index 1ab4e1f7317..7f2b48e7b7b 100644 --- a/estate/models/estate_property_type.py +++ b/estate/models/estate_property_type.py @@ -1,7 +1,7 @@ from odoo import models, fields -class EstateProperty(models.Model): +class EstatePropertyType(models.Model): _name = "estate.property.type" _description = "estate property" diff --git a/estate/security/ir.model.access.csv b/estate/security/ir.model.access.csv index 11da225066f..1493eab4011 100644 --- a/estate/security/ir.model.access.csv +++ b/estate/security/ir.model.access.csv @@ -1,3 +1,4 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink access_estate_property,access_estate_property,model_estate_property,base.group_user,1,1,1,1 access_estate_property_type,access_estate_property_type,model_estate_property_type,base.group_user,1,1,1,1 +access_estate_property_tag,access_estate_property_tag,model_estate_property_tag,base.group_user,1,1,1,1 diff --git a/estate/views/estate_menus.xml b/estate/views/estate_menus.xml index da42e7b2e5c..df89c04f376 100644 --- a/estate/views/estate_menus.xml +++ b/estate/views/estate_menus.xml @@ -20,4 +20,14 @@ parent="estate_setting_menu" action="estate_property_type_action"/> + + + + diff --git a/estate/views/estate_property_tag_views.xml b/estate/views/estate_property_tag_views.xml new file mode 100644 index 00000000000..ff40de80237 --- /dev/null +++ b/estate/views/estate_property_tag_views.xml @@ -0,0 +1,10 @@ + + + + + Property Tag + estate.property.tag + list,form + + + diff --git a/estate/views/estate_property_views.xml b/estate/views/estate_property_views.xml index 61c004397ba..0e65da17e5a 100644 --- a/estate/views/estate_property_views.xml +++ b/estate/views/estate_property_views.xml @@ -28,13 +28,17 @@
-

+

+ +

+ + @@ -47,27 +51,38 @@ - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + - + +
From 427723dc14802f0980be6f99178e29ffb20e7c47 Mon Sep 17 00:00:00 2001 From: keman-odoo Date: Tue, 24 Mar 2026 16:25:18 +0530 Subject: [PATCH 09/10] [ADD] estate: property offer model and One2many relation - Created estate.property.offer model - Added fields: price, status, partner_id, property_id - Implemented One2many relation (offer_ids) in estate.property - Created list and form views for offers - Added access rights for offer model --- estate/__manifest__.py | 3 +- estate/models/__init__.py | 1 + estate/models/estate_property.py | 4 +++ estate/models/estate_property_offer.py | 24 ++++++++++++++++ estate/security/ir.model.access.csv | 1 + estate/views/estate_property_offer_views.xml | 30 ++++++++++++++++++++ estate/views/estate_property_views.xml | 7 +++-- 7 files changed, 66 insertions(+), 4 deletions(-) create mode 100644 estate/models/estate_property_offer.py create mode 100644 estate/views/estate_property_offer_views.xml diff --git a/estate/__manifest__.py b/estate/__manifest__.py index 07168012025..ae2a7545d06 100644 --- a/estate/__manifest__.py +++ b/estate/__manifest__.py @@ -12,6 +12,7 @@ 'views/estate_property_views.xml', 'views/estate_property_type_views.xml', 'views/estate_property_tag_views.xml', - 'views/estate_menus.xml' + 'views/estate_menus.xml', + 'views/estate_property_offer_views.xml' ], } diff --git a/estate/models/__init__.py b/estate/models/__init__.py index c620ac481a3..2f1821a39c1 100644 --- a/estate/models/__init__.py +++ b/estate/models/__init__.py @@ -1,3 +1,4 @@ from . import estate_property from . import estate_property_type from . import estate_property_tag +from . import estate_property_offer diff --git a/estate/models/estate_property.py b/estate/models/estate_property.py index f8e582cd1eb..ad242b69771 100644 --- a/estate/models/estate_property.py +++ b/estate/models/estate_property.py @@ -58,3 +58,7 @@ class EstateProperty(models.Model): "estate.property.tag", string="tags", ) + offer_ids = fields.One2many( + "estate.property.offer", + "property_id", + ) diff --git a/estate/models/estate_property_offer.py b/estate/models/estate_property_offer.py new file mode 100644 index 00000000000..ca1f18ea2e9 --- /dev/null +++ b/estate/models/estate_property_offer.py @@ -0,0 +1,24 @@ +from odoo import fields, models + + +class EstatePropertyOffer(models.Model): + _name = "estate.property.offer" + _description = "estate property offers" + + price = fields.Float() + status = fields.Selection( + [ + ('accepted', 'Accepted'), + ('refused', 'Refused'), + ], + string="Status", + copy=False + ) + partner_id = fields.Many2one( + "res.partner", + required=True + ) + property_id = fields.Many2one( + "estate.property", + required=True + ) diff --git a/estate/security/ir.model.access.csv b/estate/security/ir.model.access.csv index 1493eab4011..89f97c50842 100644 --- a/estate/security/ir.model.access.csv +++ b/estate/security/ir.model.access.csv @@ -2,3 +2,4 @@ id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink access_estate_property,access_estate_property,model_estate_property,base.group_user,1,1,1,1 access_estate_property_type,access_estate_property_type,model_estate_property_type,base.group_user,1,1,1,1 access_estate_property_tag,access_estate_property_tag,model_estate_property_tag,base.group_user,1,1,1,1 +access_estate_property_offer,access_estate_property_offer,model_estate_property_offer,base.group_user,1,1,1,1 diff --git a/estate/views/estate_property_offer_views.xml b/estate/views/estate_property_offer_views.xml new file mode 100644 index 00000000000..f3c124d5a76 --- /dev/null +++ b/estate/views/estate_property_offer_views.xml @@ -0,0 +1,30 @@ + + + + + estate.property.offer.list + estate.property.offer + + + + + + + + + + + estate.property.offer.form + estate.property.offer + +
+ + + + + +
+
+
+ +
\ No newline at end of file diff --git a/estate/views/estate_property_views.xml b/estate/views/estate_property_views.xml index 0e65da17e5a..5fc16a95925 100644 --- a/estate/views/estate_property_views.xml +++ b/estate/views/estate_property_views.xml @@ -73,6 +73,10 @@ + + + + @@ -80,9 +84,6 @@ - - - From c6dec2b898ecc695253d0f0ffc3482d63d3173cd Mon Sep 17 00:00:00 2001 From: keman-odoo Date: Fri, 27 Mar 2026 18:36:31 +0530 Subject: [PATCH 10/10] [ADD] estate: Add computed field total_area in estate.property - Implement computed field total_area using @api.depends - Calculate total_area as sum of living_area and garden_area - Use @api.depends for automatic updates --- estate/models/estate_property.py | 15 +++++++-- estate/views/estate_menus.xml | 8 ----- estate/views/estate_property_offer_views.xml | 2 +- estate/views/estate_property_views.xml | 33 ++++++-------------- 4 files changed, 23 insertions(+), 35 deletions(-) diff --git a/estate/models/estate_property.py b/estate/models/estate_property.py index ad242b69771..c36ae420814 100644 --- a/estate/models/estate_property.py +++ b/estate/models/estate_property.py @@ -1,16 +1,24 @@ from dateutil.relativedelta import relativedelta -from odoo import fields, models + +from odoo import api, fields, models class EstateProperty(models.Model): _name = "estate.property" _description = " Real estate Property" + def _default_validity(self): + return fields.Date.today() + relativedelta(months=+3) + + @api.depends("living_area", "garden_area") + def _compute_total_area(self): + for record in self: + record.total_area = record.garden_area + record.living_area + name = fields.Char(required=True, default="UNKNOWN") description = fields.Text() postcode = fields.Char() - date_availability = fields.Date( - default=lambda self: fields.Date.today() + relativedelta(months=+3), copy=False) + date_availability = fields.Date(default=_default_validity, copy=False) expected_price = fields.Float(required=True) selling_price = fields.Float(readonly=True, copy=False) bedrooms = fields.Integer(default=2) @@ -62,3 +70,4 @@ class EstateProperty(models.Model): "estate.property.offer", "property_id", ) + total_area = fields.Float(compute="_compute_total_area") diff --git a/estate/views/estate_menus.xml b/estate/views/estate_menus.xml index df89c04f376..5de70a78791 100644 --- a/estate/views/estate_menus.xml +++ b/estate/views/estate_menus.xml @@ -1,33 +1,25 @@ - - - - - - - - diff --git a/estate/views/estate_property_offer_views.xml b/estate/views/estate_property_offer_views.xml index f3c124d5a76..0d5ac40fce4 100644 --- a/estate/views/estate_property_offer_views.xml +++ b/estate/views/estate_property_offer_views.xml @@ -27,4 +27,4 @@ - \ No newline at end of file + diff --git a/estate/views/estate_property_views.xml b/estate/views/estate_property_views.xml index 5fc16a95925..1530e169378 100644 --- a/estate/views/estate_property_views.xml +++ b/estate/views/estate_property_views.xml @@ -1,5 +1,4 @@ - Properties estate.property @@ -34,49 +33,42 @@ - - - + - - - - - + - + - + - - + - - + + + + - - @@ -94,26 +86,21 @@ estate.property - - - + domain = "[('state', 'in', ('new','offer_received'))]"/> - -