Fix / takse expense & Journal

This commit is contained in:
elforjani3
2020-07-05 21:30:51 +02:00
parent 679789345c
commit 7ea417d8c0
11 changed files with 176 additions and 73 deletions

View File

@@ -34,6 +34,7 @@ const ERROR = {
VENDORS_NOT_WITH_PAYABLE_ACCOUNT: 'VENDORS.NOT.WITH.PAYABLE.ACCOUNT',
PAYABLE_ENTRIES_HAS_NO_VENDORS: 'PAYABLE.ENTRIES.HAS.NO.VENDORS',
RECEIVABLE_ENTRIES_HAS_NO_CUSTOMERS: 'RECEIVABLE.ENTRIES.HAS.NO.CUSTOMERS',
CREDIT_DEBIT_SUMATION_SHOULD_NOT_EQUAL_ZERO:'CREDIT.DEBIT.SUMATION.SHOULD.NOT.EQUAL.ZERO'
};
/**
@@ -57,6 +58,7 @@ function MakeJournalEntriesForm({
onFormSubmit,
onCancelForm,
}) {
const { formatMessage } = useIntl();
const {
setFiles,
@@ -68,10 +70,12 @@ function MakeJournalEntriesForm({
saveCallback: requestSubmitMedia,
deleteCallback: requestDeleteMedia,
});
const handleDropFiles = useCallback((_files) => {
setFiles(_files.filter((file) => file.uploaded === false));
}, []);
const savedMediaIds = useRef([]);
const clearSavedMediaIds = () => {
savedMediaIds.current = [];
@@ -222,6 +226,15 @@ function MakeJournalEntriesForm({
}),
});
}
if(hasError(ERROR.CREDIT_DEBIT_SUMATION_SHOULD_NOT_EQUAL_ZERO)){
AppToaster.show({
message:formatMessage({
id:'credit_debit_summation_should_not_equal_zero'
}),
intent:Intent.DANGER
})
}
};
const formik = useFormik({

View File

@@ -46,7 +46,7 @@ function MakeJournalEntriesPage({
);
const handleCancel = useCallback(() => {
history.push('/manual-journals');
history.goBack();
}, [history]);
return (

View File

@@ -41,7 +41,7 @@ function ManualJournalActionsBar({
addManualJournalsTableQueries,
onFilterChanged,
selectedRows,
selectedRows = [],
onBulkDelete,
}) {
const { path } = useRouteMatch();
@@ -73,9 +73,9 @@ function ManualJournalActionsBar({
onFilterChanged && onFilterChanged(filterConditions);
},
});
const hasSelectedRows = useMemo(() => selectedRows.length > 0, [
selectedRows,
]);
const hasSelectedRows = useMemo(
() => selectedRows.length > 0,
[selectedRows]);
// Handle delete button click.
const handleBulkDelete = useCallback(() => {

View File

@@ -23,12 +23,12 @@ import withManualJournals from 'containers/Accounting/withManualJournals';
import withManualJournalsActions from 'containers/Accounting/withManualJournalsActions';
/**
* Status column accessor.
* Status column accessor.
*/
function StatusAccessor(row) {
const StatusAccessor = (row) => {
return (
<Choose>
<Choose.When condition={row.status}>
<Choose.When condition={!!row.status}>
<Tag minimal={true}>
<T id={'published'} />
</Tag>
@@ -41,7 +41,7 @@ function StatusAccessor(row) {
</Choose.Otherwise>
</Choose>
);
}
};
/**
* Note column accessor.
@@ -115,12 +115,12 @@ function ManualJournalsDataTable({
<Menu>
<MenuItem text={formatMessage({ id: 'view_details' })} />
<MenuDivider />
{!journal.status && (
<If condition={!journal.status}>
<MenuItem
text={formatMessage({ id: 'publish_journal' })}
onClick={handlePublishJournal(journal)}
/>
)}
</If>
<MenuItem
text={formatMessage({ id: 'edit_journal' })}
onClick={handleEditJournal(journal)}
@@ -230,20 +230,29 @@ function ManualJournalsDataTable({
},
[onSelectedRowsChange],
);
const selectionColumn = useMemo(
() => ({
minWidth: 40,
width: 40,
maxWidth: 40,
}),
[],
);
return (
<DataTable
noInitialFetch={true}
columns={columns}
data={manualJournalsCurrentPage}
onFetchData={handleDataTableFetchData}
manualSortBy={true}
selectionColumn={true}
noInitialFetch={true}
selectionColumn={selectionColumn}
expandable={true}
sticky={true}
loading={manualJournalsLoading && !isMounted}
onSelectedRowsChange={handleSelectedRowsChange}
pagination={true}
loading={manualJournalsLoading && !isMounted}
rowContextMenu={onRowContextMenu}
pagination={true}
pagesCount={manualJournalsPagination.pagesCount}
initialPageSize={manualJournalsTableQuery.page_size}
initialPageIndex={manualJournalsTableQuery.page - 1}

View File

@@ -3,7 +3,11 @@ import { Route, Switch, useHistory, withRouter } from 'react-router-dom';
import { useQuery } from 'react-query';
import { Alert, Intent } from '@blueprintjs/core';
import AppToaster from 'components/AppToaster';
import { FormattedMessage as T, useIntl } from 'react-intl';
import {
FormattedMessage as T,
useIntl,
FormattedHTMLMessage,
} from 'react-intl';
import DashboardPageContent from 'components/Dashboard/DashboardPageContent';
import DashboardInsider from 'components/Dashboard/DashboardInsider';
@@ -114,6 +118,7 @@ function ManualJournalsTable({
const handleConfirmBulkDelete = useCallback(() => {
requestDeleteBulkManualJournals(bulkDelete)
.then(() => {
setBulkDelete(false);
AppToaster.show({
message: formatMessage(
{ id: 'the_journals_has_been_successfully_deleted' },
@@ -121,7 +126,6 @@ function ManualJournalsTable({
),
intent: Intent.SUCCESS,
});
setBulkDelete(false);
})
.catch((error) => {
setBulkDelete(false);
@@ -181,6 +185,7 @@ function ManualJournalsTable({
message: formatMessage({
id: 'the_manual_journal_id_has_been_published',
}),
intent: Intent.SUCCESS,
});
});
},
@@ -237,11 +242,7 @@ function ManualJournalsTable({
onConfirm={handleConfirmManualJournalDelete}
>
<p>
<T
id={
'once_delete_this_journal_category_you_will_able_to_restore_it'
}
/>
<T id={'once_delete_this_journal_you_will_able_to_restore_it'} />
</p>
</Alert>