diff --git a/client/src/containers/Accounting/ManualJournalsList.js b/client/src/containers/Accounting/ManualJournalsList.js index b9e3f6191..9939d5626 100644 --- a/client/src/containers/Accounting/ManualJournalsList.js +++ b/client/src/containers/Accounting/ManualJournalsList.js @@ -1,6 +1,6 @@ import React, { useEffect, useState, useMemo, useCallback } from 'react'; import { Route, Switch, useHistory, withRouter } from 'react-router-dom'; -import { useQuery } from 'react-query'; +import { queryCache, useQuery } from 'react-query'; import { Alert, Intent } from '@blueprintjs/core'; import AppToaster from 'components/AppToaster'; import { @@ -53,6 +53,7 @@ function ManualJournalsTable({ const [deleteManualJournal, setDeleteManualJournal] = useState(false); const [selectedRows, setSelectedRows] = useState([]); const [bulkDelete, setBulkDelete] = useState(false); + const [publishManualJournal, setPublishManualJournal] = useState(false); const { formatMessage } = useIntl(); @@ -176,19 +177,36 @@ function ManualJournalsTable({ [addManualJournalsTableQueries], ); - const handlePublishJournal = useCallback( - (journal) => { - requestPublishManualJournal(journal.id).then(() => { + // Handle publish manual Journal click. + const handlePublishMaunalJournal = useCallback( + (jouranl) => { + setPublishManualJournal(jouranl); + }, + [setPublishManualJournal], + ); + + // Handle cancel manual journal alert. + const handleCancelPublishMaunalJournal = useCallback(() => { + setPublishManualJournal(false); + }, [setPublishManualJournal]); + + // Handle publish manual journal confirm. + const handleConfirmPublishManualJournal = useCallback(() => { + requestPublishManualJournal(publishManualJournal.id) + .then(() => { + setPublishManualJournal(false); AppToaster.show({ message: formatMessage({ - id: 'the_manual_journal_id_has_been_published', + id: 'the_manual_journal_has_been_published', }), intent: Intent.SUCCESS, }); + queryCache.invalidateQueries('manual-journals-table'); + }) + .catch((error) => { + setPublishManualJournal(false); }); - }, - [requestPublishManualJournal, formatMessage], - ); + }, [publishManualJournal, requestPublishManualJournal, formatMessage]); // Handle selected rows change. const handleSelectedRowsChange = useCallback( @@ -223,7 +241,7 @@ function ManualJournalsTable({ @@ -260,6 +278,18 @@ function ManualJournalsTable({ />

+ } + confirmButtonText={} + intent={Intent.WARNING} + isOpen={publishManualJournal} + onCancel={handleCancelPublishMaunalJournal} + onConfirm={handleConfirmPublishManualJournal} + > +

+ +

+
); diff --git a/client/src/lang/en/index.js b/client/src/lang/en/index.js index 8076e4b5f..15656c105 100644 --- a/client/src/lang/en/index.js +++ b/client/src/lang/en/index.js @@ -204,8 +204,8 @@ export default { 'The journal #{number} has been successfully edited.', the_journal_has_been_successfully_deleted: 'The journal has been successfully deleted', - the_manual_journal_id_has_been_published: - 'The manual journal id has been published', + the_manual_journal_has_been_published: + 'The manual journal has been published', the_journals_has_been_successfully_deleted: 'The journals has been successfully deleted ', credit: 'Credit', @@ -841,4 +841,7 @@ export default { once_delete_these_vendors_you_will_not_able_restore_them: "Once you delete these vendors, you won't be able to retrieve them later. Are you sure you want to delete them?", vendor_has_bills: 'Vendor has bills', + + are_sure_to_publish_this_manual_journal: + 'Are you sure you want to publish this manual journal?', };