import React, { useMemo, useCallback, useState } from 'react'; import { FormGroup, InputGroup, Intent, Position } from '@blueprintjs/core'; import { DateInput } from '@blueprintjs/datetime'; import { FormattedMessage as T } from 'react-intl'; import moment from 'moment'; import { momentFormatter, compose, tansformDateValue, saveInvoke } from 'utils'; import classNames from 'classnames'; import { CLASSES } from 'common/classes'; import { AccountsSelectList, ContactSelecetList, ErrorMessage, FieldRequiredHint, Icon, InputPrependButton, } from 'components'; import withCustomers from 'containers/Customers/withCustomers'; import withAccounts from 'containers/Accounts/withAccounts'; import withDialogActions from 'containers/Dialog/withDialogActions'; function ReceiptFormHeader({ formik: { errors, touched, setFieldValue, getFieldProps, values }, //#withCustomers customers, //#withAccouts accountsList, //#withDialogActions openDialog, // #ownProps onReceiptNumberChanged, }) { const handleDateChange = useCallback( (date) => { const formatted = moment(date).format('YYYY-MM-DD'); setFieldValue('receipt_date', formatted); }, [setFieldValue], ); // handle change const onChangeSelect = useCallback( (filedName) => { return (item) => { setFieldValue(filedName, item.id); }; }, [setFieldValue], ); // Filter deposit accounts. const depositAccounts = useMemo( () => accountsList.filter((a) => a?.type?.key === 'current_asset'), [accountsList], ); const handleReceiptNumberChange = useCallback(() => { openDialog('receipt-number-form', {}); }, [openDialog]); const handleReceiptNumberChanged = (event) => { saveInvoke(onReceiptNumberChanged, event.currentTarget.value); }; return (
{/* ----------- Customer name ----------- */} } inline={true} className={classNames( 'form-group--select-list', CLASSES.FILL, 'form-group--customer', )} labelInfo={} intent={errors.customer_id && touched.customer_id && Intent.DANGER} helperText={ } > } onContactSelected={onChangeSelect('customer_id')} /> {/* ----------- Deposit account ----------- */} } className={classNames( 'form-group--deposit-account', 'form-group--select-list', CLASSES.FILL, )} inline={true} labelInfo={} intent={ errors.deposit_account_id && touched.deposit_account_id && Intent.DANGER } helperText={ } > } selectedAccountId={values.deposit_account_id} /> {/* ----------- Receipt date ----------- */} } inline={true} className={classNames('form-group--select-list', CLASSES.FILL)} intent={errors.receipt_date && touched.receipt_date && Intent.DANGER} helperText={ } > {/* ----------- Receipt number ----------- */} } inline={true} className={('form-group--receipt_number', CLASSES.FILL)} labelInfo={} intent={ errors.receipt_number && touched.receipt_number && Intent.DANGER } helperText={ } > , }} tooltip={true} tooltipProps={{ content: 'Setting your auto-generated receipt number', position: Position.BOTTOM_LEFT, }} /> } {...getFieldProps('receipt_number')} onBlur={handleReceiptNumberChanged} /> {/* ----------- Reference ----------- */} } inline={true} className={classNames('form-group--reference', CLASSES.FILL)} intent={errors.reference_no && touched.reference_no && Intent.DANGER} helperText={ } >
); } export default compose( withCustomers(({ customers }) => ({ customers, })), withAccounts(({ accountsList }) => ({ accountsList, })), withDialogActions, )(ReceiptFormHeader);