diff --git a/client/src/containers/Accounting/MakeJournalEntries.schema.js b/client/src/containers/Accounting/MakeJournalEntries.schema.js index 485ae4bd0..c037f6789 100644 --- a/client/src/containers/Accounting/MakeJournalEntries.schema.js +++ b/client/src/containers/Accounting/MakeJournalEntries.schema.js @@ -1,23 +1,25 @@ import * as Yup from 'yup'; import { formatMessage } from 'services/intl'; +import { DATATYPES_LENGTH } from 'common/dataTypes'; const Schema = Yup.object().shape({ journal_number: Yup.string() .required() .min(1) - .max(255) + .max(DATATYPES_LENGTH.STRING) .label(formatMessage({ id: 'journal_number_' })), journal_type: Yup.string() .required() .min(1) - .max(255) + .max(DATATYPES_LENGTH.STRING) .label(formatMessage({ id: 'journal_type' })), date: Yup.date() .required() .label(formatMessage({ id: 'date' })), - currency_code: Yup.string(), - reference: Yup.string().min(1).max(255), - description: Yup.string().min(1).max(1024), + currency_code: Yup.string().max(3), + status: Yup.boolean(), + reference: Yup.string().nullable().min(1).max(DATATYPES_LENGTH.STRING), + description: Yup.string().min(1).max(DATATYPES_LENGTH.STRING), entries: Yup.array().of( Yup.object().shape({ credit: Yup.number().nullable(), @@ -30,10 +32,10 @@ const Schema = Yup.object().shape({ }), contact_id: Yup.number().nullable(), contact_type: Yup.string().nullable(), - note: Yup.string().max(255).nullable(), + note: Yup.string().max(DATATYPES_LENGTH.TEXT).nullable(), }), ), }); export const CreateJournalSchema = Schema; -export const EditJournalSchema = Schema; \ No newline at end of file +export const EditJournalSchema = Schema; diff --git a/client/src/containers/Accounting/MakeJournalEntriesForm.js b/client/src/containers/Accounting/MakeJournalEntriesForm.js index b03b2bb03..6a255b78c 100644 --- a/client/src/containers/Accounting/MakeJournalEntriesForm.js +++ b/client/src/containers/Accounting/MakeJournalEntriesForm.js @@ -1,10 +1,11 @@ -import React, { useMemo, useEffect, useCallback } from 'react'; +import React, { useMemo, useState, useEffect, useCallback } from 'react'; import { Formik, Form } from 'formik'; import moment from 'moment'; import { Intent } from '@blueprintjs/core'; import { useIntl } from 'react-intl'; import { pick } from 'lodash'; import classNames from 'classnames'; +import { useHistory } from 'react-router-dom'; import { CLASSES } from 'common/classes'; import { @@ -50,6 +51,7 @@ const defaultInitialValues = { description: '', reference: '', currency_code: '', + status: '', entries: [...repeatValue(defaultEntry, 4)], }; @@ -84,7 +86,9 @@ function MakeJournalEntriesForm({ onCancelForm, }) { const isNewMode = !manualJournalId; + const [submitPayload, setSubmitPayload] = useState({}); const { formatMessage } = useIntl(); + const history = useHistory(); const journalNumber = isNewMode ? `${journalNumberPrefix}-${journalNextNumber}` @@ -120,7 +124,7 @@ function MakeJournalEntriesForm({ ...pick(entry, Object.keys(defaultEntry)), })), } - : { + : { ...defaultInitialValues, journal_number: journalNumber, entries: orderingLinesIndexes(defaultInitialValues.entries), @@ -172,10 +176,10 @@ function MakeJournalEntriesForm({ setSubmitting(false); return; } - const form = { ...values, entries }; + const form = { ...values, status: submitPayload.publish, entries }; const handleError = (error) => { - transformErrors(error, { setErrors }); + transformErrors(error, { setErrors }); setSubmitting(false); }; @@ -191,8 +195,15 @@ function MakeJournalEntriesForm({ ), intent: Intent.SUCCESS, }); + setSubmitting(false); - resetForm(); + + if (submitPayload.redirect) { + history.push('/manual-journals'); + } + if (submitPayload.resetForm) { + resetForm(); + } }; if (isNewMode) { @@ -203,12 +214,24 @@ function MakeJournalEntriesForm({ .catch(handleError); } }; + + const handleCancelClick = useCallback(() => { + history.goBack(); + }, [history]); + + const handleSubmitClick = useCallback( + (event, payload) => { + setSubmitPayload({ ...payload }); + }, + [setSubmitPayload], + ); + console.log(submitPayload, 'RR'); return (