[IMP]pms_api_rest: added action_on_board, action_checkout and print checkin pdf services

This commit is contained in:
braisab
2022-10-19 14:53:05 +02:00
committed by Darío Lodeiros
parent 4daf6f79cf
commit cef4d9f860
5 changed files with 78 additions and 1 deletions

View File

@@ -51,3 +51,4 @@ from . import res_lang
from . import pms_account_payment_term
from . import pms_room_closure_reason
from . import pms_report

View File

@@ -26,3 +26,4 @@ class PmsCheckinPartnerInfo(Datamodel):
countryState = fields.Integer(required=False, allow_none=True)
countryId = fields.Integer(required=False, allow_none=True)
checkinPartnerState = fields.String(required=False, allow_none=True)
actionOnBoard = fields.Boolean(required=False, allow_none=True)

View File

@@ -0,0 +1,7 @@
from marshmallow import fields
from odoo.addons.datamodel.core import Datamodel
class PmsReportInfo(Datamodel):
_name = "pms.report.info"
pdf = fields.String(required=False, allow_none=True)

View File

@@ -58,6 +58,7 @@ class PmsReservationInfo(Datamodel):
segmentationId = fields.Integer(required=False, allow_none=True)
cancelationRuleId = fields.Integer(required=False, allow_none=True)
toAssign = fields.Boolean(required=False, allow_none=True)
toCheckout = fields.Boolean(required=False, allow_none=True)
reservationType = fields.String(required=False, allow_none=True)
priceTotal = fields.Float(required=False, allow_none=True)

View File

@@ -1,3 +1,4 @@
import base64
from datetime import datetime, timedelta
from odoo import _
@@ -196,6 +197,8 @@ class PmsReservationService(Component):
reservation.action_cancel()
if reservation_data.stateCode == "confirm":
reservation.confirm()
if reservation_data.toCheckout is not None and reservation_data.toCheckout:
reservation.action_reservation_checkout()
reservation_vals = self._create_vals_from_params(
reservation_vals, reservation_data
@@ -548,6 +551,13 @@ class PmsReservationService(Component):
checkin_partner = self.env["pms.checkin.partner"].search(
[("id", "=", checkin_partner_id), ("reservation_id", "=", reservation_id)]
)
if (
pms_checkin_partner_info.actionOnBoard
and pms_checkin_partner_info.actionOnBoard is not None
and pms_checkin_partner_info.actionOnBoard
and checkin_partner
):
checkin_partner.action_on_board()
if checkin_partner:
checkin_partner.write(
self.mapping_checkin_partner_values(pms_checkin_partner_info)
@@ -682,7 +692,7 @@ class PmsReservationService(Component):
"support_number": pms_checkin_partner_info.documentSupportNumber,
"gender": pms_checkin_partner_info.gender,
"residence_street": pms_checkin_partner_info.residenceStreet,
"nationality_id": pms_checkin_partner_info.nationality,
"nationality_id": pms_checkin_partner_info.countryId,
"residence_zip": pms_checkin_partner_info.zip,
"residence_city": pms_checkin_partner_info.residenceCity,
"residence_state_id": pms_checkin_partner_info.countryState,
@@ -704,3 +714,60 @@ class PmsReservationService(Component):
if v:
vals.update({k: v})
return vals
@restapi.method(
[
(
[
"/<int:reservation_id>/checkin-report",
],
"GET",
)
],
auth="jwt_api_pms",
output_param=Datamodel("pms.report.info", is_list=False),
)
def print_all_checkins(self, reservation_id):
reservations = False
if reservation_id:
reservations = self.env["pms.reservation"].sudo().browse(reservation_id)
checkins = reservations.checkin_partner_ids.filtered(
lambda x: x.state in ["precheckin", "onboard", "done"]
)
pdf = (
self.env.ref("pms.action_traveller_report")
.sudo()
._render_qweb_pdf(checkins.ids)[0]
)
base64EncodedStr = base64.b64encode(pdf)
PmsResponse = self.env.datamodels["pms.report.info"]
return PmsResponse(pdf=base64EncodedStr)
@restapi.method(
[
(
[
"/<int:reservation_id>/checkin-partners/"
"<int:checkin_partner_id>/checkin-report",
],
"GET",
)
],
auth="jwt_api_pms",
output_param=Datamodel("pms.report.info", is_list=False),
)
def print_checkin(self, reservation_id, checkin_partner_id):
reservations = False
if reservation_id:
reservations = self.env["pms.reservation"].sudo().browse(reservation_id)
checkin_partner = reservations.checkin_partner_ids.filtered(
lambda x: x.id == checkin_partner_id
)
pdf = (
self.env.ref("pms.action_traveller_report")
.sudo()
._render_qweb_pdf(checkin_partner.id)[0]
)
base64EncodedStr = base64.b64encode(pdf)
PmsResponse = self.env.datamodels["pms.report.info"]
return PmsResponse(pdf=base64EncodedStr)