Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 14 additions & 0 deletions pms/models/pms_checkin_partner.py
Original file line number Diff line number Diff line change
Expand Up @@ -561,6 +561,18 @@ def set_partner_id(self):
partner = self.env["res.partner"].create(partner_values)
record.partner_id = partner

def _set_partner_contact_data(self):
# The email/mobile/phone inverses only reach an already linked partner, so
# the values saved together with the data that creates or links it are lost
for record in self.filtered("partner_id"):
vals = {
field: record[field]
for field in ("email", "mobile", "phone")
if record[field] and not record.partner_id[field]
}
if vals:
record.partner_id.write(vals)

@api.model_create_multi
def create(self, vals_list):
records = self.env["pms.checkin.partner"]
Expand Down Expand Up @@ -598,6 +610,7 @@ def create(self, vals_list):
records_without_partner = records.filtered(lambda r: not r.partner_id)
if records_without_partner:
records_without_partner.set_partner_id()
records_without_partner._set_partner_contact_data()
for record in records:
record.set_partner_address()
return records
Expand All @@ -615,6 +628,7 @@ def write(self, vals):
records_without_partner.with_context(
skip_set_partner_data=True
).set_partner_id()
records_without_partner._set_partner_contact_data()
for record in self:
record.set_partner_address(vals)
return res
Expand Down
36 changes: 36 additions & 0 deletions pms/tests/test_pms_checkin_partner.py
Original file line number Diff line number Diff line change
Expand Up @@ -871,6 +871,42 @@ def test_create_partner_when_checkin_has_enought_data(self):
"Partner should have been created and associated with the checkin",
)

def test_contact_data_saved_in_partner_created_by_checkin(self):
"""
The email and mobile entered together with the data that creates
the partner are saved in the new partner
"""
# ACT
checkin = self.env["pms.checkin.partner"].create(
{
"firstname": "Pepe",
"lastname": "Paz",
"email": "pepe@example.com",
"mobile": "666777888",
"reservation_id": self.reservation_1.id,
}
)

# ASSERT
self.assertEqual(checkin.partner_id.email, "pepe@example.com")
self.assertEqual(checkin.partner_id.mobile, "666777888")

def test_contact_data_saved_in_partner_created_on_checkin_write(self):
"""
The mobile written together with the names that create the partner
is saved in the new partner
"""
# ARRANGE
checkin = self.env["pms.checkin.partner"].create(
{"reservation_id": self.reservation_1.id}
)

# ACT
checkin.write({"firstname": "Pepe", "lastname": "Paz", "mobile": "666777888"})

# ASSERT
self.assertEqual(checkin.partner_id.mobile, "666777888")

def test_add_partner_data_from_checkin(self):
"""
If the checkin_partner has some data that the partner doesn't have,
Expand Down
Loading