From 678b2f404de05056de76f855671163fa11bbdc33 Mon Sep 17 00:00:00 2001 From: Dario Lodeiros Date: Sun, 11 Jul 2021 09:43:59 +0200 Subject: [PATCH] [ADD] state_id on checkin partner --- pms/models/pms_availability.py | 2 +- pms/models/pms_checkin_partner.py | 26 ++++++++++++++++++--- pms/models/res_partner.py | 28 +++++++++++++++++++++++ pms/views/pms_checkin_partner_views.xml | 5 ++++ pms_l10n_es/models/pms_checkin_partner.py | 5 ---- pms_l10n_es/models/res_partner.py | 5 ---- 6 files changed, 57 insertions(+), 14 deletions(-) delete mode 100644 pms_l10n_es/models/pms_checkin_partner.py delete mode 100644 pms_l10n_es/models/res_partner.py diff --git a/pms/models/pms_availability.py b/pms/models/pms_availability.py index 26b89dee3..3088f4274 100644 --- a/pms/models/pms_availability.py +++ b/pms/models/pms_availability.py @@ -1,4 +1,4 @@ -# Copyright 2017 Alexandre Díaz +# Copyright 2021 Dario Lodeiros # License AGPL-3.0 or later (http://www.gnu.org/licenses/agpl). from odoo import _, api, fields, models from odoo.exceptions import ValidationError diff --git a/pms/models/pms_checkin_partner.py b/pms/models/pms_checkin_partner.py index 3af259157..64a2eb32e 100644 --- a/pms/models/pms_checkin_partner.py +++ b/pms/models/pms_checkin_partner.py @@ -125,13 +125,25 @@ class PmsCheckinPartner(models.Model): selection=[("male", "Male"), ("female", "Female"), ("other", "Other")], ) nationality_id = fields.Many2one( - string="Nationality ID", + string="Nationality", help="host nationality", readonly=False, store=True, - compute="_compute_nationality", + compute="_compute_nationality_id", comodel_name="res.country", ) + # TODO: Use new partner contact "other or "private" with + # personal contact address complete?? + # to avoid user country_id on companies contacts. + # View to res.partner state_id inherit + state_id = fields.Many2one( + string="State", + help="host state", + readonly=False, + store=True, + compute="_compute_state_id", + comodel_name="res.country.state", + ) firstname = fields.Char( string="First Name", help="host firstname", @@ -273,13 +285,21 @@ class PmsCheckinPartner(models.Model): record.gender = False @api.depends("partner_id") - def _compute_nationality(self): + def _compute_nationality_id(self): for record in self: if not record.nationality_id and record.partner_id.nationality_id: record.nationality_id = record.partner_id.nationality_id elif not record.nationality_id: record.nationality_id = False + @api.depends("partner_id") + def _compute_state_id(self): + for record in self: + if not record.state_id and record.partner_id.state_id: + record.state_id = record.partner_id.state_id + elif not record.state_id: + record.state_id = False + @api.depends("reservation_id", "reservation_id.folio_id") def _compute_folio_id(self): for record in self.filtered("reservation_id"): diff --git a/pms/models/res_partner.py b/pms/models/res_partner.py index 764c2495d..e8291423c 100644 --- a/pms/models/res_partner.py +++ b/pms/models/res_partner.py @@ -88,6 +88,15 @@ class ResPartner(models.Model): store=True, compute="_compute_nationality_id", ) + # TODO: Use new partner contact "other or "private" with + # personal contact address complete?? + # to avoid user country_id on companies contacts. + # view to checkin partner state_id field + state_id = fields.Many2one( + readonly=False, + store=True, + compute="_compute_state_id", + ) email = fields.Char( readonly=False, store=True, @@ -172,6 +181,25 @@ class ResPartner(models.Model): elif not record.nationality_id: record.nationality_id = False + @api.depends("pms_checkin_partner_ids", "pms_checkin_partner_ids.state_id") + def _compute_state_id(self): + if hasattr(super(), "_compute_state_id"): + super()._compute_field() + for record in self: + if not record.state_id and record.pms_checkin_partner_ids: + state_id = list( + filter( + None, + set(record.pms_checkin_partner_ids.mapped("state_id")), + ) + ) + if len(state_id) == 1: + record.state_id = state_id[0] + else: + record.state_id = False + elif not record.state_id: + record.state_id = False + @api.depends( "pms_checkin_partner_ids", "pms_checkin_partner_ids.email", diff --git a/pms/views/pms_checkin_partner_views.xml b/pms/views/pms_checkin_partner_views.xml index 23be08f15..b65fafd0d 100644 --- a/pms/views/pms_checkin_partner_views.xml +++ b/pms/views/pms_checkin_partner_views.xml @@ -53,6 +53,7 @@ + @@ -111,6 +112,7 @@ + @@ -156,6 +158,7 @@ + @@ -198,6 +201,7 @@ + @@ -236,6 +240,7 @@ + diff --git a/pms_l10n_es/models/pms_checkin_partner.py b/pms_l10n_es/models/pms_checkin_partner.py deleted file mode 100644 index 195d4b744..000000000 --- a/pms_l10n_es/models/pms_checkin_partner.py +++ /dev/null @@ -1,5 +0,0 @@ -from odoo import models - - -class PmsCheckinPartner(models.Model): - _inherit = "pms.checkin.partner" diff --git a/pms_l10n_es/models/res_partner.py b/pms_l10n_es/models/res_partner.py deleted file mode 100644 index 10c9c65fd..000000000 --- a/pms_l10n_es/models/res_partner.py +++ /dev/null @@ -1,5 +0,0 @@ -from odoo import models - - -class ResPartner(models.Model): - _inherit = "res.partner"