From 31a5ee6dda4dd11434d24beb6574948ffafd9424 Mon Sep 17 00:00:00 2001 From: elforjani13 <39470382+elforjani13@users.noreply.github.com> Date: Sun, 27 Feb 2022 14:26:10 +0200 Subject: [PATCH] feat(moneyIn): add exchange rate detail. --- .../MoneyInDialog/MoneyInDialogProvider.js | 13 +++++++ .../Dialogs/MoneyInDialog/MoneyInForm.js | 1 + .../OwnerContributionFormFields.js | 36 ++++++++++++++----- .../WarehousesLocations/index.js | 1 - .../CreditNoteForm/CreditNoteForm.js | 1 + 5 files changed, 43 insertions(+), 9 deletions(-) diff --git a/src/containers/Dialogs/MoneyInDialog/MoneyInDialogProvider.js b/src/containers/Dialogs/MoneyInDialog/MoneyInDialogProvider.js index 897187065..354fbfa25 100644 --- a/src/containers/Dialogs/MoneyInDialog/MoneyInDialogProvider.js +++ b/src/containers/Dialogs/MoneyInDialog/MoneyInDialogProvider.js @@ -2,10 +2,12 @@ import React from 'react'; import { DialogContent } from 'components'; import { useCreateCashflowTransaction, + useAccount, useAccounts, useCashflowAccounts, useSettingCashFlow, } from 'hooks/query'; +import { isEqual, isUndefined } from 'lodash'; const MoneyInDialogContent = React.createContext(); @@ -21,6 +23,11 @@ function MoneyInDialogProvider({ // Fetches accounts list. const { isFetching: isAccountsLoading, data: accounts } = useAccounts(); + // Fetches the specific account details. + const { data: account, isLoading: isAccountLoading } = useAccount(accountId, { + enabled: !!accountId, + }); + // Fetch cash flow list . const { data: cashflowAccounts, isLoading: isCashFlowAccountsLoading } = useCashflowAccounts({}, { keepPreviousData: true }); @@ -34,9 +41,14 @@ function MoneyInDialogProvider({ // Submit payload. const [submitPayload, setSubmitPayload] = React.useState({}); + // Determines whether the foreign currency. + const isForeignCurrency = (toCurrency, fromCurrency) => + !isEqual(toCurrency, fromCurrency) && !isUndefined(toCurrency); + // provider. const provider = { accounts, + account, accountId, accountType, isAccountsLoading, @@ -48,6 +60,7 @@ function MoneyInDialogProvider({ createCashflowTransactionMutate, setSubmitPayload, + isForeignCurrency, }; return ( diff --git a/src/containers/Dialogs/MoneyInDialog/MoneyInForm.js b/src/containers/Dialogs/MoneyInDialog/MoneyInForm.js index a4a933d31..65cafe412 100644 --- a/src/containers/Dialogs/MoneyInDialog/MoneyInForm.js +++ b/src/containers/Dialogs/MoneyInDialog/MoneyInForm.js @@ -28,6 +28,7 @@ const defaultInitialValues = { reference_no: '', cashflow_account_id: '', credit_account_id: '', + currency_code: '', description: '', publish: '', }; diff --git a/src/containers/Dialogs/MoneyInDialog/OwnerContribution/OwnerContributionFormFields.js b/src/containers/Dialogs/MoneyInDialog/OwnerContribution/OwnerContributionFormFields.js index a696ee8a5..abb95b929 100644 --- a/src/containers/Dialogs/MoneyInDialog/OwnerContribution/OwnerContributionFormFields.js +++ b/src/containers/Dialogs/MoneyInDialog/OwnerContribution/OwnerContributionFormFields.js @@ -1,5 +1,5 @@ import React from 'react'; -import { FastField, Field, ErrorMessage } from 'formik'; +import { FastField, Field, ErrorMessage, useFormikContext } from 'formik'; import { Classes, FormGroup, @@ -18,7 +18,9 @@ import { Icon, Col, Row, + If, InputPrependButton, + ExchangeRateInputGroup, } from 'components'; import { DateInput } from '@blueprintjs/datetime'; import { useAutofocus } from 'hooks'; @@ -50,7 +52,9 @@ function OwnerContributionFormFields({ transactionNextNumber, }) { // Money in dialog context. - const { accounts } = useMoneyInDailogContext(); + const { accounts, account, isForeignCurrency } = useMoneyInDailogContext(); + + const { values } = useFormikContext(); const amountFieldRef = useAutofocus(); @@ -151,7 +155,7 @@ function OwnerContributionFormFields({ {/*------------ amount -----------*/} - + {({ form: { values, setFieldValue }, field: { value }, @@ -165,7 +169,7 @@ function OwnerContributionFormFields({ className={'form-group--amount'} > - + )} - + + + {/*------------ exchange rate -----------*/} + + + @@ -195,9 +214,10 @@ function OwnerContributionFormFields({ > - form.setFieldValue('credit_account_id', id) - } + onAccountSelected={(account) => { + form.setFieldValue('credit_account_id', account.id); + form.setFieldValue('currency_code', account.currency_code); + }} filterByTypes={ACCOUNT_TYPE.EQUITY} inputProps={{ intent: inputIntent({ error, touched }), diff --git a/src/containers/Drawers/ItemDetailDrawer/WarehousesLocations/index.js b/src/containers/Drawers/ItemDetailDrawer/WarehousesLocations/index.js index b3f054073..2ac79bfb3 100644 --- a/src/containers/Drawers/ItemDetailDrawer/WarehousesLocations/index.js +++ b/src/containers/Drawers/ItemDetailDrawer/WarehousesLocations/index.js @@ -24,7 +24,6 @@ export default function WarehouseLocationsTable() { isFetching: isItemWarehousesFetching, data: itemWarehouses, } = useItemWarehouseLocation(itemId, { enabled: !!itemId }); - console.log(itemWarehouses, 'XXX'); return (