mirror of
https://github.com/OCA/pms.git
synced 2025-01-29 00:17:45 +02:00
[IMP]pms_api_rest: Improvements pms api logs and price night compute qith boardservice children amount
This commit is contained in:
@@ -582,6 +582,7 @@ class PmsFolioService(Component):
|
|||||||
# flake8:noqa=C901
|
# flake8:noqa=C901
|
||||||
def create_folio(self, pms_folio_info):
|
def create_folio(self, pms_folio_info):
|
||||||
external_app = self.env.user.pms_api_client
|
external_app = self.env.user.pms_api_client
|
||||||
|
log_payload = pms_folio_info
|
||||||
try:
|
try:
|
||||||
if pms_folio_info.reservationType == "out":
|
if pms_folio_info.reservationType == "out":
|
||||||
vals = {
|
vals = {
|
||||||
@@ -659,7 +660,28 @@ class PmsFolioService(Component):
|
|||||||
board = self.env["pms.board.service.room.type"].browse(
|
board = self.env["pms.board.service.room.type"].browse(
|
||||||
vals["board_service_room_id"]
|
vals["board_service_room_id"]
|
||||||
)
|
)
|
||||||
board_day_price = board.amount * reservation.adults
|
if reservation.adults:
|
||||||
|
board_day_price += (
|
||||||
|
sum(
|
||||||
|
board.board_service_line_ids.with_context(
|
||||||
|
property=folio.pms_property_id.id
|
||||||
|
)
|
||||||
|
.filtered(lambda l: l.adults)
|
||||||
|
.mapped("amount")
|
||||||
|
)
|
||||||
|
* reservation.adults
|
||||||
|
)
|
||||||
|
if reservation.children:
|
||||||
|
board_day_price += (
|
||||||
|
sum(
|
||||||
|
board.board_service_line_ids.with_context(
|
||||||
|
property=folio.pms_property_id.id
|
||||||
|
)
|
||||||
|
.filtered(lambda l: l.children)
|
||||||
|
.mapped("amount")
|
||||||
|
)
|
||||||
|
* reservation.children
|
||||||
|
)
|
||||||
for reservationLine in reservation.reservationLines:
|
for reservationLine in reservation.reservationLines:
|
||||||
vals_lines.append(
|
vals_lines.append(
|
||||||
(
|
(
|
||||||
@@ -733,6 +755,9 @@ class PmsFolioService(Component):
|
|||||||
reservation_record.with_context(
|
reservation_record.with_context(
|
||||||
skip_compute_service_ids=False
|
skip_compute_service_ids=False
|
||||||
)._compute_board_service_room_id()
|
)._compute_board_service_room_id()
|
||||||
|
pms_folio_info.transactions = self.normalize_payments_structure(
|
||||||
|
pms_folio_info
|
||||||
|
)
|
||||||
if pms_folio_info.transactions:
|
if pms_folio_info.transactions:
|
||||||
self.compute_transactions(folio, pms_folio_info.transactions)
|
self.compute_transactions(folio, pms_folio_info.transactions)
|
||||||
# REVIEW: analyze how to integrate the sending of mails from the API
|
# REVIEW: analyze how to integrate the sending of mails from the API
|
||||||
@@ -768,7 +793,7 @@ class PmsFolioService(Component):
|
|||||||
{
|
{
|
||||||
"pms_property_id": pms_folio_info.pmsPropertyId,
|
"pms_property_id": pms_folio_info.pmsPropertyId,
|
||||||
"client_id": self.env.user.id,
|
"client_id": self.env.user.id,
|
||||||
"request": pms_folio_info,
|
"request": log_payload,
|
||||||
"response": folio.id,
|
"response": folio.id,
|
||||||
"status": "success",
|
"status": "success",
|
||||||
"request_date": fields.Datetime.now(),
|
"request_date": fields.Datetime.now(),
|
||||||
@@ -787,7 +812,7 @@ class PmsFolioService(Component):
|
|||||||
{
|
{
|
||||||
"pms_property_id": pms_folio_info.pmsPropertyId,
|
"pms_property_id": pms_folio_info.pmsPropertyId,
|
||||||
"client_id": self.env.user.id,
|
"client_id": self.env.user.id,
|
||||||
"request": pms_folio_info,
|
"request": log_payload,
|
||||||
"response": e,
|
"response": e,
|
||||||
"status": "error",
|
"status": "error",
|
||||||
"request_date": fields.Datetime.now(),
|
"request_date": fields.Datetime.now(),
|
||||||
@@ -815,7 +840,18 @@ class PmsFolioService(Component):
|
|||||||
("ref", "ilike", transaction.reference),
|
("ref", "ilike", transaction.reference),
|
||||||
]
|
]
|
||||||
):
|
):
|
||||||
journal = transaction.journalId
|
journal = self.env["account.journal"].search(
|
||||||
|
[("id", "=", transaction.journalId)]
|
||||||
|
)
|
||||||
|
if not journal:
|
||||||
|
ota_conf = self.env["ota.property.settings"].search(
|
||||||
|
[
|
||||||
|
("pms_property_id", "=", folio.pms_property_id.id),
|
||||||
|
("agency_id", "=", self.env.user.partner_id.id),
|
||||||
|
]
|
||||||
|
)
|
||||||
|
if ota_conf:
|
||||||
|
journal = ota_conf.pms_api_payment_journal_id
|
||||||
if transaction.transactionType == "inbound":
|
if transaction.transactionType == "inbound":
|
||||||
folio.do_payment(
|
folio.do_payment(
|
||||||
journal,
|
journal,
|
||||||
@@ -1542,41 +1578,23 @@ class PmsFolioService(Component):
|
|||||||
auth="jwt_api_pms",
|
auth="jwt_api_pms",
|
||||||
)
|
)
|
||||||
def update_put_external_folio(self, external_reference, pms_folio_info):
|
def update_put_external_folio(self, external_reference, pms_folio_info):
|
||||||
folio = self.env["pms.folio"].search(
|
|
||||||
[
|
|
||||||
("external_reference", "ilike", external_reference),
|
|
||||||
("pms_property_id", "=", pms_folio_info.pmsPropertyId),
|
|
||||||
]
|
|
||||||
)
|
|
||||||
if not folio or len(folio) > 1:
|
|
||||||
raise MissingError(_("Folio not found"))
|
|
||||||
self.update_folio_values(folio, pms_folio_info)
|
|
||||||
return folio.id
|
|
||||||
|
|
||||||
@restapi.method(
|
|
||||||
[
|
|
||||||
(
|
|
||||||
[
|
|
||||||
"/<int:folio_id>",
|
|
||||||
],
|
|
||||||
"PUT",
|
|
||||||
)
|
|
||||||
],
|
|
||||||
input_param=Datamodel("pms.folio.info", is_list=False),
|
|
||||||
auth="jwt_api_pms",
|
|
||||||
)
|
|
||||||
def update_put_folio(self, folio_id, pms_folio_info):
|
|
||||||
external_app = self.env.user.pms_api_client
|
external_app = self.env.user.pms_api_client
|
||||||
|
log_payload = pms_folio_info
|
||||||
try:
|
try:
|
||||||
folio = self.env["pms.folio"].browse(folio_id)
|
folio = self.env["pms.folio"].search(
|
||||||
if not folio:
|
[
|
||||||
|
("external_reference", "ilike", external_reference),
|
||||||
|
("pms_property_id", "=", pms_folio_info.pmsPropertyId),
|
||||||
|
]
|
||||||
|
)
|
||||||
|
if not folio or len(folio) > 1:
|
||||||
raise MissingError(_("Folio not found"))
|
raise MissingError(_("Folio not found"))
|
||||||
self.update_folio_values(folio, pms_folio_info)
|
self.update_folio_values(folio, pms_folio_info)
|
||||||
self.env["pms.api.log"].create(
|
self.env["pms.api.log"].create(
|
||||||
{
|
{
|
||||||
"pms_property_id": pms_folio_info.pmsPropertyId,
|
"pms_property_id": pms_folio_info.pmsPropertyId,
|
||||||
"client_id": self.env.user.id,
|
"client_id": self.env.user.id,
|
||||||
"request": pms_folio_info,
|
"request": log_payload,
|
||||||
"response": folio.id,
|
"response": folio.id,
|
||||||
"status": "success",
|
"status": "success",
|
||||||
"request_date": fields.Datetime.now(),
|
"request_date": fields.Datetime.now(),
|
||||||
@@ -1595,7 +1613,63 @@ class PmsFolioService(Component):
|
|||||||
{
|
{
|
||||||
"pms_property_id": pms_folio_info.pmsPropertyId,
|
"pms_property_id": pms_folio_info.pmsPropertyId,
|
||||||
"client_id": self.env.user.id,
|
"client_id": self.env.user.id,
|
||||||
"request": pms_folio_info,
|
"request": log_payload,
|
||||||
|
"response": e,
|
||||||
|
"status": "error",
|
||||||
|
"request_date": fields.Datetime.now(),
|
||||||
|
"method": "PUT",
|
||||||
|
"endpoint": "/folios",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
if not external_app:
|
||||||
|
raise ValidationError(_("Error updating folio from API: %s") % e)
|
||||||
|
else:
|
||||||
|
return False
|
||||||
|
|
||||||
|
@restapi.method(
|
||||||
|
[
|
||||||
|
(
|
||||||
|
[
|
||||||
|
"/<int:folio_id>",
|
||||||
|
],
|
||||||
|
"PUT",
|
||||||
|
)
|
||||||
|
],
|
||||||
|
input_param=Datamodel("pms.folio.info", is_list=False),
|
||||||
|
auth="jwt_api_pms",
|
||||||
|
)
|
||||||
|
def update_put_folio(self, folio_id, pms_folio_info):
|
||||||
|
external_app = self.env.user.pms_api_client
|
||||||
|
log_payload = pms_folio_info
|
||||||
|
try:
|
||||||
|
folio = self.env["pms.folio"].browse(folio_id)
|
||||||
|
if not folio:
|
||||||
|
raise MissingError(_("Folio not found"))
|
||||||
|
self.update_folio_values(folio, pms_folio_info)
|
||||||
|
self.env["pms.api.log"].create(
|
||||||
|
{
|
||||||
|
"pms_property_id": pms_folio_info.pmsPropertyId,
|
||||||
|
"client_id": self.env.user.id,
|
||||||
|
"request": log_payload,
|
||||||
|
"response": folio.id,
|
||||||
|
"status": "success",
|
||||||
|
"request_date": fields.Datetime.now(),
|
||||||
|
"method": "PUT",
|
||||||
|
"endpoint": "/folios",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
return folio.id
|
||||||
|
except Exception as e:
|
||||||
|
_logger.error(
|
||||||
|
"Error updating folio from API: %s",
|
||||||
|
e,
|
||||||
|
exc_info=True,
|
||||||
|
)
|
||||||
|
self.env["pms.api.log"].sudo().create(
|
||||||
|
{
|
||||||
|
"pms_property_id": log_payload.pmsPropertyId,
|
||||||
|
"client_id": self.env.user.id,
|
||||||
|
"request": log_payload,
|
||||||
"response": e,
|
"response": e,
|
||||||
"status": "error",
|
"status": "error",
|
||||||
"request_date": fields.Datetime.now(),
|
"request_date": fields.Datetime.now(),
|
||||||
@@ -1724,7 +1798,7 @@ class PmsFolioService(Component):
|
|||||||
):
|
):
|
||||||
journal = ota_conf.pms_api_payment_journal_id
|
journal = ota_conf.pms_api_payment_journal_id
|
||||||
pmsTransactionInfo = self.env.datamodels["pms.transaction.info"]
|
pmsTransactionInfo = self.env.datamodels["pms.transaction.info"]
|
||||||
pms_folio_info.transactions = [
|
pms_folio_infotransactions = [
|
||||||
pmsTransactionInfo(
|
pmsTransactionInfo(
|
||||||
journalId=journal.id,
|
journalId=journal.id,
|
||||||
transactionType="inbound",
|
transactionType="inbound",
|
||||||
@@ -1733,6 +1807,7 @@ class PmsFolioService(Component):
|
|||||||
reference=pms_folio_info.externalReference,
|
reference=pms_folio_info.externalReference,
|
||||||
)
|
)
|
||||||
]
|
]
|
||||||
|
return pms_folio_info.transactions
|
||||||
|
|
||||||
def wrapper_reservations(self, folio, info_reservations):
|
def wrapper_reservations(self, folio, info_reservations):
|
||||||
"""
|
"""
|
||||||
@@ -1778,7 +1853,28 @@ class PmsFolioService(Component):
|
|||||||
board = self.env["pms.board.service.room.type"].browse(
|
board = self.env["pms.board.service.room.type"].browse(
|
||||||
vals["board_service_room_id"]
|
vals["board_service_room_id"]
|
||||||
)
|
)
|
||||||
board_day_price = board.amount * info_reservation.adults
|
if info_reservation.adults:
|
||||||
|
board_day_price += (
|
||||||
|
sum(
|
||||||
|
board.board_service_line_ids.with_context(
|
||||||
|
property=folio.pms_property_id.id
|
||||||
|
)
|
||||||
|
.filtered(lambda l: l.adults)
|
||||||
|
.mapped("amount")
|
||||||
|
)
|
||||||
|
* info_reservation.adults
|
||||||
|
)
|
||||||
|
if info_reservation.children:
|
||||||
|
board_day_price += (
|
||||||
|
sum(
|
||||||
|
board.board_service_line_ids.with_context(
|
||||||
|
property=folio.pms_property_id.id
|
||||||
|
)
|
||||||
|
.filtered(lambda l: l.children)
|
||||||
|
.mapped("amount")
|
||||||
|
)
|
||||||
|
* info_reservation.children
|
||||||
|
)
|
||||||
reservation_lines_cmds = self.wrapper_reservation_lines(
|
reservation_lines_cmds = self.wrapper_reservation_lines(
|
||||||
reservation=info_reservation,
|
reservation=info_reservation,
|
||||||
board_day_price=board_day_price,
|
board_day_price=board_day_price,
|
||||||
|
|||||||
Reference in New Issue
Block a user