diff --git a/pms/models/pms_checkin_partner.py b/pms/models/pms_checkin_partner.py
index 1bb42ffc5..5b8826a14 100644
--- a/pms/models/pms_checkin_partner.py
+++ b/pms/models/pms_checkin_partner.py
@@ -137,9 +137,9 @@ class PmsCheckinPartner(models.Model):
)
lastname = fields.Char(
string="Last Name",
- compute="_compute_lastname",
- store=True,
readonly=False,
+ store=True,
+ compute="_compute_lastname",
)
lastname2 = fields.Char(
string="Second Last Name",
@@ -206,7 +206,10 @@ class PmsCheckinPartner(models.Model):
_("Document_type e document_number not match(DT)")
)
- @api.depends("partner_id", "partner_id.id_numbers", "document_expedition_date")
+ @api.depends(
+ "partner_id",
+ "partner_id.id_numbers",
+ )
def _compute_document_expedition_date(self):
for record in self:
if record.partner_id and record.partner_id.id_numbers:
@@ -214,14 +217,22 @@ class PmsCheckinPartner(models.Model):
record.document_expedition_date = record.partner_id.id_numbers[
0
].valid_from
+ else:
+ id_number = self.env["res.partner.id_number"].search(
+ [
+ ("partner_id", "=", record.partner_id.id),
+ ("category_id", "=", record.document_type),
+ ("name", "=", record.document_number),
+ ]
+ )
+ if not id_number.valid_from:
+ id_number.write({"valid_from": record.document_expedition_date})
@api.depends("partner_id", "partner_id.firstname")
def _compute_firstname(self):
for record in self:
if not record.firstname:
record.firstname = record.partner_id.firstname
- elif not record.partner_id.firstname:
- record.partner_id.write({"firstname": record.firstname})
@api.depends("partner_id", "partner_id.lastname")
def _compute_lastname(self):
@@ -247,7 +258,10 @@ class PmsCheckinPartner(models.Model):
elif not record.partner_id.birthdate_date:
record.partner_id.write({"birthdate_date": record.birthdate_date})
- @api.depends("partner_id", "partner_id.gender")
+ @api.depends(
+ "partner_id",
+ "partner_id.gender",
+ )
def _compute_gender(self):
for record in self:
if not record.gender:
@@ -328,22 +342,31 @@ class PmsCheckinPartner(models.Model):
elif not record.partner_id.mobile:
record.partner_id.write({"mobile": record.mobile})
- @api.depends(
- "document_number", "document_type", "document_expedition_date", "firstname"
- )
+ @api.depends("partner_id")
+ def _compute_document_id(self):
+ for record in self:
+ if record.partner_id:
+ id_number_id = self.env["res.partner.id_number"].create(
+ {
+ "partner_id": record.partner_id.id,
+ "name": record.document_number,
+ "category_id": record.document_type.id,
+ "valid_from": record.document_expedition_date,
+ }
+ )
+ record.document_id = id_number_id
+ else:
+ record.document_id = False
+
+ @api.depends("document_number", "document_type", "firstname")
def _compute_partner_id(self):
for record in self:
if not record.partner_id:
- if (
- record.document_number
- and record.document_type
- and record.document_expedition_date
- ):
+ if record.document_number and record.document_type:
number = self.env["res.partner.id_number"].search(
[
("name", "=", record.document_number),
("category_id", "=", record.document_type.id),
- ("valid_from", "=", record.document_expedition_date),
]
)
partner = self.env["res.partner"].search(
@@ -362,21 +385,6 @@ class PmsCheckinPartner(models.Model):
partner = self.env["res.partner"].create(partner_values)
record.partner_id = partner
- @api.depends("partner_id")
- def _compute_document_id(self):
- for record in self:
- id_number_id = self.env["res.partner.id_number"].create(
- {
- "partner_id": record.partner_id,
- "name": record.document_number,
- "category_id": record.document_type.id,
- "valid_from": record.document_expedition_date,
- }
- )
- partner = self.env["res.partner"].browse(record.partner_id)
- partner.update({"id_numbers": [(4, [id_number_id.id])]})
- record.document_id = id_number_id
-
@api.constrains("departure", "arrival")
def _check_departure(self):
for record in self:
@@ -485,8 +493,16 @@ class PmsCheckinPartner(models.Model):
@api.model
def _checkin_partner_fields(self):
# api.depends need "reservation_id.state" in the lambda function
- checkin_fields = self._checkin_mandatory_fields()
- checkin_fields.extend(["mobile", "email"])
+ checkin_fields = [
+ "firstname",
+ "lastname",
+ "lastname2",
+ "mobile",
+ "email",
+ "gender",
+ "nationality_id",
+ "birthdate_date",
+ ]
return checkin_fields
@api.model
diff --git a/pms/models/res_partner.py b/pms/models/res_partner.py
index d971a0917..88c1bc57f 100644
--- a/pms/models/res_partner.py
+++ b/pms/models/res_partner.py
@@ -56,6 +56,29 @@ class ResPartner(models.Model):
check_pms_properties=True,
)
+ pms_checkin_partner_ids = fields.One2many(
+ string="Checkin Partners",
+ help="Associated checkin partners",
+ comodel_name="pms.checkin.partner",
+ inverse_name="partner_id",
+ )
+
+ firstname = fields.Char(
+ readonly=False,
+ store=True,
+ compute="_compute_firstname",
+ )
+
+ @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:
+ # if not record.firstname:
+ # print(record.pms_checkin_partner_ids.mapped("firstname"))
+ # #record.firstname =
+
def _compute_reservations_count(self):
# TODO: recuperar las reservas de los folios del partner
pms_reservation_obj = self.env["pms.reservation"]
diff --git a/pms/tests/test_pms_checkin_partner.py b/pms/tests/test_pms_checkin_partner.py
index 898b8c56a..d9b893c44 100644
--- a/pms/tests/test_pms_checkin_partner.py
+++ b/pms/tests/test_pms_checkin_partner.py
@@ -16,7 +16,7 @@ class TestPmsCheckinPartner(common.SavepointCase):
# Arrange for one checkin on one reservation
cls.host1 = cls.env["res.partner"].create(
{
- "name": "Miguel Lopez",
+ "name": "Miguel",
"phone": "654667733",
"email": "miguel@example.com",
}
diff --git a/pms/views/pms_checkin_partner_views.xml b/pms/views/pms_checkin_partner_views.xml
index d7e1e0c15..9ca85a29a 100644
--- a/pms/views/pms_checkin_partner_views.xml
+++ b/pms/views/pms_checkin_partner_views.xml
@@ -42,6 +42,7 @@
+