From e506a7ba358fae5794ee8cc92718e3a826863092 Mon Sep 17 00:00:00 2001 From: Ahmed Bouhuolia Date: Sat, 28 Sep 2024 19:20:01 +0200 Subject: [PATCH] feat: Hook orgnization name and logo to payment page --- .../GetInvoicePaymentLinkTransformer.ts | 29 +++++++++++++++++-- .../PaymentPortal/PaymentPortal.module.scss | 1 - .../PaymentPortal/PaymentPortal.tsx | 13 +++++++-- .../webapp/src/hooks/query/payment-link.ts | 20 ++++++++++++- 4 files changed, 55 insertions(+), 8 deletions(-) diff --git a/packages/server/src/services/Sales/Invoices/GetInvoicePaymentLinkTransformer.ts b/packages/server/src/services/Sales/Invoices/GetInvoicePaymentLinkTransformer.ts index 15119e436..65e42f8dd 100644 --- a/packages/server/src/services/Sales/Invoices/GetInvoicePaymentLinkTransformer.ts +++ b/packages/server/src/services/Sales/Invoices/GetInvoicePaymentLinkTransformer.ts @@ -1,6 +1,8 @@ +import { Transform } from 'form-data'; import { ItemEntryTransformer } from './ItemEntryTransformer'; import { SaleInvoiceTaxEntryTransformer } from './SaleInvoiceTaxEntryTransformer'; import { SaleInvoiceTransformer } from './SaleInvoiceTransformer'; +import { Transformer } from '@/lib/Transformer/Transformer'; export class GetInvoicePaymentLinkMetaTransformer extends SaleInvoiceTransformer { /** @@ -17,7 +19,6 @@ export class GetInvoicePaymentLinkMetaTransformer extends SaleInvoiceTransformer */ public includeAttributes = (): string[] => { return [ - 'companyName', 'customerName', 'dueAmount', 'dueDateFormatted', @@ -39,6 +40,7 @@ export class GetInvoicePaymentLinkMetaTransformer extends SaleInvoiceTransformer 'termsConditions', 'entries', 'taxes', + 'organization', ]; }; @@ -46,8 +48,15 @@ export class GetInvoicePaymentLinkMetaTransformer extends SaleInvoiceTransformer return invoice.customer.displayName; } - public companyName() { - return 'Bigcapital Technology, Inc.'; + /** + * Retrieves the organization metadata for the payment link. + * @returns + */ + public organization(invoice) { + return this.item( + this.context.organization, + new GetPaymentLinkOrganizationMetaTransformer() + ); } /** @@ -82,6 +91,20 @@ export class GetInvoicePaymentLinkMetaTransformer extends SaleInvoiceTransformer }; } +class GetPaymentLinkOrganizationMetaTransformer extends Transformer { + /** + * Include these attributes to item entry object. + * @returns {Array} + */ + public includeAttributes = (): string[] => { + return ['primaryColor', 'name', 'address', 'logoUri']; + }; + + public excludeAttributes = (): string[] => { + return ['*']; + }; +} + class GetInvoicePaymentLinkEntryMetaTransformer extends ItemEntryTransformer { /** * Include these attributes to item entry object. diff --git a/packages/webapp/src/containers/PaymentPortal/PaymentPortal.module.scss b/packages/webapp/src/containers/PaymentPortal/PaymentPortal.module.scss index 8401ca7c3..a431cfcfe 100644 --- a/packages/webapp/src/containers/PaymentPortal/PaymentPortal.module.scss +++ b/packages/webapp/src/containers/PaymentPortal/PaymentPortal.module.scss @@ -17,7 +17,6 @@ width :50px; border-radius: 50px; background-color: #dfdfdf; - background-image: url('https://pbs.twimg.com/profile_images/1381635804397703182/x5chIdsO_400x400.png'); background-position: center center; background-size: cover; background-repeat: no-repeat; diff --git a/packages/webapp/src/containers/PaymentPortal/PaymentPortal.tsx b/packages/webapp/src/containers/PaymentPortal/PaymentPortal.tsx index e83a7e318..7f8d661a1 100644 --- a/packages/webapp/src/containers/PaymentPortal/PaymentPortal.tsx +++ b/packages/webapp/src/containers/PaymentPortal/PaymentPortal.tsx @@ -38,13 +38,20 @@ export function PaymentPortal() { - - {sharableLinkMeta?.companyName} + {sharableLinkMeta?.organization?.logoUri && ( + + )} + {sharableLinkMeta?.organization?.name}

- {sharableLinkMeta?.companyName} Sent an Invoice for{' '} + {sharableLinkMeta?.organization?.name} Sent an Invoice for{' '} {sharableLinkMeta?.totalFormatted}

diff --git a/packages/webapp/src/hooks/query/payment-link.ts b/packages/webapp/src/hooks/query/payment-link.ts index 630abf437..641fe10f8 100644 --- a/packages/webapp/src/hooks/query/payment-link.ts +++ b/packages/webapp/src/hooks/query/payment-link.ts @@ -54,6 +54,15 @@ export function useCreatePaymentLink( // Get Invoice Payment Link // ----------------------------------------- +interface GetInvoicePaymentLinkAddressResponse { + address_1: string; + address_2: string; + postal_code: string; + city: string; + state_province: string; + phone: string; +} + export interface GetInvoicePaymentLinkResponse { dueAmount: number; dueAmountFormatted: string; @@ -70,7 +79,6 @@ export interface GetInvoicePaymentLinkResponse { totalFormatted: string; totalLocalFormatted: string; customerName: string; - companyName: string; invoiceMessage: string; termsConditions: string; entries: Array<{ @@ -89,7 +97,17 @@ export interface GetInvoicePaymentLinkResponse { taxRateAmountFormatted: string; taxRateCode: string; }>; + organization: Record< + string, + { + address: Record; + name: string; + primaryColor: string; + logoUri: string; + } + >; } + /** * Fetches the sharable invoice link metadata for a given link ID. * @param {string} linkId - The ID of the link to fetch metadata for.