mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-21 23:30:32 +00:00
feat: estimate send mail drawer
This commit is contained in:
@@ -11,7 +11,6 @@ import QuickPaymentMadeFormDialog from '@/containers/Dialogs/QuickPaymentMadeFor
|
|||||||
import AllocateLandedCostDialog from '@/containers/Dialogs/AllocateLandedCostDialog';
|
import AllocateLandedCostDialog from '@/containers/Dialogs/AllocateLandedCostDialog';
|
||||||
import InvoicePdfPreviewDialog from '@/containers/Dialogs/InvoicePdfPreviewDialog';
|
import InvoicePdfPreviewDialog from '@/containers/Dialogs/InvoicePdfPreviewDialog';
|
||||||
import EstimatePdfPreviewDialog from '@/containers/Dialogs/EstimatePdfPreviewDialog';
|
import EstimatePdfPreviewDialog from '@/containers/Dialogs/EstimatePdfPreviewDialog';
|
||||||
import ReceiptPdfPreviewDialog from '@/containers/Dialogs/ReceiptPdfPreviewDialog';
|
|
||||||
import MoneyInDialog from '@/containers/CashFlow/MoneyInDialog';
|
import MoneyInDialog from '@/containers/CashFlow/MoneyInDialog';
|
||||||
import MoneyOutDialog from '@/containers/CashFlow/MoneyOutDialog';
|
import MoneyOutDialog from '@/containers/CashFlow/MoneyOutDialog';
|
||||||
import BadDebtDialog from '@/containers/Dialogs/BadDebtDialog';
|
import BadDebtDialog from '@/containers/Dialogs/BadDebtDialog';
|
||||||
@@ -45,7 +44,6 @@ import ProjectBillableEntriesFormDialog from '@/containers/Projects/containers/P
|
|||||||
import TaxRateFormDialog from '@/containers/TaxRates/dialogs/TaxRateFormDialog/TaxRateFormDialog';
|
import TaxRateFormDialog from '@/containers/TaxRates/dialogs/TaxRateFormDialog/TaxRateFormDialog';
|
||||||
import { DialogsName } from '@/constants/dialogs';
|
import { DialogsName } from '@/constants/dialogs';
|
||||||
import InvoiceExchangeRateChangeDialog from '@/containers/Sales/Invoices/InvoiceForm/Dialogs/InvoiceExchangeRateChangeDialog';
|
import InvoiceExchangeRateChangeDialog from '@/containers/Sales/Invoices/InvoiceForm/Dialogs/InvoiceExchangeRateChangeDialog';
|
||||||
import ReceiptMailDialog from '@/containers/Sales/Receipts/ReceiptMailDialog/ReceiptMailDialog';
|
|
||||||
import PaymentMailDialog from '@/containers/Sales/PaymentsReceived/PaymentMailDialog/PaymentMailDialog';
|
import PaymentMailDialog from '@/containers/Sales/PaymentsReceived/PaymentMailDialog/PaymentMailDialog';
|
||||||
import { ExportDialog } from '@/containers/Dialogs/ExportDialog';
|
import { ExportDialog } from '@/containers/Dialogs/ExportDialog';
|
||||||
import { RuleFormDialog } from '@/containers/Banking/Rules/RuleFormDialog/RuleFormDialog';
|
import { RuleFormDialog } from '@/containers/Banking/Rules/RuleFormDialog/RuleFormDialog';
|
||||||
@@ -80,7 +78,6 @@ export default function DialogsContainer() {
|
|||||||
/>
|
/>
|
||||||
<InvoicePdfPreviewDialog dialogName={DialogsName.InvoicePdfForm} />
|
<InvoicePdfPreviewDialog dialogName={DialogsName.InvoicePdfForm} />
|
||||||
<EstimatePdfPreviewDialog dialogName={DialogsName.EstimatePdfForm} />
|
<EstimatePdfPreviewDialog dialogName={DialogsName.EstimatePdfForm} />
|
||||||
<ReceiptPdfPreviewDialog dialogName={DialogsName.ReceiptPdfForm} />
|
|
||||||
<MoneyInDialog dialogName={DialogsName.MoneyInForm} />
|
<MoneyInDialog dialogName={DialogsName.MoneyInForm} />
|
||||||
<MoneyOutDialog dialogName={DialogsName.MoneyOutForm} />
|
<MoneyOutDialog dialogName={DialogsName.MoneyOutForm} />
|
||||||
|
|
||||||
@@ -142,7 +139,6 @@ export default function DialogsContainer() {
|
|||||||
<InvoiceExchangeRateChangeDialog
|
<InvoiceExchangeRateChangeDialog
|
||||||
dialogName={DialogsName.InvoiceExchangeRateChangeNotice}
|
dialogName={DialogsName.InvoiceExchangeRateChangeNotice}
|
||||||
/>
|
/>
|
||||||
<ReceiptMailDialog dialogName={DialogsName.ReceiptMail} />
|
|
||||||
<PaymentMailDialog dialogName={DialogsName.PaymentMail} />
|
<PaymentMailDialog dialogName={DialogsName.PaymentMail} />
|
||||||
<ExportDialog dialogName={DialogsName.Export} />
|
<ExportDialog dialogName={DialogsName.Export} />
|
||||||
<RuleFormDialog dialogName={DialogsName.BankRuleForm} />
|
<RuleFormDialog dialogName={DialogsName.BankRuleForm} />
|
||||||
|
|||||||
@@ -33,6 +33,7 @@ import { BrandingTemplatesDrawer } from '@/containers/BrandingTemplates/Branding
|
|||||||
import { DRAWERS } from '@/constants/drawers';
|
import { DRAWERS } from '@/constants/drawers';
|
||||||
import { InvoiceSendMailDrawer } from '@/containers/Sales/Invoices/InvoiceSendMailDrawer/InvoiceSendMailDrawer';
|
import { InvoiceSendMailDrawer } from '@/containers/Sales/Invoices/InvoiceSendMailDrawer/InvoiceSendMailDrawer';
|
||||||
import { EstimateSendMailDrawer } from '@/containers/Sales/Estimates/EstimateSendMailDrawer';
|
import { EstimateSendMailDrawer } from '@/containers/Sales/Estimates/EstimateSendMailDrawer';
|
||||||
|
import { ReceiptSendMailDrawer } from '@/containers/Sales/Receipts/ReceiptSendMailDrawer';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Drawers container of the dashboard.
|
* Drawers container of the dashboard.
|
||||||
@@ -83,6 +84,7 @@ export default function DrawersContainer() {
|
|||||||
<BrandingTemplatesDrawer name={DRAWERS.BRANDING_TEMPLATES} />
|
<BrandingTemplatesDrawer name={DRAWERS.BRANDING_TEMPLATES} />
|
||||||
<InvoiceSendMailDrawer name={DRAWERS.INVOICE_SEND_MAIL} />
|
<InvoiceSendMailDrawer name={DRAWERS.INVOICE_SEND_MAIL} />
|
||||||
<EstimateSendMailDrawer name={DRAWERS.ESTIMATE_SEND_MAIL} />
|
<EstimateSendMailDrawer name={DRAWERS.ESTIMATE_SEND_MAIL} />
|
||||||
|
<ReceiptSendMailDrawer name={DRAWERS.RECEIPT_SEND_MAIL} />
|
||||||
</div>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -36,4 +36,5 @@ export enum DRAWERS {
|
|||||||
STRIPE_PAYMENT_INTEGRATION_EDIT = 'STRIPE_PAYMENT_INTEGRATION_EDIT',
|
STRIPE_PAYMENT_INTEGRATION_EDIT = 'STRIPE_PAYMENT_INTEGRATION_EDIT',
|
||||||
INVOICE_SEND_MAIL = 'INVOICE_SEND_MAIL',
|
INVOICE_SEND_MAIL = 'INVOICE_SEND_MAIL',
|
||||||
ESTIMATE_SEND_MAIL = 'ESTIMATE_SEND_MAIL',
|
ESTIMATE_SEND_MAIL = 'ESTIMATE_SEND_MAIL',
|
||||||
|
RECEIPT_SEND_MAIL = 'RECEIPT_SEND_MAIL',
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,7 +1,27 @@
|
|||||||
|
import { Suspense } from 'react';
|
||||||
|
import { SendMailViewPreviewTabs } from '../SendMailViewDrawer/SendMailViewPreviewTabs';
|
||||||
|
import { Tab } from '@blueprintjs/core';
|
||||||
|
import { EstimateSendPdfPreviewConnected } from './EstimateSendPdfPreviewConnected';
|
||||||
|
|
||||||
export function EstimateSendMailPreviewTabs() {
|
export function EstimateSendMailPreviewTabs() {
|
||||||
return (
|
return (
|
||||||
<h1>asdfsdf</h1>
|
<SendMailViewPreviewTabs>
|
||||||
)
|
<Tab
|
||||||
|
id={'payment-page'}
|
||||||
|
title={'Payment page'}
|
||||||
|
panel={
|
||||||
|
<Suspense>{/* <InvoiceMailReceiptPreviewConnected /> */}</Suspense>
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
<Tab
|
||||||
|
id="pdf-document"
|
||||||
|
title={'PDF document'}
|
||||||
|
panel={
|
||||||
|
<Suspense>
|
||||||
|
<EstimateSendPdfPreviewConnected />
|
||||||
|
</Suspense>
|
||||||
|
}
|
||||||
|
/>
|
||||||
|
</SendMailViewPreviewTabs>
|
||||||
|
);
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,13 @@
|
|||||||
|
import { SendViewPreviewHeader } from '../SendMailViewDrawer/SendMailViewPreviewHeader';
|
||||||
|
|
||||||
|
export function EstimateSendMailPreviewHeader() {
|
||||||
|
return (
|
||||||
|
<SendViewPreviewHeader
|
||||||
|
companyName="A"
|
||||||
|
customerName="A"
|
||||||
|
subject={'adsfsdf'}
|
||||||
|
from={['a.bouhuolia@gmail.com']}
|
||||||
|
to={['a.bouhuolia@gmail.com']}
|
||||||
|
/>
|
||||||
|
);
|
||||||
|
}
|
||||||
@@ -0,0 +1,31 @@
|
|||||||
|
import { Spinner } from '@blueprintjs/core';
|
||||||
|
import { Stack } from '@/components';
|
||||||
|
import { useGetSaleEstimateHtml } from '@/hooks/query';
|
||||||
|
import { EstimateSendMailPreviewHeader } from './EstimateSendMailPreviewHeader';
|
||||||
|
import { SendMailViewPreviewPdfIframe } from '../SendMailViewDrawer/SendMailViewPreviewPdfIframe';
|
||||||
|
import { useDrawerContext } from '@/components/Drawer/DrawerProvider';
|
||||||
|
|
||||||
|
export function EstimateSendPdfPreviewConnected() {
|
||||||
|
return (
|
||||||
|
<Stack>
|
||||||
|
<EstimateSendMailPreviewHeader />
|
||||||
|
|
||||||
|
<Stack px={4} py={6}>
|
||||||
|
<EstimateSendPdfPreviewIframe />
|
||||||
|
</Stack>
|
||||||
|
</Stack>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
function EstimateSendPdfPreviewIframe() {
|
||||||
|
const { payload } = useDrawerContext();
|
||||||
|
const { data, isLoading } = useGetSaleEstimateHtml(payload?.estimateId);
|
||||||
|
|
||||||
|
if (isLoading && data) {
|
||||||
|
return <Spinner size={20} />;
|
||||||
|
}
|
||||||
|
|
||||||
|
const iframeSrcDoc = data?.htmlContent;
|
||||||
|
|
||||||
|
return <SendMailViewPreviewPdfIframe srcDoc={iframeSrcDoc} />;
|
||||||
|
}
|
||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// @ts-nocheck
|
||||||
import React, { createContext, useContext } from 'react';
|
import React, { createContext, useContext } from 'react';
|
||||||
import { Spinner } from '@blueprintjs/core';
|
import { Spinner } from '@blueprintjs/core';
|
||||||
import { useDrawerContext } from '@/components/Drawer/DrawerProvider';
|
import { useDrawerContext } from '@/components/Drawer/DrawerProvider';
|
||||||
|
|||||||
@@ -7,13 +7,13 @@ import { ReceiptSendMailForm } from './ReceiptSendMailForm';
|
|||||||
import { ReceiptSendMailFormFields } from './ReceiptSendMailFormFields';
|
import { ReceiptSendMailFormFields } from './ReceiptSendMailFormFields';
|
||||||
import { ReceiptSendMailPreviewTabs } from './ReceiptSendMailPreviewTabs';
|
import { ReceiptSendMailPreviewTabs } from './ReceiptSendMailPreviewTabs';
|
||||||
|
|
||||||
export function InvoiceSendMailContent() {
|
export function ReceiptSendMailContent() {
|
||||||
return (
|
return (
|
||||||
<Stack className={Classes.DRAWER_BODY}>
|
<Stack className={Classes.DRAWER_BODY}>
|
||||||
<ReceiptSendMailBoot>
|
<ReceiptSendMailBoot>
|
||||||
<ReceiptSendMailForm>
|
<ReceiptSendMailForm>
|
||||||
<SendMailViewLayout
|
<SendMailViewLayout
|
||||||
header={<SendMailViewHeader label={'Send Invoice Mail'} />}
|
header={<SendMailViewHeader label={'Send Receipt Mail'} />}
|
||||||
fields={<ReceiptSendMailFormFields />}
|
fields={<ReceiptSendMailFormFields />}
|
||||||
preview={<ReceiptSendMailPreviewTabs />}
|
preview={<ReceiptSendMailPreviewTabs />}
|
||||||
/>
|
/>
|
||||||
|
|||||||
@@ -1,3 +1,4 @@
|
|||||||
|
// @ts-nocheck
|
||||||
import { Form, Formik, FormikHelpers } from 'formik';
|
import { Form, Formik, FormikHelpers } from 'formik';
|
||||||
import { css } from '@emotion/css';
|
import { css } from '@emotion/css';
|
||||||
import { Intent } from '@blueprintjs/core';
|
import { Intent } from '@blueprintjs/core';
|
||||||
|
|||||||
@@ -1,6 +1,3 @@
|
|||||||
|
|
||||||
|
|
||||||
export function ReceiptSendMailPreviewTabs() {
|
export function ReceiptSendMailPreviewTabs() {
|
||||||
|
|
||||||
return null;
|
return null;
|
||||||
}
|
}
|
||||||
@@ -290,3 +290,31 @@ export function useGetSaleEstimatesState(
|
|||||||
{ ...options },
|
{ ...options },
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
interface GetEstimateHtmlResponse {
|
||||||
|
htmlContent: string;
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Retrieves the sale estimate html content.
|
||||||
|
* @param {number} invoiceId
|
||||||
|
* @param {UseQueryOptions<GetEstimateHtmlResponse>} options
|
||||||
|
* @returns {UseQueryResult<GetEstimateHtmlResponse>}
|
||||||
|
*/
|
||||||
|
export const useGetSaleEstimateHtml = (
|
||||||
|
estimateId: number,
|
||||||
|
options?: UseQueryOptions<GetEstimateHtmlResponse>,
|
||||||
|
): UseQueryResult<GetEstimateHtmlResponse> => {
|
||||||
|
const apiRequest = useApiRequest();
|
||||||
|
|
||||||
|
return useQuery<GetEstimateHtmlResponse>(
|
||||||
|
['SALE_ESTIMATE_HTML', estimateId],
|
||||||
|
() =>
|
||||||
|
apiRequest
|
||||||
|
.get(`sales/estimates/${estimateId}`, {
|
||||||
|
headers: {
|
||||||
|
Accept: 'application/json+html',
|
||||||
|
},
|
||||||
|
})
|
||||||
|
.then((res) => transformToCamelCase(res.data)),
|
||||||
|
);
|
||||||
|
};
|
||||||
|
|||||||
Reference in New Issue
Block a user