diff --git a/pms_api_rest/datamodels/__init__.py b/pms_api_rest/datamodels/__init__.py index 12813d93f..25586a00a 100644 --- a/pms_api_rest/datamodels/__init__.py +++ b/pms_api_rest/datamodels/__init__.py @@ -53,6 +53,7 @@ from . import pms_account_payment_term from . import pms_room_closure_reason from . import pms_report from . import pms_cash_register +from . import pms_payment_report_input from . import pms_folio_sale_line from . import pms_invoice_line from . import pms_mail diff --git a/pms_api_rest/datamodels/pms_payment_report_input.py b/pms_api_rest/datamodels/pms_payment_report_input.py new file mode 100644 index 000000000..b100556f1 --- /dev/null +++ b/pms_api_rest/datamodels/pms_payment_report_input.py @@ -0,0 +1,17 @@ +from marshmallow import fields + +from odoo.addons.datamodel.core import Datamodel +from odoo.addons.datamodel.fields import NestedModel + + +class PmsPaymentReportSearchParam(Datamodel): + _name = "pms.payment.report.search.param" + dateFrom = fields.String(required=False, allow_none=True) + dateTo = fields.String(required=False, allow_none=True) + pmsPropertyId = fields.Integer(required=False, allow_none=True) + + +class PmsPaymentReportInput(Datamodel): + _name = "pms.payment.report" + fileName = fields.String(required=False, allow_none=True) + binary = fields.String(required=False, allow_none=True) diff --git a/pms_api_rest/datamodels/res_users.py b/pms_api_rest/datamodels/res_users.py index 392a8b6cc..f003f46eb 100644 --- a/pms_api_rest/datamodels/res_users.py +++ b/pms_api_rest/datamodels/res_users.py @@ -8,4 +8,3 @@ class PmsResUsersInfo(Datamodel): id = fields.Integer(required=False, allow_none=True) name = fields.String(required=False, allow_none=True) userImageBase64 = fields.String(required=False, allow_none=True) - diff --git a/pms_api_rest/services/pms_account_payment_service.py b/pms_api_rest/services/pms_account_payment_service.py index a42a44842..35b51c956 100644 --- a/pms_api_rest/services/pms_account_payment_service.py +++ b/pms_api_rest/services/pms_account_payment_service.py @@ -267,3 +267,37 @@ class PmsAccountPaymentService(Component): "result": False, "diff": diff, } + + @restapi.method( + [ + ( + [ + "/payment-report", + ], + "GET", + ) + ], + input_param=Datamodel("pms.payment.report.search.param", is_list=False), + output_param=Datamodel("pms.payment.report", is_list=False), + auth="jwt_api_pms", + ) + def payment_report(self, pms_payment_report_search_param): + pms_property_id = pms_payment_report_search_param.pmsPropertyId + date_from = pms_payment_report_search_param.dateFrom + date_to = pms_payment_report_search_param.dateTo + report_wizard = self.env["cash.daily.report.wizard"].create( + { + "date_start": date_from, + "date_end": date_to, + "pms_property_id": pms_property_id, + } + ) + result = report_wizard._export() + file_name = result["xls_filename"] + base64EncodedStr = result["xls_binary"] + PmsResponse = self.env.datamodels["pms.payment.report"] + # REVIEW: Reuse pms.report.info by modifying the fields + # to support different types of documents? + # proposal: contentBase64 = fields.String, + # fileType = fields.String (pdf, xlsx, etc...) + return PmsResponse(fileName=file_name, binary=base64EncodedStr) diff --git a/pms_api_rest/services/pms_property_service.py b/pms_api_rest/services/pms_property_service.py index 85f491be3..6818860fa 100644 --- a/pms_api_rest/services/pms_property_service.py +++ b/pms_api_rest/services/pms_property_service.py @@ -107,9 +107,11 @@ class PmsPropertyService(Component): [("pms_property_ids", "in", pms_property_id)] ) for user in users: - result_users.append(ResUsersInfo( - id=user.id, - name=user.name, - userImageBase64=user.partner_id.image_1024 or None - )) + result_users.append( + ResUsersInfo( + id=user.id, + name=user.name, + userImageBase64=user.partner_id.image_1024 or None, + ) + ) return result_users