From 8bf64c68e0da527a77552076c5dfbb06eacfd373 Mon Sep 17 00:00:00 2001 From: elforjani13 <39470382+elforjani13@users.noreply.github.com> Date: Thu, 3 Feb 2022 00:27:42 +0200 Subject: [PATCH] feat(warehouseTransfer): add crud warehouse transfer. --- src/common/tables.js | 1 + .../WarehouseTransferDetailDrawerProvider.js | 4 +- .../WarehouseTransferForm.js | 4 +- .../WarehouseTransferFormPage.js | 7 +- .../WarehouseTransferFormProvider.js | 14 +++- .../WarehouseTransfersActionsBar.js | 62 ++++++++++++++-- .../WarehouseTransfersDataTable.js | 70 +++++++++++++------ .../WarehouseTransfersEmptyStatus.js | 2 +- .../WarehouseTransfersList.js | 40 +++++++++-- .../WarehouseTransfersListProvider.js | 58 ++++++++++++++- .../WarehouseTransfersViewTabs.js | 28 ++++++-- .../WarehouseTransfersLanding/components.js | 31 ++++---- .../withWarehouseTransfers.js | 19 +++++ .../withWarehouseTransfersActions.js | 13 ++++ src/hooks/query/warehouses.js | 33 +++++++-- src/routes/dashboard.js | 7 +- .../warehouseTransfer.actions.js | 14 ++++ .../warehouseTransfer.reducer.js | 34 +++++++++ .../warehouseTransfer.selector.js | 33 +++++++++ .../warehouseTransfer.type.js | 4 ++ src/store/reducers.js | 2 + src/store/types.js | 4 +- 22 files changed, 407 insertions(+), 77 deletions(-) create mode 100644 src/containers/WarehouseTransfers/WarehouseTransfersLanding/withWarehouseTransfers.js create mode 100644 src/containers/WarehouseTransfers/WarehouseTransfersLanding/withWarehouseTransfersActions.js create mode 100644 src/store/WarehouseTransfer/warehouseTransfer.actions.js create mode 100644 src/store/WarehouseTransfer/warehouseTransfer.reducer.js create mode 100644 src/store/WarehouseTransfer/warehouseTransfer.selector.js create mode 100644 src/store/WarehouseTransfer/warehouseTransfer.type.js diff --git a/src/common/tables.js b/src/common/tables.js index 59d6ca127..59c50dff7 100644 --- a/src/common/tables.js +++ b/src/common/tables.js @@ -16,6 +16,7 @@ export const TABLES = { CASHFLOW_Transactions: 'cashflow_transactions', CREDIT_NOTES: 'credit_notes', VENDOR_CREDITS: 'vendor_credits', + WAREHOUSE_TRANSFERS:'warehouse_transfers' }; export const TABLE_SIZE = { diff --git a/src/containers/Drawers/WarehouseTransferDetailDrawer/WarehouseTransferDetailDrawerProvider.js b/src/containers/Drawers/WarehouseTransferDetailDrawer/WarehouseTransferDetailDrawerProvider.js index 371131568..b470c954f 100644 --- a/src/containers/Drawers/WarehouseTransferDetailDrawer/WarehouseTransferDetailDrawerProvider.js +++ b/src/containers/Drawers/WarehouseTransferDetailDrawer/WarehouseTransferDetailDrawerProvider.js @@ -9,10 +9,10 @@ const WarehouseTransferDetailDrawerContext = React.createContext(); * Warehouse transfer detail drawer provider. */ function WarehouseTransferDetailDrawerProvider({ - warehouseTransferId = 5, + warehouseTransferId, ...props }) { - // Handle fetch invoice detail. + // Handle fetch warehouse transfer detail. const { data: warehouseTransfer, isLoading: isWarehouseTransferLoading } = useWarehouseTransfer(warehouseTransferId, { enabled: !!warehouseTransferId, diff --git a/src/containers/WarehouseTransfers/WarehouseTransferForm/WarehouseTransferForm.js b/src/containers/WarehouseTransfers/WarehouseTransferForm/WarehouseTransferForm.js index 1d172e6c4..760a8e306 100644 --- a/src/containers/WarehouseTransfers/WarehouseTransferForm/WarehouseTransferForm.js +++ b/src/containers/WarehouseTransfers/WarehouseTransferForm/WarehouseTransferForm.js @@ -53,8 +53,8 @@ function WarehouseTransferForm({ // Form initial values. const initialValues = React.useMemo( () => ({ - ...(!isEmpty(null) - ? { ...transformToEditForm(null) } + ...(!isEmpty(warehouseTransfer) + ? { ...transformToEditForm(warehouseTransfer) } : { ...defaultWarehouseTransfer, entries: orderingLinesIndexes(defaultWarehouseTransfer.entries), diff --git a/src/containers/WarehouseTransfers/WarehouseTransferForm/WarehouseTransferFormPage.js b/src/containers/WarehouseTransfers/WarehouseTransferForm/WarehouseTransferFormPage.js index b9862488c..e7a622010 100644 --- a/src/containers/WarehouseTransfers/WarehouseTransferForm/WarehouseTransferFormPage.js +++ b/src/containers/WarehouseTransfers/WarehouseTransferForm/WarehouseTransferFormPage.js @@ -1,6 +1,7 @@ import React from 'react'; +import { useParams } from 'react-router-dom'; -import '../../../style/pages/WarehouseTransfers/PageForm.scss' +import '../../../style/pages/WarehouseTransfers/PageForm.scss'; import WarehouseTransferForm from './WarehouseTransferForm'; import { WarehouseTransferFormProvider } from './WarehouseTransferFormProvider'; @@ -8,8 +9,10 @@ import { WarehouseTransferFormProvider } from './WarehouseTransferFormProvider'; * WarehouseTransfer form page. */ export default function WarehouseTransferFormPage() { + const { id } = useParams(); + const idAsInteger = parseInt(id, 10); return ( - + ); diff --git a/src/containers/WarehouseTransfers/WarehouseTransferForm/WarehouseTransferFormProvider.js b/src/containers/WarehouseTransfers/WarehouseTransferForm/WarehouseTransferFormProvider.js index 5c57d645e..1570ad160 100644 --- a/src/containers/WarehouseTransfers/WarehouseTransferForm/WarehouseTransferFormProvider.js +++ b/src/containers/WarehouseTransfers/WarehouseTransferForm/WarehouseTransferFormProvider.js @@ -3,6 +3,7 @@ import DashboardInsider from 'components/Dashboard/DashboardInsider'; import { useItems, useWarehouses, + useWarehouseTransfer, useCreateWarehouseTransfer, useEditWarehouseTransfer, } from 'hooks/query'; @@ -24,6 +25,12 @@ function WarehouseTransferFormProvider({ warehouseTransferId, ...props }) { stringified_filter_roles: ITEMS_FILTER_ROLES_QUERY, }); + // Handle fetch warehouse transfer detail. + const { data: warehouseTransfer, isLoading: isWarehouseTransferLoading } = + useWarehouseTransfer(warehouseTransferId, { + enabled: !!warehouseTransferId, + }); + // Fetch warehouses list. const { data: warehouses, @@ -47,7 +54,7 @@ function WarehouseTransferFormProvider({ warehouseTransferId, ...props }) { const provider = { items, warehouses, - warehouseTransfer: [], + warehouseTransfer, isItemsFetching, isWarehouesFetching, @@ -58,9 +65,12 @@ function WarehouseTransferFormProvider({ warehouseTransferId, ...props }) { createWarehouseTransferMutate, editWarehouseTransferMutate, }; + return ( diff --git a/src/containers/WarehouseTransfers/WarehouseTransfersLanding/WarehouseTransfersActionsBar.js b/src/containers/WarehouseTransfers/WarehouseTransfersLanding/WarehouseTransfersActionsBar.js index 048a7151f..c0ad7a97e 100644 --- a/src/containers/WarehouseTransfers/WarehouseTransfersLanding/WarehouseTransfersActionsBar.js +++ b/src/containers/WarehouseTransfers/WarehouseTransfersLanding/WarehouseTransfersActionsBar.js @@ -18,6 +18,11 @@ import { } from 'components'; import DashboardActionsBar from 'components/Dashboard/DashboardActionsBar'; +import { useWarehouseTranfersListContext } from './WarehouseTransfersListProvider'; + +import withWarehouseTransfers from './withWarehouseTransfers'; +import withWarehouseTransfersActions from './withWarehouseTransfersActions'; +import withSettings from '../../Settings/withSettings'; import withSettingsActions from 'containers/Settings/withSettingsActions'; import { compose } from 'utils'; @@ -26,11 +31,24 @@ import { compose } from 'utils'; * Warehouse Transfers actions bar. */ function WarehouseTransfersActionsBar({ + // #withWarehouseTransfers + warehouseTransferFilterRoles, + + // #withWarehouseTransfersActions + setWarehouseTransferTableState, + + // #withSettings + warehouseTransferTableSize, + // #withSettingsActions addSetting, }) { const history = useHistory(); + // credit note list context. + const { WarehouseTransferView, fields, refresh } = + useWarehouseTranfersListContext(); + // Handle new warehouse transfer button click. const handleClickNewWarehouseTransfer = () => { history.push('/warehouses-transfers/new'); @@ -38,14 +56,19 @@ function WarehouseTransfersActionsBar({ // Handle click a refresh warehouse transfers const handleRefreshBtnClick = () => { - // refresh(); + refresh(); }; // Handle views tab change. - const handleTabChange = (view) => {}; + const handleTabChange = (view) => { + setWarehouseTransferTableState({ viewSlug: view ? view.slug : null }); + }; // Handle table row size change. - const handleTableRowSizeChange = (size) => {}; + const handleTableRowSizeChange = (size) => { + addSetting('warehouseTransfer', 'tableSize', size); + }; + return ( @@ -63,6 +86,22 @@ function WarehouseTransfersActionsBar({ onClick={handleClickNewWarehouseTransfer} /> + + { + setWarehouseTransferTableState({ filterRoles: filterConditions }); + }, + }} + > + + +