From 1daba783b709335caf49c3ee1aebe26ad8e49d24 Mon Sep 17 00:00:00 2001 From: joemo-odoo Date: Thu, 30 Apr 2026 17:49:42 +0200 Subject: [PATCH 1/5] [ADD] estate: create an estate module make a module for selling properties that can be imported in odoo saas environment --- estate/__init__.py | 0 estate/__manifest__.py | 13 +++ estate/models/estate_property.xml | 124 +++++++++++++++++++++++++ estate/security/ir.model.access.csv | 2 + estate/views/estate_menus.xml | 7 ++ estate/views/estate_property_views.xml | 62 +++++++++++++ 6 files changed, 208 insertions(+) create mode 100644 estate/__init__.py create mode 100644 estate/__manifest__.py create mode 100644 estate/models/estate_property.xml 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 new file mode 100644 index 00000000000..e69de29bb2d diff --git a/estate/__manifest__.py b/estate/__manifest__.py new file mode 100644 index 00000000000..9f6af24ee00 --- /dev/null +++ b/estate/__manifest__.py @@ -0,0 +1,13 @@ +{ + "name": "Estate Tutorial", + "author": "joemo", + "license": "LGPL-3", + "application": True, + "depends": ["base", "base_import_module"], + "data": [ + "models/estate_property.xml", + "security/ir.model.access.csv", + "views/estate_property_views.xml", + "views/estate_menus.xml", + ] +} diff --git a/estate/models/estate_property.xml b/estate/models/estate_property.xml new file mode 100644 index 00000000000..59cc69bc590 --- /dev/null +++ b/estate/models/estate_property.xml @@ -0,0 +1,124 @@ + + + Estate Property + x_estate.property + + + + + x_name + Name + char + True + + + + + x_selling_price + Selling Price + float + True + + + + + x_description + Description + html + + + + + x_postcode + Postcode + char + + + + + x_date_available + Date available + date + + + + + x_expected_price + Expected price + float + true + + + + + x_bedrooms + Bedrooms + integer + + + + + x_living_area + Living area + integer + + + + + x_facades + Facades + integer + + + + + x_garage + Garage + boolean + + + + + x_garden + Garden + boolean + + + + + x_garden_area + Garden area + integer + + + + + x_garden_orientation + Garden orientation + selection + + + + + North + north + + + + + South + south + + + + + East + east + + + + + West + west + + diff --git a/estate/security/ir.model.access.csv b/estate/security/ir.model.access.csv new file mode 100644 index 00000000000..32389642d4f --- /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_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..ec3bf61ed0c --- /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..6435bb18e74 --- /dev/null +++ b/estate/views/estate_property_views.xml @@ -0,0 +1,62 @@ + + + + x_estate.property.view.list + x_estate.property + + + + + + + + + + + + + + + x_estate.property.view.form + x_estate.property + +
+ +

+ +

+ + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ + + Property + x_estate.property + list,form + +
From 8cf4767576cdc579ded4c9e29358bf50f70c7028 Mon Sep 17 00:00:00 2001 From: joemo-odoo Date: Mon, 4 May 2026 11:09:39 +0200 Subject: [PATCH 2/5] [IMP] estate: add tags, types, and relations making the application more useful with types links to seller, what type of property it is, some tags and even calculation of total area --- estate/__manifest__.py | 7 +++ estate/data/x_estate.property.type.csv | 5 ++ estate/models/estate_property.xml | 51 +++++++++++++++- estate/models/estate_property_offer.xml | 62 ++++++++++++++++++++ estate/models/estate_property_tag.xml | 14 +++++ estate/models/estate_property_type.xml | 14 +++++ estate/security/ir.model.access.csv | 3 + estate/views/estate_menus.xml | 4 ++ estate/views/estate_property_offer_views.xml | 19 ++++++ estate/views/estate_property_tag_views.xml | 17 ++++++ estate/views/estate_property_type_views.xml | 19 ++++++ estate/views/estate_property_views.xml | 13 ++++ 12 files changed, 226 insertions(+), 2 deletions(-) create mode 100644 estate/data/x_estate.property.type.csv create mode 100644 estate/models/estate_property_offer.xml create mode 100644 estate/models/estate_property_tag.xml create mode 100644 estate/models/estate_property_type.xml 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 9f6af24ee00..7cd4631352f 100644 --- a/estate/__manifest__.py +++ b/estate/__manifest__.py @@ -5,9 +5,16 @@ "application": True, "depends": ["base", "base_import_module"], "data": [ + "models/estate_property_type.xml", + "models/estate_property_tag.xml", "models/estate_property.xml", + "models/estate_property_offer.xml", "security/ir.model.access.csv", + "views/estate_property_offer_views.xml", + "views/estate_property_type_views.xml", + "views/estate_property_tag_views.xml", "views/estate_property_views.xml", "views/estate_menus.xml", + "data/x_estate.property.type.csv", ] } diff --git a/estate/data/x_estate.property.type.csv b/estate/data/x_estate.property.type.csv new file mode 100644 index 00000000000..65d31587c5a --- /dev/null +++ b/estate/data/x_estate.property.type.csv @@ -0,0 +1,5 @@ +id,x_name +property_type_0,Residential +property_type_1,Commercial +property_type_2,Industrial +property_type_3,Land diff --git a/estate/models/estate_property.xml b/estate/models/estate_property.xml index 59cc69bc590..eeb8cfe92c6 100644 --- a/estate/models/estate_property.xml +++ b/estate/models/estate_property.xml @@ -9,7 +9,7 @@ x_name Name char - True + true @@ -17,7 +17,6 @@ x_selling_price Selling Price float - True @@ -121,4 +120,52 @@ West west + + + + x_property_type_id + Property Type + many2one + x_estate.property.type + True + restrict + + + + + x_partner_id + Buyer + many2one + res.partner + + + + + x_user_id + Salesperson + many2one + res.users + + + + + x_property_tag_ids + Property Tags + many2many + x_estate.property.tag + + + + + x_total_area + Total Area + integer + x_living_area,x_garden_area + + + + diff --git a/estate/models/estate_property_offer.xml b/estate/models/estate_property_offer.xml new file mode 100644 index 00000000000..a85749e922e --- /dev/null +++ b/estate/models/estate_property_offer.xml @@ -0,0 +1,62 @@ + + + Estate Property Offer + x_estate.property.offer + + + + + x_price + Price + float + True + + + + x_status + Status + selection + + + + + + Accepted + accepted + + + + Refused + refused + + + + + x_partner_id + Buyer + many2one + res.partner + True + restrict + + + + + x_property_id + Property + many2one + x_estate.property + True + restrict + + + + + + x_offer_ids + Property Offers + one2many + x_estate.property.offer + x_property_id + + diff --git a/estate/models/estate_property_tag.xml b/estate/models/estate_property_tag.xml new file mode 100644 index 00000000000..1564d91ff55 --- /dev/null +++ b/estate/models/estate_property_tag.xml @@ -0,0 +1,14 @@ + + + Estate Property Type + x_estate.property.tag + + + + + x_name + Name + char + True + + diff --git a/estate/models/estate_property_type.xml b/estate/models/estate_property_type.xml new file mode 100644 index 00000000000..2d9197d5ef7 --- /dev/null +++ b/estate/models/estate_property_type.xml @@ -0,0 +1,14 @@ + + + Estate Property Type + x_estate.property.type + + + + + x_name + Name + char + True + + diff --git a/estate/security/ir.model.access.csv b/estate/security/ir.model.access.csv index 32389642d4f..89f97c50842 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 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_menus.xml b/estate/views/estate_menus.xml index ec3bf61ed0c..aaf1795e330 100644 --- a/estate/views/estate_menus.xml +++ b/estate/views/estate_menus.xml @@ -3,5 +3,9 @@ + + + + diff --git a/estate/views/estate_property_offer_views.xml b/estate/views/estate_property_offer_views.xml new file mode 100644 index 00000000000..c878a47fcec --- /dev/null +++ b/estate/views/estate_property_offer_views.xml @@ -0,0 +1,19 @@ + + + estate.property.offer.view.list + x_estate.property.offer + + + + + + + + + + Offers + x_estate.property.offer + list + [('property_type_id', '=', active_id)] + + diff --git a/estate/views/estate_property_tag_views.xml b/estate/views/estate_property_tag_views.xml new file mode 100644 index 00000000000..a030867bbd8 --- /dev/null +++ b/estate/views/estate_property_tag_views.xml @@ -0,0 +1,17 @@ + + + estate.property.tag.view.list + x_estate.property.tag + + + + + + + + + Property Tags + x_estate.property.tag + list + + diff --git a/estate/views/estate_property_type_views.xml b/estate/views/estate_property_type_views.xml new file mode 100644 index 00000000000..0e9d6eb5208 --- /dev/null +++ b/estate/views/estate_property_type_views.xml @@ -0,0 +1,19 @@ + + + + x_estate.property.type.view.list + x_estate.property.type + + + + + + + + + + Property Types + x_estate.property.type + list + + diff --git a/estate/views/estate_property_views.xml b/estate/views/estate_property_views.xml index 6435bb18e74..2c208b5dde6 100644 --- a/estate/views/estate_property_views.xml +++ b/estate/views/estate_property_views.xml @@ -6,6 +6,7 @@ + @@ -25,9 +26,11 @@

+ + @@ -46,6 +49,16 @@ + + + + + + + + + + From 3fa9f42d5482ec61976501d76322a1fae584cac0 Mon Sep 17 00:00:00 2001 From: joemo-odoo Date: Mon, 4 May 2026 16:28:04 +0200 Subject: [PATCH 3/5] [IMP] estate: add business logic make it possible to accept offers --- estate/models/estate_property_offer.xml | 5 +++-- estate/views/estate_property_offer_views.xml | 19 +++++++++++++++++++ 2 files changed, 22 insertions(+), 2 deletions(-) diff --git a/estate/models/estate_property_offer.xml b/estate/models/estate_property_offer.xml index a85749e922e..ee127343623 100644 --- a/estate/models/estate_property_offer.xml +++ b/estate/models/estate_property_offer.xml @@ -20,12 +20,12 @@ - + Accepted accepted - + Refused refused @@ -59,4 +59,5 @@ x_estate.property.offer x_property_id + diff --git a/estate/views/estate_property_offer_views.xml b/estate/views/estate_property_offer_views.xml index c878a47fcec..37d9c51c6f7 100644 --- a/estate/views/estate_property_offer_views.xml +++ b/estate/views/estate_property_offer_views.xml @@ -1,4 +1,21 @@ + + Accept offer and refuse all others + + code + + form + + + + + + estate.property.offer.view.list x_estate.property.offer @@ -6,6 +23,8 @@ + +