diff --git a/src/components/ExchangeRate/ExchangeRateMutedField.js b/src/components/ExchangeRate/ExchangeRateMutedField.js index 720f082c4..498927ee3 100644 --- a/src/components/ExchangeRate/ExchangeRateMutedField.js +++ b/src/components/ExchangeRate/ExchangeRateMutedField.js @@ -1,5 +1,4 @@ import React from 'react'; -import moment from 'moment'; import styled from 'styled-components'; import intl from 'react-intl-universal'; import { @@ -8,42 +7,32 @@ import { PopoverInteractionKind, FormGroup, Position, - Menu, Classes, } from '@blueprintjs/core'; -import { - If, - ExchangeRateInputGroup, - Icon, - FormattedMessage as T, -} from 'components'; -import { isEqual, isUndefined } from 'lodash'; +import { ExchangeRateInputGroup, Icon } from 'components'; export function ExchangeRateMutedField({ name, toCurrency, fromCurrency, + date, exchangeRate, - ...ExchangeRateprops + exchangeRateFieldProps, + popoverProps, }) { - if (isEqual(toCurrency, fromCurrency) && !isUndefined(toCurrency)) { - return null; - } const content = ( ); return ( - + } diff --git a/src/containers/Dialogs/MoneyInDialog/OtherIncome/OtherIncomeFormFields.js b/src/containers/Dialogs/MoneyInDialog/OtherIncome/OtherIncomeFormFields.js index bdb970378..9a3c5a43d 100644 --- a/src/containers/Dialogs/MoneyInDialog/OtherIncome/OtherIncomeFormFields.js +++ b/src/containers/Dialogs/MoneyInDialog/OtherIncome/OtherIncomeFormFields.js @@ -19,6 +19,7 @@ import { Icon, Col, Row, + If, FeatureCan, BranchSelect, BranchSelectButton, @@ -42,6 +43,7 @@ import { useMoneyInDailogContext } from '../MoneyInDialogProvider'; import { useObserveTransactionNoSettings, useSetPrimaryBranchToForm, + useForeignAccount, BranchRowDivider, } from '../utils'; import withSettings from 'containers/Settings/withSettings'; @@ -66,6 +68,8 @@ function OtherIncomeFormFields({ const amountFieldRef = useAutofocus(); + const isForeigAccount = useForeignAccount(); + // Handle tranaction number changing. const handleTransactionNumberChange = () => { openDialog('transaction-number-form'); @@ -112,7 +116,7 @@ function OtherIncomeFormFields({ - + @@ -199,7 +203,7 @@ function OtherIncomeFormFields({ className={'form-group--amount'} > - + - {/*------------ exchange rate -----------*/} - + + {/*------------ exchange rate -----------*/} + + {/*------------ other income account -----------*/} diff --git a/src/containers/Dialogs/MoneyInDialog/OwnerContribution/OwnerContributionFormFields.js b/src/containers/Dialogs/MoneyInDialog/OwnerContribution/OwnerContributionFormFields.js index 85492f150..8ec7865d5 100644 --- a/src/containers/Dialogs/MoneyInDialog/OwnerContribution/OwnerContributionFormFields.js +++ b/src/containers/Dialogs/MoneyInDialog/OwnerContribution/OwnerContributionFormFields.js @@ -19,6 +19,7 @@ import { Icon, Col, Row, + If, InputPrependButton, ExchangeRateMutedField, BranchSelect, @@ -41,6 +42,7 @@ import { useMoneyInDailogContext } from '../MoneyInDialogProvider'; import { useObserveTransactionNoSettings, useSetPrimaryBranchToForm, + useForeignAccount, BranchRowDivider, } from '../utils'; import withSettings from 'containers/Settings/withSettings'; @@ -66,6 +68,8 @@ function OwnerContributionFormFields({ const amountFieldRef = useAutofocus(); + const isForeigAccount = useForeignAccount(); + // Handle tranaction number changing. const handleTransactionNumberChange = () => { openDialog('transaction-number-form'); @@ -213,16 +217,17 @@ function OwnerContributionFormFields({ )} - - {/*------------ exchange rate -----------*/} - - + + {/*------------ exchange rate -----------*/} + + {/*------------ equity account -----------*/} diff --git a/src/containers/Dialogs/MoneyInDialog/TransferFromAccount/TransferFromAccountFormFields.js b/src/containers/Dialogs/MoneyInDialog/TransferFromAccount/TransferFromAccountFormFields.js index 59437b75f..4db27546a 100644 --- a/src/containers/Dialogs/MoneyInDialog/TransferFromAccount/TransferFromAccountFormFields.js +++ b/src/containers/Dialogs/MoneyInDialog/TransferFromAccount/TransferFromAccountFormFields.js @@ -18,6 +18,7 @@ import { Icon, Col, Row, + If, InputPrependButton, ExchangeRateMutedField, FeatureCan, @@ -41,6 +42,7 @@ import { useMoneyInDailogContext } from '../MoneyInDialogProvider'; import { useObserveTransactionNoSettings, useSetPrimaryBranchToForm, + useForeignAccount, BranchRowDivider, } from '../utils'; import withSettings from 'containers/Settings/withSettings'; @@ -61,6 +63,7 @@ function TransferFromAccountFormFields({ // Money in dialog context. const { accounts, account, branches } = useMoneyInDailogContext(); + const isForeigAccount = useForeignAccount(); const amountFieldRef = useAutofocus(); const { values } = useFormikContext(); @@ -196,7 +199,7 @@ function TransferFromAccountFormFields({ className={'form-group--amount'} > - + )} - - {/*------------ exchange rate -----------*/} - - + + {/*------------ exchange rate -----------*/} + + {/*------------ transfer from account -----------*/} diff --git a/src/containers/Dialogs/MoneyInDialog/utils.js b/src/containers/Dialogs/MoneyInDialog/utils.js index 3898928a0..d9cb0e12f 100644 --- a/src/containers/Dialogs/MoneyInDialog/utils.js +++ b/src/containers/Dialogs/MoneyInDialog/utils.js @@ -2,7 +2,7 @@ import React from 'react'; import styled from 'styled-components'; import { useFormikContext } from 'formik'; import { transactionNumber } from 'utils'; -import { sumBy, setWith, toSafeInteger, get, first } from 'lodash'; +import { isEqual, isUndefined, isNull, first } from 'lodash'; import { useMoneyInDailogContext } from './MoneyInDialogProvider'; @@ -30,6 +30,16 @@ export const useSetPrimaryBranchToForm = () => { }, [isBranchesSuccess, setFieldValue, branches]); }; +export const useForeignAccount = () => { + const { values } = useFormikContext(); + const { account } = useMoneyInDailogContext(); + + return ( + !isEqual(account.currency_code, values.currency_code) && + !isNull(account.currency_code) + ); +}; + export const BranchRowDivider = styled.div` height: 1px; background: #ebf1f6; diff --git a/src/containers/Dialogs/MoneyOutDialog/OtherExpense/OtherExpnseFormFields.js b/src/containers/Dialogs/MoneyOutDialog/OtherExpense/OtherExpnseFormFields.js index 7e0d443c7..625a51b05 100644 --- a/src/containers/Dialogs/MoneyOutDialog/OtherExpense/OtherExpnseFormFields.js +++ b/src/containers/Dialogs/MoneyOutDialog/OtherExpense/OtherExpnseFormFields.js @@ -18,6 +18,7 @@ import { Icon, Col, Row, + If, InputPrependButton, FeatureCan, BranchSelect, @@ -41,6 +42,7 @@ import { useMoneyOutDialogContext } from '../MoneyOutDialogProvider'; import { useObserveTransactionNoSettings, useSetPrimaryBranchToForm, + useForeignAccount, BranchRowDivider, } from '../utils'; import withSettings from 'containers/Settings/withSettings'; @@ -61,6 +63,7 @@ function OtherExpnseFormFields({ // Money in dialog context. const { accounts, account, branches } = useMoneyOutDialogContext(); + const isForeigAccount = useForeignAccount(); const { values } = useFormikContext(); const amountFieldRef = useAutofocus(); @@ -197,7 +200,7 @@ function OtherExpnseFormFields({ className={'form-group--amount'} > - + )} - - {/*------------ exchange rate -----------*/} - - + + {/*------------ exchange rate -----------*/} + + {/*------------ other expense account -----------*/} diff --git a/src/containers/Dialogs/MoneyOutDialog/OwnerDrawings/OwnerDrawingsFormFields.js b/src/containers/Dialogs/MoneyOutDialog/OwnerDrawings/OwnerDrawingsFormFields.js index cde64d3b6..940a3db71 100644 --- a/src/containers/Dialogs/MoneyOutDialog/OwnerDrawings/OwnerDrawingsFormFields.js +++ b/src/containers/Dialogs/MoneyOutDialog/OwnerDrawings/OwnerDrawingsFormFields.js @@ -17,6 +17,7 @@ import { FieldRequiredHint, InputPrependButton, Icon, + If, Col, Row, FeatureCan, @@ -40,6 +41,7 @@ import { useMoneyOutDialogContext } from '../MoneyOutDialogProvider'; import { useObserveTransactionNoSettings, useSetPrimaryBranchToForm, + useForeignAccount, BranchRowDivider, } from '../utils'; import withSettings from 'containers/Settings/withSettings'; @@ -60,6 +62,7 @@ function OwnerDrawingsFormFields({ // Money out dialog context. const { accounts, account, branches } = useMoneyOutDialogContext(); const { values } = useFormikContext(); + const isForeigAccount = useForeignAccount(); const amountFieldRef = useAutofocus(); @@ -195,7 +198,7 @@ function OwnerDrawingsFormFields({ className={'form-group--amount'} > - + - {/*------------ exchange rate -----------*/} - + + {/*------------ exchange rate -----------*/} + + {/*------------ equitty account -----------*/} diff --git a/src/containers/Dialogs/MoneyOutDialog/TransferToAccount/TransferToAccountFormFields.js b/src/containers/Dialogs/MoneyOutDialog/TransferToAccount/TransferToAccountFormFields.js index b1652b8c4..ed2dbc806 100644 --- a/src/containers/Dialogs/MoneyOutDialog/TransferToAccount/TransferToAccountFormFields.js +++ b/src/containers/Dialogs/MoneyOutDialog/TransferToAccount/TransferToAccountFormFields.js @@ -18,6 +18,7 @@ import { Icon, Col, Row, + If, InputPrependButton, FeatureCan, BranchSelect, @@ -41,6 +42,7 @@ import { useMoneyOutDialogContext } from '../MoneyOutDialogProvider'; import { useObserveTransactionNoSettings, useSetPrimaryBranchToForm, + useForeignAccount, BranchRowDivider, } from '../utils'; import withSettings from 'containers/Settings/withSettings'; @@ -61,6 +63,7 @@ function TransferToAccountFormFields({ // Money in dialog context. const { accounts, account, branches } = useMoneyOutDialogContext(); const { values } = useFormikContext(); + const isForeigAccount = useForeignAccount(); const accountRef = useAutofocus(); @@ -196,7 +199,7 @@ function TransferToAccountFormFields({ className={'form-group--amount'} > - + )} - - {/*------------ exchange rate -----------*/} - - + + {/*------------ exchange rate -----------*/} + + {/*------------ transfer from account -----------*/} diff --git a/src/containers/Dialogs/MoneyOutDialog/utils.js b/src/containers/Dialogs/MoneyOutDialog/utils.js index a9724f60c..68f13f243 100644 --- a/src/containers/Dialogs/MoneyOutDialog/utils.js +++ b/src/containers/Dialogs/MoneyOutDialog/utils.js @@ -2,7 +2,7 @@ import React from 'react'; import styled from 'styled-components'; import { useFormikContext } from 'formik'; import { transactionNumber } from 'utils'; -import { first } from 'lodash'; +import { first, isEqual, isNull } from 'lodash'; import { useMoneyOutDialogContext } from './MoneyOutDialogProvider'; @@ -29,6 +29,16 @@ export const useSetPrimaryBranchToForm = () => { } }, [isBranchesSuccess, setFieldValue, branches]); }; + +export const useForeignAccount = () => { + const { values } = useFormikContext(); + const { account } = useMoneyOutDialogContext(); + + return ( + !isEqual(account.currency_code, values.currency_code) && + !isNull(account.currency_code) + ); +}; export const BranchRowDivider = styled.div` height: 1px; background: #ebf1f6; diff --git a/src/containers/Dialogs/QuickPaymentReceiveFormDialog/QuickPaymentReceive.schema.js b/src/containers/Dialogs/QuickPaymentReceiveFormDialog/QuickPaymentReceive.schema.js index feb33d6a9..894446a68 100644 --- a/src/containers/Dialogs/QuickPaymentReceiveFormDialog/QuickPaymentReceive.schema.js +++ b/src/containers/Dialogs/QuickPaymentReceiveFormDialog/QuickPaymentReceive.schema.js @@ -3,22 +3,20 @@ import intl from 'react-intl-universal'; import { DATATYPES_LENGTH } from 'common/dataTypes'; const Schema = Yup.object().shape({ - customer_id: Yup.string() - .label(intl.get('customer_name_')) - .required(), + customer_id: Yup.string().label(intl.get('customer_name_')).required(), payment_receive_no: Yup.string() .required() .nullable() .max(DATATYPES_LENGTH.STRING) .label(intl.get('payment_receive_no_')), - payment_date: Yup.date() - .required() - .label(intl.get('payment_date_')), + payment_date: Yup.date().required().label(intl.get('payment_date_')), deposit_account_id: Yup.number() .required() .label(intl.get('deposit_account_')), reference_no: Yup.string().min(1).max(DATATYPES_LENGTH.STRING).nullable(), // statement: Yup.string().nullable().max(DATATYPES_LENGTH.TEXT), + branch_id: Yup.string(), + exchange_rate: Yup.number(), entries: Yup.array().of( Yup.object().shape({ payment_amount: Yup.number().nullable(), diff --git a/src/containers/Dialogs/QuickPaymentReceiveFormDialog/QuickPaymentReceiveFormDialogContent.js b/src/containers/Dialogs/QuickPaymentReceiveFormDialog/QuickPaymentReceiveFormDialogContent.js index 94bfc506f..48eb34183 100644 --- a/src/containers/Dialogs/QuickPaymentReceiveFormDialog/QuickPaymentReceiveFormDialogContent.js +++ b/src/containers/Dialogs/QuickPaymentReceiveFormDialog/QuickPaymentReceiveFormDialogContent.js @@ -2,23 +2,32 @@ import React from 'react'; import 'style/pages/PaymentReceive/QuickPaymentReceiveDialog.scss'; -import { QuickPaymentReceiveFormProvider } from './QuickPaymentReceiveFormProvider'; import QuickPaymentReceiveForm from './QuickPaymentReceiveForm'; +import { QuickPaymentReceiveFormProvider } from './QuickPaymentReceiveFormProvider'; + +import withCurrentOrganization from 'containers/Organization/withCurrentOrganization'; +import { compose } from 'utils'; /** * Quick payment receive form dialog content. */ -export default function QuickPaymentReceiveFormDialogContent({ +function QuickPaymentReceiveFormDialogContent({ // #ownProps dialogName, invoice, + // #withCurrentOrganization + organization: { base_currency }, }) { return ( ); } +export default compose(withCurrentOrganization())( + QuickPaymentReceiveFormDialogContent, +);