From 742f0508dab223285f92dc3c3dce20bd835c3beb Mon Sep 17 00:00:00 2001 From: lkerroum Date: Mon, 15 Dec 2025 14:08:02 +0100 Subject: [PATCH 01/12] [ADD] estate: new app real estate --- estate/__init__.py | 0 estate/__manifest__.py | 6 ++++++ 2 files changed, 6 insertions(+) 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..f8c00b763bd --- /dev/null +++ b/estate/__manifest__.py @@ -0,0 +1,6 @@ +# -*- coding: utf-8 -*- +{ + 'name': 'Real Estate', + 'depends': ['base'], + 'application': True +} \ No newline at end of file From 5938937b41a286de9183e958bb81f24e406473ef Mon Sep 17 00:00:00 2001 From: lkerroum Date: Mon, 15 Dec 2025 14:27:11 +0100 Subject: [PATCH 02/12] [IMP] manifest: author and license --- estate/__manifest__.py | 12 ++++++------ estate/models/__init__.py | 1 + estate/models/estate_property.py | 5 +++++ 3 files changed, 12 insertions(+), 6 deletions(-) create mode 100644 estate/models/__init__.py create mode 100644 estate/models/estate_property.py diff --git a/estate/__manifest__.py b/estate/__manifest__.py index f8c00b763bd..1167e96a793 100644 --- a/estate/__manifest__.py +++ b/estate/__manifest__.py @@ -1,6 +1,6 @@ -# -*- coding: utf-8 -*- -{ - 'name': 'Real Estate', - 'depends': ['base'], - 'application': True -} \ No newline at end of file +{'name': 'Real Estate', +'depends': ['base'], +'application': True, +'author': 'leker', +'license': 'LGPL-3', +} 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..ca996f4f336 --- /dev/null +++ b/estate/models/estate_property.py @@ -0,0 +1,5 @@ +from odoo import models + + +class Property(models.Model): + _name = "estate.property" From 158ef206ca69939db98ccc48714ee588813b5dc4 Mon Sep 17 00:00:00 2001 From: lkerroum Date: Mon, 15 Dec 2025 16:09:25 +0100 Subject: [PATCH 03/12] [IMP] estate: real estate properties model definition --- estate/__init__.py | 1 + estate/models/estate_property.py | 22 +++++++++++++++++++++- 2 files changed, 22 insertions(+), 1 deletion(-) 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/estate_property.py b/estate/models/estate_property.py index ca996f4f336..7a950ff1575 100644 --- a/estate/models/estate_property.py +++ b/estate/models/estate_property.py @@ -1,5 +1,25 @@ -from odoo import models +from odoo import fields, models class Property(models.Model): _name = "estate.property" + _description = "Real Estate application" + + name = fields.Char('Name', required=True) + description = fields.Text('Description') + postcode = fields.Float('Postcode') + date_availability = fields.Date('Date availability') + expected_price = fields.Float('Expected price', required=True) + selling_price = fields.Float('Selling price') + bedrooms = fields.Integer('Bedrooms') + living_area = fields.Integer('Living area') + facades = fields.Integer('Facades') + garage = fields.Boolean('Garage') + garden = fields.Boolean('Garden') + garden_area = fields.Integer('Garden area') + garden_orientation = fields.Selection([ + ('north', 'North'), + ('south', 'South'), + ('east', 'East'), + ('west', 'West'), + ], string='Garden Orientation') From 397096bd7f7871f5bf9706ee899d0ee55877d3f4 Mon Sep 17 00:00:00 2001 From: lkerroum Date: Mon, 15 Dec 2025 16:28:46 +0100 Subject: [PATCH 04/12] [IMP] estate: added access rights --- estate/security/ir.model.access.csv | 2 ++ 1 file changed, 2 insertions(+) create mode 100644 estate/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..98f4671fb0d --- /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 +estate.access_estate_property,access_estate_property,estate.model_estate_property,base.group_user,1,1,1,1 From cb5ea9111f2f3aaffcd8a7a344555af84bca4ad4 Mon Sep 17 00:00:00 2001 From: lkerroum Date: Mon, 15 Dec 2025 17:16:44 +0100 Subject: [PATCH 05/12] [IMP] estate: added new record action and menu --- estate/__manifest__.py | 14 +++++++++----- estate/views/estate_menus.xml | 8 ++++++++ estate/views/estate_property_views.xml | 8 ++++++++ 3 files changed, 25 insertions(+), 5 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 1167e96a793..5d9243750d2 100644 --- a/estate/__manifest__.py +++ b/estate/__manifest__.py @@ -1,6 +1,10 @@ -{'name': 'Real Estate', -'depends': ['base'], -'application': True, -'author': 'leker', -'license': 'LGPL-3', +{ + 'name': 'Real Estate', + 'depends': ['base'], + 'data': ['security/ir.model.access.csv', + 'views/estate_property_views.xml', + 'views/estate_menus.xml'], + 'application': True, + 'author': 'leker', + 'license': 'LGPL-3', } diff --git a/estate/views/estate_menus.xml b/estate/views/estate_menus.xml new file mode 100644 index 00000000000..5f65ad4149b --- /dev/null +++ b/estate/views/estate_menus.xml @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/estate/views/estate_property_views.xml b/estate/views/estate_property_views.xml new file mode 100644 index 00000000000..00e46e6af18 --- /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 82eacb163df09bfdd090bff416c59160f82922da Mon Sep 17 00:00:00 2001 From: lkerroum Date: Tue, 16 Dec 2025 14:39:46 +0100 Subject: [PATCH 06/12] [IMP] estate: added new fields and attributes to property model --- estate/models/estate_property.py | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/estate/models/estate_property.py b/estate/models/estate_property.py index 7a950ff1575..0d07b30a645 100644 --- a/estate/models/estate_property.py +++ b/estate/models/estate_property.py @@ -5,13 +5,22 @@ class Property(models.Model): _name = "estate.property" _description = "Real Estate application" - name = fields.Char('Name', required=True) + name = fields.Char('Name', required=True, default='Unknown') + active = fields.Boolean('Active', default=True) + state = fields.Selection([ + ('new', 'New'), + ('received offer', 'Received offer'), + ('offer accepted', 'Offer Accepted'), + ('sold', 'Sold'), + ('cancelled', 'Cancelled'), + ], string='State', required=True, copy=False, default='new') description = fields.Text('Description') + last_seen = fields.Datetime("Last Seen", default=fields.Datetime.now) postcode = fields.Float('Postcode') - date_availability = fields.Date('Date availability') + date_availability = fields.Date('Date availability', copy=False, default=fields.Date.add(fields.Date.today(), months=3)) expected_price = fields.Float('Expected price', required=True) - selling_price = fields.Float('Selling price') - bedrooms = fields.Integer('Bedrooms') + selling_price = fields.Float('Selling price', readonly=True, copy=False) + bedrooms = fields.Integer('Bedrooms', default=2) living_area = fields.Integer('Living area') facades = fields.Integer('Facades') garage = fields.Boolean('Garage') From 2eca71d11bb47180a9fd99c74712534a8fe3641a Mon Sep 17 00:00:00 2001 From: lkerroum Date: Wed, 17 Dec 2025 09:52:39 +0100 Subject: [PATCH 07/12] [IMP] estate: added list, form and search views --- estate/models/estate_property.py | 12 ++-- estate/views/estate_property_views.xml | 77 ++++++++++++++++++++++++++ 2 files changed, 83 insertions(+), 6 deletions(-) diff --git a/estate/models/estate_property.py b/estate/models/estate_property.py index 0d07b30a645..999797bb0d8 100644 --- a/estate/models/estate_property.py +++ b/estate/models/estate_property.py @@ -5,7 +5,7 @@ class Property(models.Model): _name = "estate.property" _description = "Real Estate application" - name = fields.Char('Name', required=True, default='Unknown') + name = fields.Char('Title', required=True, default='Unknown') active = fields.Boolean('Active', default=True) state = fields.Selection([ ('new', 'New'), @@ -15,17 +15,17 @@ class Property(models.Model): ('cancelled', 'Cancelled'), ], string='State', required=True, copy=False, default='new') description = fields.Text('Description') - last_seen = fields.Datetime("Last Seen", default=fields.Datetime.now) - postcode = fields.Float('Postcode') - date_availability = fields.Date('Date availability', copy=False, default=fields.Date.add(fields.Date.today(), months=3)) + last_seen = fields.Datetime("Last Seen", default=fields.Datetime.now()) + postcode = fields.Char('Postcode') + date_availability = fields.Date('Available from', copy=False, default=fields.Date.add(fields.Date.today(), months=3)) expected_price = fields.Float('Expected price', required=True) selling_price = fields.Float('Selling price', readonly=True, copy=False) bedrooms = fields.Integer('Bedrooms', default=2) - living_area = fields.Integer('Living area') + 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') + garden_area = fields.Integer('Garden area (sqm)') garden_orientation = fields.Selection([ ('north', 'North'), ('south', 'South'), diff --git a/estate/views/estate_property_views.xml b/estate/views/estate_property_views.xml index 00e46e6af18..43fbb8af547 100644 --- a/estate/views/estate_property_views.xml +++ b/estate/views/estate_property_views.xml @@ -1,8 +1,85 @@ + + estate.property.search + estate.property + + + + + + + + + + + + + + + + + Properties estate.property list,form + + + estate.property.list + estate.property + + + + + + + + + + + + + + + estate.property.form + estate.property + +
+ + +

+ +

+
+ + + + + + + + + + + + + + + + + + + + + + + + +
+
+
+
+
\ No newline at end of file From 293c5e9594f7fb44ea22707bf27cb40d08545fe0 Mon Sep 17 00:00:00 2001 From: lkerroum Date: Wed, 17 Dec 2025 13:27:03 +0100 Subject: [PATCH 08/12] [FIX] estate: default time values made lambda functions --- 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 999797bb0d8..43b37159fbb 100644 --- a/estate/models/estate_property.py +++ b/estate/models/estate_property.py @@ -15,9 +15,9 @@ class Property(models.Model): ('cancelled', 'Cancelled'), ], string='State', required=True, copy=False, default='new') description = fields.Text('Description') - last_seen = fields.Datetime("Last Seen", default=fields.Datetime.now()) + last_seen = fields.Datetime("Last Seen", default=lambda self: fields.Datetime.now()) postcode = fields.Char('Postcode') - date_availability = fields.Date('Available from', copy=False, default=fields.Date.add(fields.Date.today(), months=3)) + date_availability = fields.Date('Available from', copy=False, default=lambda self: fields.Date.add(fields.Date.today(), months=3)) expected_price = fields.Float('Expected price', required=True) selling_price = fields.Float('Selling price', readonly=True, copy=False) bedrooms = fields.Integer('Bedrooms', default=2) From 1eefdb976c0e259db61b9bc61c76e96d4241fc1b Mon Sep 17 00:00:00 2001 From: lkerroum Date: Wed, 17 Dec 2025 13:43:26 +0100 Subject: [PATCH 09/12] [FIX] estate: model property description updated --- 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 43b37159fbb..f7f397ad869 100644 --- a/estate/models/estate_property.py +++ b/estate/models/estate_property.py @@ -3,7 +3,7 @@ class Property(models.Model): _name = "estate.property" - _description = "Real Estate application" + _description = "Real Estate property" name = fields.Char('Title', required=True, default='Unknown') active = fields.Boolean('Active', default=True) From 48c70afc8f77164c46931dc0de50e1a832c042ab Mon Sep 17 00:00:00 2001 From: lkerroum Date: Thu, 18 Dec 2025 10:23:46 +0100 Subject: [PATCH 10/12] [IMP] estate: new model property type, many2one fields in property: type, salesperson, buyer --- estate/__manifest__.py | 1 + estate/models/__init__.py | 2 +- estate/models/estate_property.py | 3 +++ estate/models/estate_property_type.py | 8 ++++++++ estate/security/ir.model.access.csv | 1 + estate/views/estate_menus.xml | 5 ++++- estate/views/estate_property_type_views.xml | 8 ++++++++ estate/views/estate_property_views.xml | 12 ++++++++++-- 8 files changed, 36 insertions(+), 4 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 5d9243750d2..01c68554c65 100644 --- a/estate/__manifest__.py +++ b/estate/__manifest__.py @@ -3,6 +3,7 @@ 'depends': ['base'], 'data': ['security/ir.model.access.csv', 'views/estate_property_views.xml', + 'views/estate_property_type_views.xml', 'views/estate_menus.xml'], 'application': True, 'author': 'leker', 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.py b/estate/models/estate_property.py index f7f397ad869..abe8eb3c687 100644 --- a/estate/models/estate_property.py +++ b/estate/models/estate_property.py @@ -32,3 +32,6 @@ class Property(models.Model): ('east', 'East'), ('west', 'West'), ], string='Garden Orientation') + property_type_id = fields.Many2one('estate.property.type', string="Property Type") + salesperson_id = fields.Many2one('res.users', string="Salesperson", default=lambda self: self.env.user) + buyer_id = fields.Many2one('res.partner', string="Buyer", copy=False) diff --git a/estate/models/estate_property_type.py b/estate/models/estate_property_type.py new file mode 100644 index 00000000000..a304f4603f9 --- /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 = "Real Estate Property Type" + + name = fields.Char(name="Name", required=True) \ No newline at end of file diff --git a/estate/security/ir.model.access.csv b/estate/security/ir.model.access.csv index 98f4671fb0d..7d4c1fcdb86 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 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 diff --git a/estate/views/estate_menus.xml b/estate/views/estate_menus.xml index 5f65ad4149b..73a1c3efa2c 100644 --- a/estate/views/estate_menus.xml +++ b/estate/views/estate_menus.xml @@ -1,8 +1,11 @@ - + + + + \ 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..e50051fee30 --- /dev/null +++ b/estate/views/estate_property_type_views.xml @@ -0,0 +1,8 @@ + + + + Property Types + estate.property.type + list,form + + diff --git a/estate/views/estate_property_views.xml b/estate/views/estate_property_views.xml index 43fbb8af547..3b0c5b2398d 100644 --- a/estate/views/estate_property_views.xml +++ b/estate/views/estate_property_views.xml @@ -7,10 +7,11 @@ - + + @@ -32,6 +33,7 @@ + @@ -55,6 +57,7 @@ + @@ -76,10 +79,15 @@ + + + + + + - \ No newline at end of file From ee6976234a9b891437bebd5bbfbe8293b451b32e Mon Sep 17 00:00:00 2001 From: lkerroum Date: Thu, 18 Dec 2025 11:00:58 +0100 Subject: [PATCH 11/12] [IMP] estate: new model property tag, many2many field in property --- estate/__manifest__.py | 1 + estate/models/__init__.py | 2 +- estate/models/estate_property.py | 1 + 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 | 1 + estate/views/estate_property_tag_views.xml | 8 ++++++++ estate/views/estate_property_views.xml | 2 ++ 9 files changed, 24 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 01c68554c65..390656a8aef 100644 --- a/estate/__manifest__.py +++ b/estate/__manifest__.py @@ -4,6 +4,7 @@ 'data': ['security/ir.model.access.csv', 'views/estate_property_views.xml', 'views/estate_property_type_views.xml', + 'views/estate_property_tag_views.xml', 'views/estate_menus.xml'], 'application': True, 'author': 'leker', 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.py b/estate/models/estate_property.py index abe8eb3c687..d9dddff3259 100644 --- a/estate/models/estate_property.py +++ b/estate/models/estate_property.py @@ -35,3 +35,4 @@ class Property(models.Model): property_type_id = fields.Many2one('estate.property.type', string="Property Type") salesperson_id = fields.Many2one('res.users', string="Salesperson", default=lambda self: self.env.user) buyer_id = fields.Many2one('res.partner', string="Buyer", copy=False) + tag_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..e81886cda38 --- /dev/null +++ b/estate/models/estate_property_tag.py @@ -0,0 +1,8 @@ +from odoo import fields, models + + +class PropertyTag(models.Model): + _name = "estate.property.tag" + _description = "Real Estate Property Tag" + + name = fields.Char(name="Name", required=True) diff --git a/estate/models/estate_property_type.py b/estate/models/estate_property_type.py index a304f4603f9..e63f9942fe2 100644 --- a/estate/models/estate_property_type.py +++ b/estate/models/estate_property_type.py @@ -5,4 +5,4 @@ class PropertyType(models.Model): _name = "estate.property.type" _description = "Real Estate Property Type" - name = fields.Char(name="Name", required=True) \ No newline at end of file + name = fields.Char(name="Name", required=True) diff --git a/estate/security/ir.model.access.csv b/estate/security/ir.model.access.csv index 7d4c1fcdb86..5558d0fbc60 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 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 +estate.access_estate_property_tag,access_estate_property_tag,estate.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 73a1c3efa2c..3ede99b0347 100644 --- a/estate/views/estate_menus.xml +++ b/estate/views/estate_menus.xml @@ -6,6 +6,7 @@ + \ 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..4dcd3674e34 --- /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_views.xml b/estate/views/estate_property_views.xml index 3b0c5b2398d..bb681e6f4ee 100644 --- a/estate/views/estate_property_views.xml +++ b/estate/views/estate_property_views.xml @@ -34,6 +34,7 @@ + @@ -57,6 +58,7 @@ + From 5f0c7b74147a1eb9f6e3e955bbb32b42baeef4ef Mon Sep 17 00:00:00 2001 From: lkerroum Date: Thu, 18 Dec 2025 12:49:31 +0100 Subject: [PATCH 12/12] [IMP] estate: new model offer, one 2 many field in property --- estate/__manifest__.py | 1 + estate/models/__init__.py | 7 ++++++- estate/models/estate_property.py | 1 + estate/models/estate_property_offer.py | 14 ++++++++++++++ estate/security/ir.model.access.csv | 1 + estate/views/estate_property_offer_views.xml | 14 ++++++++++++++ estate/views/estate_property_views.xml | 3 +++ 7 files changed, 40 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 390656a8aef..5b416139aac 100644 --- a/estate/__manifest__.py +++ b/estate/__manifest__.py @@ -5,6 +5,7 @@ 'views/estate_property_views.xml', 'views/estate_property_type_views.xml', 'views/estate_property_tag_views.xml', + 'views/estate_property_offer_views.xml', 'views/estate_menus.xml'], 'application': True, 'author': 'leker', diff --git a/estate/models/__init__.py b/estate/models/__init__.py index 95039dab5e2..3683ff97b61 100644 --- a/estate/models/__init__.py +++ b/estate/models/__init__.py @@ -1 +1,6 @@ -from . import estate_property, estate_property_tag, estate_property_type +from . import ( + estate_property, + estate_property_offer, + estate_property_tag, + estate_property_type, +) diff --git a/estate/models/estate_property.py b/estate/models/estate_property.py index d9dddff3259..b6a5a4796e5 100644 --- a/estate/models/estate_property.py +++ b/estate/models/estate_property.py @@ -36,3 +36,4 @@ class Property(models.Model): salesperson_id = fields.Many2one('res.users', string="Salesperson", default=lambda self: self.env.user) buyer_id = fields.Many2one('res.partner', string="Buyer", copy=False) 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..852e8a66583 --- /dev/null +++ b/estate/models/estate_property_offer.py @@ -0,0 +1,14 @@ +from odoo import fields, models + + +class PropertyOffer(models.Model): + _name = "estate.property.offer" + _description = "Real Estate Property Offer" + + price = fields.Float(name="Price") + status = fields.Selection([ + ('accepted', 'Accepted'), + ('refused', 'Refused'), + ], string='Status', copy=False) + partner_id = fields.Many2one('res.partner', string="Partner", required=True) + property_id = fields.Many2one('estate.property', string="Property", required=True) diff --git a/estate/security/ir.model.access.csv b/estate/security/ir.model.access.csv index 5558d0fbc60..0c0b62b7fee 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 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 estate.access_estate_property_tag,access_estate_property_tag,estate.model_estate_property_tag,base.group_user,1,1,1,1 +estate.access_estate_property_offer,access_estate_property_offer,estate.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..276a8adebf8 --- /dev/null +++ b/estate/views/estate_property_offer_views.xml @@ -0,0 +1,14 @@ + + + + estate.property.offer.list + 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 bb681e6f4ee..0783e30e117 100644 --- a/estate/views/estate_property_views.xml +++ b/estate/views/estate_property_views.xml @@ -81,6 +81,9 @@ + + +