diff --git a/packages/server/src/models/PaymentIntegration.ts b/packages/server/src/models/PaymentIntegration.ts
index 04ed8fb31..cb4c8c825 100644
--- a/packages/server/src/models/PaymentIntegration.ts
+++ b/packages/server/src/models/PaymentIntegration.ts
@@ -25,6 +25,17 @@ export class PaymentIntegration extends Model {
return this.paymentEnabled && this.payoutEnabled;
}
+ static get modifiers() {
+ return {
+ /**
+ * Query to filter enabled payment and payout.
+ */
+ fullEnabled(query) {
+ query.where('paymentEnabled', true).andWhere('payoutEnabled', true);
+ },
+ };
+ }
+
static get jsonSchema() {
return {
type: 'object',
diff --git a/packages/server/src/services/PaymentServices/GetPaymentServicesSpecificInvoice.ts b/packages/server/src/services/PaymentServices/GetPaymentServicesSpecificInvoice.ts
index 447f95943..eaab16921 100644
--- a/packages/server/src/services/PaymentServices/GetPaymentServicesSpecificInvoice.ts
+++ b/packages/server/src/services/PaymentServices/GetPaymentServicesSpecificInvoice.ts
@@ -21,7 +21,7 @@ export class GetPaymentServicesSpecificInvoice {
const { PaymentIntegration } = this.tenancy.models(tenantId);
const paymentGateways = await PaymentIntegration.query()
- .where('active', true)
+ .modify('fullEnabled')
.orderBy('name', 'ASC');
return this.transform.transform(
diff --git a/packages/server/src/services/Sales/Invoices/GetInvoicePaymentLinkMetadata.ts b/packages/server/src/services/Sales/Invoices/GetInvoicePaymentLinkMetadata.ts
index 362cafa7c..532082d08 100644
--- a/packages/server/src/services/Sales/Invoices/GetInvoicePaymentLinkMetadata.ts
+++ b/packages/server/src/services/Sales/Invoices/GetInvoicePaymentLinkMetadata.ts
@@ -44,6 +44,7 @@ export class GetInvoicePaymentLinkMetadata {
.findById(paymentLink.resourceId)
.withGraphFetched('entries.item')
.withGraphFetched('customer')
+ .withGraphFetched('taxes.taxRate')
.throwIfNotFound();
return this.transformer.transform(
diff --git a/packages/server/src/services/Sales/Invoices/GetInvoicePaymentLinkTransformer.ts b/packages/server/src/services/Sales/Invoices/GetInvoicePaymentLinkTransformer.ts
index 268ba0586..15119e436 100644
--- a/packages/server/src/services/Sales/Invoices/GetInvoicePaymentLinkTransformer.ts
+++ b/packages/server/src/services/Sales/Invoices/GetInvoicePaymentLinkTransformer.ts
@@ -1,4 +1,5 @@
import { ItemEntryTransformer } from './ItemEntryTransformer';
+import { SaleInvoiceTaxEntryTransformer } from './SaleInvoiceTaxEntryTransformer';
import { SaleInvoiceTransformer } from './SaleInvoiceTransformer';
export class GetInvoicePaymentLinkMetaTransformer extends SaleInvoiceTransformer {
@@ -37,6 +38,7 @@ export class GetInvoicePaymentLinkMetaTransformer extends SaleInvoiceTransformer
'invoiceMessage',
'termsConditions',
'entries',
+ 'taxes',
];
};
@@ -62,6 +64,22 @@ export class GetInvoicePaymentLinkMetaTransformer extends SaleInvoiceTransformer
}
);
};
+
+ /**
+ * Retrieves the sale invoice entries.
+ * @returns {}
+ */
+ protected taxes = (invoice) => {
+ return this.item(
+ invoice.taxes,
+ new GetInvoicePaymentLinkTaxEntryTransformer(),
+ {
+ subtotal: invoice.subtotal,
+ isInclusiveTax: invoice.isInclusiveTax,
+ currencyCode: invoice.currencyCode,
+ }
+ );
+ };
}
class GetInvoicePaymentLinkEntryMetaTransformer extends ItemEntryTransformer {
@@ -94,3 +112,13 @@ class GetInvoicePaymentLinkEntryMetaTransformer extends ItemEntryTransformer {
return ['*'];
};
}
+
+class GetInvoicePaymentLinkTaxEntryTransformer extends SaleInvoiceTaxEntryTransformer {
+ /**
+ * Included attributes.
+ * @returns {Array}
+ */
+ public includeAttributes = (): string[] => {
+ return ['name', 'taxRateCode', 'taxRateAmount', 'taxRateAmountFormatted'];
+ };
+}
diff --git a/packages/webapp/src/containers/PaymentPortal/PaymentPortal.module.scss b/packages/webapp/src/containers/PaymentPortal/PaymentPortal.module.scss
index 6870ee413..8401ca7c3 100644
--- a/packages/webapp/src/containers/PaymentPortal/PaymentPortal.module.scss
+++ b/packages/webapp/src/containers/PaymentPortal/PaymentPortal.module.scss
@@ -1,6 +1,6 @@
.rootBodyPage {
- background: #0c103f;
+ background: #1c1d29;
}
.root {
diff --git a/packages/webapp/src/containers/PaymentPortal/PaymentPortal.tsx b/packages/webapp/src/containers/PaymentPortal/PaymentPortal.tsx
index cd8a7bfb9..3f3e2c98d 100644
--- a/packages/webapp/src/containers/PaymentPortal/PaymentPortal.tsx
+++ b/packages/webapp/src/containers/PaymentPortal/PaymentPortal.tsx
@@ -83,6 +83,13 @@ export function PaymentPortal() {
+ {sharableLinkMeta?.taxes?.map((tax, key) => (
+
+ {tax?.name}
+ {tax?.taxRateAmountFormatted}
+
+ ))}
+
({
+ label: tax.name,
+ amount: tax.taxRateAmountFormatted,
+ }))}
/>
diff --git a/packages/webapp/src/hooks/query/payment-link.ts b/packages/webapp/src/hooks/query/payment-link.ts
index 4750267b5..8857cad81 100644
--- a/packages/webapp/src/hooks/query/payment-link.ts
+++ b/packages/webapp/src/hooks/query/payment-link.ts
@@ -50,7 +50,6 @@ export function useCreatePaymentLink(
);
}
-
// Get Invoice Payment Link
// -----------------------------------------
export interface GetInvoicePaymentLinkResponse {
@@ -82,6 +81,12 @@ export interface GetInvoicePaymentLinkResponse {
total: number;
totalFormatted: string;
}>;
+ taxes: Array<{
+ name: string;
+ taxRateAmount: number;
+ taxRateAmountFormatted: string;
+ taxRateCode: string;
+ }>;
}
/**
* Fetches the sharable invoice link metadata for a given link ID.