[FIX]pms: partner field is not overwritten if the field does not exist in the last saved checkin

This commit is contained in:
braisab
2024-02-14 21:27:36 +01:00
committed by Darío Lodeiros
parent 28e93b32d3
commit 89d6e7d000
4 changed files with 81 additions and 30 deletions

View File

@@ -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:

View File

@@ -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(

View File

@@ -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")

View File

@@ -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):