mirror of
https://github.com/OCA/pms.git
synced 2025-01-29 00:17:45 +02:00
[WIP] pms: working on partner creation in checkin flow v2
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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"]
|
||||
|
||||
@@ -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",
|
||||
}
|
||||
|
||||
@@ -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" />
|
||||
|
||||
Reference in New Issue
Block a user