From f9e58d21abd380877ba8a6b0793924e4221e5025 Mon Sep 17 00:00:00 2001 From: haahi-odoo Date: Thu, 30 Oct 2025 17:01:50 +0530 Subject: [PATCH 1/8] [ADD] estate: Bootstrap new 'estate' module Initializes the basic structure for the real estate module. - Creates the module scaffolding (manifest, init, and base directories). - Defines the initial 'estate.property' model. - Adds base fields (columns) to the new model. --- estate/__init__.py | 1 + estate/__manifest__.py | 6 ++++++ estate/models/__init__.py | 1 + estate/models/estate_property.py | 25 +++++++++++++++++++++++++ 4 files changed, 33 insertions(+) create mode 100644 estate/__init__.py create mode 100644 estate/__manifest__.py create mode 100644 estate/models/__init__.py create mode 100644 estate/models/estate_property.py diff --git a/estate/__init__.py b/estate/__init__.py new file mode 100644 index 00000000000..9a7e03eded3 --- /dev/null +++ b/estate/__init__.py @@ -0,0 +1 @@ +from . import models \ No newline at end of file diff --git a/estate/__manifest__.py b/estate/__manifest__.py new file mode 100644 index 00000000000..a700d35d54a --- /dev/null +++ b/estate/__manifest__.py @@ -0,0 +1,6 @@ +{ + 'name': 'Real Estate', + 'depends': ['base'], + 'license': 'AGPL-3', + 'author': 'Odoo S.A.' +} \ No newline at end of file diff --git a/estate/models/__init__.py b/estate/models/__init__.py new file mode 100644 index 00000000000..f4c8fd6db6d --- /dev/null +++ b/estate/models/__init__.py @@ -0,0 +1 @@ +from . import estate_property \ No newline at end of file diff --git a/estate/models/estate_property.py b/estate/models/estate_property.py new file mode 100644 index 00000000000..348849f0867 --- /dev/null +++ b/estate/models/estate_property.py @@ -0,0 +1,25 @@ +from odoo import models, fields + + +class EstateProperty(models.Model): + _name = "estate.property" + _description = "Real Estate Property" + + name = fields.Char(required=True) + description = fields.Text() + pincode = fields.Char() + date_availability = fields.Date() + expected_price = fields.Float(required=True) + selling_price = fields.Float() + bedrooms = fields.Integer(required=True) + living_area = fields.Integer() + facades = fields.Integer() + garage = fields.Boolean() + garden = fields.Boolean() + garden_area = fields.Integer(string="Garden Area (sqft)") + garden_orientation = fields.Selection([ + ('north', 'North'), + ('south', 'South'), + ('east', 'East'), + ('west', 'West'), + ]) \ No newline at end of file From a8b1737210673d79ac6cd245fb2dc9febf5d682a Mon Sep 17 00:00:00 2001 From: haahi-odoo Date: Thu, 30 Oct 2025 17:01:41 +0530 Subject: [PATCH 2/8] [ADD] estate: Bootstrap new 'estate' module Initializes the basic structure for the real estate module. - Creates the module scaffolding (manifest, init, and base directories). - Defines the initial 'estate.property' model. - Adds base fields (columns) to the new model. --- estate/__init__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/estate/__init__.py b/estate/__init__.py index 9a7e03eded3..0650744f6bc 100644 --- a/estate/__init__.py +++ b/estate/__init__.py @@ -1 +1 @@ -from . import models \ No newline at end of file +from . import models From b1d4714b75d476672140b1227bc61789829f283a Mon Sep 17 00:00:00 2001 From: haahi-odoo Date: Wed, 5 Nov 2025 18:49:19 +0530 Subject: [PATCH 3/8] [IMP] Estate Configure field defaults and UI menus - Set default values for estate.property model fields. - Apply additional field attributes (e.g., readonly, required). - Register menu items to access the tree and form views. --- estate/__init__.py | 1 + estate/__manifest__.py | 12 ++++++++++-- estate/models/__init__.py | 2 +- estate/models/estate_property.py | 3 ++- estate/security/ir.model.access.csv | 2 ++ estate/views/estate_menus.xml | 7 +++++++ estate/views/estate_property_views.xml | 7 +++++++ 7 files changed, 30 insertions(+), 4 deletions(-) create mode 100644 estate/security/ir.model.access.csv create mode 100644 estate/views/estate_menus.xml create mode 100644 estate/views/estate_property_views.xml diff --git a/estate/__init__.py b/estate/__init__.py index 0650744f6bc..899bcc97f0f 100644 --- a/estate/__init__.py +++ b/estate/__init__.py @@ -1 +1,2 @@ from . import models + diff --git a/estate/__manifest__.py b/estate/__manifest__.py index a700d35d54a..5f0ac3b55de 100644 --- a/estate/__manifest__.py +++ b/estate/__manifest__.py @@ -2,5 +2,13 @@ 'name': 'Real Estate', 'depends': ['base'], 'license': 'AGPL-3', - 'author': 'Odoo S.A.' -} \ No newline at end of file + 'application':True, + 'installable':True, + 'author': 'Odoo S.A.', + 'category':'Tutorials', + 'data': [ + 'security/ir.model.access.csv', + 'views/estate_property_views.xml', + 'views/estate_menus.xml', + ], +} diff --git a/estate/models/__init__.py b/estate/models/__init__.py index f4c8fd6db6d..5e1963c9d2f 100644 --- a/estate/models/__init__.py +++ b/estate/models/__init__.py @@ -1 +1 @@ -from . import estate_property \ No newline at end of file +from . import estate_property diff --git a/estate/models/estate_property.py b/estate/models/estate_property.py index 348849f0867..0514ce8e6ac 100644 --- a/estate/models/estate_property.py +++ b/estate/models/estate_property.py @@ -22,4 +22,5 @@ class EstateProperty(models.Model): ('south', 'South'), ('east', 'East'), ('west', 'West'), - ]) \ No newline at end of file + ]) + \ No newline at end of file diff --git a/estate/security/ir.model.access.csv b/estate/security/ir.model.access.csv new file mode 100644 index 00000000000..0d9c11cc7e4 --- /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 +estsate.access_estate_property,access_estate_property,model_estate_property,base.group_user,1,1,1,1 diff --git a/estate/views/estate_menus.xml b/estate/views/estate_menus.xml new file mode 100644 index 00000000000..c97f087da06 --- /dev/null +++ b/estate/views/estate_menus.xml @@ -0,0 +1,7 @@ + + + + + diff --git a/estate/views/estate_property_views.xml b/estate/views/estate_property_views.xml new file mode 100644 index 00000000000..4d544c18597 --- /dev/null +++ b/estate/views/estate_property_views.xml @@ -0,0 +1,7 @@ + + + Properties + estate.property + list,form + + From 5ddda6cd2a08e37fa0916fa77709945efb942dd0 Mon Sep 17 00:00:00 2001 From: haahi-odoo Date: Thu, 6 Nov 2025 11:19:16 +0530 Subject: [PATCH 4/8] [IMP] estate : Added list & form view - added basic, list and form view - also added filter for new or offer received stage --- estate/models/estate_property.py | 14 +++++- estate/views/estate_property_views.xml | 66 ++++++++++++++++++++++++++ 2 files changed, 78 insertions(+), 2 deletions(-) diff --git a/estate/models/estate_property.py b/estate/models/estate_property.py index 0514ce8e6ac..40d3111a444 100644 --- a/estate/models/estate_property.py +++ b/estate/models/estate_property.py @@ -10,8 +10,8 @@ class EstateProperty(models.Model): pincode = fields.Char() date_availability = fields.Date() expected_price = fields.Float(required=True) - selling_price = fields.Float() - bedrooms = fields.Integer(required=True) + selling_price = fields.Float(readonly=True, copy=False) + bedrooms = fields.Integer(default=2) living_area = fields.Integer() facades = fields.Integer() garage = fields.Boolean() @@ -23,4 +23,14 @@ class EstateProperty(models.Model): ('east', 'East'), ('west', 'West'), ]) + active=fields.Boolean(default=False) + state=fields.Selection( + selection=[ + ('new','New'), + ('offer_received','Offer Received'), + ('offer_accepted','Offer Accepted'), + ('sold','Sold'), + ('cancelled','Cancelled') + ] + ) \ No newline at end of file diff --git a/estate/views/estate_property_views.xml b/estate/views/estate_property_views.xml index 4d544c18597..6ae098b3fd8 100644 --- a/estate/views/estate_property_views.xml +++ b/estate/views/estate_property_views.xml @@ -1,7 +1,73 @@ + + estate.property + + + + + + + + + + + + + + + estate.property + + + + + + + + + + + + + + estate.property + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+ Properties estate.property list,form + {"search_default_available":1}
From c0bc17c1270e3aaf35cf3cff3b121505057a0cac Mon Sep 17 00:00:00 2001 From: haahi-odoo Date: Thu, 6 Nov 2025 13:04:10 +0530 Subject: [PATCH 5/8] [FIX] estate : mismatch field name - pincode feild name had spelling mistake in views/estate_property_views.xml --- estate/views/estate_property_views.xml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/estate/views/estate_property_views.xml b/estate/views/estate_property_views.xml index 6ae098b3fd8..da392ac20d4 100644 --- a/estate/views/estate_property_views.xml +++ b/estate/views/estate_property_views.xml @@ -19,7 +19,7 @@ - + From 5d220be0781917d21463a6c74ad3c08a954f2881 Mon Sep 17 00:00:00 2001 From: haahi-odoo Date: Thu, 6 Nov 2025 14:16:00 +0530 Subject: [PATCH 6/8] [FIX]: indentation Error --- estate/__init__.py | 1 + estate/__manifest__.py | 5 +++-- estate/models/__init__.py | 1 + estate/models/estate_property.py | 16 ++++++++-------- 4 files changed, 13 insertions(+), 10 deletions(-) diff --git a/estate/__init__.py b/estate/__init__.py index 899bcc97f0f..7c378d64614 100644 --- a/estate/__init__.py +++ b/estate/__init__.py @@ -1,2 +1,3 @@ from . import models + diff --git a/estate/__manifest__.py b/estate/__manifest__.py index 5f0ac3b55de..3a771e0ba17 100644 --- a/estate/__manifest__.py +++ b/estate/__manifest__.py @@ -2,8 +2,8 @@ 'name': 'Real Estate', 'depends': ['base'], 'license': 'AGPL-3', - 'application':True, - 'installable':True, + 'application': True, + 'installable': True, 'author': 'Odoo S.A.', 'category':'Tutorials', 'data': [ @@ -12,3 +12,4 @@ 'views/estate_menus.xml', ], } + diff --git a/estate/models/__init__.py b/estate/models/__init__.py index 5e1963c9d2f..c5006b18cf8 100644 --- a/estate/models/__init__.py +++ b/estate/models/__init__.py @@ -1 +1,2 @@ from . import estate_property + diff --git a/estate/models/estate_property.py b/estate/models/estate_property.py index 40d3111a444..9da8ed6d254 100644 --- a/estate/models/estate_property.py +++ b/estate/models/estate_property.py @@ -23,14 +23,14 @@ class EstateProperty(models.Model): ('east', 'East'), ('west', 'West'), ]) - active=fields.Boolean(default=False) - state=fields.Selection( + active=fields.Boolean(default= False) + state=fields.Selection( selection=[ - ('new','New'), - ('offer_received','Offer Received'), - ('offer_accepted','Offer Accepted'), - ('sold','Sold'), - ('cancelled','Cancelled') + ('new', 'New'), + ('offer_received', 'Offer Received'), + ('offer_accepted', 'Offer Accepted'), + ('sold', 'Sold'), + ('cancelled', 'Cancelled') ] ) - \ No newline at end of file + \ No newline at end of file From a3a92c5e5358f9834b217f542982037537b5e4ac Mon Sep 17 00:00:00 2001 From: haahi-odoo Date: Thu, 6 Nov 2025 16:56:14 +0530 Subject: [PATCH 7/8] [IMP] estate: Implement list, form, and search views with grouping functionality -Developed and integrated list, form, and search views for the Real Estate module -Including support for group-by operations. --- estate/__init__.py | 1 - estate/models/__init__.py | 1 - estate/models/estate_property.py | 46 +++++----- estate/security/ir.model.access.csv | 4 +- estate/views/estate_menus.xml | 24 ++++-- estate/views/estate_property_views.xml | 113 ++++++++++++++----------- 6 files changed, 111 insertions(+), 78 deletions(-) diff --git a/estate/__init__.py b/estate/__init__.py index 7c378d64614..899bcc97f0f 100644 --- a/estate/__init__.py +++ b/estate/__init__.py @@ -1,3 +1,2 @@ from . import models - diff --git a/estate/models/__init__.py b/estate/models/__init__.py index c5006b18cf8..5e1963c9d2f 100644 --- a/estate/models/__init__.py +++ b/estate/models/__init__.py @@ -1,2 +1 @@ from . import estate_property - diff --git a/estate/models/estate_property.py b/estate/models/estate_property.py index 9da8ed6d254..d40f37799ab 100644 --- a/estate/models/estate_property.py +++ b/estate/models/estate_property.py @@ -1,4 +1,5 @@ from odoo import models, fields +from dateutil.relativedelta import relativedelta class EstateProperty(models.Model): @@ -6,31 +7,34 @@ class EstateProperty(models.Model): _description = "Real Estate Property" name = fields.Char(required=True) - description = fields.Text() - pincode = fields.Char() - date_availability = fields.Date() + description = fields.Text("Description") + postcode = fields.Char("Postcode", required=True) + date_availability = fields.Date("Availability Date", default=fields.Date.today()+relativedelta(months=3)) expected_price = fields.Float(required=True) - 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(string="Garden Area (sqft)") + selling_price = fields.Float("Selling Price", readonly=True) + bedrooms = fields.Integer("Bedrooms", default=2) + living_area = fields.Integer("living_area(sqm)") + facades = fields.Integer("Facades") + garage = fields.Boolean("Garage") + garden = fields.Boolean("Garden") + garden_area = fields.Integer("Garden Area sqm") garden_orientation = fields.Selection([ ('north', 'North'), ('south', 'South'), ('east', 'East'), ('west', 'West'), ]) - active=fields.Boolean(default= False) - state=fields.Selection( - selection=[ - ('new', 'New'), - ('offer_received', 'Offer Received'), - ('offer_accepted', 'Offer Accepted'), - ('sold', 'Sold'), - ('cancelled', 'Cancelled') - ] - ) - \ No newline at end of file + state = fields.Selection( + [ + ('new', 'New'), + ('offer_received', 'Offer Received'), + ('offer_accepted', 'Offer Accepted'), + ('sold', 'Sold'), + ('canceled', 'Canceled'), + ], + string="Status", + required=True, + copy=False, + default='new' + ) + \ No newline at end of file diff --git a/estate/security/ir.model.access.csv b/estate/security/ir.model.access.csv index 0d9c11cc7e4..3b6948e942e 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 -estsate.access_estate_property,access_estate_property,model_estate_property,base.group_user,1,1,1,1 +id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink +estate.access_estate_property,access_estate_property,model_estate_property,base.group_user,1,1,1,1 diff --git a/estate/views/estate_menus.xml b/estate/views/estate_menus.xml index c97f087da06..d1826527722 100644 --- a/estate/views/estate_menus.xml +++ b/estate/views/estate_menus.xml @@ -1,7 +1,21 @@ - - - + + + + + + + + diff --git a/estate/views/estate_property_views.xml b/estate/views/estate_property_views.xml index da392ac20d4..560d0b61dc5 100644 --- a/estate/views/estate_property_views.xml +++ b/estate/views/estate_property_views.xml @@ -1,73 +1,90 @@ + - - estate.property - - - - - - - - - - - - + - + + estate.property.list estate.property - + - - - - - + - + + Properties (List) + estate.property + list + + + + + estate.property.form estate.property -
+ - +

+ +

+ - + - - + + + + + + + - - - - - - - - - - - - - - - -
- - Properties + + Property(Form) estate.property - list,form - {"search_default_available":1} + form + + + + + + estate.property.search + estate.property + + + + + + + + + + + -
+ + + + + + Properties + estate.property + list,form + + + + \ No newline at end of file From fa72a21b9069b139449af6ce2b5dd0c910147ba9 Mon Sep 17 00:00:00 2001 From: haahi-odoo Date: Fri, 7 Nov 2025 17:42:44 +0530 Subject: [PATCH 8/8] [IMP] Real Estate: Enhanced Data Models and Functionalities -Introduced Property Type and Property Tag models. -Added Buyer and Salesperson fields. -Implemented the Property Offer model. --- estate/__manifest__.py | 6 +- estate/models/__init__.py | 3 + estate/models/estate_property.py | 55 ++++--- estate/models/estate_property_offer.py | 15 ++ estate/models/estate_property_tag.py | 8 + estate/models/estate_property_type.py | 8 + estate/security/ir.model.access.csv | 7 +- estate/views/estate_menus.xml | 37 +++-- estate/views/estate_property_offer_views.xml | 29 ++++ estate/views/estate_property_tag_views.xml | 8 + estate/views/estate_property_type_views.xml | 7 + estate/views/estate_property_views.xml | 149 +++++++++++-------- 12 files changed, 224 insertions(+), 108 deletions(-) create mode 100644 estate/models/estate_property_offer.py create mode 100644 estate/models/estate_property_tag.py create mode 100644 estate/models/estate_property_type.py create mode 100644 estate/views/estate_property_offer_views.xml create mode 100644 estate/views/estate_property_tag_views.xml create mode 100644 estate/views/estate_property_type_views.xml diff --git a/estate/__manifest__.py b/estate/__manifest__.py index 3a771e0ba17..c320c2c9918 100644 --- a/estate/__manifest__.py +++ b/estate/__manifest__.py @@ -9,7 +9,9 @@ 'data': [ 'security/ir.model.access.csv', 'views/estate_property_views.xml', - 'views/estate_menus.xml', + 'views/estate_property_type_views.xml', + 'views/estate_property_tag_views.xml', + 'views/estate_property_offer_views.xml', + 'views/estate_menus.xml' ], } - diff --git a/estate/models/__init__.py b/estate/models/__init__.py index 5e1963c9d2f..2f1821a39c1 100644 --- a/estate/models/__init__.py +++ b/estate/models/__init__.py @@ -1 +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 d40f37799ab..412fa33fb9e 100644 --- a/estate/models/estate_property.py +++ b/estate/models/estate_property.py @@ -7,34 +7,43 @@ class EstateProperty(models.Model): _description = "Real Estate Property" name = fields.Char(required=True) - description = fields.Text("Description") - postcode = fields.Char("Postcode", required=True) - date_availability = fields.Date("Availability Date", default=fields.Date.today()+relativedelta(months=3)) - expected_price = fields.Float(required=True) + description = fields.Text() + postcode = fields.Char() + date_availability = fields.Date("Availability Date", default=fields.Date.today() + relativedelta(months=3)) + expected_price = fields.Float("Expected Price", required=True) selling_price = fields.Float("Selling Price", readonly=True) - bedrooms = fields.Integer("Bedrooms", default=2) - living_area = fields.Integer("living_area(sqm)") - facades = fields.Integer("Facades") - garage = fields.Boolean("Garage") - garden = fields.Boolean("Garden") - garden_area = fields.Integer("Garden Area sqm") - garden_orientation = fields.Selection([ - ('north', 'North'), - ('south', 'South'), - ('east', 'East'), - ('west', 'West'), - ]) + bedrooms = fields.Integer(default=2) + living_area = fields.Integer("Living Area(sqm)") + facades = fields.Integer() + garage = fields.Boolean() + garden = fields.Boolean() + garden_area = fields.Integer("Garden Area(sqm)") + garden_orientation = fields.Selection( + selection=[ + ("north", "North"), + ("south", "South"), + ("east", "East"), + ("west", "West"), + ], + string="Garden Orientation", + ) state = fields.Selection( [ - ('new', 'New'), - ('offer_received', 'Offer Received'), - ('offer_accepted', 'Offer Accepted'), - ('sold', 'Sold'), - ('canceled', 'Canceled'), + ("new", "New"), + ("offer_received", "Offer Received"), + ("offer_accepted", "Offer Accepted"), + ("sold", "Sold"), + ("cancelled", "Cancelled"), ], string="Status", required=True, copy=False, - default='new' + default="new", ) - \ No newline at end of file + active = fields.Boolean(default=True) + property_type_id = fields.Many2one("estate.property.type", string="Property Type") + buyer_id = fields.Many2one("res.partner", string="Buyer", copy=False) + salesperson_id = fields.Many2one( + "res.users", string="Salesperson") + tag_ids = fields.Many2many("estate.property.tag", string="Tags") + offer_ids = fields.One2many("estate.property.offer", "property_id", string="Offers") diff --git a/estate/models/estate_property_offer.py b/estate/models/estate_property_offer.py new file mode 100644 index 00000000000..daa0544c947 --- /dev/null +++ b/estate/models/estate_property_offer.py @@ -0,0 +1,15 @@ +from odoo import fields, models + + +class EstatePropertyOffer(models.Model): + _name = "estate.property.offer" + _description = "Real Estate Property Offer" + + price = fields.Float() + status = fields.Selection( + [("accepted", "Accepted"), ("refused", "Refused")], + copy=False, + ) + partner_id = fields.Many2one("res.partner", string="Partner", required=True) + property_id = fields.Many2one("estate.property", string="Property", required=True) + \ No newline at end of file diff --git a/estate/models/estate_property_tag.py b/estate/models/estate_property_tag.py new file mode 100644 index 00000000000..198c1037c41 --- /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 = "Real Estate Property Tag" + + name = fields.Char(required=True) diff --git a/estate/models/estate_property_type.py b/estate/models/estate_property_type.py new file mode 100644 index 00000000000..ced40ef01cc --- /dev/null +++ b/estate/models/estate_property_type.py @@ -0,0 +1,8 @@ +from odoo import fields, models + + +class EstatePropertyType(models.Model): + _name = "estate.property.type" + _description = "Real Estate Property Type" + + name = fields.Char(required=True) diff --git a/estate/security/ir.model.access.csv b/estate/security/ir.model.access.csv index 3b6948e942e..58f5c8d8fe6 100644 --- a/estate/security/ir.model.access.csv +++ b/estate/security/ir.model.access.csv @@ -1,2 +1,5 @@ -id,name,model_id/id,group_id/id,perm_read,perm_write,perm_create,perm_unlink -estate.access_estate_property,access_estate_property,model_estate_property,base.group_user,1,1,1,1 +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +estate.access_estate_property,access_estate_property,estate.model_estate_property,base.group_user,1,1,1,1 +estate.access_estate_property_type,access_estate_property_type,estate.model_estate_property_type,base.group_user,1,1,1,1 +access_estate_property_tag,estate.property.tag.access,model_estate_property_tag,base.group_user,1,1,1,1 +access_estate_property_offer,estate.property.offer.access,model_estate_property_offer,base.group_user,1,1,1,1 diff --git a/estate/views/estate_menus.xml b/estate/views/estate_menus.xml index d1826527722..61b729e178c 100644 --- a/estate/views/estate_menus.xml +++ b/estate/views/estate_menus.xml @@ -1,21 +1,26 @@ + - + - - - + - + + + + + diff --git a/estate/views/estate_property_offer_views.xml b/estate/views/estate_property_offer_views.xml new file mode 100644 index 00000000000..1fbb3be50a0 --- /dev/null +++ b/estate/views/estate_property_offer_views.xml @@ -0,0 +1,29 @@ + + + estate.property.offer.list + estate.property.offer + + + + + + + + + + + estate.property.offer.form + estate.property.offer + +
+ + + + + + + +
+
+
+
diff --git a/estate/views/estate_property_tag_views.xml b/estate/views/estate_property_tag_views.xml new file mode 100644 index 00000000000..a5c5c0714cc --- /dev/null +++ b/estate/views/estate_property_tag_views.xml @@ -0,0 +1,8 @@ + + + Property Tags + estate.property.tag + list,form + + + diff --git a/estate/views/estate_property_type_views.xml b/estate/views/estate_property_type_views.xml new file mode 100644 index 00000000000..382925bd424 --- /dev/null +++ b/estate/views/estate_property_type_views.xml @@ -0,0 +1,7 @@ + + + Property Types + estate.property.type + list,form + + diff --git a/estate/views/estate_property_views.xml b/estate/views/estate_property_views.xml index 560d0b61dc5..f83c441c093 100644 --- a/estate/views/estate_property_views.xml +++ b/estate/views/estate_property_views.xml @@ -1,90 +1,109 @@ - - + + Properties + estate.property + list,form + +

+ Create a new property +

+
+
- - estate.property.list + + estate.property.view.list estate.property - - - + + + + + + + + + + - - Properties (List) - estate.property - list - - - - - estate.property.form + + estate.property.view.form estate.property -
+ -

- -

- - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
- - Property(Form) - estate.property - form - - - - - - estate.property.search + + estate.property.view.search estate.property - - - - - - - - + + + + + + + - - - - - - Properties - estate.property - list,form - - - -
\ No newline at end of file +