From 0848c0424f50518c9737224e72dbb6e5b9410bd7 Mon Sep 17 00:00:00 2001 From: Sara Date: Tue, 13 Sep 2022 14:54:28 +0200 Subject: [PATCH] [IMP] pms_api_rest: add get for payments and invoices in partner service --- pms_api_rest/datamodels/__init__.py | 1 + pms_api_rest/datamodels/pms_account_move.py | 13 ++++ pms_api_rest/datamodels/pms_payment.py | 12 ++++ pms_api_rest/services/pms_partner_service.py | 63 ++++++++++++++++++++ 4 files changed, 89 insertions(+) create mode 100644 pms_api_rest/datamodels/pms_account_move.py create mode 100644 pms_api_rest/datamodels/pms_payment.py diff --git a/pms_api_rest/datamodels/__init__.py b/pms_api_rest/datamodels/__init__.py index 0e29edbcc..5e0a0d70a 100644 --- a/pms_api_rest/datamodels/__init__.py +++ b/pms_api_rest/datamodels/__init__.py @@ -15,6 +15,7 @@ from . import pms_partner from . import pms_property from . import pms_account_journal from . import pms_account_payment +from . import pms_account_move from . import pms_user diff --git a/pms_api_rest/datamodels/pms_account_move.py b/pms_api_rest/datamodels/pms_account_move.py new file mode 100644 index 000000000..8b47fe881 --- /dev/null +++ b/pms_api_rest/datamodels/pms_account_move.py @@ -0,0 +1,13 @@ +from marshmallow import fields + +from odoo.addons.datamodel.core import Datamodel + + +class PmsAccountMove(Datamodel): + _name = "pms.account.move.info" + id = fields.Integer(required=False, allow_none=True) + amount = fields.Float(required=False, allow_none=True) + name = fields.String(required=False, allow_none=True) + date = fields.String(required=False, allow_none=True) + paymentState = fields.String(required=False, allow_none=True) + state = fields.String(required=False, allow_none=True) diff --git a/pms_api_rest/datamodels/pms_payment.py b/pms_api_rest/datamodels/pms_payment.py new file mode 100644 index 000000000..ade3dcbcc --- /dev/null +++ b/pms_api_rest/datamodels/pms_payment.py @@ -0,0 +1,12 @@ +from marshmallow import fields + +from odoo.addons.datamodel.core import Datamodel + + +class PmsPaymentInfo(Datamodel): + _name = "pms.payment.info" + id = fields.Integer(required=False, allow_none=True) + amount = fields.Float(required=False, allow_none=True) + journalId = fields.Integer(required=False, allow_none=True) + date = fields.String(required=False, allow_none=True) + memo = fields.String(required=False, allow_none=True) diff --git a/pms_api_rest/services/pms_partner_service.py b/pms_api_rest/services/pms_partner_service.py index 5ea59ef0b..e955c6847 100644 --- a/pms_api_rest/services/pms_partner_service.py +++ b/pms_api_rest/services/pms_partner_service.py @@ -241,6 +241,69 @@ class PmsPartnerService(Component): ) return reservations + @restapi.method( + [ + ( + [ + "//payments", + ], + "GET", + ) + ], + output_param=Datamodel("pms.payment.info", is_list=True), + auth="jwt_api_pms", + ) + def get_partner_payments(self, partner_id): + partnerPayments = self.env["account.payment"].search( + [("partner_id", "=", partner_id)] + ) + PmsPaymentInfo = self.env.datamodels["pms.payment.info"] + payments = [] + for payment in partnerPayments: + payments.append( + PmsPaymentInfo( + id=payment.id, + amount=round(payment.amount, 2), + journalId=payment.journal_id.id, + date=payment.date.strftime("%d/%m/%Y"), + memo=payment.ref, + ) + ) + return payments + + @restapi.method( + [ + ( + [ + "//invoices", + ], + "GET", + ) + ], + output_param=Datamodel("pms.account.move.info", is_list=True), + auth="jwt_api_pms", + ) + def get_partner_invoices(self, partner_id): + partnerInvoices = self.env["account.move"].search( + [("partner_id", "=", partner_id)] + ) + PmsAcoountMoveInfo = self.env.datamodels["pms.account.move.info"] + invoices = [] + for invoice in partnerInvoices: + invoices.append( + PmsAcoountMoveInfo( + id=invoice.id, + name=invoice.name, + amount=round(invoice.amount_total, 2), + date=invoice.date.strftime("%d/%m/%Y"), + state=invoice.state, + paymentState=invoice.payment_state + if invoice.payment_state + else None, + ) + ) + return invoices + @restapi.method( [ (