From d7275c8e4779ca6e9bba747066203a1a6637eb04 Mon Sep 17 00:00:00 2001 From: Rs-appez <37080870+Rs-appez@users.noreply.github.com> Date: Tue, 15 Sep 2026 11:23:45 +0200 Subject: [PATCH 01/36] [ADD] estate : init module --- estate/__init__.py | 0 estate/__manifest__.py | 1 + 2 files changed, 1 insertion(+) create mode 100644 estate/__init__.py create mode 100644 estate/__manifest__.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..d389a4afb00 --- /dev/null +++ b/estate/__manifest__.py @@ -0,0 +1 @@ +{"name": "estate", "license": "LGPL-3", "author": "alpir"} From f0c6800b782d35cd15f9758a35f1ee5fe53e0bff Mon Sep 17 00:00:00 2001 From: Rs-appez <37080870+Rs-appez@users.noreply.github.com> Date: Tue, 15 Sep 2026 13:34:03 +0200 Subject: [PATCH 02/36] [IMP] estate : add base Property model --- estate/__init__.py | 1 + estate/models/__init__.py | 1 + estate/models/estate_property.py | 8 ++++++++ 3 files changed, 10 insertions(+) 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 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 new file mode 100644 index 00000000000..5e1963c9d2f --- /dev/null +++ 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..aec8068756b --- /dev/null +++ b/estate/models/estate_property.py @@ -0,0 +1,8 @@ +from odoo import models, fields + + +class Property(models.Model): + _name = "property" + _description = "Estate Property" + + name = fields.Char() From 175d21c26e810b32be5758bce6f7cca3685186f9 Mon Sep 17 00:00:00 2001 From: Rs-appez <37080870+Rs-appez@users.noreply.github.com> Date: Tue, 15 Sep 2026 15:14:46 +0200 Subject: [PATCH 03/36] [IMP] estate : add model field --- estate/models/estate_property.py | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/estate/models/estate_property.py b/estate/models/estate_property.py index aec8068756b..47ed8dca1b1 100644 --- a/estate/models/estate_property.py +++ b/estate/models/estate_property.py @@ -1,8 +1,28 @@ -from odoo import models, fields +from odoo import fields, models class Property(models.Model): - _name = "property" + _name = "estate_property" _description = "Estate Property" - name = fields.Char() + name = fields.Char(required=True) + description = fields.Text + 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 + garen = fields.Boolean + garden_area = fields.Integer + garden_orientation = fields.Selection( + string="Orientation", + selection=[ + ("north", "North"), + ("south", "South"), + ("east", "East"), + ("west", "West"), + ], + help="The garden orientation", + ) From d72784960de8b9187ae24e716fb74e4a6885d75a Mon Sep 17 00:00:00 2001 From: Rs-appez <37080870+Rs-appez@users.noreply.github.com> Date: Tue, 15 Sep 2026 15:18:18 +0200 Subject: [PATCH 04/36] [FIX] estate : add missing field --- estate/__manifest__.py | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/estate/__manifest__.py b/estate/__manifest__.py index d389a4afb00..0d27237489d 100644 --- a/estate/__manifest__.py +++ b/estate/__manifest__.py @@ -1 +1,7 @@ -{"name": "estate", "license": "LGPL-3", "author": "alpir"} +{ + "name": "estate", + "license": "LGPL-3", + "author": "alpir", + "application": True, + "depends": ["base"], +} From 0d84524359ff31edad385820f3ea9a4fd3a811f4 Mon Sep 17 00:00:00 2001 From: Rs-appez <37080870+Rs-appez@users.noreply.github.com> Date: Tue, 15 Sep 2026 16:18:23 +0200 Subject: [PATCH 05/36] [IMP] estate : add model access --- estate/__manifest__.py | 1 + estate/security/ir.model.access.csv | 2 ++ 2 files changed, 3 insertions(+) create mode 100644 estate/security/ir.model.access.csv diff --git a/estate/__manifest__.py b/estate/__manifest__.py index 0d27237489d..5a9a221d815 100644 --- a/estate/__manifest__.py +++ b/estate/__manifest__.py @@ -4,4 +4,5 @@ "author": "alpir", "application": True, "depends": ["base"], + "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..974ade8d9f4 --- /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_ir_estate_property_user,ir_estate_property_user,model_estate_property,base.group_user,1,1,1,1 \ No newline at end of file From c8a7bb7f30bd4d6c4c0be0309df1c4dd61de8435 Mon Sep 17 00:00:00 2001 From: Rs-appez <37080870+Rs-appez@users.noreply.github.com> Date: Tue, 15 Sep 2026 16:36:11 +0200 Subject: [PATCH 06/36] [IMP] estate : add base action view --- estate/__manifest__.py | 2 +- estate/views/estate_property_views.xml | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) create mode 100644 estate/views/estate_property_views.xml diff --git a/estate/__manifest__.py b/estate/__manifest__.py index 5a9a221d815..9e813f9d6d0 100644 --- a/estate/__manifest__.py +++ b/estate/__manifest__.py @@ -4,5 +4,5 @@ "author": "alpir", "application": True, "depends": ["base"], - "data": ["security/ir.model.access.csv"], + "data": ["views/estate_property_views.xml", "security/ir.model.access.csv"], } diff --git a/estate/views/estate_property_views.xml b/estate/views/estate_property_views.xml new file mode 100644 index 00000000000..fda0d85896c --- /dev/null +++ b/estate/views/estate_property_views.xml @@ -0,0 +1,8 @@ + + + + Properties + estate_property + list,form + + \ No newline at end of file From b9080c69abfd273c5cef3ea409567c2895be5857 Mon Sep 17 00:00:00 2001 From: Rs-appez <37080870+Rs-appez@users.noreply.github.com> Date: Tue, 15 Sep 2026 16:50:41 +0200 Subject: [PATCH 07/36] [IMP] estate : add menu view --- estate/__manifest__.py | 6 +++++- estate/views/estate_menus.xml | 9 +++++++++ 2 files changed, 14 insertions(+), 1 deletion(-) create mode 100644 estate/views/estate_menus.xml diff --git a/estate/__manifest__.py b/estate/__manifest__.py index 9e813f9d6d0..61276c8fb29 100644 --- a/estate/__manifest__.py +++ b/estate/__manifest__.py @@ -4,5 +4,9 @@ "author": "alpir", "application": True, "depends": ["base"], - "data": ["views/estate_property_views.xml", "security/ir.model.access.csv"], + "data": [ + "views/estate_property_views.xml", + "views/estate_menus.xml", + "security/ir.model.access.csv", + ], } diff --git a/estate/views/estate_menus.xml b/estate/views/estate_menus.xml new file mode 100644 index 00000000000..c1bac209323 --- /dev/null +++ b/estate/views/estate_menus.xml @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file From 7309cebfbcf989db4b32fbf80bb13ca6a7427ee1 Mon Sep 17 00:00:00 2001 From: Rs-appez <37080870+Rs-appez@users.noreply.github.com> Date: Tue, 15 Sep 2026 17:04:59 +0200 Subject: [PATCH 08/36] [CLN] estate : format xml --- estate/views/estate_menus.xml | 2 +- estate/views/estate_property_views.xml | 10 +++++----- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/estate/views/estate_menus.xml b/estate/views/estate_menus.xml index c1bac209323..4cbb6564846 100644 --- a/estate/views/estate_menus.xml +++ b/estate/views/estate_menus.xml @@ -2,7 +2,7 @@ - + diff --git a/estate/views/estate_property_views.xml b/estate/views/estate_property_views.xml index fda0d85896c..716bffff266 100644 --- a/estate/views/estate_property_views.xml +++ b/estate/views/estate_property_views.xml @@ -1,8 +1,8 @@ - - Properties - estate_property - list,form - + + Properties + estate_property + list,form + \ No newline at end of file From 65b9d0b489898cc61ec9db4f2911f2ee66131634 Mon Sep 17 00:00:00 2001 From: Rs-appez <37080870+Rs-appez@users.noreply.github.com> Date: Tue, 15 Sep 2026 17:10:33 +0200 Subject: [PATCH 09/36] [FIX] estate : fix syntax --- estate/models/estate_property.py | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/estate/models/estate_property.py b/estate/models/estate_property.py index 47ed8dca1b1..2f5808a2c0d 100644 --- a/estate/models/estate_property.py +++ b/estate/models/estate_property.py @@ -6,16 +6,16 @@ class Property(models.Model): _description = "Estate Property" name = fields.Char(required=True) - description = fields.Text - date_availability = fields.Date + description = fields.Text() + 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 - garen = fields.Boolean - garden_area = fields.Integer + 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( string="Orientation", selection=[ From 607123bee7367ca898f477fdb8d9d6782d029b8a Mon Sep 17 00:00:00 2001 From: Rs-appez <37080870+Rs-appez@users.noreply.github.com> Date: Tue, 15 Sep 2026 17:15:50 +0200 Subject: [PATCH 10/36] [IMP] estate : add param to the field --- estate/models/estate_property.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/estate/models/estate_property.py b/estate/models/estate_property.py index 2f5808a2c0d..4c8768dcc49 100644 --- a/estate/models/estate_property.py +++ b/estate/models/estate_property.py @@ -7,9 +7,9 @@ class Property(models.Model): name = fields.Char(required=True) description = fields.Text() - date_availability = fields.Date() + date_availability = fields.Date(copy=False) expected_price = fields.Float(required=True) - selling_price = fields.Float() + selling_price = fields.Float(readonly=True, copy=False) bedrooms = fields.Integer() living_area = fields.Integer() facades = fields.Integer() From ae1b08eef17fe927bc15fe8665497501eac664ef Mon Sep 17 00:00:00 2001 From: Rs-appez <37080870+Rs-appez@users.noreply.github.com> Date: Wed, 16 Sep 2026 09:59:26 +0200 Subject: [PATCH 11/36] [IMP] estate : add field default value --- estate/models/estate_property.py | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/estate/models/estate_property.py b/estate/models/estate_property.py index 4c8768dcc49..27cfc589d33 100644 --- a/estate/models/estate_property.py +++ b/estate/models/estate_property.py @@ -7,10 +7,13 @@ class Property(models.Model): name = fields.Char(required=True) description = fields.Text() - date_availability = fields.Date(copy=False) + date_availability = fields.Date( + copy=False, + default=fields.Date.add(fields.Date.today(), months=3), + ) expected_price = fields.Float(required=True) selling_price = fields.Float(readonly=True, copy=False) - bedrooms = fields.Integer() + bedrooms = fields.Integer(default=2) living_area = fields.Integer() facades = fields.Integer() garage = fields.Boolean() From 66bce2db7f1fd7ede60604d57e27e1cd5151d1ca Mon Sep 17 00:00:00 2001 From: Rs-appez <37080870+Rs-appez@users.noreply.github.com> Date: Wed, 16 Sep 2026 10:06:08 +0200 Subject: [PATCH 12/36] [IMP] estate : add active field --- estate/models/estate_property.py | 1 + 1 file changed, 1 insertion(+) diff --git a/estate/models/estate_property.py b/estate/models/estate_property.py index 27cfc589d33..44d6f5c645f 100644 --- a/estate/models/estate_property.py +++ b/estate/models/estate_property.py @@ -29,3 +29,4 @@ class Property(models.Model): ], help="The garden orientation", ) + active = fields.Boolean("Active", default=True) From f58ca1489f4330551fb8ea253359a14d87caec3d Mon Sep 17 00:00:00 2001 From: Rs-appez <37080870+Rs-appez@users.noreply.github.com> Date: Wed, 16 Sep 2026 10:16:33 +0200 Subject: [PATCH 13/36] [IMP] estate : add state field --- estate/models/estate_property.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/estate/models/estate_property.py b/estate/models/estate_property.py index 44d6f5c645f..2bdf9182021 100644 --- a/estate/models/estate_property.py +++ b/estate/models/estate_property.py @@ -30,3 +30,16 @@ class Property(models.Model): help="The garden orientation", ) active = fields.Boolean("Active", default=True) + state = fields.Selection( + string="State", + selection=[ + ("new", "New"), + ("offer_received", "Offer Received"), + ("offer_accepted", "Offer Accepted"), + ("sold", "Sold"), + ("cancelled", "Cancelled"), + ], + copy=False, + required=True, + default="new", + ) From da48027db785a266ab4eb138237db0de434b6066 Mon Sep 17 00:00:00 2001 From: Rs-appez <37080870+Rs-appez@users.noreply.github.com> Date: Wed, 16 Sep 2026 10:53:10 +0200 Subject: [PATCH 14/36] [IMP] estate : add postcode field --- estate/models/estate_property.py | 1 + 1 file changed, 1 insertion(+) diff --git a/estate/models/estate_property.py b/estate/models/estate_property.py index 2bdf9182021..d08839a69cf 100644 --- a/estate/models/estate_property.py +++ b/estate/models/estate_property.py @@ -6,6 +6,7 @@ class Property(models.Model): _description = "Estate Property" name = fields.Char(required=True) + postcode = fields.Char() description = fields.Text() date_availability = fields.Date( copy=False, From 3171e7e7f994257497a7e11c37a35eca412b926c Mon Sep 17 00:00:00 2001 From: Rs-appez <37080870+Rs-appez@users.noreply.github.com> Date: Wed, 16 Sep 2026 10:53:34 +0200 Subject: [PATCH 15/36] [IMP] estate : add property view list --- estate/views/estate_property_views.xml | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) diff --git a/estate/views/estate_property_views.xml b/estate/views/estate_property_views.xml index 716bffff266..9344bc9e1e2 100644 --- a/estate/views/estate_property_views.xml +++ b/estate/views/estate_property_views.xml @@ -1,5 +1,21 @@ + + estate_property.list + estate_property + + + + + + + + + + + + + Properties estate_property From de5bfaac76bd5a254af2d2d75225be3775ef68ee Mon Sep 17 00:00:00 2001 From: Rs-appez <37080870+Rs-appez@users.noreply.github.com> Date: Wed, 16 Sep 2026 11:16:30 +0200 Subject: [PATCH 16/36] [IMP] estate : add property form view --- estate/views/estate_property_views.xml | 49 +++++++++++++++++++++++++- 1 file changed, 48 insertions(+), 1 deletion(-) diff --git a/estate/views/estate_property_views.xml b/estate/views/estate_property_views.xml index 9344bc9e1e2..01a25fb3f78 100644 --- a/estate/views/estate_property_views.xml +++ b/estate/views/estate_property_views.xml @@ -1,5 +1,52 @@ + + + estate_property.form + estate_property + +
+ + + +
+

+ +

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+ estate_property.list estate_property @@ -15,7 +62,7 @@ - + Properties estate_property From 5eb3c2f264bd4a4b26631668920c4f41e5430cef Mon Sep 17 00:00:00 2001 From: Rs-appez <37080870+Rs-appez@users.noreply.github.com> Date: Wed, 16 Sep 2026 13:10:11 +0200 Subject: [PATCH 17/36] [IMP] estate : add search and filter for property --- estate/views/estate_property_views.xml | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) diff --git a/estate/views/estate_property_views.xml b/estate/views/estate_property_views.xml index 01a25fb3f78..88607ed9053 100644 --- a/estate/views/estate_property_views.xml +++ b/estate/views/estate_property_views.xml @@ -1,6 +1,28 @@ + + estate_property.search + estate_property + + + + + + + + + + + + + + + + + + estate_property.form estate_property From 0cb150bc486263c212e53fed1b71e77d1df3b5fe Mon Sep 17 00:00:00 2001 From: Rs-appez <37080870+Rs-appez@users.noreply.github.com> Date: Thu, 17 Sep 2026 09:11:24 +0200 Subject: [PATCH 18/36] [FIX] estate : use lambda in date_availability field --- estate/models/estate_property.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/estate/models/estate_property.py b/estate/models/estate_property.py index d08839a69cf..b442605677c 100644 --- a/estate/models/estate_property.py +++ b/estate/models/estate_property.py @@ -10,7 +10,7 @@ class Property(models.Model): description = fields.Text() date_availability = fields.Date( copy=False, - default=fields.Date.add(fields.Date.today(), months=3), + default=lambda _: fields.Date.add(fields.Date.today(), months=3), ) expected_price = fields.Float(required=True) selling_price = fields.Float(readonly=True, copy=False) From a386df43f60e7952b2b6c9ffc339e7a2ad7e59a3 Mon Sep 17 00:00:00 2001 From: Rs-appez <37080870+Rs-appez@users.noreply.github.com> Date: Thu, 17 Sep 2026 09:22:55 +0200 Subject: [PATCH 19/36] [IMP] estate : add property type model --- estate/__manifest__.py | 1 + estate/models/__init__.py | 2 +- estate/models/estate_property_type.py | 8 +++++ estate/security/ir.model.access.csv | 3 +- estate/views/estate_menus.xml | 5 ++- estate/views/estate_property_type_views.xml | 38 +++++++++++++++++++++ 6 files changed, 54 insertions(+), 3 deletions(-) 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 61276c8fb29..ce8e0664ad6 100644 --- a/estate/__manifest__.py +++ b/estate/__manifest__.py @@ -6,6 +6,7 @@ "depends": ["base"], "data": [ "views/estate_property_views.xml", + "views/estate_property_type_views.xml", "views/estate_menus.xml", "security/ir.model.access.csv", ], diff --git a/estate/models/__init__.py b/estate/models/__init__.py index 5e1963c9d2f..76e779e73b0 100644 --- a/estate/models/__init__.py +++ b/estate/models/__init__.py @@ -1 +1 @@ -from . import estate_property +from . import estate_property, 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..3519fec3eaf --- /dev/null +++ b/estate/models/estate_property_type.py @@ -0,0 +1,8 @@ +from odoo import fields, models + + +class PropertyType(models.Model): + _name = "estate.property.type" + _description = "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 974ade8d9f4..19654a4cbef 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_ir_estate_property_user,ir_estate_property_user,model_estate_property,base.group_user,1,1,1,1 \ No newline at end of file +access_ir_estate_property_user,ir_estate_property_user,model_estate_property,base.group_user,1,1,1,1 +access_ir_estate_property_type_user,ir_estate_property_type_user,model_estate_property_type,base.group_user,1,1,1,1 \ No newline at end of file diff --git a/estate/views/estate_menus.xml b/estate/views/estate_menus.xml index 4cbb6564846..25ed3050baf 100644 --- a/estate/views/estate_menus.xml +++ b/estate/views/estate_menus.xml @@ -4,6 +4,9 @@ + + + - \ No newline at end of file diff --git a/estate/views/estate_property_type_views.xml b/estate/views/estate_property_type_views.xml new file mode 100644 index 00000000000..765b92ed551 --- /dev/null +++ b/estate/views/estate_property_type_views.xml @@ -0,0 +1,38 @@ + + + + + estate_property_type.form + estate.property.type + +
+ + + +
+

+ +

+
+
+
+
+
+
+ + + estate_property_type.list + estate.property.type + + + + + + + + + Property Types + estate.property.type + list,form + +
\ No newline at end of file From 3d2246570a249e53cbaf18ecec3b072220fda915 Mon Sep 17 00:00:00 2001 From: Rs-appez <37080870+Rs-appez@users.noreply.github.com> Date: Thu, 17 Sep 2026 09:29:03 +0200 Subject: [PATCH 20/36] [IMP] estate : add field property_type_id to the property model --- estate/models/estate_property.py | 1 + estate/views/estate_property_views.xml | 4 ++++ 2 files changed, 5 insertions(+) diff --git a/estate/models/estate_property.py b/estate/models/estate_property.py index b442605677c..9311fe48b77 100644 --- a/estate/models/estate_property.py +++ b/estate/models/estate_property.py @@ -44,3 +44,4 @@ class Property(models.Model): required=True, default="new", ) + property_type_id = fields.Many2one("estate.property.type", string="Property Type") diff --git a/estate/views/estate_property_views.xml b/estate/views/estate_property_views.xml index 88607ed9053..0d71e83d613 100644 --- a/estate/views/estate_property_views.xml +++ b/estate/views/estate_property_views.xml @@ -12,6 +12,7 @@ + @@ -40,6 +41,8 @@ + + @@ -75,6 +78,7 @@ + From b1593212c53d51a553f683b6eaa9c2ae6f04248f Mon Sep 17 00:00:00 2001 From: Rs-appez <37080870+Rs-appez@users.noreply.github.com> Date: Thu, 17 Sep 2026 09:38:09 +0200 Subject: [PATCH 21/36] [IMP] estate : add buyer and salesman field to property model --- estate/models/estate_property.py | 2 ++ estate/views/estate_property_views.xml | 6 ++++++ 2 files changed, 8 insertions(+) diff --git a/estate/models/estate_property.py b/estate/models/estate_property.py index 9311fe48b77..780f37ede4b 100644 --- a/estate/models/estate_property.py +++ b/estate/models/estate_property.py @@ -45,3 +45,5 @@ class Property(models.Model): default="new", ) property_type_id = fields.Many2one("estate.property.type", string="Property Type") + buyer = fields.Many2one("res.partner", copy=False) + salesman = fields.Many2one("res.users", default=lambda self: self.env.user) diff --git a/estate/views/estate_property_views.xml b/estate/views/estate_property_views.xml index 0d71e83d613..b496b9542d0 100644 --- a/estate/views/estate_property_views.xml +++ b/estate/views/estate_property_views.xml @@ -66,6 +66,12 @@ + + + + + + From 1d539f521ce5ecd12972523a7a1d87318b4387a5 Mon Sep 17 00:00:00 2001 From: Rs-appez <37080870+Rs-appez@users.noreply.github.com> Date: Thu, 17 Sep 2026 09:52:48 +0200 Subject: [PATCH 22/36] [IMP] estate : add property_tag model --- estate/__manifest__.py | 1 + estate/models/__init__.py | 2 +- estate/models/estate_property_tag.py | 8 ++++++++ estate/security/ir.model.access.csv | 3 ++- estate/views/estate_menus.xml | 2 ++ estate/views/estate_property_tag_views.xml | 8 ++++++++ 6 files changed, 22 insertions(+), 2 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 ce8e0664ad6..b6ed42bbb5a 100644 --- a/estate/__manifest__.py +++ b/estate/__manifest__.py @@ -5,6 +5,7 @@ "application": True, "depends": ["base"], "data": [ + "views/estate_property_tag_views.xml", "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 76e779e73b0..95039dab5e2 100644 --- a/estate/models/__init__.py +++ b/estate/models/__init__.py @@ -1 +1 @@ -from . import estate_property, estate_property_type +from . import estate_property, estate_property_tag, estate_property_type diff --git a/estate/models/estate_property_tag.py b/estate/models/estate_property_tag.py new file mode 100644 index 00000000000..c1c8cee01b3 --- /dev/null +++ b/estate/models/estate_property_tag.py @@ -0,0 +1,8 @@ +from odoo import fields, models + + +class PropertyType(models.Model): + _name = "estate.property.tag" + _description = "Estate Property Tag" + + name = fields.Char(required=True) diff --git a/estate/security/ir.model.access.csv b/estate/security/ir.model.access.csv index 19654a4cbef..0f0b52fde27 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_ir_estate_property_user,ir_estate_property_user,model_estate_property,base.group_user,1,1,1,1 -access_ir_estate_property_type_user,ir_estate_property_type_user,model_estate_property_type,base.group_user,1,1,1,1 \ No newline at end of file +access_ir_estate_property_type_user,ir_estate_property_type_user,model_estate_property_type,base.group_user,1,1,1,1 +access_ir_estate_property_tag_user,ir_estate_property_tag_user,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 25ed3050baf..7230d8168ff 100644 --- a/estate/views/estate_menus.xml +++ b/estate/views/estate_menus.xml @@ -7,6 +7,8 @@ +
\ No newline at end of file diff --git a/estate/views/estate_property_tag_views.xml b/estate/views/estate_property_tag_views.xml new file mode 100644 index 00000000000..0a0db0fdb30 --- /dev/null +++ b/estate/views/estate_property_tag_views.xml @@ -0,0 +1,8 @@ + + + + Property Tags + estate.property.tag + list,form + + \ No newline at end of file From 18f441e3a20ce02fb701696d9e66663e278c7e61 Mon Sep 17 00:00:00 2001 From: Rs-appez <37080870+Rs-appez@users.noreply.github.com> Date: Thu, 17 Sep 2026 10:31:21 +0200 Subject: [PATCH 23/36] [IMP] estate : add tags to property model --- estate/models/estate_property.py | 1 + estate/views/estate_property_views.xml | 4 +++- 2 files changed, 4 insertions(+), 1 deletion(-) diff --git a/estate/models/estate_property.py b/estate/models/estate_property.py index 780f37ede4b..867e42cb36f 100644 --- a/estate/models/estate_property.py +++ b/estate/models/estate_property.py @@ -45,5 +45,6 @@ class Property(models.Model): default="new", ) property_type_id = fields.Many2one("estate.property.type", string="Property Type") + tags_ids = fields.Many2many("estate.property.tag") buyer = fields.Many2one("res.partner", copy=False) salesman = fields.Many2one("res.users", default=lambda self: self.env.user) diff --git a/estate/views/estate_property_views.xml b/estate/views/estate_property_views.xml index b496b9542d0..9f3db4eb6da 100644 --- a/estate/views/estate_property_views.xml +++ b/estate/views/estate_property_views.xml @@ -31,13 +31,14 @@
-

+
+ @@ -91,6 +92,7 @@ + From 58ef4a27776a2a452086e330efe796848594630d Mon Sep 17 00:00:00 2001 From: Rs-appez <37080870+Rs-appez@users.noreply.github.com> Date: Thu, 17 Sep 2026 10:43:15 +0200 Subject: [PATCH 24/36] [CLN] estate : use dot naming for property model id --- estate/models/estate_property.py | 2 +- estate/views/estate_property_views.xml | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/estate/models/estate_property.py b/estate/models/estate_property.py index 867e42cb36f..a510cedcd77 100644 --- a/estate/models/estate_property.py +++ b/estate/models/estate_property.py @@ -2,7 +2,7 @@ class Property(models.Model): - _name = "estate_property" + _name = "estate.property" _description = "Estate Property" name = fields.Char(required=True) diff --git a/estate/views/estate_property_views.xml b/estate/views/estate_property_views.xml index 9f3db4eb6da..51d7b59ccea 100644 --- a/estate/views/estate_property_views.xml +++ b/estate/views/estate_property_views.xml @@ -3,7 +3,7 @@ estate_property.search - estate_property + estate.property @@ -26,7 +26,7 @@ estate_property.form - estate_property + estate.property @@ -81,7 +81,7 @@ estate_property.list - estate_property + estate.property @@ -99,7 +99,7 @@ Properties - estate_property + estate.property list,form \ No newline at end of file From 9cc0477fb52d625b56ba70840994ea5f819d3766 Mon Sep 17 00:00:00 2001 From: Appez <37080870+Rs-appez@users.noreply.github.com> Date: Thu, 17 Sep 2026 11:02:16 +0200 Subject: [PATCH 25/36] [CLN] estate : fix author MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Leclerc Léo (leol) <74907637+leclerc-leo@users.noreply.github.com> --- estate/__manifest__.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/estate/__manifest__.py b/estate/__manifest__.py index b6ed42bbb5a..e634ed29441 100644 --- a/estate/__manifest__.py +++ b/estate/__manifest__.py @@ -1,7 +1,7 @@ { "name": "estate", "license": "LGPL-3", - "author": "alpir", + "author": "Odoo S.A.", "application": True, "depends": ["base"], "data": [ From 1d810211dc271f617fe9bc7f977b827d011efbec Mon Sep 17 00:00:00 2001 From: Rs-appez <37080870+Rs-appez@users.noreply.github.com> Date: Thu, 17 Sep 2026 10:49:14 +0200 Subject: [PATCH 26/36] [IMP] estate : add property offer model --- estate/__manifest__.py | 1 + estate/models/__init__.py | 5 +++- estate/models/estate_property_offer.py | 13 ++++++++ estate/security/ir.model.access.csv | 1 + estate/views/estate_property_offer_views.xml | 31 ++++++++++++++++++++ 5 files changed, 50 insertions(+), 1 deletion(-) 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 e634ed29441..c2052e34fff 100644 --- a/estate/__manifest__.py +++ b/estate/__manifest__.py @@ -5,6 +5,7 @@ "application": True, "depends": ["base"], "data": [ + "views/estate_property_offer_views.xml", "views/estate_property_tag_views.xml", "views/estate_property_views.xml", "views/estate_property_type_views.xml", diff --git a/estate/models/__init__.py b/estate/models/__init__.py index 95039dab5e2..8f2187ee09e 100644 --- a/estate/models/__init__.py +++ b/estate/models/__init__.py @@ -1 +1,4 @@ -from . import estate_property, estate_property_tag, estate_property_type +from . import estate_property +from . import estate_property_offer +from . import estate_property_tag +from . import estate_property_type diff --git a/estate/models/estate_property_offer.py b/estate/models/estate_property_offer.py new file mode 100644 index 00000000000..50991f9a00f --- /dev/null +++ b/estate/models/estate_property_offer.py @@ -0,0 +1,13 @@ +from odoo import fields, models + + +class PropertyType(models.Model): + _name = "estate.property.offer" + _description = "Estate Property Offer" + + price = fields.Float() + status = fields.Selection( + copy=False, selection=[("accepted", "Accepted"), ("refused", "Refused")] + ) + 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 0f0b52fde27..77be728b313 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_ir_estate_property_user,ir_estate_property_user,model_estate_property,base.group_user,1,1,1,1 access_ir_estate_property_type_user,ir_estate_property_type_user,model_estate_property_type,base.group_user,1,1,1,1 access_ir_estate_property_tag_user,ir_estate_property_tag_user,model_estate_property_tag,base.group_user,1,1,1,1 +access_ir_estate_property_offer_user,ir_estate_property_offer_user,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..27fd1290bf3 --- /dev/null +++ b/estate/views/estate_property_offer_views.xml @@ -0,0 +1,31 @@ + + + + + estate_property_offer.form + estate.property.offer + + + + + + + + + + + + + + + estate_property_offer.list + estate.property.offer + + + + + + + + + \ No newline at end of file From 9f01b6d5edc76d608c8430baaf4742bcaab6b669 Mon Sep 17 00:00:00 2001 From: Appez <37080870+Rs-appez@users.noreply.github.com> Date: Thu, 17 Sep 2026 11:08:31 +0200 Subject: [PATCH 27/36] [CLN] estate : use self instead of _ MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Leclerc Léo (leol) <74907637+leclerc-leo@users.noreply.github.com> --- estate/models/estate_property.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/estate/models/estate_property.py b/estate/models/estate_property.py index a510cedcd77..5e46063a036 100644 --- a/estate/models/estate_property.py +++ b/estate/models/estate_property.py @@ -10,7 +10,7 @@ class Property(models.Model): description = fields.Text() date_availability = fields.Date( copy=False, - default=lambda _: fields.Date.add(fields.Date.today(), months=3), + default=lambda self: fields.Date.add(fields.Date.today(), months=3), ) expected_price = fields.Float(required=True) selling_price = fields.Float(readonly=True, copy=False) From 090bc296d6e9cbd286278b63b649de22534d02ee Mon Sep 17 00:00:00 2001 From: Rs-appez <37080870+Rs-appez@users.noreply.github.com> Date: Thu, 17 Sep 2026 11:20:51 +0200 Subject: [PATCH 28/36] [CLN] estate : add newline to the end of the file --- estate/views/estate_menus.xml | 2 +- estate/views/estate_property_offer_views.xml | 2 +- estate/views/estate_property_tag_views.xml | 2 +- estate/views/estate_property_type_views.xml | 2 +- estate/views/estate_property_views.xml | 2 +- 5 files changed, 5 insertions(+), 5 deletions(-) diff --git a/estate/views/estate_menus.xml b/estate/views/estate_menus.xml index 7230d8168ff..70d1ec875ab 100644 --- a/estate/views/estate_menus.xml +++ b/estate/views/estate_menus.xml @@ -11,4 +11,4 @@ action="estate_property_tag_model_action" />
-
\ No newline at end of file + diff --git a/estate/views/estate_property_offer_views.xml b/estate/views/estate_property_offer_views.xml index 27fd1290bf3..e25d22e7692 100644 --- a/estate/views/estate_property_offer_views.xml +++ b/estate/views/estate_property_offer_views.xml @@ -28,4 +28,4 @@ - \ No newline at end of file + diff --git a/estate/views/estate_property_tag_views.xml b/estate/views/estate_property_tag_views.xml index 0a0db0fdb30..50a2527c2d3 100644 --- a/estate/views/estate_property_tag_views.xml +++ b/estate/views/estate_property_tag_views.xml @@ -5,4 +5,4 @@ estate.property.tag list,form - \ No newline at end of file + diff --git a/estate/views/estate_property_type_views.xml b/estate/views/estate_property_type_views.xml index 765b92ed551..048b808ba00 100644 --- a/estate/views/estate_property_type_views.xml +++ b/estate/views/estate_property_type_views.xml @@ -35,4 +35,4 @@ estate.property.type list,form - \ No newline at end of file + diff --git a/estate/views/estate_property_views.xml b/estate/views/estate_property_views.xml index 51d7b59ccea..d22a2effc75 100644 --- a/estate/views/estate_property_views.xml +++ b/estate/views/estate_property_views.xml @@ -102,4 +102,4 @@ estate.property list,form - \ No newline at end of file + From 15ea87037b208290d7fbe9072fe5c29d190f3029 Mon Sep 17 00:00:00 2001 From: Rs-appez <37080870+Rs-appez@users.noreply.github.com> Date: Thu, 17 Sep 2026 11:37:03 +0200 Subject: [PATCH 29/36] [IMP] estate : add offers to the property model --- estate/models/estate_property.py | 1 + estate/views/estate_property_views.xml | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/estate/models/estate_property.py b/estate/models/estate_property.py index 5e46063a036..674f7296626 100644 --- a/estate/models/estate_property.py +++ b/estate/models/estate_property.py @@ -48,3 +48,4 @@ class Property(models.Model): tags_ids = fields.Many2many("estate.property.tag") buyer = fields.Many2one("res.partner", copy=False) salesman = fields.Many2one("res.users", default=lambda self: self.env.user) + offer_ids = fields.One2many("estate.property.offer", "property_id", string="Offers") diff --git a/estate/views/estate_property_views.xml b/estate/views/estate_property_views.xml index d22a2effc75..1d1f922e7f4 100644 --- a/estate/views/estate_property_views.xml +++ b/estate/views/estate_property_views.xml @@ -67,6 +67,11 @@ + + + + + From 979a4b4cb568e546ec2edc3a4f1b975091326ad5 Mon Sep 17 00:00:00 2001 From: Rs-appez <37080870+Rs-appez@users.noreply.github.com> Date: Thu, 17 Sep 2026 13:11:49 +0200 Subject: [PATCH 30/36] [IMP] estate : add total area field to property model --- estate/models/estate_property.py | 8 +++++++- estate/views/estate_property_views.xml | 1 + 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/estate/models/estate_property.py b/estate/models/estate_property.py index 674f7296626..c0217af985e 100644 --- a/estate/models/estate_property.py +++ b/estate/models/estate_property.py @@ -1,4 +1,4 @@ -from odoo import fields, models +from odoo import api, fields, models class Property(models.Model): @@ -30,6 +30,7 @@ class Property(models.Model): ], help="The garden orientation", ) + total_area = fields.Integer(compute="_compute_total_area") active = fields.Boolean("Active", default=True) state = fields.Selection( string="State", @@ -49,3 +50,8 @@ class Property(models.Model): buyer = fields.Many2one("res.partner", copy=False) salesman = fields.Many2one("res.users", default=lambda self: self.env.user) offer_ids = fields.One2many("estate.property.offer", "property_id", string="Offers") + + @api.depends("living_area", "living_area") + def _compute_total_area(self): + for record in self: + record.total_area = record.living_area + record.garden_area diff --git a/estate/views/estate_property_views.xml b/estate/views/estate_property_views.xml index 1d1f922e7f4..9e3c5beb7f8 100644 --- a/estate/views/estate_property_views.xml +++ b/estate/views/estate_property_views.xml @@ -65,6 +65,7 @@ + From 8b27c3ed857b26cb51ad2055f5a5e8550a8fae12 Mon Sep 17 00:00:00 2001 From: Rs-appez <37080870+Rs-appez@users.noreply.github.com> Date: Thu, 17 Sep 2026 13:14:14 +0200 Subject: [PATCH 31/36] [IMP] estate : add more unit in area label field --- estate/models/estate_property.py | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/estate/models/estate_property.py b/estate/models/estate_property.py index c0217af985e..063c398fa02 100644 --- a/estate/models/estate_property.py +++ b/estate/models/estate_property.py @@ -15,11 +15,11 @@ class Property(models.Model): expected_price = fields.Float(required=True) selling_price = fields.Float(readonly=True, copy=False) bedrooms = fields.Integer(default=2) - living_area = fields.Integer() + living_area = fields.Integer("Living Area (sqm)") facades = fields.Integer() garage = fields.Boolean() garden = fields.Boolean() - garden_area = fields.Integer() + garden_area = fields.Integer("Garden area (sqm)") garden_orientation = fields.Selection( string="Orientation", selection=[ @@ -30,7 +30,7 @@ class Property(models.Model): ], help="The garden orientation", ) - total_area = fields.Integer(compute="_compute_total_area") + total_area = fields.Integer("Total Area (sqm)", compute="_compute_total_area") active = fields.Boolean("Active", default=True) state = fields.Selection( string="State", From c991d6e573ced1d9e20874228fb09fc03efd883e Mon Sep 17 00:00:00 2001 From: Rs-appez <37080870+Rs-appez@users.noreply.github.com> Date: Thu, 17 Sep 2026 13:32:26 +0200 Subject: [PATCH 32/36] [IMP] estate : add best price field to property model --- estate/models/estate_property.py | 9 +++++++++ estate/views/estate_property_views.xml | 3 ++- 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/estate/models/estate_property.py b/estate/models/estate_property.py index 063c398fa02..30c194d91a1 100644 --- a/estate/models/estate_property.py +++ b/estate/models/estate_property.py @@ -13,6 +13,7 @@ class Property(models.Model): default=lambda self: fields.Date.add(fields.Date.today(), months=3), ) expected_price = fields.Float(required=True) + best_price = fields.Float(compute="_find_best_price") selling_price = fields.Float(readonly=True, copy=False) bedrooms = fields.Integer(default=2) living_area = fields.Integer("Living Area (sqm)") @@ -55,3 +56,11 @@ class Property(models.Model): def _compute_total_area(self): for record in self: record.total_area = record.living_area + record.garden_area + + @api.depends("offer_ids.price") + def _find_best_price(self): + for record in self: + if not record.offer_ids: + record.best_price = 0 + else: + record.best_price = max(record.offer_ids.mapped("price")) diff --git a/estate/views/estate_property_views.xml b/estate/views/estate_property_views.xml index 9e3c5beb7f8..7593b5f7ed1 100644 --- a/estate/views/estate_property_views.xml +++ b/estate/views/estate_property_views.xml @@ -38,7 +38,7 @@ - + @@ -50,6 +50,7 @@ + From 17dbd973e0033ef711add8e234012e85d2d3dfc9 Mon Sep 17 00:00:00 2001 From: Rs-appez <37080870+Rs-appez@users.noreply.github.com> Date: Thu, 17 Sep 2026 15:39:21 +0200 Subject: [PATCH 33/36] [IMP] estate : add deadline and validity field to property offer model --- estate/models/estate_property_offer.py | 21 ++++++++++++++++++-- estate/views/estate_property_offer_views.xml | 6 +++++- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/estate/models/estate_property_offer.py b/estate/models/estate_property_offer.py index 50991f9a00f..1a560f2fe19 100644 --- a/estate/models/estate_property_offer.py +++ b/estate/models/estate_property_offer.py @@ -1,4 +1,4 @@ -from odoo import fields, models +from odoo import api, fields, models class PropertyType(models.Model): @@ -7,7 +7,24 @@ class PropertyType(models.Model): price = fields.Float() status = fields.Selection( - copy=False, selection=[("accepted", "Accepted"), ("refused", "Refused")] + copy=False, + selection=[("accepted", "Accepted"), ("refused", "Refused")], ) partner_id = fields.Many2one("res.partner", required=True) property_id = fields.Many2one("estate.property", required=True) + validity = fields.Integer("Validity (Days)", default=7) + date_deadline = fields.Date( + compute="_compute_deadline", + inverse="_inverse_deadline", + ) + + @api.depends("validity") + def _compute_deadline(self): + for record in self: + create_date = record.create_date or fields.Date.today() + record.date_deadline = fields.Date.add(create_date, days=record.validity) + + def _inverse_deadline(self): + for record in self: + create_date = record.create_date or fields.Date.today() + record.validity = (record.date_deadline - fields.Date.to_date(create_date)).days diff --git a/estate/views/estate_property_offer_views.xml b/estate/views/estate_property_offer_views.xml index e25d22e7692..0f4da46e00f 100644 --- a/estate/views/estate_property_offer_views.xml +++ b/estate/views/estate_property_offer_views.xml @@ -9,8 +9,10 @@ - + + + @@ -24,6 +26,8 @@ + + From f945a7519b31d120c10c9ecd601a718253c8fde8 Mon Sep 17 00:00:00 2001 From: Rs-appez <37080870+Rs-appez@users.noreply.github.com> Date: Thu, 17 Sep 2026 15:58:38 +0200 Subject: [PATCH 34/36] [IMP] estate : add onchange on garden field --- estate/models/estate_property.py | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/estate/models/estate_property.py b/estate/models/estate_property.py index 30c194d91a1..168585d076b 100644 --- a/estate/models/estate_property.py +++ b/estate/models/estate_property.py @@ -64,3 +64,12 @@ def _find_best_price(self): record.best_price = 0 else: record.best_price = max(record.offer_ids.mapped("price")) + + @api.onchange("garden") + def _onchange_garden(self): + if self.garden: + self.garden_area = 10 + self.garden_orientation = "north" + else: + self.garden_area = 0 + self.garden_orientation = None From 5962249f4ff1892abbbac59ae78d641736a434f9 Mon Sep 17 00:00:00 2001 From: Rs-appez <37080870+Rs-appez@users.noreply.github.com> Date: Thu, 17 Sep 2026 16:18:21 +0200 Subject: [PATCH 35/36] [IMP] estate : add btn to sold and cancel property --- estate/models/estate_property.py | 19 ++++++++++++++++++- estate/views/estate_property_views.xml | 6 +++++- 2 files changed, 23 insertions(+), 2 deletions(-) diff --git a/estate/models/estate_property.py b/estate/models/estate_property.py index 168585d076b..3c7303aea26 100644 --- a/estate/models/estate_property.py +++ b/estate/models/estate_property.py @@ -1,4 +1,5 @@ -from odoo import api, fields, models +from odoo import _, api, fields, models +from odoo.exceptions import UserError class Property(models.Model): @@ -73,3 +74,19 @@ def _onchange_garden(self): else: self.garden_area = 0 self.garden_orientation = None + + # ------------------------------------------------------------ + # ACTIONS + # ------------------------------------------------------------ + + def action_sold_property(self): + for record in self: + if record.state == "cancelled": + raise UserError(_("Cancelled property cannot be sold.")) + record.state = "sold" + return True + + def action_cancel_property(self): + for record in self: + record.state = "cancelled" + return True diff --git a/estate/views/estate_property_views.xml b/estate/views/estate_property_views.xml index 7593b5f7ed1..f819c620bc3 100644 --- a/estate/views/estate_property_views.xml +++ b/estate/views/estate_property_views.xml @@ -29,6 +29,10 @@ estate.property
+
+
@@ -42,8 +46,8 @@ + - From e6f7271ec832c29f5b67f845f92734b8e2e80650 Mon Sep 17 00:00:00 2001 From: Rs-appez <37080870+Rs-appez@users.noreply.github.com> Date: Thu, 17 Sep 2026 16:45:07 +0200 Subject: [PATCH 36/36] [IMP] estate : add btn to accept/refuse offer --- estate/models/estate_property_offer.py | 18 +++++++++++++++++- estate/views/estate_property_offer_views.xml | 4 ++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/estate/models/estate_property_offer.py b/estate/models/estate_property_offer.py index 1a560f2fe19..501022a17aa 100644 --- a/estate/models/estate_property_offer.py +++ b/estate/models/estate_property_offer.py @@ -27,4 +27,20 @@ def _compute_deadline(self): def _inverse_deadline(self): for record in self: create_date = record.create_date or fields.Date.today() - record.validity = (record.date_deadline - fields.Date.to_date(create_date)).days + record.validity = ( + record.date_deadline - fields.Date.to_date(create_date) + ).days + + # ------------------------------------------------------------ + # ACTIONS + # ------------------------------------------------------------ + + def action_accept_offer(self): + for record in self: + record.status = "accepted" + return True + + def action_refuse_offer(self): + for record in self: + record.status = "refused" + return True diff --git a/estate/views/estate_property_offer_views.xml b/estate/views/estate_property_offer_views.xml index 0f4da46e00f..898973540d6 100644 --- a/estate/views/estate_property_offer_views.xml +++ b/estate/views/estate_property_offer_views.xml @@ -28,6 +28,10 @@ +