fix: download invoice document on payment page

This commit is contained in:
Ahmed Bouhuolia
2024-11-11 19:01:43 +02:00
parent d668d60ed5
commit ba8091d697
3 changed files with 12 additions and 7 deletions

View File

@@ -102,12 +102,13 @@ export class PublicSharableLinkController extends BaseController {
const { paymentLinkId } = req.params;
try {
const pdfContent = await this.paymentLinkApp.getPaymentLinkInvoicePdf(
paymentLinkId
);
const [pdfContent, filename] =
await this.paymentLinkApp.getPaymentLinkInvoicePdf(paymentLinkId);
res.set({
'Content-Type': 'application/pdf',
'Content-Length': pdfContent.length,
'Content-Disposition': `attachment; filename="${filename}"`,
});
res.send(pdfContent);
} catch (error) {

View File

@@ -12,9 +12,11 @@ export class GetPaymentLinkInvoicePdf {
* Retrieves the sale invoice PDF of the given payment link id.
* @param {number} tenantId
* @param {number} paymentLinkId
* @returns {Promise<Buffer>}
* @returns {Promise<Buffer, string>}
*/
async getPaymentLinkInvoicePdf(paymentLinkId: string): Promise<Buffer> {
async getPaymentLinkInvoicePdf(
paymentLinkId: string
): Promise<[Buffer, string]> {
const paymentLink = await PaymentLink.query()
.findOne('linkId', paymentLinkId)
.where('resourceType', 'SaleInvoice')

View File

@@ -11,7 +11,7 @@ export class PaymentLinksApplication {
@Inject()
private createInvoiceCheckoutSessionService: CreateInvoiceCheckoutSession;
@Inject()
private getPaymentLinkInvoicePdfService: GetPaymentLinkInvoicePdf;
@@ -45,7 +45,9 @@ export class PaymentLinksApplication {
* @param {number} paymentLinkId
* @returns {Promise<Buffer> }
*/
public getPaymentLinkInvoicePdf(paymentLinkId: string): Promise<Buffer> {
public getPaymentLinkInvoicePdf(
paymentLinkId: string
): Promise<[Buffer, string]> {
return this.getPaymentLinkInvoicePdfService.getPaymentLinkInvoicePdf(
paymentLinkId
);