Merge branch 'feature/multi-dimensions' of https://github.com/bigcapitalhq/client into feature/multi-dimensions

This commit is contained in:
a.bouhuolia
2022-02-19 17:15:58 +02:00
19 changed files with 422 additions and 62 deletions

View File

@@ -57,7 +57,8 @@ function InvoiceFormHeaderFields({
invoiceNextNumber,
}) {
// Invoice form context.
const { customers, isForeignCustomer } = useInvoiceFormContext();
const { customers, isForeignCustomer, setSelectCustomer } =
useInvoiceFormContext();
// Handle invoice number changing.
const handleInvoiceNumberChange = () => {
@@ -109,6 +110,7 @@ function InvoiceFormHeaderFields({
defaultSelectText={<T id={'select_customer_account'} />}
onContactSelected={(customer) => {
form.setFieldValue('customer_id', customer.id);
setSelectCustomer(customer);
}}
popoverFill={true}
allowCreate={true}
@@ -120,7 +122,7 @@ function InvoiceFormHeaderFields({
</FastField>
{/* ----------- Exchange rate ----------- */}
<If condition={true}>
<If condition={isForeignCustomer}>
<ExchangeRateInputGroup
fromCurrency={'USD'}
toCurrency={'LYD'}

View File

@@ -5,17 +5,23 @@ import 'style/pages/SaleInvoice/PageForm.scss';
import InvoiceForm from './InvoiceForm';
import { InvoiceFormProvider } from './InvoiceFormProvider';
import withCurrentOrganization from 'containers/Organization/withCurrentOrganization';
import { compose } from 'utils';
/**
* Invoice form page.
*/
export default function InvoiceFormPage() {
function InvoiceFormPage({
// #withCurrentOrganization
organization: { base_currency },
}) {
const { id } = useParams();
const idAsInteger = parseInt(id, 10);
return (
<InvoiceFormProvider invoiceId={idAsInteger}>
<InvoiceFormProvider invoiceId={idAsInteger} baseCurrency={base_currency}>
<InvoiceForm />
</InvoiceFormProvider>
);
}
export default compose(withCurrentOrganization())(InvoiceFormPage);

View File

@@ -1,5 +1,5 @@
import React, { createContext, useState } from 'react';
import { isEmpty, pick } from 'lodash';
import { isEmpty, pick, isEqual, isUndefined } from 'lodash';
import { useLocation } from 'react-router-dom';
import DashboardInsider from 'components/Dashboard/DashboardInsider';
import { transformToEditForm, ITEMS_FILTER_ROLES_QUERY } from './utils';
@@ -20,7 +20,7 @@ const InvoiceFormContext = createContext();
/**
* Accounts chart data provider.
*/
function InvoiceFormProvider({ invoiceId, ...props }) {
function InvoiceFormProvider({ invoiceId, baseCurrency, ...props }) {
const { state } = useLocation();
const estimateId = state?.action;
@@ -78,6 +78,7 @@ function InvoiceFormProvider({ invoiceId, ...props }) {
// Form submit payload.
const [submitPayload, setSubmitPayload] = useState();
const [selectCustomer, setSelectCustomer] = useState(null);
// Detarmines whether the form in new mode.
const isNewMode = !invoiceId;
@@ -86,9 +87,10 @@ function InvoiceFormProvider({ invoiceId, ...props }) {
const isFeatureLoading = isWarehouesLoading || isBranchesLoading;
// Determines whether the foreign customer.
const isForeignCustomer = false;
const isForeignCustomer =
!isEqual(selectCustomer?.currency_code, baseCurrency) &&
!isUndefined(selectCustomer?.currency_code);
// Provider payload.
const provider = {
invoice,
items,
@@ -97,6 +99,7 @@ function InvoiceFormProvider({ invoiceId, ...props }) {
estimateId,
invoiceId,
submitPayload,
selectCustomer,
branches,
warehouses,
@@ -114,6 +117,7 @@ function InvoiceFormProvider({ invoiceId, ...props }) {
createInvoiceMutate,
editInvoiceMutate,
setSubmitPayload,
setSelectCustomer,
isNewMode,
};