diff --git a/pms/controllers/pms_portal.py b/pms/controllers/pms_portal.py
index 408223a47..92d846d84 100644
--- a/pms/controllers/pms_portal.py
+++ b/pms/controllers/pms_portal.py
@@ -306,32 +306,72 @@ class PortalPrecheckin(CustomerPortal):
@http.route(["/my/precheckin"], type="http", auth="user", website=True, csrf=False)
def portal_precheckin_submit(self, **kw):
checkin_partner = request.env["pms.checkin.partner"].browse(int(kw.get("id")))
+ if not checkin_partner.partner_id:
+ ResPartner = request.env["res.partner"]
+ res_partner = ResPartner.create(kw)
+ kw.update(
+ {
+ "partner_id": res_partner.id,
+ }
+ )
+ else:
+ res_partner = checkin_partner.partner_id
+ res_partner.write(kw)
checkin_partner.write(kw)
@http.route(
- ["/my/precheckin/folio"], type="http", auth="user", website=False, csrf=True
+ ["/my/precheckin/folio_reservation"],
+ type="http",
+ auth="user",
+ website=False,
+ csrf=True,
)
def portal_precheckin_folio_submit(self, **kw):
- counter = 2
- folio = request.env["pms.folio"].browse(int(kw.get("folio_id")))
- checkin_partners = len(folio.checkin_partner_ids)
+ counter = 1
+ if kw.get("folio_id"):
+ folio = request.env["pms.folio"].browse(int(kw.get("folio_id")))
+ checkin_partners = len(folio.checkin_partner_ids)
+ elif kw.get("reservation_id"):
+ reservation = request.env["pms.reservation"].browse(
+ int(kw.get("reservation_id"))
+ )
+ checkin_partners = len(reservation.checkin_partner_ids)
for _checkin in range(checkin_partners):
values = {
- "firstname": kw["firstname-" + str(counter)],
- "lastname": kw["lastname-" + str(counter)],
- "lastname2": kw["lastname2-" + str(counter)],
- "gender": kw["gender-" + str(counter)],
- "document_type": kw["document_type-" + str(counter)],
- "document_number": kw["document_number-" + str(counter)],
- "document_expedition_date": kw[
+ "firstname": kw.get("firstname-" + str(counter)),
+ "lastname": kw.get("lastname-" + str(counter)),
+ "lastname2": kw.get("lastname2-" + str(counter)),
+ "gender": kw.get("gender-" + str(counter)),
+ "birthdate_date": kw.get("birthdate_date-" + str(counter))
+ if kw.get("birthdate_date-" + str(counter))
+ else False,
+ "document_type": kw.get("document_type-" + str(counter)),
+ "document_number": kw.get("document_number-" + str(counter)),
+ "document_expedition_date": kw.get(
"document_expedition_date-" + str(counter)
- ],
- "mobile": kw["mobile-" + str(counter)],
- "email": kw["email-" + str(counter)],
+ )
+ if kw.get("document_expedition_date-" + str(counter))
+ else False,
+ "mobile": kw.get("mobile-" + str(counter)),
+ "email": kw.get("email-" + str(counter)),
}
checkin_partner_id = int(kw.get("id-" + str(counter)))
checkin_partner = request.env["pms.checkin.partner"].browse(
checkin_partner_id
)
+ lastname = True if kw.get("lastname-" + str(counter)) else False
+ firstname = True if kw.get("firstname-" + str(counter)) else False
+ lastname2 = True if kw.get("lastname2-" + str(counter)) else False
+ if not checkin_partner.partner_id and (lastname or firstname or lastname2):
+ ResPartner = request.env["res.partner"]
+ res_partner = ResPartner.create(values)
+ values.update(
+ {
+ "partner_id": res_partner.id,
+ }
+ )
+ elif checkin_partner.partner_id:
+ res_partner = checkin_partner.partner_id
+ res_partner.write(values)
checkin_partner.write(values)
counter = counter + 1
diff --git a/pms/security/pms_security.xml b/pms/security/pms_security.xml
index d00ac1e23..25b4edf9e 100644
--- a/pms/security/pms_security.xml
+++ b/pms/security/pms_security.xml
@@ -244,5 +244,12 @@