{"version":3,"sources":["user/services/AuthHeader.js","constants/index.js","apis/UserAPI.js","user/services/AuthService.js","user/services/RedirectUrlService.js","user/Signup.js","components/common/LoginHeader.jsx","user/Login.js","utils/Theme.js","context/UserContext.js","components/common/Header.jsx","components/Parent.jsx","components/custom/CustomToolbar.js","apis/Api.jsx","utils/MiscellaniousUtils.js","utils/DateUtils.js","components/common/ConfirmationDialog.jsx","pages/POListingPage.jsx","components/common/InventoryPOSearch.jsx","components/common/InventorySelector.jsx","components/print/po-report/POReport.jsx","components/common/CustomerSearch.jsx","components/common/CustomerSelector.jsx","pages/PODetailsPage.jsx","pages/CabinetPullSheetPage.jsx","components/custom/CustomToolbarImport.js","pages/InventoryPOPage.jsx","components/common/InventorySearch.jsx","pages/InventoryPage.jsx","components/common/Progress.jsx","pages/UsersPage.jsx","pages/SalesTeamInventoryPage.jsx","user/SecuredRouter.jsx","App.js","reportWebVitals.js","index.js"],"names":["AuthorizationHeader","user","JSON","parse","localStorage","getItem","Authorization","HOST_NAME","ADMIN","value","label","NO_ACCESS","SALES","WAREHOUSE","INTERNAL_SERVER_ERROR","IMPORT","DISCONTINUE","DISCONTINUING","MAX_FILE_SIZE","MAX_FILE_SIZE_STRING","UserAPI","isLogin","httpClient","axios","create","baseURL","headers","defaults","post","interceptors","response","use","error","undefined","status","removeItem","window","location","href","Promise","reject","this","getHTTPClient","get","id","role","delete","username","AuthService","getCurrentUser","User","password","email","ResourceAPIs","login","then","data","setItem","stringify","loginErrorReason","register","userRole","REDIRECT_URL","url","removeRedirectUrl","Signup","props","validateInputs","state","setState","message","loading","confirmPassword","onChangeUsername","bind","onChangeEmail","onChangePassword","onChangeConfirmPassword","handleSignup","e","target","preventDefault","resMessage","toString","style","padding","Form","Group","controlId","Row","Label","Control","type","className","name","onChange","disabled","onClick","Component","drawerWidth","useStyles","makeStyles","theme","grow","flexGrow","maxHeight","menuButton","marginRight","spacing","title","display","breakpoints","up","sectionDesktop","sectionMobile","appBarShift","width","marginLeft","transition","transitions","easing","easeOut","duration","enteringScreen","drawer","flexShrink","drawerPaper","drawerHeader","alignItems","mixins","toolbar","justifyContent","content","sharp","leavingScreen","contentShift","appBar","zIndex","LoginHeader","classes","React","useState","setAnchorEl","mobileMoreAnchorEl","setMobileMoreAnchorEl","isMobileMenuOpen","Boolean","history","useHistory","handleProfileMenuOpen","event","currentTarget","mobileMenuId","renderMobileMenu","Menu","anchorEl","anchorOrigin","vertical","horizontal","keepMounted","transformOrigin","open","onClose","MenuItem","IconButton","aria-label","aria-controls","aria-haspopup","color","AppBar","position","backgroundColor","Toolbar","src","height","alt","push","edge","loginPageStyle","whiteSpace","backgroundImage","backgroundPosition","backgroundRepeat","backgroundSize","Login","handleLogin","authenticated","initAuthenticationFlow","getCurrentUserRole","res","RedirectUrlService","getRedirectUrl","reload","err","to","Box","Tab","Container","defaultActiveKey","Card","Body","Nav","fill","variant","Item","Link","eventKey","Content","Pane","Col","Image","roundedCircle","lightTheme","getMuiTheme","darkBaseTheme","palette","primary","main","primary1Color","Colors","accent1Color","textColor","alternateTextColor","snackbar","lightBaseTheme","toggle","trackOffColor","thumbOffColor","UserContext","createContext","UserProvider","Provider","fontFamily","Header","useContext","hasDrawer","isMenuOpen","handleMobileMenuClose","renderMenu","logout","Chip","icon","currentUser","Drawer","paper","Divider","ListItem","button","component","ListItemIcon","ListItemText","defaultProps","titleSection","paddingBottom","marginTop","paddingTop","root","Parent","children","muiTheme","Typography","defaultTheme","CustomToolbar","handleClick","selectedRows","buttonText","startIcon","Fragment","Tooltip","Button","disableElevation","withStyles","iconButton","API","customerId","put","inventory","poDetail","console","log","itemLocationId","qty","poId","customer","MySwal","withReactContent","Swal","alertError","msg","fire","alertSuccess","handleError","errMsg","trace","split","handleFileSizeExceedsError","format2NiceDate","date","d","Date","yyyy","getFullYear","month","getMonth","getMonthName","getDate","formatNo2TwoDigits","getHours","getMinutes","getSeconds","number","slice","ConfirmationDialog","contentText","onConfirm","Dialog","aria-labelledby","aria-describedby","DialogTitle","DialogContent","DialogContentText","DialogActions","autoFocus","reducer","field","handleDeleteItemDialogClose","bootstrapRoot","bootstrapInput","borderRadius","common","white","border","marginBottom","borderColor","boxShadow","fontSize","POListingPage","poList","setPoList","insertCustomerDialogOpen","setInsertCustomerDialogOpen","fname","lname","cnumber","address","initialState","useReducer","dispatch","focussedItem","setFocussedItem","deleteItemDialogOpen","setDeleteItemDialogOpen","retrievePOList","ResourceAPI","getAllPullOrders","list","rows","forEach","element","rowData","clientName","createdAt","catch","useEffect","handleInsertCustomerOpen","handleInsertCustomerClose","handleChange","columns","options","customBodyRender","tableMeta","updateValue","Delete","filterType","filter","print","viewColumns","selectableRows","download","elevation","customToolbar","TextField","required","fullWidth","InputProps","disableUnderline","input","InputLabelProps","shrink","createCustomer","createEmptyOrder","ResourceApi","deletePullOrder","InventoryPOSearch","onSearch","searchBtn","resetFullView","tableData","products","searchState","setSearchState","poNumber","setPoNumber","item","setColor","setLocation","setAvailableQty","Math","random","locationACKey","setLocationACKey","colorACKey","setColorACKey","handleInventorySearchChange","parseInt","newState","length","isNaN","setFormValues","handleOnkeyDown","keyCode","Grid","container","direction","xs","defaultValue","onKeyDown","Autocomplete","freeSolo","disableClearable","newValue","Set","map","option","renderInput","params","size","Clear","InventorySelector","orderId","onComplete","setProducts","setTableData","qtyDialogOpen","setQtyDialogOpen","itemQty","setItemQty","invId","setInvId","api","getAllInventoryDetails","tableDataWithRows","description","availableQty","createRows","handleQtyDialogClose","renderCustomToolBar","Add","disableToolbarSelect","search","filteredItems","_","o","every","v","k","startsWith","toLowerCase","sort","helperText","getOrderQtyHelperText","addInventoryToOrder","trigger","Print","margin","float","getCustomerName","poItems","row","index","CustomerSearch","setFname","setLname","setAddress","contact","setContact","handleCustomerSearchChange","CustomerSelector","customers","setCustomers","getAllCustomers","includes","PODetailsPage","useParams","Api","order","setOrder","setCustomer","setPoItems","invSelectorOpen","setinvSelectorOpen","customerSelectorOpen","setCustomerSelectorOpen","itemDeleteDialogOpen","setItemDeleteDialogOpen","getOrderDetails","getPullOrderDetails","getCustomer","getCustomerDetails","clientId","retrievePullOrderInventory","getPullOrderInventory","handleCreatePO","setOrderAsPulled","handleInvSelectorOpen","handleInvSelectorClose","handleCustomerSelectorClose","handleRevertOrder","setOrderAsReverted","isEditable","responsive","POReport","ArrowForward","PostAdd","Alert","severity","maxWidth","deleteInventoryFromOrder","CabinetPullSheetPage","CustomToolbarImport","onChangeFile","noValidate","autoComplete","selectedFileError","isProcessing","selectedFileInputKey","InsertDriveFile","InventoryPOPage","discontinueItemDialogOpen","setDiscontinueItemDialogOpen","inventoryUpdateDialogOpen","setInventoryUpdateDialogOpen","inventoryId","itemId","editState","setEditState","selectedFile","setSelectedFile","selectedDiscontinueFile","setSelectedDiscontinueFile","setSelectedFileError","setSelectedFileInputKey","setImportBtnText","setIsProcessing","mergeDiagnostics","setMergeDiagnostics","retrieveAllInventory","actionsShouldRender","handleDiscontinueItemDialogClose","handleUpdateInventoryClose","handleEditFormChange","validateInputsForDiscontinue","clearFrom","setCellProps","align","addStockToInventory","alert","Edit","Block","isAdmin","files","FormData","append","importInvStock","discontinueItemLocationsStock","dangerouslySetInnerHTML","__html","updateItemLocation","deleteInventoryLocation","discontinueInventoryLocation","InventorySearch","setDescription","descriptionACKey","setDescriptionACKey","InventoryPage","inventoryInsertDialogOpen","setInventoryInsertDialogOpen","pODetailInsertDialogOpen","setPODetailInsertDialogOpen","reorder","yellow","red","falloff","maxCapacity","locationDetails","initialPODetailState","initialLocationDetail","setInitialLocationDetail","statePODetail","dispatchPODetail","getAllInventory","handleInsertInventoryOpen","handleInsertInventoryClose","handleInsertPODetailClose","handlePODetailItemIdChange","dividers","insertInventoryItem","updateInventoryItem","Table","arr","insertPODetail","deleteInventoryItem","progress","left","top","Progress","CircularProgress","UsersPage","setUserList","setOpen","updateRoleDialogOpen","setUpdateRoleDialogOpen","usersApi","UserApi","retrieveAllUsers","getUsers","handleUpdateUserRoleDialogClose","FormControl","minWidth","Select","labelId","onOpen","newFocus","updateUser","deleteUser","EllipsisText","overflow","textOverflow","CHIP_MAX_WIDTH","SalesTeamInventoryPage","getReorderItems","accessor","Cell","original","quantity","filterable","pageSize","defaultFilterMethod","column","pivotId","String","_original","SecuredRouter","handleSessionInvalid","redirectUrl","forceUpdate","referrer","pathname","Qs","exact","path","CabinetPullSheet","App","LoginPage","reportWebVitals","onPerfEntry","Function","getCLS","getFID","getFCP","getLCP","getTTFB","ReactDOM","render","StrictMode","document","getElementById"],"mappings":"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","file":"static/js/main.1fa7266d.chunk.js","sourcesContent":["// we access protected resources, the HTTP request needs Authorization header\n// this method adds auth header\nexport function AuthorizationHeader() {\n const user = JSON.parse(localStorage.getItem('user'));\n\n if (user && user.Authorization) {\n return { Authorization: 'Bearer ' + user.Authorization };\n } else {\n return {};\n }\n}\n\nexport default function AuthHeader() {\n return {headers: AuthorizationHeader()}\n}\n","export const PROD_API_URL = \"https://jjit.ca/api\"\nexport const PROD_API_UNSECURE_URL = \"http://165.227.38.11:9090\";\nexport const LOCAL_API_URL = \"http://localhost:9090\";\nexport const HOST_NAME = PROD_API_URL;\n\n// User Roles\nexport const NO_ACCESS_OPTION = {value: \"NO_ACCESS\", label: \"Access Denied\"};\nexport const ADMIN = {value: \"ADMIN\", label: \"Admin\"};\nexport const CLIENT = {value: \"CLIENT\", label: \"Client\"};\nexport const NO_ACCESS = {value: \"NO_ACCESS\", label: \"Unauthorized\"};\nexport const SALES = {value: \"SALES\", label: \"Sales\"};\nexport const WAREHOUSE = {value: \"WAREHOUSE\", label: \"Warehouse\"};\n\nexport const userRoles = [\n NO_ACCESS_OPTION,\n ADMIN,\n CLIENT,\n];\n\nexport const INTERNAL_SERVER_ERROR = \"Internal server error!\";\nexport const IMPORT_TASK = \"Add Import Task\";\nexport const SAVE = \"Save\";\nexport const IMPORT = \"Import\";\nexport const IMPORTING = \"Importing...\";\nexport const DISCONTINUE = \"Discontinue\";\nexport const DISCONTINUING = \"Discontinuing...\";\n\nexport const ENTER_KEY_CODE = 13;\n\nexport const MAX_FILE_SIZE = 10000000; // 10MB\nexport const MAX_FILE_SIZE_STRING = \"10MB\"; // 10MB\n","import axios from 'axios';\nimport {AuthorizationHeader} from \"../user/services/AuthHeader\";\nimport {HOST_NAME} from \"../constants\";\nimport AuthService from \"../user/services/AuthService\";\n\nexport default class UserAPI {\n\n getHTTPClient(isLogin) {\n let httpClient = axios.create({\n baseURL: HOST_NAME,\n headers: AuthorizationHeader()\n });\n\n httpClient.defaults.headers.post['Content-Type'] = 'application/json';\n\n httpClient.interceptors.response.use(function (response) {\n return response;\n }, function (error) {\n if (error.response) {\n if (isLogin === undefined) {\n if (error.response.status === 403) {\n localStorage.removeItem('user');\n window.location.href = \"/\";\n }\n }\n }\n return Promise.reject(error);\n });\n\n return httpClient;\n }\n\n // Users\n\n getUsers() {\n return this.getHTTPClient().get('/users');\n }\n\n updateUser(id, role) {\n return this.getHTTPClient().post(\"/users/update-role?id=\" + id + \"&role=\" + role);\n }\n\n deleteUser(id) {\n return this.getHTTPClient().delete(`/users?id=${id}`);\n }\n\n getClientId() {\n return this.getHTTPClient().post(HOST_NAME + \"/users/client-id\",\n {username: AuthService.getCurrentUser().User});\n }\n\n // Authentication\n\n login(username, password) {\n return this.getHTTPClient(true).post(\"/login\", {username, password});\n }\n\n loginErrorReason(username) {\n return this.getHTTPClient().post(\"/users/error-reason\", {username});\n }\n\n register(username, email, password) {\n return this.getHTTPClient().post(\"/users/sign-up\", {\n username,\n email,\n password\n });\n }\n\n userRole(username) {\n return this.getHTTPClient().post(\"/users/role\", {\n username\n });\n }\n}\n"," import ResourceAPIs from '../../apis/UserAPI';\n\nclass AuthService {\n\n login(username, password) {\n return new ResourceAPIs().login(username, password).then(response => {\n if (response.data.Authorization) {\n localStorage.setItem(\"user\", JSON.stringify(response.data));\n }\n return response.data;\n });\n }\n\n loginErrorReason(username) {\n return new ResourceAPIs().loginErrorReason(username).then(response => {\n return response.data;\n });\n }\n\n logout() {\n localStorage.removeItem('user');\n window.location.href = \"/login\";\n }\n\n register(username, email, password) {\n return new ResourceAPIs().register(username, email, password);\n }\n\n getCurrentUser() {\n return JSON.parse(localStorage.getItem('user'));\n }\n\n getCurrentUserRole() {\n return localStorage.getItem('role');\n }\n\n userRole(username) {\n return new ResourceAPIs().userRole(username).then(response => {\n if (response.data) {\n localStorage.setItem(\"role\", response.data);\n }\n return response.data;\n });\n }\n}\n\nexport default new AuthService();\n","\nconst REDIRECT_URL = 'redirect-url';\n\n/**\n * Manage redirect url when user goes to a url before login.\n */\nclass RedirectUrlService {\n\n addRedirectUrl(url) {\n this.removeRedirectUrl();\n localStorage.setItem(REDIRECT_URL, url);\n }\n\n removeRedirectUrl() {\n localStorage.removeItem(REDIRECT_URL);\n }\n\n getRedirectUrl() {\n return localStorage.getItem(REDIRECT_URL);\n }\n}\n\nexport default new RedirectUrlService();\n","import React, {Component} from \"react\";\n\nimport AuthService from \"./services/AuthService\";\nimport Form from \"react-bootstrap/Form\";\nimport Row from \"react-bootstrap/Row\";\n//import {validEmail} from \"../utils/TypeUtils\";\n\nconst sucessMsg = \"You have successfully Signed Up!\\nPls contact admin to access application\";\n\nexport default class Signup extends Component {\n constructor(props) {\n super(props);\n this.onChangeUsername = this.onChangeUsername.bind(this);\n this.onChangeEmail = this.onChangeEmail.bind(this);\n this.onChangePassword = this.onChangePassword.bind(this);\n this.onChangeConfirmPassword = this.onChangeConfirmPassword.bind(this);\n this.handleSignup = this.handleSignup.bind(this);\n\n this.state = {\n username: \"\",\n email: \"\",\n password: \"\",\n confirmPassword: \"\",\n message: \"\",\n loading: false,\n };\n }\n\n onChangeUsername(e) {\n this.setState({\n username: e.target.value\n });\n }\n\n onChangeEmail(e) {\n this.setState({\n email: e.target.value\n });\n }\n\n onChangePassword(e) {\n this.setState({\n password: e.target.value\n });\n }\n\n onChangeConfirmPassword(e) {\n this.setState({\n confirmPassword: e.target.value\n });\n }\n\n handleSignup(e) {\n e.preventDefault();\n\n this.setState({\n message: \"\",\n loading: true\n });\n\n if (this.validateInputs()) {\n AuthService.register(this.state.username, this.state.email, this.state.password).then(\n () => {\n this.setState({\n loading: false,\n message: sucessMsg\n });\n },\n error => {\n const resMessage =\n (error.response &&\n error.response.data &&\n error.response.data.message) ||\n error.message ||\n error.toString();\n\n this.setState({\n loading: false,\n message: resMessage\n });\n }\n );\n }\n }\n\n validateInputs = () => {\n if (this.state.username === \"\") {\n this.setState({\n message: \"Username is required!\",\n loading: false,\n });\n return false;\n }\n\n if (this.state.email === \"\") {\n this.setState({\n message: \"Email is required!\",\n loading: false,\n });\n return false;\n }\n // if (!validEmail(this.state.email)) {\n // this.setState({\n // message: \"Email is invalid!\",\n // loading: false,\n // });\n // return false;\n // }\n\n if (this.state.password === \"\") {\n this.setState({\n message: \"Password is required!\",\n loading: false,\n });\n return false;\n }\n if (this.state.password !== this.state.confirmPassword) {\n this.setState({\n message: \"Password & Confirm Password in not matching!\",\n loading: false,\n });\n return false;\n }\n\n return true;\n };\n\n render() {\n return (\n
\n
\n \n \n Username\n \n \n \n\n \n \n Email\n \n \n \n\n \n \n Password\n \n \n \n\n \n \n Confirm Password\n \n \n \n\n \n \n {this.state.loading && (\n \n )}\n Sign Up\n \n \n\n
\n {this.state.message && (\n
\n
\n {this.state.message}\n
\n
\n )}\n
\n
\n );\n }\n}\n","import React from 'react';\nimport {makeStyles} from '@material-ui/core/styles';\nimport AppBar from '@material-ui/core/AppBar';\nimport Toolbar from '@material-ui/core/Toolbar';\nimport IconButton from '@material-ui/core/IconButton';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport Menu from '@material-ui/core/Menu';\nimport AccountCircle from '@material-ui/icons/AccountCircle';\nimport MoreIcon from '@material-ui/icons/MoreVert';\nimport {useHistory} from 'react-router-dom'\n\nconst drawerWidth = 240;\n\nconst useStyles = makeStyles((theme) => ({\n grow: {\n flexGrow: 1,\n maxHeight: '64px',\n },\n menuButton: {\n marginRight: theme.spacing(2),\n },\n title: {\n display: 'none',\n [theme.breakpoints.up('sm')]: {\n display: 'block',\n },\n },\n sectionDesktop: {\n display: 'none',\n [theme.breakpoints.up('md')]: {\n display: 'flex',\n },\n },\n sectionMobile: {\n display: 'flex',\n [theme.breakpoints.up('md')]: {\n display: 'none',\n },\n },\n appBarShift: {\n width: `calc(100% - ${drawerWidth}px)`,\n marginLeft: drawerWidth,\n transition: theme.transitions.create(['margin', 'width'], {\n easing: theme.transitions.easing.easeOut,\n duration: theme.transitions.duration.enteringScreen,\n }),\n },\n drawer: {\n width: drawerWidth,\n flexShrink: 0,\n },\n drawerPaper: {\n width: drawerWidth,\n },\n drawerHeader: {\n display: 'flex',\n alignItems: 'center',\n padding: theme.spacing(0, 1),\n // necessary for content to be below app bar\n ...theme.mixins.toolbar,\n justifyContent: 'flex-end',\n },\n content: {\n flexGrow: 1,\n padding: theme.spacing(3),\n transition: theme.transitions.create('margin', {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n marginLeft: -drawerWidth,\n },\n contentShift: {\n transition: theme.transitions.create('margin', {\n easing: theme.transitions.easing.easeOut,\n duration: theme.transitions.duration.enteringScreen,\n }),\n marginLeft: 0,\n },\n appBar: {\n zIndex: theme.zIndex.drawer + 1,\n },\n}));\n\nexport default function LoginHeader(props) {\n const classes = useStyles();\n const [anchorEl, setAnchorEl] = React.useState(null);\n const [mobileMoreAnchorEl, setMobileMoreAnchorEl] = React.useState(null);\n\n const isMobileMenuOpen = Boolean(mobileMoreAnchorEl);\n const history = useHistory();\n\n const handleProfileMenuOpen = (event) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleMobileMenuClose = () => {\n setMobileMoreAnchorEl(null);\n };\n\n const handleMobileMenuOpen = (event) => {\n setMobileMoreAnchorEl(event.currentTarget);\n };\n\n const menuId = 'primary-search-account-menu';\n\n const mobileMenuId = 'primary-search-account-menu-mobile';\n const renderMobileMenu = (\n \n \n \n \n \n

Profile

\n
\n \n );\n\n return (\n
\n \n \n \n \"JJ {\n history.push(`/inventory`)\n }}/>\n \n
\n
\n \n \n \n
\n
\n \n \n \n
\n \n \n {renderMobileMenu}\n
\n );\n}","import React, {Component} from \"react\";\nimport {Redirect} from 'react-router';\nimport AuthService from \"./services/AuthService\";\nimport Card from \"react-bootstrap/Card\";\nimport Col from \"react-bootstrap/Col\";\nimport Image from \"react-bootstrap/Image\";\nimport Form from \"react-bootstrap/Form\";\nimport Row from \"react-bootstrap/Row\";\nimport RedirectUrlService from \"./services/RedirectUrlService\";\nimport Nav from \"react-bootstrap/Nav\";\nimport Tab from \"react-bootstrap/Tab\";\nimport Signup from \"./Signup\";\nimport Box from \"@material-ui/core/Box\";\nimport LoginHeader from \"../components/common/LoginHeader\";\nimport {NO_ACCESS} from \"../constants\";\n\nconst loginPageStyle = {\n whiteSpace: \"pre-wrap\",\n backgroundImage: \"url('/banner.jpg')\",\n width: '100%',\n height: '100%',\n backgroundPosition: 'center',\n backgroundRepeat: 'no-repeat',\n backgroundSize: 'cover',\n};\n\nexport default class Login extends Component {\n constructor(props) {\n super(props);\n this.handleLogin = this.handleLogin.bind(this);\n this.onChangeUsername = this.onChangeUsername.bind(this);\n this.onChangePassword = this.onChangePassword.bind(this);\n\n this.state = {\n username: \"\",\n password: \"\",\n loading: false,\n message: \"\",\n authenticated: false,\n };\n }\n\n componentWillMount() {\n this.initAuthenticationFlow();\n }\n\n /**\n * Check if the user has already signed in and remember me is set\n */\n initAuthenticationFlow() {\n if (AuthService.getCurrentUser() && AuthService.getCurrentUserRole() !== NO_ACCESS.value) {\n this.setState({authenticated: true})\n } else {\n this.setState({authenticated: false})\n }\n }\n\n onChangeUsername(e) {\n this.setState({\n username: e.target.value\n });\n }\n\n onChangePassword(e) {\n this.setState({\n password: e.target.value\n });\n }\n\n handleLogin(e) {\n e.preventDefault();\n\n this.setState({\n message: \"\",\n loading: true\n });\n\n if (this.validateInputs()) {\n AuthService.login(this.state.username, this.state.password).then(\n () => {\n // get user role\n AuthService.userRole(this.state.username).then(\n (res) => {\n // check if there redirect url\n if (RedirectUrlService.getRedirectUrl()) { // if available go to url\n window.location.href = RedirectUrlService.getRedirectUrl();\n RedirectUrlService.removeRedirectUrl();\n } else { // else refresh page\n window.location.reload();\n }\n },\n error => {\n const resMessage =\n (error.response &&\n error.response.data &&\n error.response.data.message) ||\n error.message ||\n error.toString();\n\n this.setState({\n loading: false,\n message: resMessage\n });\n }\n )\n },\n error => {\n AuthService.loginErrorReason(this.state.username).then(\n (res) => {\n this.setState({\n loading: false,\n message: res\n });\n },\n err => {\n const resMessage =\n (error.response &&\n error.response.data &&\n error.response.data.message) ||\n error.message ||\n error.toString();\n\n this.setState({\n loading: false,\n message: resMessage\n });\n }\n )\n }\n );\n }\n }\n\n validateInputs = () => {\n if (this.state.username === \"\") {\n this.setState({\n message: \"Username is required!\",\n loading: false,\n });\n return false;\n }\n if (this.state.password === \"\") {\n this.setState({\n message: \"Password is required!\",\n loading: false,\n });\n return false;\n }\n return true;\n };\n\n render() {\n const authenticated = this.state.authenticated;\n if (authenticated) {\n return (\n \n );\n }\n return (\n \n \n
\n
\n


\n
\n \n\n \n \n \n
\n \n \n \n \n \n
\n \n \n Username\n \n \n \n\n \n \n Password\n \n \n \n\n
\n \n \n {this.state.loading && (\n \n )}\n Login\n \n \n\n
\n {this.state.message && (\n
\n
\n {this.state.message}\n
\n
\n )}\n
\n
\n \n \n \n
\n
\n
\n
\n
\n
\n
\n
\n );\n }\n}\n","import { darkBaseTheme, getMuiTheme, lightBaseTheme } from 'material-ui/styles/index';\nimport * as Colors from 'material-ui/styles/colors';\n\nexport const darkTheme = getMuiTheme(darkBaseTheme,\n {\n name: 'dark',\n palette: {\n primary: {\n main: '#F3A302'\n },\n primary1Color: Colors.orange800,\n accent1Color: Colors.teal500,\n textColor: Colors.white,\n alternateTextColor: Colors.white,\n },\n appBar: {\n color: Colors.blueGrey900,\n textColor: Colors.grey200,\n height: 70,\n },\n drawer: {\n color: Colors.blueGrey900,\n },\n snackbar: {\n textColor: Colors.black,\n },\n }\n);\n\nexport const lightTheme = getMuiTheme(lightBaseTheme,\n {\n name: 'light',\n palette: {\n primary: {\n main: '#F3A302'\n },\n primary1Color: Colors.orange800,\n accent1Color: Colors.teal500,\n textColor: Colors.black,\n alternateTextColor: Colors.black,\n },\n appBar: {\n color: '#FFFFFF',\n textColor: Colors.grey900,\n height: 70,\n },\n drawer: {\n color: Colors.grey400,\n },\n snackbar: {\n textColor: Colors.white,\n },\n toggle: {\n trackOffColor: Colors.grey500,\n thumbOffColor: Colors.grey700,\n },\n }\n);\n\nexport default lightTheme;\n","import React from 'react'\n\nconst UserContext = React.createContext();\n\nexport const UserProvider = UserContext.Provider;\n\nexport default UserContext\n","import React, {useContext} from 'react';\nimport {makeStyles, useTheme} from '@material-ui/core/styles';\nimport AppBar from '@material-ui/core/AppBar';\nimport Toolbar from '@material-ui/core/Toolbar';\nimport IconButton from '@material-ui/core/IconButton';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport Menu from '@material-ui/core/Menu';\nimport AccountCircle from '@material-ui/icons/AccountCircle';\nimport MoreIcon from '@material-ui/icons/MoreVert';\nimport UsersIcon from '@material-ui/icons/SupervisedUserCircle';\nimport BallotIcon from '@material-ui/icons/Ballot';\nimport ListIcon from '@material-ui/icons/List';\nimport {useHistory} from 'react-router-dom'\nimport ListItem from '@material-ui/core/ListItem';\nimport ListItemIcon from '@material-ui/core/ListItemIcon';\nimport ListItemText from '@material-ui/core/ListItemText';\nimport Drawer from '@material-ui/core/Drawer';\nimport List from '@material-ui/core/List';\nimport Divider from '@material-ui/core/Divider';\nimport {Link} from \"react-router-dom\";\nimport ChromeReaderModeIcon from '@material-ui/icons/ChromeReaderMode';\nimport Chip from '@material-ui/core/Chip';\nimport DashboardIcon from '@material-ui/icons/Dashboard';\nimport SearchIcon from '@material-ui/icons/Search';\nimport AuthService from \"../../user/services/AuthService\";\nimport UserContext from '../../context/UserContext';\nimport {ADMIN, SALES, WAREHOUSE} from \"../../constants\";\nimport PropTypes from \"prop-types\";\n\nconst drawerWidth = 240;\n\nconst useStyles = makeStyles((theme) => ({\n grow: {\n flexGrow: 1,\n maxHeight: '64px',\n },\n menuButton: {\n marginRight: theme.spacing(2),\n },\n title: {\n fontFamily: 'Adequate Bold',\n display: 'none',\n [theme.breakpoints.up('sm')]: {\n display: 'block',\n },\n },\n sectionDesktop: {\n display: 'none',\n [theme.breakpoints.up('md')]: {\n display: 'flex',\n },\n },\n sectionMobile: {\n display: 'flex',\n [theme.breakpoints.up('md')]: {\n display: 'none',\n },\n },\n appBarShift: {\n width: `calc(100% - ${drawerWidth}px)`,\n marginLeft: drawerWidth,\n transition: theme.transitions.create(['margin', 'width'], {\n easing: theme.transitions.easing.easeOut,\n duration: theme.transitions.duration.enteringScreen,\n }),\n },\n drawer: {\n width: drawerWidth,\n flexShrink: 0,\n },\n drawerPaper: {\n width: drawerWidth,\n },\n drawerHeader: {\n display: 'flex',\n alignItems: 'center',\n padding: theme.spacing(0, 1),\n // necessary for content to be below app bar\n ...theme.mixins.toolbar,\n justifyContent: 'flex-end',\n },\n content: {\n flexGrow: 1,\n padding: theme.spacing(3),\n transition: theme.transitions.create('margin', {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n marginLeft: -drawerWidth,\n },\n contentShift: {\n transition: theme.transitions.create('margin', {\n easing: theme.transitions.easing.easeOut,\n duration: theme.transitions.duration.enteringScreen,\n }),\n marginLeft: 0,\n },\n appBar: {\n zIndex: theme.zIndex.drawer + 1,\n },\n}));\n\nexport default function Header(props) {\n const user = useContext(UserContext);\n const {hasDrawer} = props;\n const classes = useStyles();\n const [anchorEl, setAnchorEl] = React.useState(null);\n const [mobileMoreAnchorEl, setMobileMoreAnchorEl] = React.useState(null);\n\n const isMenuOpen = Boolean(anchorEl);\n const isMobileMenuOpen = Boolean(mobileMoreAnchorEl);\n const history = useHistory();\n\n const handleProfileMenuOpen = (event) => {\n setAnchorEl(event.currentTarget);\n };\n\n const handleMobileMenuClose = () => {\n setMobileMoreAnchorEl(null);\n };\n\n const handleMenuClose = () => {\n setAnchorEl(null);\n handleMobileMenuClose();\n };\n\n const handleLogout = () => {\n AuthService.logout();\n };\n\n const handleMobileMenuOpen = (event) => {\n setMobileMoreAnchorEl(event.currentTarget);\n };\n\n const menuId = 'primary-search-account-menu';\n const renderMenu = (\n \n Logout\n \n );\n\n const mobileMenuId = 'primary-search-account-menu-mobile';\n const renderMobileMenu = (\n \n \n \n \n \n

Profile

\n
\n \n );\n\n return (\n
\n \n \n \n \"JJ {\n history.push(`/inventory`)\n }}/>\n \n
\n
\n }\n label={(user.currentUser ? user.currentUser.User : 'Anonymous') + ' [' + user.role + ']'}\n onClick={handleProfileMenuOpen}\n variant=\"outlined\"\n />\n
\n
\n \n \n \n
\n \n \n {hasDrawer &&\n <>\n \n
\n \n \n \n \n \n \n \n \n \n \n {user.currentUser && (\n <>\n {user.role === SALES.value && (\n <>\n \n )}\n {user.role === ADMIN.value && (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n \n )}\n {user.role === WAREHOUSE.value &&\n <>\n \n }\n \n )}\n \n \n {renderMobileMenu}\n {renderMenu}\n \n }\n
\n );\n}\n\nHeader.propTypes = {\n hasDrawer: PropTypes.bool,\n};\n\nHeader.defaultProps = {\n hasDrawer: true\n};\n","import React, { useState } from 'react';\nimport { MuiThemeProvider } from 'material-ui/styles';\nimport defaultTheme from '../utils/Theme'\nimport Box from '@material-ui/core/Box'\nimport PropTypes from 'prop-types';\nimport Header from '../components/common/Header';\nimport Typography from '@material-ui/core/Typography';\nimport { makeStyles } from '@material-ui/core/styles';\n\nconst drawerWidth = 240;\n\nconst useStyles = makeStyles((theme) => ({\n titleSection: {\n paddingBottom: '3%',\n marginTop:'30px',\n paddingTop:'20px'\n },\n content: {\n flexGrow: 1,\n padding: theme.spacing(3),\n transition: theme.transitions.create('margin', {\n easing: theme.transitions.easing.sharp,\n duration: theme.transitions.duration.leavingScreen,\n }),\n marginLeft: -drawerWidth,\n },\n contentShift: {\n transition: theme.transitions.create('margin', {\n easing: theme.transitions.easing.easeOut,\n duration: theme.transitions.duration.enteringScreen,\n }),\n marginLeft: 0,\n },\n drawerHeader: {\n display: 'flex',\n alignItems: 'center',\n padding: theme.spacing(0, 1),\n // necessary for content to be below app bar\n ...theme.mixins.toolbar,\n justifyContent: 'flex-end',\n },\n root: {\n display: 'flex',\n },\n}));\n\nexport default function Parent(props) {\n\n const {children, theme, title} = props;\n const classes = useStyles();\n return (\n \n \n
\n \n \n {title}\n \n {children}\n \n \n \n );\n}\n\nParent.propTypes = {\n data: PropTypes.element,\n theme: PropTypes.shape({}),\n error: PropTypes.object,\n title: PropTypes.string,\n};\n\nParent.defaultProps = {\n data: ,\n theme: defaultTheme,\n error: null,\n title: 'Title',\n};\n\n","import React from \"react\";\nimport Tooltip from \"@material-ui/core/Tooltip\";\nimport {withStyles} from \"@material-ui/core/styles\";\nimport Button from '@material-ui/core/Button';\nimport PropTypes from 'prop-types';\n\nconst defaultToolbarStyles = {\n iconButton: {\n },\n};\n\nclass CustomToolbar extends React.Component {\n\n handleClick = () => {\n if (this.props.selectedRows) {\n this.props.handleClick(this.props.selectedRows);\n } else {\n this.props.handleClick();\n }\n };\n\n render() {\n const { classes, buttonText, startIcon } = this.props;\n\n return (\n \n \n \n \n \n );\n }\n\n}\n\nCustomToolbar.propTypes = {\n disabled: PropTypes.bool,\n};\n\nCustomToolbar.defaultProps = {\n disabled: false,\n};\n\nexport default withStyles(defaultToolbarStyles, { name: \"CustomToolbar\" })(CustomToolbar);\n","import axios from 'axios';\nimport {AuthorizationHeader} from \"../user/services/AuthHeader\";\nimport {HOST_NAME} from \"../constants\";\n\nexport default class API {\n\n getHTTPClient(isLogin) {\n let httpClient = axios.create({\n baseURL: HOST_NAME,\n headers: AuthorizationHeader()\n });\n\n httpClient.defaults.headers.post['Content-Type'] = 'application/json';\n\n httpClient.interceptors.response.use(function (response) {\n return response;\n }, function (error) {\n if (error.response) {\n if (isLogin === undefined) {\n if (error.response.status === 403) {\n localStorage.removeItem('user');\n window.location.href = \"/\";\n }\n }\n }\n return Promise.reject(error);\n });\n\n return httpClient;\n }\n\n createEmptyOrder(customerId) {\n return this.getHTTPClient().put(`/pull-order?customer-id=${customerId}`);\n }\n\n getAllPullOrders() {\n return this.getHTTPClient().get('/pull-order/all');\n }\n\n deletePullOrder(id) {\n return this.getHTTPClient().delete(`/pull-order?id=${id}`);\n }\n\n // Inventory\n\n getAllInventory() {\n return this.getHTTPClient().get('/inventory/inventory');\n }\n\n getAllInventoryDetails() {\n return this.getHTTPClient().get('/inventory/all');\n }\n\n insertInventoryItem(inventory) {\n return this.getHTTPClient().put('/inventory', inventory);\n }\n\n insertPODetail(poDetail) {\n console.log(poDetail)\n return this.getHTTPClient().put('/inventory/po-detail', poDetail);\n }\n\n deleteInventoryItem(id) {\n return this.getHTTPClient().delete(`/inventory?id=${id}`);\n }\n\n deleteInventoryLocation(id) {\n return this.getHTTPClient().delete(`/inventory/location?id=${id}`);\n }\n\n discontinueInventoryLocation(id) {\n return this.getHTTPClient().post(`/item-locations/discontinue?id=${id}`);\n }\n\n getPullOrderInventory(id) {\n return this.getHTTPClient().get(`/pull-order/inventory?id=${id}`);\n }\n\n addInventoryToOrder(itemLocationId, qty, poId) {\n return this.getHTTPClient().put(`/pull-order/inventory?poId=${poId}&itemLocationId=${itemLocationId}&qty=${qty}`);\n }\n\n deleteInventoryFromOrder (id) {\n return this.getHTTPClient().delete(`/pull-order/inventory?id=${id}`);\n }\n\n setOrderAsPulled (id) {\n return this.getHTTPClient().post(`/pull-order/update-state/pulled?id=${id}`)\n }\n\n setOrderAsReverted (id) {\n return this.getHTTPClient().post(`/pull-order/update-state/revert?id=${id}`)\n }\n\n getPullOrderDetails(id) {\n return this.getHTTPClient().get(`/pull-order?id=${id}`);\n }\n\n addStockToInventory(id, qty) {\n return this.getHTTPClient().post(`/inventory/add-stock?id=${id}&qty=${qty}`);\n }\n\n updateInventoryItem(inventory) {\n return this.getHTTPClient().post('/inventory', inventory);\n }\n\n importInvStock(data) {\n return this.getHTTPClient().post('/inventory/import-stock', data)\n }\n\n discontinueItemLocationsStock(data) {\n return this.getHTTPClient().post('/item-locations/discontinue-stock', data)\n }\n\n discontinueInvStock(data) {\n return this.getHTTPClient().post('/inventory/discontinue-stock', data)\n }\n\n // Item locations\n\n updateItemLocation(inventory) {\n return this.getHTTPClient().post('/item-locations', inventory);\n }\n\n // Customer\n\n createCustomer(customer) {\n return this.getHTTPClient().put('/customer', customer);\n }\n\n getCustomer(id) {\n return this.getHTTPClient().get(`/customer?id=${id}`);\n }\n\n getAllCustomers() {\n return this.getHTTPClient().get('customer/all');\n }\n\n getReorderItems() {\n return this.getHTTPClient().get('/reorder-items');\n }\n}\n","import Spinner from \"react-bootstrap/Spinner\";\nimport React from \"react\";\nimport {FaFileExport, FaFileImport, FaFilter} from \"react-icons/fa\";\nimport {IMPORT_TASK, INTERNAL_SERVER_ERROR, NO_ACCESS_OPTION, SAVE} from \"../constants\";\nimport withReactContent from \"sweetalert2-react-content\";\nimport Swal from \"sweetalert2\";\nimport {Delete, Save} from \"@material-ui/icons\";\n\nconst MySwal = withReactContent(Swal);\n\nexport function alertError(msg) {\n MySwal.fire(\"Something Went Wrong!\", msg, \"error\");\n}\n\nexport function alertSuccess(msg) {\n MySwal.fire(\"Good job!\", msg, \"success\");\n}\n\nexport function alertSuccessfullyUpdated(msg) {\n MySwal.fire(\"Sucessfully Updated\", msg, \"success\");\n}\n\nexport function showSpinner(btnText) {\n if (btnText === \"Import\") {\n return {btnText};\n } else {\n return {btnText};\n }\n}\n\nexport function showImportTaskSpinner(btnText) {\n if (btnText === IMPORT_TASK) {\n return {btnText};\n } else {\n return {btnText};\n }\n}\n\nexport function showFilterSpinner(btnText) {\n if (btnText === \"Filter\") {\n return {btnText};\n } else {\n return {btnText};\n }\n}\n\nexport function showExportSpinner(btnText) {\n if (btnText === \"Export\") {\n return {btnText};\n } else {\n return {btnText};\n }\n}\n\nexport function showDeleteSpinner(btnText) {\n if (btnText === \"Delete\") {\n return {btnText};\n } else {\n return {btnText};\n }\n}\n\nexport function showSaveSpinner(btnText) {\n if (btnText === SAVE) {\n return {btnText};\n } else {\n return {btnText};\n }\n}\n\nexport function showUploadSpinner(btnText) {\n if (btnText === \"Upload\") {\n return {btnText};\n } else {\n return {btnText};\n }\n}\n\nexport function handleErr(error) {\n let err = INTERNAL_SERVER_ERROR;\n if (error.response) {\n err = error.response.data;\n }\n alertError(err);\n}\n\nexport function handleError(error) {\n let err = INTERNAL_SERVER_ERROR;\n if (error.response) {\n err = error.response.data;\n if (typeof err !== \"string\") {\n console.log(err);\n\n let errMsg = \"[\" + err.error + \"]
\" + err.message + \"

\";\n if (err.trace) {\n let ks = err.trace.split(\"\\n\");\n errMsg += \"\\n\" + ks[0];\n }\n err = errMsg;\n }\n }\n alertError(err);\n}\n\nexport function handleFileSizeExceedsError(msg){\n MySwal.fire(\"File size Exceeds\", \"Please add a file less than \" + msg + \" size\", \"error\");\n}\n\nexport function handleNamedFileSizeExceedsError(name, msg){\n MySwal.fire(\"File named \" + name + \" size Exceeds\", \"Please add a file less than \" + msg + \" size\", \"error\");\n}\n\nexport function isEmptyOrUndefined(str) {\n return str === undefined || str === '';\n}\n\nexport function getIdFromUrl() {\n let url = window.location.href;\n return url.substring(url.lastIndexOf('/') + 1);\n}\n\nexport function getBaseUrl() {\n return window.location.protocol + '//' + window.location.host + '/';\n}\n\nexport function setEmptyIfNull(value) {\n if (value !== null) {\n return value;\n } else {\n return \"\";\n }\n}\n\nexport function getOptionUsingValue(options, value) {\n return options.find(obj => {\n return obj.value === setEmptyIfNull(value)\n })\n}\n\nexport function getShowingResultsPhrase(count, size) {\n return `[ Showing latest ${count} of ${size} results ]`;\n}\n\nexport function createTypeOption(type) {\n if (type === null || type === NO_ACCESS_OPTION.value) {\n return NO_ACCESS_OPTION;\n } else {\n return {value: type, label: type};\n }\n}","export const YYYY_MM_DD = \"yyyyMMdd\";\n\nexport function isValidDate(dateString, format) {\n if (format === \"yyyyMMdd\") {\n let regEx = /^\\d{4}-\\d{2}-\\d{2}$/;\n if(!dateString.match(regEx)) return false; // Invalid format\n let d = new Date(dateString);\n let dNum = d.getTime();\n if(!dNum && dNum !== 0) return false; // NaN value, Invalid date\n return d.toISOString().slice(0,10) === dateString;\n }\n}\n\nexport function format2NiceDate(date) {\n let d = new Date(date);\n\n let yyyy = d.getFullYear();\n let month = getMonthName(d);\n let dd = d.getDate();\n\n let hh = formatNo2TwoDigits(d.getHours());\n let mm = formatNo2TwoDigits(d.getMinutes());\n let ss = formatNo2TwoDigits(d.getSeconds());\n\n return month + \" \" + dd + \", \" + yyyy + \" \" + hh + \":\" + mm + \":\" + ss;\n}\n\nfunction getMonthName(date) {\n let month = [];\n month[0] = \"Jan\";\n month[1] = \"Feb\";\n month[2] = \"Mar\";\n month[3] = \"Apr\";\n month[4] = \"May\";\n month[5] = \"Jun\";\n month[6] = \"Jul\";\n month[7] = \"Aug\";\n month[8] = \"Sep\";\n month[9] = \"Oct\";\n month[10] = \"Nov\";\n month[11] = \"Dec\";\n return month[date.getMonth()];\n}\n\nfunction formatNo2TwoDigits(number) {\n return (\"0\" + number).slice(-2)\n}\n","import React from 'react';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogContentText from '@material-ui/core/DialogContentText';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport Button from '@material-ui/core/Button';\nimport PropTypes from \"prop-types\";\n\nexport default function ConfirmationDialog(props) {\n let {title, contentText, onConfirm, open, onClose} = props;\n\n const handleOnConfirm = () => {\n onConfirm();\n };\n\n return(\n \n {title}\n \n \n {contentText}\n \n \n \n \n \n \n \n );\n}\n\nConfirmationDialog.propTypes = {\n open: PropTypes.bool,\n title: PropTypes.string,\n contentText: PropTypes.string,\n onConfirm: PropTypes.func,\n handleDeleteItemDialogClose: PropTypes.func,\n};\n\nConfirmationDialog.defaultProps = {\n open: false,\n title: \"\",\n contentText: \"\",\n onConfirm: () => {\n },\n handleDeleteItemDialogClose: () => {\n }\n};","import React, {useState, useEffect, useReducer} from 'react';\nimport Parent from '../components/Parent';\nimport MUIDataTable from \"mui-datatables\";\nimport Link from '@material-ui/core/Link';\nimport {useHistory} from \"react-router\";\nimport CustomToolbar from '../components/custom/CustomToolbar';\nimport ResourceAPI from '../apis/Api';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport Button from '@material-ui/core/Button';\nimport { makeStyles } from '@material-ui/core/styles/index';\nimport TextField from '@material-ui/core/TextField';\nimport Chip from '@material-ui/core/Chip';\nimport {alertError} from \"../utils/MiscellaniousUtils\";\nimport ResourceApi from '../apis/Api';\nimport {format2NiceDate} from \"../utils/DateUtils\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport {Delete} from \"@material-ui/icons\";\nimport ConfirmationDialog from \"../components/common/ConfirmationDialog\";\nimport {handleError} from \"../utils/MiscellaniousUtils\";\n\n\nfunction reducer(state, { field, value }) {\n return { ...state, [field]: value };\n}\n\nconst useStyles = makeStyles((theme) => (\n {\n bootstrapRoot: {\n padding: 0,\n 'label + &': {\n marginTop: theme.spacing(1),\n },\n },\n bootstrapInput: {\n borderRadius: 4,\n backgroundColor: theme.palette.common.white,\n border: '1px solid #ced4da',\n padding: '5px 12px',\n marginTop: '11px',\n marginBottom: '11px',\n width: '100%',\n transition: theme.transitions.create(['border-color', 'box-shadow']),\n '&:focus': {\n borderColor: '#80bdff',\n boxShadow: '0 0 0 0.2rem rgba(0,123,255,.25)',\n },\n fontSize: 12,\n },\n }\n));\n\nexport default function POListingPage(props) {\n\n const history = useHistory();\n const classes = useStyles();\n const [poList, setPoList] = useState([]);\n const [insertCustomerDialogOpen, setInsertCustomerDialogOpen] = useState(false);\n const [initialState, setInitialState] = useState({\n fname: '',\n lname: '',\n cnumber: '',\n address: '',\n });\n const [state, dispatch] = useReducer(reducer, initialState);\n\n const [focussedItem, setFocussedItem] = useState([]);\n const [deleteItemDialogOpen, setDeleteItemDialogOpen] = useState(false);\n useEffect(() => {\n // retrieve all saved pull orders\n retrievePOList();\n }, []);\n\n function retrievePOList() {\n const api = new ResourceAPI();\n api.getAllPullOrders().then((response) => {\n console.log(response.data);\n let list = response.data;\n let rows = [];\n list.forEach((element) => {\n const rowData = [];\n rowData.push(element.id);\n rowData.push(element.clientName);\n if(element.state === \"pulled\"){\n rowData.push(\n \n )\n }else{\n rowData.push(\"\")\n }\n rowData.push(format2NiceDate(element.createdAt));\n rows.push(rowData);\n });\n setPoList(rows);\n }).catch((error) => {\n handleError(error);\n });\n }\n\n const handleCreateEmptyPO = (customerId) => {\n new ResourceAPI().createEmptyOrder(customerId).then((response) => {\n retrievePOList();\n history.push(`/po/details/${response.data}`)\n }).catch((error) => {\n handleError(error);\n });\n };\n\n const handleInsertCustomerOpen = () => {\n setInsertCustomerDialogOpen(true);\n };\n\n const handleInsertCustomerClose = () => {\n setInsertCustomerDialogOpen(false);\n };\n\n const handleCustomerInsert = () => {\n new ResourceAPI().createCustomer(state).then((response) => {\n handleCreateEmptyPO(response.data.id);\n }).catch((error) => {\n alertError(error);\n });\n };\n\n const handleChange = (e) => {\n dispatch({ field: e.target.name, value: e.target.value });\n };\n\n const handleDeleteItemDialogClose = () => {\n setDeleteItemDialogOpen(false);\n };\n\n const handleItemDelete = () => {\n const api = new ResourceApi();\n api.deletePullOrder(focussedItem[0]).then((response) => {\n handleDeleteItemDialogClose();\n retrievePOList();\n }).catch((error) => {\n handleDeleteItemDialogClose();\n handleError(error);\n });\n };\n\n const columns = [{\n label: \"Order Id\",\n options: {\n customBodyRender: (value, tableMeta, updateValue) => {\n return (\n {\n history.push(`/po/details/${tableMeta.rowData[0]}`)\n }}>\n {tableMeta.rowData[0]}\n \n )\n }\n }\n },\n \"Customer\",\n \"Labels\",\n \"Created Date\",\n {\n label: \"Controls\",\n options: {\n customBodyRender: (value, tableMeta, updateValue) => {\n return (\n <>\n {\n setFocussedItem(tableMeta.rowData);\n setDeleteItemDialogOpen(true);\n }}>\n \n \n \n )\n }\n }\n },\n ];\n\n const options = {\n filterType: 'checkbox',\n filter: false,\n print: false,\n viewColumns: false,\n selectableRows: false,\n download: false,\n elevation: 0,\n customToolbar: () => {return ();},\n };\n\n return (\n \n \n \n {\"Customer Information!\"}\n \n \n \n \n \n \n \n \n \n \n \n \n );\n}\n","import React, {useState} from 'react';\nimport {makeStyles} from '@material-ui/core/styles/index';\nimport TextField from '@material-ui/core/TextField';\nimport Grid from '@material-ui/core/Grid';\nimport Button from '@material-ui/core/Button';\nimport Autocomplete from '@material-ui/lab/Autocomplete';\nimport {ENTER_KEY_CODE} from \"../../constants\";\nimport {Clear} from \"@material-ui/icons\";\nimport PropTypes from \"prop-types\";\n\nconst useStyles = makeStyles((theme) => (\n {\n bootstrapRoot: {\n padding: 0,\n 'label + &': {\n marginTop: theme.spacing(1),\n },\n },\n bootstrapInput: {\n borderRadius: 4,\n backgroundColor: theme.palette.common.white,\n border: '1px solid #ced4da',\n padding: '5px 12px',\n marginTop: '11px',\n marginBottom: '11px',\n width: '100%',\n transition: theme.transitions.create(['border-color', 'box-shadow']),\n '&:focus': {\n borderColor: '#80bdff',\n boxShadow: '0 0 0 0.2rem rgba(0,123,255,.25)',\n },\n fontSize: 12,\n height:'20px',\n },\n }\n));\n\nexport default function InventoryPOSearch(props) {\n const classes = useStyles();\n const {onSearch, searchBtn, resetFullView, products, tableData} = props;\n const [searchState, setSearchState] = useState({});\n const [poNumber, setPoNumber] = useState('');\n const [item, setItem] = useState('');\n const [color, setColor] = useState('');\n const [location, setLocation] = useState('');\n const [availableQty, setAvailableQty] = useState('');\n const [locationACKey, setLocationACKey] = useState(Math.random().toString(36));\n const [colorACKey, setColorACKey] = useState(Math.random().toString(36));\n\n const handleInventorySearchChange = (e) => {\n const name = e.target.name;\n let value = e.target.value;\n console.log(e.target.value);\n if (name === 'availableQty') {\n value = parseInt(value);\n }\n let newState = searchState;\n if (value === '' || value.length === 0 || (name === 'availableQty' && isNaN(value))) {\n delete newState[name];\n } else {\n newState[name] = value;\n }\n setFormValues(name, value);\n console.log(newState);\n setSearchState(newState);\n };\n\n function setFormValues(name, value) {\n if (name === 'poNumber') {\n setPoNumber(value);\n } else if (name === 'color') {\n setColor(value);\n } else if (name === 'item') {\n setItem(value);\n } else if (name === 'location') {\n setLocation(value);\n } else if (name === 'availableQty') {\n setAvailableQty(value);\n }\n }\n\n const handleReset = () => {\n setPoNumber('');\n setColor('');\n setItem('');\n setLocation('');\n setAvailableQty('');\n setLocationACKey(Math.random().toString(36));\n setColorACKey(Math.random().toString(36));\n setSearchState({});\n if (resetFullView) {\n onSearch({});\n } else {\n onSearch({poNumber:'empty'});\n }\n };\n\n const handleOnkeyDown = (e) => {\n if (e.keyCode === ENTER_KEY_CODE) {\n onSearch(searchState);\n }\n };\n\n return (\n
\n \n \n \n \n \n \n \n \n \n {\n let newState = searchState;\n if (newValue === '' || newValue.length === 0) {\n delete newState['color'];\n } else {\n newState['color'] = newValue;\n }\n setFormValues('color', newValue);\n setSearchState(newState);\n onSearch(searchState);\n }}\n options={[...new Set(tableData.map((option) => option.color))]}\n renderInput={(params) => (\n \n )}\n />\n \n \n {\n let newState = searchState;\n if (newValue === '' || newValue.length === 0) {\n delete newState['location'];\n } else {\n newState['location'] = newValue;\n }\n setFormValues('location', newValue);\n setSearchState(newState);\n onSearch(searchState);\n }}\n options={[...new Set(tableData.map((option) => option.location))]}\n renderInput={(params) => (\n \n )}\n />\n \n \n {searchBtn && }\n \n \n \n \n
\n );\n}\n\nInventoryPOSearch.propTypes = {\n onSearch: PropTypes.func,\n searchBtn: PropTypes.array,\n resetFullView: PropTypes.object,\n products: PropTypes.array,\n tableData: PropTypes.array\n};\n\nInventoryPOSearch.defaultProps = {\n onSearch: () => {\n },\n searchBtn: false,\n resetFullView: false,\n products: [],\n tableData: []\n};\n","import React, { useState, useEffect } from 'react';\nimport Button from '@material-ui/core/Button';\nimport MUIDataTable from \"mui-datatables\";\nimport ResourceApi from '../../apis/Api';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogContentText from '@material-ui/core/DialogContentText';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport TextField from '@material-ui/core/TextField';\nimport Search from './InventoryPOSearch';\nimport _ from 'lodash';\nimport CustomToolbar from '../custom/CustomToolbar';\nimport {Add} from \"@material-ui/icons\";\nimport PropTypes from \"prop-types\";\nimport {handleError} from \"../../utils/MiscellaniousUtils\";\n\nexport default function InventorySelector(props) {\n\n const { orderId, onComplete } = props;\n const [products, setProducts] = useState([]);\n const [tableData, setTableData] = useState([]);\n const [qtyDialogOpen, setQtyDialogOpen] = useState(false);\n const [itemQty, setItemQty] = useState(null);\n const [invId, setInvId] = useState(null);\n const api = new ResourceApi();\n\n useEffect(() => {\n retrieveAllInventory();\n }, []);\n\n const tableDataWithRows = createRows(tableData);\n\n function retrieveAllInventory() {\n api.getAllInventoryDetails().then((response) => {\n console.log(response.data);\n let list = response.data;\n if (list) {\n setProducts(list);\n }\n setTableData(list);\n }).catch((error) => {\n handleError(error);\n });\n }\n\n function createRows(list) {\n let rows = [];\n list.forEach((element) => {\n console.log(element);\n const rowData = [];\n rowData.push(element.itemLocationId);\n rowData.push(element.poNumber);\n rowData.push(element.item);\n rowData.push(element.description);\n rowData.push(element.color);\n rowData.push(element.location);\n rowData.push(element.availableQty);\n rows.push(rowData);\n });\n return rows;\n }\n\n const handleQtyDialogOpen = () => {\n setQtyDialogOpen(true);\n };\n\n const handleQtyDialogClose = () => {\n setQtyDialogOpen(false);\n };\n\n const handleChange = (e) => {\n if (e.target.name === 'qty') {\n setItemQty(e.target.value);\n }\n };\n\n const handleSearch = (searchState) => {\n const filteredItems = _.filter(products, function (o) {\n return _.every(searchState, function (v, k) {\n return _.startsWith(o[k].toLowerCase(), v.toLowerCase());\n });\n });\n setTableData(filteredItems);\n };\n\n const handleAddItemToOrder = () => {\n api.addInventoryToOrder(invId, itemQty, orderId).then((response) => {\n handleQtyDialogClose();\n onComplete();\n }).catch((error) => {\n handleError(error);\n });\n };\n\n function renderCustomToolBar() {\n return (<>\n }\n handleClick={() => {\n console.log(tableDataWithRows[0]);\n setInvId(tableDataWithRows[0][0]);\n handleQtyDialogOpen();\n }}\n />\n );\n\n }\n\n function getOrderQtyHelperText(itemQty, data) {\n if (data === null || data.length <= 0) {\n return \"\";\n }\n\n let availableQty = data[0][6]\n if (availableQty === null || availableQty === \"\") {\n return \"\";\n } else if (itemQty < 1) {\n return \"Invalid order qty!\";\n } else if (itemQty > availableQty) {\n return \"Available qty is \" + availableQty + \"!\";\n } else {\n return \"\";\n }\n }\n\n const columns = [\n {\n name: 'id',\n options: {\n display: false,\n }\n },\n {\n 'name': 'po',\n 'label': 'PO #',\n options: {\n filter: true,\n sort: true,\n }\n },\n {\n 'name': 'item',\n 'label': 'Item',\n options: {\n filter: true,\n sort: true,\n }\n },\n {\n 'name': 'desc',\n 'label': 'Item Description',\n options: {\n filter: true,\n sort: true,\n }\n },\n {\n 'name': 'color',\n 'label': 'Color',\n options: {\n filter: true,\n sort: true,\n }\n },\n {\n 'name': 'location',\n 'label': 'Location',\n options: {\n filter: true,\n sort: true,\n }\n },\n {\n 'name': 'a-stock',\n 'label': 'Available Stock',\n options: {\n filter: false,\n sort: false,\n }\n },\n ];\n\n const options = {\n filterType: 'checkbox',\n filter: false,\n print: false,\n disableToolbarSelect: true,\n download:false,\n search:false,\n viewColumns: false,\n elevation: 0,\n customToolbar: () => {return (renderCustomToolBar());},\n };\n\n return (\n <>\n \n \n \n {\"Set Quantity\"}\n \n \n \n \n \n \n \n \n \n \n \n );\n}\n\nInventorySelector.propTypes = {\n orderId: PropTypes.number,\n onComplete: PropTypes.func\n};\n\nInventorySelector.defaultProps = {\n orderId: 0,\n onComplete: () => {\n }\n};\n","import React from 'react';\nimport PrintComponents from \"react-print-components\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport {Print} from \"@material-ui/icons\";\nimport './POReports.css';\nimport {format2NiceDate} from \"../../../utils/DateUtils\";\n\nexport default (props) => {\n if (props.value === null || props.value === \"\") {\n return
;\n } else {\n return (\n \n \n \n }>\n
\n

PO Report

\n {format2NiceDate(new Date())}\n
\n \n \n \n \n \n \n \n \n \n \n \n
Pull Order ID{props.poId}
Customer{getCustomerName(props.customer)}
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n {props.poItems.map((row, index) => (\n \n \n \n \n \n \n \n \n ))}\n \n
PO #ItemItem DescriptionColorLocationQty
{row[1]}{row[2]}{row[3]}{row[4]}{row[5]}{row[6]}
\n
\n \n );\n }\n};\n\nfunction getCustomerName(customer) {\n if (customer && customer.fname && customer.lname) {\n return customer.fname + \" \" + customer.lname;\n } else {\n return \"N/A\";\n }\n}\n\nfunction formatTitle(title) {\n if (title !== null && title.length > 120) {\n title = title.substring(0, 119) + \"...\"\n }\n return title;\n}\n","import React, {useState} from 'react';\nimport {makeStyles} from '@material-ui/core/styles/index';\nimport TextField from '@material-ui/core/TextField';\nimport Grid from '@material-ui/core/Grid';\nimport Button from '@material-ui/core/Button';\nimport {ENTER_KEY_CODE} from \"../../constants\";\nimport {Clear} from \"@material-ui/icons\";\nimport PropTypes from \"prop-types\";\n\nconst useStyles = makeStyles((theme) => (\n {\n bootstrapRoot: {\n padding: 0,\n 'label + &': {\n marginTop: theme.spacing(1),\n },\n },\n bootstrapInput: {\n borderRadius: 4,\n backgroundColor: theme.palette.common.white,\n border: '1px solid #ced4da',\n padding: '5px 12px',\n marginTop: '11px',\n marginBottom: '11px',\n width: '100%',\n transition: theme.transitions.create(['border-color', 'box-shadow']),\n '&:focus': {\n borderColor: '#80bdff',\n boxShadow: '0 0 0 0.2rem rgba(0,123,255,.25)',\n },\n fontSize: 12,\n height:'20px',\n },\n }\n));\n\nexport default function CustomerSearch(props) {\n const classes = useStyles();\n const {onSearch, searchBtn, resetFullView} = props;\n const [searchState, setSearchState] = useState({});\n const [fname, setFname] = useState('');\n const [lname, setLname] = useState('');\n const [address, setAddress] = useState('');\n const [contact, setContact] = useState('');\n\n const handleCustomerSearchChange = (e) => {\n const name = e.target.name;\n let value = e.target.value;\n\n let newState = searchState;\n if (value === '' || value.length === 0) {\n delete newState[name];\n } else {\n newState[name] = value;\n }\n setFormValues(name, value);\n setSearchState(newState);\n };\n\n function setFormValues(name, value) {\n if (name === 'fname') {\n setFname(value);\n } else if (name === 'lname') {\n setLname(value);\n } else if (name === 'contact') {\n setContact(value);\n } else if (name === 'address') {\n setAddress(value);\n }\n }\n\n const handleReset = () => {\n setFname('');\n setLname('');\n setContact('');\n setAddress('');\n setSearchState({});\n if (resetFullView) {\n onSearch({});\n } else {\n onSearch({fname:'empty'});\n }\n };\n\n const handleOnkeyDown = (e) => {\n if (e.keyCode === ENTER_KEY_CODE) {\n onSearch(searchState);\n }\n };\n\n return (\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {searchBtn && }\n \n \n \n \n
\n );\n}\n\nCustomerSearch.propTypes = {\n onSearch: PropTypes.func,\n searchBtn: PropTypes.bool,\n resetFullView: PropTypes.bool\n};\n\nCustomerSearch.defaultProps = {\n onSearch: () => {\n },\n searchBtn: false,\n resetFullView: true\n};\n","import React, { useState, useEffect } from 'react';\nimport MUIDataTable from \"mui-datatables\";\nimport ResourceApi from \"../../apis/Api\";\nimport Search from '../common/CustomerSearch';\nimport _ from \"lodash\";\nimport PropTypes from \"prop-types\";\nimport {handleError} from \"../../utils/MiscellaniousUtils\";\n\nexport default function CustomerSelector(props) {\n\n const { orderId, onComplete } = props;\n const [customers, setCustomers] = useState([]);\n const [tableData, setTableData] = useState([]);\n const [insertCustomerDialogOpen, setInsertCustomerDialogOpen] = useState(false);\n const api = new ResourceApi();\n\n useEffect(() => {\n retrieveAllCustomers();\n }, []);\n\n function retrieveAllCustomers() {\n api.getAllCustomers().then((response) => {\n let list = response.data;\n if (list) {\n setCustomers(list);\n }\n setTableData(createRows(list));\n }).catch((error) => {\n handleError(error);\n });\n }\n\n function createRows(list) {\n let rows = [];\n list.forEach((element) => {\n const rowData = [];\n rowData.push(element.id);\n rowData.push(element.fname);\n rowData.push(element.lname);\n rowData.push(element.cnumber);\n rowData.push(element.address);\n rows.push(rowData);\n });\n return rows;\n }\n\n const handleSearch = (searchState) => {\n const filteredItems = _.filter(customers, function (o) {\n return _.every(searchState, function (v, k) {\n return _.includes(o[k].toLowerCase(), v.toLowerCase());\n });\n });\n setTableData(createRows(filteredItems));\n };\n\n const columns = [\n {\n name: 'id',\n options: {\n display: false,\n }\n },\n {\n 'name': 'fname',\n 'label': 'First Name',\n options: {\n filter: true,\n sort: true,\n }\n },\n {\n 'name': 'lname',\n 'label': 'Last Name',\n options: {\n filter: true,\n sort: true,\n }\n },\n {\n 'name': 'cnumber',\n 'label': 'Contact',\n options: {\n filter: true,\n sort: true,\n }\n },\n {\n 'name': 'address',\n 'label': 'Address',\n options: {\n filter: true,\n sort: true,\n }\n },\n ];\n\n const options = {\n filterType: 'checkbox',\n filter: false,\n print: false,\n disableToolbarSelect: true,\n download:false,\n search:false,\n viewColumns: false,\n elevation: 0,\n };\n\n return (\n <>\n \n \n \n );\n}\n\nCustomerSelector.propTypes = {\n orderId: PropTypes.number,\n onComplete: PropTypes.func\n};\n\nCustomerSelector.defaultProps = {\n orderId: 0,\n onComplete: () => {\n },\n};\n","import React, { useState, useEffect } from 'react';\nimport Parent from '../components/Parent';\nimport MUIDataTable from \"mui-datatables\";\nimport CustomToolbar from '../components/custom/CustomToolbar';\nimport Api from \"../apis/Api\";\nimport InventorySelector from '../components/common/InventorySelector';\nimport { useParams } from \"react-router-dom\";\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogContentText from '@material-ui/core/DialogContentText';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport Button from '@material-ui/core/Button';\nimport DeleteDialog from '../components/common/ConfirmationDialog';\nimport IconButton from \"@material-ui/core/IconButton\";\nimport {ArrowForward, Delete, PostAdd} from \"@material-ui/icons\";\nimport {handleError} from \"../utils/MiscellaniousUtils\";\nimport {Alert} from \"@material-ui/lab\";\nimport POReport from \"../components/print/po-report/POReport\";\nimport CustomerHandler from '../components/common/CustomerSelector';\n\nexport default function PODetailsPage() {\n\n const { id } = useParams();\n const api = new Api();\n const [order, setOrder] = useState(null);\n const [customer, setCustomer] = useState(null);\n const [poItems, setPoItems] = useState([]);\n const [invSelectorOpen, setinvSelectorOpen] = useState(false);\n const [customerSelectorOpen, setCustomerSelectorOpen] = useState(false);\n const [itemDeleteDialogOpen, setItemDeleteDialogOpen] = useState(false);\n const [focussedItem, setFocussedItem] = useState(null);\n\n useEffect(() => {\n // retrieve order details\n getOrderDetails();\n // retrieve order details for id and set to poItems\n retrievePullOrderInventory();\n },[]);\n\n function getOrderDetails() {\n api.getPullOrderDetails(id).then((response) => {\n // console.log(response);\n setOrder(response.data);\n // get customer\n getCustomerDetails(response.data.clientId);\n }).catch((error) => {\n handleError(error);\n });\n }\n\n function getCustomerDetails(id) {\n api.getCustomer(id).then((response) => {\n // console.log(response);\n setCustomer(response.data)\n }).catch((error) => {\n handleError(error);\n });\n }\n\n function retrievePullOrderInventory() {\n api.getPullOrderInventory(id).then((response) => {\n let list = response.data;\n let rows = [];\n list.forEach((element) => {\n const rowData = [];\n rowData.push(element.id);\n rowData.push(element.poNumber);\n rowData.push(element.item);\n rowData.push(element.description);\n rowData.push(element.color);\n rowData.push(element.location);\n rowData.push(element.qty);\n rows.push(rowData);\n });\n setPoItems(rows);\n }).catch((error) => {\n\n });\n }\n\n const handleCreatePO = () => {\n api.setOrderAsPulled(id).then((response) => {\n getOrderDetails();\n }).catch((error) => {\n handleError(error);\n });\n };\n\n const handleInvSelectorOpen = () => {\n setinvSelectorOpen(true);\n };\n\n const handleInvSelectorClose = () => {\n setinvSelectorOpen(false);\n };\n\n const handleCustomerSelectorOpen = () => {\n setCustomerSelectorOpen(true);\n };\n\n const handleCustomerSelectorClose = () => {\n setCustomerSelectorOpen(false);\n };\n\n const handleItemDelete = () => {\n api.deleteInventoryFromOrder(focussedItem).\n then((response) => {\n handleDeleteItemDialogClose();\n retrievePullOrderInventory();\n }).catch((error) => {\n handleError(error);\n });\n };\n\n const handleDeleteItemDialogClose = () => {\n setItemDeleteDialogOpen(false);\n };\n\n const handleRevertOrder = () => {\n api.setOrderAsReverted(id).then((response) => {\n getOrderDetails();\n }).catch((error) => {\n handleError(error);\n });\n };\n\n function renderCustomToolBar(order) {\n if (order) {\n switch (order.state) {\n case 'pulled':\n return (\n <>\n \n \n \n );\n default:\n return (\n <>\n \n }/>\n }/>\n \n );\n }\n }\n }\n\n function isEditable(order) {\n if (order) {\n return order.state === 'new' || order.state === 'reverted';\n }\n }\n\n const columns = [\n {\n name: 'id',\n options: {\n display: false,\n }\n },\n \"PO #\", \"Item\", \"Item Description\", \"Color\", \"Location\", \"Quantity\",\n {\n options: {\n customBodyRender: (value, tableMeta, updateValue) => {\n return (\n <>\n {\n setFocussedItem(tableMeta.rowData[0]);\n setItemDeleteDialogOpen(true);\n }}>\n \n \n \n )\n },\n display: isEditable(order),\n }\n },];\n const options = {\n filterType: 'checkbox',\n filter: false,\n print: false,\n viewColumns: false,\n responsive: 'standard',\n search: false,\n elevation: 0,\n selectableRows: false,\n customToolbar: () => {return (renderCustomToolBar(order));},\n };\n\n return(\n \n {order && order.state === 'pulled' && (\n PO REMOVED FROM INVENTORY!\n )}\n

Customer Name : {customer && customer.fname && customer.lname && customer.fname + \" \" + customer.lname}

\n \n \n {\"Add Item\"}\n \n \n \n \n \n \n \n \n \n \n {\"Add Item\"}\n \n \n \n \n \n \n \n \n \n \n
\n );\n}\n","import React, { useState, useEffect } from 'react';\nimport Parent from '../components/Parent';\nimport MUIDataTable from \"mui-datatables\";\nimport Api from '../apis/Api';\n\nexport default function CabinetPullSheetPage(props) {\n\n const [products, setProducts] = useState('');\n useEffect(() => {\n\n },[]);\n\n\n const columns = [\"PO #\", \"Item\", \"Item Description\", \"Color\", \"Location\", \"Total Units\"];\n const data = [\n [\"Joe James\", \"Test Corp\", \"Yonkers\", \"NY\", \"Yonkers\", \"NY\"],\n [\"John Walsh\", \"Test Corp\", \"Hartford\", \"CT\", \"Yonkers\", \"NY\"],\n [\"Bob Herm\", \"Test Corp\", \"Tampa\", \"FL\", \"Yonkers\", \"NY\"],\n [\"James Houston\", \"Test Corp\", \"Dallas\", \"TX\", \"Yonkers\", \"NY\"],\n ];\n\n const options = {\n filterType: 'checkbox',\n filter: false,\n print: true,\n viewColumns: false,\n responsive: 'standard',\n selectableRows: false,\n };\n\n\n return (\n \n \n \n );\n}\n","import React from \"react\";\nimport {withStyles} from \"@material-ui/core/styles\";\nimport Button from '@material-ui/core/Button';\nimport TextField from \"@material-ui/core/TextField\";\nimport Grid from \"@material-ui/core/Grid\";\nimport {InsertDriveFile} from \"@material-ui/icons\";\n\nconst defaultToolbarStyles = {\n iconButton: {},\n};\n\nclass CustomToolbarImport extends React.Component {\n\n handleClick = () => {\n this.props.handleClick();\n };\n\n onChangeFile = (e) => {\n this.props.onChangeFile(e);\n };\n\n render() {\n const {classes, buttonText} = this.props;\n\n return (\n \n
\n \n
\n \n \n \n
\n
\n
\n );\n }\n\n}\n\nexport default withStyles(defaultToolbarStyles, {name: \"CustomToolbarImport\"})(CustomToolbarImport);","import React, {useContext, useEffect, useState} from 'react';\nimport Parent from '../components/Parent';\nimport MUIDataTable from \"mui-datatables\";\nimport ResourceApi from '../apis/Api';\nimport Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport {makeStyles} from '@material-ui/core/styles/index';\nimport TextField from '@material-ui/core/TextField';\nimport ConfirmationDialog from '../components/common/ConfirmationDialog';\nimport Search from '../components/common/InventoryPOSearch';\nimport _ from 'lodash';\nimport {alertSuccess, handleError, handleFileSizeExceedsError} from \"../utils/MiscellaniousUtils\";\nimport {\n DISCONTINUE,\n DISCONTINUING,\n ENTER_KEY_CODE,\n IMPORT,\n IMPORTING,\n INTERNAL_SERVER_ERROR,\n MAX_FILE_SIZE,\n MAX_FILE_SIZE_STRING,\n SALES\n} from \"../constants\";\nimport CustomToolbarImport from \"../components/custom/CustomToolbarImport\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport UserContext from '../context/UserContext';\nimport {Delete, Edit, Block} from \"@material-ui/icons\";\nimport {Alert} from \"@material-ui/lab\";\n\nconst useStyles = makeStyles((theme) => (\n {\n bootstrapRoot: {\n padding: 0,\n 'label + &': {\n marginTop: theme.spacing(1),\n },\n },\n bootstrapInput: {\n borderRadius: 4,\n backgroundColor: theme.palette.common.white,\n border: '1px solid #ced4da',\n padding: '5px 12px',\n marginTop: '11px',\n marginBottom: '11px',\n width: '100%',\n transition: theme.transitions.create(['border-color', 'box-shadow']),\n '&:focus': {\n borderColor: '#80bdff',\n boxShadow: '0 0 0 0.2rem rgba(0,123,255,.25)',\n },\n fontSize: 12,\n },\n }\n));\n\nexport default function InventoryPOPage(props) {\n\n const user = useContext(UserContext);\n const classes = useStyles();\n const [products, setProducts] = useState(null);\n const [tableData, setTableData] = useState([]);\n const [focussedItem, setFocussedItem] = useState([]);\n const [deleteItemDialogOpen, setDeleteItemDialogOpen] = useState(false);\n const [discontinueItemDialogOpen, setDiscontinueItemDialogOpen] = useState(false);\n const [inventoryUpdateDialogOpen, setInventoryUpdateDialogOpen] = useState(false);\n const [editState, setEditState] = useState({\n inventoryId: null,\n poNumber: '',\n itemId: null,\n itemLocationId: null,\n item: '',\n description: '',\n color: '',\n location: '',\n availableQty: null,\n });\n const [selectedFile, setSelectedFile] = useState(null);\n const [selectedDiscontinueFile, setSelectedDiscontinueFile] = useState(null);\n const[selectedFileError, setSelectedFileError] = useState('');\n const [selectedFileInputKey, setSelectedFileInputKey] = useState(Math.random().toString(36));\n const [importBtnText, setImportBtnText] = useState(IMPORT);\n const [isProcessing, setIsProcessing] = useState(false);\n const [mergeDiagnostics, setMergeDiagnostics] = useState('');\n\n useEffect(() => {\n retrieveAllInventory();\n },[]);\n\n function retrieveAllInventory() {\n const api = new ResourceApi();\n api.getAllInventoryDetails().then((response) => {\n let list = response.data;\n if (list) {\n setProducts(list);\n }\n setTableData(list);\n }).catch((error) => {\n handleError(error);\n });\n }\n\n function createRows(list) {\n let rows = [];\n list.forEach((element) => {\n const rowData = [];\n rowData.push(element.id);\n rowData.push(element.poNumber);\n rowData.push(element.itemId);\n rowData.push(element.itemLocationId);\n rowData.push(element.item);\n rowData.push(element.description);\n rowData.push(element.color);\n rowData.push(element.location);\n rowData.push(element.availableQty);\n rows.push(rowData);\n });\n return rows;\n }\n\n function mergeShouldRender() {\n return user && user.currentUser && user.isAdmin\n }\n\n function actionsShouldRender() {\n return user && user.currentUser && !(user.role === SALES.value)\n }\n\n const handleSearch = (searchState) => {\n const filteredItems = _.filter(products, function (o) {\n return _.every(searchState, function (v, k) {\n return _.startsWith(o[k].toLowerCase(), v.toLowerCase());\n });\n });\n setTableData(filteredItems);\n };\n\n const handleDeleteItemDialogClose = () => {\n setDeleteItemDialogOpen(false);\n };\n\n const handleDiscontinueItemDialogClose = () => {\n setDiscontinueItemDialogOpen(false);\n };\n\n const handleUpdateInventoryClose = () => {\n setInventoryUpdateDialogOpen(false);\n };\n\n const handleEditFormChange = (e) => {\n const name = e.target.name;\n const value = e.target.value;\n let newState = editState;\n newState[name] = value;\n setEditState(newState);\n };\n\n const handleInventoryUpdate = () => {\n console.log(editState)\n new ResourceApi().updateItemLocation(editState).then((response) => {\n handleUpdateInventoryClose();\n retrieveAllInventory();\n }).catch((error) => {\n handleError(error);\n });\n };\n\n const handleItemDelete = () => {\n const api = new ResourceApi();\n api.deleteInventoryLocation(focussedItem[3]).then((response) => {\n handleDeleteItemDialogClose();\n retrieveAllInventory();\n }).catch((error) => {\n handleError(error);\n });\n };\n\n const handleItemDiscontinue = () => {\n const api = new ResourceApi();\n api.discontinueInventoryLocation(focussedItem[3]).then((response) => {\n handleDiscontinueItemDialogClose();\n retrieveAllInventory();\n }).catch((error) => {\n handleError(error);\n });\n };\n\n const handleSelectInventoryMergeFile = (e) => {\n if (e.target.files[0] !== undefined) {\n if (e.target.files[0].size > MAX_FILE_SIZE) {\n handleFileSizeExceedsError(MAX_FILE_SIZE_STRING);\n setSelectedFile(null);\n } else {\n setSelectedFile(e.target.files[0]);\n }\n }\n };\n\n const handleSelectInventoryDiscontinueFile = (e) => {\n if (e.target.files[0] !== undefined) {\n if (e.target.files[0].size > MAX_FILE_SIZE) {\n handleFileSizeExceedsError(MAX_FILE_SIZE_STRING);\n setSelectedDiscontinueFile(null);\n } else {\n setSelectedDiscontinueFile(e.target.files[0]);\n }\n }\n };\n\n const handleMergeBulkInventory = () => {\n const data = new FormData();\n data.append('file', selectedFile);\n\n if (validateInputs()) {\n setImportBtnText(IMPORTING);\n setIsProcessing(true);\n\n const api = new ResourceApi();\n api.importInvStock(data)\n .then(res => {\n setImportBtnText(IMPORT);\n setIsProcessing(false);\n alertSuccess(res.data);\n clearFrom();\n retrieveAllInventory();\n })\n .catch(error => {\n setImportBtnText(IMPORT);\n setIsProcessing(false);\n let err = INTERNAL_SERVER_ERROR;\n if (error.response) {\n err = error.response.data;\n if (typeof err !== \"string\") {\n console.log(err);\n\n let errMsg = \"[\" + err.error + \"]
\" + err.message + \"

\";\n if (err.trace) {\n let ks = err.trace.split(\"\\n\");\n errMsg += \"\\n\" + ks[0];\n }\n err = errMsg;\n }\n }\n setMergeDiagnostics(err);\n });\n }\n };\n\n const handleDiscontinueBulkInventory = () => {\n console.log('handleDiscontinueBulkInventory');\n const data = new FormData();\n data.append('file', selectedDiscontinueFile);\n\n if (validateInputsForDiscontinue()) {\n setImportBtnText(DISCONTINUING);\n setIsProcessing(true);\n\n const api = new ResourceApi();\n api.discontinueItemLocationsStock(data)\n .then(res => {\n setImportBtnText(DISCONTINUE);\n setIsProcessing(false);\n alertSuccess(res.data);\n clearFrom();\n retrieveAllInventory();\n })\n .catch(error => {\n setImportBtnText(DISCONTINUE);\n setIsProcessing(false);\n let err = INTERNAL_SERVER_ERROR;\n if (error.response) {\n err = error.response.data;\n if (typeof err !== \"string\") {\n console.log(err);\n\n let errMsg = \"[\" + err.error + \"]
\" + err.message + \"

\";\n if (err.trace) {\n let ks = err.trace.split(\"\\n\");\n errMsg += \"\\n\" + ks[0];\n }\n err = errMsg;\n }\n }\n setMergeDiagnostics(err);\n });\n }\n };\n\n const validateInputs = () => {\n if (selectedFile == null) {\n setSelectedFileError('Pls select the file you want to import!');\n return false;\n } else {\n setSelectedFileError('');\n }\n return true;\n };\n\n const validateInputsForDiscontinue = () => {\n if (selectedDiscontinueFile == null) {\n setSelectedFileError('Pls select the file you want to import!');\n return false;\n } else {\n setSelectedFileError('');\n }\n return true;\n };\n\n const clearFrom = () => {\n setSelectedFile(null);\n setSelectedFileInputKey(Math.random().toString(36));\n };\n\n const columns = [\n {\n name: 'id',\n options: {\n display: false,\n }\n },\n {\n 'name': 'po',\n 'label': 'PO #',\n options: {\n filter: true,\n sort: true,\n }\n },\n {\n name: 'ItemId',\n options: {\n display: false,\n }\n },\n {\n name: 'itemLocationId',\n options: {\n display: false,\n }\n },\n {\n 'name': 'item',\n 'label': 'Item',\n options: {\n filter: true,\n sort: true,\n }\n },\n {\n 'name': 'desc',\n 'label': 'Item Description',\n options: {\n filter: true,\n sort: true,\n }\n },\n {\n 'name': 'color',\n 'label': 'Color',\n options: {\n filter: true,\n sort: true,\n }\n },\n {\n 'name': 'location',\n 'label': 'Location',\n options: {\n filter: true,\n sort: true,\n }\n },\n {\n 'name': 'a-stock',\n 'label': 'Available Stock',\n options: {\n filter: false,\n sort: false,\n setCellProps: () => ({\n align: \"right\"\n }),\n }\n },\n {\n 'name': 'merge',\n 'label': 'Merge',\n options: {\n customBodyRender: (value, tableMeta, updateValue) => {\n if (actionsShouldRender()) {\n return (\n <>\n {\n console.log(\"triggered\");\n if (event.keyCode === ENTER_KEY_CODE) {\n let qty = parseInt(event.target.value);\n if (qty > 0) {\n const api = new ResourceApi();\n api.addStockToInventory(tableMeta.rowData[3], qty).then((response) => {\n retrieveAllInventory();\n }).catch((error) => {\n handleError(error);\n });\n event.target.value = \"\";\n } else {\n alert(\"Invalid stock qty!\\nStock should be greater than 0\");\n }\n }\n }}/>\n \n )\n }\n }\n }\n },\n {\n 'name': 'actions',\n 'label': 'Actions',\n options: {\n customBodyRender: (value, tableMeta, updateValue) => {\n if (actionsShouldRender()) {\n return (\n <>\n {\n //setFocussedItem(tableMeta.rowData);\n setEditState({\n inventoryId: tableMeta.rowData[0],\n poNumber: tableMeta.rowData[1],\n itemId: tableMeta.rowData[2],\n itemLocationId: tableMeta.rowData[3],\n item: tableMeta.rowData[4],\n description: tableMeta.rowData[5],\n color: tableMeta.rowData[6],\n location: tableMeta.rowData[7],\n availableQty: tableMeta.rowData[8],\n });\n setInventoryUpdateDialogOpen(true);\n }}>\n \n \n {\n setFocussedItem(tableMeta.rowData);\n setDeleteItemDialogOpen(true);\n }}>\n \n \n {\n setFocussedItem(tableMeta.rowData);\n setDiscontinueItemDialogOpen(true);\n }}>\n \n \n \n )\n }\n }\n }\n },\n ];\n\n const options = {\n filterType: 'checkbox',\n filter: false,\n print: false,\n disableToolbarSelect: true,\n search: false,\n elevation: 0,\n selectableRows: false,\n };\n\n return (\n \n {mergeShouldRender() && (\n <>\n \n \n


\n {mergeDiagnostics && mergeDiagnostics !== '' && (\n \n \n \n )}\n \n )}\n \n \n \n {\"Update Inventory Location Details\"}\n \n \n \n \n \n \n \n \n \n \n \n
\n );\n}\n","import React, {useState} from 'react';\nimport {makeStyles} from '@material-ui/core/styles/index';\nimport TextField from '@material-ui/core/TextField';\nimport Grid from '@material-ui/core/Grid';\nimport Button from '@material-ui/core/Button';\nimport Autocomplete from '@material-ui/lab/Autocomplete';\nimport {ENTER_KEY_CODE} from \"../../constants\";\nimport {Clear} from \"@material-ui/icons\";\nimport PropTypes from \"prop-types\";\n\nconst useStyles = makeStyles((theme) => (\n {\n bootstrapRoot: {\n padding: 0,\n 'label + &': {\n marginTop: theme.spacing(1),\n },\n },\n bootstrapInput: {\n borderRadius: 4,\n backgroundColor: theme.palette.common.white,\n border: '1px solid #ced4da',\n padding: '5px 12px',\n marginTop: '11px',\n marginBottom: '11px',\n width: '100%',\n transition: theme.transitions.create(['border-color', 'box-shadow']),\n '&:focus': {\n borderColor: '#80bdff',\n boxShadow: '0 0 0 0.2rem rgba(0,123,255,.25)',\n },\n fontSize: 12,\n height:'20px',\n },\n }\n));\n\nexport default function InventorySearch(props) {\n const classes = useStyles();\n const {onSearch, searchBtn, resetFullView, products, tableData} = props;\n const [searchState, setSearchState] = useState({});\n const [poNumber, setPoNumber] = useState('');\n const [item, setItem] = useState('');\n const [color, setColor] = useState('');\n const [location, setLocation] = useState('');\n const [description, setDescription] = useState('');\n const [availableQty, setAvailableQty] = useState('');\n const [locationACKey, setLocationACKey] = useState(Math.random().toString(36));\n const [colorACKey, setColorACKey] = useState(Math.random().toString(36));\n const [descriptionACKey, setDescriptionACKey] = useState(Math.random().toString(36));\n\n const handleInventorySearchChange = (e) => {\n const name = e.target.name;\n let value = e.target.value;\n console.log(e.target.value);\n if (name === 'availableQty') {\n value = parseInt(value);\n }\n let newState = searchState;\n if (value === '' || value.length === 0 || (name === 'availableQty' && isNaN(value))) {\n delete newState[name];\n } else {\n newState[name] = value;\n }\n setFormValues(name, value);\n console.log(newState);\n setSearchState(newState);\n };\n\n function setFormValues(name, value) {\n if (name === 'poNumber') {\n setPoNumber(value);\n } else if (name === 'color') {\n setColor(value);\n } else if (name === 'item') {\n setItem(value);\n } else if (name === 'location') {\n setLocation(value);\n } else if (name === 'description') {\n setDescription(value);\n } else if (name === 'availableQty') {\n setAvailableQty(value);\n }\n }\n\n const handleReset = () => {\n setPoNumber('');\n setColor('');\n setItem('');\n setLocation('');\n setAvailableQty('');\n setDescription('');\n setDescriptionACKey(Math.random().toString(36));\n setLocationACKey(Math.random().toString(36));\n setColorACKey(Math.random().toString(36));\n setSearchState({});\n if (resetFullView) {\n onSearch({});\n } else {\n onSearch({poNumber:'empty'});\n }\n };\n\n const handleOnkeyDown = (e) => {\n if (e.keyCode === ENTER_KEY_CODE) {\n onSearch(searchState);\n }\n };\n\n return (\n
\n \n \n \n \n \n \n {\n let newState = searchState;\n if (newValue === '' || newValue.length === 0) {\n delete newState['color'];\n } else {\n newState['color'] = newValue;\n }\n setFormValues('color', newValue);\n setSearchState(newState);\n onSearch(searchState);\n }}\n options={[...new Set(tableData.map((option) => option.color))]}\n renderInput={(params) => (\n \n )}\n />\n \n \n {\n let newState = searchState;\n if (newValue === '' || newValue.length === 0) {\n delete newState['description'];\n } else {\n newState['description'] = newValue;\n }\n setFormValues('description', newValue);\n setSearchState(newState);\n onSearch(searchState);\n }}\n options={[...new Set(tableData.map((option) => option.description))]}\n renderInput={(params) => (\n \n )}\n />\n \n \n {searchBtn && }\n \n \n \n \n
\n );\n}\n\nInventorySearch.propTypes = {\n onSearch: PropTypes.func,\n searchBtn: PropTypes.array,\n resetFullView: PropTypes.object,\n products: PropTypes.array,\n tableData: PropTypes.array\n};\n\nInventorySearch.defaultProps = {\n onSearch: () => {\n },\n searchBtn: false,\n resetFullView: false,\n products: [],\n tableData: []\n};\n","import React, {useContext, useEffect, useReducer, useState} from 'react';\nimport Parent from '../components/Parent';\nimport MUIDataTable from \"mui-datatables\";\nimport ResourceApi from '../apis/Api';\nimport CustomToolbar from '../components/custom/CustomToolbar';\nimport Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport {makeStyles} from '@material-ui/core/styles/index';\nimport TextField from '@material-ui/core/TextField';\nimport ConfirmationDialog from '../components/common/ConfirmationDialog';\nimport Search from '../components/common/InventorySearch';\nimport _ from 'lodash';\nimport {alertSuccess, handleError, handleFileSizeExceedsError} from \"../utils/MiscellaniousUtils\";\nimport {\n DISCONTINUE,\n DISCONTINUING,\n IMPORT,\n INTERNAL_SERVER_ERROR,\n MAX_FILE_SIZE,\n MAX_FILE_SIZE_STRING,\n WAREHOUSE\n} from \"../constants\";\nimport IconButton from \"@material-ui/core/IconButton\";\nimport UserContext from '../context/UserContext';\nimport {Add, Delete, Edit} from \"@material-ui/icons\";\nimport {Redirect} from \"react-router-dom\";\nimport {Table} from \"react-bootstrap\";\nimport CustomToolbarImport from \"../components/custom/CustomToolbarImport\";\nimport {Alert} from \"@material-ui/lab\";\n\nfunction reducer(state, { field, value }) {\n return { ...state, [field]: value };\n}\n\nconst useStyles = makeStyles((theme) => (\n {\n bootstrapRoot: {\n padding: 0,\n 'label + &': {\n marginTop: theme.spacing(1),\n },\n },\n bootstrapInput: {\n borderRadius: 4,\n backgroundColor: theme.palette.common.white,\n border: '1px solid #ced4da',\n padding: '5px 12px',\n marginTop: '11px',\n marginBottom: '11px',\n width: '100%',\n transition: theme.transitions.create(['border-color', 'box-shadow']),\n '&:focus': {\n borderColor: '#80bdff',\n boxShadow: '0 0 0 0.2rem rgba(0,123,255,.25)',\n },\n fontSize: 12,\n },\n }\n));\n\nexport default function InventoryPage(props) {\n\n const user = useContext(UserContext);\n const classes = useStyles();\n const [products, setProducts] = useState(null);\n const [tableData, setTableData] = useState([]);\n const [focussedItem, setFocussedItem] = useState([]);\n const [deleteItemDialogOpen, setDeleteItemDialogOpen] = useState(false);\n const [inventoryInsertDialogOpen, setInventoryInsertDialogOpen] = useState(false);\n const [inventoryUpdateDialogOpen, setInventoryUpdateDialogOpen] = useState(false);\n const [pODetailInsertDialogOpen, setPODetailInsertDialogOpen] = useState(false);\n const [initialState, setInitialState] = useState({\n inventoryId: null,\n item: '',\n description: '',\n color: '',\n reorder: null,\n yellow: null,\n red: null,\n falloff: null,\n maxCapacity: null,\n });\n const [state, dispatch] = useReducer(reducer, initialState);\n const [editState, setEditState] = useState({\n inventoryId: null,\n item: '',\n description: '',\n color: '',\n reorder: null,\n yellow: null,\n red: null,\n falloff: null,\n maxCapacity: null,\n });\n const [initialPODetailState, setInitialPODetailState] = useState({\n poNumber: '',\n itemId: null,\n qty: null,\n locationDetails: []\n });\n const [initialLocationDetail, setInitialLocationDetail] = useState({\n location: '',\n qty: 0,\n });\n const [locDetailCount, setLocDetailCount] = useState([]);\n const [statePODetail, dispatchPODetail] = useReducer(reducer, initialPODetailState);\n const [selectedFile, setSelectedFile] = useState(null);\n const[selectedFileError, setSelectedFileError] = useState('');\n const [selectedFileInputKey, setSelectedFileInputKey] = useState(Math.random().toString(36));\n const [importBtnText, setImportBtnText] = useState(IMPORT);\n const [isProcessing, setIsProcessing] = useState(false);\n const [mergeDiagnostics, setMergeDiagnostics] = useState('');\n\n useEffect(() => {\n retrieveAllInventory();\n },[]);\n\n function retrieveAllInventory() {\n const api = new ResourceApi();\n api.getAllInventory().then((response) => {\n let list = response.data;\n if (list) {\n setProducts(list);\n }\n setTableData(list);\n }).catch((error) => {\n handleError(error);\n });\n }\n\n function createRows(list) {\n let rows = [];\n list.forEach((element) => {\n const rowData = [];\n rowData.push(element.inventoryId);\n rowData.push(element.item);\n rowData.push(element.description);\n rowData.push(element.color);\n rowData.push(element.reorder);\n rowData.push(element.yellow);\n rowData.push(element.red);\n rowData.push(element.falloff);\n rowData.push(element.maxCapacity);\n rows.push(rowData);\n });\n return rows;\n }\n\n function mergeShouldRender() {\n return user && user.currentUser && user.isAdmin\n }\n\n const handleInsertInventoryOpen = () => {\n setInventoryInsertDialogOpen(true);\n };\n\n const handleInsertInventoryClose = () => {\n setInventoryInsertDialogOpen(false);\n };\n\n const handleUpdateInventoryClose = () => {\n setInventoryUpdateDialogOpen(false);\n };\n\n const handleChange = (e) => {\n console.log(e.target.name);\n dispatch({ field: e.target.name, value: e.target.value });\n };\n\n const handleInsertPODetailOpen = (id) => {\n handlePODetailItemIdChange(id)\n setPODetailInsertDialogOpen(true);\n };\n\n const handleInsertPODetailClose = () => {\n setPODetailInsertDialogOpen(false);\n handlePODetailItemIdChange(null);\n dispatchPODetail({ field: 'poNumber', value: '' });\n dispatchPODetail({ field: 'locationDetails', value: [] });\n };\n\n const handlePODetailChange = (e) => {\n dispatchPODetail({ field: e.target.name, value: e.target.value });\n };\n\n const handlePODetailItemIdChange = (id) => {\n dispatchPODetail({ field: 'itemId', value: id });\n };\n\n const handlePODetailLocationChange = (e) => {\n setInitialLocationDetail({\n ...initialLocationDetail,\n location: e.target.value\n })\n };\n\n const handlePODetailQtyChange = (e) => {\n setInitialLocationDetail({\n ...initialLocationDetail,\n qty: e.target.value\n })\n };\n\n const handleAddPODetailLocation = () => {\n if(initialLocationDetail.location !== '' && initialLocationDetail.qty !== 0){\n const arr = [...statePODetail.locationDetails]\n arr.push(initialLocationDetail)\n setInitialLocationDetail({\n location: '',\n qty: 0,\n })\n dispatchPODetail({ field: 'locationDetails', value: arr });\n }\n };\n\n const handleSearch = (searchState) => {\n const filteredItems = _.filter(products, function (o) {\n return _.every(searchState, function (v, k) {\n return _.startsWith(o[k].toLowerCase(), v.toLowerCase());\n });\n });\n setTableData(filteredItems);\n };\n\n const handleEditFormChange = (e) => {\n const name = e.target.name;\n const value = e.target.value;\n let newState = editState;\n newState[name] = value;\n setEditState(newState);\n };\n\n const handleInventoryInsert = () => {\n const api = new ResourceApi();\n console.log(state);\n api.insertInventoryItem(state).then((response) => {\n handleInsertInventoryClose();\n retrieveAllInventory();\n }).catch((error) => {\n handleError(error);\n });\n };\n\n const handleInventoryUpdate = () => {\n new ResourceApi().updateInventoryItem(editState).then((response) => {\n handleUpdateInventoryClose();\n retrieveAllInventory();\n }).catch((error) => {\n handleError(error);\n });\n };\n\n const handlePODetailInsert = () => {\n console.log(statePODetail)\n const api = new ResourceApi();\n api.insertPODetail(statePODetail).then((response) => {\n handleInsertPODetailClose();\n retrieveAllInventory();\n }).catch((error) => {\n handleInsertPODetailClose();\n handleError(error);\n });\n };\n\n const handleDeleteItemDialogClose = () => {\n setDeleteItemDialogOpen(false);\n };\n\n const handleItemDelete = () => {\n const api = new ResourceApi();\n api.deleteInventoryItem(focussedItem[0]).then((response) => {\n handleDeleteItemDialogClose();\n retrieveAllInventory();\n }).catch((error) => {\n handleError(error);\n });\n };\n\n const handleSelectInventoryDiscontinueFile = (e) => {\n if (e.target.files[0] !== undefined) {\n if (e.target.files[0].size > MAX_FILE_SIZE) {\n handleFileSizeExceedsError(MAX_FILE_SIZE_STRING);\n setSelectedFile(null);\n } else {\n setSelectedFile(e.target.files[0]);\n }\n }\n };\n\n const validateInputs = () => {\n if (selectedFile == null) {\n setSelectedFileError('Pls select the file you want to import!');\n return false;\n } else {\n setSelectedFileError('');\n }\n return true;\n };\n\n const clearFrom = () => {\n setSelectedFile(null);\n setSelectedFileInputKey(Math.random().toString(36));\n };\n\n const handleDiscontinueBulkInventory = () => {\n const data = new FormData();\n data.append('file', selectedFile);\n\n if (validateInputs()) {\n setImportBtnText(DISCONTINUING);\n setIsProcessing(true);\n\n const api = new ResourceApi();\n api.discontinueInvStock(data)\n .then(res => {\n setImportBtnText(DISCONTINUE);\n setIsProcessing(false);\n alertSuccess(res.data);\n clearFrom();\n retrieveAllInventory();\n })\n .catch(error => {\n setImportBtnText(DISCONTINUE);\n setIsProcessing(false);\n let err = INTERNAL_SERVER_ERROR;\n if (error.response) {\n err = error.response.data;\n if (typeof err !== \"string\") {\n console.log(err);\n\n let errMsg = \"[\" + err.error + \"]
\" + err.message + \"

\";\n if (err.trace) {\n let ks = err.trace.split(\"\\n\");\n errMsg += \"\\n\" + ks[0];\n }\n err = errMsg;\n }\n }\n setMergeDiagnostics(err);\n });\n }\n };\n\n const columns = [\n {\n 'name': 'inventoryId',\n 'label': 'ID',\n options: {\n filter: true,\n sort: true,\n }\n },\n {\n 'name': 'item',\n 'label': 'Item',\n options: {\n filter: true,\n sort: true,\n }\n },\n {\n 'name': 'desc',\n 'label': 'Item Description',\n options: {\n filter: true,\n sort: true,\n }\n },\n {\n 'name': 'color',\n 'label': 'Color',\n options: {\n filter: true,\n sort: true,\n }\n },\n {\n 'name': 'reorder',\n 'label': 'Re-Order',\n options: {\n filter: true,\n sort: true,\n }\n },\n {\n 'name': 'yellow',\n 'label': 'Yellow',\n options: {\n filter: true,\n sort: true,\n }\n },\n {\n 'name': 'red',\n 'label': 'Red',\n options: {\n filter: true,\n sort: true,\n }\n },\n {\n 'name': 'falloff',\n 'label': 'Fall Off',\n options: {\n filter: true,\n sort: true,\n }\n },\n {\n 'name': 'maxCapacity',\n 'label': 'Max Capacity',\n options: {\n filter: true,\n sort: true,\n }\n },\n {\n 'name': 'actions',\n 'label': 'Actions',\n options: {\n customBodyRender: (value, tableMeta, updateValue) => {\n return (\n <>\n handleInsertPODetailOpen(tableMeta.rowData[0])} buttonText={'Add PO Detail'} startIcon={}/>\n {\n //setFocussedItem(tableMeta.rowData);\n setEditState({\n inventoryId: tableMeta.rowData[0],\n item: tableMeta.rowData[1],\n description: tableMeta.rowData[2],\n color: tableMeta.rowData[3],\n reorder: tableMeta.rowData[4],\n yellow: tableMeta.rowData[5],\n red: tableMeta.rowData[6],\n falloff: tableMeta.rowData[7],\n maxCapacity: tableMeta.rowData[8],\n });\n setInventoryUpdateDialogOpen(true);\n }}>\n \n \n {\n setFocussedItem(tableMeta.rowData);\n setDeleteItemDialogOpen(true);\n }}>\n \n \n \n )\n }\n }\n },\n ];\n\n const options = {\n filterType: 'checkbox',\n customToolbar: () => {\n return (\n <>\n }/>\n );\n },\n filter: false,\n print: false,\n disableToolbarSelect: true,\n search: false,\n elevation: 0,\n selectableRows: false\n };\n\n // only warehouse cannot access this\n if (user && user.currentUser && user.role === WAREHOUSE.value) {\n return ();\n }\n\n return (\n \n {/*{mergeShouldRender() && (*/}\n {/* <>*/}\n {/* */}\n {/*


*/}\n {/* {mergeDiagnostics && mergeDiagnostics !== '' && (*/}\n {/* */}\n {/* */}\n {/* */}\n {/* )}*/}\n {/* */}\n {/*)}*/}\n \n \n \n {\"Add Inventory Item\"}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {\"Update Inventory\"}\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {\"Add PO Detail\"}\n \n \n \n \n \n \n \n \n \n \n \n
\n \n \n \n \n \n \n \n
\n \n \n \n \n \n \n \n \n {statePODetail.locationDetails.map(item => {\n return (\n \n \n \n \n )\n })}\n \n
LocationQuantity
\n {item.location}\n \n {item.qty}\n
\n
\n \n \n \n \n
\n \n
\n );\n}\n","import React from 'react';\nimport CircularProgress from '@material-ui/core/CircularProgress';\nimport {makeStyles} from \"@material-ui/core/styles/index\";\n\nconst useStyles = makeStyles((theme) => (\n {\n progress: {\n width: '64px',\n height: '64px',\n position: 'absolute',\n left: '50%',\n top: '50%',\n },\n }\n));\n\nexport default function Progress(props) {\n\n const classes = useStyles();\n\n return (
);\n}\n","import React, { useState, useEffect, useContext } from 'react';\nimport Parent from '../components/Parent';\nimport UserContext from '../context/UserContext';\nimport UserApi from '../apis/UserAPI';\nimport MUIDataTable from \"mui-datatables\";\nimport Button from '@material-ui/core/Button';\nimport Dialog from '@material-ui/core/Dialog';\nimport DialogActions from '@material-ui/core/DialogActions';\nimport DialogContent from '@material-ui/core/DialogContent';\nimport DialogTitle from '@material-ui/core/DialogTitle';\nimport DialogContentText from '@material-ui/core/DialogContentText';\nimport Select from '@material-ui/core/Select';\nimport MenuItem from '@material-ui/core/MenuItem';\nimport FormControl from '@material-ui/core/FormControl';\nimport Progress from '../components/common/Progress';\nimport IconButton from \"@material-ui/core/IconButton\";\nimport {Add, Delete, Edit} from \"@material-ui/icons\";\nimport ConfirmationDialog from \"../components/common/ConfirmationDialog\";\nimport {alertError, handleError} from '../utils/MiscellaniousUtils';\n\nexport default function UsersPage(props) {\n const user = useContext(UserContext);\n const [userList, setUserList] = useState([]);\n const [tableData, setTableData] = useState([]);\n const [open, setOpen] = React.useState(false);\n const [focussedItem, setFocussedItem] = useState([]);\n const [updateRoleDialogOpen, setUpdateRoleDialogOpen] = useState(false);\n const [deleteItemDialogOpen, setDeleteItemDialogOpen] = useState(false);\n const usersApi = new UserApi();\n\n useEffect(() => {\n retrieveAllUsers();\n },[]);\n\n function retrieveAllUsers() {\n usersApi.getUsers().then((response) => {\n let list = response.data;\n console.log(response.data);\n setUserList(response.data);\n setTableData(createRows(list));\n }).catch((error) => {\n handleError(error);\n });\n }\n\n function createRows(list) {\n let rows = [];\n list.forEach((element) => {\n const rowData = [];\n rowData.push(element.id);\n rowData.push(element.username);\n rowData.push(element.email);\n rowData.push(element.type);\n rows.push(rowData);\n });\n return rows;\n }\n\n const handleClose = () => {\n setOpen(false);\n };\n\n const handleOpen = () => {\n setOpen(true);\n };\n\n const handleUpdateUserRoleDialogClose = () => {\n setUpdateRoleDialogOpen(false);\n };\n\n const handleUserRoleUpdate = () => {\n // call backend api and update the role with updated focused item\n usersApi.updateUser(focussedItem[0], focussedItem[3]).then((response) => {\n retrieveAllUsers();\n setUpdateRoleDialogOpen(false);\n }).catch((error) => {\n handleError(error);\n });\n };\n\n const handleDeleteItemDialogClose = () => {\n setDeleteItemDialogOpen(false);\n };\n\n const handleItemDelete = () => {\n usersApi.deleteUser(focussedItem[0]).then((response) => {\n handleDeleteItemDialogClose();\n retrieveAllUsers();\n }).catch((error) => {\n alertError(error);\n });\n };\n\n if (user && user.currentUser && !user.isAdmin) {\n return ();\n }\n\n\n const columns = [\n {\n name: 'id',\n options: {\n display: false,\n }\n },\n {\n 'name': 'username',\n 'label': 'User Name',\n options: {\n filter: true,\n sort: true,\n }\n },\n {\n 'name': 'email',\n 'label': 'Email',\n options: {\n filter: true,\n sort: true,\n }\n },\n {\n 'name': 'role',\n 'label': 'Role',\n options: {\n filter: true,\n sort: true,\n display: true,\n }\n },\n {\n 'name': 'action',\n 'label': 'Action',\n options: {\n filter: true,\n sort: true,\n customBodyRender: (value, tableMeta, updateValue) => {\n return (\n <>\n \n {\n setFocussedItem(tableMeta.rowData);\n setDeleteItemDialogOpen(true);\n }}>\n \n \n \n )\n }\n },\n },\n ];\n\n const options = {\n filterType: 'checkbox',\n filter: false,\n print: false,\n disableToolbarSelect: true,\n search: false,\n selectableRows: false,\n elevation: 0,\n };\n\n\n return(\n \n \n \n Update Role of {focussedItem[1]}\n \n \n Select a role from the below list to update.\n \n \n {\n let newFocus = focussedItem;\n newFocus[3] = e.target.value;\n setFocussedItem(newFocus);\n }}\n >\n Admin\n Sales\n Warehouse\n No Access\n \n \n \n \n \n \n \n \n \n \n )\n}\n","import React, {useState, useEffect, useContext} from 'react';\nimport ResourceApi from \"../apis/Api\";\nimport Parent from \"../components/Parent\";\nimport Progress from '../components/common/Progress';\nimport UserContext from '../context/UserContext';\nimport ReactTable from 'react-table-6'\n// using an older version (v6) of react-table since v7 supports headless approach, hence more work has to be done to render the table\nimport 'react-table-6/react-table.css'\nimport Chip from '@material-ui/core/Chip';\nimport {handleError} from \"../utils/MiscellaniousUtils\";\n\nconst CHIP_MAX_WIDTH = 100;\nconst CHIP_ICON_WIDTH = 30;\n\nconst EllipsisText = props => {\n const { children } = props;\n\n return (\n \n {children}\n
\n );\n};\n\nexport default function SalesTeamInventoryPage(props) {\n\n const [products, setProducts] = useState([]);\n const user = useContext(UserContext);\n\n useEffect(() => {\n retrieveAllInventory();\n },[]);\n\n function retrieveAllInventory() {\n const api = new ResourceApi();\n api.getReorderItems().then((response) => {\n let list = response.data;\n if (list) {\n setProducts(list);\n }\n }).catch((error) => {\n handleError(error);\n });\n }\n\n const renderQuantity = (row) => {\n if (row.original) {\n switch (row.original.status) {\n case \"red\":\n return ({row.row.quantity}} variant=\"outlined\" style={{backgroundColor:'red'}}/>)\n case \"yellow\":\n return ({row.row.quantity}} variant=\"outlined\" style={{backgroundColor:'yellow'}}/>)\n case \"green\":\n return ({row.row.quantity})\n }\n }\n };\n\n const filterMethod = (filter, row, column) => {\n const id = filter.pivotId || filter.id;\n if (id === 'quantity' && isNaN(filter.value)) {\n // special use case where user searches quantity by color\n return row[id] !== undefined ? String(row._original.status.toLowerCase()).startsWith(filter.value.toLowerCase()) : true\n }\n return row[id] !== undefined ? String(row[id].toString().toLowerCase()).startsWith(filter.value.toLowerCase()) : true\n };\n\n const columns = [{\n Header: props => Item,\n accessor: 'item'\n }, {\n Header: props => Description,\n accessor: 'description',\n Cell: props => {props.value} // Custom cell components!\n }, {\n Header: props => Color,\n accessor: 'color'\n }, {\n Header: props => Quantity,\n accessor: 'quantity',\n //getProps: trProps,\n Cell: renderQuantity,\n maxWidth:80,\n },{\n Header: props => Max Capacity,\n accessor: 'maxCapacity',\n filterable: false\n }, {\n Header: props => Reorder Amount,\n accessor: 'reorderAmount',\n filterable: false\n }, {\n Header: props => Fall Off Amount,\n accessor: 'falloffAmount',\n filterable: false\n }, {\n Header: props => Rules,\n columns: [\n {\n Header: props =>

Red

,\n accessor: 'red',\n filterable: false,\n maxWidth:80,\n Cell: props => {props.value}%\n },\n {\n Header: props =>

Yellow

,\n accessor: 'yellow',\n filterable: false,\n maxWidth:80,\n Cell: props => {props.value}%\n },\n {\n Header: props =>

Reorder

,\n accessor: 'reorder',\n filterable: false,\n maxWidth:80,\n Cell: props => {props.value}%\n },\n {\n Header: props =>

Fall Off

,\n accessor: 'falloff',\n filterable: false,\n maxWidth:80,\n Cell: props => {props.value}%\n }\n ],\n }\n ]\n\n // only admin access\n if (user && user.currentUser && !user.isAdmin) {\n return ();\n }\n\n return (\n \n \n \n );\n}\n","import React, {Component} from 'react';\nimport {Route, Redirect, Switch} from 'react-router';\nimport AuthService from './services/AuthService';\nimport {ADMIN, NO_ACCESS} from \"../constants\";\nimport POListingPage from \"../pages/POListingPage\";\nimport PODetailsPage from \"../pages/PODetailsPage\";\nimport CabinetPullSheet from \"../pages/CabinetPullSheetPage\";\nimport InventoryPOPage from \"../pages/InventoryPOPage\";\nimport InventoryPage from \"../pages/InventoryPage\";\nimport UsersPage from '../pages/UsersPage';\nimport SalesTeamInventoryPage from '../pages/SalesTeamInventoryPage';\nimport Qs from 'qs';\nimport {alertError} from \"../utils/MiscellaniousUtils\";\nimport {UserProvider} from '../context/UserContext';\n\nexport default class SecuredRouter extends Component {\n\n constructor(props) {\n super(props);\n this.handleSessionInvalid = this.handleSessionInvalid.bind(this);\n window.handleSessionInvalid = this.handleSessionInvalid;\n\n this.state = {\n currentUser: null,\n isAdmin: false,\n role: null,\n redirectUrl: undefined,\n };\n }\n\n componentDidMount() {\n const user = AuthService.getCurrentUser();\n if (user) {\n const role = AuthService.getCurrentUserRole();\n if (role) {\n this.setState({\n currentUser: user,\n isAdmin: role === ADMIN.value,\n role: role\n });\n } else {\n alertError(\"Unable to fetch User Role! Please contact Admin\");\n }\n }\n }\n\n handleSessionInvalid() {\n this.forceUpdate();\n }\n\n render() {\n const user = AuthService.getCurrentUser();\n const role = AuthService.getCurrentUserRole();\n if (!user || role === NO_ACCESS.value) {\n let referrer = this.props.location.pathname;\n const arr = referrer.split('');\n if (arr[arr.length - 1] !== '/') {\n referrer += '/';\n }\n const params = Qs.stringify({referrer});\n return (\n \n );\n }\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n }\n}\n","import React from 'react';\nimport {BrowserRouter} from 'react-router-dom';\nimport {Route, Switch} from 'react-router';\nimport './App.css';\nimport LoginPage from './user/Login';\nimport SecuredRouter from './user/SecuredRouter';\n\nfunction App() {\n return(\n \n \n \n \n \n \n );\n}\n\nexport default App;\n","const reportWebVitals = onPerfEntry => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\nimport reportWebVitals from './reportWebVitals';\n\nReactDOM.render(\n \n \n ,\n document.getElementById('root')\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"sourceRoot":""}