From ec375c749bd8121ad6917bde8b563c7d652beeef Mon Sep 17 00:00:00 2001 From: Sara Lago Date: Wed, 2 Jun 2021 17:12:46 +0200 Subject: [PATCH] [REF] pms and pms_l10n_es: refactor checkin_partner/res_partner fields --- pms/__manifest__.py | 7 +- pms/data/pms_data.xml | 21 +++ pms/models/pms_checkin_partner.py | 126 +++++++++++++++- pms/models/res_partner.py | 4 +- pms/views/pms_checkin_partner_views.xml | 57 +++++++- pms_l10n_es/__manifest__.py | 3 +- pms_l10n_es/data/pms_data.xml | 9 ++ pms_l10n_es/models/__init__.py | 2 +- pms_l10n_es/models/pms_checkin_partner.py | 136 +----------------- pms_l10n_es/models/res_partner.py | 44 ------ .../views/pms_checkin_partner_views.xml | 100 ------------- pms_l10n_es/views/res_partner_views.xml | 36 ++--- 12 files changed, 235 insertions(+), 310 deletions(-) create mode 100644 pms_l10n_es/data/pms_data.xml delete mode 100644 pms_l10n_es/views/pms_checkin_partner_views.xml diff --git a/pms/__manifest__.py b/pms/__manifest__.py index ae7707947..6258e2f22 100644 --- a/pms/__manifest__.py +++ b/pms/__manifest__.py @@ -16,10 +16,15 @@ "base", "mail", # "account_payment_return", - # "partner_firstname", # "email_template_qweb", "sale", "multi_pms_properties", + "partner_identification", + "partner_firstname", + "partner_second_lastname", + "partner_contact_gender", + "partner_contact_birthdate", + "partner_contact_nationality", ], "data": [ "security/pms_security.xml", diff --git a/pms/data/pms_data.xml b/pms/data/pms_data.xml index 685754758..bd434e6d6 100644 --- a/pms/data/pms_data.xml +++ b/pms/data/pms_data.xml @@ -52,5 +52,26 @@ Agency indirect + + + Passport + P + + + Driving License + C + + + Identification Document + I + + + Spanish Residence permit + N + + + European Residence permit + X + diff --git a/pms/models/pms_checkin_partner.py b/pms/models/pms_checkin_partner.py index 8d1a846cf..ab9030b0c 100644 --- a/pms/models/pms_checkin_partner.py +++ b/pms/models/pms_checkin_partner.py @@ -116,7 +116,122 @@ class PmsCheckinPartner(models.Model): compute="_compute_state", ) + gender = fields.Selection( + [("male", "Male"), ("female", "Female"), ("other", "Other")], + string="Gender", + compute="_compute_gender", + store=True, + readonly=False, + ) + nationality_id = fields.Many2one( + string="Nationality ID", + compute="_compute_nationality", + comodel_name="res.country", + store=True, + readonly=False, + ) + firstname = fields.Char( + "First Name", + compute="_compute_firstname", + store=True, + readonly=False, + ) + lastname = fields.Char( + "Last Name", + compute="_compute_lastname", + store=True, + readonly=False, + ) + lastname2 = fields.Char( + "Second Last Name", + compute="_compute_lastname2", + store=True, + readonly=False, + ) + birthdate_date = fields.Date( + "Birthdate", + compute="_compute_birth_date", + store=True, + readonly=False, + ) + document_number = fields.Char( + "Document Number", + #compute="_compute_document_number", + store=True, + readonly=False, + ) + document_type = fields.Many2one( + string="Document Type", + comodel_name="res.partner.id_category", + help="Select a valid document type", + #compute="_compute_document_type", + store=True, + readonly=False, + ) + document_expedition_date = fields.Date( + "Expedition Date", + #compute="_compute_document_expedition_date", + store=True, + readonly=False, + ) # Compute + # **************************************************** + # @api.depends("partner_id", "partner_id.document_number") + # def _compute_document_number(self): + # for record in self: + # if not record.document_number: + # record.document_number = record.partner_id.document_number + # + # @api.depends("partner_id", "partner_id.document_type") + # def _compute_document_type(self): + # for record in self: + # if not record.document_type: + # record.document_type = record.partner_id.document_type + # + # @api.depends("partner_id", "partner_id.document_expedition_date") + # def _compute_document_expedition_date(self): + # for record in self: + # if not record.document_expedition_date: + # record.document_expedition_date = ( + # record.partner_id.document_expedition_date + # ) + + @api.depends("partner_id", "partner_id.firstname") + def _compute_firstname(self): + for record in self: + if not record.firstname: + record.firstname = record.partner_id.firstname + + @api.depends("partner_id", "partner_id.lastname") + def _compute_lastname(self): + for record in self: + if not record.lastname: + record.lastname = record.partner_id.lastname + + @api.depends("partner_id", "partner_id.lastname2") + def _compute_lastname2(self): + for record in self: + if not record.lastname2: + record.lastname2 = record.partner_id.lastname2 + + @api.depends("partner_id", "partner_id.birthdate_date") + def _compute_birth_date(self): + for record in self: + if not record.birthdate_date: + record.birthdate_date = record.partner_id.birthdate_date + + @api.depends("partner_id", "partner_id.gender") + def _compute_gender(self): + for record in self: + if not record.gender: + record.gender = record.partner_id.gender + + @api.depends("partner_id", "partner_id.lastname") + def _compute_nationality(self): + for record in self: + if not record.nationality_id: + record.nationality_id = record.partner_id.nationality_id + @api.depends("reservation_id", "folio_id", "reservation_id.preferred_room_id") def _compute_identifier(self): for record in self: @@ -303,7 +418,16 @@ class PmsCheckinPartner(models.Model): # api.depends need "reservation_id.state" in the lambda function if depends: return ["reservation_id.state", "name"] - return ["name"] + mandatory_fields = [ + "birthdate_date", + "document_number", + "document_type", + "document_expedition_date", + "gender", + "name" + ] + + return mandatory_fields @api.model def _checkin_partner_fields(self): diff --git a/pms/models/res_partner.py b/pms/models/res_partner.py index d92865fe6..d971a0917 100644 --- a/pms/models/res_partner.py +++ b/pms/models/res_partner.py @@ -149,4 +149,6 @@ class ResPartner(models.Model): @api.model def _get_key_fields(self): - return [] + key_fields = super(ResPartner, self)._get_key_fields() + key_fields.extend(["document_number"]) + return key_fields diff --git a/pms/views/pms_checkin_partner_views.xml b/pms/views/pms_checkin_partner_views.xml index 0ae652ec4..62b082a15 100644 --- a/pms/views/pms_checkin_partner_views.xml +++ b/pms/views/pms_checkin_partner_views.xml @@ -29,10 +29,17 @@ - + + + + + + + + + @@ -70,7 +77,15 @@ /> - + + + + + + + + + @@ -107,7 +122,15 @@ - + + + + + + + + + @@ -139,7 +162,17 @@ /> - + + + + + + + + + + + @@ -167,11 +200,21 @@ > - - + + + + + + + + + + + + diff --git a/pms_l10n_es/__manifest__.py b/pms_l10n_es/__manifest__.py index 1ff4d1fc9..68419783f 100644 --- a/pms_l10n_es/__manifest__.py +++ b/pms_l10n_es/__manifest__.py @@ -28,9 +28,8 @@ "data/queue_data.xml", "data/queue_job_function_data.xml", "security/ir.model.access.csv", - "views/pms_checkin_partner_views.xml", "views/pms_property_views.xml", - "views/res_partner_views.xml", + #"views/res_partner_views.xml", "wizards/traveller_report.xml", ], "installable": True, diff --git a/pms_l10n_es/data/pms_data.xml b/pms_l10n_es/data/pms_data.xml new file mode 100644 index 000000000..a0c645281 --- /dev/null +++ b/pms_l10n_es/data/pms_data.xml @@ -0,0 +1,9 @@ + + + + + DNI + D + + + diff --git a/pms_l10n_es/models/__init__.py b/pms_l10n_es/models/__init__.py index ebd8614e3..96f0208e9 100644 --- a/pms_l10n_es/models/__init__.py +++ b/pms_l10n_es/models/__init__.py @@ -1,3 +1,3 @@ -from . import res_partner +#from . import res_partner from . import pms_checkin_partner from . import pms_property diff --git a/pms_l10n_es/models/pms_checkin_partner.py b/pms_l10n_es/models/pms_checkin_partner.py index 1daf65134..015a43cba 100644 --- a/pms_l10n_es/models/pms_checkin_partner.py +++ b/pms_l10n_es/models/pms_checkin_partner.py @@ -4,140 +4,6 @@ from odoo import api, fields, models class PmsCheckinPartner(models.Model): _inherit = "pms.checkin.partner" - firstname = fields.Char( - "First Name", - compute="_compute_firstname", - store=True, - readonly=False, - ) - lastname = fields.Char( - "Last Name", - compute="_compute_lastname", - store=True, - readonly=False, - ) lastname2 = fields.Char( - "Second Last Name", - compute="_compute_lastname2", - store=True, - readonly=False, + required=True, ) - birthdate_date = fields.Date( - "Birthdate", - compute="_compute_birth_date", - store=True, - readonly=False, - ) - document_number = fields.Char( - "Document Number", - compute="_compute_document_number", - store=True, - readonly=False, - ) - document_type = fields.Selection( - [ - ("D", "DNI"), - ("P", "Passport"), - ("C", "Driving License"), - ("I", "Identification Document"), - ("N", "Spanish residence permit"), - ("X", "European residence permit"), - ], - string="Document Type", - help="Select a valid document type", - compute="_compute_document_type", - store=True, - readonly=False, - ) - document_expedition_date = fields.Date( - "Expedition Date", - compute="_compute_document_expedition_date", - store=True, - readonly=False, - ) - gender = fields.Selection( - [("male", "Male"), ("female", "Female"), ("other", "Other")], - string="Gender", - compute="_compute_gender", - store=True, - readonly=False, - ) - nationality_id = fields.Many2one( - string="Nationality ID", - compute="_compute_nationality", - comodel_name="res.country", - store=True, - readonly=False, - ) - - @api.depends("partner_id", "partner_id.firstname") - def _compute_firstname(self): - for record in self: - if not record.firstname: - record.firstname = record.partner_id.firstname - - @api.depends("partner_id", "partner_id.lastname") - def _compute_lastname(self): - for record in self: - if not record.lastname: - record.lastname = record.partner_id.lastname - - @api.depends("partner_id", "partner_id.lastname2") - def _compute_lastname2(self): - for record in self: - if not record.lastname2: - record.lastname2 = record.partner_id.lastname2 - - @api.depends("partner_id", "partner_id.birthdate_date") - def _compute_birth_date(self): - for record in self: - if not record.birthdate_date: - record.birthdate_date = record.partner_id.birthdate_date - - @api.depends("partner_id", "partner_id.document_number") - def _compute_document_number(self): - for record in self: - if not record.document_number: - record.document_number = record.partner_id.document_number - - @api.depends("partner_id", "partner_id.document_type") - def _compute_document_type(self): - for record in self: - if not record.document_type: - record.document_type = record.partner_id.document_type - - @api.depends("partner_id", "partner_id.document_expedition_date") - def _compute_document_expedition_date(self): - for record in self: - if not record.document_expedition_date: - record.document_expedition_date = ( - record.partner_id.document_expedition_date - ) - - @api.depends("partner_id", "partner_id.gender") - def _compute_gender(self): - for record in self: - if not record.gender: - record.gender = record.partner_id.gender - - @api.depends("partner_id", "partner_id.lastname") - def _compute_nationality(self): - for record in self: - if not record.nationality_id: - record.nationality_id = record.partner_id.nationality_id - - @api.model - def _checkin_mandatory_fields(self, depends=False): - mandatory_fields = super(PmsCheckinPartner, self)._checkin_mandatory_fields( - depends - ) - mandatory_fields.extend( - [ - "birthdate_date", - "document_number", - "document_type", - "document_expedition_date", - "gender", - ] - ) - return mandatory_fields diff --git a/pms_l10n_es/models/res_partner.py b/pms_l10n_es/models/res_partner.py index 4dfe8fad0..829ae8e41 100644 --- a/pms_l10n_es/models/res_partner.py +++ b/pms_l10n_es/models/res_partner.py @@ -3,47 +3,3 @@ from odoo import _, api, fields, models class ResPartner(models.Model): _inherit = "res.partner" - - document_type = fields.Selection( - [ - ("D", "DNI"), - ("P", "Passport"), - ("C", "Driving License"), - ("I", "Identification Document"), - ("N", "Spanish residence permit"), - ("X", "European residence permit"), - ], - help="Select a valid document type", - string="Doc. type", - ) - document_number = fields.Char( - string="Document number", - ) - document_expedition_date = fields.Date(string="Document expedition date") - - @api.constrains("document_number", "document_type") - def _check_document(self): - for record in self.filtered("document_number"): - if not record.document_type: - raise models.ValidationError(_("Document Type field are mandatory")) - partner = self.search( - [ - ("document_number", "=", record.document_number), - ("document_type", "=", record.document_type), - ("id", "!=", record.id), - ] - ) - if partner: - raise models.ValidationError( - _( - "Document Number Partner %s already exist (%s)", - record.document_number, - partner.name, - ) - ) - - @api.model - def _get_key_fields(self): - key_fields = super(ResPartner, self)._get_key_fields() - key_fields.extend(["document_number"]) - return key_fields diff --git a/pms_l10n_es/views/pms_checkin_partner_views.xml b/pms_l10n_es/views/pms_checkin_partner_views.xml deleted file mode 100644 index 96a1f4de6..000000000 --- a/pms_l10n_es/views/pms_checkin_partner_views.xml +++ /dev/null @@ -1,100 +0,0 @@ - - - - Checkin partner view form Spain - pms.checkin.partner - - - - - - - - - - - - - - - - - - - Checkin partner view reservation tree Spain - pms.checkin.partner - - - - - - - - - - - - - - - - - - - Checkin partner view reservation tree Spain - pms.checkin.partner - - - - - - - - - - - - - - - - - - - Checkin partner view tree Spain - pms.checkin.partner - - - - - - - - - - - - - - - - - - Checkin partner view tree Spain - pms.checkin.partner - - - - - - - - - - - - - - - - diff --git a/pms_l10n_es/views/res_partner_views.xml b/pms_l10n_es/views/res_partner_views.xml index 2f2c75775..21e9dc562 100644 --- a/pms_l10n_es/views/res_partner_views.xml +++ b/pms_l10n_es/views/res_partner_views.xml @@ -1,19 +1,19 @@ - - - - Legal Spanish information - res.partner - - - - - - - - - + + + + + + + + + + + + + + + + + - +