import React from 'react'; import intl from 'react-intl-universal'; import { useSaveSettings } from 'hooks/query'; import { VendorCreditNumberDilaogProvider } from './VendorCreditNumberDilaogProvider'; import ReferenceNumberForm from 'containers/JournalNumber/ReferenceNumberForm'; import withDialogActions from 'containers/Dialog/withDialogActions'; import withSettings from 'containers/Settings/withSettings'; import withSettingsActions from 'containers/Settings/withSettingsActions'; import { compose } from 'utils'; import { transformFormToSettings, transformSettingsToForm, } from 'containers/JournalNumber/utils'; /** * Vendor credit number dialog */ function VendorCreditNumberDialogContent({ // #ownProps initialValues, onConfirm, // #withSettings nextNumber, numberPrefix, autoIncrement, // #withDialogActions closeDialog, }) { const { mutateAsync: saveSettings } = useSaveSettings(); const [referenceFormValues, setReferenceFormValues] = React.useState(null); // Handle the submit form. const handleSubmitForm = (values, { setSubmitting }) => { // Handle the form success. const handleSuccess = () => { setSubmitting(false); closeDialog('vendor-credit-form'); onConfirm(values); }; // Handle the form errors. const handleErrors = () => { setSubmitting(false); }; if (values.incrementMode === 'manual-transaction') { handleSuccess(); return; } // Transformes the form values to settings to save it. const options = transformFormToSettings(values, 'vendor_credit'); // Save the settings. saveSettings({ options }).then(handleSuccess).catch(handleErrors); }; // Handle the dialog close. const handleClose = () => { closeDialog('vendor-credit-form'); }; // Handle form change. const handleChange = (values) => { setReferenceFormValues(values); }; // Description. const description = referenceFormValues?.incrementMode === 'auto' ? intl.get('vendor_credit.auto_increment.auto') : intl.get('vendor_credit.auto_increment.manually'); return ( ); } export default compose( withDialogActions, withSettingsActions, withSettings(({ vendorsCreditNoteSetting }) => ({ autoIncrement: vendorsCreditNoteSetting?.autoIncrement, nextNumber: vendorsCreditNoteSetting?.nextNumber, numberPrefix: vendorsCreditNoteSetting?.numberPrefix, })), )(VendorCreditNumberDialogContent);