+
);
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;
}