From 1fa03822f1c916312a5823244a37c348d6a7729a Mon Sep 17 00:00:00 2001 From: elforjani13 <39470382+elforjani13@users.noreply.github.com> Date: Sat, 23 Oct 2021 20:03:31 +0200 Subject: [PATCH] feat: money in . --- src/common/cashflowOptions.js | 11 ++- .../AccountTransactionsActionsBar.js | 8 +- .../MoneyInDialog/MoneyInContentFields.js | 23 +++++ .../MoneyInDialog/MoneyInDialogContent.js | 10 +- .../MoneyInDialog/MoneyInDialogForm.js | 24 ----- .../MoneyInDialog/MoneyInDialogProvider.js | 22 ++++- .../OtherIncomeForm.js => MoneyInForm.js} | 34 +++---- ...meForm.schema.js => MoneyInForm.schema.js} | 6 +- .../MoneyInDialog/MoneyInFormContent.js | 17 ++++ .../MoneyInDialog/MoneyInFormFields.js | 27 ++++++ .../OtherIncome/OtherIncomeFormContent.js | 17 ---- .../OtherIncome/OtherIncomeFormFields.js | 4 +- .../OwnerContributionForm.js | 92 ------------------ .../OwnerContributionForm.schema.js | 22 ----- .../OwnerContributionFormContent.js | 17 ---- .../OwnerContributionFormFields.js | 4 +- .../MoneyInDialog/TransactionTypeFields.js | 94 +++++++++++++++++++ .../TransferFromAccountForm.js | 92 ------------------ .../TransferFromAccountForm.schema.js | 22 ----- .../TransferFromAccountFormContent.js | 14 --- .../TransferFromAccountFormFields.js | 4 +- src/containers/Dialogs/MoneyInDialog/index.js | 10 +- .../Dialogs/MoneyOutDialog/index.js | 8 +- src/lang/en/index.json | 4 +- .../CashFlow/CashflowTransactionForm.scss | 6 ++ 25 files changed, 242 insertions(+), 350 deletions(-) create mode 100644 src/containers/Dialogs/MoneyInDialog/MoneyInContentFields.js delete mode 100644 src/containers/Dialogs/MoneyInDialog/MoneyInDialogForm.js rename src/containers/Dialogs/MoneyInDialog/{OtherIncome/OtherIncomeForm.js => MoneyInForm.js} (77%) rename src/containers/Dialogs/MoneyInDialog/{OtherIncome/OtherIncomeForm.schema.js => MoneyInForm.schema.js} (79%) create mode 100644 src/containers/Dialogs/MoneyInDialog/MoneyInFormContent.js create mode 100644 src/containers/Dialogs/MoneyInDialog/MoneyInFormFields.js delete mode 100644 src/containers/Dialogs/MoneyInDialog/OtherIncome/OtherIncomeFormContent.js delete mode 100644 src/containers/Dialogs/MoneyInDialog/OwnerContribution/OwnerContributionForm.js delete mode 100644 src/containers/Dialogs/MoneyInDialog/OwnerContribution/OwnerContributionForm.schema.js delete mode 100644 src/containers/Dialogs/MoneyInDialog/OwnerContribution/OwnerContributionFormContent.js create mode 100644 src/containers/Dialogs/MoneyInDialog/TransactionTypeFields.js delete mode 100644 src/containers/Dialogs/MoneyInDialog/TransferFromAccount/TransferFromAccountForm.js delete mode 100644 src/containers/Dialogs/MoneyInDialog/TransferFromAccount/TransferFromAccountForm.schema.js delete mode 100644 src/containers/Dialogs/MoneyInDialog/TransferFromAccount/TransferFromAccountFormContent.js diff --git a/src/common/cashflowOptions.js b/src/common/cashflowOptions.js index 6ff7401f5..480b71162 100644 --- a/src/common/cashflowOptions.js +++ b/src/common/cashflowOptions.js @@ -3,29 +3,30 @@ import intl from 'react-intl-universal'; export const addMoneyIn = [ { name: intl.get('cash_flow.option_owner_contribution'), - type: 'OWNER_CONTRIBUTION', + value: 'owner_contribution', }, { name: intl.get('cash_flow.option_other_income'), type: 'OTHER_INCOME', + value: 'other_income', }, { name: intl.get('cash_flow.option_transfer_form_account'), - type: 'TRANSFER_FROM_ACCOUNT', + value: 'transfer_from_account', }, ]; export const addMoneyOut = [ { name: intl.get('cash_flow.option_owner_drawings'), - type: 'ONWERS_DRAWING', + value: 'onwers_drawing', }, { name: intl.get('cash_flow.option_expenses'), - type: 'OTHER_EXPENSE', + value: 'other_expense', }, { name: intl.get('cash_flow.option_transfer_to_account'), - type: 'TRANSFER_TO_ACCOUNT', + value: 'transfer_to_account', }, ]; diff --git a/src/containers/CashFlow/AccountTransactions/AccountTransactionsActionsBar.js b/src/containers/CashFlow/AccountTransactions/AccountTransactionsActionsBar.js index 27fab2255..34d322fc6 100644 --- a/src/containers/CashFlow/AccountTransactions/AccountTransactionsActionsBar.js +++ b/src/containers/CashFlow/AccountTransactions/AccountTransactionsActionsBar.js @@ -40,17 +40,17 @@ function AccountTransactionsActionsBar({ const { accountId } = useAccountTransactionsContext(); // Handle money in form - const handleMoneyInFormTransaction = (value) => { + const handleMoneyInFormTransaction = (account) => { openDialog('money-in', { - account_type: value.type, + account_type: account, account_id: accountId, }); }; // Handle money out form - const handlMoneyOutFormTransaction = (value) => { + const handlMoneyOutFormTransaction = (account) => { openDialog('money-out', { - account_type: value.type, + account_type: account, account_id: accountId, }); }; diff --git a/src/containers/Dialogs/MoneyInDialog/MoneyInContentFields.js b/src/containers/Dialogs/MoneyInDialog/MoneyInContentFields.js new file mode 100644 index 000000000..838c173aa --- /dev/null +++ b/src/containers/Dialogs/MoneyInDialog/MoneyInContentFields.js @@ -0,0 +1,23 @@ +import React from 'react'; +import OwnerContributionFormFields from './OwnerContribution/OwnerContributionFormFields'; +import OtherIncomeFormFields from './OtherIncome/OtherIncomeFormFields'; +import TransferFromAccountFormFields from './TransferFromAccount/TransferFromAccountFormFields'; + +export default function MoneyInContentFields({ accountType }) { + const handleTransactionType = () => { + switch (accountType) { + case 'owner_contribution': + return ; + + case 'other_income': + return ; + + case 'transfer_from_account': + return ; + default: + break; + } + }; + + return {handleTransactionType()}; +} diff --git a/src/containers/Dialogs/MoneyInDialog/MoneyInDialogContent.js b/src/containers/Dialogs/MoneyInDialog/MoneyInDialogContent.js index 959490ded..7eee4f501 100644 --- a/src/containers/Dialogs/MoneyInDialog/MoneyInDialogContent.js +++ b/src/containers/Dialogs/MoneyInDialog/MoneyInDialogContent.js @@ -1,7 +1,7 @@ import React from 'react'; import { MoneyInDialogProvider } from './MoneyInDialogProvider'; -import MoneyInDialogForm from './MoneyInDialogForm'; +import MoneyInForm from './MoneyInForm'; /** * Money in dialog content. @@ -13,8 +13,12 @@ export default function MoneyInDialogContent({ accountType, }) { return ( - - + + ); } diff --git a/src/containers/Dialogs/MoneyInDialog/MoneyInDialogForm.js b/src/containers/Dialogs/MoneyInDialog/MoneyInDialogForm.js deleted file mode 100644 index 6ea90e77a..000000000 --- a/src/containers/Dialogs/MoneyInDialog/MoneyInDialogForm.js +++ /dev/null @@ -1,24 +0,0 @@ -import React from 'react'; -import OwnerContributionForm from './OwnerContribution/OwnerContributionForm'; -import OtherIncomeForm from './OtherIncome/OtherIncomeForm'; -import TransferFromAccountForm from './TransferFromAccount/TransferFromAccountForm'; - -export default function MoneyInDialogForm({ accountType }) { - // Handle from transaction. - const handleFromTransaction = () => { - switch (accountType) { - case 'OWNER_CONTRIBUTION': - return ; - - case 'OTHER_INCOME': - return ; - - case 'TRANSFER_FROM_ACCOUNT': - return ; - default: - break; - } - }; - - return {handleFromTransaction()}; -} diff --git a/src/containers/Dialogs/MoneyInDialog/MoneyInDialogProvider.js b/src/containers/Dialogs/MoneyInDialog/MoneyInDialogProvider.js index 0525c8edf..8d365451d 100644 --- a/src/containers/Dialogs/MoneyInDialog/MoneyInDialogProvider.js +++ b/src/containers/Dialogs/MoneyInDialog/MoneyInDialogProvider.js @@ -1,16 +1,29 @@ import React from 'react'; import { DialogContent } from 'components'; -import { useCreateCashflowTransaction, useAccounts } from 'hooks/query'; +import { + useCreateCashflowTransaction, + useAccounts, + useCashflowAccounts, +} from 'hooks/query'; const MoneyInDialogContent = React.createContext(); /** * Money in dialog provider. */ -function MoneyInDialogProvider({ accountId, dialogName, ...props }) { +function MoneyInDialogProvider({ + accountId, + accountType, + dialogName, + ...props +}) { // Fetches accounts list. const { isFetching: isAccountsLoading, data: accounts } = useAccounts(); + // Fetch cash flow list . + const { data: cashflowAccounts, isLoading: isCashFlowAccountsLoading } = + useCashflowAccounts({}, { keepPreviousData: true }); + const { mutateAsync: createCashflowTransactionMutate } = useCreateCashflowTransaction(); @@ -21,8 +34,11 @@ function MoneyInDialogProvider({ accountId, dialogName, ...props }) { const provider = { accounts, accountId, + accountType, isAccountsLoading, + cashflowAccounts, + submitPayload, dialogName, @@ -31,7 +47,7 @@ function MoneyInDialogProvider({ accountId, dialogName, ...props }) { }; return ( - + ); diff --git a/src/containers/Dialogs/MoneyInDialog/OtherIncome/OtherIncomeForm.js b/src/containers/Dialogs/MoneyInDialog/MoneyInForm.js similarity index 77% rename from src/containers/Dialogs/MoneyInDialog/OtherIncome/OtherIncomeForm.js rename to src/containers/Dialogs/MoneyInDialog/MoneyInForm.js index 3f47fc31b..dfe4ab7fe 100644 --- a/src/containers/Dialogs/MoneyInDialog/OtherIncome/OtherIncomeForm.js +++ b/src/containers/Dialogs/MoneyInDialog/MoneyInForm.js @@ -8,10 +8,11 @@ import intl from 'react-intl-universal'; import 'style/pages/CashFlow/CashflowTransactionForm.scss'; import { AppToaster } from 'components'; -import { CreateOtherIncomeFormSchema } from './OtherIncomeForm.schema'; -import OtherIncomeFormContent from './OtherIncomeFormContent'; -import { useMoneyInDailogContext } from '../MoneyInDialogProvider'; +import MoneyInFormContent from './MoneyInFormContent'; +import { CreateMoneyInFormSchema } from './MoneyInForm.schema'; + +import { useMoneyInDailogContext } from './MoneyInDialogProvider'; import withDialogActions from 'containers/Dialog/withDialogActions'; import withCurrentOrganization from 'containers/Organization/withCurrentOrganization'; @@ -22,7 +23,7 @@ const defaultInitialValues = { date: moment(new Date()).format('YYYY-MM-DD'), amount: '', transaction_number: '', - transaction_type: 'other_income', + transaction_type: '', reference_no: '', cashflow_account_id: '', credit_account_id: '', @@ -30,10 +31,7 @@ const defaultInitialValues = { published: '', }; -/** - * Other income form. - */ -function OtherIncomeForm({ +function MoneyInForm({ // #withDialogActions closeDialog, @@ -43,6 +41,7 @@ function OtherIncomeForm({ const { dialogName, accountId, + accountType, createCashflowTransactionMutate, submitPayload, } = useMoneyInDailogContext(); @@ -51,6 +50,7 @@ function OtherIncomeForm({ const initialValues = { ...defaultInitialValues, currency_code: base_currency, + transaction_type: accountType, cashflow_account_id: accountId, }; @@ -76,17 +76,19 @@ function OtherIncomeForm({ }; return ( - - - +
+ + + +
); } export default compose( withDialogActions, withCurrentOrganization(), -)(OtherIncomeForm); +)(MoneyInForm); diff --git a/src/containers/Dialogs/MoneyInDialog/OtherIncome/OtherIncomeForm.schema.js b/src/containers/Dialogs/MoneyInDialog/MoneyInForm.schema.js similarity index 79% rename from src/containers/Dialogs/MoneyInDialog/OtherIncome/OtherIncomeForm.schema.js rename to src/containers/Dialogs/MoneyInDialog/MoneyInForm.schema.js index 300f98511..63711f142 100644 --- a/src/containers/Dialogs/MoneyInDialog/OtherIncome/OtherIncomeForm.schema.js +++ b/src/containers/Dialogs/MoneyInDialog/MoneyInForm.schema.js @@ -8,9 +8,7 @@ const Schema = Yup.object().shape({ transaction_number: Yup.string(), transaction_type: Yup.string().required(), reference_no: Yup.string(), - credit_account_id: Yup.number() - .required() - .label(intl.get('other_income_account')), + credit_account_id: Yup.number().required(), cashflow_account_id: Yup.string().required(), description: Yup.string() .min(3) @@ -19,4 +17,4 @@ const Schema = Yup.object().shape({ published: Yup.boolean(), }); -export const CreateOtherIncomeFormSchema = Schema; +export const CreateMoneyInFormSchema = Schema; diff --git a/src/containers/Dialogs/MoneyInDialog/MoneyInFormContent.js b/src/containers/Dialogs/MoneyInDialog/MoneyInFormContent.js new file mode 100644 index 000000000..c3e01b84e --- /dev/null +++ b/src/containers/Dialogs/MoneyInDialog/MoneyInFormContent.js @@ -0,0 +1,17 @@ +import React from 'react'; +import { Form } from 'formik'; + +import MoneyInFormFields from './MoneyInFormFields'; +import MoneyInFloatingActions from './MoneyInFloatingActions'; + +/** + * Money In form content. + */ +export default function MoneyInFormContent() { + return ( +
+ + + + ); +} diff --git a/src/containers/Dialogs/MoneyInDialog/MoneyInFormFields.js b/src/containers/Dialogs/MoneyInDialog/MoneyInFormFields.js new file mode 100644 index 000000000..1900e2479 --- /dev/null +++ b/src/containers/Dialogs/MoneyInDialog/MoneyInFormFields.js @@ -0,0 +1,27 @@ +import React from 'react'; +import { Classes } from '@blueprintjs/core'; + +import { If } from 'components'; + +import MoneyInContentFields from './MoneyInContentFields'; +import TransactionTypeFields from './TransactionTypeFields'; +import { useMoneyInDailogContext } from './MoneyInDialogProvider'; + +/** + * Money in form fields. + */ +function MoneyInFormFields() { + // Money in dialog context. + const { accountId, accountType } = useMoneyInDailogContext(); + + return ( +
+ + + + +
+ ); +} + +export default MoneyInFormFields; diff --git a/src/containers/Dialogs/MoneyInDialog/OtherIncome/OtherIncomeFormContent.js b/src/containers/Dialogs/MoneyInDialog/OtherIncome/OtherIncomeFormContent.js deleted file mode 100644 index e05f48788..000000000 --- a/src/containers/Dialogs/MoneyInDialog/OtherIncome/OtherIncomeFormContent.js +++ /dev/null @@ -1,17 +0,0 @@ -import React from 'react'; -import { Form } from 'formik'; - -import OtherIncomeFormFields from './OtherIncomeFormFields'; -import MoneyInFloatingActions from '../MoneyInFloatingActions'; - -/** - * Other income form content. - */ -export default function OtherIncomeFormContent() { - return ( -
- - - - ); -} diff --git a/src/containers/Dialogs/MoneyInDialog/OtherIncome/OtherIncomeFormFields.js b/src/containers/Dialogs/MoneyInDialog/OtherIncome/OtherIncomeFormFields.js index 0a2544b96..f0e10f72a 100644 --- a/src/containers/Dialogs/MoneyInDialog/OtherIncome/OtherIncomeFormFields.js +++ b/src/containers/Dialogs/MoneyInDialog/OtherIncome/OtherIncomeFormFields.js @@ -41,7 +41,7 @@ function OtherIncomeFormFields() { const amountFieldRef = useAutofocus(); return ( -
+ {/*------------ Date -----------*/} @@ -187,7 +187,7 @@ function OtherIncomeFormFields() { )} -
+ ); } diff --git a/src/containers/Dialogs/MoneyInDialog/OwnerContribution/OwnerContributionForm.js b/src/containers/Dialogs/MoneyInDialog/OwnerContribution/OwnerContributionForm.js deleted file mode 100644 index e7ff7bfaf..000000000 --- a/src/containers/Dialogs/MoneyInDialog/OwnerContribution/OwnerContributionForm.js +++ /dev/null @@ -1,92 +0,0 @@ -import React from 'react'; -import moment from 'moment'; -import { Intent } from '@blueprintjs/core'; -import { Formik } from 'formik'; -import { omit } from 'lodash'; -import intl from 'react-intl-universal'; - -import 'style/pages/CashFlow/CashflowTransactionForm.scss'; - -import { AppToaster } from 'components'; -import { CreateOwnerContributionFormSchema } from './OwnerContributionForm.schema'; -import OwnerContributionFormContent from './OwnerContributionFormContent'; - -import { useMoneyInDailogContext } from '../MoneyInDialogProvider'; - -import withDialogActions from 'containers/Dialog/withDialogActions'; -import withCurrentOrganization from 'containers/Organization/withCurrentOrganization'; - -import { compose } from 'utils'; - -const defaultInitialValues = { - date: moment(new Date()).format('YYYY-MM-DD'), - amount: '', - transaction_number: '', - transaction_type: 'owner_contribution', - reference_no: '', - cashflow_account_id: '', - credit_account_id: '', - description: '', - published: '', -}; - -/** - * Owner contribution form - */ -function OwnerContributionForm({ - // #withDialogActions - closeDialog, - - // #withCurrentOrganization - organization: { base_currency }, -}) { - const { - dialogName, - accountId, - submitPayload, - createCashflowTransactionMutate, - } = useMoneyInDailogContext(); - - // Initial form values. - const initialValues = { - ...defaultInitialValues, - currency_code: base_currency, - cashflow_account_id: accountId, - }; - - // Handles the form submit. - const handleFormSubmit = (values, { setSubmitting, setErrors }) => { - const form = { - ...omit(values, ['currency_code']), - published: submitPayload.publish, - }; - setSubmitting(true); - createCashflowTransactionMutate(form) - .then(() => { - closeDialog(dialogName); - - AppToaster.show({ - message: intl.get('cash_flow_transaction_success_message'), - intent: Intent.SUCCESS, - }); - }) - .finally(() => { - setSubmitting(true); - }); - }; - - return ( - - - - ); -} - -export default compose( - withDialogActions, - withCurrentOrganization(), -)(OwnerContributionForm); diff --git a/src/containers/Dialogs/MoneyInDialog/OwnerContribution/OwnerContributionForm.schema.js b/src/containers/Dialogs/MoneyInDialog/OwnerContribution/OwnerContributionForm.schema.js deleted file mode 100644 index b877c0e26..000000000 --- a/src/containers/Dialogs/MoneyInDialog/OwnerContribution/OwnerContributionForm.schema.js +++ /dev/null @@ -1,22 +0,0 @@ -import * as Yup from 'yup'; -import intl from 'react-intl-universal'; -import { DATATYPES_LENGTH } from 'common/dataTypes'; - -const Schema = Yup.object().shape({ - date: Yup.date().required().label(intl.get('date')), - amount: Yup.number().required().label(intl.get('amount')), - transaction_number: Yup.string(), - transaction_type: Yup.string().required(), - reference_no: Yup.string(), - credit_account_id: Yup.number() - .required() - .label(intl.get('cash_flow_transaction.label_equity_account')), - cashflow_account_id: Yup.string().required(), - description: Yup.string() - .min(3) - .max(DATATYPES_LENGTH.TEXT) - .label(intl.get('description')), - published: Yup.boolean(), -}); - -export const CreateOwnerContributionFormSchema = Schema; diff --git a/src/containers/Dialogs/MoneyInDialog/OwnerContribution/OwnerContributionFormContent.js b/src/containers/Dialogs/MoneyInDialog/OwnerContribution/OwnerContributionFormContent.js deleted file mode 100644 index 27932fc3b..000000000 --- a/src/containers/Dialogs/MoneyInDialog/OwnerContribution/OwnerContributionFormContent.js +++ /dev/null @@ -1,17 +0,0 @@ -import React from 'react'; -import { Form } from 'formik'; - -import OwnerContributionFormFields from './OwnerContributionFormFields'; -import MoneyInFloatingActions from '../MoneyInFloatingActions'; - -/** - * Owner contribution form content. - */ -export default function OwnerContributionFormContent() { - return ( -
- - - - ); -} diff --git a/src/containers/Dialogs/MoneyInDialog/OwnerContribution/OwnerContributionFormFields.js b/src/containers/Dialogs/MoneyInDialog/OwnerContribution/OwnerContributionFormFields.js index 6bcea0830..203e5387f 100644 --- a/src/containers/Dialogs/MoneyInDialog/OwnerContribution/OwnerContributionFormFields.js +++ b/src/containers/Dialogs/MoneyInDialog/OwnerContribution/OwnerContributionFormFields.js @@ -39,7 +39,7 @@ function OwnerContributionFormFields() { const amountFieldRef = useAutofocus(); return ( -
+ {/*------------ Date -----------*/} @@ -183,7 +183,7 @@ function OwnerContributionFormFields() { )} -
+ ); } diff --git a/src/containers/Dialogs/MoneyInDialog/TransactionTypeFields.js b/src/containers/Dialogs/MoneyInDialog/TransactionTypeFields.js new file mode 100644 index 000000000..1a62527b3 --- /dev/null +++ b/src/containers/Dialogs/MoneyInDialog/TransactionTypeFields.js @@ -0,0 +1,94 @@ +import React from 'react'; +import { FastField, ErrorMessage } from 'formik'; +import { Classes, FormGroup } from '@blueprintjs/core'; +import classNames from 'classnames'; +import { + FormattedMessage as T, + AccountsSuggestField, + FieldRequiredHint, + ListSelect, + Col, + Row, +} from 'components'; + +import { inputIntent } from 'utils'; +import { CLASSES } from 'common/classes'; +import { addMoneyIn } from '../../../common/cashflowOptions'; + +import { useMoneyInDailogContext } from './MoneyInDialogProvider'; + +/** + * Transaction type fields. + */ +export default function TransactionTypeFields() { + // Money in dialog context. + const { cashflowAccounts } = useMoneyInDailogContext(); + + return ( +
+ + + {/*------------ Current account -----------*/} + + {({ form, field: { value }, meta: { error, touched } }) => ( + } + intent={inputIntent({ error, touched })} + helperText={} + minimal={true} + className={classNames( + CLASSES.FILL, + 'form-group--cashflow_account_id', + )} + > + + form.setFieldValue('cashflow_account_id', id) + } + inputProps={{ + intent: inputIntent({ error, touched }), + }} + /> + + )} + + {/*------------ Transaction type -----------*/} + + + + {({ + form: { values, setFieldValue }, + field: { value }, + meta: { error, touched }, + }) => ( + } + labelInfo={} + helperText={} + intent={inputIntent({ error, touched })} + className={classNames( + CLASSES.FILL, + 'form-group--transaction_type', + )} + > + { + setFieldValue('transaction_type', type.value); + }} + filterable={false} + selectedItem={value} + selectedItemProp={'value'} + textProp={'name'} + popoverProps={{ minimal: true }} + /> + + )} + + + +
+ ); +} diff --git a/src/containers/Dialogs/MoneyInDialog/TransferFromAccount/TransferFromAccountForm.js b/src/containers/Dialogs/MoneyInDialog/TransferFromAccount/TransferFromAccountForm.js deleted file mode 100644 index 17636469a..000000000 --- a/src/containers/Dialogs/MoneyInDialog/TransferFromAccount/TransferFromAccountForm.js +++ /dev/null @@ -1,92 +0,0 @@ -import React from 'react'; -import moment from 'moment'; -import { Intent } from '@blueprintjs/core'; -import { Formik } from 'formik'; -import { omit } from 'lodash'; -import intl from 'react-intl-universal'; - -import 'style/pages/CashFlow/CashflowTransactionForm.scss'; - -import { AppToaster } from 'components'; -import { CreateTransferFromAccountFormSchema } from './TransferFromAccountForm.schema'; -import TransferFromAccountFormContent from './TransferFromAccountFormContent'; - -import { useMoneyInDailogContext } from '../MoneyInDialogProvider'; - -import withDialogActions from 'containers/Dialog/withDialogActions'; -import withCurrentOrganization from 'containers/Organization/withCurrentOrganization'; - -import { compose } from 'utils'; - -const defaultInitialValues = { - date: moment(new Date()).format('YYYY-MM-DD'), - amount: '', - transaction_number: '', - transaction_type: 'transfer_from_account', - reference_no: '', - cashflow_account_id: '', - credit_account_id: '', - description: '', - published: '', -}; - -/** - * Transfer from account form. - */ -function TransferFromAccountForm({ - // #withDialogActions - closeDialog, - - // #withCurrentOrganization - organization: { base_currency }, -}) { - const { - dialogName, - accountId, - createCashflowTransactionMutate, - submitPayload, - } = useMoneyInDailogContext(); - - // Initial form values. - const initialValues = { - ...defaultInitialValues, - currency_code: base_currency, - cashflow_account_id: accountId, - }; - - // Handles the form submit. - const handleFormSubmit = (values, { setSubmitting, setErrors }) => { - const form = { - ...omit(values, ['currency_code']), - published: submitPayload.publish, - }; - setSubmitting(true); - createCashflowTransactionMutate(form) - .then(() => { - closeDialog(dialogName); - - AppToaster.show({ - message: intl.get('cash_flow_transaction_success_message'), - intent: Intent.SUCCESS, - }); - }) - .finally(() => { - setSubmitting(true); - }); - }; - - return ( - - - - ); -} - -export default compose( - withDialogActions, - withCurrentOrganization(), -)(TransferFromAccountForm); diff --git a/src/containers/Dialogs/MoneyInDialog/TransferFromAccount/TransferFromAccountForm.schema.js b/src/containers/Dialogs/MoneyInDialog/TransferFromAccount/TransferFromAccountForm.schema.js deleted file mode 100644 index 3e1786695..000000000 --- a/src/containers/Dialogs/MoneyInDialog/TransferFromAccount/TransferFromAccountForm.schema.js +++ /dev/null @@ -1,22 +0,0 @@ -import * as Yup from 'yup'; -import intl from 'react-intl-universal'; -import { DATATYPES_LENGTH } from 'common/dataTypes'; - -const Schema = Yup.object().shape({ - date: Yup.date().required().label(intl.get('date')), - amount: Yup.number().required().label(intl.get('amount')), - transaction_number: Yup.string(), - transaction_type: Yup.string().required(), - reference_no: Yup.string(), - credit_account_id: Yup.number() - .required() - .label(intl.get('cash_flow_transaction.label_transfer_account')), - cashflow_account_id: Yup.string().required(), - description: Yup.string() - .min(3) - .max(DATATYPES_LENGTH.TEXT) - .label(intl.get('description')), - published: Yup.boolean(), -}); - -export const CreateTransferFromAccountFormSchema = Schema; diff --git a/src/containers/Dialogs/MoneyInDialog/TransferFromAccount/TransferFromAccountFormContent.js b/src/containers/Dialogs/MoneyInDialog/TransferFromAccount/TransferFromAccountFormContent.js deleted file mode 100644 index 073a893e2..000000000 --- a/src/containers/Dialogs/MoneyInDialog/TransferFromAccount/TransferFromAccountFormContent.js +++ /dev/null @@ -1,14 +0,0 @@ -import React from 'react'; -import { Form } from 'formik'; - -import TransferFromAccountFormFields from './TransferFromAccountFormFields'; -import MoneyInFloatingActions from '../MoneyInFloatingActions'; - -export default function TransferFromAccountFormContent() { - return ( -
- - - - ); -} diff --git a/src/containers/Dialogs/MoneyInDialog/TransferFromAccount/TransferFromAccountFormFields.js b/src/containers/Dialogs/MoneyInDialog/TransferFromAccount/TransferFromAccountFormFields.js index 118f71e0c..7925e3c48 100644 --- a/src/containers/Dialogs/MoneyInDialog/TransferFromAccount/TransferFromAccountFormFields.js +++ b/src/containers/Dialogs/MoneyInDialog/TransferFromAccount/TransferFromAccountFormFields.js @@ -41,7 +41,7 @@ function TransferFromAccountFormFields() { const amountFieldRef = useAutofocus(); return ( -
+ {/*------------ Date -----------*/} @@ -190,7 +190,7 @@ function TransferFromAccountFormFields() { )} -
+ ); } diff --git a/src/containers/Dialogs/MoneyInDialog/index.js b/src/containers/Dialogs/MoneyInDialog/index.js index a751b3934..28e2b8412 100644 --- a/src/containers/Dialogs/MoneyInDialog/index.js +++ b/src/containers/Dialogs/MoneyInDialog/index.js @@ -1,5 +1,5 @@ import React from 'react'; -import { FormattedMessage as T } from 'components'; +import intl from 'react-intl-universal'; import { Dialog, DialogSuspense } from 'components'; import withDialogRedux from 'components/DialogReduxConnect'; import { compose } from 'redux'; @@ -11,13 +11,15 @@ const MoneyInDialogContent = React.lazy(() => import('./MoneyInDialogContent')); */ function MoneyInDialog({ dialogName, - payload = { action: '', account_type: null, account_id: null }, + payload = { account_type: '', account_id: null }, isOpen, }) { return ( } + title={intl.get('cash_flow_transaction.money_in', { + value: payload.account_type?.name, + })} isOpen={isOpen} canEscapeJeyClose={true} autoFocus={true} @@ -27,7 +29,7 @@ function MoneyInDialog({ diff --git a/src/containers/Dialogs/MoneyOutDialog/index.js b/src/containers/Dialogs/MoneyOutDialog/index.js index d7fd6e5d0..abc346c36 100644 --- a/src/containers/Dialogs/MoneyOutDialog/index.js +++ b/src/containers/Dialogs/MoneyOutDialog/index.js @@ -1,5 +1,5 @@ import React from 'react'; -import { FormattedMessage as T } from 'components'; +import intl from 'react-intl-universal'; import { Dialog, DialogSuspense } from 'components'; import withDialogRedux from 'components/DialogReduxConnect'; import { compose } from 'redux'; @@ -13,13 +13,15 @@ const MoneyOutDialogContent = React.lazy(() => */ function MoneyOutDialog({ dialogName, - payload = { action: '', account_type: null, account_id: null }, + payload = { account_type: null, account_id: null }, isOpen, }) { return ( } + title={intl.get('cash_flow_transaction.money_out', { + value: payload.account_type, + })} isOpen={isOpen} canEscapeJeyClose={true} autoFocus={true} diff --git a/src/lang/en/index.json b/src/lang/en/index.json index f2333197a..2fd1e385a 100644 --- a/src/lang/en/index.json +++ b/src/lang/en/index.json @@ -1382,8 +1382,8 @@ "cash_flow_transaction.label_equity_account":"Equity account", "cash_flow_transaction.label_expense_account":"Expense account", "cash_flow_transaction_success_message":" The cashflow transaction has been created successfully.", - "cash_flow_transaction.money_in":"Money In", - "cash_flow_transaction.money_out":"Money Out", + "cash_flow_transaction.money_in":"Money In {value}", + "cash_flow_transaction.money_out":"Money Out {value}", "cash_flow_transaction.other_income_account":"Other income account", "cash_flow_transaction.other_expense_account":"Other expense account", "save_and_publish": "Save & Publish", diff --git a/src/style/pages/CashFlow/CashflowTransactionForm.scss b/src/style/pages/CashFlow/CashflowTransactionForm.scss index 81c9c1671..db852724d 100644 --- a/src/style/pages/CashFlow/CashflowTransactionForm.scss +++ b/src/style/pages/CashFlow/CashflowTransactionForm.scss @@ -25,6 +25,12 @@ } } + .trasnaction-type-fileds { + margin-bottom: 18px; + padding: 16px 0px 12px 0px; + border-bottom: 2px solid #e9e9e9; + } + .bp3-dialog-footer { padding-top: 10px; }