diff --git a/pms/models/pms_checkin_partner.py b/pms/models/pms_checkin_partner.py index da35d241b..a966d3a88 100644 --- a/pms/models/pms_checkin_partner.py +++ b/pms/models/pms_checkin_partner.py @@ -198,14 +198,14 @@ class PmsCheckinPartner(models.Model): compute="_compute_incongruences", ) - @api.depends("partner_id", "partner_id.id_numbers") + @api.depends("partner_id") def _compute_document_number(self): for record in self: if not record.document_number: if record.partner_id.id_numbers: record.document_number = record.partner_id.id_numbers[0].name - @api.depends("partner_id", "partner_id.id_numbers") + @api.depends("partner_id") def _compute_document_type(self): for record in self: if record.partner_id and record.partner_id.id_numbers: @@ -217,7 +217,6 @@ class PmsCheckinPartner(models.Model): @api.depends( "partner_id", - "partner_id.id_numbers", ) def _compute_document_expedition_date(self): for record in self: @@ -227,44 +226,55 @@ class PmsCheckinPartner(models.Model): 0 ].valid_from - @api.depends("partner_id", "partner_id.firstname") + @api.depends("partner_id") def _compute_firstname(self): for record in self: - if not record.firstname or record.partner_id.firstname: + if not record.firstname and record.partner_id.firstname: record.firstname = record.partner_id.firstname + elif not record.firstname: + record.firstname = False - @api.depends("partner_id", "partner_id.lastname") + @api.depends("partner_id") def _compute_lastname(self): for record in self: - if not record.lastname or record.partner_id.lastname: + if not record.lastname and record.partner_id.lastname: record.lastname = record.partner_id.lastname + elif not record.lastname: + record.lastname = False - @api.depends("partner_id", "partner_id.lastname2") + @api.depends("partner_id") def _compute_lastname2(self): for record in self: - if not record.lastname2 or record.partner_id.lastname2: + if not record.lastname2 and record.partner_id.lastname2: record.lastname2 = record.partner_id.lastname2 + elif not record.lastname2: + record.lastname2 = False - @api.depends("partner_id", "partner_id.birthdate_date") + @api.depends("partner_id") def _compute_birth_date(self): for record in self: - if not record.birthdate_date or record.partner_id.birthdate_date: + if not record.birthdate_date and record.partner_id.birthdate_date: record.birthdate_date = record.partner_id.birthdate_date + elif not record.birthdate_date: + record.birthdate_date = False @api.depends( "partner_id", - "partner_id.gender", ) def _compute_gender(self): for record in self: - if not record.gender or record.partner_id.gender: + if not record.gender and record.partner_id.gender: record.gender = record.partner_id.gender + elif not record.gender: + record.gender = False - @api.depends("partner_id", "partner_id.lastname") + @api.depends("partner_id") def _compute_nationality(self): for record in self: - if not record.nationality_id or record.partner_id.nationality_id: + 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("reservation_id", "folio_id", "reservation_id.preferred_room_id") def _compute_identifier(self): @@ -514,6 +524,11 @@ class PmsCheckinPartner(models.Model): return ["reservation_id.state", "name"] mandatory_fields = [ "name", + "birthdate_date", + "gender", + "document_number", + "document_type", + "document_expedition_date", ] return mandatory_fields @@ -560,6 +575,7 @@ class PmsCheckinPartner(models.Model): raise ValidationError(_("It is not yet checkin day!")) if record.reservation_id.checkout <= fields.Date.today(): raise ValidationError(_("Its too late to checkin")) + if any( not getattr(record, field) for field in self._checkin_mandatory_fields() ): diff --git a/pms/models/res_partner.py b/pms/models/res_partner.py index 04045a6e9..d3328d1ad 100644 --- a/pms/models/res_partner.py +++ b/pms/models/res_partner.py @@ -115,72 +115,122 @@ class ResPartner(models.Model): if hasattr(super(), "_compute_gender"): super()._compute_field() for record in self: - gender = record.pms_checkin_partner_ids.mapped("gender") - if gender: - record.gender = gender[0] + if not record.gender and record.pms_checkin_partner_ids: + gender = list(set(record.pms_checkin_partner_ids.mapped("gender"))) + if len(gender) == 1: + record.gender = gender[0] + else: + record.gender = False + elif not record.gender: + record.gender = False @api.depends("pms_checkin_partner_ids", "pms_checkin_partner_ids.birthdate_date") def _compute_birthdate_date(self): if hasattr(super(), "_compute_birthdate_date"): super()._compute_field() for record in self: - birthdate = record.pms_checkin_partner_ids.mapped("birthdate_date") - if birthdate: - record.birthdate_date = birthdate[0] + if not record.birthdate_date and record.pms_checkin_partner_ids: + birthdate = list( + set(record.pms_checkin_partner_ids.mapped("birthdate_date")) + ) + if len(birthdate) == 1: + record.birthdate_date = birthdate[0] + else: + record.birthdate_date = False + elif not record.birthdate_date: + record.birthdate_date = False @api.depends("pms_checkin_partner_ids", "pms_checkin_partner_ids.nationality_id") def _compute_nationality_id(self): if hasattr(super(), "_compute_nationality_id"): super()._compute_field() for record in self: - nationality = record.pms_checkin_partner_ids.nationality_id - if nationality: - record.nationality_id = nationality[0] + if not record.nationality_id and record.pms_checkin_partner_ids: + nationality_id = list( + set(record.pms_checkin_partner_ids.mapped("nationality_id")) + ) + if len(nationality_id) == 1: + record.nationality_id = nationality_id[0] + else: + record.nationality_id = False + elif not record.nationality_id: + record.nationality_id = False @api.depends("pms_checkin_partner_ids", "pms_checkin_partner_ids.email") def _compute_email(self): if hasattr(super(), "_compute_email"): super()._compute_field() - for record in self: - email = record.pms_checkin_partner_ids.mapped("email") - if email: - record.email = email[0] + for record in self: + if not record.email and record.pms_checkin_partner_ids: + email = list(set(record.pms_checkin_partner_ids.mapped("email"))) + if len(email) == 1: + record.email = email[0] + else: + record.email = False + elif not record.email: + record.email = False @api.depends("pms_checkin_partner_ids", "pms_checkin_partner_ids.mobile") def _compute_mobile(self): if hasattr(super(), "_compute_mobile"): super()._compute_field() - for record in self: - mobile = record.pms_checkin_partner_ids.mapped("mobile") - if mobile: - record.mobile = mobile[0] + for record in self: + if not record.mobile and record.pms_checkin_partner_ids: + mobile = list(set(record.pms_checkin_partner_ids.mapped("mobile"))) + if len(mobile) == 1: + record.mobile = mobile[0] + else: + record.mobile = False + elif not record.mobile: + record.mobile = False @api.depends("pms_checkin_partner_ids", "pms_checkin_partner_ids.firstname") def _compute_firstname(self): if hasattr(super(), "_compute_firstname"): super()._compute_field() - for record in self: - firstname = record.pms_checkin_partner_ids.mapped("firstname") - if firstname: - record.firstname = firstname[0] + for record in self: + if not record.firstname and record.pms_checkin_partner_ids: + firstname = list( + set(record.pms_checkin_partner_ids.mapped("firstname")) + ) + if len(firstname) == 1: + record.firstname = firstname[0] + else: + record.firstname = False + elif not record.firstname: + record.firstname = False @api.depends("pms_checkin_partner_ids", "pms_checkin_partner_ids.lastname") def _compute_lastname(self): if hasattr(super(), "_compute_lastname"): super()._compute_field() - for record in self: - lastname = record.pms_checkin_partner_ids.mapped("lastname") - if lastname: - record.lastname = lastname[0] + for record in self: + if not record.lastname and record.pms_checkin_partner_ids: + lastname = list( + set(record.pms_checkin_partner_ids.mapped("lastname")) + ) + if len(lastname) == 1: + record.lastname = lastname[0] + else: + record.lastname = False + elif not record.lastname: + record.lastname = False @api.depends("pms_checkin_partner_ids", "pms_checkin_partner_ids.lastname2") def _compute_lastname2(self): if hasattr(super(), "_compute_lastname2"): super()._compute_field() - for record in self: - lastname2 = record.pms_checkin_partner_ids.mapped("lastname2") - if lastname2: - record.lastname2 = lastname2[0] + for record in self: + if not record.lastname2 and record.pms_checkin_partner_ids: + lastname2 = list( + set(record.pms_checkin_partner_ids.mapped("lastname2")) + ) + if len(lastname2) == 1: + record.lastname2 = lastname2[0] + else: + record.lastname2 = False + elif not record.lastname2: + record.lastname2 = False def _compute_reservations_count(self): # TODO: recuperar las reservas de los folios del partner diff --git a/pms/models/res_partner_id_number.py b/pms/models/res_partner_id_number.py index 174a21680..707426860 100644 --- a/pms/models/res_partner_id_number.py +++ b/pms/models/res_partner_id_number.py @@ -27,11 +27,20 @@ class ResPartnerIdNumber(models.Model): if hasattr(super(), "_compute_valid_from"): super()._compute_field() for record in self: - expedition_date = record.partner_id.pms_checkin_partner_ids.mapped( - "document_expedition_date" - ) - if expedition_date: - record.valid_from = expedition_date[0] + if not record.valid_from and record.pms_checkin_partner_ids: + document_expedition_date = list( + set( + record.pms_checkin_partner_ids.mapped( + "document_expedition_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 @api.constrains("partner_id", "category_id") def _check_category_id_unique(self):