mirror of
https://github.com/OCA/pms.git
synced 2025-01-29 00:17:45 +02:00
[IMP]pms_api_rest: added action_on_board, action_checkout and print checkin pdf services
This commit is contained in:
@@ -51,3 +51,4 @@ from . import res_lang
|
||||
from . import pms_account_payment_term
|
||||
|
||||
from . import pms_room_closure_reason
|
||||
from . import pms_report
|
||||
|
||||
@@ -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)
|
||||
|
||||
7
pms_api_rest/datamodels/pms_report.py
Normal file
7
pms_api_rest/datamodels/pms_report.py
Normal 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)
|
||||
@@ -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)
|
||||
|
||||
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user