diff --git a/src/containers/Dialogs/QuickPaymentReceiveFormDialog/QuickPaymentReceiveForm.js b/src/containers/Dialogs/QuickPaymentReceiveFormDialog/QuickPaymentReceiveForm.js index 1b2a68b49..5b5e7637a 100644 --- a/src/containers/Dialogs/QuickPaymentReceiveFormDialog/QuickPaymentReceiveForm.js +++ b/src/containers/Dialogs/QuickPaymentReceiveFormDialog/QuickPaymentReceiveForm.js @@ -106,6 +106,6 @@ export default compose( paymentReceiveNextNumber: paymentReceiveSettings?.nextNumber, paymentReceiveNumberPrefix: paymentReceiveSettings?.numberPrefix, paymentReceiveAutoIncrement: paymentReceiveSettings?.autoIncrement, - preferredDepositAccount: paymentReceiveSettings?.depositAccount, + preferredDepositAccount: paymentReceiveSettings?.preferredDepositAccount, })), )(QuickPaymentReceiveForm); diff --git a/src/containers/Drawers/ItemDetailDrawer/ItemPaymentTransactions/index.js b/src/containers/Drawers/ItemDetailDrawer/ItemPaymentTransactions/index.js index f51ba4b56..005ce298d 100644 --- a/src/containers/Drawers/ItemDetailDrawer/ItemPaymentTransactions/index.js +++ b/src/containers/Drawers/ItemDetailDrawer/ItemPaymentTransactions/index.js @@ -1,30 +1,22 @@ import React from 'react'; -import styled from 'styled-components'; -import { Card, FormattedMessage as T } from 'components'; +import { Card } from 'components'; import { ItemManuTransaction } from './utils'; import { useItemDetailDrawerContext } from '../ItemDetailDrawerProvider'; import ItemPaymentTransactionContent from './ItemPaymentTransactionContent'; export const ItemPaymentTransactions = () => { - const { value } = useItemDetailDrawerContext(); + const { value, setValue } = useItemDetailDrawerContext(); + + // handle item change. + const handleItemChange = (item) => { + setValue(item); + }; return ( - - - - + ); }; -const ItemManuTransactions = styled.div` - display: flex; - align-items: center; - color: #727983; - .bp3-button { - padding-left: 6px; - font-weight: 500; - } -`; diff --git a/src/containers/Drawers/ItemDetailDrawer/ItemPaymentTransactions/utils.js b/src/containers/Drawers/ItemDetailDrawer/ItemPaymentTransactions/utils.js index 9e93ea4b2..a8efc015f 100644 --- a/src/containers/Drawers/ItemDetailDrawer/ItemPaymentTransactions/utils.js +++ b/src/containers/Drawers/ItemDetailDrawer/ItemPaymentTransactions/utils.js @@ -7,19 +7,20 @@ import { PopoverInteractionKind, Position, } from '@blueprintjs/core'; +import styled from 'styled-components'; import { FormattedMessage as T } from 'components'; import { useItemDetailDrawerContext } from '../ItemDetailDrawerProvider'; import transactions from '../../../../common/itemPaymentTranactionsOption'; -export const ItemManuTransaction = () => { +export const ItemManuTransaction = ({ onChange }) => { const { value, setValue } = useItemDetailDrawerContext(); - // const handleClickItem = (item) => { - // onChange && onChange(item); - // }; + const handleClickItem = (item) => { + onChange && onChange(item); + }; const content = transactions.map(({ name, label }) => ( - setValue(name)} text={label} /> + handleClickItem(name)} text={label} /> )); return ( @@ -32,7 +33,28 @@ export const ItemManuTransaction = () => { }} content={{content}} > - } rightIcon={'caret-down'} /> + } + rightIcon={'caret-down'} + > + + + + ); }; + +const ItemSwitchButton = styled(Button)` + .bp3-button-text { + display: flex; + color: #727983; + } +`; + +const ItemSwitchText = styled.span` + font-weight: 600; + color: #33304a; + padding-left: 3px; +`; diff --git a/src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetailContent.js b/src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetailContent.js index c3f804381..3023f8e2c 100644 --- a/src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetailContent.js +++ b/src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetailContent.js @@ -1,8 +1,6 @@ import React from 'react'; + import { DrawerBody } from 'components'; - -import 'style/components/Drawers/ViewDetail/ViewDetail.scss'; - import PaymentMadeDetails from './PaymentMadeDetails'; import { PaymentMadeDetailProvider } from './PaymentMadeDetailProvider'; diff --git a/src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetailHeader.js b/src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetailHeader.js index 84e182164..20af0d818 100644 --- a/src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetailHeader.js +++ b/src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetailHeader.js @@ -1,13 +1,19 @@ import React from 'react'; import intl from 'react-intl-universal'; -import clsx from 'classnames'; import { defaultTo } from 'lodash'; -import { DetailsMenu, DetailItem, FormatDate } from 'components'; +import { + Row, + Col, + FormatDate, + DetailsMenu, + DetailItem, + CommercialDocHeader, + CommercialDocTopHeader, + ButtonLink, +} from 'components'; import { usePaymentMadeDetailContext } from './PaymentMadeDetailProvider'; -import PaymentDrawerCls from './PaymentMadeDrawer.module.scss'; - /** * Payment made - detail panel - header. */ @@ -15,39 +21,53 @@ export default function PaymentMadeDetailHeader() { const { paymentMade } = usePaymentMadeDetailContext(); return ( - - - - - - - - - } - /> - + + + + + {paymentMade.formatted_amount} + + + - - - } - /> - - + + + + + + {paymentMade.vendor?.display_name} + + + + } + /> + + + + + + } + /> + + + + ); } diff --git a/src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetailProvider.js b/src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetailProvider.js index 478f08ee3..27fa2a5f0 100644 --- a/src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetailProvider.js +++ b/src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetailProvider.js @@ -20,26 +20,14 @@ function PaymentMadeDetailProvider({ paymentMadeId, ...props }) { enabled: !!paymentMadeId, }, ); - // Handle fetch transaction by reference. - const { - data: { transactions }, - isLoading: isTransactionLoading, - } = useTransactionsByReference( - { - reference_id: paymentMadeId, - reference_type: 'BillPayment', - }, - { enabled: !!paymentMadeId }, - ); //provider. const provider = { - transactions, paymentMadeId, paymentMade, }; - const loading = isTransactionLoading || isPaymentMadeLoading; + const loading = isPaymentMadeLoading; return ( diff --git a/src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetailTab.js b/src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetailTab.js index 58902503c..292639a13 100644 --- a/src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetailTab.js +++ b/src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetailTab.js @@ -1,28 +1,21 @@ import React from 'react'; -import clsx from 'classnames'; -import { Card } from 'components'; +import { CommercialDocBox } from 'components'; -import PaymentMadeDetailActionsBar from './PaymentMadeDetailActionsBar'; import PaymentMadeDetailHeader from './PaymentMadeDetailHeader'; import PaymentMadeDetailTable from './PaymentMadeDetailTable'; import PaymentMadeDetailFooter from './PaymentMadeDetailFooter'; -import PaymentDrawerCls from './PaymentMadeDrawer.module.scss'; - /** * Payment made detail tab. + * @returns {React.JSX} */ export default function PaymentMadeDetailTab() { return ( - - - - - - - - - + + + + + ); } diff --git a/src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetailTable.js b/src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetailTable.js index 2c79fc3d0..5d090f10f 100644 --- a/src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetailTable.js +++ b/src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetailTable.js @@ -1,12 +1,11 @@ import React from 'react'; -import clsx from 'classnames'; + +import { CommercialDocEntriesTable } from 'components'; import { usePaymentMadeEntriesColumns } from './utils'; -import { DataTable } from 'components'; - import { usePaymentMadeDetailContext } from './PaymentMadeDetailProvider'; -import PaymentDrawerCls from './PaymentMadeDrawer.module.scss'; +import { TableStyle } from 'common'; /** * Payment made read-only details table. @@ -19,12 +18,10 @@ export default function PaymentMadeDetailTable() { const { paymentMade } = usePaymentMadeDetailContext(); return ( - - - + ); } diff --git a/src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetails.js b/src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetails.js index 32e6e8937..6941263cc 100644 --- a/src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetails.js +++ b/src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeDetails.js @@ -1,35 +1,47 @@ import React from 'react'; import { Tab } from '@blueprintjs/core'; import intl from 'react-intl-universal'; -import clsx from 'classnames'; +import styled from 'styled-components'; import { DrawerMainTabs } from 'components'; -import PaymentMadeDetailTab from './PaymentMadeDetailTab'; -import JournalEntriesTable from '../../JournalEntriesTable/JournalEntriesTable'; -import { usePaymentMadeDetailContext } from './PaymentMadeDetailProvider'; -import PaymentDrawerCls from './PaymentMadeDrawer.module.scss'; +import PaymentMadeDetailActionsBar from './PaymentMadeDetailActionsBar'; +import PaymentMadeDetailTab from './PaymentMadeDetailTab'; +import PaymentMadeGLEntriesPanel from './PaymentMadeGLEntriesPanel'; /** * Payment made - view detail. + * @returns {React.JSX} */ -export default function PaymentMadeDetails() { - const { transactions } = usePaymentMadeDetailContext(); +function PaymentMadeDetailsTabs() { return ( - - - } - /> - } - /> - - + + } + /> + } + /> + ); } + +/** + * Payment made view detail. + * @returns {React.JSX} + */ +export default function PaymentMadeDetail() { + return ( + + + + + ); +} + +const PaymentMadeDetailsRoot = styled.div``; diff --git a/src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeGLEntriesPanel.js b/src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeGLEntriesPanel.js new file mode 100644 index 000000000..cd667fd9c --- /dev/null +++ b/src/containers/Drawers/PaymentMadeDetailDrawer/PaymentMadeGLEntriesPanel.js @@ -0,0 +1,42 @@ +import React from 'react'; +import styled from 'styled-components'; + +import { Card } from 'components'; +import JournalEntriesTable, { + AmountDisplayedBaseCurrencyMessage, +} from '../../JournalEntriesTable/JournalEntriesTable'; + +import { useTransactionsByReference } from 'hooks/query'; +import { usePaymentMadeDetailContext } from './PaymentMadeDetailProvider'; + +/** + * Payment made GL entries table panel. + * @returns {React.JSX} + */ +export default function PaymentMadeGLEntriesPanel() { + const { paymentMadeId } = usePaymentMadeDetailContext(); + + // Handle fetch transaction by reference. + const { + data: { transactions }, + isLoading: isTransactionLoading, + } = useTransactionsByReference( + { + reference_id: paymentMadeId, + reference_type: 'BillPayment', + }, + { enabled: !!paymentMadeId }, + ); + + return ( + + + + + ); +} + +const PaymentMadeGLEntriesRoot = styled(Card)``; diff --git a/src/containers/Preferences/Accountant/Accountant.schema.js b/src/containers/Preferences/Accountant/Accountant.schema.js index 0c029efa5..3b0b55373 100644 --- a/src/containers/Preferences/Accountant/Accountant.schema.js +++ b/src/containers/Preferences/Accountant/Accountant.schema.js @@ -4,9 +4,9 @@ const Schema = Yup.object().shape({ accounting_basis: Yup.string().required(), account_code_required: Yup.boolean().nullable(), account_code_unique: Yup.boolean().nullable(), - deposit_account: Yup.number().nullable(), withdrawal_account: Yup.number().nullable(), - advance_deposit: Yup.number().nullable(), + preferred_deposit_account: Yup.number().nullable(), + preferred_advance_deposit: Yup.number().nullable(), }); export const AccountantSchema = Schema; diff --git a/src/containers/Preferences/Accountant/AccountantForm.js b/src/containers/Preferences/Accountant/AccountantForm.js index 870833e78..474ac29b0 100644 --- a/src/containers/Preferences/Accountant/AccountantForm.js +++ b/src/containers/Preferences/Accountant/AccountantForm.js @@ -17,6 +17,7 @@ import { FieldRequiredHint, } from 'components'; import { handleStringChange, inputIntent } from 'utils'; +import { ACCOUNT_TYPE } from 'common/accountTypes'; import { useAccountantFormContext } from './AccountantFormProvider'; @@ -113,7 +114,7 @@ export default function AccountantForm() { {/* ----------- Deposit customer account ----------- */} - + {({ form: { values, setFieldValue }, field: { value }, @@ -138,11 +139,15 @@ export default function AccountantForm() { { - setFieldValue('deposit_account', id); + setFieldValue('preferred_deposit_account', id); }} selectedAccountId={value} defaultSelectText={} - // filterByParentTypes={[ACCOUNT_PARENT_TYPE.CURRENT_ASSET]} + filterByTypes={[ + ACCOUNT_TYPE.CASH, + ACCOUNT_TYPE.BANK, + ACCOUNT_TYPE.OTHER_CURRENT_ASSET, + ]} /> )} @@ -178,13 +183,18 @@ export default function AccountantForm() { }} selectedAccountId={value} defaultSelectText={} + filterByTypes={[ + ACCOUNT_TYPE.CASH, + ACCOUNT_TYPE.BANK, + ACCOUNT_TYPE.OTHER_CURRENT_ASSET, + ]} /> )} {/* ----------- Withdrawal customer account ----------- */} - + {({ form: { values, setFieldValue }, field: { value }, @@ -209,7 +219,7 @@ export default function AccountantForm() { { - setFieldValue('advance_deposit', id); + setFieldValue('preferred_advance_deposit', id); }} selectedAccountId={value} defaultSelectText={} diff --git a/src/containers/Preferences/Accountant/AccountantFormPage.js b/src/containers/Preferences/Accountant/AccountantFormPage.js index 33d259f84..ab9fb326a 100644 --- a/src/containers/Preferences/Accountant/AccountantFormPage.js +++ b/src/containers/Preferences/Accountant/AccountantFormPage.js @@ -28,15 +28,13 @@ function AccountantFormPage({ accountsSettings, billPaymentSettings, }) { - - const { saveSettingMutate } = useAccountantFormContext(); const accountantSettings = { ...billPaymentSettings, ...accountsSettings, ...pick(organizationSettings, ['accountingBasis']), - ...pick(paymentReceiveSettings, ['depositAccount', 'advanceDeposit']), + ...pick(paymentReceiveSettings, ['preferredDepositAccount', 'preferredAdvanceDeposit']), }; const initialValues = { diff --git a/src/containers/Preferences/Accountant/utils.js b/src/containers/Preferences/Accountant/utils.js index 22f838ba4..0579127f5 100644 --- a/src/containers/Preferences/Accountant/utils.js +++ b/src/containers/Preferences/Accountant/utils.js @@ -11,13 +11,13 @@ export const transformToOptions = (option) => { group: 'bill_payments', }, { - key: 'deposit_account', - value: option.deposit_account, + key: 'preferred_deposit_account', + value: option.preferred_deposit_account, group: 'payment_receives', }, { - key: 'advance_deposit', - value: option.advance_deposit, + key: 'preferred_advance_deposit', + value: option.preferred_advance_deposit, group: 'payment_receives', }, { diff --git a/src/containers/Preferences/Item/ItemPreferencesFormPage.js b/src/containers/Preferences/Item/ItemPreferencesFormPage.js index f9b27fd63..af5308b70 100644 --- a/src/containers/Preferences/Item/ItemPreferencesFormPage.js +++ b/src/containers/Preferences/Item/ItemPreferencesFormPage.js @@ -3,6 +3,7 @@ import { Formik } from 'formik'; import { Intent } from '@blueprintjs/core'; import { AppToaster } from 'components'; import intl from 'react-intl-universal'; +import { pick, omit } from 'lodash'; import { ItemPreferencesSchema } from './ItemPreferences.schema'; import ItemPreferencesForm from './ItemPreferencesForm'; @@ -23,12 +24,16 @@ function ItemPreferencesFormPage({ }) { const { saveSettingMutate } = useItemPreferencesFormContext(); + const itemPerferencesSettings = { + ...omit(itemsSettings, ['tableSize']), + }; + // Initial values. const initialValues = { preferred_sell_account: '', preferred_cost_account: '', preferred_inventory_account: '', - ...transformGeneralSettings(itemsSettings), + ...transformGeneralSettings(itemPerferencesSettings), }; useEffect(() => { @@ -37,8 +42,10 @@ function ItemPreferencesFormPage({ // Handle form submit. const handleFormSubmit = (values, { setSubmitting, setErrors }) => { - const options = optionsMapToArray(values) - .map((option) => ({ ...option, group: 'items' })); + const options = optionsMapToArray(values).map((option) => ({ + ...option, + group: 'items', + })); const onSuccess = () => { AppToaster.show({ diff --git a/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveForm.js b/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveForm.js index 94196ecfb..5448dce3d 100644 --- a/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveForm.js +++ b/src/containers/Sales/PaymentReceives/PaymentReceiveForm/PaymentReceiveForm.js @@ -28,7 +28,11 @@ import { AppToaster } from 'components'; import { transactionNumber, compose } from 'utils'; import { usePaymentReceiveFormContext } from './PaymentReceiveFormProvider'; -import { defaultPaymentReceive, transformToEditForm, transformFormToRequest } from './utils'; +import { + defaultPaymentReceive, + transformToEditForm, + transformFormToRequest, +} from './utils'; /** * Payment Receive form. @@ -61,6 +65,7 @@ function PaymentReceiveForm({ paymentReceiveNumberPrefix, paymentReceiveNextNumber, ); + console.log(preferredDepositAccount, 'XX'); // Form initial values. const initialValues = useMemo( () => ({ @@ -194,7 +199,7 @@ export default compose( paymentReceiveNextNumber: paymentReceiveSettings?.nextNumber, paymentReceiveNumberPrefix: paymentReceiveSettings?.numberPrefix, paymentReceiveAutoIncrement: paymentReceiveSettings?.autoIncrement, - preferredDepositAccount: paymentReceiveSettings?.depositAccount, + preferredDepositAccount: paymentReceiveSettings?.preferredDepositAccount, })), withCurrentOrganization(), )(PaymentReceiveForm);