mirror of
https://github.com/bigcapitalhq/bigcapital.git
synced 2026-02-21 15:20:34 +00:00
fix: bill view.
This commit is contained in:
@@ -38,13 +38,12 @@ function BillActionsBar({
|
|||||||
|
|
||||||
//#withBillActions
|
//#withBillActions
|
||||||
addBillsTableQueries,
|
addBillsTableQueries,
|
||||||
|
changeBillView,
|
||||||
// #own Porps
|
// #own Porps
|
||||||
onFilterChanged,
|
onFilterChanged,
|
||||||
selectedRows = [],
|
selectedRows = [],
|
||||||
}) {
|
}) {
|
||||||
const history = useHistory();
|
const history = useHistory();
|
||||||
const { path } = useRouteMatch();
|
|
||||||
const [filterCount, setFilterCount] = useState(0);
|
const [filterCount, setFilterCount] = useState(0);
|
||||||
const { formatMessage } = useIntl();
|
const { formatMessage } = useIntl();
|
||||||
|
|
||||||
@@ -52,6 +51,17 @@ function BillActionsBar({
|
|||||||
history.push('/bills/new');
|
history.push('/bills/new');
|
||||||
}, [history]);
|
}, [history]);
|
||||||
|
|
||||||
|
const hasSelectedRows = useMemo(() => selectedRows.length > 0, [
|
||||||
|
selectedRows,
|
||||||
|
]);
|
||||||
|
|
||||||
|
const handleTabChange = (viewId) => {
|
||||||
|
changeBillView(viewId.id || -1);
|
||||||
|
addBillsTableQueries({
|
||||||
|
custom_view_id: viewId.id || null,
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
// const FilterDropdown = FilterDropdown({
|
// const FilterDropdown = FilterDropdown({
|
||||||
// initialCondition: {
|
// initialCondition: {
|
||||||
// fieldKey: '',
|
// fieldKey: '',
|
||||||
@@ -67,14 +77,14 @@ function BillActionsBar({
|
|||||||
// },
|
// },
|
||||||
// });
|
// });
|
||||||
|
|
||||||
const hasSelectedRows = useMemo(() => selectedRows.length > 0, [
|
|
||||||
selectedRows,
|
|
||||||
]);
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<DashboardActionsBar>
|
<DashboardActionsBar>
|
||||||
<NavbarGroup>
|
<NavbarGroup>
|
||||||
<DashboardActionViewsList resourceName={'bills'} views={[]} />
|
<DashboardActionViewsList
|
||||||
|
resourceName={'bills'}
|
||||||
|
views={billsViews}
|
||||||
|
onChange={handleTabChange}
|
||||||
|
/>
|
||||||
<NavbarDivider />
|
<NavbarDivider />
|
||||||
<Button
|
<Button
|
||||||
className={Classes.MINIMAL}
|
className={Classes.MINIMAL}
|
||||||
@@ -139,10 +149,8 @@ export default compose(
|
|||||||
withResourceDetail(({ resourceFields }) => ({
|
withResourceDetail(({ resourceFields }) => ({
|
||||||
resourceFields,
|
resourceFields,
|
||||||
})),
|
})),
|
||||||
|
withBills(({ billsViews }) => ({
|
||||||
// withBills(({billsViews})=>({
|
billsViews,
|
||||||
// billsViews
|
})),
|
||||||
// })),
|
|
||||||
|
|
||||||
withBillActions,
|
withBillActions,
|
||||||
)(BillActionsBar);
|
)(BillActionsBar);
|
||||||
|
|||||||
@@ -21,6 +21,9 @@ import withViewsActions from 'containers/Views/withViewsActions';
|
|||||||
|
|
||||||
import { compose } from 'utils';
|
import { compose } from 'utils';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Bills list.
|
||||||
|
*/
|
||||||
function BillList({
|
function BillList({
|
||||||
// #withDashboardActions
|
// #withDashboardActions
|
||||||
changePageTitle,
|
changePageTitle,
|
||||||
@@ -58,8 +61,8 @@ function BillList({
|
|||||||
(key, resourceName) => requestFetchResourceFields(resourceName),
|
(key, resourceName) => requestFetchResourceFields(resourceName),
|
||||||
);
|
);
|
||||||
|
|
||||||
const fetchBills = useQuery(['bills-table', billsTableQuery], () =>
|
const fetchBills = useQuery(['bills-table', billsTableQuery], (key, query) =>
|
||||||
requestFetchBillsTable(),
|
requestFetchBillsTable({ ...query }),
|
||||||
);
|
);
|
||||||
|
|
||||||
//handle dalete Bill
|
//handle dalete Bill
|
||||||
@@ -127,14 +130,7 @@ function BillList({
|
|||||||
);
|
);
|
||||||
|
|
||||||
// Handle filter change to re-fetch data-table.
|
// Handle filter change to re-fetch data-table.
|
||||||
const handleFilterChanged = useCallback(
|
const handleFilterChanged = useCallback((filterConditions) => {}, []);
|
||||||
(filterConditions) => {
|
|
||||||
addBillsTableQueries({
|
|
||||||
filter_roles: filterConditions || '',
|
|
||||||
});
|
|
||||||
},
|
|
||||||
[fetchBills],
|
|
||||||
);
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<DashboardInsider
|
<DashboardInsider
|
||||||
@@ -148,7 +144,10 @@ function BillList({
|
|||||||
/>
|
/>
|
||||||
<DashboardPageContent>
|
<DashboardPageContent>
|
||||||
<Switch>
|
<Switch>
|
||||||
<Route exact={true}>
|
<Route
|
||||||
|
exact={true}
|
||||||
|
path={['/bills/:custom_view_id/custom_view', '/bills']}
|
||||||
|
>
|
||||||
<BillViewTabs />
|
<BillViewTabs />
|
||||||
<BillsDataTable
|
<BillsDataTable
|
||||||
onDeleteBill={handleDeleteBill}
|
onDeleteBill={handleDeleteBill}
|
||||||
|
|||||||
@@ -38,51 +38,34 @@ function BillViewTabs({
|
|||||||
const { custom_view_id: customViewId = null } = useParams();
|
const { custom_view_id: customViewId = null } = useParams();
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
changeBillView(customViewId || -1);
|
|
||||||
setTopbarEditView(customViewId);
|
setTopbarEditView(customViewId);
|
||||||
changePageSubtitle(customViewId && viewItem ? viewItem.name : '');
|
changePageSubtitle(customViewId && viewItem ? viewItem.name : '');
|
||||||
|
|
||||||
addBillsTableQueries({
|
|
||||||
custom_view_id: customViewId,
|
|
||||||
});
|
|
||||||
return () => {
|
|
||||||
setTopbarEditView(null);
|
|
||||||
changePageSubtitle('');
|
|
||||||
changeBillView(null);
|
|
||||||
};
|
|
||||||
}, [customViewId, addBillsTableQueries, changeBillView]);
|
|
||||||
|
|
||||||
useUpdateEffect(() => {
|
|
||||||
onViewChanged && onViewChanged(customViewId);
|
|
||||||
}, [customViewId]);
|
}, [customViewId]);
|
||||||
|
|
||||||
const debounceChangeHistory = useRef(
|
|
||||||
debounce((toUrl) => {
|
|
||||||
history.push(toUrl);
|
|
||||||
}, 250),
|
|
||||||
);
|
|
||||||
// Handle click a new view tab.
|
// Handle click a new view tab.
|
||||||
const handleClickNewView = () => {
|
const handleClickNewView = () => {
|
||||||
setTopbarEditView(null);
|
setTopbarEditView(null);
|
||||||
history.push('/custom_views/invoices/new');
|
history.push('/custom_views/invoices/new');
|
||||||
};
|
};
|
||||||
|
|
||||||
const handleTabsChange = (viewId) => {
|
const handleTabsChange = (viewId) => {
|
||||||
const toPath = viewId ? `${viewId}/custom_view` : '';
|
changeBillView(viewId || -1);
|
||||||
debounceChangeHistory.current(`/bills/${toPath}`);
|
addBillsTableQueries({
|
||||||
|
custom_view_id: customViewId || null,
|
||||||
|
});
|
||||||
setTopbarEditView(viewId);
|
setTopbarEditView(viewId);
|
||||||
};
|
};
|
||||||
|
|
||||||
const tabs = billsViews.map((view) => ({
|
const tabs = billsViews.map((view) => ({
|
||||||
...pick(view, ['name', 'id']),
|
...pick(view, ['name', 'id']),
|
||||||
}));
|
}));
|
||||||
|
|
||||||
console.log(billsViews, 'billsViews');
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Navbar className={'navbar--dashboard-views'}>
|
<Navbar className={'navbar--dashboard-views'}>
|
||||||
<NavbarGroup align={Alignment.LEFT}>
|
<NavbarGroup align={Alignment.LEFT}>
|
||||||
<DashboardViewsTabs
|
<DashboardViewsTabs
|
||||||
initialViewId={customViewId}
|
initialViewId={customViewId}
|
||||||
baseUrl={'/bills'}
|
resourceName={'bills'}
|
||||||
tabs={tabs}
|
tabs={tabs}
|
||||||
onNewViewTabClick={handleClickNewView}
|
onNewViewTabClick={handleClickNewView}
|
||||||
onChange={handleTabsChange}
|
onChange={handleTabsChange}
|
||||||
|
|||||||
@@ -60,24 +60,9 @@ function BillsDataTable({
|
|||||||
onOpenBill,
|
onOpenBill,
|
||||||
onSelectedRowsChange,
|
onSelectedRowsChange,
|
||||||
}) {
|
}) {
|
||||||
const { custom_view_id: customViewId } = useParams();
|
|
||||||
const { formatMessage } = useIntl();
|
const { formatMessage } = useIntl();
|
||||||
const isLoadedBefore = useIsValuePassed(billsLoading, false);
|
const isLoadedBefore = useIsValuePassed(billsLoading, false);
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
if (customViewId) {
|
|
||||||
changeCurrentView(customViewId);
|
|
||||||
setTopbarEditView(customViewId);
|
|
||||||
}
|
|
||||||
changePageSubtitle(customViewId && viewMeta ? viewMeta.name : '');
|
|
||||||
}, [
|
|
||||||
customViewId,
|
|
||||||
changeCurrentView,
|
|
||||||
changePageSubtitle,
|
|
||||||
setTopbarEditView,
|
|
||||||
viewMeta,
|
|
||||||
]);
|
|
||||||
|
|
||||||
const handleFetchData = useCallback(
|
const handleFetchData = useCallback(
|
||||||
({ pageIndex, pageSize, sortBy }) => {
|
({ pageIndex, pageSize, sortBy }) => {
|
||||||
const page = pageIndex + 1;
|
const page = pageIndex + 1;
|
||||||
|
|||||||
@@ -21,7 +21,8 @@ export const fetchBillsTable = ({ query = {} }) => {
|
|||||||
payload: {
|
payload: {
|
||||||
bills: response.data.bills,
|
bills: response.data.bills,
|
||||||
pagination: response.data.pagination,
|
pagination: response.data.pagination,
|
||||||
customViewId: response.data.customViewId || -1,
|
customViewId:
|
||||||
|
response.data?.filter_meta?.view?.custom_view_id || -1,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
dispatch({
|
dispatch({
|
||||||
@@ -34,7 +35,8 @@ export const fetchBillsTable = ({ query = {} }) => {
|
|||||||
type: t.BILLS_PAGINATION_SET,
|
type: t.BILLS_PAGINATION_SET,
|
||||||
payload: {
|
payload: {
|
||||||
pagination: response.data.pagination,
|
pagination: response.data.pagination,
|
||||||
customViewId: response.data.customViewId || -1,
|
customViewId:
|
||||||
|
response.data?.filter_meta?.view?.custom_view_id || -1,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
dispatch({
|
dispatch({
|
||||||
@@ -118,27 +120,32 @@ export const editBill = (id, form) => {
|
|||||||
});
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
export const fetchDueBills = ({ vendorId }) => (dispatch) => new Promise((resolve, reject) => {
|
export const fetchDueBills = ({ vendorId }) => (dispatch) =>
|
||||||
|
new Promise((resolve, reject) => {
|
||||||
const params = { vendor_id: vendorId };
|
const params = { vendor_id: vendorId };
|
||||||
|
|
||||||
ApiService.get(`purchases/bills/due`, { params }).then((response) => {
|
ApiService.get(`purchases/bills/due`, { params })
|
||||||
|
.then((response) => {
|
||||||
dispatch({
|
dispatch({
|
||||||
type: t.BILLS_ITEMS_SET,
|
type: t.BILLS_ITEMS_SET,
|
||||||
payload: {
|
payload: {
|
||||||
bills: response.data.bills,
|
bills: response.data.bills,
|
||||||
},
|
},
|
||||||
});
|
});
|
||||||
if ( vendorId ) {
|
if (vendorId) {
|
||||||
dispatch({
|
dispatch({
|
||||||
type: t.BILLS_PAYABLE_BY_VENDOR_ID,
|
type: t.BILLS_PAYABLE_BY_VENDOR_ID,
|
||||||
payload: {
|
payload: {
|
||||||
bills: response.data.bills,
|
bills: response.data.bills,
|
||||||
}
|
},
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
resolve(response);
|
resolve(response);
|
||||||
}).catch(error => { reject(error) });
|
})
|
||||||
});
|
.catch((error) => {
|
||||||
|
reject(error);
|
||||||
|
});
|
||||||
|
});
|
||||||
|
|
||||||
export const openBill = ({ id }) => {
|
export const openBill = ({ id }) => {
|
||||||
return (dispatch) => ApiService.post(`purchases/bills/${id}/open`);
|
return (dispatch) => ApiService.post(`purchases/bills/${id}/open`);
|
||||||
|
|||||||
Reference in New Issue
Block a user