[WIP] pms: working on partner creation in checkin flow v2

This commit is contained in:
Sara Lago
2021-06-04 13:46:01 +02:00
parent 753155479d
commit 69379e2cb2
4 changed files with 73 additions and 33 deletions

View File

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

View File

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

View File

@@ -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",
}

View File

@@ -42,6 +42,7 @@
<field name="nationality_id" />
<field name="email" />
<field name="mobile" />
<field name="document_id" invisible="1" />
<field name="pms_property_id" invisible="1" />
<field name="arrival" />
<field name="departure" />