From fbe8d2bef3a349cf84110184658d71076b153c22 Mon Sep 17 00:00:00 2001 From: Dario Lodeiros Date: Sat, 19 Jun 2021 10:55:27 +0200 Subject: [PATCH] [IMP] incongruence partner fields on reservation/folio/checkin --- pms/i18n/es.po | 6 +-- pms/i18n/pms.pot | 6 +-- pms/models/pms_checkin_partner.py | 28 ++++++++------ pms/models/pms_folio.py | 51 +++++++++++++++++++++++++ pms/models/pms_reservation.py | 51 +++++++++++++++++++++++++ pms/views/pms_checkin_partner_views.xml | 4 +- pms/views/pms_folio_views.xml | 16 ++++++++ pms/views/pms_reservation_views.xml | 16 ++++++++ 8 files changed, 159 insertions(+), 19 deletions(-) diff --git a/pms/i18n/es.po b/pms/i18n/es.po index ab4d76cfb..23fa1ab61 100644 --- a/pms/i18n/es.po +++ b/pms/i18n/es.po @@ -3788,8 +3788,8 @@ msgid "Income Account" msgstr "Cuenta de Ingresos" #. module: pms -#: model:ir.model.fields,field_description:pms.field_pms_checkin_partner__incongruences -msgid "Incongruences" +#: model:ir.model.fields,field_description:pms.field_pms_checkin_partner__partner_incongruences +msgid "partner_incongruences" msgstr "" #. module: pms @@ -7963,7 +7963,7 @@ msgstr "Computación técnica" #. module: pms #: model:ir.model.fields,help:pms.field_pms_checkin_partner__document_id -#: model:ir.model.fields,help:pms.field_pms_checkin_partner__incongruences +#: model:ir.model.fields,help:pms.field_pms_checkin_partner__partner_incongruences #, fuzzy msgid "Technical field" msgstr "Computación técnica" diff --git a/pms/i18n/pms.pot b/pms/i18n/pms.pot index 8af8bffd3..75d34e9ee 100644 --- a/pms/i18n/pms.pot +++ b/pms/i18n/pms.pot @@ -3582,8 +3582,8 @@ msgid "Income Account" msgstr "" #. module: pms -#: model:ir.model.fields,field_description:pms.field_pms_checkin_partner__incongruences -msgid "Incongruences" +#: model:ir.model.fields,field_description:pms.field_pms_checkin_partner__partner_incongruences +msgid "partner_incongruences" msgstr "" #. module: pms @@ -7586,7 +7586,7 @@ msgstr "" #. module: pms #: model:ir.model.fields,help:pms.field_pms_checkin_partner__document_id -#: model:ir.model.fields,help:pms.field_pms_checkin_partner__incongruences +#: model:ir.model.fields,help:pms.field_pms_checkin_partner__partner_incongruences msgid "Technical field" msgstr "" diff --git a/pms/models/pms_checkin_partner.py b/pms/models/pms_checkin_partner.py index 2e9e3e8f7..5931d2d9e 100644 --- a/pms/models/pms_checkin_partner.py +++ b/pms/models/pms_checkin_partner.py @@ -192,10 +192,12 @@ class PmsCheckinPartner(models.Model): ondelete="restrict", ) - incongruences = fields.Char( - string="Incongruences", - help="Technical field", - compute="_compute_incongruences", + partner_incongruences = fields.Char( + string="partner_incongruences", + help="indicates that some partner fields \ + on the checkin do not correspond to that of \ + the associated partner", + compute="_compute_partner_incongruences", ) @api.depends("partner_id") @@ -405,25 +407,29 @@ class PmsCheckinPartner(models.Model): "nationality_id", "email", "mobile", + "partner_id", ) - def _compute_incongruences(self): + def _compute_partner_incongruences(self): for record in self: - incongruous_fields = "" + incongruous_fields = False if record.partner_id: for field in record._checkin_partner_fields(): if ( record.partner_id[field] and record.partner_id[field] != record[field] ): - incongruous_fields += record._fields[field].string + ", " + if not incongruous_fields: + incongruous_fields = record._fields[field].string + else: + incongruous_fields += ", " + record._fields[field].string if incongruous_fields: - record.incongruences = ( - incongruous_fields + "field/s don't correspond to saved host" + record.partner_incongruences = ( + incongruous_fields + " field/s don't correspond to saved host" ) else: - record.incongruences = False + record.partner_incongruences = False else: - record.incongruences = False + record.partner_incongruences = False @api.constrains("departure", "arrival") def _check_departure(self): diff --git a/pms/models/pms_folio.py b/pms/models/pms_folio.py index 642799a72..96b5cb342 100644 --- a/pms/models/pms_folio.py +++ b/pms/models/pms_folio.py @@ -338,6 +338,13 @@ class PmsFolio(models.Model): readonly=False, compute="_compute_mobile", ) + partner_incongruences = fields.Char( + string="partner_incongruences", + help="indicates that some partner fields \ + on the folio do not correspond to that of \ + the associated partner", + compute="_compute_partner_incongruences", + ) partner_internal_comment = fields.Text( string="Internal Partner Notes", help="Internal notes of the partner", @@ -770,6 +777,36 @@ class PmsFolio(models.Model): elif not record.mobile: record.mobile = False + @api.depends( + "partner_name", + "email", + "mobile", + "partner_id", + ) + def _compute_partner_incongruences(self): + fields_mapping = { + "partner_name": "name", + "email": "email", + "mobile": "mobile", + } + for record in self: + incongruous_fields = False + if record.partner_id: + for k, v in fields_mapping.items(): + if record.partner_id[v] and record.partner_id[v] != record[k]: + if not incongruous_fields: + incongruous_fields = v + else: + incongruous_fields += ", " + v + if incongruous_fields: + record.partner_incongruences = ( + incongruous_fields + " field/s don't correspond to saved host" + ) + else: + record.partner_incongruences = False + else: + record.partner_incongruences = False + @api.depends("sale_line_ids.price_total") def _compute_amount_all(self): """ @@ -978,6 +1015,20 @@ class PmsFolio(models.Model): "target": "new", } + def open_partner(self): + """ Utility method used to add an "View Customer" button in folio views """ + self.ensure_one() + partner_form_id = self.env.ref("base.view_partner_address_form").id + return { + "type": "ir.actions.act_window", + "res_model": "res.partner", + "view_mode": "form", + "views": [(partner_form_id, "form")], + "res_id": self.partner_id.id, + "target": "new", + "flags": {"form": {"action_buttons": True}}, + } + def open_moves_folio(self): invoices = self.mapped("move_ids") action = self.env.ref("account.action_move_out_invoice_type").sudo().read()[0] diff --git a/pms/models/pms_reservation.py b/pms/models/pms_reservation.py index 39f422934..44b3b1a29 100644 --- a/pms/models/pms_reservation.py +++ b/pms/models/pms_reservation.py @@ -480,6 +480,13 @@ class PmsReservation(models.Model): readonly=False, compute="_compute_mobile", ) + partner_incongruences = fields.Char( + string="partner_incongruences", + help="indicates that some partner fields \ + on the reservation do not correspond to that of \ + the associated partner", + compute="_compute_partner_incongruences", + ) partner_internal_comment = fields.Text( string="Internal Partner Notes", help="Internal reservation comment", @@ -1176,6 +1183,36 @@ class PmsReservation(models.Model): elif not record.partner_mobile: record.partner_mobile = False + @api.depends( + "partner_name", + "partner_email", + "partner_mobile", + "partner_id", + ) + def _compute_partner_incongruences(self): + fields_mapping = { + "partner_name": "name", + "partner_email": "email", + "partner_mobile": "mobile", + } + for record in self: + incongruous_fields = False + if record.partner_id: + for k, v in fields_mapping.items(): + if record.partner_id[v] and record.partner_id[v] != record[k]: + if not incongruous_fields: + incongruous_fields = v + else: + incongruous_fields += ", " + v + if incongruous_fields: + record.partner_incongruences = ( + incongruous_fields + " field/s don't correspond to saved host" + ) + else: + record.partner_incongruences = False + else: + record.partner_incongruences = False + def _compute_checkin_partner_count(self): for record in self: if record.reservation_type != "out": @@ -1369,6 +1406,20 @@ class PmsReservation(models.Model): raise ValidationError(_("booking agency with wrong configuration: ")) # Action methods + def open_partner(self): + """ Utility method used to add an "View Customer" button in folio views """ + self.ensure_one() + partner_form_id = self.env.ref("base.view_partner_address_form").id + return { + "type": "ir.actions.act_window", + "res_model": "res.partner", + "view_mode": "form", + "views": [(partner_form_id, "form")], + "res_id": self.partner_id.id, + "target": "new", + "flags": {"form": {"action_buttons": True}}, + } + def print_all_checkins(self): checkins = self.env["pms.checkin.partner"] for record in self: diff --git a/pms/views/pms_checkin_partner_views.xml b/pms/views/pms_checkin_partner_views.xml index b7852748f..2fd7a1d4d 100644 --- a/pms/views/pms_checkin_partner_views.xml +++ b/pms/views/pms_checkin_partner_views.xml @@ -29,9 +29,9 @@ class="alert alert-danger" role="danger" style="margin-bottom:0px;" - attrs="{'invisible': [('incongruences','=',False)]}" + attrs="{'invisible': [('partner_incongruences','=',False)]}" > - + diff --git a/pms/views/pms_folio_views.xml b/pms/views/pms_folio_views.xml index bc1c01aa4..35cb9cdf7 100644 --- a/pms/views/pms_folio_views.xml +++ b/pms/views/pms_folio_views.xml @@ -39,6 +39,22 @@ statusbar_visible="draft,sent,sale,done" /> +
+