From 89d6e7d0003280ba186e9b549fc9fb0b81ef2e27 Mon Sep 17 00:00:00 2001 From: braisab Date: Wed, 14 Feb 2024 21:27:36 +0100 Subject: [PATCH] [FIX]pms: partner field is not overwritten if the field does not exist in the last saved checkin --- pms/models/pms_property.py | 4 +- pms/models/pms_reservation.py | 2 +- pms/models/res_partner.py | 33 +++++++------ pms/models/res_partner_id_number.py | 72 ++++++++++++++++++++++++----- 4 files changed, 81 insertions(+), 30 deletions(-) diff --git a/pms/models/pms_property.py b/pms/models/pms_property.py index 9c4bbf9a0..78b062526 100644 --- a/pms/models/pms_property.py +++ b/pms/models/pms_property.py @@ -315,9 +315,7 @@ class PmsProperty(models.Model): lambda x: x.room_type_id.overnight_room ) if capacity: - free_rooms = free_rooms.filtered( - lambda x: x.capacity >= capacity - ) + free_rooms = free_rooms.filtered(lambda x: x.capacity >= capacity) if len(free_rooms) > 0: pms_property.free_room_ids = free_rooms.ids else: diff --git a/pms/models/pms_reservation.py b/pms/models/pms_reservation.py index 708cc1800..8a33e396e 100644 --- a/pms/models/pms_reservation.py +++ b/pms/models/pms_reservation.py @@ -738,6 +738,7 @@ class PmsReservation(models.Model): string="Count alternative free rooms", compute="_compute_count_alternative_free_rooms", ) + @api.depends("folio_id", "folio_id.external_reference") def _compute_external_reference(self): for reservation in self: @@ -1713,7 +1714,6 @@ class PmsReservation(models.Model): current_lines=record.reservation_line_ids.ids, ).availability - def _search_allowed_checkin(self, operator, value): if operator not in ("=",): raise UserError( diff --git a/pms/models/res_partner.py b/pms/models/res_partner.py index ad6c29c84..cb4f1a08d 100644 --- a/pms/models/res_partner.py +++ b/pms/models/res_partner.py @@ -249,7 +249,7 @@ class ResPartner(models.Model): lambda x: x.write_date == max(record.pms_checkin_partner_ids.mapped("write_date")) ) - if last_update_gender: + if last_update_gender and last_update_gender[0].gender: record.gender = last_update_gender[0].gender @api.depends("pms_checkin_partner_ids", "pms_checkin_partner_ids.birthdate_date") @@ -262,7 +262,7 @@ class ResPartner(models.Model): lambda x: x.write_date == max(record.pms_checkin_partner_ids.mapped("write_date")) ) - if last_update_birthdate: + if last_update_birthdate and last_update_birthdate[0].birthdate_date: record.birthdate_date = last_update_birthdate[0].birthdate_date @api.depends("pms_checkin_partner_ids", "pms_checkin_partner_ids.nationality_id") @@ -275,7 +275,10 @@ class ResPartner(models.Model): lambda x: x.write_date == max(record.pms_checkin_partner_ids.mapped("write_date")) ) - if last_update_nationality: + if ( + last_update_nationality + and last_update_nationality[0].nationality_id + ): record.nationality_id = last_update_nationality[0].nationality_id if not record.nationality_id and record.country_id: record.nationality_id = record.country_id @@ -290,7 +293,7 @@ class ResPartner(models.Model): lambda x: x.write_date == max(record.pms_checkin_partner_ids.mapped("write_date")) ) - if last_update_phone: + if last_update_phone and last_update_phone[0].phone: record.phone = last_update_phone[0].phone @api.depends("pms_checkin_partner_ids", "pms_checkin_partner_ids.residence_street") @@ -303,7 +306,7 @@ class ResPartner(models.Model): lambda x: x.write_date == max(record.pms_checkin_partner_ids.mapped("write_date")) ) - if last_update_street: + if last_update_street and last_update_street[0].residence_street: record.residence_street = last_update_street[0].residence_street @api.depends("pms_checkin_partner_ids", "pms_checkin_partner_ids.residence_street2") @@ -316,7 +319,7 @@ class ResPartner(models.Model): lambda x: x.write_date == max(record.pms_checkin_partner_ids.mapped("write_date")) ) - if last_update_street2: + if last_update_street2 and last_update_street2[0].residence_street2: record.residence_street2 = last_update_street2[0].residence_street2 @api.depends("pms_checkin_partner_ids", "pms_checkin_partner_ids.residence_zip") @@ -329,7 +332,7 @@ class ResPartner(models.Model): lambda x: x.write_date == max(record.pms_checkin_partner_ids.mapped("write_date")) ) - if last_update_zip: + if last_update_zip and last_update_zip[0].residence_zip: record.residence_zip = last_update_zip[0].residence_zip @api.depends("pms_checkin_partner_ids", "pms_checkin_partner_ids.residence_city") @@ -342,7 +345,7 @@ class ResPartner(models.Model): lambda x: x.write_date == max(record.pms_checkin_partner_ids.mapped("write_date")) ) - if last_update_city: + if last_update_city and last_update_city[0].residence_city: record.residence_city = last_update_city[0].residence_city @api.depends( @@ -359,7 +362,7 @@ class ResPartner(models.Model): lambda x: x.write_date == max(record.pms_checkin_partner_ids.mapped("write_date")) ) - if last_update_country: + if last_update_country and last_update_country[0].residence_country_id: record.residence_country_id = last_update_country[ 0 ].residence_country_id @@ -376,7 +379,7 @@ class ResPartner(models.Model): lambda x: x.write_date == max(record.pms_checkin_partner_ids.mapped("write_date")) ) - if last_update_state: + if last_update_state and last_update_state[0].residence_state_id: record.residence_state_id = last_update_state[0].residence_state_id @api.depends( @@ -396,7 +399,7 @@ class ResPartner(models.Model): lambda x: x.write_date == max(record.pms_checkin_partner_ids.mapped("write_date")) ) - if last_update_checkin_mail: + if last_update_checkin_mail and last_update_checkin_mail[0].email: record.email = last_update_checkin_mail[0].email @api.depends( @@ -416,7 +419,7 @@ class ResPartner(models.Model): lambda x: x.write_date == max(record.pms_checkin_partner_ids.mapped("write_date")) ) - if last_update_mobile: + if last_update_mobile and last_update_mobile[0].mobile: record.mobile = last_update_mobile[0].mobile @api.depends("pms_checkin_partner_ids", "pms_checkin_partner_ids.firstname") @@ -429,7 +432,7 @@ class ResPartner(models.Model): lambda x: x.write_date == max(record.pms_checkin_partner_ids.mapped("write_date")) ) - if last_update_firstname: + if last_update_firstname and last_update_firstname[0].firstname: record.firstname = last_update_firstname[0].firstname @api.depends("pms_checkin_partner_ids", "pms_checkin_partner_ids.lastname") @@ -442,7 +445,7 @@ class ResPartner(models.Model): lambda x: x.write_date == max(record.pms_checkin_partner_ids.mapped("write_date")) ) - if last_update_lastname: + if last_update_lastname and last_update_lastname[0].lastname: record.lastname = last_update_lastname[0].lastname @api.depends("pms_checkin_partner_ids", "pms_checkin_partner_ids.lastname2") @@ -455,7 +458,7 @@ class ResPartner(models.Model): lambda x: x.write_date == max(record.pms_checkin_partner_ids.mapped("write_date")) ) - if last_update_lastname2: + if last_update_lastname2 and last_update_lastname2[0].lastname2: record.lastname2 = last_update_lastname2[0].lastname2 @api.depends("residence_country_id") diff --git a/pms/models/res_partner_id_number.py b/pms/models/res_partner_id_number.py index 9f43b045e..e833a0472 100644 --- a/pms/models/res_partner_id_number.py +++ b/pms/models/res_partner_id_number.py @@ -14,12 +14,39 @@ from odoo.exceptions import ValidationError class ResPartnerIdNumber(models.Model): _inherit = "res.partner.id_number" + name = fields.Char( + readonly=False, + store=True, + compute="_compute_name", + ) + + category_id = fields.Many2one( + readonly=False, + store=True, + compute="_compute_category_id", + ) + valid_from = fields.Date( readonly=False, store=True, compute="_compute_valid_from", ) + @api.depends("partner_id", "partner_id.pms_checkin_partner_ids.document_number") + def _compute_name(self): + if hasattr(super(), "_compute_name"): + super()._compute_name() + for record in self: + if record.partner_id.pms_checkin_partner_ids: + last_update_name = record.partner_id.pms_checkin_partner_ids.filtered( + lambda x: x.write_date + == max( + record.partner_id.pms_checkin_partner_ids.mapped("write_date") + ) + ) + if last_update_name and last_update_name[0].document_number: + record.name = last_update_name[0].document_number + @api.depends( "partner_id", "partner_id.pms_checkin_partner_ids.document_expedition_date" ) @@ -27,20 +54,43 @@ class ResPartnerIdNumber(models.Model): if hasattr(super(), "_compute_valid_from"): super()._compute_valid_from() for record in self: - if not record.valid_from and record.partner_id.pms_checkin_partner_ids: - document_expedition_date = list( - set( - record.partner_id.pms_checkin_partner_ids.mapped( - "document_expedition_date" + if record.partner_id.pms_checkin_partner_ids: + last_update_valid_from = ( + record.partner_id.pms_checkin_partner_ids.filtered( + lambda x: x.write_date + == max( + record.partner_id.pms_checkin_partner_ids.mapped( + "write_date" + ) ) ) ) - if len(document_expedition_date) == 1: - record.valid_from = document_expedition_date[0] - else: - record.valid_from = False - elif not record.valid_from: - record.valid_from = False + if ( + last_update_valid_from + and last_update_valid_from[0].document_expedition_date + ): + record.valid_from = last_update_valid_from[ + 0 + ].document_expedition_date + + @api.depends("partner_id", "partner_id.pms_checkin_partner_ids.document_type") + def _compute_category_id(self): + if hasattr(super(), "_compute_category_id"): + super()._compute_category_id() + for record in self: + if record.partner_id.pms_checkin_partner_ids: + last_update_category_id = ( + record.partner_id.pms_checkin_partner_ids.filtered( + lambda x: x.write_date + == max( + record.partner_id.pms_checkin_partner_ids.mapped( + "write_date" + ) + ) + ) + ) + if last_update_category_id and last_update_category_id[0].document_type: + record.category_id = last_update_category_id[0].document_type @api.constrains("partner_id", "category_id") def _check_category_id_unique(self):