diff --git a/pms_api_rest/datamodels/pms_checkin_partner.py b/pms_api_rest/datamodels/pms_checkin_partner.py index c068422f2..11181da5d 100644 --- a/pms_api_rest/datamodels/pms_checkin_partner.py +++ b/pms_api_rest/datamodels/pms_checkin_partner.py @@ -29,3 +29,4 @@ class PmsCheckinPartnerInfo(Datamodel): countryId = fields.Integer(required=False, allow_none=True) checkinPartnerState = fields.String(required=False, allow_none=True) actionOnBoard = fields.Boolean(required=False, allow_none=True) + originInputData = fields.String(required=False, allow_none=True) diff --git a/pms_api_rest/models/__init__.py b/pms_api_rest/models/__init__.py index 8a708fe07..1e4c70b33 100644 --- a/pms_api_rest/models/__init__.py +++ b/pms_api_rest/models/__init__.py @@ -8,3 +8,4 @@ from . import product_template from . import ota_property_settings from . import pms_api_log from . import pms_folio +from . import pms_checkin_partner diff --git a/pms_api_rest/models/pms_checkin_partner.py b/pms_api_rest/models/pms_checkin_partner.py new file mode 100644 index 000000000..3305d479f --- /dev/null +++ b/pms_api_rest/models/pms_checkin_partner.py @@ -0,0 +1,13 @@ +from odoo import fields, models + + +class PmsCheckinPartner(models.Model): + _inherit = 'pms.checkin.partner' + + origin_input_data = fields.Selection([ + ('wizard', 'Wizard'), + ('form', 'Form'), + ('regular_customer', 'Regular Customer'), + ('ocr', 'OCR'), + ('precheckin', 'Precheckin'), + ], string='Origin Input Data') diff --git a/pms_api_rest/services/pms_partner_service.py b/pms_api_rest/services/pms_partner_service.py index 8e10f4034..87c9d7f10 100644 --- a/pms_api_rest/services/pms_partner_service.py +++ b/pms_api_rest/services/pms_partner_service.py @@ -507,15 +507,7 @@ class PmsPartnerService(Component): doc_number = partner.id_numbers.filtered( lambda doc: doc.category_id.id == doc_type.id ) - PmsCheckinPartnerInfo = self.env.datamodels["pms.checkin.partner.info"] - - document_expedition_date = False - if doc_number.valid_from: - document_expedition_date = doc_number.valid_from.strftime("%d/%m/%Y") - birthdate_date = False - if partner.birthdate_date: - birthdate_date = partner.birthdate_date.strftime("%d/%m/%Y") partners.append( PmsCheckinPartnerInfo( partnerId=partner.id or None, @@ -527,10 +519,14 @@ class PmsPartnerService(Component): mobile=partner.mobile or None, documentType=doc_type.id or None, documentNumber=doc_number.name or None, - documentExpeditionDate=document_expedition_date or None, + documentExpeditionDate=datetime.combine( + doc_number.valid_from, datetime.min.time() + ).isoformat() if doc_number.valid_from else None, documentSupportNumber=doc_number.support_number or None, gender=partner.gender or None, - birthdate=birthdate_date or None, + birthdate=datetime.combine( + partner.birthdate_date, datetime.min.time() + ).isoformat() if partner.birthdate_date else None, residenceStreet=partner.residence_street or None, zip=partner.residence_zip or None, residenceCity=partner.residence_city or None, diff --git a/pms_api_rest/services/pms_reservation_service.py b/pms_api_rest/services/pms_reservation_service.py index 9e9480a9f..26d3f1d5e 100644 --- a/pms_api_rest/services/pms_reservation_service.py +++ b/pms_api_rest/services/pms_reservation_service.py @@ -564,12 +564,6 @@ class PmsReservationService(Component): # lambda ch: ch.state != "dummy" # ) for checkin_partner in reservation.checkin_partner_ids: - if checkin_partner.document_expedition_date: - document_expedition_date = ( - checkin_partner.document_expedition_date.strftime("%d/%m/%Y") - ) - if checkin_partner.birthdate_date: - birthdate_date = checkin_partner.birthdate_date.strftime("%d/%m/%Y") checkin_partners.append( PmsCheckinPartnerInfo( id=checkin_partner.id, @@ -592,14 +586,18 @@ class PmsReservationService(Component): documentNumber=checkin_partner.document_number if checkin_partner.document_number else None, - documentExpeditionDate=document_expedition_date + documentExpeditionDate=datetime.combine( + checkin_partner.document_expedition_date, datetime.min.time() + ).isoformat() if checkin_partner.document_expedition_date else None, documentSupportNumber=checkin_partner.support_number if checkin_partner.support_number else None, gender=checkin_partner.gender if checkin_partner.gender else "", - birthdate=birthdate_date + birthdate=datetime.combine( + checkin_partner.birthdate_date, datetime.min.time() + ).isoformat() if checkin_partner.birthdate_date else None, residenceStreet=checkin_partner.residence_street @@ -653,9 +651,16 @@ class PmsReservationService(Component): and pms_checkin_partner_info.actionOnBoard is not None ): checkin_partner.action_on_board() + return checkin_partner.id checkin_partner.write( - self.mapping_checkin_partner_values(pms_checkin_partner_info) + self.mapping_checkin_partner_values( + pms_checkin_partner_info, + checkin_partner.partner_id.id if checkin_partner.partner_id else False + ) ) + # if not partner_id we need to force compute to create partner + if not checkin_partner.partner_id: + checkin_partner._compute_partner_id() return checkin_partner.id @restapi.method( @@ -850,8 +855,14 @@ class PmsReservationService(Component): checkin_partner_last_id ) checkin_partner.write( - self.mapping_checkin_partner_values(pms_checkin_partner_info) + self.mapping_checkin_partner_values( + pms_checkin_partner_info, + checkin_partner.partner_id.id if checkin_partner.partner_id else False + ) ) + # if not partner_id we need to force compute to create partner + if not checkin_partner.partner_id: + checkin_partner._compute_partner_id() return checkin_partner.id @restapi.method( @@ -870,9 +881,8 @@ class PmsReservationService(Component): if checkin_partner: checkin_partner.unlink() - def mapping_checkin_partner_values(self, pms_checkin_partner_info): - vals = dict() - checkin_partner_fields = { + def mapping_checkin_partner_values(self, pms_checkin_partner_info, partner_id=False): + vals = { "firstname": pms_checkin_partner_info.firstname, "lastname": pms_checkin_partner_info.lastname, "lastname2": pms_checkin_partner_info.lastname2, @@ -888,22 +898,26 @@ class PmsReservationService(Component): "residence_city": pms_checkin_partner_info.residenceCity, "residence_state_id": pms_checkin_partner_info.countryState, "residence_country_id": pms_checkin_partner_info.countryId, + "origin_input_data": pms_checkin_partner_info.originInputData, } + if pms_checkin_partner_info.partnerId != partner_id: + vals.update({"partner_id": pms_checkin_partner_info.partnerId}) if pms_checkin_partner_info.documentExpeditionDate: document_expedition_date = datetime.strptime( pms_checkin_partner_info.documentExpeditionDate, "%d/%m/%Y" ) document_expedition_date = document_expedition_date.strftime("%Y-%m-%d") vals.update({"document_expedition_date": document_expedition_date}) + else: + vals.update({"document_expedition_date": False}) if pms_checkin_partner_info.birthdate: birthdate = datetime.strptime( pms_checkin_partner_info.birthdate, "%d/%m/%Y" ) birthdate = birthdate.strftime("%Y-%m-%d") vals.update({"birthdate_date": birthdate}) - for k, v in checkin_partner_fields.items(): - if v: - vals.update({k: v}) + else: + vals.update({"birthdate_date": False}) return vals @restapi.method( @@ -1306,4 +1320,3 @@ class PmsReservationService(Component): text='', ) -