From 96c3ebf215f20afa14a2aaab65fcf679309fd8ea Mon Sep 17 00:00:00 2001 From: David Pacheco Date: Sat, 3 Oct 2026 21:04:38 +0200 Subject: [PATCH] [FIX] pms: keep the residence country of guests without state _compute_country_id cleared the residence country of any guest without a state when the partner or the nationality changed, so most foreign guests lost it on their first save with an identity document and could not be checked in ("Personal data is missing for check-in"). --- pms/models/pms_checkin_partner.py | 2 +- pms/tests/test_pms_checkin_partner.py | 18 ++++++++++++++++++ 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/pms/models/pms_checkin_partner.py b/pms/models/pms_checkin_partner.py index f2024b938a..f54d4c8b53 100644 --- a/pms/models/pms_checkin_partner.py +++ b/pms/models/pms_checkin_partner.py @@ -316,7 +316,7 @@ def _compute_country_id(self): for record in self: if not record.country_id and record.partner_id.country_id: record.country_id = record.partner_id.country_id - elif not record.state_id: + elif not record.country_id: record.country_id = False @api.depends("partner_id") diff --git a/pms/tests/test_pms_checkin_partner.py b/pms/tests/test_pms_checkin_partner.py index 7e178bd09e..098de6d695 100644 --- a/pms/tests/test_pms_checkin_partner.py +++ b/pms/tests/test_pms_checkin_partner.py @@ -1424,3 +1424,21 @@ def test_partner_created_with_folio_lang(self): lang_es.code, "Partner lang should match folio lang", ) + + def test_country_without_state_survives_partner_and_nationality(self): + """A residence country without state (most foreign countries) must not + be cleared when the guest gets a partner or a nationality. + """ + france = self.env.ref("base.fr") + checkin = self.reservation_1.checkin_partner_ids.filtered( + lambda c: not c.partner_id + )[:1] + checkin.write( + {"firstname": "Jean", "lastname": "Dupont", "country_id": france.id} + ) + checkin.partner_id = self.env["res.partner"].create( + {"firstname": "Jean", "lastname": "Dupont"} + ) + self.assertEqual(checkin.country_id, france) + checkin.nationality_id = france + self.assertEqual(checkin.country_id, france)