[FIX]pms: fixed computes so that res.partner fields are not overwritten

This commit is contained in:
braisab
2021-06-15 18:56:35 +02:00
committed by Sara Lago
parent 93f813f3dc
commit bf12df706e
3 changed files with 124 additions and 49 deletions

View File

@@ -198,14 +198,14 @@ class PmsCheckinPartner(models.Model):
compute="_compute_incongruences", compute="_compute_incongruences",
) )
@api.depends("partner_id", "partner_id.id_numbers") @api.depends("partner_id")
def _compute_document_number(self): def _compute_document_number(self):
for record in self: for record in self:
if not record.document_number: if not record.document_number:
if record.partner_id.id_numbers: if record.partner_id.id_numbers:
record.document_number = record.partner_id.id_numbers[0].name 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): def _compute_document_type(self):
for record in self: for record in self:
if record.partner_id and record.partner_id.id_numbers: if record.partner_id and record.partner_id.id_numbers:
@@ -217,7 +217,6 @@ class PmsCheckinPartner(models.Model):
@api.depends( @api.depends(
"partner_id", "partner_id",
"partner_id.id_numbers",
) )
def _compute_document_expedition_date(self): def _compute_document_expedition_date(self):
for record in self: for record in self:
@@ -227,44 +226,55 @@ class PmsCheckinPartner(models.Model):
0 0
].valid_from ].valid_from
@api.depends("partner_id", "partner_id.firstname") @api.depends("partner_id")
def _compute_firstname(self): def _compute_firstname(self):
for record in 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 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): def _compute_lastname(self):
for record in 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 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): def _compute_lastname2(self):
for record in 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 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): def _compute_birth_date(self):
for record in 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 record.birthdate_date = record.partner_id.birthdate_date
elif not record.birthdate_date:
record.birthdate_date = False
@api.depends( @api.depends(
"partner_id", "partner_id",
"partner_id.gender",
) )
def _compute_gender(self): def _compute_gender(self):
for record in 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 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): def _compute_nationality(self):
for record in 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 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") @api.depends("reservation_id", "folio_id", "reservation_id.preferred_room_id")
def _compute_identifier(self): def _compute_identifier(self):
@@ -514,6 +524,11 @@ class PmsCheckinPartner(models.Model):
return ["reservation_id.state", "name"] return ["reservation_id.state", "name"]
mandatory_fields = [ mandatory_fields = [
"name", "name",
"birthdate_date",
"gender",
"document_number",
"document_type",
"document_expedition_date",
] ]
return mandatory_fields return mandatory_fields
@@ -560,6 +575,7 @@ class PmsCheckinPartner(models.Model):
raise ValidationError(_("It is not yet checkin day!")) raise ValidationError(_("It is not yet checkin day!"))
if record.reservation_id.checkout <= fields.Date.today(): if record.reservation_id.checkout <= fields.Date.today():
raise ValidationError(_("Its too late to checkin")) raise ValidationError(_("Its too late to checkin"))
if any( if any(
not getattr(record, field) for field in self._checkin_mandatory_fields() not getattr(record, field) for field in self._checkin_mandatory_fields()
): ):

View File

@@ -115,72 +115,122 @@ class ResPartner(models.Model):
if hasattr(super(), "_compute_gender"): if hasattr(super(), "_compute_gender"):
super()._compute_field() super()._compute_field()
for record in self: for record in self:
gender = record.pms_checkin_partner_ids.mapped("gender") if not record.gender and record.pms_checkin_partner_ids:
if gender: gender = list(set(record.pms_checkin_partner_ids.mapped("gender")))
record.gender = gender[0] 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") @api.depends("pms_checkin_partner_ids", "pms_checkin_partner_ids.birthdate_date")
def _compute_birthdate_date(self): def _compute_birthdate_date(self):
if hasattr(super(), "_compute_birthdate_date"): if hasattr(super(), "_compute_birthdate_date"):
super()._compute_field() super()._compute_field()
for record in self: for record in self:
birthdate = record.pms_checkin_partner_ids.mapped("birthdate_date") if not record.birthdate_date and record.pms_checkin_partner_ids:
if birthdate: birthdate = list(
record.birthdate_date = birthdate[0] 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") @api.depends("pms_checkin_partner_ids", "pms_checkin_partner_ids.nationality_id")
def _compute_nationality_id(self): def _compute_nationality_id(self):
if hasattr(super(), "_compute_nationality_id"): if hasattr(super(), "_compute_nationality_id"):
super()._compute_field() super()._compute_field()
for record in self: for record in self:
nationality = record.pms_checkin_partner_ids.nationality_id if not record.nationality_id and record.pms_checkin_partner_ids:
if nationality: nationality_id = list(
record.nationality_id = nationality[0] 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") @api.depends("pms_checkin_partner_ids", "pms_checkin_partner_ids.email")
def _compute_email(self): def _compute_email(self):
if hasattr(super(), "_compute_email"): if hasattr(super(), "_compute_email"):
super()._compute_field() super()._compute_field()
for record in self: for record in self:
email = record.pms_checkin_partner_ids.mapped("email") if not record.email and record.pms_checkin_partner_ids:
if email: email = list(set(record.pms_checkin_partner_ids.mapped("email")))
record.email = email[0] 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") @api.depends("pms_checkin_partner_ids", "pms_checkin_partner_ids.mobile")
def _compute_mobile(self): def _compute_mobile(self):
if hasattr(super(), "_compute_mobile"): if hasattr(super(), "_compute_mobile"):
super()._compute_field() super()._compute_field()
for record in self: for record in self:
mobile = record.pms_checkin_partner_ids.mapped("mobile") if not record.mobile and record.pms_checkin_partner_ids:
if mobile: mobile = list(set(record.pms_checkin_partner_ids.mapped("mobile")))
record.mobile = mobile[0] 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") @api.depends("pms_checkin_partner_ids", "pms_checkin_partner_ids.firstname")
def _compute_firstname(self): def _compute_firstname(self):
if hasattr(super(), "_compute_firstname"): if hasattr(super(), "_compute_firstname"):
super()._compute_field() super()._compute_field()
for record in self: for record in self:
firstname = record.pms_checkin_partner_ids.mapped("firstname") if not record.firstname and record.pms_checkin_partner_ids:
if firstname: firstname = list(
record.firstname = firstname[0] 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") @api.depends("pms_checkin_partner_ids", "pms_checkin_partner_ids.lastname")
def _compute_lastname(self): def _compute_lastname(self):
if hasattr(super(), "_compute_lastname"): if hasattr(super(), "_compute_lastname"):
super()._compute_field() super()._compute_field()
for record in self: for record in self:
lastname = record.pms_checkin_partner_ids.mapped("lastname") if not record.lastname and record.pms_checkin_partner_ids:
if lastname: lastname = list(
record.lastname = lastname[0] 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") @api.depends("pms_checkin_partner_ids", "pms_checkin_partner_ids.lastname2")
def _compute_lastname2(self): def _compute_lastname2(self):
if hasattr(super(), "_compute_lastname2"): if hasattr(super(), "_compute_lastname2"):
super()._compute_field() super()._compute_field()
for record in self: for record in self:
lastname2 = record.pms_checkin_partner_ids.mapped("lastname2") if not record.lastname2 and record.pms_checkin_partner_ids:
if lastname2: lastname2 = list(
record.lastname2 = lastname2[0] 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): def _compute_reservations_count(self):
# TODO: recuperar las reservas de los folios del partner # TODO: recuperar las reservas de los folios del partner

View File

@@ -27,11 +27,20 @@ class ResPartnerIdNumber(models.Model):
if hasattr(super(), "_compute_valid_from"): if hasattr(super(), "_compute_valid_from"):
super()._compute_field() super()._compute_field()
for record in self: for record in self:
expedition_date = record.partner_id.pms_checkin_partner_ids.mapped( if not record.valid_from and record.pms_checkin_partner_ids:
"document_expedition_date" document_expedition_date = list(
) set(
if expedition_date: record.pms_checkin_partner_ids.mapped(
record.valid_from = expedition_date[0] "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") @api.constrains("partner_id", "category_id")
def _check_category_id_unique(self): def _check_category_id_unique(self):