import React from 'react'; import { FormGroup, InputGroup, Position, ControlGroup, } from '@blueprintjs/core'; import { DateInput } from '@blueprintjs/datetime'; import { FastField, Field, ErrorMessage } from 'formik'; import { CLASSES } from 'common/classes'; import classNames from 'classnames'; import { VendorSelectField, FieldRequiredHint, InputPrependButton, Icon, FormattedMessage as T, } from 'components'; import { vendorsFieldShouldUpdate, useObserveVendorCreditNoSettings, } from './utils'; import { useVendorCreditNoteFormContext } from './VendorCreditNoteFormProvider'; import { momentFormatter, compose, tansformDateValue, inputIntent, handleDateChange, } from 'utils'; import withSettings from 'containers/Settings/withSettings'; import withDialogActions from 'containers/Dialog/withDialogActions'; /** * Vendor Credit note form header fields. */ function VendorCreditNoteFormHeaderFields({ // #withDialogActions openDialog, // #withSettings vendorcreditAutoIncrement, vendorcreditNumberPrefix, vendorcreditNextNumber, }) { // Vendor Credit form context. const { vendors } = useVendorCreditNoteFormContext(); // Handle vendor credit number changing. const handleVendorCreditNumberChange = () => { openDialog('vendor-credit-form'); }; // Handle vendor credit no. field blur. const handleVendorCreditNoBlur = (form, field) => (event) => { const newValue = event.target.value; if (field.value !== newValue && vendorcreditAutoIncrement) { openDialog('vendor-credit-form', { initialFormValues: { manualTransactionNo: newValue, incrementMode: 'manual-transaction', }, }); } }; // Syncs vendor credit number settings with form. useObserveVendorCreditNoSettings( vendorcreditNumberPrefix, vendorcreditNextNumber, ); return (
{/* ----------- Vendor name ----------- */} {({ form, field: { value }, meta: { error, touched } }) => ( } inline={true} className={classNames(CLASSES.FILL, 'form-group--vendor')} labelInfo={} intent={inputIntent({ error, touched })} helperText={} > } onContactSelected={(contact) => { form.setFieldValue('vendor_id', contact.id); }} popoverFill={true} allowCreate={true} /> )} {/* ------- Vendor Credit date ------- */} {({ form, field: { value }, meta: { error, touched } }) => ( } inline={true} labelInfo={} className={classNames( 'form-group--vendor_credit_date', CLASSES.FILL, )} intent={inputIntent({ error, touched })} helperText={} > { form.setFieldValue('vendor_credit_date', formattedDate); })} popoverProps={{ position: Position.BOTTOM_LEFT, minimal: true }} inputProps={{ leftIcon: , }} /> )} {/* ----------- Vendor Credit No # ----------- */} {({ form, field, meta: { error, touched } }) => ( } inline={true} labelInfo={} className={('form-group--vendor_credit_number', CLASSES.FILL)} intent={inputIntent({ error, touched })} helperText={} > , }} tooltip={true} tooltipProps={{ content: ( ), position: Position.BOTTOM_LEFT, }} /> )} {/* ----------- Reference ----------- */} {({ field, meta: { error, touched } }) => ( } inline={true} className={classNames('form-group--reference', CLASSES.FILL)} intent={inputIntent({ error, touched })} helperText={} > )}
); } export default compose( withDialogActions, withSettings(({ vendorsCreditNoteSetting }) => ({ vendorcreditAutoIncrement: vendorsCreditNoteSetting?.autoIncrement, vendorcreditNextNumber: vendorsCreditNoteSetting?.nextNumber, vendorcreditNumberPrefix: vendorsCreditNoteSetting?.numberPrefix, })), )(VendorCreditNoteFormHeaderFields);