From 2cc98df4ea36c6c2d56b024f7ff1e14ad04fcde6 Mon Sep 17 00:00:00 2001 From: Denis Roussel Date: Mon, 18 May 2020 08:17:39 +0200 Subject: [PATCH 1/9] [13.0][ADD] realestate_estate --- realestate_estate/README.rst | 70 ++ realestate_estate/__init__.py | 1 + realestate_estate/__manifest__.py | 23 + realestate_estate/data/ir_sequence.xml | 14 + realestate_estate/data/real_estate_type.xml | 21 + realestate_estate/demo/real_estate.xml | 12 + realestate_estate/i18n/fr_BE.po | 751 ++++++++++++++++++ realestate_estate/models/__init__.py | 3 + realestate_estate/models/real_estate.py | 26 + realestate_estate/models/real_estate_type.py | 17 + realestate_estate/models/res_partner.py | 9 + realestate_estate/readme/CONTRIBUTORS.rst | 1 + realestate_estate/readme/DESCRIPTION.rst | 1 + realestate_estate/security/real_estate.xml | 40 + .../security/real_estate_type.xml | 23 + realestate_estate/static/description/icon.png | Bin 0 -> 9455 bytes .../static/description/index.html | 419 ++++++++++ realestate_estate/views/real_estate.xml | 100 +++ realestate_estate/views/real_estate_type.xml | 53 ++ 19 files changed, 1584 insertions(+) create mode 100644 realestate_estate/README.rst create mode 100644 realestate_estate/__init__.py create mode 100644 realestate_estate/__manifest__.py create mode 100644 realestate_estate/data/ir_sequence.xml create mode 100644 realestate_estate/data/real_estate_type.xml create mode 100644 realestate_estate/demo/real_estate.xml create mode 100644 realestate_estate/i18n/fr_BE.po create mode 100644 realestate_estate/models/__init__.py create mode 100644 realestate_estate/models/real_estate.py create mode 100644 realestate_estate/models/real_estate_type.py create mode 100644 realestate_estate/models/res_partner.py create mode 100644 realestate_estate/readme/CONTRIBUTORS.rst create mode 100644 realestate_estate/readme/DESCRIPTION.rst create mode 100644 realestate_estate/security/real_estate.xml create mode 100644 realestate_estate/security/real_estate_type.xml create mode 100644 realestate_estate/static/description/icon.png create mode 100644 realestate_estate/static/description/index.html create mode 100644 realestate_estate/views/real_estate.xml create mode 100644 realestate_estate/views/real_estate_type.xml diff --git a/realestate_estate/README.rst b/realestate_estate/README.rst new file mode 100644 index 0000000..f4fc8da --- /dev/null +++ b/realestate_estate/README.rst @@ -0,0 +1,70 @@ +================= +Realestate Estate +================= + +.. !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png + :target: https://odoo-community.org/page/development-status + :alt: Beta +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fvertical--realestate-lightgray.png?logo=github + :target: https://github.com/OCA/vertical-realestate/tree/13.0/realestate_estate + :alt: OCA/vertical-realestate +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/vertical-realestate-13-0/vertical-realestate-13-0-realestate_estate + :alt: Translate me on Weblate + +|badge1| |badge2| |badge3| |badge4| + +Module to manage Real Estates. + +**Table of contents** + +.. contents:: + :local: + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* ACSONE SA/NV + +Contributors +~~~~~~~~~~~~ + +* Denis Roussel + +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +This module is part of the `OCA/vertical-realestate `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/realestate_estate/__init__.py b/realestate_estate/__init__.py new file mode 100644 index 0000000..0650744 --- /dev/null +++ b/realestate_estate/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/realestate_estate/__manifest__.py b/realestate_estate/__manifest__.py new file mode 100644 index 0000000..5bfc969 --- /dev/null +++ b/realestate_estate/__manifest__.py @@ -0,0 +1,23 @@ +# Copyright 2020 ACSONE SA/NV +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +{ + "name": "Realestate Estate", + "summary": """ + Adds the estate management to realestate""", + "version": "13.0.1.0.0", + "license": "AGPL-3", + "development_status": "Alpha", + "author": "ACSONE SA/NV,Odoo Community Association (OCA)", + "website": "https://github.com/OCA/vertical-realestate", + "depends": ["base", "mail", "realestate"], + "data": [ + "security/real_estate_type.xml", + "views/real_estate_type.xml", + "security/real_estate.xml", + "views/real_estate.xml", + "data/ir_sequence.xml", + "data/real_estate_type.xml", + ], + "demo": ["demo/real_estate.xml"], +} diff --git a/realestate_estate/data/ir_sequence.xml b/realestate_estate/data/ir_sequence.xml new file mode 100644 index 0000000..0bfe7f3 --- /dev/null +++ b/realestate_estate/data/ir_sequence.xml @@ -0,0 +1,14 @@ + + + + + Real Estate + real.estate + RE/ + 5 + 1 + 1 + + + diff --git a/realestate_estate/data/real_estate_type.xml b/realestate_estate/data/real_estate_type.xml new file mode 100644 index 0000000..dfe4bba --- /dev/null +++ b/realestate_estate/data/real_estate_type.xml @@ -0,0 +1,21 @@ + + + + + House + house + + + Flat + flat + + + Office + office + + + Land + land + + diff --git a/realestate_estate/demo/real_estate.xml b/realestate_estate/demo/real_estate.xml new file mode 100644 index 0000000..fc0b154 --- /dev/null +++ b/realestate_estate/demo/real_estate.xml @@ -0,0 +1,12 @@ + + + + + + + diff --git a/realestate_estate/i18n/fr_BE.po b/realestate_estate/i18n/fr_BE.po new file mode 100644 index 0000000..8a7d3c9 --- /dev/null +++ b/realestate_estate/i18n/fr_BE.po @@ -0,0 +1,751 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * realestate_estate +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 13.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2020-06-07 09:56+0000\n" +"PO-Revision-Date: 2020-06-07 09:56+0000\n" +"Last-Translator: \n" +"Language-Team: \n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: \n" +"Plural-Forms: \n" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__message_needaction +msgid "Action Needed" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__active +msgid "Active" +msgstr "Actif" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__active_lang_count +msgid "Active Lang Count" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__activity_ids +msgid "Activities" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__activity_exception_decoration +msgid "Activity Exception Decoration" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__activity_state +msgid "Activity State" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__additional_info +msgid "Additional info" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__type +#: model:ir.model.fields,field_description:realestate_estate.field_res_partner__type +#: model:ir.model.fields,field_description:realestate_estate.field_res_users__type +msgid "Address Type" +msgstr "Type d'adresse" + +#. module: realestate_estate +#: model:ir.model.fields,help:realestate_estate.field_real_estate__lang +msgid "" +"All the emails and documents sent to this contact will be translated in this" +" language." +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__message_attachment_count +msgid "Attachment Count" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__bank_ids +msgid "Banks" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__is_blacklisted +msgid "Blacklist" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__message_bounce +msgid "Bounce" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__channel_ids +msgid "Channels" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,help:realestate_estate.field_real_estate__is_company +msgid "Check if the contact is a company, otherwise it is a person" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,help:realestate_estate.field_real_estate__employee +msgid "Check this box if this contact is an Employee." +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__city +msgid "City" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate_type__code +msgid "Code" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__color +msgid "Color Index" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__commercial_partner_id +msgid "Commercial Entity" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__company_id +msgid "Company" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__company_name +msgid "Company Name" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__commercial_company_name +msgid "Company Name Entity" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__company_type +msgid "Company Type" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__partner_gid +msgid "Company database ID" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__contact_address +msgid "Complete Address" +msgstr "" + +#. module: realestate_estate +#: model:ir.model,name:realestate_estate.model_res_partner +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__child_ids +msgid "Contact" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,help:realestate_estate.field_real_estate__message_bounce +msgid "Counter of the number of bounced emails for this contact" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__country_id +msgid "Country" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__create_uid +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate_type__create_uid +msgid "Created by" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__create_date +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate_type__create_date +msgid "Created on" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__credit_limit +msgid "Credit Limit" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__date +msgid "Date" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__description +msgid "Description" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__display_name +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate_type__display_name +msgid "Display Name" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,help:realestate_estate.field_real_estate__partner_share +msgid "" +"Either customer (not a user), either shared user. Indicated the current " +"partner is a customer without access or with a limited access created for " +"sharing data." +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__email +msgid "Email" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__email_bounced +msgid "Email Bounced" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__email_score +msgid "Email Score" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__employee +msgid "Employee" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields.selection,name:realestate_estate.selection__res_partner__type__real_estate +msgid "Estate" +msgstr "" + +#. module: realestate_estate +#: model:ir.ui.menu,name:realestate_estate.real_estate_menu +#: model_terms:ir.ui.view,arch_db:realestate_estate.real_estate_view_kanban +msgid "Estates" +msgstr "Biens Immobiliers" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__failed_message_ids +msgid "Failed Messages" +msgstr "" + +#. module: realestate_estate +#: model:real.estate.type,name:realestate_estate.real_estate_type_flat +msgid "Flat" +msgstr "Appartement" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__message_follower_ids +msgid "Followers" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__message_channel_ids +msgid "Followers (Channels)" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__message_partner_ids +msgid "Followers (Partners)" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,help:realestate_estate.field_real_estate__email_formatted +msgid "Format email address \"Name \"" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__email_formatted +msgid "Formatted Email" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__partner_latitude +msgid "Geo Latitude" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__partner_longitude +msgid "Geo Longitude" +msgstr "" + +#. module: realestate_estate +#: model_terms:ir.ui.view,arch_db:realestate_estate.real_estate_search_view +msgid "Group By..." +msgstr "" + +#. module: realestate_estate +#: model:real.estate.type,name:realestate_estate.real_estate_type_house +msgid "House" +msgstr "Maison" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__id +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate_type__id +msgid "ID" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__im_status +msgid "IM Status" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__activity_exception_icon +msgid "Icon" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,help:realestate_estate.field_real_estate__activity_exception_icon +msgid "Icon to indicate an exception activity." +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,help:realestate_estate.field_real_estate__message_needaction +#: model:ir.model.fields,help:realestate_estate.field_real_estate__message_unread +msgid "If checked, new messages require your attention." +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,help:realestate_estate.field_real_estate__message_has_error +msgid "If checked, some messages have a delivery error." +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,help:realestate_estate.field_real_estate__team_id +msgid "" +"If set, this Sales Team will be used for sales and assignations related to " +"this partner" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,help:realestate_estate.field_real_estate__is_blacklisted +msgid "" +"If the email address is on the blacklist, the contact won't receive mass " +"mailing anymore, from any list" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__image_1920 +msgid "Image" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__image_1024 +msgid "Image 1024" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__image_128 +msgid "Image 128" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__image_256 +msgid "Image 256" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__image_512 +msgid "Image 512" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__industry_id +msgid "Industry" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,help:realestate_estate.field_real_estate__type +#: model:ir.model.fields,help:realestate_estate.field_res_partner__type +#: model:ir.model.fields,help:realestate_estate.field_res_users__type +msgid "" +"Invoice & Delivery addresses are used in sales orders. Private addresses are" +" only visible by authorized users." +msgstr "" +"Les adresses de facturation et de livraison sont utilisées dans les " +"commandes clients. Les adresses privées ne sont visibles que par les " +"utilisateurs autorisés." + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__message_is_follower +msgid "Is Follower" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__is_company +msgid "Is a Company" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__function +msgid "Job Position" +msgstr "" + +#. module: realestate_estate +#: model:real.estate.type,name:realestate_estate.real_estate_type_land +msgid "Land" +msgstr "Terrain" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__lang +msgid "Language" +msgstr "Langue" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate____last_update +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate_type____last_update +msgid "Last Modified on" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__write_uid +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate_type__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__write_date +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate_type__write_date +msgid "Last Updated on" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__message_main_attachment_id +msgid "Main Attachment" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__message_has_error +msgid "Message Delivery error" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__message_ids +msgid "Messages" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__mobile +msgid "Mobile" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__name +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate_type__name +msgid "Name" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__activity_date_deadline +msgid "Next Activity Deadline" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__activity_summary +msgid "Next Activity Summary" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__activity_type_id +msgid "Next Activity Type" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__email_normalized +msgid "Normalized Email" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__comment +msgid "Notes" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__message_needaction_counter +msgid "Number of Actions" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__message_has_error_counter +msgid "Number of errors" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,help:realestate_estate.field_real_estate__message_needaction_counter +msgid "Number of messages which requires an action" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,help:realestate_estate.field_real_estate__message_has_error_counter +msgid "Number of messages with delivery error" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,help:realestate_estate.field_real_estate__message_unread_counter +msgid "Number of unread messages" +msgstr "" + +#. module: realestate_estate +#: model:real.estate.type,name:realestate_estate.real_estate_type_office +msgid "Office" +msgstr "Bureau" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__parent_name +msgid "Parent name" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__same_vat_partner_id +msgid "Partner with same Tax ID" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__phone +msgid "Phone" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__property_product_pricelist +msgid "Pricelist" +msgstr "" + +#. module: realestate_estate +#: model:ir.actions.act_window,name:realestate_estate.real_estate_act_window +#: model:ir.model,name:realestate_estate.model_real_estate +msgid "Real Estate" +msgstr "Bien Immobilier" + +#. module: realestate_estate +#: model:ir.actions.act_window,name:realestate_estate.real_estate_type_act_window +#: model:ir.model,name:realestate_estate.model_real_estate_type +msgid "Real Estate Type" +msgstr "Type de Bien" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__ref +msgid "Reference" +msgstr "Référence" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__parent_id +msgid "Related Company" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__partner_id +msgid "Related Partner" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__activity_user_id +msgid "Responsible User" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__team_id +msgid "Sales Team" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__user_id +msgid "Salesperson" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__self +msgid "Self" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__partner_share +msgid "Share Partner" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__short_description +msgid "Short Description" +msgstr "Description Courte" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__signup_expiration +msgid "Signup Expiration" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__signup_token +msgid "Signup Token" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__signup_type +msgid "Signup Token Type" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__signup_valid +msgid "Signup Token is Valid" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__signup_url +msgid "Signup URL" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__state_id +msgid "State" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,help:realestate_estate.field_real_estate__activity_state +msgid "" +"Status based on activities\n" +"Overdue: Due date is already passed\n" +"Today: Activity date is today\n" +"Planned: Future activities." +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__street +msgid "Street" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__street2 +msgid "Street2" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__category_id +msgid "Tags" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__vat +msgid "Tax ID" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,help:realestate_estate.field_real_estate__vat +msgid "" +"The Tax Identification Number. Complete it if the contact is subjected to " +"government taxes. Used in some legal statements." +msgstr "" + +#. module: realestate_estate +#: model:ir.model.constraint,message:realestate_estate.constraint_real_estate_type_code_uniq +msgid "The code has to be unique!" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,help:realestate_estate.field_real_estate__user_id +msgid "The internal user in charge of this contact." +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,help:realestate_estate.field_real_estate__email_normalized +msgid "" +"This field is used to search on email address as the primary email field can" +" contain more than strictly an email address." +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,help:realestate_estate.field_real_estate__property_product_pricelist +msgid "" +"This pricelist will be used, instead of the default one, for sales to the " +"current partner" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__tz +msgid "Timezone" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__tz_offset +msgid "Timezone offset" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__title +msgid "Title" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__tracking_emails_count +msgid "Tracking Emails Count" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__type_id +#: model_terms:ir.ui.view,arch_db:realestate_estate.real_estate_search_view +msgid "Type" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,help:realestate_estate.field_real_estate__activity_exception_decoration +msgid "Type of the exception activity on record." +msgstr "" + +#. module: realestate_estate +#: model:ir.ui.menu,name:realestate_estate.real_estate_type_menu +msgid "Types" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__message_unread +msgid "Unread Messages" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__message_unread_counter +msgid "Unread Messages Counter" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__user_ids +msgid "Users" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__website +msgid "Website Link" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__website_message_ids +msgid "Website Messages" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,help:realestate_estate.field_real_estate__website_message_ids +msgid "Website communication history" +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,help:realestate_estate.field_real_estate__tz +msgid "" +"When printing documents and exporting/importing data, time values are computed according to this timezone.\n" +"If the timezone is not set, UTC (Coordinated Universal Time) is used.\n" +"Anywhere else, time values are computed according to the time offset of your web client." +msgstr "" + +#. module: realestate_estate +#: model:ir.model.fields,field_description:realestate_estate.field_real_estate__zip +msgid "Zip" +msgstr "" diff --git a/realestate_estate/models/__init__.py b/realestate_estate/models/__init__.py new file mode 100644 index 0000000..5fd3818 --- /dev/null +++ b/realestate_estate/models/__init__.py @@ -0,0 +1,3 @@ +from . import real_estate +from . import real_estate_type +from . import res_partner diff --git a/realestate_estate/models/real_estate.py b/realestate_estate/models/real_estate.py new file mode 100644 index 0000000..1acf7d6 --- /dev/null +++ b/realestate_estate/models/real_estate.py @@ -0,0 +1,26 @@ +# Copyright 2020 ACSONE SA/NV +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class RealEstate(models.Model): + + _name = "real.estate" + _inherit = "realestate.abstract.entity" + _description = "Real Estate" + + name = fields.Char(required=True,) + + type_id = fields.Many2one( + comodel_name="real.estate.type", required=True, ondelete="restrict", index=True, + ) + ref = fields.Char( + default=lambda self: self.env["ir.sequence"].next_by_code("real.estate"), + string="Reference", + index=True, + copy=False, + readonly=True, + ) + short_description = fields.Char(translate=True, size=50,) + description = fields.Text(translate=True,) diff --git a/realestate_estate/models/real_estate_type.py b/realestate_estate/models/real_estate_type.py new file mode 100644 index 0000000..8e51676 --- /dev/null +++ b/realestate_estate/models/real_estate_type.py @@ -0,0 +1,17 @@ +# Copyright 2020 ACSONE SA/NV +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class RealEstateType(models.Model): + + _name = "real.estate.type" + _description = "Real Estate Type" + + name = fields.Char(required=True, translate=True) + code = fields.Char(required=True, index=True,) + + _sql_constraints = [ + ("code_uniq", "unique (code)", "The code has to be unique!"), + ] diff --git a/realestate_estate/models/res_partner.py b/realestate_estate/models/res_partner.py new file mode 100644 index 0000000..94cd7e5 --- /dev/null +++ b/realestate_estate/models/res_partner.py @@ -0,0 +1,9 @@ +# Copyright 2020 ACSONE SA/NV +# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class ResPartner(models.Model): + _inherit = "res.partner" + type = fields.Selection(selection_add=[("real.estate", "Estate")], readonly=False) diff --git a/realestate_estate/readme/CONTRIBUTORS.rst b/realestate_estate/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..9179ee4 --- /dev/null +++ b/realestate_estate/readme/CONTRIBUTORS.rst @@ -0,0 +1 @@ +* Denis Roussel diff --git a/realestate_estate/readme/DESCRIPTION.rst b/realestate_estate/readme/DESCRIPTION.rst new file mode 100644 index 0000000..e5b017d --- /dev/null +++ b/realestate_estate/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +Module to manage Real Estates. diff --git a/realestate_estate/security/real_estate.xml b/realestate_estate/security/real_estate.xml new file mode 100644 index 0000000..e160483 --- /dev/null +++ b/realestate_estate/security/real_estate.xml @@ -0,0 +1,40 @@ + + + + + Real Estate Reader + + + + + + + + + Real Estate Employee + + + + + + + + + Real Estate Employee + + + + + + + + + + Real Estate + + ['|', ('company_id', 'in', company_ids), ('company_id', '=', False)] + + diff --git a/realestate_estate/security/real_estate_type.xml b/realestate_estate/security/real_estate_type.xml new file mode 100644 index 0000000..0cec484 --- /dev/null +++ b/realestate_estate/security/real_estate_type.xml @@ -0,0 +1,23 @@ + + + + + Real Estate Type Reader + + + + + + + + + Real Estate Type Manager + + + + + + + + diff --git a/realestate_estate/static/description/icon.png b/realestate_estate/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..3a0328b516c4980e8e44cdb63fd945757ddd132d GIT binary patch literal 9455 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 z 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 Xviia!U7SGha1wx#SCgwmn*{w2TRX*I literal 0 HcmV?d00001 diff --git a/realestate_estate/static/description/index.html b/realestate_estate/static/description/index.html new file mode 100644 index 0000000..092f340 --- /dev/null +++ b/realestate_estate/static/description/index.html @@ -0,0 +1,419 @@ + + + + + + +Realestate Estate + + + +
+

Realestate Estate

+ + +

Beta License: AGPL-3 OCA/vertical-realestate Translate me on Weblate

+

Module to manage Real Estates.

+

Table of contents

+ +
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us smashing it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • ACSONE SA/NV
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

This module is part of the OCA/vertical-realestate project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + diff --git a/realestate_estate/views/real_estate.xml b/realestate_estate/views/real_estate.xml new file mode 100644 index 0000000..dd01b6d --- /dev/null +++ b/realestate_estate/views/real_estate.xml @@ -0,0 +1,100 @@ + + + + + real.estate.form (in realestate_estate) + real.estate + + primary + + + + + + + + + + + + + real.estate.search (in realestate_estate) + real.estate + + + + + + + + + + + real.estate.tree (in realestate_estate) + real.estate + + + + + + + + + real.estate.kanban + real.estate + + primary + + + + Estates + +
    +
  • + +
  • +
  • + +
  • +
+
+
+ + Real Estate + real.estate + tree,form + [] + {} + + + + + Estates + + + + + + + [('type', '!=', 'real.estate')] + +
diff --git a/realestate_estate/views/real_estate_type.xml b/realestate_estate/views/real_estate_type.xml new file mode 100644 index 0000000..b508c5f --- /dev/null +++ b/realestate_estate/views/real_estate_type.xml @@ -0,0 +1,53 @@ + + + + + real.estate.type.form (in realestate_estate) + real.estate.type + +
+ + + + + + +
+
+
+ + real.estate.type.search (in realestate_estate) + + real.estate.type + + + + + + + + + real.estate.type.tree (in realestate_estate) + real.estate.type + + + + + + + + Real Estate Type + + real.estate.type + tree,form + [] + {} + + + Types + + + + +
From 8683acfa8a3a704b484105dc0358d2d4d1dbd04b Mon Sep 17 00:00:00 2001 From: Denis Roussel Date: Wed, 3 Aug 2022 16:14:36 +0200 Subject: [PATCH 2/9] [IMP] realestate_estate: Improve AGPL url, Improve estate model --- realestate_estate/README.rst | 9 +++++++-- realestate_estate/__manifest__.py | 3 ++- realestate_estate/data/ir_sequence.xml | 2 +- realestate_estate/data/real_estate_type.xml | 2 +- realestate_estate/demo/real_estate.xml | 17 ++++++++++++----- realestate_estate/models/real_estate.py | 4 +--- realestate_estate/models/real_estate_type.py | 2 +- realestate_estate/models/res_partner.py | 2 +- realestate_estate/security/real_estate.xml | 2 +- realestate_estate/security/real_estate_type.xml | 2 +- realestate_estate/static/description/index.html | 10 ++++++++-- realestate_estate/views/real_estate.xml | 5 ++++- realestate_estate/views/real_estate_type.xml | 2 +- 13 files changed, 41 insertions(+), 21 deletions(-) diff --git a/realestate_estate/README.rst b/realestate_estate/README.rst index f4fc8da..d9eb78d 100644 --- a/realestate_estate/README.rst +++ b/realestate_estate/README.rst @@ -7,9 +7,9 @@ Realestate Estate !! changes will be overwritten. !! !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! -.. |badge1| image:: https://img.shields.io/badge/maturity-Beta-yellow.png +.. |badge1| image:: https://img.shields.io/badge/maturity-Alpha-red.png :target: https://odoo-community.org/page/development-status - :alt: Beta + :alt: Alpha .. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html :alt: License: AGPL-3 @@ -24,6 +24,11 @@ Realestate Estate Module to manage Real Estates. +.. IMPORTANT:: + This is an alpha version, the data model and design can change at any time without warning. + Only for development or testing purpose, do not use in production. + `More details on development status `_ + **Table of contents** .. contents:: diff --git a/realestate_estate/__manifest__.py b/realestate_estate/__manifest__.py index 5bfc969..7132462 100644 --- a/realestate_estate/__manifest__.py +++ b/realestate_estate/__manifest__.py @@ -1,5 +1,5 @@ # Copyright 2020 ACSONE SA/NV -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). { "name": "Realestate Estate", @@ -18,6 +18,7 @@ "views/real_estate.xml", "data/ir_sequence.xml", "data/real_estate_type.xml", + "demo/real_estate.xml", ], "demo": ["demo/real_estate.xml"], } diff --git a/realestate_estate/data/ir_sequence.xml b/realestate_estate/data/ir_sequence.xml index 0bfe7f3..01a3817 100644 --- a/realestate_estate/data/ir_sequence.xml +++ b/realestate_estate/data/ir_sequence.xml @@ -1,6 +1,6 @@ + License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). --> Real Estate diff --git a/realestate_estate/data/real_estate_type.xml b/realestate_estate/data/real_estate_type.xml index dfe4bba..177f5a5 100644 --- a/realestate_estate/data/real_estate_type.xml +++ b/realestate_estate/data/real_estate_type.xml @@ -1,6 +1,6 @@ + License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). --> House diff --git a/realestate_estate/demo/real_estate.xml b/realestate_estate/demo/real_estate.xml index fc0b154..118fd68 100644 --- a/realestate_estate/demo/real_estate.xml +++ b/realestate_estate/demo/real_estate.xml @@ -1,12 +1,19 @@ + License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). --> - diff --git a/realestate_estate/models/real_estate.py b/realestate_estate/models/real_estate.py index 1acf7d6..895b4be 100644 --- a/realestate_estate/models/real_estate.py +++ b/realestate_estate/models/real_estate.py @@ -1,5 +1,5 @@ # Copyright 2020 ACSONE SA/NV -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). from odoo import fields, models @@ -10,8 +10,6 @@ class RealEstate(models.Model): _inherit = "realestate.abstract.entity" _description = "Real Estate" - name = fields.Char(required=True,) - type_id = fields.Many2one( comodel_name="real.estate.type", required=True, ondelete="restrict", index=True, ) diff --git a/realestate_estate/models/real_estate_type.py b/realestate_estate/models/real_estate_type.py index 8e51676..3fbea7e 100644 --- a/realestate_estate/models/real_estate_type.py +++ b/realestate_estate/models/real_estate_type.py @@ -1,5 +1,5 @@ # Copyright 2020 ACSONE SA/NV -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). from odoo import fields, models diff --git a/realestate_estate/models/res_partner.py b/realestate_estate/models/res_partner.py index 94cd7e5..b08be81 100644 --- a/realestate_estate/models/res_partner.py +++ b/realestate_estate/models/res_partner.py @@ -1,5 +1,5 @@ # Copyright 2020 ACSONE SA/NV -# License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). from odoo import fields, models diff --git a/realestate_estate/security/real_estate.xml b/realestate_estate/security/real_estate.xml index e160483..d33d4c8 100644 --- a/realestate_estate/security/real_estate.xml +++ b/realestate_estate/security/real_estate.xml @@ -1,6 +1,6 @@ + License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). --> Real Estate Reader diff --git a/realestate_estate/security/real_estate_type.xml b/realestate_estate/security/real_estate_type.xml index 0cec484..ea3f590 100644 --- a/realestate_estate/security/real_estate_type.xml +++ b/realestate_estate/security/real_estate_type.xml @@ -1,6 +1,6 @@ + License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). --> Real Estate Type Reader diff --git a/realestate_estate/static/description/index.html b/realestate_estate/static/description/index.html index 092f340..e96b032 100644 --- a/realestate_estate/static/description/index.html +++ b/realestate_estate/static/description/index.html @@ -3,7 +3,7 @@ - + Realestate Estate - - -
-

Realestate Estate

- - -

Alpha License: AGPL-3 OCA/vertical-realestate Translate me on Weblate Try me on Runboat

-

Module to manage Real Estates.

-
-

Important

-

This is an alpha version, the data model and design can change at any time without warning. -Only for development or testing purpose, do not use in production. -More details on development status

-
-

Table of contents

- -
-

Bug Tracker

-

Bugs are tracked on GitHub Issues. -In case of trouble, please check there if your issue has already been reported. -If you spotted it first, help us to smash it by providing a detailed and welcomed -feedback.

-

Do not contact contributors directly about support or help with technical issues.

-
-
-

Credits

-
-

Authors

-
    -
  • ACSONE SA/NV
  • -
-
-
-

Contributors

- -
-
-

Maintainers

-

This module is maintained by the OCA.

-Odoo Community Association -

OCA, or the Odoo Community Association, is a nonprofit organization whose -mission is to support the collaborative development of Odoo features and -promote its widespread use.

-

This module is part of the OCA/vertical-realestate project on GitHub.

-

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

-
-
-
- - diff --git a/realestate_estate/views/real_estate.xml b/realestate_estate/views/real_estate.xml deleted file mode 100644 index a242c53..0000000 --- a/realestate_estate/views/real_estate.xml +++ /dev/null @@ -1,103 +0,0 @@ - - - - - real.estate.form (in realestate_estate) - real.estate - - primary - - - 1 - - - - - - - - - - - - - real.estate.search (in realestate_estate) - real.estate - - - - - - - - - - - real.estate.tree (in realestate_estate) - real.estate - - - - - - - - - real.estate.kanban - real.estate - - primary - - - - Estates - -
    -
  • - -
  • -
  • - -
  • -
-
-
- - Real Estate - real.estate - tree,form - [] - {} - - - - - Estates - - - - - - - [('type', '!=', 'real.estate')] - -
diff --git a/realestate_estate/views/real_estate_type.xml b/realestate_estate/views/real_estate_type.xml deleted file mode 100644 index fbaf546..0000000 --- a/realestate_estate/views/real_estate_type.xml +++ /dev/null @@ -1,53 +0,0 @@ - - - - - real.estate.type.form (in realestate_estate) - real.estate.type - -
- - - - - - -
-
-
- - real.estate.type.search (in realestate_estate) - - real.estate.type - - - - - - - - - real.estate.type.tree (in realestate_estate) - real.estate.type - - - - - - - - Real Estate Type - - real.estate.type - tree,form - [] - {} - - - Types - - - - -
From 2a3425926f908779c115be0cc6fa829f5c69e677 Mon Sep 17 00:00:00 2001 From: Ronny Montano Date: Fri, 24 May 2024 08:42:40 -0600 Subject: [PATCH 9/9] [16.0][ADD] real_estate: Addon to manage real estate --- real_estate/README.rst | 81 ++++ real_estate/__init__.py | 1 + real_estate/__manifest__.py | 22 + real_estate/data/ir_sequence.xml | 14 + real_estate/i18n/es.po | 482 ++++++++++++++++++++++ real_estate/models/__init__.py | 2 + real_estate/models/real_estate.py | 64 +++ real_estate/models/real_estate_type.py | 20 + real_estate/readme/CONTRIBUTORS.rst | 1 + real_estate/readme/DESCRIPTION.rst | 1 + real_estate/security/ir.model.access.csv | 4 + real_estate/security/security.xml | 24 ++ real_estate/static/description/icon.png | Bin 0 -> 58519 bytes real_estate/static/description/index.html | 426 +++++++++++++++++++ real_estate/views/menus.xml | 17 + real_estate/views/real_estate_type.xml | 52 +++ real_estate/views/realestate_estate.xml | 227 ++++++++++ setup/real_estate/odoo/addons/real_estate | 1 + setup/real_estate/setup.py | 6 + 19 files changed, 1445 insertions(+) create mode 100644 real_estate/README.rst create mode 100644 real_estate/__init__.py create mode 100644 real_estate/__manifest__.py create mode 100644 real_estate/data/ir_sequence.xml create mode 100644 real_estate/i18n/es.po create mode 100644 real_estate/models/__init__.py create mode 100644 real_estate/models/real_estate.py create mode 100644 real_estate/models/real_estate_type.py create mode 100644 real_estate/readme/CONTRIBUTORS.rst create mode 100644 real_estate/readme/DESCRIPTION.rst create mode 100644 real_estate/security/ir.model.access.csv create mode 100644 real_estate/security/security.xml create mode 100644 real_estate/static/description/icon.png create mode 100644 real_estate/static/description/index.html create mode 100644 real_estate/views/menus.xml create mode 100644 real_estate/views/real_estate_type.xml create mode 100644 real_estate/views/realestate_estate.xml create mode 120000 setup/real_estate/odoo/addons/real_estate create mode 100644 setup/real_estate/setup.py diff --git a/real_estate/README.rst b/real_estate/README.rst new file mode 100644 index 0000000..cd7b51d --- /dev/null +++ b/real_estate/README.rst @@ -0,0 +1,81 @@ +=========== +Real Estate +=========== + +.. + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! This file is generated by oca-gen-addon-readme !! + !! changes will be overwritten. !! + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + !! source digest: sha256:18d99736753d76e4714d005187a5a0451b3d70ab139355a143b85ceba38e8467 + !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! + +.. |badge1| image:: https://img.shields.io/badge/maturity-Alpha-red.png + :target: https://odoo-community.org/page/development-status + :alt: Alpha +.. |badge2| image:: https://img.shields.io/badge/licence-AGPL--3-blue.png + :target: http://www.gnu.org/licenses/agpl-3.0-standalone.html + :alt: License: AGPL-3 +.. |badge3| image:: https://img.shields.io/badge/github-OCA%2Fvertical--realestate-lightgray.png?logo=github + :target: https://github.com/OCA/vertical-realestate/tree/16.0/real_estate + :alt: OCA/vertical-realestate +.. |badge4| image:: https://img.shields.io/badge/weblate-Translate%20me-F47D42.png + :target: https://translation.odoo-community.org/projects/vertical-realestate-16-0/vertical-realestate-16-0-real_estate + :alt: Translate me on Weblate +.. |badge5| image:: https://img.shields.io/badge/runboat-Try%20me-875A7B.png + :target: https://runboat.odoo-community.org/builds?repo=OCA/vertical-realestate&target_branch=16.0 + :alt: Try me on Runboat + +|badge1| |badge2| |badge3| |badge4| |badge5| + +Module to manage Real Estates. + +.. IMPORTANT:: + This is an alpha version, the data model and design can change at any time without warning. + Only for development or testing purpose, do not use in production. + `More details on development status `_ + +**Table of contents** + +.. contents:: + :local: + +Bug Tracker +=========== + +Bugs are tracked on `GitHub Issues `_. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +`feedback `_. + +Do not contact contributors directly about support or help with technical issues. + +Credits +======= + +Authors +~~~~~~~ + +* Binhex + +Contributors +~~~~~~~~~~~~ + +* Denis Roussel + +Maintainers +~~~~~~~~~~~ + +This module is maintained by the OCA. + +.. image:: https://odoo-community.org/logo.png + :alt: Odoo Community Association + :target: https://odoo-community.org + +OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use. + +This module is part of the `OCA/vertical-realestate `_ project on GitHub. + +You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute. diff --git a/real_estate/__init__.py b/real_estate/__init__.py new file mode 100644 index 0000000..0650744 --- /dev/null +++ b/real_estate/__init__.py @@ -0,0 +1 @@ +from . import models diff --git a/real_estate/__manifest__.py b/real_estate/__manifest__.py new file mode 100644 index 0000000..2c58194 --- /dev/null +++ b/real_estate/__manifest__.py @@ -0,0 +1,22 @@ +# Copyright 2020 ACSONE SA/NV +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +{ + "name": "Real Estate", + "summary": """ + Adds the estate management to realestate""", + "version": "16.0.1.0.0", + "license": "AGPL-3", + "development_status": "Alpha", + "author": "Binhex, " "Odoo Community Association (OCA)", + "website": "https://github.com/OCA/vertical-realestate", + "depends": ["base", "mail", "contacts"], + "data": [ + "security/security.xml", + "security/ir.model.access.csv", + "views/menus.xml", + "views/real_estate_type.xml", + "views/realestate_estate.xml", + "data/ir_sequence.xml", + ], +} diff --git a/real_estate/data/ir_sequence.xml b/real_estate/data/ir_sequence.xml new file mode 100644 index 0000000..01a3817 --- /dev/null +++ b/real_estate/data/ir_sequence.xml @@ -0,0 +1,14 @@ + + + + + Real Estate + real.estate + RE/ + 5 + 1 + 1 + + + diff --git a/real_estate/i18n/es.po b/real_estate/i18n/es.po new file mode 100644 index 0000000..a202761 --- /dev/null +++ b/real_estate/i18n/es.po @@ -0,0 +1,482 @@ +# Translation of Odoo Server. +# This file contains the translation of the following modules: +# * real_estate +# +msgid "" +msgstr "" +"Project-Id-Version: Odoo Server 16.0\n" +"Report-Msgid-Bugs-To: \n" +"POT-Creation-Date: 2024-05-23 15:45+0000\n" +"PO-Revision-Date: 2024-05-23 09:53-0600\n" +"Last-Translator: \n" +"Language-Team: \n" +"Language: es\n" +"MIME-Version: 1.0\n" +"Content-Type: text/plain; charset=UTF-8\n" +"Content-Transfer-Encoding: 8bit\n" +"Plural-Forms: nplurals=2; plural=(n != 1);\n" +"X-Generator: Poedit 3.4\n" + +#. module: real_estate +#: model:ir.model.fields,field_description:real_estate.field_real_estate__message_needaction +msgid "Action Needed" +msgstr "Acción necesaria" + +#. module: real_estate +#: model:ir.model.fields,field_description:real_estate.field_real_estate__active +msgid "Active" +msgstr "Activo" + +#. module: real_estate +#: model:ir.model.fields,field_description:real_estate.field_real_estate__activity_ids +msgid "Activities" +msgstr "Actividades" + +#. module: real_estate +#: model:ir.model.fields,field_description:real_estate.field_real_estate__activity_exception_decoration +msgid "Activity Exception Decoration" +msgstr "" + +#. module: real_estate +#: model:ir.model.fields,field_description:real_estate.field_real_estate__activity_state +msgid "Activity State" +msgstr "" + +#. module: real_estate +#: model:ir.model.fields,field_description:real_estate.field_real_estate__activity_type_icon +msgid "Activity Type Icon" +msgstr "" + +#. module: real_estate +#: model_terms:ir.ui.view,arch_db:real_estate.real_estate_form_view +msgid "Address" +msgstr "Dirección" + +#. module: real_estate +#: model_terms:ir.ui.view,arch_db:real_estate.real_estate_form_view +msgid "Archived" +msgstr "Archivado" + +#. module: real_estate +#: model:ir.model.fields,field_description:real_estate.field_real_estate__message_attachment_count +msgid "Attachment Count" +msgstr "" + +#. module: real_estate +#: model:ir.model.fields,field_description:real_estate.field_real_estate__city +#: model_terms:ir.ui.view,arch_db:real_estate.real_estate_form_view +msgid "City" +msgstr "Ciudad" + +#. module: real_estate +#: model:ir.model.fields,field_description:real_estate.field_real_estate_type__code +msgid "Code" +msgstr "Código" + +#. module: real_estate +#: model:ir.model.fields,field_description:real_estate.field_real_estate__company_id +msgid "Company" +msgstr "Compañía" + +#. module: real_estate +#: model:ir.ui.menu,name:real_estate.real_estate_configuration_menu +msgid "Configuration" +msgstr "Configuración" + +#. module: real_estate +#: model_terms:ir.ui.view,arch_db:real_estate.real_estate_form_view +msgid "Contact Information" +msgstr "Información de contacto" + +#. module: real_estate +#: model_terms:ir.ui.view,arch_db:real_estate.real_estate_form_view +msgid "Contacts & Addresses" +msgstr "Contactos y direcciones" + +#. module: real_estate +#: model:ir.model.fields,field_description:real_estate.field_real_estate__country_id +#: model_terms:ir.ui.view,arch_db:real_estate.real_estate_form_view +msgid "Country" +msgstr "País" + +#. module: real_estate +#: model:ir.model.fields,field_description:real_estate.field_real_estate__country_code +msgid "Country Code" +msgstr "Código país" + +#. module: real_estate +#: model:ir.model.fields,field_description:real_estate.field_real_estate__create_uid +#: model:ir.model.fields,field_description:real_estate.field_real_estate_type__create_uid +msgid "Created by" +msgstr "Creado por" + +#. module: real_estate +#: model:ir.model.fields,field_description:real_estate.field_real_estate__create_date +#: model:ir.model.fields,field_description:real_estate.field_real_estate_type__create_date +msgid "Created on" +msgstr "Creado el" + +#. module: real_estate +#: model:ir.model.fields,field_description:real_estate.field_real_estate__description +msgid "Description" +msgstr "Descripción" + +#. module: real_estate +#: model:ir.model.fields,field_description:real_estate.field_real_estate__display_name +#: model:ir.model.fields,field_description:real_estate.field_real_estate_type__display_name +msgid "Display Name" +msgstr "" + +#. module: real_estate +#: model:ir.ui.menu,name:real_estate.real_estate_menu +#: model_terms:ir.ui.view,arch_db:real_estate.real_estate_view_kanban +msgid "Estates" +msgstr "Unidades" + +#. module: real_estate +#: model:ir.model.fields,field_description:real_estate.field_real_estate__message_follower_ids +msgid "Followers" +msgstr "" + +#. module: real_estate +#: model:ir.model.fields,field_description:real_estate.field_real_estate__message_partner_ids +msgid "Followers (Partners)" +msgstr "" + +#. module: real_estate +#: model:ir.model.fields,help:real_estate.field_real_estate__activity_type_icon +msgid "Font awesome icon e.g. fa-tasks" +msgstr "" + +#. module: real_estate +#: model_terms:ir.ui.view,arch_db:real_estate.real_estate_form_view +msgid "General Information" +msgstr "Información general" + +#. module: real_estate +#: model:ir.model.fields,field_description:real_estate.field_real_estate__real_estate_latitude +msgid "Geo Latitude" +msgstr "Latitud" + +#. module: real_estate +#: model:ir.model.fields,field_description:real_estate.field_real_estate__real_estate_longitude +msgid "Geo Longitude" +msgstr "Longitud" + +#. module: real_estate +#: model:ir.model.fields,field_description:real_estate.field_real_estate__google_maps_url +msgid "Google Maps Url" +msgstr "URL Mapa" + +#. module: real_estate +#: model_terms:ir.ui.view,arch_db:real_estate.real_estate_search_view +msgid "Group By..." +msgstr "Agrupar por" + +#. module: real_estate +#: model:ir.model.fields,field_description:real_estate.field_real_estate__has_message +msgid "Has Message" +msgstr "" + +#. module: real_estate +#: model:ir.model.fields,field_description:real_estate.field_real_estate__id +#: model:ir.model.fields,field_description:real_estate.field_real_estate_type__id +msgid "ID" +msgstr "" + +#. module: real_estate +#: model_terms:ir.ui.view,arch_db:real_estate.real_estate_form_view +msgid "ID & Notes" +msgstr "" + +#. module: real_estate +#: model:ir.model.fields,field_description:real_estate.field_real_estate__activity_exception_icon +msgid "Icon" +msgstr "" + +#. module: real_estate +#: model:ir.model.fields,help:real_estate.field_real_estate__activity_exception_icon +msgid "Icon to indicate an exception activity." +msgstr "" + +#. module: real_estate +#: model:ir.model.fields,help:real_estate.field_real_estate__message_needaction +msgid "If checked, new messages require your attention." +msgstr "" + +#. module: real_estate +#: model:ir.model.fields,help:real_estate.field_real_estate__message_has_error +msgid "If checked, some messages have a delivery error." +msgstr "" + +#. module: real_estate +#: model:ir.model.fields,field_description:real_estate.field_real_estate__image +msgid "Image" +msgstr "" + +#. module: real_estate +#: model_terms:ir.ui.view,arch_db:real_estate.real_estate_form_view +msgid "Internal Note..." +msgstr "" + +#. module: real_estate +#: model:ir.model.fields,field_description:real_estate.field_real_estate__message_is_follower +msgid "Is Follower" +msgstr "" + +#. module: real_estate +#: model:ir.model.fields,field_description:real_estate.field_real_estate____last_update +#: model:ir.model.fields,field_description:real_estate.field_real_estate_type____last_update +msgid "Last Modified on" +msgstr "" + +#. module: real_estate +#: model:ir.model.fields,field_description:real_estate.field_real_estate__write_uid +#: model:ir.model.fields,field_description:real_estate.field_real_estate_type__write_uid +msgid "Last Updated by" +msgstr "" + +#. module: real_estate +#: model:ir.model.fields,field_description:real_estate.field_real_estate__write_date +#: model:ir.model.fields,field_description:real_estate.field_real_estate_type__write_date +msgid "Last Updated on" +msgstr "" + +#. module: real_estate +#: model_terms:ir.ui.view,arch_db:real_estate.real_estate_form_view +msgid "Location" +msgstr "" + +#. module: real_estate +#: model:ir.model.fields,field_description:real_estate.field_real_estate__message_main_attachment_id +msgid "Main Attachment" +msgstr "" + +#. module: real_estate +#: model:ir.model.fields,field_description:real_estate.field_real_estate__message_has_error +msgid "Message Delivery error" +msgstr "" + +#. module: real_estate +#: model:ir.model.fields,field_description:real_estate.field_real_estate__message_ids +msgid "Messages" +msgstr "" + +#. module: real_estate +#: model:ir.model.fields,field_description:real_estate.field_real_estate__my_activity_date_deadline +msgid "My Activity Deadline" +msgstr "" + +#. module: real_estate +#: model:ir.model.fields,field_description:real_estate.field_real_estate__name +#: model:ir.model.fields,field_description:real_estate.field_real_estate_type__name +msgid "Name" +msgstr "" + +#. module: real_estate +#: model:ir.model.fields,field_description:real_estate.field_real_estate__activity_date_deadline +msgid "Next Activity Deadline" +msgstr "" + +#. module: real_estate +#: model:ir.model.fields,field_description:real_estate.field_real_estate__activity_summary +msgid "Next Activity Summary" +msgstr "" + +#. module: real_estate +#: model:ir.model.fields,field_description:real_estate.field_real_estate__activity_type_id +msgid "Next Activity Type" +msgstr "" + +#. module: real_estate +#: model:ir.model.fields,field_description:real_estate.field_real_estate__comment +msgid "Notes" +msgstr "" + +#. module: real_estate +#: model:ir.model.fields,field_description:real_estate.field_real_estate__message_needaction_counter +msgid "Number of Actions" +msgstr "" + +#. module: real_estate +#: model:ir.model.fields,field_description:real_estate.field_real_estate__message_has_error_counter +msgid "Number of errors" +msgstr "" + +#. module: real_estate +#: model:ir.model.fields,help:real_estate.field_real_estate__message_needaction_counter +msgid "Number of messages requiring action" +msgstr "Número de mensajes que requieren acción" + +#. module: real_estate +#: model:ir.model.fields,help:real_estate.field_real_estate__message_has_error_counter +msgid "Number of messages with delivery error" +msgstr "Número de mensajes con error de entrega" + +#. module: real_estate +#: model:ir.model.fields,field_description:real_estate.field_real_estate__owner_ids +msgid "Owners" +msgstr "Propietarios" + +#. module: real_estate +#: model:ir.actions.act_window,name:real_estate.real_estate_act_window +#: model:ir.model,name:real_estate.model_real_estate +#: model:ir.module.category,name:real_estate.module_category_realestate +#: model:ir.ui.menu,name:real_estate.menu_real_estate +msgid "Real Estate" +msgstr "Bienes raíces" + +#. module: real_estate +#: model:res.groups,name:real_estate.group_real_estate_manager +msgid "Real Estate Manager" +msgstr "Gerente de bienes raíces" + +#. module: real_estate +#: model:ir.actions.act_window,name:real_estate.real_estate_type_act_window +#: model:ir.model,name:real_estate.model_real_estate_type +msgid "Real Estate Type" +msgstr "Tipo de Bienes Raíces" + +#. module: real_estate +#: model:res.groups,name:real_estate.group_real_estate_user +msgid "Real Estate User" +msgstr "Usuario inmobiliario" + +#. module: real_estate +#: model_terms:ir.ui.view,arch_db:real_estate.real_estate_search_view +msgid "RealEstate Entities" +msgstr "" + +#. module: real_estate +#: model_terms:ir.ui.view,arch_db:real_estate.real_estate_form_view +msgid "RealEstate Entity" +msgstr "Entidad Inmobiliaria" + +#. module: real_estate +#: model:ir.model.fields,field_description:real_estate.field_real_estate__ref +msgid "Reference" +msgstr "Referencia" + +#. module: real_estate +#: model:ir.model.fields,field_description:real_estate.field_real_estate__activity_user_id +msgid "Responsible User" +msgstr "Responsable" + +#. module: real_estate +#: model_terms:ir.ui.view,arch_db:real_estate.real_estate_form_view +msgid "Shipping Method" +msgstr "Método de envío" + +#. module: real_estate +#: model:ir.model.fields,field_description:real_estate.field_real_estate__short_description +msgid "Short Description" +msgstr "Descripción corta" + +#. module: real_estate +#: model:ir.model.fields,field_description:real_estate.field_real_estate__state_id +#: model_terms:ir.ui.view,arch_db:real_estate.real_estate_form_view +msgid "State" +msgstr "Estado" + +#. module: real_estate +#: model:ir.model.fields,help:real_estate.field_real_estate__activity_state +msgid "" +"Status based on activities\n" +"Overdue: Due date is already passed\n" +"Today: Activity date is today\n" +"Planned: Future activities." +msgstr "" +"Estado basado en actividades.\n" +"Vencido: la fecha de vencimiento ya pasó\n" +"Hoy: la fecha de la actividad es hoy.\n" +"Planificado: Actividades futuras." + +#. module: real_estate +#: model:ir.model.fields,field_description:real_estate.field_real_estate__street +msgid "Street" +msgstr "Calle " + +#. module: real_estate +#: model_terms:ir.ui.view,arch_db:real_estate.real_estate_form_view +msgid "Street 2..." +msgstr "Calle 2" + +#. module: real_estate +#: model_terms:ir.ui.view,arch_db:real_estate.real_estate_form_view +msgid "Street..." +msgstr "Calle" + +#. module: real_estate +#: model:ir.model.fields,field_description:real_estate.field_real_estate__street2 +msgid "Street2" +msgstr "Calle 2" + +#. module: real_estate +#: model:ir.model.fields,field_description:real_estate.field_real_estate__surface +msgid "Surface" +msgstr "Superficie" + +#. module: real_estate +#: model:ir.model.fields,help:real_estate.field_real_estate__country_code +msgid "" +"The ISO country code in two chars. \n" +"You can use this field for quick search." +msgstr "" +"El código ISO de país en dos caracteres. \n" +"Puede utilizar este campo para una búsqueda rápida." + +#. module: real_estate +#: model:ir.model.constraint,message:real_estate.constraint_real_estate_type_code_uniq +msgid "The code has to be unique!" +msgstr "¡El código tiene que ser único!" + +#. module: real_estate +#: model:ir.model.fields,help:real_estate.field_real_estate__company_id +msgid "The default company for this user." +msgstr "La asociación predeterminada para este usuario." + +#. module: real_estate +#: model:res.groups,comment:real_estate.group_real_estate_manager +msgid "The user will be able to use and add config." +msgstr "El usuario podrá usar y agregar configuraciones." + +#. module: real_estate +#: model:res.groups,comment:real_estate.group_real_estate_user +msgid "The user will be able to use realestate." +msgstr "El usuario podrá utilizar realestate." + +#. module: real_estate +#: model:ir.model.fields,help:real_estate.field_real_estate__image +msgid "This field holds the image used for the real estate" +msgstr "Este campo contiene la imagen utilizada para el inmueble." + +#. module: real_estate +#: model:ir.model.fields,field_description:real_estate.field_real_estate__type_id +#: model_terms:ir.ui.view,arch_db:real_estate.real_estate_search_view +msgid "Type" +msgstr "Tipo" + +#. module: real_estate +#: model:ir.model.fields,help:real_estate.field_real_estate__activity_exception_decoration +msgid "Type of the exception activity on record." +msgstr "Tipo de actividad de excepción registrada." + +#. module: real_estate +#: model:ir.ui.menu,name:real_estate.real_estate_type_menu +msgid "Types" +msgstr "Tipos" + +#. module: real_estate +#: model_terms:ir.ui.view,arch_db:real_estate.real_estate_form_view +msgid "ZIP" +msgstr "CP" + +#. module: real_estate +#: model:ir.model.fields,field_description:real_estate.field_real_estate__zip +msgid "Zip" +msgstr "CP" + +#. module: real_estate +#: model_terms:ir.ui.view,arch_db:real_estate.real_estate_form_view +msgid "e.g. 0001 Apartment" +msgstr "e.j. 0001 Apartamento" diff --git a/real_estate/models/__init__.py b/real_estate/models/__init__.py new file mode 100644 index 0000000..6c9ec41 --- /dev/null +++ b/real_estate/models/__init__.py @@ -0,0 +1,2 @@ +from . import real_estate +from . import real_estate_type diff --git a/real_estate/models/real_estate.py b/real_estate/models/real_estate.py new file mode 100644 index 0000000..199877b --- /dev/null +++ b/real_estate/models/real_estate.py @@ -0,0 +1,64 @@ +# Copyright 2020 ACSONE SA/NV +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class RealEstate(models.Model): + _name = "real.estate" + _inherit = ["mail.thread", "mail.activity.mixin"] + _description = "Real Estate" + + name = fields.Char(required=True, translate=True, index=True) + type_id = fields.Many2one( + comodel_name="real.estate.type", + required=True, + ondelete="restrict", + index=True, + ) + active = fields.Boolean(default=True) + image = fields.Image( + max_width=256, + max_height=256, + help="This field holds the image used for the real estate", + ) + ref = fields.Char( + default=lambda self: self.env["ir.sequence"].next_by_code("real.estate"), + index=True, + copy=False, + readonly=True, + ) + short_description = fields.Char( + translate=True, + size=50, + ) + description = fields.Text( + translate=True, + ) + surface = fields.Float(default=0.0) + google_maps_url = fields.Text() + + street = fields.Char() + street2 = fields.Char() + zip = fields.Char(change_default=True) + city = fields.Char() + state_id = fields.Many2one( + "res.country.state", + ondelete="restrict", + domain="[('country_id', '=?', country_id)]", + ) + country_id = fields.Many2one("res.country", ondelete="restrict") + country_code = fields.Char( + related="country_id.code", + ) + real_estate_latitude = fields.Float(digits=(10, 7)) + real_estate_longitude = fields.Float(digits=(10, 7)) + comment = fields.Html() + owner_ids = fields.Many2many( + "res.partner", + ) + company_id = fields.Many2one( + comodel_name="res.company", + default=lambda self: self.env.company.id, + help="The default company for this user.", + ) diff --git a/real_estate/models/real_estate_type.py b/real_estate/models/real_estate_type.py new file mode 100644 index 0000000..ed870b0 --- /dev/null +++ b/real_estate/models/real_estate_type.py @@ -0,0 +1,20 @@ +# Copyright 2020 ACSONE SA/NV +# License AGPL-3.0 or later (https://www.gnu.org/licenses/agpl). + +from odoo import fields, models + + +class RealEstateType(models.Model): + + _name = "real.estate.type" + _description = "Real Estate Type" + + name = fields.Char(required=True, translate=True) + code = fields.Char( + required=True, + index=True, + ) + + _sql_constraints = [ + ("code_uniq", "unique (code)", "The code has to be unique!"), + ] diff --git a/real_estate/readme/CONTRIBUTORS.rst b/real_estate/readme/CONTRIBUTORS.rst new file mode 100644 index 0000000..9179ee4 --- /dev/null +++ b/real_estate/readme/CONTRIBUTORS.rst @@ -0,0 +1 @@ +* Denis Roussel diff --git a/real_estate/readme/DESCRIPTION.rst b/real_estate/readme/DESCRIPTION.rst new file mode 100644 index 0000000..e5b017d --- /dev/null +++ b/real_estate/readme/DESCRIPTION.rst @@ -0,0 +1 @@ +Module to manage Real Estates. diff --git a/real_estate/security/ir.model.access.csv b/real_estate/security/ir.model.access.csv new file mode 100644 index 0000000..f02841c --- /dev/null +++ b/real_estate/security/ir.model.access.csv @@ -0,0 +1,4 @@ +id,name,model_id:id,group_id:id,perm_read,perm_write,perm_create,perm_unlink +access_real_estate_user,real.estate,real_estate.model_real_estate,real_estate.group_real_estate_user,1,1,1,1 +access_real_estate_manager,real.estate,real_estate.model_real_estate,real_estate.group_real_estate_manager,1,1,1,1 +access_real_estate_type_manager,real.estate.type,real_estate.model_real_estate_type,real_estate.group_real_estate_manager,1,1,1,1 diff --git a/real_estate/security/security.xml b/real_estate/security/security.xml new file mode 100644 index 0000000..1db4573 --- /dev/null +++ b/real_estate/security/security.xml @@ -0,0 +1,24 @@ + + + + + Real Estate + + + + Real Estate User + + The user will be able to use realestate. + + + Real Estate Manager + + + The user will be able to use and add config. + + + diff --git a/real_estate/static/description/icon.png b/real_estate/static/description/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..1d12dc59552216b7f689b6de57822c47fad481a3 GIT binary patch literal 58519 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 o`}vCq-;Q#;t literal 0 HcmV?d00001 diff --git a/real_estate/static/description/index.html b/real_estate/static/description/index.html new file mode 100644 index 0000000..e6584c5 --- /dev/null +++ b/real_estate/static/description/index.html @@ -0,0 +1,426 @@ + + + + + +Real Estate + + + +
+

Real Estate

+ + +

Alpha License: AGPL-3 OCA/vertical-realestate Translate me on Weblate Try me on Runboat

+

Module to manage Real Estates.

+
+

Important

+

This is an alpha version, the data model and design can change at any time without warning. +Only for development or testing purpose, do not use in production. +More details on development status

+
+

Table of contents

+ +
+

Bug Tracker

+

Bugs are tracked on GitHub Issues. +In case of trouble, please check there if your issue has already been reported. +If you spotted it first, help us to smash it by providing a detailed and welcomed +feedback.

+

Do not contact contributors directly about support or help with technical issues.

+
+
+

Credits

+
+

Authors

+
    +
  • Binhex
  • +
+
+
+

Contributors

+ +
+
+

Maintainers

+

This module is maintained by the OCA.

+Odoo Community Association +

OCA, or the Odoo Community Association, is a nonprofit organization whose +mission is to support the collaborative development of Odoo features and +promote its widespread use.

+

This module is part of the OCA/vertical-realestate project on GitHub.

+

You are welcome to contribute. To learn how please visit https://odoo-community.org/page/Contribute.

+
+
+
+ + diff --git a/real_estate/views/menus.xml b/real_estate/views/menus.xml new file mode 100644 index 0000000..867a755 --- /dev/null +++ b/real_estate/views/menus.xml @@ -0,0 +1,17 @@ + + + + + + Configuration + + + + diff --git a/real_estate/views/real_estate_type.xml b/real_estate/views/real_estate_type.xml new file mode 100644 index 0000000..d171235 --- /dev/null +++ b/real_estate/views/real_estate_type.xml @@ -0,0 +1,52 @@ + + + + + real.estate.type.form (in realestate_estate) + real.estate.type + +
+ + + + + + +
+
+
+ + real.estate.type.search (in realestate_estate) + + real.estate.type + + + + + + + + + real.estate.type.tree (in realestate_estate) + real.estate.type + + + + + + + + Real Estate Type + real.estate.type + tree,form + [] + {} + + + Types + + + + +
diff --git a/real_estate/views/realestate_estate.xml b/real_estate/views/realestate_estate.xml new file mode 100644 index 0000000..99e3120 --- /dev/null +++ b/real_estate/views/realestate_estate.xml @@ -0,0 +1,227 @@ + + + + + real.estate.tree + real.estate + + + + + + + + + real.estate.form + real.estate + +
+
+ +
+ +
+ + + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + +
+ +
+ + + real.estate.kanban + real.estate + kanban + + + + + + + + + + + + +
+ +
+ + + +
    +
  • + +
  • +
  • + +
  • +
+
+
+
+
+
+
+
+ + real.estate.search + real.estate + + + + + + + + + + + + Real Estate + real.estate + tree,form + [] + {} + + + + + + Estates + + + + + + diff --git a/setup/real_estate/odoo/addons/real_estate b/setup/real_estate/odoo/addons/real_estate new file mode 120000 index 0000000..197356b --- /dev/null +++ b/setup/real_estate/odoo/addons/real_estate @@ -0,0 +1 @@ +../../../../real_estate \ No newline at end of file diff --git a/setup/real_estate/setup.py b/setup/real_estate/setup.py new file mode 100644 index 0000000..28c57bb --- /dev/null +++ b/setup/real_estate/setup.py @@ -0,0 +1,6 @@ +import setuptools + +setuptools.setup( + setup_requires=['setuptools-odoo'], + odoo_addon=True, +)