diff --git a/pms_api_rest/datamodels/pms_invoice.py b/pms_api_rest/datamodels/pms_invoice.py index db7de7b0a..34cd6ab7c 100644 --- a/pms_api_rest/datamodels/pms_invoice.py +++ b/pms_api_rest/datamodels/pms_invoice.py @@ -24,3 +24,6 @@ class PmsAccountInvoiceInfo(Datamodel): isDownPaymentInvoice = fields.Boolean(required=False, allow_none=True) isSimplifiedInvoice = fields.Boolean(required=False, allow_none=True) reversedEntryId = fields.Integer(required=False, allow_none=True) + # REVIEW: originDownPaymentId Only input field to service to + # create downpayment invoices from payments + originDownPaymentId = fields.Integer(required=False, allow_none=True) diff --git a/pms_api_rest/services/pms_folio_service.py b/pms_api_rest/services/pms_folio_service.py index 7b062a248..352028283 100644 --- a/pms_api_rest/services/pms_folio_service.py +++ b/pms_api_rest/services/pms_folio_service.py @@ -643,6 +643,7 @@ class PmsFolioService(Component): invoices = folios_to_invoice._create_invoices( lines_to_invoice=lines_to_invoice_dict, partner_invoice_id=invoice_info.partnerId, + final=True, # To force take into account down payments ) for item in invoice_info.saleLines: if item.id in invoices.invoice_line_ids.mapped("folio_line_ids.id"): diff --git a/pms_api_rest/services/pms_invoice_service.py b/pms_api_rest/services/pms_invoice_service.py index d1bffbe0d..98610336f 100644 --- a/pms_api_rest/services/pms_invoice_service.py +++ b/pms_api_rest/services/pms_invoice_service.py @@ -131,6 +131,28 @@ class PmsInvoiceService(Component): invoice.action_post() return invoice + @restapi.method( + [ + ( + [ + "/", + ], + "POST", + ) + ], + input_param=Datamodel("pms.invoice.info"), + auth="jwt_api_pms", + ) + def create_invoice(self, pms_invoice_info): + if pms_invoice_info.originDownPaymentId: + if not pms_invoice_info.partnerId: + raise UserError(_("For manual invoice, partner is required")) + payment = self.env["account.payment"].browse(pms_invoice_info.paymentId) + self.env["account.payment"]._create_downpayment_invoice( + payment=payment, + partner_id=pms_invoice_info.partnerId, + ) + @restapi.method( [ (