From 13da985864d69fe759300c1f6942cb63c0244174 Mon Sep 17 00:00:00 2001 From: elforjani13 <39470382+elforjani13@users.noreply.github.com> Date: Sun, 23 Jan 2022 14:07:23 +0200 Subject: [PATCH 001/207] feat(warehouseTransfer): add warehouseTransfer. --- src/common/classes.js | 1 + src/common/drawers.js | 3 +- src/components/DrawersContainer.js | 2 + src/config/sidebarMenu.js | 8 + .../WarehouseTransferNumberDialogContent.js | 103 +++++++++ .../WarehouseTransferNumberDialogProvider.js | 34 +++ .../WarehouseTransferNumberDialog/index.js | 40 ++++ .../WarehouseTransferDetail.js | 39 ++++ .../WarehouseTransferDetailActionsBar.js | 74 ++++++ .../WarehouseTransferDetailDrawerContent.js | 23 ++ .../WarehouseTransferDetailDrawerProvider.js | 43 ++++ .../WarehouseTransferDetailHeader.js | 59 +++++ .../WarehouseTransferDetailPanel.js | 17 ++ .../WarehouseTransferDetailTable.js | 22 ++ .../WarehouseTransferDetailDrawer/index.js | 36 +++ .../WarehouseTransferDetailDrawer/utils.js | 31 +++ src/containers/Settings/withSettings.js | 1 + .../WarehouseTransferEditorField.js | 38 ++++ .../WarehouseTransferFloatingActions.js | 0 .../WarehouseTransferForm.js | 89 ++++++++ .../WarehouseTransferForm.schema.js | 28 +++ .../WarehouseTransferFormDialog.js | 23 ++ .../WarehouseTransferFormEntriesTable.js | 42 ++++ .../WarehouseTransferFormFooter.js | 42 ++++ .../WarehouseTransferFormHeader.js | 20 ++ .../WarehouseTransferFormHeaderFields.js | 212 ++++++++++++++++++ .../WarehouseTransferFormPage.js | 16 ++ .../WarehouseTransferFormProvider.js | 42 ++++ .../WarehouseTransferForm/utils.js | 55 +++++ .../WarehouseTransfersActionsBar.js | 99 ++++++++ .../WarehouseTransfersDataTable.js | 108 +++++++++ .../WarehouseTransfersEmptyStatus.js | 32 +++ .../WarehouseTransfersList.js | 25 +++ .../WarehouseTransfersListProvider.js | 29 +++ .../WarehouseTransfersViewTabs.js | 37 +++ .../WarehouseTransfersLanding/components.js | 121 ++++++++++ src/containers/WarehouseTransfers/utils.js | 64 ++++++ src/hooks/query/settings.js | 11 + src/hooks/query/types.js | 7 + src/lang/en/index.json | 38 +++- src/routes/dashboard.js | 30 +++ src/store/settings/settings.reducer.js | 3 + .../pages/WarehouseTransfers/PageForm.scss | 50 +++++ 43 files changed, 1787 insertions(+), 10 deletions(-) create mode 100644 src/containers/Dialogs/WarehouseTransferNumberDialog/WarehouseTransferNumberDialogContent.js create mode 100644 src/containers/Dialogs/WarehouseTransferNumberDialog/WarehouseTransferNumberDialogProvider.js create mode 100644 src/containers/Dialogs/WarehouseTransferNumberDialog/index.js create mode 100644 src/containers/Drawers/WarehouseTransferDetailDrawer/WarehouseTransferDetail.js create mode 100644 src/containers/Drawers/WarehouseTransferDetailDrawer/WarehouseTransferDetailActionsBar.js create mode 100644 src/containers/Drawers/WarehouseTransferDetailDrawer/WarehouseTransferDetailDrawerContent.js create mode 100644 src/containers/Drawers/WarehouseTransferDetailDrawer/WarehouseTransferDetailDrawerProvider.js create mode 100644 src/containers/Drawers/WarehouseTransferDetailDrawer/WarehouseTransferDetailHeader.js create mode 100644 src/containers/Drawers/WarehouseTransferDetailDrawer/WarehouseTransferDetailPanel.js create mode 100644 src/containers/Drawers/WarehouseTransferDetailDrawer/WarehouseTransferDetailTable.js create mode 100644 src/containers/Drawers/WarehouseTransferDetailDrawer/index.js create mode 100644 src/containers/Drawers/WarehouseTransferDetailDrawer/utils.js create mode 100644 src/containers/WarehouseTransfers/WarehouseTransferForm/WarehouseTransferEditorField.js create mode 100644 src/containers/WarehouseTransfers/WarehouseTransferForm/WarehouseTransferFloatingActions.js create mode 100644 src/containers/WarehouseTransfers/WarehouseTransferForm/WarehouseTransferForm.js create mode 100644 src/containers/WarehouseTransfers/WarehouseTransferForm/WarehouseTransferForm.schema.js create mode 100644 src/containers/WarehouseTransfers/WarehouseTransferForm/WarehouseTransferFormDialog.js create mode 100644 src/containers/WarehouseTransfers/WarehouseTransferForm/WarehouseTransferFormEntriesTable.js create mode 100644 src/containers/WarehouseTransfers/WarehouseTransferForm/WarehouseTransferFormFooter.js create mode 100644 src/containers/WarehouseTransfers/WarehouseTransferForm/WarehouseTransferFormHeader.js create mode 100644 src/containers/WarehouseTransfers/WarehouseTransferForm/WarehouseTransferFormHeaderFields.js create mode 100644 src/containers/WarehouseTransfers/WarehouseTransferForm/WarehouseTransferFormPage.js create mode 100644 src/containers/WarehouseTransfers/WarehouseTransferForm/WarehouseTransferFormProvider.js create mode 100644 src/containers/WarehouseTransfers/WarehouseTransferForm/utils.js create mode 100644 src/containers/WarehouseTransfers/WarehouseTransfersLanding/WarehouseTransfersActionsBar.js create mode 100644 src/containers/WarehouseTransfers/WarehouseTransfersLanding/WarehouseTransfersDataTable.js create mode 100644 src/containers/WarehouseTransfers/WarehouseTransfersLanding/WarehouseTransfersEmptyStatus.js create mode 100644 src/containers/WarehouseTransfers/WarehouseTransfersLanding/WarehouseTransfersList.js create mode 100644 src/containers/WarehouseTransfers/WarehouseTransfersLanding/WarehouseTransfersListProvider.js create mode 100644 src/containers/WarehouseTransfers/WarehouseTransfersLanding/WarehouseTransfersViewTabs.js create mode 100644 src/containers/WarehouseTransfers/WarehouseTransfersLanding/components.js create mode 100644 src/containers/WarehouseTransfers/utils.js create mode 100644 src/style/pages/WarehouseTransfers/PageForm.scss diff --git a/src/common/classes.js b/src/common/classes.js index 6b0872396..1bbcf9873 100644 --- a/src/common/classes.js +++ b/src/common/classes.js @@ -41,6 +41,7 @@ const CLASSES = { PAGE_FORM_EXPENSE: 'page-form--expense', PAGE_FORM_CREDIT_NOTE:'page-form--credit-note', PAGE_FORM_VENDOR_CREDIT_NOTE:'page-form--vendor-credit-note', + PAGE_FORM_WAREHOUSE_TRANSFER:'page-form--warehouse-transfer', FORM_GROUP_LIST_SELECT: 'form-group--select-list', diff --git a/src/common/drawers.js b/src/common/drawers.js index 5ec6d05a2..205d7fc53 100644 --- a/src/common/drawers.js +++ b/src/common/drawers.js @@ -17,5 +17,6 @@ export const DRAWERS = { CREDIT_NOTE_DETAIL_DRAWER: 'credit-note-detail-drawer', VENDOR_CREDIT_DETAIL_DRAWER: 'vendor-credit-detail-drawer', REFUND_CREDIT_NOTE_DETAIL_DRAWER:'refund-credit-detail-drawer', - REFUND_VENDOR_CREDIT_DETAIL_DRAWER:'refund-vendor-detail-drawer' + REFUND_VENDOR_CREDIT_DETAIL_DRAWER:'refund-vendor-detail-drawer', + WAREHOUSE_TRANSFER_DETAIL_DRAWER:'warehouse-transfer-detail-drawer' }; diff --git a/src/components/DrawersContainer.js b/src/components/DrawersContainer.js index e508519bd..17090b5d9 100644 --- a/src/components/DrawersContainer.js +++ b/src/components/DrawersContainer.js @@ -21,6 +21,7 @@ import CreditNoteDetailDrawer from '../containers/Drawers/CreditNoteDetailDrawer import VendorCreditDetailDrawer from '../containers/Drawers/VendorCreditDetailDrawer'; import RefundCreditNoteDetailDrawer from '../containers/Drawers/RefundCreditNoteDetailDrawer'; import RefundVendorCreditDetailDrawer from '../containers/Drawers/RefundVendorCreditDetailDrawer'; +import WarehouseTransferDetailDrawer from '../containers/Drawers/WarehouseTransferDetailDrawer' import { DRAWERS } from 'common/drawers'; @@ -59,6 +60,7 @@ export default function DrawersContainer() { + ); } diff --git a/src/config/sidebarMenu.js b/src/config/sidebarMenu.js index 1ea65f2a0..14812dfea 100644 --- a/src/config/sidebarMenu.js +++ b/src/config/sidebarMenu.js @@ -78,6 +78,10 @@ export default [ ability: InventoryAdjustmentAction.View, }, }, + { + text: , + href: '/warehouse-transfers', + }, { text: , href: '/items/categories', @@ -113,6 +117,10 @@ export default [ ability: ItemAction.Create, }, }, + { + text: , + href: '/warehouse-transfers/new', + }, { text: , href: '/items/new', diff --git a/src/containers/Dialogs/WarehouseTransferNumberDialog/WarehouseTransferNumberDialogContent.js b/src/containers/Dialogs/WarehouseTransferNumberDialog/WarehouseTransferNumberDialogContent.js new file mode 100644 index 000000000..a992b8be0 --- /dev/null +++ b/src/containers/Dialogs/WarehouseTransferNumberDialog/WarehouseTransferNumberDialogContent.js @@ -0,0 +1,103 @@ +import React from 'react'; +import intl from 'react-intl-universal'; +import { useSaveSettings } from 'hooks/query'; + +import { WarehouseTransferNumberDialogProvider } from './WarehouseTransferNumberDialogProvider'; +import ReferenceNumberForm from 'containers/JournalNumber/ReferenceNumberForm'; + +import withDialogActions from 'containers/Dialog/withDialogActions'; +import withSettings from 'containers/Settings/withSettings'; +import withSettingsActions from 'containers/Settings/withSettingsActions'; +import { compose } from 'utils'; +import { + transformFormToSettings, + transformSettingsToForm, +} from 'containers/JournalNumber/utils'; + +/** + * Warehouse transfer no dialog content. + */ +function WarehouseTransferNumberDialogContent({ + // #ownProps + initialValues, + onConfirm, + + // #withSettings + nextNumber, + numberPrefix, + autoIncrement, + + // #withDialogActions + closeDialog, +}) { + const { mutateAsync: saveSettings } = useSaveSettings(); + const [referenceFormValues, setReferenceFormValues] = React.useState(null); + + // Handle the submit form. + const handleSubmitForm = (values, { setSubmitting }) => { + // Handle the form success. + const handleSuccess = () => { + setSubmitting(false); + closeDialog('warehouse-transfer-no-form'); + onConfirm(values); + }; + + // Handle the form errors. + const handleErrors = () => { + setSubmitting(false); + }; + + if (values.incrementMode === 'manual-transaction') { + handleSuccess(); + return; + } + // Transformes the form values to settings to save it. + const options = transformFormToSettings(values, 'warehouse_transfer'); + + // Save the settings. + saveSettings({ options }).then(handleSuccess).catch(handleErrors); + }; + + // Handle the dialog close. + const handleClose = () => { + closeDialog('warehouse-transfer-no-form'); + }; + + // Handle form change. + const handleChange = (values) => { + setReferenceFormValues(values); + }; + // Description. + const description = + referenceFormValues?.incrementMode === 'auto' + ? intl.get('warehouse_transfer.auto_increment.auto') + : intl.get('warehouse_transfer.auto_increment.manually'); + + return ( + + + + ); +} +export default compose( + withDialogActions, + withSettingsActions, + withSettings(({ warehouseTransferSettings }) => ({ + autoIncrement: warehouseTransferSettings?.autoIncrement, + nextNumber: warehouseTransferSettings?.nextNumber, + numberPrefix: warehouseTransferSettings?.numberPrefix, + })), +)(WarehouseTransferNumberDialogContent); diff --git a/src/containers/Dialogs/WarehouseTransferNumberDialog/WarehouseTransferNumberDialogProvider.js b/src/containers/Dialogs/WarehouseTransferNumberDialog/WarehouseTransferNumberDialogProvider.js new file mode 100644 index 000000000..0bbad114f --- /dev/null +++ b/src/containers/Dialogs/WarehouseTransferNumberDialog/WarehouseTransferNumberDialogProvider.js @@ -0,0 +1,34 @@ +import React from 'react'; +import { DialogContent } from 'components'; +import { useSettingsWarehouseTransfers } from 'hooks/query'; + +const WarehouseTransferNumberDilaogContext = React.createContext(); + +/** + * Warehouse transfer number dialog provier. + */ +function WarehouseTransferNumberDialogProvider({ query, ...props }) { + const { isLoading: isSettingsLoading } = useSettingsWarehouseTransfers(); + + // Provider payload. + const provider = { + isSettingsLoading, + }; + + return ( + + + + ); +} + +const useWarehouseTransferNumberDialogContext = () => + React.useContext(WarehouseTransferNumberDilaogContext); + +export { + WarehouseTransferNumberDialogProvider, + useWarehouseTransferNumberDialogContext, +}; diff --git a/src/containers/Dialogs/WarehouseTransferNumberDialog/index.js b/src/containers/Dialogs/WarehouseTransferNumberDialog/index.js new file mode 100644 index 000000000..6832ec825 --- /dev/null +++ b/src/containers/Dialogs/WarehouseTransferNumberDialog/index.js @@ -0,0 +1,40 @@ +import React from 'react'; +import { FormattedMessage as T } from 'components'; +import { Dialog, DialogSuspense } from 'components'; +import withDialogRedux from 'components/DialogReduxConnect'; +import { compose, saveInvoke } from 'utils'; + +const WarehouseTransferNumberDialogContent = React.lazy(() => + import('./WarehouseTransferNumberDialogContent'), +); + +/** + * Warehouse transfer number dialog. + */ +function WarehouseTransferNumberDilaog({ + dialogName, + payload: { initialFormValues }, + isOpen, + onConfirm, +}) { + const handleConfirm = (values) => { + saveInvoke(onConfirm, values); + }; + return ( + } + name={dialogName} + autoFocus={true} + canEscapeKeyClose={true} + isOpen={isOpen} + > + + + + + ); +} +export default compose(withDialogRedux())(WarehouseTransferNumberDilaog); diff --git a/src/containers/Drawers/WarehouseTransferDetailDrawer/WarehouseTransferDetail.js b/src/containers/Drawers/WarehouseTransferDetailDrawer/WarehouseTransferDetail.js new file mode 100644 index 000000000..4296e419c --- /dev/null +++ b/src/containers/Drawers/WarehouseTransferDetailDrawer/WarehouseTransferDetail.js @@ -0,0 +1,39 @@ +import React from 'react'; +import { Tab } from '@blueprintjs/core'; +import styled from 'styled-components'; +import intl from 'react-intl-universal'; +import { DrawerMainTabs } from 'components'; + +import WarehouseTransferDetailPanel from './WarehouseTransferDetailPanel'; +import WarehouseTransferDetailActionsBar from './WarehouseTransferDetailActionsBar'; + +/** + * Warehouse transfer view detail. + * @returns {React.JSX} + */ +export default function WarehouseTransferDetail() { + return ( + + + + + ); +} + +/** + * Warehouse transfer details tabs. + * @returns {React.JSX} + */ +function WarehouseTransferDetailsTabs() { + return ( + + } + /> + + ); +} + +const WarehouseTransferRoot = styled.div``; diff --git a/src/containers/Drawers/WarehouseTransferDetailDrawer/WarehouseTransferDetailActionsBar.js b/src/containers/Drawers/WarehouseTransferDetailDrawer/WarehouseTransferDetailActionsBar.js new file mode 100644 index 000000000..9202666f4 --- /dev/null +++ b/src/containers/Drawers/WarehouseTransferDetailDrawer/WarehouseTransferDetailActionsBar.js @@ -0,0 +1,74 @@ +import React from 'react'; +import { useHistory } from 'react-router-dom'; +import { + Button, + NavbarGroup, + Classes, + NavbarDivider, + Intent, +} from '@blueprintjs/core'; + +import { useWarehouseDetailDrawerContext } from './WarehouseTransferDetailDrawerProvider'; +import { + DrawerActionsBar, + Can, + Icon, + FormattedMessage as T, + If, +} from 'components'; +import withDialogActions from 'containers/Dialog/withDialogActions'; +import withAlertsActions from 'containers/Alert/withAlertActions'; +import withDrawerActions from 'containers/Drawer/withDrawerActions'; + +import { compose } from 'utils'; + +/** + * Warehouse transfer detail actions bar. + */ +function WarehouseTransferDetailActionsBar({ + // #withAlertsActions + openAlert, + + // #withDrawerActions + closeDrawer, +}) { + const history = useHistory(); + + // Handle edit warehosue transfer. + const handleEditWarehosueTransfer = () => { + // history.push(`/warehouse-transfers/${warehouseTransferId}/edit`); + closeDrawer('warehouse-transfer-detail-drawer'); + }; + + // Handle delete warehouse transfer. + const handleDeletetWarehosueTransfer = () => { + // openAlert('warehouse-transfer-delete', { warehouseTransferId }); + }; + + return ( + + +