diff --git a/client/src/containers/Dialogs/EstimateNumberDialog/EstimateNumberDialogContent.js b/client/src/containers/Dialogs/EstimateNumberDialog/EstimateNumberDialogContent.js index b62bafe2c..ca2feede4 100644 --- a/client/src/containers/Dialogs/EstimateNumberDialog/EstimateNumberDialogContent.js +++ b/client/src/containers/Dialogs/EstimateNumberDialog/EstimateNumberDialogContent.js @@ -5,6 +5,7 @@ import { useQuery, queryCache } from 'react-query'; import ReferenceNumberForm from 'containers/JournalNumber/ReferenceNumberForm'; import withDialogActions from 'containers/Dialog/withDialogActions'; import withSettingsActions from 'containers/Settings/withSettingsActions'; +import withEstimateActions from 'containers/Sales/Estimate/withEstimateActions'; import withSettings from 'containers/Settings/withSettings'; import { compose, optionsMapToArray } from 'utils'; @@ -23,6 +24,9 @@ function EstimateNumberDialogContent({ // #withDialogActions closeDialog, + + // #withEstimateActions + setEstimateNumberChanged, }) { const fetchSettings = useQuery(['settings'], () => requestFetchOptions({})); @@ -37,6 +41,7 @@ function EstimateNumberDialogContent({ setTimeout(() => { queryCache.invalidateQueries('settings'); + setEstimateNumberChanged(true); }, 250); }) .catch(() => { @@ -67,4 +72,5 @@ export default compose( nextNumber: estimatesSettings?.next_number, numberPrefix: estimatesSettings?.number_prefix, })), + withEstimateActions, )(EstimateNumberDialogContent); diff --git a/client/src/containers/Sales/Estimate/EstimateForm.js b/client/src/containers/Sales/Estimate/EstimateForm.js index 78f065584..c696bf93b 100644 --- a/client/src/containers/Sales/Estimate/EstimateForm.js +++ b/client/src/containers/Sales/Estimate/EstimateForm.js @@ -20,6 +20,7 @@ import EstimateFloatingActions from './EstimateFloatingActions'; import withEstimateActions from './withEstimateActions'; import withEstimateDetail from './withEstimateDetail'; +import withEstimates from './withEstimates'; import withDashboardActions from 'containers/Dashboard/withDashboardActions'; import withMediaActions from 'containers/Media/withMediaActions'; import withSettings from 'containers/Settings/withSettings'; @@ -41,7 +42,7 @@ const EstimateForm = ({ //#WithEstimateActions requestSubmitEstimate, requestEditEstimate, - + setEstimateNumberChanged, //#withDashboard changePageTitle, changePageSubtitle, @@ -53,6 +54,9 @@ const EstimateForm = ({ //#withEstimateDetail estimate, + // #withEstimates + estimateNumberChanged, + //#own Props estimateId, onFormSubmit, @@ -81,10 +85,16 @@ const EstimateForm = ({ savedMediaIds.current = []; }; + const estimateNumber = estimateNumberPrefix + ? `${estimateNumberPrefix}-${estimateNextNumber}` + : estimateNextNumber; + useEffect(() => { if (estimate && estimate.id) { changePageTitle(formatMessage({ id: 'edit_estimate' })); + changePageSubtitle(`No. ${estimate.estimate_number}`); } else { + changePageSubtitle(`No. ${estimateNumber}`); changePageTitle(formatMessage({ id: 'new_estimate' })); } }, [changePageTitle, estimate, formatMessage]); @@ -153,9 +163,6 @@ const EstimateForm = ({ }), [], ); - const estimateNumber = estimateNumberPrefix - ? `${estimateNumberPrefix}-${estimateNextNumber}` - : estimateNextNumber; const defaultInitialValues = useMemo( () => ({ @@ -290,9 +297,20 @@ const EstimateForm = ({ } }, }); + useEffect(() => { - formik.setFieldValue('estimate_number', estimateNumber); - }, [estimateNumber]); + if (estimateNumberChanged) { + formik.setFieldValue('estimate_number', estimateNumber); + changePageSubtitle(`No. ${estimateNumber}`); + setEstimateNumberChanged(false); + } + }, [ + estimateNumber, + estimateNumberChanged, + setEstimateNumberChanged, + formik.setFieldValue, + changePageSubtitle, + ]); const handleSubmitClick = useCallback( (payload) => { @@ -336,10 +354,20 @@ const EstimateForm = ({ ); }; + const handleEstimateNumberChange = useCallback( + (estimateNumber) => { + changePageSubtitle(`No. ${estimateNumber}`); + }, + [changePageSubtitle], + ); + return (