diff --git a/packages/server/src/api/controllers/Organization.ts b/packages/server/src/api/controllers/Organization.ts
index 76157739e..9e01c8da2 100644
--- a/packages/server/src/api/controllers/Organization.ts
+++ b/packages/server/src/api/controllers/Organization.ts
@@ -56,10 +56,10 @@ export default class OrganizationController extends BaseController {
}
/**
- * Organization setup schema.
- * @return {ValidationChain[]}
+ * Build organization validation schema.
+ * @returns {ValidationChain[]}
*/
- private get commonOrganizationValidationSchema(): ValidationChain[] {
+ private get buildOrganizationValidationSchema(): ValidationChain[] {
return [
check('name').exists().trim(),
check('industry').optional({ nullable: true }).isString().trim(),
@@ -69,30 +69,9 @@ export default class OrganizationController extends BaseController {
check('fiscal_year').exists().isIn(MONTHS),
check('language').exists().isString().isIn(ACCEPTED_LOCALES),
check('date_format').optional().isIn(DATE_FORMATS),
-
- // # Address
- check('address').optional({ nullable: true }),
- check('address.address_1').optional().isString().trim(),
- check('address.address_2').optional().isString().trim(),
- check('address.postal_code').optional().isString().trim(),
- check('address.city').optional().isString().trim(),
- check('address.state_province').optional().isString().trim(),
- check('address.phone').optional().isString().trim(),
-
- // # Branding
- check('primary_color').optional().isString().trim(),
- check('company_logo_key').optional().isString().trim(),
];
}
- /**
- * Build organization validation schema.
- * @returns {ValidationChain[]}
- */
- private get buildOrganizationValidationSchema(): ValidationChain[] {
- return [...this.commonOrganizationValidationSchema];
- }
-
/**
* Update organization validation schema.
* @returns {ValidationChain[]}
diff --git a/packages/webapp/src/constants/PdfTemplates.ts b/packages/webapp/src/constants/PdfTemplates.ts
index 6b1ec8b96..26c52b7f9 100644
--- a/packages/webapp/src/constants/PdfTemplates.ts
+++ b/packages/webapp/src/constants/PdfTemplates.ts
@@ -1,4 +1,5 @@
-export const DefaultPdfTemplateTerms = 'All services provided are non-refundable. For any disputes, please contact us within 7 days of receiving this invoice.';
+export const DefaultPdfTemplateTerms =
+ 'All services provided are non-refundable. For any disputes, please contact us within 7 days of receiving this invoice.';
export const DefaultPdfTemplateStatement =
'Thank you for your business. We look forward to working with you again!';
@@ -7,3 +8,19 @@ export const DefaultPdfTemplateItemName = 'Web development';
export const DefaultPdfTemplateItemDescription =
'Website development with content and SEO optimization';
+
+export const DefaultPdfTemplateAddressBilledTo = `Bigcapital Technology, Inc.
+131 Continental Dr Suite 305 Newark,
+Delaware 19713,
+United States,
++1 762-339-5634,
+ahmed@bigcapital.app
+`;
+
+
+export const DefaultPdfTemplateAddressBilledFrom = `131 Continental Dr Suite 305 Newark,
+Delaware 19713,
+United States,
++1 762-339-5634,
+ahmed@bigcapital.app
+`;
\ No newline at end of file
diff --git a/packages/webapp/src/containers/Sales/CreditNotes/CreditNoteCustomize/CreditNotePaperTemplate.tsx b/packages/webapp/src/containers/Sales/CreditNotes/CreditNoteCustomize/CreditNotePaperTemplate.tsx
index 2e575fc11..0362a6ae3 100644
--- a/packages/webapp/src/containers/Sales/CreditNotes/CreditNoteCustomize/CreditNotePaperTemplate.tsx
+++ b/packages/webapp/src/containers/Sales/CreditNotes/CreditNoteCustomize/CreditNotePaperTemplate.tsx
@@ -1,4 +1,4 @@
-import { Stack } from '@/components';
+import { Box, Stack } from '@/components';
import {
PaperTemplate,
PaperTemplateProps,
@@ -8,12 +8,14 @@ import {
DefaultPdfTemplateItemDescription,
DefaultPdfTemplateStatement,
DefaultPdfTemplateItemName,
+ DefaultPdfTemplateAddressBilledTo,
+ DefaultPdfTemplateAddressBilledFrom,
} from '@/constants/PdfTemplates';
export interface CreditNotePaperTemplateProps extends PaperTemplateProps {
// Address
- billedToAddress?: Array;
- billedFromAddress?: Array;
+ billedToAddress?: string;
+ billedFromAddress?: string;
showBilledToAddress?: boolean;
showBilledFromAddress?: boolean;
billedToLabel?: string;
@@ -70,23 +72,11 @@ export function CreditNotePaperTemplate({
companyName = 'Bigcapital Technology, Inc.',
// Address
- billedToAddress = [
- 'Bigcapital Technology, Inc.',
- '131 Continental Dr Suite 305 Newark,',
- 'Delaware 19713',
- 'United States',
- '+1 762-339-5634',
- 'ahmed@bigcapital.app',
- ],
- billedFromAddress = [
- '131 Continental Dr Suite 305 Newark,',
- 'Delaware 19713',
- 'United States',
- '+1 762-339-5634',
- 'ahmed@bigcapital.app',
- ],
- showBilledToAddress = true,
+ billedToAddress = DefaultPdfTemplateAddressBilledTo,
+ billedFromAddress = DefaultPdfTemplateAddressBilledFrom,
+
showBilledFromAddress = true,
+ showBilledToAddress = true,
billedToLabel = 'Billed To',
// Total
@@ -152,14 +142,16 @@ export function CreditNotePaperTemplate({
{showBilledFromAddress && (
- {companyName}, ...billedFromAddress]}
- />
+
+ {companyName}
+
+
)}
{showBilledToAddress && (
- {billedToLabel}, ...billedToAddress]}
- />
+
+ {billedToLabel}
+
+
)}
diff --git a/packages/webapp/src/containers/Sales/Estimates/EstimateCustomize/EstimatePaperTemplate.tsx b/packages/webapp/src/containers/Sales/Estimates/EstimateCustomize/EstimatePaperTemplate.tsx
index 5985ba3cb..0426b9a30 100644
--- a/packages/webapp/src/containers/Sales/Estimates/EstimateCustomize/EstimatePaperTemplate.tsx
+++ b/packages/webapp/src/containers/Sales/Estimates/EstimateCustomize/EstimatePaperTemplate.tsx
@@ -1,4 +1,4 @@
-import { Stack } from '@/components';
+import { Box, Stack } from '@/components';
import {
PaperTemplate,
PaperTemplateProps,
@@ -8,6 +8,8 @@ import {
DefaultPdfTemplateItemDescription,
DefaultPdfTemplateStatement,
DefaultPdfTemplateItemName,
+ DefaultPdfTemplateAddressBilledTo,
+ DefaultPdfTemplateAddressBilledFrom,
} from '@/constants/PdfTemplates';
export interface EstimatePaperTemplateProps extends PaperTemplateProps {
@@ -31,10 +33,10 @@ export interface EstimatePaperTemplateProps extends PaperTemplateProps {
// Address
showBilledToAddress?: boolean;
- billedToAddress?: Array;
+ billedToAddress?: string;
showBilledFromAddress?: boolean;
- billedFromAddress?: Array;
+ billedFromAddress?: string;
billedToLabel?: string;
// Totals
@@ -74,25 +76,14 @@ export function EstimatePaperTemplate({
companyName,
- billedToAddress = [
- 'Bigcapital Technology, Inc.',
- '131 Continental Dr Suite 305 Newark,',
- 'Delaware 19713',
- 'United States',
- '+1 762-339-5634',
- 'ahmed@bigcapital.app',
- ],
- billedFromAddress = [
- '131 Continental Dr Suite 305 Newark,',
- 'Delaware 19713',
- 'United States',
- '+1 762-339-5634',
- 'ahmed@bigcapital.app',
- ],
+ // # Address
+ billedToAddress = DefaultPdfTemplateAddressBilledTo,
+ billedFromAddress = DefaultPdfTemplateAddressBilledFrom,
showBilledFromAddress = true,
showBilledToAddress = true,
billedToLabel = 'Billed To',
+ // #Total
total = '$1000.00',
totalLabel = 'Total',
showTotal = true,
@@ -101,10 +92,12 @@ export function EstimatePaperTemplate({
subtotalLabel = 'Subtotal',
showSubtotal = true,
+ // # Customer Note
showCustomerNote = true,
customerNote = DefaultPdfTemplateStatement,
customerNoteLabel = 'Customer Note',
+ // # Terms & Conditions
showTermsConditions = true,
termsConditions = DefaultPdfTemplateTerms,
termsConditionsLabel = 'Terms & Conditions',
@@ -145,13 +138,11 @@ export function EstimatePaperTemplate({
{estimateNumebr}
)}
-
{showEstimateDate && (
{estimateDate}
)}
-
{showExpirationDate && (
{expirationDate}
@@ -161,14 +152,16 @@ export function EstimatePaperTemplate({
{showBilledFromAddress && (
- {companyName}, ...billedFromAddress]}
- />
+
+ {companyName}
+
+
)}
{showBilledToAddress && (
- {billedToLabel}, ...billedToAddress]}
- />
+
+ {billedToLabel}
+
+
)}
diff --git a/packages/webapp/src/containers/Sales/Invoices/InvoiceCustomize/InvoicePaperTemplate.tsx b/packages/webapp/src/containers/Sales/Invoices/InvoiceCustomize/InvoicePaperTemplate.tsx
index 6620f0e28..e2a469fe9 100644
--- a/packages/webapp/src/containers/Sales/Invoices/InvoiceCustomize/InvoicePaperTemplate.tsx
+++ b/packages/webapp/src/containers/Sales/Invoices/InvoiceCustomize/InvoicePaperTemplate.tsx
@@ -1,11 +1,13 @@
import React from 'react';
import { PaperTemplate, PaperTemplateTotalBorder } from './PaperTemplate';
-import { Stack } from '@/components';
+import { Box, Stack } from '@/components';
import {
DefaultPdfTemplateTerms,
DefaultPdfTemplateItemDescription,
DefaultPdfTemplateStatement,
DefaultPdfTemplateItemName,
+ DefaultPdfTemplateAddressBilledTo,
+ DefaultPdfTemplateAddressBilledFrom,
} from '@/constants/PdfTemplates';
interface PapaerLine {
item?: string;
@@ -89,8 +91,8 @@ export interface InvoicePaperTemplateProps {
lines?: Array;
taxes?: Array;
- billedFromAddres?: Array;
- billedToAddress?: Array;
+ billedFromAddres?: string;
+ billedToAddress?: string;
}
export function InvoicePaperTemplate({
@@ -169,21 +171,8 @@ export function InvoicePaperTemplate({
statementLabel = 'Statement',
showStatement = true,
statement = DefaultPdfTemplateStatement,
- billedToAddress = [
- 'Bigcapital Technology, Inc.',
- '131 Continental Dr Suite 305 Newark,',
- 'Delaware 19713',
- 'United States',
- '+1 762-339-5634',
- 'ahmed@bigcapital.app',
- ],
- billedFromAddres = [
- '131 Continental Dr Suite 305 Newark,',
- 'Delaware 19713',
- 'United States',
- '+1 762-339-5634',
- 'ahmed@bigcapital.app',
- ],
+ billedToAddress = DefaultPdfTemplateAddressBilledTo,
+ billedFromAddres = DefaultPdfTemplateAddressBilledFrom,
}: InvoicePaperTemplateProps) {
return (
{showBilledFromAddress && (
- {companyName}, ...billedFromAddres]}
- />
+
+ {companyName}
+
+
)}
{showBillingToAddress && (
- {billedToLabel}, ...billedToAddress]}
- />
+
+ {billedToLabel}
+
+
)}
diff --git a/packages/webapp/src/containers/Sales/Invoices/InvoiceCustomize/PaperTemplate.tsx b/packages/webapp/src/containers/Sales/Invoices/InvoiceCustomize/PaperTemplate.tsx
index 3b6e20d97..a6b8411dd 100644
--- a/packages/webapp/src/containers/Sales/Invoices/InvoiceCustomize/PaperTemplate.tsx
+++ b/packages/webapp/src/containers/Sales/Invoices/InvoiceCustomize/PaperTemplate.tsx
@@ -1,7 +1,7 @@
import React from 'react';
import clsx from 'classnames';
import { get } from 'lodash';
-import { Group, GroupProps, Stack } from '@/components';
+import { Box, Group, GroupProps, Stack } from '@/components';
import styles from './InvoicePaperTemplate.module.scss';
export interface PaperTemplateProps {
@@ -123,16 +123,14 @@ PaperTemplate.AddressesGroup = (props: GroupProps) => {
return ;
};
PaperTemplate.Address = ({
- items,
+ children,
}: {
- items: Array;
+ children: React.ReactNode;
}) => {
return (
-
- {items.map((item, index) => (
- {item}
- ))}
-
+
+ {children}
+
);
};
diff --git a/packages/webapp/src/containers/Sales/PaymentsReceived/PaymentReceivedCustomize/PaymentReceivedPaperTemplate.tsx b/packages/webapp/src/containers/Sales/PaymentsReceived/PaymentReceivedCustomize/PaymentReceivedPaperTemplate.tsx
index 114842bf8..496afddd1 100644
--- a/packages/webapp/src/containers/Sales/PaymentsReceived/PaymentReceivedCustomize/PaymentReceivedPaperTemplate.tsx
+++ b/packages/webapp/src/containers/Sales/PaymentsReceived/PaymentReceivedCustomize/PaymentReceivedPaperTemplate.tsx
@@ -1,15 +1,19 @@
-import { Stack } from '@/components';
+import { Box, Stack } from '@/components';
import {
PaperTemplate,
PaperTemplateProps,
PaperTemplateTotalBorder,
} from '../../Invoices/InvoiceCustomize/PaperTemplate';
+import {
+ DefaultPdfTemplateAddressBilledFrom,
+ DefaultPdfTemplateAddressBilledTo,
+} from '@/constants/PdfTemplates';
export interface PaymentReceivedPaperTemplateProps extends PaperTemplateProps {
- billedToAddress?: Array;
- showBillingToAddress?: boolean;
+ billedToAddress?: string;
+ showBilledToAddress?: boolean;
- billedFromAddress?: Array;
+ billedFromAddress?: string;
showBilledFromAddress?: boolean;
billedToLabel?: string;
@@ -52,23 +56,10 @@ export function PaymentReceivedPaperTemplate({
// # Company name
companyName = 'Bigcapital Technology, Inc.',
- billedToAddress = [
- 'Bigcapital Technology, Inc.',
- '131 Continental Dr Suite 305 Newark,',
- 'Delaware 19713',
- 'United States',
- '+1 762-339-5634',
- 'ahmed@bigcapital.app',
- ],
- billedFromAddress = [
- '131 Continental Dr Suite 305 Newark,',
- 'Delaware 19713',
- 'United States',
- '+1 762-339-5634',
- 'ahmed@bigcapital.app',
- ],
+ billedToAddress = DefaultPdfTemplateAddressBilledTo,
+ billedFromAddress = DefaultPdfTemplateAddressBilledFrom,
showBilledFromAddress,
- showBillingToAddress,
+ showBilledToAddress,
billedToLabel = 'Billed To',
total = '$1000.00',
@@ -119,14 +110,16 @@ export function PaymentReceivedPaperTemplate({
{showBilledFromAddress && (
- {companyName}, ...billedFromAddress]}
- />
+
+ {companyName}
+
+
)}
- {showBillingToAddress && (
- {billedToLabel}, ...billedToAddress]}
- />
+ {showBilledToAddress && (
+
+ {billedToLabel}
+
+
)}
diff --git a/packages/webapp/src/containers/Sales/Receipts/ReceiptCustomize/ReceiptPaperTemplate.tsx b/packages/webapp/src/containers/Sales/Receipts/ReceiptCustomize/ReceiptPaperTemplate.tsx
index ed00a2775..00faba13b 100644
--- a/packages/webapp/src/containers/Sales/Receipts/ReceiptCustomize/ReceiptPaperTemplate.tsx
+++ b/packages/webapp/src/containers/Sales/Receipts/ReceiptCustomize/ReceiptPaperTemplate.tsx
@@ -1,4 +1,4 @@
-import { Stack } from '@/components';
+import { Box, Stack } from '@/components';
import {
PaperTemplate,
PaperTemplateProps,
@@ -8,12 +8,14 @@ import {
DefaultPdfTemplateItemDescription,
DefaultPdfTemplateStatement,
DefaultPdfTemplateItemName,
+ DefaultPdfTemplateAddressBilledTo,
+ DefaultPdfTemplateAddressBilledFrom,
} from '@/constants/PdfTemplates';
export interface ReceiptPaperTemplateProps extends PaperTemplateProps {
// Addresses
- billedToAddress?: Array;
- billedFromAddress?: Array;
+ billedToAddress?: string;
+ billedFromAddress?: string;
showBilledFromAddress?: boolean;
showBilledToAddress?: boolean;
billedToLabel?: string;
@@ -71,21 +73,8 @@ export function ReceiptPaperTemplate({
companyName = 'Bigcapital Technology, Inc.',
// # Address
- billedToAddress = [
- 'Bigcapital Technology, Inc.',
- '131 Continental Dr Suite 305 Newark,',
- 'Delaware 19713',
- 'United States',
- '+1 762-339-5634',
- 'ahmed@bigcapital.app',
- ],
- billedFromAddress = [
- '131 Continental Dr Suite 305 Newark,',
- 'Delaware 19713',
- 'United States',
- '+1 762-339-5634',
- 'ahmed@bigcapital.app',
- ],
+ billedToAddress = DefaultPdfTemplateAddressBilledTo,
+ billedFromAddress = DefaultPdfTemplateAddressBilledFrom,
showBilledFromAddress = true,
showBilledToAddress = true,
billedToLabel = 'Billed To',
@@ -147,14 +136,16 @@ export function ReceiptPaperTemplate({
{showBilledFromAddress && (
- {companyName}, ...billedFromAddress]}
- />
+
+ {companyName}
+
+
)}
{showBilledToAddress && (
- {billedToLabel}, ...billedToAddress]}
- />
+
+ {billedToLabel}
+
+
)}
diff --git a/packages/webapp/src/hooks/query/payment-link.ts b/packages/webapp/src/hooks/query/payment-link.ts
index 34244676f..1eadbed73 100644
--- a/packages/webapp/src/hooks/query/payment-link.ts
+++ b/packages/webapp/src/hooks/query/payment-link.ts
@@ -63,6 +63,14 @@ interface GetInvoicePaymentLinkAddressResponse {
phone: string;
}
+interface GetInvoicePaymentLinkOrganizationRes {
+ address: Record;
+ name: string;
+ primaryColor: string;
+ logoUri: string;
+ addressTextFormatted: string;
+}
+
export interface GetInvoicePaymentLinkResponse {
dueAmount: number;
dueAmountFormatted: string;
@@ -97,16 +105,7 @@ export interface GetInvoicePaymentLinkResponse {
taxRateAmountFormatted: string;
taxRateCode: string;
}>;
- organization: Record<
- string,
- {
- address: Record;
- name: string;
- primaryColor: string;
- logoUri: string;
- addressTextFormatted: string;
- }
- >;
+ organization: GetInvoicePaymentLinkOrganizationRes;
hasStripePaymentMethod: boolean;
isReceivable: boolean;
}