{"version":3,"sources":["helpers/TokenHelper.js","helpers/UrlHelper.js","redux/login/AuthConstants.js","redux/login/AuthViewActions.js","history/History.js","redux/Api.js","helpers/ConsoleHelper.js","redux/login/AuthServerActions.js","components/NavBar.jsx","components/controls/Button.jsx","components/controls/AutoComplete.jsx","components/controls/ProgressBar.jsx","components/controls/Controls.jsx","components/controls/Input.jsx","components/controls/DatePicker.jsx","components/controls/CustomSelect.jsx","components/controls/AutoCompleteSelect.jsx","redux/customer/CustomerConstants.js","redux/customer/CustomerViewActions.js","redux/customer/CustomerServerAction.js","redux/customer-order-number/CustomerOrderNumberConstants.js","redux/customer-order-number/CustomerOrderNumberViewActions.js","redux/customer-order-number/CustomerOrderNumberServerActions.js","pages/InvoiceList/InvoiceSearchForm.jsx","redux/invoice-list/InvoiceListConstants.js","redux/invoice-list/InvoiceListViewActions.js","redux/invoice-list/InvoiceListServerActions.js","pages/InvoiceList/InvoiceCard.jsx","components/Notification.jsx","pages/InvoiceList/QuickDetailLineView.jsx","helpers/NotificationHelper.js","pages/InvoiceList/InvoiceList.jsx","redux/invoice-detail/InvoiceDetailConstants.js","redux/invoice-detail/InvoiceDetailViewActions.js","redux/invoice-detail/InvoiceDetailServerActions.js","pages/ViewInvoice/InvoiceHeader.jsx","components/CustomSkeleton.jsx","helpers/SkeletonHelper.js","pages/ViewInvoice/InvoiceDetailLines.jsx","pages/ViewInvoice/CommentDialog.jsx","pages/ViewInvoice/CameraDialog.jsx","styles/GlobalStyle.js","pages/ViewInvoice/PickupInfoForm.jsx","pages/ViewInvoice/PickupSaveNotification.jsx","pages/ViewInvoice/ViewInvoice.jsx","pages/Authentication/LoginPage.jsx","components/ProtectedRoute.jsx","pages/NotFound/NotFound.js","theme/CustomTheme.js","App.js","redux/invoice-list/InvoiceListReducer.js","redux/invoice-detail/InvoiceDetailReducer.js","redux/customer/CustomerReducer.js","redux/login/AuthReducer.js","redux/customer-order-number/CustomerOrderNumberReducer.js","redux/RootReducer.js","redux/Store.js","index.js"],"names":["USER_KEY","BASE_SUBDOMAIN","BASE_URL","BASE_URL1","apiVersion","GET_INVOICES_SETTING_URL","GET_INVOICES_FOR_TODAY_URL","SEARCH_INVOICE_BY_INVOICE_NUMBER_URL","SEARCH_INVOICE_BY_CUSTOMER_CODE","SEARCH_INVOICE_BY_CUSTOMER_NAME","SEARCH_INVOICE_BY_CUSTOMER_ORDER_NUMBER","GET_INVOICE_DETAIL_URL","GET_INVOICE_DETAIL_LINES_URL","SAVE_PICKUP_DETAIL_URL","SEARCH_CUSTOMERS_BY_CODE_URL","SEARCH_CUSTOMERS_BY_NAME_URL","LOGIN_URL","REFRESH_TOKEN_URL","SEARCH_CUSTOMER_ORDER_NUMBER_URL","LOGOUT_USER_URL","LOGIN_REQUEST_STARTED","LOGIN_REQUEST_SUCCESS","LOGIN_REQUEST_FAILED","LOGOUT_USER","loginRequestStarted","type","loginRequestSuccess","user","payload","logoutUser","history","createBrowserHistory","require","basename","apiClient","axios","create","baseURL","headers","getRefreshTokenObject","token","source","ConsoleHelper","data","loginUser","dispatch","post","api","then","resp","error","success","push","message","catch","refreshToken","logoutUserFromServer","useStyles","makeStyles","theme","root","flexGrow","logo","margin","spacing","maxHeight","link","color","textDecoration","menuButton","marginRight","navbarActionContainer","display","alignItems","flex","justifyContent","connect","state","auth","props","handleThemeClick","useState","username","setUsername","isLoggedIn","setIsLoggedIn","React","anchorEl","setAnchorEl","open","Boolean","useEffect","JSON","parse","localStorage","getItem","name","handleClose","classes","AppBar","position","Toolbar","Link","component","RouterLink","to","className","src","process","alt","Typography","Switch","icon","checkedIcon","onChange","e","checked","IconButton","onClick","event","currentTarget","AccountCircle","Menu","id","anchorOrigin","vertical","horizontal","keepMounted","transformOrigin","onClose","MenuItem","label","textTransform","AutoComplete","defaultProps","Autocomplete","autoSelect","renderInput","params","TextField","ProgressBar","LinearProgress","Controls","Button","variant","text","size","others","styles","Input","value","fullWidth","helperText","DatePicker","utils","DateFnsUtils","disableToolbar","inputVariant","format","date","target","convertToDefEventPara","style","width","CustomSelect","handleOpen","handleChange","items","FormControl","InputLabel","onOpen","map","item","AutoCompleteSelect","options","inputValue","noOptionsText","setInputValue","inputTextChange","inputLabelText","autoCompleteInputChange","filterOptions","x","autoComplete","includeInputInList","onInputChange","inputProps","SEARCH_CUSTOMERS_BY_CODE_REQUEST_SUCCESS","SEARCH_CUSTOMERS_BY_CODE_REQUEST_FAILED","SEARCH_CUSTOMERS_BY_NAME_REQUEST_SUCCESS","SEARCH_CUSTOMERS_BY_NAME_REQUEST_FAILED","searchCustomerByCodeRequestFailed","searchCustomerByNameRequestFailed","searchCustomersByCode","searchKey","get","customers","searchCustomersByName","SEARCH_CUSTOMER_ORDER_NUMBER_REQUEST_SUCCESS","SEARCH_CUSTOMER_ORDER_NUMBER_REQUEST_FAILED","searchCustomerOrderNumberRequestSuccess","searchCustomerOrderNumber","invoicesPerPage","formattedDate","d","Date","month","String","getMonth","day","getDate","year","getFullYear","length","initialFormValues","invoiceNumber","endDate","marginTop","padding","paddingTop","paddingBottom","searchItemContainer","searchByDateContainer","expand","transform","marginLeft","transition","transitions","duration","shortest","expandOpen","closeButton","right","top","palette","grey","dropDown","tranTypeStyle","green","customerOrderNumbers","searchByCustomerCode","searchByCustomerName","formValues","setFormValues","showSetting","setShowSetting","customerCode","setCustomerCode","customerName","setCustomerName","customerOrderNumber","setCustomerOrderNumber","errors","setErrors","itemPerPageOpen","setItemPerPageOpen","handleSearchByInvoiceNumber","handleSearchByCustomerCode","handleSearchByCustomerName","handleSearchByCustomerOrderNumber","handleItemPerPageChange","invoicePerPage","getCurrentTransactions","invoicesOnly","searchTypeText","handleInvoicesOnlyChange","supportSalesOrder","startDate","handleFormValueChange","handleInputChange","validate","fieldName","validateInvoiceNumberField","tempErrors","Paper","Grid","container","xs","md","maxLength","preventDefault","orderNumbers","newInputValue","getOptionLabel","option","orderNumber","renderOption","validateCustomerOrderNumberField","customersByCode","code","validateCustomerCodeField","customersByName","validateCustomerNameField","startIcon","Dialog","maxWidth","DialogTitle","disableTypography","DialogContent","dividers","List","ListItem","divider","ListItemText","primary","secondary","ListItemSecondaryAction","FormControlLabel","control","Select","DialogActions","INVOICE_LIST_REQUEST_STARTED","INVOICE_LIST_REQUEST_SUCCESS","INVOICE_LIST_REQUEST_FAILED","FILTER_INVOICES","INVOICE_LIST_CLOSE_NOTIFICATION","INVOICE_LIST_FORM_VALUE_CHANGED","INVOICE_SETTING_REQUEST_STARTED","INVOICE_SETTING_REQUEST_SUCCESS","INVOICE_SETTING_REQUEST_FAILED","INVOICE_DETAIL_REQUEST_STARTED","INVOICE_DETAIL_REQUEST_SUCCESS","INVOICE_DETAIL_REQUEST_FAILED","invoiceListRequestStarted","invoiceListRequestSuccess","invoices","invoiceListRequestFailed","invoiceSettingRequestFailed","invoiceDetailRequestFailed","retrieveInvoicesForToday","searchByInvoiceNumber","listInvoicesByCustomerCode","listInvoicesByCustomerName","customerCodeName","searchInvoiceByCustomerOrderNumber","getInvoiceDetailLines","invoiceDetails","retrieveInvoiceSetting","setting","skeletonHeight","height","header","dark","orange","getContrastText","deepOrange","backgroundColor","blue","deepPurple","blueGrey","cyan","InvoiceCard","invoice","handleViewDetailLinesClick","loading","displayPriceField","supportedAvatarBackgroundColors","Card","CardHeader","title","avatar","Skeleton","animation","firstChar","validChar","i","charAt","match","Avatar","Math","floor","random","toUpperCase","getAvatar","action","marginBottom","subheader","formattedInvoiceDate","ListItemIcon","CardContent","Fragment","formattedNett","detailLines","actionableLines","CardActions","disableSpacing","Notification","hideDuration","Snackbar","autoHideDuration","Alert","severity","reason","table","minWidth","QuickDetailLineView","invoiceDetail","displayItemCodeField","TableContainer","Table","TableHead","TableRow","TableCell","align","TableBody","lines","detailLine","scope","description","quantity","extension","toFixed","colSpan","autoFocus","NOTIFICATION_TIME","noInvoiceFound","searchBarContainer","searchContainer","paginationContainer","itemPerPageStyle","pageActionsContainer","defaultInvoiceList","invoiceList","getInvoicesForToday","searchInvoiceByCustomerCode","searchInvoiceByCustomerName","filterInvoices","closeNotification","getInvoiceSetting","nameValue","formValueChanged","invoiceSearchKey","setInvoiceSearchKey","currentPage","setCurrentPage","setInvoicesPerPage","showQuickViewDetailLineDialog","setShowQuickViewDetailLineDialog","listTitle","setListTitle","setInvoicesOnly","setSearchTypeText","resetSearchKey","handlePaginationChange","isLoading","Container","sm","filteredInvoices","index","slice","Pagination","count","ceil","page","notification","show","VIEW_INVOICE_DETAIL_REQUEST","VIEW_INVOICE_DETAIL_SUCCESS","VIEW_INVOICE_DETAIL_FAILED","VIEW_INVOICE_DETAIL_ADD_COMMENT","VIEW_INVOICE_DETAIL_ADD_LINE_IMAGE","VIEW_INVOICE_DETAIL_REMOVE_LINE_IMAGE","VIEW_INVOICE_DETAIL_UPDATE_PICKUP_STATUS","VIEW_INVOICE_DETAIL_UPDATE_ALL_LINE_STATUS","SAVE_PICKUP_DETAIL_REQUEST_STARTED","SAVE_PICKUP_DETAIL_REQUEST_SUCCESS","SAVE_PICKUP_DETAIL_REQUEST_FAILED","PICKUP_DETAIL_CLOSE_NOTIFICATION","PICKUP_DETAIL_OPEN_NOTIFICATION","PICKUP_DETAIL_FORM_VALUE_CHANGE","PICKUP_DETAIL_CLOSE_SAVE_NOTIFICATION","viewInvoiceDetailFailed","savePickupDetailRequestFailed","getInvoiceDetail","savePickupDetails","pickupLines","pickupInfo","invoiceLines","setTimeout","infoContainer","headerOtherInfo","InvoiceHeader","dense","CustomSkeleton","defaultLoadingLines","image","avatarContainer","picked","InvoiceDetailLines","isPickupLineSelected","showActionButtons","handlePickupLineClick","handleCommentBtnClick","getLineComment","getLineSupportingImage","handleCameraBtnClick","removeSupportingImage","handleHeaderCheckBoxClick","headerCheckedStatus","displayHeaderCheckbox","Checkbox","lineKey","showActionsButtons","isLineSelected","comment","lineImage","role","selected","alreadyAccepted","disabled","fontSize","formattedPickupDate","useStyle","CommentDialog","handleSave","recordNumber","handleCommentInputChange","placeholder","rows","multiline","rowsMax","Infinity","previewImage","verticalAlign","cameraPreviewContainer","flexDirection","border","imageLabel","fontWeight","textAlign","swapCameraButton","CameraDialog","handleLineImageCapture","webCamRef","useRef","cameraConnectSuccessful","setCameraConnectSuccessful","facingMode","videoConstraint","setVideoConstraint","numberOfAvailableDevices","setNumberOfAvailableDevices","checkNumberOfCamera","navigator","mediaDevices","enumerateDevices","devices","forEach","mediaDevice","kind","err","console","log","audio","ref","screenshotFormat","onUserMediaError","onUserMedia","videoConstraints","AlertTitle","current","getScreenshot","endIcon","Camera","globalStyle","errorLabel","main","pickupInfoContainer","signatureContainer","signatureBox","signatureTitleContainer","signaturePenIcon","secondaryButton","colorInherit","btnProgressWrapper","btnProgress","left","backdrop","zIndex","drawer","PickupInfoForm","handlePickupDetailSave","saving","roles","signPadRef","showSignaturePad","setShowSignaturePad","signaturePadTitle","setSignaturePadTitle","validateOnChange","setValidateOnChange","setOpen","validateForm","fieldValues","temp","signature","isEmpty","Object","values","every","setSignature","globalClasses","borderColor","redrawOnResize","signaturePreviewBox","toDataURL","clear","toData","pop","fromData","CircularProgress","Backdrop","titleContainer","PickupSaveNotification","showPickupSaveNotification","closePickupSaveNotification","url","red","newWindow","window","opener","CloudDownloadOutlined","alreadyPickedContainer","alreadyPickedText","pickedIcon","invoiceHeader","addLineComment","addLineImage","removeLineImage","updatePickupStatus","status","updateAllLineStatus","checkedStatus","savePickupDetail","openNotification","showNotification","handlePickupInfoFormValueChange","useParams","editRecordId","setEditRecordId","openCommentDialog","setOpenCommentDialog","setComment","openCameraDialog","setOpenCameraDialog","setLineImage","handleSavePickupDetail","lineActions","filter","lineAction","pickup","lineId","detailLineAction","find","line","handleCommentDialogClose","checkHeaderCheckedStatus","supportingImage","hasActionableLines","details","pickupSaveNotification","initialFormValue","password","backgroundImage","backgroundPosition","backgroundRepeat","backgroundSize","paper","borderRadius","background","form","submit","loginButtonWrapper","refToken","elevation","noValidate","onSubmit","required","href","ProtectedRoute","Component","restOfProps","isUserLoggedIn","isAuthenticated","render","NotFound","CustomTheme","themeType","createMuiTheme","App","appTheme","setAppTheme","setItem","CssBaseline","exact","path","InvoiceList","LoginPage","ViewInvoice","initialState","searchError","prototype","fuzzySearch","l","hay","this","toLowerCase","n","indexOf","reducer","store","searchedInvoices","deliveryName","toString","canViewProofDocument","tmpDetailLineActions","detail","newAction","accepted","selectedRoleIndex","findIndex","isSelected","stringify","removeItem","rootReducer","combineReducers","InvoiceListReducer","InvoiceDetailReducer","CustomerReducer","AuthReducer","CustomerOrderNumberReducer","createStore","applyMiddleware","thunk","interceptors","request","use","config","Promise","reject","response","ReactDOM","StrictMode","document","getElementById"],"mappings":"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","file":"static/js/main.d1468def.chunk.js","sourcesContent":["export const USER_KEY = 'user';\r\n","// export const BASE_URL = 'https://localhost:5001/api/';\r\n// export const BASE_URL1 = 'https://localhost:5001';\r\nexport const BASE_SUBDOMAIN = \"/nexuspickup\"\r\nexport const BASE_URL = 'https://etq-demo.etq.com.au/NexusPickupApi/api/';\r\nexport const BASE_URL1 = 'https://etq-demo.etq.com.au';\r\n\r\n// export const BASE_URL = 'http://localhost/NexusPickupApi/api';\r\n// export const BASE_URL1 = 'http://localhost';\r\n\r\n// export const BASE_URL = 'https://pickup.gentronics.com.au/NexusPickupApi/api/';\r\n// export const BASE_URL1 = 'https://pickup.gentronics.com.au';\r\nconst apiVersion = 'v1'\r\nexport const GET_INVOICES_SETTING_URL = `${apiVersion}/Invoice/GetSetting`;\r\nexport const GET_INVOICES_FOR_TODAY_URL = `${apiVersion}/Invoice/GetInvoicesForToday/`;\r\nexport const SEARCH_INVOICE_BY_INVOICE_NUMBER_URL = `${apiVersion}/Invoice/GetInvoiceByInvoiceNumber`;\r\nexport const SEARCH_INVOICE_BY_CUSTOMER_CODE = `${apiVersion}/Invoice/GetInvoicesByCustomerCode/`;\r\nexport const SEARCH_INVOICE_BY_CUSTOMER_NAME = `${apiVersion}/Invoice/GetInvoicesByCustomerName/`;\r\nexport const SEARCH_INVOICE_BY_CUSTOMER_ORDER_NUMBER = `${apiVersion}/Invoice/GetInvoicesByCustomerOrderNumber/`;\r\nexport const GET_INVOICE_DETAIL_URL = `${apiVersion}/ViewInvoice/GetInvoiceDetail/`;\r\nexport const GET_INVOICE_DETAIL_LINES_URL = `${apiVersion}/ViewInvoice/GetInvoiceDetailLines/`;\r\nexport const SAVE_PICKUP_DETAIL_URL = `${apiVersion}/Invoice/SavePickupDetail`;\r\nexport const SEARCH_CUSTOMERS_BY_CODE_URL = `${apiVersion}/Customer/SearchCustomersByCode?searchKey=`;\r\nexport const SEARCH_CUSTOMERS_BY_NAME_URL = `${apiVersion}/Customer/SearchCustomersByName?searchKey=`;\r\nexport const LOGIN_URL = `${apiVersion}/Login/LoginUser`;\r\nexport const FULLY_QUALIFIED_REFRESH_TOKEN_URL = `${BASE_URL}${apiVersion}/Login/RefreshToken`;\r\nexport const REFRESH_TOKEN_URL = `${apiVersion}/Login/RefreshToken`;\r\nexport const SEARCH_CUSTOMER_ORDER_NUMBER_URL = `${apiVersion}/Order/SearchCustomerOrderNumber/`;\r\n\r\nexport const LOGOUT_USER_URL = `${BASE_URL}${apiVersion}/Logout/LogoutUser`;\r\n\r\n","\r\nexport const LOGIN_REQUEST_STARTED = 'LOGIN_REQUEST_STARTED';\r\nexport const LOGIN_REQUEST_SUCCESS = 'LOGIN_REQUEST_SUCCESS';\r\nexport const LOGIN_REQUEST_FAILED = 'LOGIN_REQUEST_FAILED';\r\nexport const CLOSE_NOTIFICATION = 'CLOSE_NOTIFICATION';\r\nexport const LOGOUT_USER = 'LOGOUT_USER';\r\n\r\n","\r\nimport {\r\n CLOSE_NOTIFICATION,\r\n LOGIN_REQUEST_FAILED,\r\n LOGIN_REQUEST_STARTED,\r\n LOGIN_REQUEST_SUCCESS,\r\n LOGOUT_USER\r\n} from \"./AuthConstants\";\r\n\r\nexport const loginRequestStarted = () => {\r\n return {\r\n type: LOGIN_REQUEST_STARTED\r\n }\r\n}\r\n\r\nexport const loginRequestSuccess = (user) => {\r\n return {\r\n type: LOGIN_REQUEST_SUCCESS,\r\n payload:user\r\n }\r\n}\r\n\r\nexport const loginRequestFailed = (error) => {\r\n return {\r\n type: LOGIN_REQUEST_FAILED,\r\n payload:error\r\n }\r\n}\r\n\r\nexport const closeNotification = () => {\r\n return {\r\n type: CLOSE_NOTIFICATION\r\n }\r\n}\r\n\r\nexport const logoutUser = () =>{\r\n return {\r\n type:LOGOUT_USER\r\n }\r\n}\r\n\r\n","import {BASE_SUBDOMAIN} from \"../helpers/UrlHelper\";\r\n\r\nconst {createBrowserHistory} = require(\"history\");\r\n const history = createBrowserHistory({\r\n basename:BASE_SUBDOMAIN\r\n });\r\nexport default history;\r\n","import axios from 'axios';\r\nimport {\r\n BASE_URL,\r\n GET_INVOICE_DETAIL_LINES_URL,\r\n GET_INVOICE_DETAIL_URL,\r\n GET_INVOICES_FOR_TODAY_URL,\r\n LOGIN_URL,\r\n SAVE_PICKUP_DETAIL_URL,\r\n SEARCH_CUSTOMERS_BY_CODE_URL,\r\n SEARCH_CUSTOMERS_BY_NAME_URL,\r\n SEARCH_INVOICE_BY_CUSTOMER_CODE,\r\n SEARCH_INVOICE_BY_CUSTOMER_NAME,\r\n SEARCH_INVOICE_BY_INVOICE_NUMBER_URL,\r\n REFRESH_TOKEN_URL,\r\n LOGOUT_USER_URL,\r\n SEARCH_CUSTOMER_ORDER_NUMBER_URL,\r\n SEARCH_INVOICE_BY_CUSTOMER_ORDER_NUMBER, GET_INVOICES_SETTING_URL\r\n} from \"../helpers/UrlHelper\";\r\nimport { logoutUser} from \"./login/AuthViewActions\";\r\nimport history from \"../history/History\";\r\nimport {USER_KEY} from \"../helpers/TokenHelper\";\r\n\r\n\r\n\r\nconst apiClient = axios.create({\r\n baseURL: BASE_URL,\r\n headers: {\r\n 'Content-Type': 'application/json'\r\n }\r\n})\r\n\r\nexport function setupInterceptors(store) {\r\n apiClient.interceptors.request.use((config) => {\r\n let user = JSON.parse(localStorage.getItem(USER_KEY));\r\n if (user) {\r\n config.headers[\"Authorization\"] = `Bearer ${user.token}`;\r\n }\r\n\r\n return config;\r\n },\r\n (error) => {\r\n Promise.reject(error).then();\r\n })\r\n\r\n apiClient.interceptors.response.use((response) => {\r\n return response;\r\n }, function (error) {\r\n if(!error.response){\r\n //Check error has any response or not\r\n return Promise.reject(error);\r\n }\r\n // let user = JSON.parse(localStorage.getItem(USER_KEY));\r\n // if (user) {\r\n // if (\r\n // user.refreshToken &&\r\n // error.response.status === 401 &&\r\n // !originalRequest._retry\r\n // ) {\r\n // originalRequest._retry = true;\r\n // return axios\r\n // .post(FULLY_QUALIFIED_REFRESH_TOKEN_URL, getRefreshTokenObject(user.refreshToken))\r\n // .then((res) => {\r\n // if (res.status === 200) {\r\n //\r\n // if (res.data.success) {\r\n // store.dispatch(loginRequestSuccess(res.data.data));\r\n // if (`Bearer ${res.data.data.token}`) {\r\n // originalRequest.headers[\"Authorization\"] = `Bearer ${res.data.data.token}`;\r\n // return axios(originalRequest);\r\n // }\r\n // }\r\n //\r\n // }\r\n // });\r\n // }\r\n // }\r\n if (error.response.status === 401) {\r\n store.dispatch(logoutUser())\r\n history.push('/login');\r\n }\r\n\r\n if (error.response.status === 404) {\r\n history.push(\"/NotFound\")\r\n }\r\n return Promise.reject(error);\r\n }\r\n );\r\n}\r\n\r\nexport function retrieveInvoiceSetting(){\r\n return apiClient.get(GET_INVOICES_SETTING_URL)\r\n}\r\n\r\nexport function retrieveInvoicesForToday(type) {\r\n return apiClient.get(`${GET_INVOICES_FOR_TODAY_URL}${type}`)\r\n}\r\n\r\nexport function searchInvoicesByInvoiceNumber(type, invoiceNumber) {\r\n return apiClient.get(`${SEARCH_INVOICE_BY_INVOICE_NUMBER_URL}?type=${type}&number=${invoiceNumber}`)\r\n}\r\n\r\n\r\nexport function searchInvoicesByCustomerCode(type, startDate, endDate, customerCode) {\r\n return apiClient.get(`${SEARCH_INVOICE_BY_CUSTOMER_CODE}?type=${type}&startDate=${startDate}&endDate=${endDate}&customerCode=${customerCode}`)\r\n}\r\n\r\nexport function searchInvoicesByCustomerName(type, startDate, endDate, customerCodeName) {\r\n return apiClient.get(`${SEARCH_INVOICE_BY_CUSTOMER_NAME}?type=${type}&startDate=${startDate}&endDate=${endDate}&customerName=${customerCodeName}`)\r\n}\r\n\r\nexport function searchInvoicesByCustomerOrderNumber(type, customerOrderNumber) {\r\n return apiClient.get(`${SEARCH_INVOICE_BY_CUSTOMER_ORDER_NUMBER}?type=${type}&orderNumber=${customerOrderNumber}`)\r\n}\r\n\r\n\r\nexport function getInvoiceDetail(source, invoiceNumber) {\r\n return apiClient.get(GET_INVOICE_DETAIL_URL + source + \"/\" + invoiceNumber);\r\n}\r\n\r\nexport function getInvoiceDetailLines(source, invoiceNumber) {\r\n return apiClient.get(GET_INVOICE_DETAIL_LINES_URL + source + \"/\" + invoiceNumber);\r\n}\r\n\r\nexport function savePickupDetails(data) {\r\n return apiClient.post(SAVE_PICKUP_DETAIL_URL, data)\r\n}\r\n\r\nexport function searchCustomersByCode(searchKey) {\r\n return apiClient.get(`${SEARCH_CUSTOMERS_BY_CODE_URL}${searchKey}`)\r\n}\r\n\r\n\r\nexport function searchCustomersByName(searchKey) {\r\n return apiClient.get(`${SEARCH_CUSTOMERS_BY_NAME_URL}${searchKey}`)\r\n}\r\n\r\nexport function loginUser(data) {\r\n return apiClient.post(LOGIN_URL, data)\r\n}\r\n\r\nexport function refreshToken(token) {\r\n return apiClient.post(REFRESH_TOKEN_URL, getRefreshTokenObject(token))\r\n}\r\n\r\nexport function logoutUserFromServer() {\r\n return apiClient.post(LOGOUT_USER_URL);\r\n}\r\n\r\nconst getRefreshTokenObject = (token) => ({\r\n token,\r\n source: 'NexusPickup'\r\n})\r\n\r\nexport function searchCustomerOrderNumber(type,searchKey) {\r\n return apiClient.get(`${SEARCH_CUSTOMER_ORDER_NUMBER_URL}${type}?searchKey=${searchKey}`)\r\n}\r\n\r\n\r\n\r\n","const ConsoleHelper = (data) => {\r\n if (process.env.NODE_ENV === 'production') return;\r\n console.log(data);\r\n}\r\n\r\nexport default ConsoleHelper;\r\n","import * as api from \"../Api\";\r\nimport {loginRequestFailed, loginRequestStarted, loginRequestSuccess, logoutUser} from \"./AuthViewActions\";\r\nimport history from \"../../history/History\";\r\nimport ConsoleHelper from \"../../helpers/ConsoleHelper\";\r\n\r\nexport const loginUser = (data) => {\r\n return (dispatch) => {\r\n dispatch(loginRequestStarted())\r\n api.loginUser(data)\r\n .then(resp => {\r\n if (resp.data.success) {\r\n dispatch(loginRequestSuccess(resp.data.data))\r\n history.push(\"/\");\r\n } else {\r\n dispatch(loginRequestFailed(resp.data.message))\r\n }\r\n }).catch(error => {\r\n ConsoleHelper(error.message);\r\n // dispatch(loginRequestFailed(error.message))\r\n })\r\n }\r\n}\r\n\r\n\r\nexport const refreshToken = (refreshToken) => {\r\n return (dispatch) => {\r\n dispatch(loginRequestStarted())\r\n api.refreshToken(refreshToken)\r\n .then(resp => {\r\n if (resp.data.success) {\r\n dispatch(loginRequestSuccess(resp.data.data))\r\n }\r\n })\r\n }\r\n}\r\n\r\nexport const logoutUserFromServer = () => {\r\n return (dispatch) => {\r\n api.logoutUserFromServer()\r\n .then(() => {\r\n dispatch(logoutUser())\r\n history.push(\"/login\")\r\n })\r\n .catch(() => {\r\n dispatch(logoutUser())\r\n history.push(\"/login\")\r\n })\r\n }\r\n}\r\n\r\n","import React, {useEffect, useState} from \"react\";\r\nimport {\r\n AppBar,\r\n IconButton, Link,\r\n makeStyles,\r\n Menu,\r\n MenuItem, Switch,\r\n Toolbar,\r\n Typography\r\n} from \"@material-ui/core\";\r\nimport {Link as RouterLink} from 'react-router-dom'\r\nimport {AccountCircle} from \"@material-ui/icons\";\r\nimport Brightness6Icon from '@material-ui/icons/Brightness6';\r\nimport {connect} from \"react-redux\";\r\nimport {USER_KEY} from \"../helpers/TokenHelper\";\r\nimport {logoutUserFromServer} from \"../redux/login/AuthServerActions\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n root: {\r\n flexGrow: 1,\r\n },\r\n logo: {\r\n margin: theme.spacing(1, 2, 1),\r\n maxHeight: '42px'\r\n },\r\n link: {\r\n color: \"white\",\r\n textDecoration: 'none'\r\n },\r\n menuButton: {\r\n marginRight: theme.spacing(2),\r\n },\r\n navbarActionContainer: {\r\n display: 'flex',\r\n alignItems: 'center',\r\n flex: 1,\r\n justifyContent: 'flex-end'\r\n\r\n }\r\n\r\n}));\r\nconst NavBar = (props) => {\r\n const {\r\n logoutUser,\r\n handleThemeClick,\r\n theme\r\n } = props;\r\n const [username, setUsername] = useState('');\r\n const [isLoggedIn, setIsLoggedIn] = useState(false);\r\n const [anchorEl, setAnchorEl] = React.useState(null);\r\n const open = Boolean(anchorEl);\r\n const handleMenu = (event) => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n\r\n useEffect(() => {\r\n let user = JSON.parse(localStorage.getItem(USER_KEY));\r\n if (user) {\r\n setUsername(user.name);\r\n setIsLoggedIn(true);\r\n } else {\r\n setUsername('');\r\n setIsLoggedIn(false);\r\n }\r\n })\r\n\r\n const handleClose = () => {\r\n setAnchorEl(null);\r\n };\r\n\r\n const handleLogout = () => {\r\n logoutUser();\r\n handleClose();\r\n }\r\n\r\n const handleThemeChange = (e) => {\r\n handleThemeClick();\r\n }\r\n\r\n\r\n const classes = useStyles();\r\n\r\n return \r\n \r\n \r\n logo\r\n \r\n \r\n Nexus Pickup\r\n \r\n {\r\n isLoggedIn ?\r\n
\r\n }\r\n checkedIcon={}\r\n onChange={handleThemeChange}\r\n checked={theme === 'light'}/>\r\n
\r\n {`Welcome, ${username}`}\r\n
\r\n
\r\n \r\n \r\n \r\n \r\n\r\n Logout\r\n\r\n \r\n\r\n
\r\n
\r\n : null\r\n }\r\n
\r\n
;\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n return {\r\n auth: state.auth\r\n }\r\n}\r\n\r\nconst mapDispatchToProps = dispatch => {\r\n return {\r\n logoutUser: () => logoutUserFromServer()\r\n }\r\n}\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps()\r\n)(NavBar);\r\n","import React from \"react\";\r\nimport {Button as MuiButton, makeStyles} from \"@material-ui/core\";\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n root: {\r\n margin: theme.spacing(0.5)\r\n },\r\n label: {\r\n textTransform: 'none'\r\n }\r\n}))\r\nexport default function Button(props) {\r\n const {variant, text, size, color, onClick, ...others} = props;\r\n const styles = useStyles();\r\n return (\r\n \r\n {text}\r\n \r\n );\r\n}\r\n","import React from \"react\";\r\nimport Autocomplete from '@material-ui/lab/Autocomplete';\r\nimport {TextField} from \"@material-ui/core\";\r\n\r\nconst AutoComplete = (props) => {\r\n const {id, ...defaultProps } = props;\r\n\r\n return ( }\r\n />);\r\n}\r\n\r\nexport default AutoComplete;\r\n","import React from \"react\";\r\nimport {LinearProgress} from \"@material-ui/core\";\r\n\r\nconst ProgressBar = () => {\r\n return (\r\n \r\n )\r\n}\r\nexport default ProgressBar;\r\n","import Button from \"./Button\";\r\nimport Input from \"./Input\";\r\nimport DatePicker from \"./DatePicker\";\r\nimport AutoComplete from \"./AutoComplete\";\r\nimport ProgressBar from \"./ProgressBar\";\r\nimport CustomSelect from \"./CustomSelect\";\r\nimport AutoCompleteSelect from \"./AutoCompleteSelect\";\r\n\r\nconst Controls = {\r\n Button,\r\n Input,\r\n DatePicker,\r\n AutoComplete,\r\n ProgressBar,\r\n CustomSelect,\r\n AutoCompleteSelect\r\n};\r\n\r\nexport default Controls;\r\n","import React from \"react\";\r\nimport {TextField} from \"@material-ui/core\";\r\n\r\nexport default function Input(props) {\r\n const {name, label, variant, value, error = null, onChange, fullWidth = true, ...others} = props;\r\n return (\r\n \r\n );\r\n}\r\n","import React from 'react'\r\nimport {MuiPickersUtilsProvider, KeyboardDatePicker} from \"@material-ui/pickers\";\r\nimport DateFnsUtils from \"@date-io/date-fns\";\r\n\r\nexport default function DatePicker(props) {\r\n\r\n const {name, label, value, onChange} = props\r\n\r\n\r\n const convertToDefEventPara = (name, value) => ({\r\n target: {\r\n name, value\r\n }\r\n })\r\n\r\n return (\r\n \r\n onChange(convertToDefEventPara(name, date))}\r\n style={{width: '100%'}}\r\n\r\n />\r\n \r\n )\r\n}\r\n","import React from \"react\";\r\nimport {FormControl, InputLabel, MenuItem} from \"@material-ui/core\";\r\n\r\nexport default function CustomSelect(props) {\r\n const {open, handleClose, handleOpen, value, handleChange, items} = props;\r\n return (\r\n \r\n Age\r\n \r\n {items && items.map(item => {\r\n return {item.text}\r\n })}\r\n \r\n )\r\n}\r\n","import React from \"react\";\r\nimport Controls from \"./Controls\";\r\nimport {Autocomplete} from \"@material-ui/lab\";\r\n\r\nexport default function AutoCompleteSelect(props) {\r\n let {options,\r\n inputValue,\r\n setInputValue,\r\n noOptionsText,\r\n inputTextChange,\r\n inputLabelText,\r\n error,\r\n autoCompleteInputChange,\r\n ...others} = props;\r\n\r\n return (\r\n {\r\n // const listboxNode = event.currentTarget;\r\n // console.log(listboxNode)\r\n // if (listboxNode.scrollTop + listboxNode.clientHeight === listboxNode.scrollHeight) {\r\n // console.log('here')\r\n // }\r\n // }\r\n // }}\r\n\r\n filterOptions={x => {\r\n return x;\r\n }}\r\n options={options}\r\n autoComplete\r\n includeInputInList\r\n inputValue={inputValue}\r\n onInputChange={autoCompleteInputChange}\r\n noOptionsText={noOptionsText}\r\n renderInput={params => (\r\n \r\n )}\r\n {...others}\r\n />\r\n )\r\n}\r\n","\r\nexport const SEARCH_CUSTOMERS_BY_CODE_REQUEST_SUCCESS = 'SEARCH_CUSTOMERS_BY_CODE_REQUEST_SUCCESS';\r\nexport const SEARCH_CUSTOMERS_BY_CODE_REQUEST_FAILED = 'SEARCH_CUSTOMERS_BY_CODE_REQUEST_FAILED';\r\n\r\nexport const SEARCH_CUSTOMERS_BY_NAME_REQUEST_SUCCESS = 'SEARCH_CUSTOMERS_BY_NAME_REQUEST_SUCCESS';\r\nexport const SEARCH_CUSTOMERS_BY_NAME_REQUEST_FAILED = 'SEARCH_CUSTOMERS_BY_NAME_REQUEST_FAILED';\r\n","import {\r\n SEARCH_CUSTOMERS_BY_CODE_REQUEST_FAILED,\r\n SEARCH_CUSTOMERS_BY_CODE_REQUEST_SUCCESS,\r\n SEARCH_CUSTOMERS_BY_NAME_REQUEST_FAILED,\r\n SEARCH_CUSTOMERS_BY_NAME_REQUEST_SUCCESS\r\n} from \"./CustomerConstants\";\r\n\r\n\r\nexport const searchCustomerByCodeRequestSuccess = (customers) => {\r\n return {\r\n type: SEARCH_CUSTOMERS_BY_CODE_REQUEST_SUCCESS,\r\n payload: customers\r\n }\r\n}\r\n\r\n\r\nexport const searchCustomerByCodeRequestFailed = (error) => {\r\n return {\r\n type: SEARCH_CUSTOMERS_BY_CODE_REQUEST_FAILED,\r\n payload: error\r\n }\r\n}\r\n\r\n\r\nexport const searchCustomerByNameRequestSuccess = (customers) => {\r\n return {\r\n type: SEARCH_CUSTOMERS_BY_NAME_REQUEST_SUCCESS,\r\n payload: customers\r\n }\r\n}\r\n\r\n\r\nexport const searchCustomerByNameRequestFailed = (error) => {\r\n return {\r\n type: SEARCH_CUSTOMERS_BY_NAME_REQUEST_FAILED,\r\n payload: error\r\n }\r\n}\r\n","import * as api from \"../Api\";\r\nimport {\r\n searchCustomerByCodeRequestFailed,\r\n searchCustomerByCodeRequestSuccess,\r\n searchCustomerByNameRequestFailed,\r\n searchCustomerByNameRequestSuccess\r\n} from \"./CustomerViewActions\";\r\n\r\n\r\nexport const searchCustomersByCode = (searchKey) => {\r\n return (dispatch) => {\r\n api.searchCustomersByCode(searchKey)\r\n .then(resp => {\r\n if (resp.data.success) {\r\n dispatch(searchCustomerByCodeRequestSuccess(resp.data.data))\r\n } else {\r\n dispatch(searchCustomerByCodeRequestFailed(resp.data.message))\r\n }\r\n }).catch(error => {\r\n dispatch(searchCustomerByCodeRequestFailed(error.message))\r\n })\r\n }\r\n}\r\n\r\n\r\nexport const searchCustomersByName = (searchKey) => {\r\n return (dispatch) => {\r\n api.searchCustomersByName(searchKey)\r\n .then(resp => {\r\n if (resp.data.success) {\r\n dispatch(searchCustomerByNameRequestSuccess(resp.data.data))\r\n } else {\r\n dispatch(searchCustomerByNameRequestFailed(resp.data.message))\r\n }\r\n }).catch(error => {\r\n dispatch(searchCustomerByNameRequestFailed(error.message))\r\n })\r\n }\r\n}\r\n","export const SEARCH_CUSTOMER_ORDER_NUMBER_REQUEST_SUCCESS = 'SEARCH_CUSTOMER_ORDER_NUMBER_REQUEST_SUCCESS';\r\nexport const SEARCH_CUSTOMER_ORDER_NUMBER_REQUEST_FAILED = 'SEARCH_CUSTOMER_ORDER_NUMBER_REQUEST_FAILED';\r\n","\r\nimport {SEARCH_CUSTOMER_ORDER_NUMBER_REQUEST_SUCCESS} from \"./CustomerOrderNumberConstants\";\r\n\r\nexport const searchCustomerOrderNumberRequestSuccess = (customers) => {\r\n return {\r\n type: SEARCH_CUSTOMER_ORDER_NUMBER_REQUEST_SUCCESS,\r\n payload: customers\r\n }\r\n}\r\n\r\n\r\nexport const searchCustomerOrderNumberRequestFailed = (error) => {\r\n return {\r\n type: SEARCH_CUSTOMER_ORDER_NUMBER_REQUEST_SUCCESS,\r\n payload: error\r\n }\r\n}\r\n","import * as api from \"../Api\";\r\nimport {searchCustomerOrderNumberRequestSuccess} from \"./CustomerOrderNumberViewActions\";\r\n\r\nexport const searchCustomerOrderNumber = (type, searchKey) => {\r\n return (dispatch) => {\r\n api.searchCustomerOrderNumber(type,searchKey)\r\n .then(resp => {\r\n if (resp.data.success) {\r\n dispatch(searchCustomerOrderNumberRequestSuccess(resp.data.data))\r\n } else {\r\n dispatch(searchCustomerOrderNumberRequestSuccess(resp.data.message))\r\n }\r\n }).catch(error => {\r\n dispatch(searchCustomerOrderNumberRequestSuccess(error.message))\r\n })\r\n }\r\n}\r\n","import React, {useState} from \"react\";\r\nimport {\r\n Dialog, DialogActions, DialogContent, DialogTitle, FormControl,\r\n FormControlLabel,\r\n Grid, IconButton, List, ListItem, ListItemSecondaryAction, ListItemText,\r\n makeStyles, MenuItem, Paper, Select,\r\n Switch, Typography,\r\n} from \"@material-ui/core\";\r\nimport Controls from \"../../components/controls/Controls\";\r\nimport {connect} from \"react-redux\";\r\nimport {searchCustomersByCode, searchCustomersByName} from \"../../redux/customer/CustomerServerAction\";\r\nimport SettingsIcon from '@material-ui/icons/Settings';\r\nimport CloseIcon from \"@material-ui/icons/Close\";\r\nimport CheckIcon from '@material-ui/icons/Check';\r\nimport ReceiptIcon from '@material-ui/icons/Receipt';\r\nimport {searchCustomerOrderNumber} from \"../../redux/customer-order-number/CustomerOrderNumberServerActions\";\r\nimport {green} from \"@material-ui/core/colors\";\r\n\r\nconst invoicesPerPage = [\r\n {\r\n value: 12,\r\n text: 12\r\n },\r\n {\r\n value: 24,\r\n text: 24\r\n },\r\n {\r\n value: 48,\r\n text: 48\r\n },\r\n {\r\n value: 96,\r\n text: 96\r\n },\r\n]\r\n\r\nlet today = new Date();\r\nfunction formattedDate(d = new Date()) {\r\n if(typeof(d) === \"string\"){\r\n d = new Date(d);\r\n }\r\n let month = String(d.getMonth() + 1);\r\n let day = String(d.getDate());\r\n const year = String(d.getFullYear());\r\n\r\n if (month.length < 2) month = '0' + month;\r\n if (day.length < 2) day = '0' + day;\r\n\r\n return `${day}/${month}/${year}`;\r\n}\r\n\r\nconst initialFormValues = {\r\n invoiceNumber: '',\r\n endDate: today\r\n};\r\nconst useStyles = makeStyles(theme => ({\r\n root: {\r\n marginTop: theme.spacing(2),\r\n padding: theme.spacing(2),\r\n '& .MuiFormControl-root': {\r\n padding: theme.spacing(1),\r\n // marginTop: theme.spacing(2)\r\n },\r\n '& .MuiCardContent-root': {\r\n paddingTop: 0,\r\n paddingBottom: 0,\r\n },\r\n '& .MuiCardActions-root': {\r\n paddingTop: 0,\r\n paddingBottom: 0,\r\n }\r\n },\r\n searchItemContainer: {\r\n justifyContent: 'space-between'\r\n },\r\n\r\n searchByDateContainer: {\r\n padding: theme.spacing(1)\r\n },\r\n expand: {\r\n transform: 'rotate(0deg)',\r\n marginLeft: 'auto',\r\n transition: theme.transitions.create('transform', {\r\n duration: theme.transitions.duration.shortest,\r\n }),\r\n },\r\n expandOpen: {\r\n transform: 'rotate(180deg)',\r\n },\r\n closeButton: {\r\n position: 'absolute',\r\n right: theme.spacing(1),\r\n top: theme.spacing(1),\r\n color: theme.palette.grey[500],\r\n },\r\n dropDown: {\r\n width: '80px'\r\n },\r\n tranTypeStyle: {\r\n '& .MuiListItemText-secondary': {\r\n color: green[500]\r\n }\r\n }\r\n}))\r\n\r\nfunction InvoiceSearchForm(props) {\r\n const [formValues, setFormValues] = useState(initialFormValues);\r\n const [showSetting, setShowSetting] = React.useState(false);\r\n const [customerCode, setCustomerCode] = useState('');\r\n const [customerName, setCustomerName] = useState('');\r\n const [customerOrderNumber, setCustomerOrderNumber] = useState('');\r\n const [errors, setErrors] = useState({});\r\n const [itemPerPageOpen, setItemPerPageOpen] = React.useState(false);\r\n const handleItemPerPageClose = () => {\r\n setItemPerPageOpen(false);\r\n };\r\n\r\n const handleItemPerPageOpen = () => {\r\n setItemPerPageOpen(true);\r\n };\r\n const {\r\n handleSearchByInvoiceNumber,\r\n handleSearchByCustomerCode,\r\n handleSearchByCustomerName,\r\n handleSearchByCustomerOrderNumber,\r\n searchByCustomerCode,\r\n customers,\r\n searchByCustomerName,\r\n handleItemPerPageChange,\r\n invoicePerPage,\r\n getCurrentTransactions,\r\n invoicesOnly,\r\n searchTypeText,\r\n handleInvoicesOnlyChange,\r\n searchCustomerOrderNumber,\r\n customerOrderNumbers,\r\n supportSalesOrder,\r\n startDate,\r\n handleFormValueChange\r\n } = props;\r\n\r\n const handleClose = () => {\r\n setShowSetting(false);\r\n }\r\n const handleInputChange = e => {\r\n const {name, value} = e.target;\r\n setFormValues({\r\n ...formValues,\r\n [name]: value\r\n })\r\n\r\n validate(name, value)\r\n }\r\n\r\n const handleStartDateChange = e => {\r\n const {name, value} = e.target;\r\n handleFormValueChange({name,value})\r\n\r\n }\r\n\r\n const validate = (fieldName, value) => {\r\n if (fieldName === 'invoiceNumber') {\r\n validateInvoiceNumberField(value);\r\n }\r\n }\r\n\r\n const handleAutoCompleteCustomerCode = (e) => {\r\n searchByCustomerCode(e.target.value);\r\n }\r\n\r\n const handleAutoCompleteCustomerOrderNumber = (e) => {\r\n searchCustomerOrderNumber(invoicesOnly ? 1 : 2, e.target.value);\r\n }\r\n const handleAutoCompleteCustomerName = (e) => {\r\n searchByCustomerName(e.target.value);\r\n }\r\n\r\n const validateInvoiceNumberField = (invoiceNumber) => {\r\n let tempErrors = {...errors, customerName: '', customerCode: '', invoiceNumber: '', customerOrderNumber: ''};\r\n\r\n if (!invoiceNumber) {\r\n\r\n tempErrors = {\r\n ...tempErrors,\r\n invoiceNumber: `Please enter ${invoicesOnly ? 'invoice' : 'order'} number`\r\n }\r\n setErrors(tempErrors)\r\n return false;\r\n }\r\n if (invoiceNumber.length > 20) {\r\n\r\n tempErrors = {\r\n ...tempErrors,\r\n invoiceNumber: \"Cannot be more than 20 long\"\r\n }\r\n setErrors(tempErrors)\r\n return false;\r\n }\r\n setErrors(tempErrors)\r\n return true;\r\n }\r\n\r\n\r\n const validateCustomerNameField = (customerName) => {\r\n let tempErrors = {...errors, customerName: '', customerCode: '', invoiceNumber: '', customerOrderNumber: ''};\r\n\r\n if (!customerName) {\r\n tempErrors = {\r\n ...tempErrors,\r\n customerName: \"Please enter a customer name\",\r\n }\r\n setErrors(tempErrors)\r\n return false;\r\n }\r\n if (customerName.length > 35) {\r\n\r\n tempErrors = {\r\n ...tempErrors,\r\n customerName: \"Cannot be more than 35 long\",\r\n }\r\n setErrors(tempErrors)\r\n return false;\r\n }\r\n setErrors(tempErrors)\r\n return true;\r\n }\r\n\r\n const validateCustomerOrderNumberField = (customerOrderNumber) => {\r\n let tempErrors = {...errors, customerName: '', customerCode: '', invoiceNumber: '', customerOrderNumber: ''};\r\n\r\n if (!customerOrderNumber) {\r\n tempErrors = {\r\n ...tempErrors,\r\n customerOrderNumber: \"Please enter customer order number\",\r\n }\r\n setErrors(tempErrors)\r\n return false;\r\n }\r\n if (customerName.length > 35) {\r\n\r\n tempErrors = {\r\n ...tempErrors,\r\n customerOrderNumber: \"Cannot be more than 35 long\",\r\n }\r\n setErrors(tempErrors)\r\n return false;\r\n }\r\n setErrors(tempErrors)\r\n return true;\r\n }\r\n\r\n\r\n const validateCustomerCodeField = (customerCode) => {\r\n let tempErrors = {...errors, customerName: '', customerCode: '', invoiceNumber: '', customerOrderNumber: ''};\r\n if (!customerCode) {\r\n\r\n tempErrors = {\r\n ...tempErrors,\r\n customerCode: \"Please enter a customer code\"\r\n }\r\n setErrors(tempErrors)\r\n return false;\r\n }\r\n if (customerCode.length > 10) {\r\n tempErrors = {\r\n ...tempErrors,\r\n customerCode: \"Cannot be more than 10 long\"\r\n }\r\n setErrors(tempErrors)\r\n return false;\r\n }\r\n setErrors(tempErrors)\r\n return true;\r\n }\r\n\r\n const findInvoiceAction = (e) => {\r\n e.preventDefault();\r\n if (!validateInvoiceNumberField(formValues.invoiceNumber)) return;\r\n handleSearchByInvoiceNumber(invoicesOnly ? 1 : 2, formValues.invoiceNumber)\r\n setCustomerCode('')\r\n setCustomerName('')\r\n setCustomerOrderNumber('')\r\n\r\n }\r\n\r\n function handleFindByCustomerCode(e) {\r\n e.preventDefault();\r\n\r\n if (!validateCustomerCodeField(customerCode)) return;\r\n handleSearchByCustomerCode(invoicesOnly ? 1 : 2, formattedDate(startDate), formattedDate(formValues.endDate), customerCode);\r\n setCustomerName('')\r\n setCustomerOrderNumber('')\r\n setFormValues({\r\n ...formValues,\r\n invoiceNumber: ''\r\n })\r\n }\r\n\r\n function handleFindByCustomerName(e) {\r\n e.preventDefault();\r\n if (!validateCustomerNameField(customerName)) {\r\n return;\r\n }\r\n handleSearchByCustomerName(invoicesOnly ? 1 : 2, formattedDate(startDate), formattedDate(formValues.endDate), customerName)\r\n setCustomerCode('')\r\n setCustomerOrderNumber('')\r\n setFormValues({\r\n ...formValues,\r\n invoiceNumber: ''\r\n })\r\n }\r\n\r\n function handleFindByCustomerOrderNumber(e) {\r\n e.preventDefault();\r\n if (!validateCustomerOrderNumberField(customerOrderNumber)) {\r\n return;\r\n }\r\n handleSearchByCustomerOrderNumber(invoicesOnly ? 1 : 2, customerOrderNumber)\r\n setCustomerCode('')\r\n setCustomerName('')\r\n setFormValues({\r\n ...formValues,\r\n invoiceNumber: ''\r\n })\r\n }\r\n\r\n\r\n const handleCustomerNameAutoCompleteChange = (event, newInputValue) => {\r\n setCustomerName(newInputValue)\r\n setErrors({\r\n customerName: ''\r\n })\r\n }\r\n\r\n const handleCustomerCodeAutoCompleteChange = (event, newInputValue) => {\r\n setCustomerCode(newInputValue)\r\n setErrors({\r\n customerCode: ''\r\n })\r\n }\r\n\r\n const handleAutoCompleteCustomerOrderNumberChange = (event, newInputValue) => {\r\n setCustomerOrderNumber(newInputValue)\r\n setErrors({\r\n customerOrderNumber: ''\r\n })\r\n }\r\n const handleShowSetting = () => {\r\n setShowSetting(true);\r\n }\r\n\r\n const handleRetrieveCurrentTransactions = (e) => {\r\n e.preventDefault();\r\n setCustomerName('')\r\n setCustomerOrderNumber('')\r\n setCustomerCode('')\r\n setFormValues({\r\n ...formValues,\r\n invoiceNumber: ''\r\n })\r\n setErrors({customerName: '', customerCode: '', invoiceNumber: '', customerOrderNumber: ''})\r\n getCurrentTransactions(invoicesOnly ? 1 : 2);\r\n }\r\n const classes = useStyles();\r\n return (\r\n
\r\n\r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n typeof option === \"string\" ? option : option.orderNumber\r\n }\r\n renderOption={option => {\r\n return (\r\n \r\n \r\n {option.orderNumber}\r\n \r\n \r\n );\r\n }}\r\n error={errors.customerOrderNumber}\r\n />\r\n \r\n\r\n \r\n \r\n \r\n typeof option === \"string\" ? option : option.code\r\n }\r\n renderOption={option => {\r\n return (\r\n \r\n \r\n {option.code} - {option.name}\r\n \r\n \r\n );\r\n }}\r\n error={errors.customerCode}\r\n />\r\n\r\n\r\n \r\n\r\n \r\n\r\n \r\n\r\n \r\n typeof option === \"string\" ? option : option.name\r\n }\r\n renderOption={option => {\r\n return (\r\n \r\n \r\n {option.name}\r\n \r\n \r\n );\r\n }}\r\n error={errors.customerName}\r\n />\r\n \r\n\r\n \r\n\r\n \r\n Retrieve}\r\n />\r\n More option}\r\n />\r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n Update setting\r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n \r\n {supportSalesOrder ?\r\n \r\n\r\n \r\n \r\n }\r\n label='Invoice'\r\n />\r\n \r\n : null}\r\n\r\n \r\n \r\n \r\n \r\n \r\n {invoicesPerPage && invoicesPerPage.map(item => {\r\n return {item.text}\r\n })}\r\n \r\n\r\n \r\n \r\n \r\n \r\n {searchTypeText} range\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
\r\n\r\n
\r\n \r\n }\r\n onClick={handleClose}\r\n text=\"Done\"\r\n />\r\n \r\n
\r\n
\r\n )\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n return {\r\n customers: state.customers,\r\n customerOrderNumbers: state.customerOrderNumbers\r\n }\r\n}\r\n\r\nconst mapDispatchToProps = dispatch => {\r\n return {\r\n searchByCustomerCode: (searchKey) => searchCustomersByCode(searchKey),\r\n searchByCustomerName: (searchKey) => searchCustomersByName(searchKey),\r\n searchCustomerOrderNumber: (type, searchKey) => searchCustomerOrderNumber(type, searchKey)\r\n }\r\n}\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps()\r\n)(InvoiceSearchForm);\r\n","export const INVOICE_LIST_REQUEST_STARTED = 'INVOICE_LIST_REQUEST_STARTED';\r\nexport const INVOICE_LIST_REQUEST_SUCCESS = 'INVOICE_LIST_REQUEST_SUCCESS';\r\nexport const INVOICE_LIST_REQUEST_FAILED = 'INVOICE_LIST_REQUEST_FAILED'\r\nexport const FILTER_INVOICES = 'FILTER_INVOICES'\r\nexport const INVOICE_LIST_CLOSE_NOTIFICATION = 'INVOICE_LIST_CLOSE_NOTIFICATION'\r\nexport const INVOICE_LIST_FORM_VALUE_CHANGED = 'INVOICE_LIST_FORM_VALUE_CHANGED'\r\n\r\nexport const INVOICE_SETTING_REQUEST_STARTED = 'INVOICE_SETTING_REQUEST_STARTED';\r\nexport const INVOICE_SETTING_REQUEST_SUCCESS = 'INVOICE_SETTING_REQUEST_SUCCESS';\r\nexport const INVOICE_SETTING_REQUEST_FAILED = 'INVOICE_SETTING_REQUEST_FAILED'\r\n\r\nexport const INVOICE_DETAIL_REQUEST_STARTED = 'INVOICE_DETAIL_REQUEST_STARTED';\r\nexport const INVOICE_DETAIL_REQUEST_SUCCESS = 'INVOICE_DETAIL_REQUEST_SUCCESS';\r\nexport const INVOICE_DETAIL_REQUEST_FAILED = 'INVOICE_DETAIL_REQUEST_FAILED'\r\n","import {\r\n FILTER_INVOICES,\r\n INVOICE_DETAIL_REQUEST_FAILED,\r\n INVOICE_DETAIL_REQUEST_STARTED,\r\n INVOICE_DETAIL_REQUEST_SUCCESS,\r\n INVOICE_LIST_CLOSE_NOTIFICATION, INVOICE_LIST_FORM_VALUE_CHANGED,\r\n INVOICE_LIST_REQUEST_FAILED,\r\n INVOICE_LIST_REQUEST_STARTED,\r\n INVOICE_LIST_REQUEST_SUCCESS,\r\n INVOICE_SETTING_REQUEST_FAILED,\r\n INVOICE_SETTING_REQUEST_STARTED,\r\n INVOICE_SETTING_REQUEST_SUCCESS,\r\n} from './InvoiceListConstants'\r\n\r\nexport const invoiceListRequestStarted = () => {\r\n return {\r\n type: INVOICE_LIST_REQUEST_STARTED\r\n }\r\n}\r\n\r\nexport const invoiceListRequestSuccess = (invoices) => {\r\n return {\r\n type: INVOICE_LIST_REQUEST_SUCCESS,\r\n payload: invoices\r\n }\r\n}\r\n\r\nexport const invoiceListRequestFailed = (error) => {\r\n return {\r\n type: INVOICE_LIST_REQUEST_FAILED,\r\n payload: error\r\n }\r\n}\r\n\r\nexport const invoiceSettingRequestStarted = () => {\r\n return {\r\n type: INVOICE_SETTING_REQUEST_STARTED\r\n }\r\n}\r\n\r\nexport const invoiceSettingRequestSuccess = (setting) => {\r\n return {\r\n type: INVOICE_SETTING_REQUEST_SUCCESS,\r\n payload: setting\r\n }\r\n}\r\n\r\nexport const invoiceSettingRequestFailed = (error) => {\r\n return {\r\n type: INVOICE_SETTING_REQUEST_FAILED,\r\n payload: error\r\n }\r\n}\r\n\r\nexport const filterInvoices = (searchKey) => {\r\n\r\n return {\r\n type: FILTER_INVOICES,\r\n payload: searchKey\r\n }\r\n}\r\n\r\nexport const closeNotificationClose = () => {\r\n return {\r\n type: INVOICE_LIST_CLOSE_NOTIFICATION\r\n }\r\n}\r\n\r\nexport const invoiceDetailRequestStarted = () => {\r\n return {\r\n type: INVOICE_DETAIL_REQUEST_STARTED\r\n }\r\n}\r\n\r\nexport const invoiceDetailRequestSuccess = (invoiceDetails) => {\r\n return {\r\n type: INVOICE_DETAIL_REQUEST_SUCCESS,\r\n payload: invoiceDetails\r\n }\r\n}\r\n\r\nexport const invoiceDetailRequestFailed = (error) => {\r\n return {\r\n type: INVOICE_DETAIL_REQUEST_FAILED,\r\n payload: error\r\n }\r\n}\r\n\r\nexport const formValueChanged = (nameValue) => {\r\n return {\r\n type: INVOICE_LIST_FORM_VALUE_CHANGED,\r\n payload: nameValue\r\n }\r\n}\r\n\r\n\r\n\r\n\r\n","import {\r\n invoiceDetailRequestFailed,\r\n invoiceDetailRequestStarted, invoiceDetailRequestSuccess,\r\n invoiceListRequestFailed,\r\n invoiceListRequestStarted,\r\n invoiceListRequestSuccess, invoiceSettingRequestFailed, invoiceSettingRequestStarted, invoiceSettingRequestSuccess,\r\n} from \"./InvoiceListViewActions\";\r\nimport * as api from '../Api'\r\nimport ConsoleHelper from \"../../helpers/ConsoleHelper\";\r\n\r\nexport const retrieveInvoicesForToday = (type) => {\r\n return (dispatch) => {\r\n dispatch(invoiceListRequestStarted());\r\n api.retrieveInvoicesForToday(type)\r\n .then(resp => {\r\n if (resp.data.success) {\r\n dispatch(invoiceListRequestSuccess(resp.data.data))\r\n } else {\r\n dispatch(invoiceListRequestFailed(resp.data.message))\r\n }\r\n })\r\n .catch(error => {\r\n ConsoleHelper(error.message);\r\n // dispatch(invoiceListRequestFailed(error.message))\r\n })\r\n }\r\n}\r\n\r\nexport const searchByInvoiceNumber = (type, invoiceNumber) => {\r\n return (dispatch) => {\r\n dispatch(invoiceListRequestStarted());\r\n api.searchInvoicesByInvoiceNumber(type, invoiceNumber)\r\n .then(resp => {\r\n if (resp.data.success) {\r\n dispatch(invoiceListRequestSuccess(resp.data.data))\r\n } else {\r\n dispatch(invoiceListRequestFailed(resp.data.message))\r\n }\r\n })\r\n .catch(error => {\r\n dispatch(invoiceListRequestFailed(error.message))\r\n })\r\n }\r\n}\r\n\r\nexport const listInvoicesByCustomerCode = (type, startDate, endDate, customerCode) => {\r\n return (dispatch) => {\r\n dispatch(invoiceListRequestStarted());\r\n api.searchInvoicesByCustomerCode(type, startDate, endDate, customerCode)\r\n .then(resp => {\r\n if (resp.data.success) {\r\n dispatch(invoiceListRequestSuccess(resp.data.data))\r\n } else {\r\n dispatch(invoiceListRequestFailed(resp.data.message))\r\n }\r\n })\r\n .catch(error => {\r\n dispatch(invoiceListRequestFailed(error.message))\r\n })\r\n }\r\n}\r\n\r\nexport const listInvoicesByCustomerName = (type, startDate, endDate, customerName) => {\r\n return (dispatch) => {\r\n dispatch(invoiceListRequestStarted());\r\n api.searchInvoicesByCustomerName(type, startDate, endDate, customerName)\r\n .then(resp => {\r\n if (resp.data.success) {\r\n dispatch(invoiceListRequestSuccess(resp.data.data))\r\n } else {\r\n dispatch(invoiceListRequestFailed(resp.data.message))\r\n }\r\n })\r\n .catch(error => {\r\n dispatch(invoiceListRequestFailed(error.message))\r\n })\r\n }\r\n}\r\nexport const searchInvoiceByCustomerOrderNumber = (type, customerName) => {\r\n return (dispatch) => {\r\n dispatch(invoiceListRequestStarted());\r\n api.searchInvoicesByCustomerOrderNumber(type, customerName)\r\n .then(resp => {\r\n if (resp.data.success) {\r\n dispatch(invoiceListRequestSuccess(resp.data.data))\r\n } else {\r\n dispatch(invoiceListRequestFailed(resp.data.message))\r\n }\r\n })\r\n .catch(error => {\r\n dispatch(invoiceListRequestFailed(error.message))\r\n })\r\n }\r\n}\r\n\r\nexport const getInvoiceDetailLines = (source, invoiceNumber) => {\r\n return (dispatch) => {\r\n dispatch(invoiceDetailRequestStarted());\r\n api.getInvoiceDetailLines(source, invoiceNumber)\r\n .then(resp => {\r\n if (resp.data.success) {\r\n dispatch(invoiceDetailRequestSuccess(resp.data.data))\r\n } else {\r\n dispatch(invoiceDetailRequestFailed(resp.data.message))\r\n }\r\n })\r\n .catch(error => {\r\n dispatch(invoiceDetailRequestFailed(error.message))\r\n })\r\n }\r\n}\r\n\r\nexport const retrieveInvoiceSetting= () =>{\r\n return (dispatch) => {\r\n dispatch(invoiceSettingRequestStarted());\r\n api.retrieveInvoiceSetting()\r\n .then(resp => {\r\n if (resp.data.success) {\r\n ConsoleHelper(resp.data.data)\r\n dispatch(invoiceSettingRequestSuccess(resp.data.data))\r\n } else {\r\n dispatch(invoiceSettingRequestFailed(resp.data.message))\r\n }\r\n })\r\n .catch(error => {\r\n dispatch(invoiceSettingRequestFailed(error.message))\r\n })\r\n }\r\n}\r\n\r\n","import React from \"react\";\r\nimport {\r\n Avatar,\r\n Card,\r\n CardActions,\r\n CardContent,\r\n CardHeader, IconButton, ListItemIcon, ListItemText,\r\n makeStyles, Menu, MenuItem,\r\n Typography\r\n} from \"@material-ui/core\";\r\nimport {blue, blueGrey, cyan, deepOrange, deepPurple, green} from \"@material-ui/core/colors\";\r\nimport Controls from '../../components/controls/Controls'\r\nimport {Link as RouterLink} from 'react-router-dom'\r\nimport MoreVertIcon from '@material-ui/icons/MoreVert';\r\nimport ViewHeadlineOutlinedIcon from '@material-ui/icons/ViewHeadlineOutlined';\r\nimport ViewModuleIcon from '@material-ui/icons/ViewModule';\r\nimport {Skeleton} from \"@material-ui/lab\";\r\n\r\nlet skeletonHeight = 20;\r\nconst useStyles = makeStyles((theme) => ({\r\n root:{\r\n height:'100%'\r\n },\r\n header: {\r\n color: theme.palette.primary.dark\r\n },\r\n orange: {\r\n color: theme.palette.getContrastText(deepOrange[500]),\r\n backgroundColor: deepOrange[500],\r\n },\r\n green: {\r\n color: theme.palette.getContrastText(green[500]),\r\n backgroundColor: green[500],\r\n },\r\n blue: {\r\n color: theme.palette.getContrastText(blue[500]),\r\n backgroundColor: blue[500],\r\n },\r\n deepPurple: {\r\n color: theme.palette.getContrastText(deepPurple[500]),\r\n backgroundColor: deepPurple[500],\r\n },\r\n blueGrey: {\r\n color: theme.palette.getContrastText(blueGrey[500]),\r\n backgroundColor: blueGrey[500],\r\n },\r\n cyan: {\r\n color: theme.palette.getContrastText(cyan[500]),\r\n backgroundColor: cyan[500],\r\n }\r\n}));\r\nexport default function InvoiceCard(props) {\r\n const {\r\n invoice,\r\n handleViewDetailLinesClick,\r\n loading,\r\n displayPriceField\r\n } = props;\r\n const [anchorEl, setAnchorEl] = React.useState(null);\r\n const handleClick = (event) => {\r\n setAnchorEl(event.currentTarget);\r\n };\r\n\r\n const handleClose = () => {\r\n setAnchorEl(null);\r\n };\r\n\r\n const handleQuickDetailLineView = (source, invoiceNumber) => {\r\n handleViewDetailLinesClick(source, invoiceNumber)\r\n handleClose();\r\n }\r\n\r\n const classes = useStyles();\r\n let supportedAvatarBackgroundColors = [classes.orange, classes.green, classes.blue, classes.deepPurple, classes.blueGrey, classes.cyan];\r\n\r\n const getAvatar = (name) => {\r\n let firstChar;\r\n let validChar = false;\r\n for (let i = 0; i < name.length; i++) {\r\n firstChar = name.charAt(i);\r\n if (firstChar.match(/[a-z]/i)) { //Check first character is a letter\r\n validChar = true;\r\n break;\r\n }\r\n }\r\n if (validChar)\r\n return \r\n {firstChar.toUpperCase()}\r\n ;\r\n return null;\r\n }\r\n return (\r\n\r\n \r\n\r\n \r\n ) : (\r\n getAvatar(invoice.customerName))\r\n }\r\n action={\r\n loading ? null :\r\n \r\n \r\n \r\n }\r\n title={\r\n loading ? (\r\n \r\n ) :\r\n \r\n {invoice.customerName}\r\n }\r\n subheader={\r\n loading ?\r\n () :\r\n (`Transaction date: ${invoice.formattedInvoiceDate}`)\r\n }\r\n\r\n />\r\n {loading ? null :\r\n \r\n handleQuickDetailLineView(invoice.source, invoice.invoiceNumber)}>\r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n\r\n \r\n {loading ?\r\n (\r\n {displayPriceField && }\r\n \r\n \r\n \r\n )\r\n : (\r\n
\r\n {displayPriceField && Invoice\r\n total: {invoice.formattedNett}}\r\n Detail\r\n lines: {invoice.detailLines}\r\n
\r\n\r\n Available\r\n pickup\r\n lines: {invoice.actionableLines}\r\n {/*{invoice.actionableLines === 0 ? : null}*/}\r\n
\r\n {`Transaction number: ${invoice.invoiceNumber}`}\r\n
\r\n )\r\n }\r\n
\r\n \r\n {loading ? (\r\n \r\n ) :\r\n Pickup}\r\n />\r\n }\r\n \r\n\r\n
\r\n );\r\n\r\n}\r\n","import {Snackbar} from \"@material-ui/core\";\r\nimport {Alert} from \"@material-ui/lab\";\r\n\r\n\r\nexport default function Notification(props) {\r\n\r\n const {open, type, message, handleClose, position, hideDuration} = props;\r\n\r\n\r\n const handleOnClose = (event, reason) => {\r\n if (reason === 'clickaway') {\r\n return;\r\n }\r\n handleClose();\r\n }\r\n\r\n return (\r\n \r\n \r\n {message}\r\n \r\n \r\n )\r\n}\r\n","import React from \"react\";\r\nimport {\r\n Dialog, DialogActions,\r\n DialogContent,\r\n DialogTitle,\r\n IconButton,\r\n makeStyles,\r\n Paper,\r\n Table,\r\n TableBody,\r\n TableCell,\r\n TableContainer,\r\n TableHead,\r\n TableRow, Typography\r\n} from \"@material-ui/core\";\r\nimport CloseIcon from \"@material-ui/icons/Close\";\r\nimport Controls from \"../../components/controls/Controls\";\r\nimport CheckIcon from \"@material-ui/icons/Check\";\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n table: {\r\n minWidth: 650,\r\n },\r\n closeButton: {\r\n position: 'absolute',\r\n right: theme.spacing(1),\r\n top: theme.spacing(1),\r\n color: theme.palette.grey[500],\r\n },\r\n}));\r\nexport default function QuickDetailLineView(props) {\r\n const {\r\n invoiceDetail,\r\n open,\r\n handleClose,\r\n displayItemCodeField,\r\n displayPriceField\r\n } = props;\r\n const classes = useStyles();\r\n return (\r\n\r\n \r\n \r\n \r\n Transaction details\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {displayItemCodeField && Item }\r\n Description\r\n Quantity\r\n {displayPriceField && Price}\r\n \r\n \r\n \r\n {invoiceDetail && invoiceDetail.lines && invoiceDetail.lines.length > 0 ? invoiceDetail.lines.map((detailLine) => {\r\n\r\n return (\r\n \r\n\r\n\r\n {displayItemCodeField && {detailLine.item !== '/C' && detailLine.item !== '/F' ? detailLine.item : null}}\r\n {detailLine.description}\r\n {detailLine.item === '/C' ? '' : (detailLine.quantity)} \r\n {displayPriceField && {detailLine.item === '/C' ? '' : ('$' + detailLine.extension.toFixed(2))} }\r\n \r\n )\r\n\r\n }) : \r\n \r\n No records found\r\n \r\n }\r\n \r\n
\r\n
\r\n
\r\n \r\n }\r\n autoFocus\r\n onClick={handleClose}\r\n text=\"Done\"\r\n />\r\n \r\n
\r\n );\r\n}\r\n","export const NOTIFICATION_TIME = 3000;\r\n","import React, {useEffect, useState} from \"react\";\r\nimport InvoiceSearchForm from \"./InvoiceSearchForm\";\r\nimport {\r\n getInvoiceDetailLines,\r\n listInvoicesByCustomerCode,\r\n listInvoicesByCustomerName, retrieveInvoiceSetting, retrieveInvoicesForToday,\r\n searchByInvoiceNumber, searchInvoiceByCustomerOrderNumber\r\n} from \"../../redux/invoice-list/InvoiceListServerActions\";\r\nimport {connect} from \"react-redux\";\r\nimport {\r\n Container,\r\n Grid,\r\n makeStyles,\r\n Typography\r\n} from \"@material-ui/core\";\r\nimport InvoiceCard from \"./InvoiceCard\"\r\nimport Controls from \"../../components/controls/Controls\"\r\nimport {\r\n closeNotificationClose,\r\n filterInvoices,\r\n formValueChanged\r\n} from \"../../redux/invoice-list/InvoiceListViewActions\";\r\nimport {Pagination} from \"@material-ui/lab\";\r\nimport Notification from \"../../components/Notification\";\r\nimport QuickDetailLineView from \"./QuickDetailLineView\";\r\nimport {NOTIFICATION_TIME} from \"../../helpers/NotificationHelper\";\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n noInvoiceFound: {\r\n display: \"flex\",\r\n justifyContent: 'center',\r\n marginTop: '14rem'\r\n },\r\n searchBarContainer: {\r\n display: 'flex',\r\n justifyContent: 'center'\r\n },\r\n searchContainer: {\r\n display: 'flex',\r\n alignItems: 'flex-end'\r\n },\r\n paginationContainer: {\r\n display: 'flex',\r\n justifyContent: 'flex-end',\r\n margin: theme.spacing(2)\r\n },\r\n itemPerPageStyle: {\r\n display: 'flex',\r\n justifyContent: 'flex-end'\r\n },\r\n\r\n pageActionsContainer: {\r\n marginTop: theme.spacing(3),\r\n marginBottom: theme.spacing(2),\r\n display: 'flex',\r\n justifyContent: 'space-between'\r\n }\r\n}))\r\n\r\nlet defaultInvoiceList = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]\r\n\r\nfunction InvoiceList(props) {\r\n\r\n const styles = useStyles();\r\n const {\r\n getInvoiceSetting,\r\n getInvoicesForToday,\r\n searchByInvoiceNumber,\r\n searchInvoiceByCustomerCode,\r\n searchInvoiceByCustomerName,\r\n searchInvoiceByCustomerOrderNumber,\r\n invoiceList,\r\n filterInvoices,\r\n closeNotification,\r\n getInvoiceDetailLines,\r\n handleFormValueChange,\r\n } = props;\r\n const [invoiceSearchKey, setInvoiceSearchKey] = useState(\"\");\r\n const [currentPage, setCurrentPage] = useState(1);\r\n const [invoicePerPage, setInvoicesPerPage] = React.useState(24);\r\n const [showQuickViewDetailLineDialog, setShowQuickViewDetailLineDialog] = useState(false);\r\n const [listTitle, setListTitle] = useState('Invoices for today');\r\n const [invoicesOnly, setInvoicesOnly] = useState(true);\r\n const [searchTypeText, setSearchTypeText] = useState(\"Invoice\");\r\n\r\n useEffect(() => {\r\n getInvoiceSetting();\r\n getInvoicesForToday();\r\n }, [getInvoiceSetting, getInvoicesForToday])\r\n\r\n\r\n const handleInvoicesOnlyChange = (event) => {\r\n setInvoicesOnly(event.target.checked);\r\n setSearchTypeText(event.target.checked ? 'Invoice' : 'Order')\r\n }\r\n\r\n\r\n\r\n const getCurrentTransactions = (type) => {\r\n getInvoicesForToday(type)\r\n setListTitle(invoicesOnly ? 'Invoices for today' : 'Orders for today');\r\n }\r\n const handleItemPerPageChange = (event) => {\r\n setInvoicesPerPage(event.target.value);\r\n };\r\n const handleInvoiceSearchChange = (e) => {\r\n let searchKey = e.target.value\r\n setInvoiceSearchKey(searchKey);\r\n filterInvoices(searchKey)\r\n }\r\n const handleSearchByInvoiceNumber = (type, invoiceNumber) => {\r\n searchByInvoiceNumber(type, invoiceNumber);\r\n setListTitle(`${invoicesOnly ? 'Invoices' : 'Orders'} for ${searchTypeText} number ${invoiceNumber}`)\r\n resetSearchKey();\r\n }\r\n\r\n const handleSearchByCustomerCode = (type, startDate, endDate, customerCode) => {\r\n searchInvoiceByCustomerCode(type, startDate, endDate, customerCode);\r\n setListTitle(`${invoicesOnly ? 'Invoices' : 'Orders'} for customer code ${customerCode} starting from ${startDate} to ${endDate}`)\r\n resetSearchKey();\r\n }\r\n\r\n const handleSearchByCustomerName = (type, startDate, endDate, customerName) => {\r\n searchInvoiceByCustomerName(type, startDate, endDate, customerName);\r\n setListTitle(`${invoicesOnly ? 'Invoices' : 'Orders'} for customer ${customerName} starting from ${startDate} to ${endDate}`)\r\n resetSearchKey();\r\n }\r\n\r\n const handleSearchByCustomerOrderNumber = (type, customerOrderNumber) => {\r\n searchInvoiceByCustomerOrderNumber(type, customerOrderNumber);\r\n setListTitle(`${invoicesOnly ? 'Invoices' : 'Orders'} for customer order number ${customerOrderNumber}.`)\r\n resetSearchKey();\r\n }\r\n\r\n\r\n function resetSearchKey() {\r\n setInvoiceSearchKey(\"\");\r\n setCurrentPage(1)\r\n }\r\n\r\n const handlePaginationChange = (event, value) => {\r\n setCurrentPage(value);\r\n };\r\n\r\n\r\n function getPagination() {\r\n if (invoiceList && invoiceList.filteredInvoices && invoiceList.filteredInvoices.length > invoicePerPage) {\r\n return \r\n }\r\n return null;\r\n }\r\n\r\n function handleNotificationClose() {\r\n closeNotification();\r\n }\r\n\r\n const handleViewDetailLinesClick = (source, invoiceNumber) => {\r\n setShowQuickViewDetailLineDialog(true);\r\n getInvoiceDetailLines(source, invoiceNumber)\r\n }\r\n const handleQuickViewDetailLineClose = () => {\r\n setShowQuickViewDetailLineDialog(false);\r\n }\r\n const classes = useStyles();\r\n return (\r\n\r\n
\r\n {invoiceList.isLoading ?\r\n : null}\r\n \r\n \r\n
\r\n
\r\n \r\n \r\n {listTitle}\r\n \r\n\r\n \r\n\r\n
\r\n \r\n {invoiceList.filteredInvoices.length > 1 ? invoiceList.filteredInvoices.length + ` ${invoicesOnly ? 'invoices' : 'orders'} ` : invoiceList.filteredInvoices.length + ` ${invoicesOnly ? 'invoice' : 'order'} `}\r\n found\r\n
\r\n\r\n
\r\n
\r\n
\r\n\r\n {\r\n invoiceList.isLoading ?\r\n
\r\n \r\n {defaultInvoiceList.map(index => {\r\n return \r\n \r\n })}\r\n \r\n
: (\r\n invoiceList && invoiceList.filteredInvoices &&\r\n invoiceList.filteredInvoices.length > 0 ?\r\n
\r\n \r\n {invoiceList.filteredInvoices.slice((currentPage - 1) * invoicePerPage, (currentPage - 1) * invoicePerPage + invoicePerPage).map(invoice => {\r\n return \r\n \r\n \r\n })}\r\n \r\n
\r\n {getPagination()}\r\n
\r\n
:\r\n No\r\n records found\r\n )\r\n\r\n }\r\n\r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
);\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n return {\r\n invoiceList: state.invoiceList\r\n }\r\n}\r\n\r\nconst mapDispatchToProps = dispatch => {\r\n return {\r\n getInvoicesForToday: (type = 1) => retrieveInvoicesForToday(type),\r\n searchByInvoiceNumber: (type, invoiceNumber) => searchByInvoiceNumber(type, invoiceNumber),\r\n searchInvoiceByCustomerCode: (type, startDate, endDate, customerCode) => listInvoicesByCustomerCode(type, startDate, endDate, customerCode),\r\n searchInvoiceByCustomerName: (type, startDate, endDate, customerName) => listInvoicesByCustomerName(type, startDate, endDate, customerName),\r\n searchInvoiceByCustomerOrderNumber: (type, customerOrderNumber) => searchInvoiceByCustomerOrderNumber(type, customerOrderNumber),\r\n filterInvoices: (searchKey) => filterInvoices(searchKey),\r\n closeNotification: () => closeNotificationClose(),\r\n getInvoiceDetailLines: (source, invoiceNumber) => getInvoiceDetailLines(source, invoiceNumber),\r\n getInvoiceSetting: () => retrieveInvoiceSetting(),\r\n handleFormValueChange: (nameValue) => formValueChanged(nameValue)\r\n }\r\n}\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps()\r\n)(InvoiceList);\r\n","export const VIEW_INVOICE_DETAIL_REQUEST = 'VIEW_INVOICE_DETAIL_REQUEST';\r\nexport const VIEW_INVOICE_DETAIL_SUCCESS = 'VIEW_INVOICE_DETAIL_SUCCESS';\r\nexport const VIEW_INVOICE_DETAIL_FAILED = 'VIEW_INVOICE_DETAIL_FAILED';\r\n\r\nexport const VIEW_INVOICE_DETAIL_ADD_COMMENT = 'VIEW_INVOICE_DETAIL_ADD_COMMENT';\r\nexport const VIEW_INVOICE_DETAIL_ADD_LINE_IMAGE = 'VIEW_INVOICE_DETAIL_ADD_LINE_IMAGE';\r\nexport const VIEW_INVOICE_DETAIL_REMOVE_LINE_IMAGE = 'VIEW_INVOICE_DETAIL_REMOVE_LINE_IMAGE';\r\nexport const VIEW_INVOICE_DETAIL_UPDATE_PICKUP_STATUS = 'VIEW_INVOICE_DETAIL_UPDATE_PICKUP_STATUS';\r\nexport const VIEW_INVOICE_DETAIL_UPDATE_ALL_LINE_STATUS = 'VIEW_INVOICE_DETAIL_UPDATE_ALL_LINE_STATUS';\r\n\r\nexport const SAVE_PICKUP_DETAIL_REQUEST_STARTED = 'SAVE_PICKUP_DETAIL_REQUEST_STARTED';\r\nexport const SAVE_PICKUP_DETAIL_REQUEST_SUCCESS = 'SAVE_PICKUP_DETAIL_REQUEST_SUCCESS';\r\nexport const SAVE_PICKUP_DETAIL_REQUEST_FAILED = 'SAVE_PICKUP_DETAIL_REQUEST_FAILED';\r\n\r\n\r\n\r\nexport const PICKUP_DETAIL_CLOSE_NOTIFICATION = 'PICKUP_DETAIL_CLOSE_NOTIFICATION';\r\nexport const PICKUP_DETAIL_OPEN_NOTIFICATION = 'PICKUP_DETAIL_OPEN_NOTIFICATION';\r\n\r\nexport const PICKUP_DETAIL_FORM_VALUE_CHANGE = 'PICKUP_DETAIL_FORM_VALUE_CHANGE';\r\nexport const PICKUP_DETAIL_CLOSE_SAVE_NOTIFICATION = 'PICKUP_DETAIL_CLOSE_SAVE_NOTIFICATION';\r\n","import {\r\n PICKUP_DETAIL_CLOSE_NOTIFICATION,\r\n PICKUP_DETAIL_CLOSE_SAVE_NOTIFICATION,\r\n PICKUP_DETAIL_FORM_VALUE_CHANGE,\r\n PICKUP_DETAIL_OPEN_NOTIFICATION,\r\n SAVE_PICKUP_DETAIL_REQUEST_FAILED,\r\n SAVE_PICKUP_DETAIL_REQUEST_STARTED,\r\n SAVE_PICKUP_DETAIL_REQUEST_SUCCESS,\r\n VIEW_INVOICE_DETAIL_ADD_COMMENT,\r\n VIEW_INVOICE_DETAIL_ADD_LINE_IMAGE,\r\n VIEW_INVOICE_DETAIL_FAILED,\r\n VIEW_INVOICE_DETAIL_REMOVE_LINE_IMAGE,\r\n VIEW_INVOICE_DETAIL_REQUEST,\r\n VIEW_INVOICE_DETAIL_SUCCESS,\r\n VIEW_INVOICE_DETAIL_UPDATE_ALL_LINE_STATUS,\r\n VIEW_INVOICE_DETAIL_UPDATE_PICKUP_STATUS\r\n} from \"./InvoiceDetailConstants\";\r\n\r\n\r\nexport const viewInvoiceDetailRequest = () => {\r\n return {\r\n type: VIEW_INVOICE_DETAIL_REQUEST\r\n }\r\n}\r\n\r\nexport const viewInvoiceDetailSuccess = (invoice) => {\r\n return {\r\n type: VIEW_INVOICE_DETAIL_SUCCESS,\r\n payload: invoice\r\n }\r\n}\r\n\r\nexport const viewInvoiceDetailFailed = () => {\r\n return {\r\n type: VIEW_INVOICE_DETAIL_FAILED\r\n }\r\n}\r\n\r\nexport const addLineComment = (id, comment) => {\r\n\r\n return {\r\n type: VIEW_INVOICE_DETAIL_ADD_COMMENT,\r\n payload: {\r\n id,\r\n comment\r\n }\r\n }\r\n}\r\n\r\nexport const addLineImage = (id, image) => {\r\n\r\n return {\r\n type: VIEW_INVOICE_DETAIL_ADD_LINE_IMAGE,\r\n payload: {\r\n id,\r\n image\r\n }\r\n }\r\n}\r\n\r\n\r\nexport const removeLineImage = (id) => {\r\n\r\n return {\r\n type: VIEW_INVOICE_DETAIL_REMOVE_LINE_IMAGE,\r\n payload: {\r\n id\r\n }\r\n }\r\n}\r\n\r\nexport const updatePickupStatus = (id, status) => {\r\n\r\n return {\r\n type: VIEW_INVOICE_DETAIL_UPDATE_PICKUP_STATUS,\r\n payload: {\r\n id,\r\n status\r\n }\r\n }\r\n}\r\n\r\n\r\nexport const updateAllLineStatus = (checkedStatus) => {\r\n\r\n return {\r\n type: VIEW_INVOICE_DETAIL_UPDATE_ALL_LINE_STATUS,\r\n payload: {\r\n checkedStatus\r\n }\r\n }\r\n}\r\n\r\nexport const savePickupDetailRequestStarted = () => {\r\n return {\r\n type: SAVE_PICKUP_DETAIL_REQUEST_STARTED\r\n }\r\n}\r\n\r\nexport const savePickupDetailRequestSuccess = (message) => {\r\n return {\r\n type: SAVE_PICKUP_DETAIL_REQUEST_SUCCESS,\r\n payload: message\r\n }\r\n}\r\n\r\nexport const savePickupDetailRequestFailed = (message) => {\r\n return {\r\n type: SAVE_PICKUP_DETAIL_REQUEST_FAILED,\r\n payload: message\r\n }\r\n}\r\n\r\nexport const handleNotificationClose = () => {\r\n return {\r\n type: PICKUP_DETAIL_CLOSE_NOTIFICATION\r\n }\r\n}\r\n\r\n\r\nexport const showNotification = (type, message) => {\r\n return {\r\n type: PICKUP_DETAIL_OPEN_NOTIFICATION,\r\n payload: {\r\n type,\r\n message\r\n }\r\n }\r\n}\r\n\r\nexport const handlePickupInfoFormValueChange = (name, value) => {\r\n return {\r\n type: PICKUP_DETAIL_FORM_VALUE_CHANGE,\r\n payload: {\r\n name,\r\n value\r\n }\r\n }\r\n}\r\n\r\nexport const closePickupSaveNotification = () => {\r\n return {\r\n type: PICKUP_DETAIL_CLOSE_SAVE_NOTIFICATION,\r\n\r\n }\r\n}\r\n","import {\r\n savePickupDetailRequestFailed,\r\n savePickupDetailRequestStarted, savePickupDetailRequestSuccess,\r\n viewInvoiceDetailFailed,\r\n viewInvoiceDetailRequest,\r\n viewInvoiceDetailSuccess\r\n} from \"./InvoiceDetailViewActions\";\r\nimport * as api from \"../Api\";\r\n\r\nexport const getInvoiceDetail = (source, invoiceNumber) => {\r\n return (dispatch) => {\r\n dispatch(viewInvoiceDetailRequest());\r\n api.getInvoiceDetail(source, invoiceNumber)\r\n .then(resp => {\r\n if (resp.data.success) {\r\n dispatch(viewInvoiceDetailSuccess(resp.data.data))\r\n } else {\r\n dispatch(viewInvoiceDetailFailed(resp.data.message))\r\n }\r\n })\r\n .catch(error => {\r\n dispatch(viewInvoiceDetailFailed(error.message))\r\n })\r\n }\r\n}\r\n\r\nexport const savePickupDetails = (pickupLines, pickupInfo, source, invoiceNumber) => {\r\n return (dispatch) => {\r\n dispatch(savePickupDetailRequestStarted());\r\n api.savePickupDetails({\r\n invoiceLines: pickupLines,\r\n pickupInfo: pickupInfo\r\n }).then(resp => {\r\n if (resp.data.success) {\r\n dispatch(savePickupDetailRequestSuccess(resp.data.data))\r\n setTimeout(() => {\r\n dispatch(getInvoiceDetail(source, invoiceNumber));\r\n }, 500)\r\n\r\n } else {\r\n dispatch(savePickupDetailRequestFailed(resp.data.message))\r\n }\r\n }).catch(error => {\r\n dispatch(savePickupDetailRequestFailed(error.message))\r\n })\r\n }\r\n}\r\n","import React from \"react\";\r\nimport {\r\n Grid,\r\n List,\r\n ListItem,\r\n ListItemText,\r\n makeStyles, Paper\r\n} from \"@material-ui/core\";\r\nimport {Skeleton} from \"@material-ui/lab\";\r\n\r\nlet skeletonHeight = 20;\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n\r\n infoContainer: {\r\n // margin: theme.spacing(2),\r\n height: '100%'\r\n },\r\n headerOtherInfo: {\r\n // textAlign: 'end'\r\n }\r\n}));\r\nconst InvoiceHeader = (props) => {\r\n const {\r\n header,\r\n loading,\r\n displayPriceField\r\n } = props;\r\n const classes = useStyles();\r\n return (\r\n
\r\n \r\n \r\n \r\n \r\n \r\n {\r\n loading ? (\r\n \r\n ) :\r\n\r\n \r\n }\r\n \r\n\r\n \r\n {\r\n loading ? :\r\n\r\n }\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n {displayPriceField && (loading ?\r\n \r\n :\r\n )\r\n }\r\n \r\n\r\n \r\n {loading ?\r\n \r\n :\r\n }\r\n \r\n \r\n {loading ?\r\n :\r\n }\r\n \r\n \r\n \r\n \r\n \r\n\r\n
\r\n\r\n )\r\n}\r\nexport default InvoiceHeader;\r\n","import React from \"react\";\r\nimport {Skeleton} from \"@material-ui/lab\";\r\nimport {SKELETON_HEIGHT} from \"../helpers/SkeletonHelper\";\r\n\r\nconst CustomSkeleton = (props) => {\r\n const {\r\n width,\r\n\r\n ...others\r\n } = props;\r\n return (\r\n \r\n )\r\n}\r\nexport default CustomSkeleton;\r\n","export const SKELETON_HEIGHT = 20;\r\n","import * as React from 'react';\r\nimport {\r\n Avatar,\r\n Checkbox, IconButton,\r\n makeStyles, Paper, Table, TableBody, TableCell, TableContainer, TableHead, TableRow, Typography\r\n} from \"@material-ui/core\";\r\nimport CommentIcon from '@material-ui/icons/Comment';\r\nimport PhotoCameraIcon from '@material-ui/icons/PhotoCamera';\r\nimport DeleteIcon from '@material-ui/icons/Delete';\r\nimport CheckCircleIcon from '@material-ui/icons/CheckCircle';\r\nimport CustomSkeleton from \"../../components/CustomSkeleton\";\r\n\r\nlet defaultLoadingLines = [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]\r\nconst useStyles = makeStyles((theme) => ({\r\n table: {\r\n minWidth: 650,\r\n },\r\n image: {\r\n height: 40,\r\n },\r\n avatarContainer: {\r\n display: 'flex',\r\n justifyContent: 'space-between'\r\n },\r\n picked: {\r\n color: \"green\"\r\n }\r\n}));\r\n\r\nexport default function InvoiceDetailLines(props) {\r\n const {\r\n detailLines,\r\n isPickupLineSelected,\r\n showActionButtons,\r\n handlePickupLineClick,\r\n handleCommentBtnClick,\r\n getLineComment,\r\n getLineSupportingImage,\r\n handleCameraBtnClick,\r\n removeSupportingImage,\r\n handleHeaderCheckBoxClick,\r\n headerCheckedStatus,\r\n displayHeaderCheckbox,\r\n loading,\r\n displayItemCodeField,\r\n displayPriceField,\r\n } = props;\r\n\r\n const classes = useStyles();\r\n\r\n return (\r\n\r\n
\r\n \r\n \r\n \r\n \r\n {displayHeaderCheckbox ?\r\n {\r\n handleHeaderCheckBoxClick(event)\r\n }}\r\n />\r\n : null}\r\n {displayItemCodeField && Item }\r\n Description\r\n Quantity\r\n {displayPriceField && Price}\r\n Comment\r\n Picture\r\n Action\r\n \r\n \r\n \r\n {loading ?\r\n (\r\n defaultLoadingLines.map(lineKey => {\r\n return \r\n {displayItemCodeField && }\r\n \r\n {displayPriceField && }\r\n \r\n \r\n \r\n {null}\r\n \r\n {null}\r\n \r\n\r\n \r\n })) :\r\n\r\n (detailLines && detailLines.length > 0 ? detailLines.map((detailLine) => {\r\n const showActionsButtons = showActionButtons(detailLine.id);\r\n const isLineSelected = isPickupLineSelected(detailLine.id);\r\n const comment = getLineComment(detailLine.id)\r\n const lineImage = getLineSupportingImage(detailLine.id)\r\n return (\r\n \r\n {displayHeaderCheckbox ?\r\n {showActionsButtons ?\r\n handlePickupLineClick(event, detailLine.id)}/>\r\n : null} : null\r\n }\r\n {\r\n displayItemCodeField && {detailLine.item !== '/C' && detailLine.item !== '/F' ? detailLine.item : null}\r\n }\r\n {detailLine.description}\r\n {detailLine.item === '/C' ? '' : (detailLine.quantity)} \r\n {\r\n displayPriceField &&\r\n {detailLine.item === '/C' ? '' : ('$' + detailLine.extension.toFixed(2))} \r\n }\r\n {comment}\r\n {\r\n lineImage ?\r\n
\r\n {\r\n detailLine.alreadyAccepted ?\r\n \r\n Supporting proof\r\n \r\n :\r\n <>\r\n handleCameraBtnClick(event, detailLine.id)}>\r\n Supporting proof\r\n \r\n removeSupportingImage(event, detailLine.id)}>\r\n \r\n \r\n \r\n }\r\n\r\n
\r\n : null\r\n }
\r\n \r\n {showActionsButtons ?\r\n (
\r\n handleCommentBtnClick(event, detailLine.id)}>\r\n \r\n \r\n handleCameraBtnClick(event, detailLine.id)}>\r\n \r\n \r\n
)\r\n : null}\r\n {detailLine.alreadyAccepted ? <>\r\n \r\n \r\n Picked up\r\n on {detailLine.formattedPickupDate}\r\n : null}\r\n
\r\n\r\n
\r\n )\r\n\r\n }) : \r\n \r\n No records found\r\n \r\n )}\r\n
\r\n
\r\n
\r\n
\r\n );\r\n}\r\n","import React from \"react\";\r\nimport {\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogTitle, IconButton,\r\n makeStyles,\r\n Typography\r\n} from \"@material-ui/core\";\r\nimport CloseIcon from '@material-ui/icons/Close';\r\nimport Controls from '../../components/controls/Controls'\r\n\r\nconst useStyle = makeStyles((theme) => ({\r\n closeButton: {\r\n position: 'absolute',\r\n right: theme.spacing(1),\r\n top: theme.spacing(1),\r\n color: theme.palette.grey[500],\r\n },\r\n}))\r\nexport default function CommentDialog(props) {\r\n const {open, handleClose, handleSave, recordNumber, comment, handleCommentInputChange} = props;\r\nconst classes = useStyle();\r\n\r\n const handleCommentDialogSave = () => {\r\n handleSave(recordNumber, comment);\r\n }\r\n\r\n return (\r\n \r\n \r\n \r\n Write any comment\r\n \r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n );\r\n}\r\n","import React, {useEffect, useState} from \"react\";\r\nimport {\r\n Container,\r\n Dialog,\r\n DialogActions,\r\n DialogContent,\r\n DialogTitle, Grid, IconButton, makeStyles,\r\n Typography\r\n} from \"@material-ui/core\";\r\nimport Controls from \"../../components/controls/Controls\";\r\nimport Webcam from \"react-webcam\";\r\nimport {Camera} from \"@material-ui/icons\";\r\nimport {Alert, AlertTitle} from \"@material-ui/lab\";\r\nimport FlipCameraAndroidIcon from '@material-ui/icons/FlipCameraAndroid';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n previewImage: {\r\n verticalAlign: 'center'\r\n },\r\n cameraPreviewContainer: {\r\n padding: '10px',\r\n display: \"flex\",\r\n flexDirection: 'column',\r\n alignItems: \"inherit\",\r\n border: '1px solid grey',\r\n height: '100%',\r\n justifyContent: 'space-between',\r\n position: \"relative\"\r\n },\r\n imageLabel: {\r\n textTransform: 'uppercase',\r\n fontSize: '0.875rem',\r\n fontWeight: 'bold',\r\n margin: '4px',\r\n padding: '5px 15px',\r\n textAlign: 'center'\r\n },\r\n swapCameraButton: {\r\n position: \"absolute\",\r\n top: theme.spacing(2),\r\n right: theme.spacing(2)\r\n }\r\n\r\n}))\r\n\r\nexport default function CameraDialog(props) {\r\n const {open, handleClose, handleLineImageCapture, recordNumber, lineImage} = props;\r\n const webCamRef = React.useRef(null);\r\n const [cameraConnectSuccessful, setCameraConnectSuccessful] = useState(true);\r\n const [videoConstraint, setVideoConstraint] = useState({\r\n facingMode: 'user'\r\n });\r\n const [numberOfAvailableDevices, setNumberOfAvailableDevices] = useState(1);\r\n\r\n useEffect(() => {\r\n checkNumberOfCamera();\r\n\r\n }, []);\r\n\r\n function checkNumberOfCamera(){\r\n if (!navigator.mediaDevices || !navigator.mediaDevices.enumerateDevices) {\r\n console.log(\"This browser does not support the API yet\");\r\n\r\n return;\r\n }\r\n navigator.mediaDevices.enumerateDevices()\r\n .then(function(devices) {\r\n let count = 0;\r\n devices.forEach(function(mediaDevice) {\r\n if (mediaDevice.kind === 'videoinput') {\r\n count ++;\r\n }\r\n });\r\n setNumberOfAvailableDevices(count);\r\n })\r\n .catch(function (err) {\r\n //console.log(err.name + \": \" + err.message);\r\n });\r\n }\r\n\r\n const handleCaptureImage = () => {\r\n const image = webCamRef.current.getScreenshot();\r\n handleLineImageCapture(recordNumber, image);\r\n }\r\n\r\n const handleImageDialogClose = () => {\r\n handleClose();\r\n }\r\n\r\n const handleCameraAccessError = () => {\r\n setCameraConnectSuccessful(false)\r\n }\r\n\r\n const handleCameraAccessSuccess = () => {\r\n setCameraConnectSuccessful(true)\r\n checkNumberOfCamera();\r\n }\r\n\r\n const handleCameraSwap = (e) => {\r\n e.preventDefault();\r\n let facingMode = videoConstraint.facingMode;\r\n facingMode = facingMode === 'user' ? 'environment' : 'user';\r\n setVideoConstraint({\r\n ...videoConstraint,\r\n facingMode: facingMode\r\n })\r\n console.log('Changing mode to ' + facingMode)\r\n }\r\n\r\n const classes = useStyles();\r\n return (\r\n \r\n Capture Picture\r\n \r\n \r\n \r\n \r\n \r\n {cameraConnectSuccessful ?
\r\n \r\n Camera preview\r\n \r\n
:\r\n
\r\n\r\n \r\n Cannot access camera\r\n Please verify that you setup camera correctly and granted permission to access\r\n camera\r\n \r\n
}\r\n\r\n
\r\n
\r\n \r\n {\r\n lineImage ? (\r\n \r\n \r\n \r\n Your Capture\r\n \r\n \r\n ) : null\r\n }\r\n \r\n
\r\n
\r\n \r\n\r\n \r\n }\r\n disabled={!cameraConnectSuccessful}\r\n />\r\n\r\n {\r\n numberOfAvailableDevices > 1 ? \r\n \r\n : null\r\n }\r\n \r\n
);\r\n}\r\n","import {makeStyles} from \"@material-ui/core\";\r\n\r\nconst globalStyle = makeStyles((theme) => ({\r\n errorLabel: {\r\n fontSize: \"0.75rem\",\r\n marginTop:theme.spacing(1),\r\n marginBottom:theme.spacing(1),\r\n color: theme.palette.error.main\r\n }\r\n}))\r\n\r\nexport default globalStyle;\r\n","import {\r\n Backdrop,\r\n Button,\r\n CircularProgress, FormControl,\r\n Grid,\r\n InputLabel,\r\n makeStyles,\r\n MenuItem,\r\n Paper,\r\n Select,\r\n Typography\r\n} from \"@material-ui/core\";\r\nimport Controls from \"../../components/controls/Controls\";\r\nimport CreateIcon from \"@material-ui/icons/Create\";\r\nimport SignaturePad from \"react-signature-pad-wrapper\";\r\nimport React, {useRef, useState} from \"react\";\r\nimport globalStyle from \"../../styles/GlobalStyle\";\r\nimport SaveIcon from '@material-ui/icons/Save';\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n\r\n pickupInfoContainer: {\r\n padding: theme.spacing(2),\r\n marginTop: theme.spacing(2),\r\n marginBottom: theme.spacing(2),\r\n border: '1px solid grey'\r\n },\r\n signatureContainer: {},\r\n signatureBox: {\r\n border: '1px solid lightgrey'\r\n },\r\n signatureTitleContainer: {\r\n display: 'flex',\r\n marginTop: theme.spacing(1),\r\n marginBottom: theme.spacing(1)\r\n },\r\n signaturePenIcon: {\r\n marginLeft: theme.spacing(1)\r\n },\r\n secondaryButton: {\r\n colorInherit: theme.palette.grey\r\n },\r\n errorLabel: {\r\n margin: theme.spacing(2),\r\n fontSize: \"0.75rem\",\r\n\r\n },\r\n btnProgressWrapper: {\r\n margin: theme.spacing(1),\r\n position: 'relative',\r\n display: \"inline-block\"\r\n },\r\n btnProgress: {\r\n position: 'absolute',\r\n top: '50%',\r\n left: '50%',\r\n marginTop: -12,\r\n marginLeft: -12,\r\n },\r\n backdrop: {\r\n zIndex: theme.zIndex.drawer + 1,\r\n color: '#fff',\r\n },\r\n\r\n}))\r\n\r\nfunction PickupInfoForm(props) {\r\n const {\r\n handlePickupDetailSave,\r\n saving,\r\n roles,\r\n formValues,\r\n handleFormValueChange\r\n } = props;\r\n let signPadRef = useRef({});\r\n const [errors, setErrors] = useState({});\r\n const [showSignaturePad, setShowSignaturePad] = useState(true);\r\n const [signaturePadTitle, setSignaturePadTitle] = useState('Please sign below');\r\n const [validateOnChange, setValidateOnChange] = useState(false);\r\n const [open, setOpen] = React.useState(false);\r\n const handleSave = (e) => {\r\n if (!validateForm()) {\r\n setValidateOnChange(true)\r\n return;\r\n }\r\n handlePickupDetailSave(e, formValues);\r\n signPadRef.clear();\r\n setShowSignaturePad(true)\r\n }\r\n const handleInputChange = e => {\r\n const {name, value} = e.target;\r\n handleFormValueChange(name, value);\r\n if (validateOnChange) {\r\n validateForm({\r\n [name]: value\r\n })\r\n }\r\n }\r\n\r\n const validateForm = (fieldValues = formValues) => {\r\n let temp = {...errors};\r\n if ('name' in fieldValues) {\r\n temp.name = fieldValues.name ? '' : 'This field is required';\r\n }\r\n\r\n if ('role' in fieldValues) {\r\n temp.role = fieldValues.role ? '' : 'This field is required';\r\n }\r\n\r\n if ('comment' in fieldValues) {\r\n if (fieldValues.comment && fieldValues.comment.length > 255) {\r\n temp.comment = 'Cannot be more than 255 characters long';\r\n } else {\r\n temp.comment = '';\r\n }\r\n }\r\n\r\n if ('signature' in fieldValues) {\r\n temp.signature = fieldValues.signature ? '' : (signPadRef.isEmpty() ? 'This field is required' : 'Please save your signature first');\r\n }\r\n\r\n setErrors({\r\n ...temp\r\n })\r\n\r\n if (fieldValues === formValues)\r\n return Object.values(temp).every(x => x === \"\")\r\n }\r\n\r\n const saveSignature = (e) => {\r\n e.preventDefault();\r\n if (signPadRef.isEmpty()) {\r\n return;\r\n }\r\n setShowSignaturePad(false)\r\n setSignaturePadTitle('Your signature')\r\n setSignature(signPadRef.toDataURL())\r\n }\r\n\r\n const clearSignature = (e) => {\r\n e.preventDefault();\r\n signPadRef.clear();\r\n setSignature('')\r\n }\r\n\r\n const setSignature = (signature) => {\r\n\r\n handleFormValueChange('signature', signature)\r\n validateForm({signature: signature})\r\n }\r\n\r\n const undoSignature = (e) => {\r\n e.preventDefault();\r\n let data = signPadRef.toData();\r\n if (data) {\r\n data.pop(); // remove the last dot or line\r\n signPadRef.fromData(data);\r\n }\r\n setSignature(signPadRef.toDataURL())\r\n }\r\n\r\n const editSignature = (e) => {\r\n e.preventDefault();\r\n // if (signatureData && signPadRef) {\r\n // signPadRef.fromData(signatureData);\r\n // }\r\n setShowSignaturePad(true);\r\n }\r\n const handleRoleClose = () => {\r\n setOpen(false);\r\n };\r\n\r\n const handleRoleOpen = () => {\r\n setOpen(true);\r\n };\r\n const classes = useStyles();\r\n const globalClasses = globalStyle();\r\n return (\r\n \r\n Pickup Information\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n Role *\r\n \r\n\r\n {roles && roles.map(item => {\r\n return {item.text}\r\n })}\r\n \r\n {errors.role && errors.role === '' ? '' :\r\n \r\n {errors.role}\r\n }\r\n \r\n \r\n \r\n \r\n \r\n\r\n \r\n
\r\n
\r\n \r\n {signaturePadTitle}\r\n \r\n \r\n
\r\n\r\n
\r\n signPadRef = ref} redrawOnResize={true}\r\n height={300}/>\r\n
\r\n
\r\n {errors.signature && errors.signature === '' ? '' :\r\n \r\n {errors.signature}\r\n }\r\n
\r\n\r\n
\r\n signature\r\n
\r\n {\r\n showSignaturePad && \r\n Save signature\r\n \r\n }\r\n\r\n {\r\n showSignaturePad &&\r\n \r\n Clear\r\n \r\n }\r\n {\r\n showSignaturePad &&\r\n \r\n Undo\r\n \r\n }\r\n\r\n {\r\n !showSignaturePad && \r\n Edit\r\n \r\n }\r\n
\r\n
\r\n
\r\n
\r\n }\r\n onClick={(event) => {\r\n handleSave(event)\r\n }}/>\r\n\r\n {saving && }\r\n
\r\n \r\n \r\n \r\n
\r\n );\r\n}\r\n\r\nexport default PickupInfoForm;\r\n","import React from \"react\";\r\nimport {Dialog, DialogActions, DialogContent, DialogTitle, makeStyles, Typography} from \"@material-ui/core\";\r\nimport Controls from \"../../components/controls/Controls\";\r\nimport CheckIcon from \"@material-ui/icons/Check\";\r\nimport {CheckCircle, CloudDownloadOutlined} from \"@material-ui/icons\";\r\nimport {green, grey, red} from \"@material-ui/core/colors\";\r\nimport CancelIcon from '@material-ui/icons/Cancel';\r\n\r\nconst useStyles = makeStyles((theme) => ({\r\n titleContainer: {\r\n display: 'flex'\r\n },\r\n title: {\r\n marginLeft: theme.spacing(1)\r\n },\r\n closeButton: {\r\n position: 'absolute',\r\n right: theme.spacing(1),\r\n top: theme.spacing(1),\r\n color: theme.palette.grey[500],\r\n },\r\n}))\r\n\r\nfunction PickupSaveNotification(props) {\r\n const {\r\n showPickupSaveNotification,\r\n closePickupSaveNotification,\r\n message,\r\n success,\r\n url\r\n } = props;\r\n\r\n const handleClose = () => {\r\n closePickupSaveNotification();\r\n }\r\n\r\n const handleDownloadReportClick = (e) => {\r\n e.preventDefault();\r\n handleClose();\r\n const newWindow = window.open(url);\r\n if (newWindow) newWindow.opener = null;\r\n }\r\n\r\n const classes = useStyles();\r\n return (\r\n \r\n \r\n
\r\n\r\n \r\n Pickup status\r\n < /Typography>\r\n
\r\n\r\n
\r\n \r\n {success}\r\n
\r\n {success ? :\r\n }\r\n {message}\r\n\r\n
\r\n
\r\n \r\n {success && url ?\r\n Download}/> : null}\r\n }\r\n onClick={handleClose}\r\n text=\"Done\"\r\n />\r\n \r\n
\r\n );\r\n}\r\n\r\nexport default PickupSaveNotification;\r\n","import React, {useEffect, useState} from \"react\";\r\nimport { Container, Grid, makeStyles, Paper, Typography} from \"@material-ui/core\";\r\nimport {useParams} from 'react-router-dom'\r\nimport {connect} from \"react-redux\";\r\nimport {getInvoiceDetail, savePickupDetails} from \"../../redux/invoice-detail/InvoiceDetailServerActions\";\r\nimport InvoiceHeader from \"./InvoiceHeader\";\r\nimport InvoiceDetailLines from \"./InvoiceDetailLines\";\r\nimport CommentDialog from \"./CommentDialog\";\r\nimport {\r\n addLineComment,\r\n addLineImage, closePickupSaveNotification, handleNotificationClose, handlePickupInfoFormValueChange,\r\n removeLineImage, showNotification, updateAllLineStatus,\r\n updatePickupStatus\r\n} from \"../../redux/invoice-detail/InvoiceDetailViewActions\";\r\nimport CameraDialog from \"./CameraDialog\";\r\nimport PickupInfoForm from \"./PickupInfoForm\";\r\nimport Notification from \"../../components/Notification\";\r\nimport Controls from \"../../components/controls/Controls\";\r\nimport CheckCircleIcon from '@material-ui/icons/CheckCircle';\r\nimport {NOTIFICATION_TIME} from \"../../helpers/NotificationHelper\";\r\nimport PickupSaveNotification from \"./PickupSaveNotification\";\r\n\r\nconst useStyles = makeStyles(theme => ({\r\n root: {\r\n paddingTop: \"1rem\",\r\n paddingBottom: \"1rem\"\r\n },\r\n alreadyPickedContainer: {\r\n padding: theme.spacing(2),\r\n marginBottom: theme.spacing(2),\r\n display: \"flex\"\r\n },\r\n alreadyPickedText: {\r\n display: 'inline',\r\n marginLeft: theme.spacing(1)\r\n },\r\n pickedIcon: {\r\n color: 'green'\r\n },\r\n invoiceHeader: {\r\n marginBottom: theme.spacing(2)\r\n }, backdrop: {\r\n zIndex: theme.zIndex.drawer + 1,\r\n color: '#fff',\r\n },\r\n}))\r\n\r\nfunction ViewInvoice(props) {\r\n const {\r\n savePickupDetail,\r\n getInvoiceDetail,\r\n addLineComment,\r\n addLineImage,\r\n removeLineImage,\r\n updatePickupStatus,\r\n updateAllLineStatus,\r\n invoiceDetail,\r\n closeNotification,\r\n openNotification,\r\n handlePickupInfoFormValueChange,\r\n closePickupSaveNotification\r\n } = props;\r\n let {invoiceNumber, source} = useParams();\r\n const [editRecordId, setEditRecordId] = useState('');\r\n const [openCommentDialog, setOpenCommentDialog] = useState(false);\r\n const [comment, setComment] = useState('');\r\n const [openCameraDialog, setOpenCameraDialog] = useState(false);\r\n const [lineImage, setLineImage] = useState('');\r\n\r\n const handleSavePickupDetail = (e, formValues) => {\r\n e.preventDefault();\r\n const pickupLines = invoiceDetail.lineActions.filter(lineAction => lineAction.pickup);\r\n if (!pickupLines || pickupLines.length === 0) {\r\n openNotification('error', 'Please select at least a line to pickup');\r\n return;\r\n }\r\n savePickupDetail(invoiceDetail.lineActions, {...formValues, invoiceNumber, source}, source, invoiceNumber);\r\n }\r\n\r\n useEffect(() => {\r\n getInvoiceDetail(source, invoiceNumber)\r\n }, [getInvoiceDetail, invoiceNumber, source])\r\n\r\n const handleNotificationClose = () => {\r\n closeNotification();\r\n }\r\n\r\n const handleHeaderCheckBoxClick = (e) => {\r\n let checked = e.target.checked;\r\n updateAllLineStatus(checked);\r\n // setHeaderChecked(checked);\r\n }\r\n\r\n const handlePickupLineClick = (e, lineId) => {\r\n let checked = e.target.checked;\r\n updatePickupStatus(lineId, checked);\r\n\r\n }\r\n\r\n const handleCommentBtnClick = (e, id) => {\r\n const detailLineAction = invoiceDetail.lineActions.find(line => line.id === id);\r\n if (!detailLineAction) {\r\n return;\r\n }\r\n setEditRecordId(detailLineAction.id);\r\n setOpenCommentDialog(true);\r\n setComment(detailLineAction.comment);\r\n }\r\n\r\n const handleCommentDialogClose = () => {\r\n setOpenCommentDialog(false);\r\n }\r\n\r\n const handleCommentDialogSave = (id, comment) => {\r\n handleCommentDialogClose();\r\n addLineComment(id, comment)\r\n }\r\n\r\n const handleCommentInputChange = (e) => {\r\n setComment(e.target.value);\r\n }\r\n\r\n const getLineComment = (id) => {\r\n const detailLineAction = invoiceDetail.lineActions.find(line => line.id === id);\r\n if (!detailLineAction) return;\r\n return detailLineAction.comment;\r\n }\r\n const isPickupLineSelected = (id) => {\r\n const detailLineAction = invoiceDetail.lineActions.find(line => line.id === id);\r\n if (!detailLineAction) {\r\n return false;\r\n }\r\n return detailLineAction.pickup;\r\n }\r\n const showActionButtons = (id) => {\r\n const detailLineAction = invoiceDetail.lineActions.find(line => line.id === id);\r\n if (!detailLineAction) {\r\n return false;\r\n }\r\n return detailLineAction.showActionButtons;\r\n }\r\n\r\n const checkHeaderCheckedStatus = () => {\r\n const detailLineAction = invoiceDetail.lineActions.find(line => line.showActionButtons && !line.pickup);\r\n return !detailLineAction;\r\n }\r\n\r\n\r\n // Start camera dialog methods\r\n const handleCameraBtnClick = (e, id) => {\r\n const detailLineAction = invoiceDetail.lineActions.find(line => line.id === id);\r\n if (!detailLineAction) {\r\n return;\r\n }\r\n setEditRecordId(detailLineAction.id);\r\n setOpenCameraDialog(true);\r\n setLineImage(detailLineAction.supportingImage);\r\n }\r\n const handleCameraDialogClose = () => {\r\n setOpenCameraDialog(false);\r\n }\r\n const handleLineImageCapture = (id, image) => {\r\n addLineImage(id, image);\r\n setLineImage(image)\r\n }\r\n\r\n const getLineSupportingImage = (id) => {\r\n const detailLineAction = invoiceDetail.lineActions.find(line => line.id === id);\r\n if (!detailLineAction) {\r\n return '';\r\n }\r\n return detailLineAction.supportingImage;\r\n }\r\n // End camera dialog methods\r\n\r\n const handleFormValueChange = (name, value) => {\r\n handlePickupInfoFormValueChange(name, value);\r\n }\r\n\r\n const removeSupportingImage = (e, id) => {\r\n removeLineImage(id)\r\n }\r\n const showDetailLines = () => {\r\n return ;\r\n }\r\n\r\n const classes = useStyles();\r\n\r\n function getMainView() {\r\n if (invoiceDetail && invoiceDetail.invoiceHeader) {\r\n return (\r\n \r\n \r\n {\r\n !invoiceDetail.invoiceHeader.hasActionableLines &&\r\n
\r\n \r\n \r\n This invoice has already been\r\n picked\r\n \r\n
}\r\n
\r\n {}\r\n
\r\n
\r\n {showDetailLines()}\r\n
\r\n
\r\n {\r\n invoiceDetail && invoiceDetail.invoiceHeader.hasActionableLines &&\r\n \r\n \r\n \r\n }\r\n
\r\n );\r\n }\r\n return null;\r\n\r\n }\r\n\r\n return (\r\n \r\n {invoiceDetail.isLoading && }\r\n \r\n
\r\n {getMainView()}\r\n \r\n \r\n\r\n \r\n\r\n \r\n
\r\n\r\n
\r\n\r\n
\r\n );\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n return {\r\n invoiceDetail: state.invoiceDetail\r\n }\r\n}\r\n\r\nconst mapDispatchToProps = dispatch => {\r\n return {\r\n getInvoiceDetail: (source, invoiceNumber) => getInvoiceDetail(source, invoiceNumber),\r\n addLineComment: (id, comment) => addLineComment(id, comment),\r\n addLineImage: (id, image) => addLineImage(id, image),\r\n removeLineImage: (id) => removeLineImage(id),\r\n updatePickupStatus: (id, status) => updatePickupStatus(id, status),\r\n updateAllLineStatus: (checkedStatus) => updateAllLineStatus(checkedStatus),\r\n savePickupDetail: (pickupLines, pickupInfo, source, invoiceNumber) => savePickupDetails(pickupLines, pickupInfo, source, invoiceNumber),\r\n closeNotification: () => handleNotificationClose(),\r\n openNotification: (type, message) => showNotification(type, message),\r\n handlePickupInfoFormValueChange: (name, value) => handlePickupInfoFormValueChange(name, value),\r\n closePickupSaveNotification: () => closePickupSaveNotification()\r\n }\r\n}\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps()\r\n)(ViewInvoice);\r\n","import React, {useEffect, useState} from \"react\";\r\nimport {\r\n Avatar,\r\n CircularProgress,\r\n Grid, Link, makeStyles, Paper,\r\n Typography,\r\n} from \"@material-ui/core\";\r\nimport Controls from \"../../components/controls/Controls\";\r\nimport LockOutlinedIcon from '@material-ui/icons/LockOutlined';\r\nimport {connect} from \"react-redux\";\r\nimport {loginUser, refreshToken} from \"../../redux/login/AuthServerActions\";\r\nimport {NOTIFICATION_TIME} from \"../../helpers/NotificationHelper\";\r\nimport Notification from \"../../components/Notification\";\r\nimport {closeNotification} from \"../../redux/login/AuthViewActions\";\r\nimport {Alert} from \"@material-ui/lab\";\r\nimport {USER_KEY} from \"../../helpers/TokenHelper\";\r\n\r\nconst initialFormValue = {\r\n username: '',\r\n password: ''\r\n}\r\nconst useStyle = makeStyles((theme) => ({\r\n backgroundImage: {\r\n backgroundImage: 'url(img/login-background.png)',\r\n height: '100vh',\r\n backgroundPosition: \"center\",\r\n backgroundRepeat: 'no-repeat',\r\n backgroundSize: 'cover'\r\n },\r\n paper: {\r\n margin: theme.spacing(8, 2),\r\n padding: theme.spacing(8, 2),\r\n display: 'flex',\r\n flexDirection: 'column',\r\n alignItems: 'center',\r\n // backgroundColor: theme.palette.white,\r\n border: '1px solid grey',\r\n borderRadius: '6px',\r\n backgroundColor: theme.palette.type === 'light' ? 'rgba(255, 255, 255, 0.6)' : 'rgba(0, 0, 0, 0.4)'\r\n },\r\n avatar: {\r\n margin: theme.spacing(1),\r\n backgroundColor: theme.palette.primary.main,\r\n\r\n background: 'linear-gradient(90deg, rgba(252,205,128,1) 0%, rgba(209,122,142,1) 55%, rgba(220,159,174,1) 100%)'\r\n },\r\n form: {\r\n width: '100%', // Fix IE 11 issue.\r\n marginTop: theme.spacing(2),\r\n },\r\n submit: {\r\n margin: theme.spacing(3, 0, 2),\r\n },\r\n loginButtonWrapper: {\r\n margin: theme.spacing(1),\r\n position: 'relative',\r\n\r\n },\r\n btnProgress: {\r\n position: 'absolute',\r\n top: '50%',\r\n left: '50%',\r\n marginTop: -12,\r\n marginLeft: -12,\r\n }\r\n}));\r\n\r\nfunction LoginPage(props) {\r\n\r\n const {\r\n auth,\r\n loginUser,\r\n closeNotification,\r\n refreshToken\r\n } = props;\r\n const [formValues, setFormValues] = useState(initialFormValue);\r\n const [errors, setErrors] = useState({});\r\n const [validateOnChange, setValidateOnChange] = useState(false);\r\n\r\n useEffect(() => {\r\n let user = JSON.parse(localStorage.getItem(USER_KEY));\r\n if (user) {\r\n //Try logging in user automatically\r\n refreshToken(user.refreshToken);\r\n }\r\n }, [])\r\n\r\n const handleFormSubmit = (e) => {\r\n e.preventDefault();\r\n setValidateOnChange(true)\r\n if (!validateForm()) return;\r\n loginUser(formValues);\r\n }\r\n\r\n const handleInputChange = e => {\r\n const {name, value} = e.target;\r\n setFormValues({\r\n ...formValues,\r\n [name]: value\r\n })\r\n if (validateOnChange) {\r\n validateForm({\r\n [name]: value\r\n })\r\n }\r\n }\r\n\r\n const validateForm = (fieldValues = formValues) => {\r\n let temp = {...errors};\r\n if ('username' in fieldValues) {\r\n temp.username = fieldValues.username ? '' : 'Please enter your username';\r\n }\r\n\r\n if ('password' in fieldValues) {\r\n temp.password = fieldValues.password ? '' : 'Please enter your password';\r\n }\r\n\r\n setErrors({\r\n ...temp\r\n })\r\n\r\n if (fieldValues === formValues)\r\n return Object.values(temp).every(x => x === \"\")\r\n }\r\n\r\n function handleNotificationClose() {\r\n closeNotification();\r\n }\r\n\r\n const classes = useStyle();\r\n\r\n return (\r\n
\r\n {/*
*/}\r\n {\r\n\r\n \r\n\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n Sign in to Nexus Pickup\r\n \r\n\r\n
\r\n \r\n \r\n\r\n {auth.error &&\r\n {auth.error}\r\n }\r\n\r\n
\r\n \r\n {auth.loading && }\r\n
\r\n \r\n \r\n \r\n © {new Date().getFullYear() + ' '}\r\n NexusERP\r\n \r\n
\r\n
\r\n
\r\n }\r\n
\r\n );\r\n}\r\n\r\nconst mapStateToProps = state => {\r\n return {\r\n auth: state.auth\r\n }\r\n}\r\n\r\nconst mapDispatchToProps = dispatch => {\r\n return {\r\n loginUser: (data) => loginUser(data),\r\n closeNotification: closeNotification(),\r\n refreshToken: (refToken) => refreshToken(refToken)\r\n }\r\n}\r\n\r\nexport default connect(\r\n mapStateToProps,\r\n mapDispatchToProps()\r\n)(LoginPage);\r\n","import React from \"react\";\r\nimport {Redirect, Route} from \"react-router-dom\";\r\nimport {USER_KEY} from \"../helpers/TokenHelper\";\r\n\r\nfunction ProtectedRoute({component: Component, isUserLoggedIn, ...restOfProps}) {\r\n const isAuthenticated = () => {\r\n let user = JSON.parse(localStorage.getItem(USER_KEY));\r\n if (user) {\r\n return user.x !== '';\r\n }\r\n return false;\r\n }\r\n\r\n return (\r\n isAuthenticated ? : }\r\n />\r\n );\r\n}\r\n\r\nexport default ProtectedRoute;\r\n","import React from \"react\";\r\nimport {makeStyles, Typography} from \"@material-ui/core\";\r\nimport PageviewIcon from '@material-ui/icons/Pageview';\r\nconst useStyle = makeStyles((theme) => ({\r\n root: {\r\n display:'flex',\r\n flexDirection:'column',\r\n alignItems:'center',\r\n marginTop:'10rem',\r\n marginBottom:'10rem'\r\n }\r\n}))\r\nfunction NotFound() {\r\n const classes = useStyle();\r\n return (\r\n
\r\n \r\n Oops we cannot find this page.\r\n
\r\n );\r\n}\r\n\r\nexport default NotFound;\r\n","import {createMuiTheme} from \"@material-ui/core\";\r\nimport {green} from \"@material-ui/core/colors\";\r\n\r\nconst CustomTheme = (themeType) => createMuiTheme({\r\n palette: {\r\n type: themeType,\r\n primary: {\r\n main: (themeType === 'light') ? '#008080' : '#ffffffb3'\r\n },\r\n secondary: {\r\n main: green[500]\r\n }\r\n },\r\n\r\n})\r\n\r\n\r\nexport default CustomTheme;\r\n","import React, {useEffect, useState} from \"react\";\nimport {CssBaseline, MuiThemeProvider} from \"@material-ui/core\";\nimport NavBar from \"./components/NavBar\";\nimport InvoiceList from \"./pages/InvoiceList/InvoiceList\";\nimport {\n Route,\n Switch,\n} from \"react-router-dom\";\nimport ViewInvoice from \"./pages/ViewInvoice/ViewInvoice\";\nimport LoginPage from \"./pages/Authentication/LoginPage\";\nimport './App.css'\nimport ProtectedRoute from \"./components/ProtectedRoute\";\nimport NotFound from \"./pages/NotFound/NotFound\";\nimport CustomTheme from \"./theme/CustomTheme\";\n\nfunction App() {\n const [appTheme, setAppTheme] = useState('light');\n\n useEffect(() => {\n let theme = localStorage.getItem('appTheme');\n if (theme) {\n setAppTheme(theme);\n } else {\n localStorage.setItem('appTheme', appTheme);\n }\n\n }, [appTheme])\n const handleThemeClick = () => {\n let theme = appTheme === 'light' ? 'dark' : 'light';\n setAppTheme(theme)\n localStorage.setItem('appTheme', theme)\n }\n\n return (\n \n \n \n \n \n\n \n \n \n \n \n \n \n );\n}\n\nexport default App;\n","import {\r\n FILTER_INVOICES,\r\n INVOICE_DETAIL_REQUEST_FAILED,\r\n INVOICE_DETAIL_REQUEST_STARTED,\r\n INVOICE_DETAIL_REQUEST_SUCCESS,\r\n INVOICE_LIST_CLOSE_NOTIFICATION, INVOICE_LIST_FORM_VALUE_CHANGED,\r\n INVOICE_LIST_REQUEST_FAILED,\r\n INVOICE_LIST_REQUEST_STARTED,\r\n INVOICE_LIST_REQUEST_SUCCESS,\r\n INVOICE_SETTING_REQUEST_FAILED,\r\n INVOICE_SETTING_REQUEST_STARTED,\r\n INVOICE_SETTING_REQUEST_SUCCESS\r\n} from \"./InvoiceListConstants\";\r\n\r\nlet today = new Date();\r\n\r\nconst initialState = {\r\n invoices: [],\r\n filteredInvoices: [],\r\n isLoading: false,\r\n customers: [],\r\n searchError: false,\r\n notification: {},\r\n invoiceDetail: {\r\n loading: false,\r\n lines: []\r\n },\r\n setting: {},\r\n formValues: {\r\n startDate: new Date()\r\n }\r\n}\r\n\r\nconst reducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case INVOICE_SETTING_REQUEST_STARTED:\r\n return {\r\n ...state,\r\n isLoading: true\r\n }\r\n case INVOICE_SETTING_REQUEST_SUCCESS:\r\n return {\r\n ...state,\r\n setting: action.payload,\r\n formValues: {\r\n startDate: action.payload.startDate\r\n }\r\n }\r\n\r\n case INVOICE_SETTING_REQUEST_FAILED:\r\n return {\r\n ...state,\r\n isLoading: false,\r\n notification: {\r\n show: true,\r\n type: 'error',\r\n message: action.payload\r\n }\r\n }\r\n\r\n case INVOICE_LIST_REQUEST_STARTED:\r\n return {\r\n ...state,\r\n isLoading: true\r\n }\r\n case INVOICE_LIST_REQUEST_SUCCESS:\r\n return {\r\n ...state,\r\n isLoading: false,\r\n invoices: action.payload,\r\n filteredInvoices: action.payload,\r\n notification: {\r\n ...state.notification,\r\n show: false,\r\n }\r\n }\r\n\r\n case INVOICE_LIST_REQUEST_FAILED:\r\n return {\r\n ...state,\r\n isLoading: false,\r\n invoices: [],\r\n filteredInvoices: [],\r\n notification: {\r\n show: true,\r\n type: 'error',\r\n message: action.payload\r\n }\r\n }\r\n case FILTER_INVOICES:\r\n if (!state || !state.invoices) {\r\n return state;\r\n }\r\n let searchKey = action.payload;\r\n if (!searchKey) {\r\n return {\r\n ...state,\r\n filteredInvoices: state.invoices\r\n }\r\n }\r\n const searchedInvoices = state.invoices.filter(invoice => {\r\n return invoice.invoiceNumber.fuzzySearch(searchKey) ||\r\n invoice.customerName.fuzzySearch(searchKey) ||\r\n invoice.formattedInvoiceDate.fuzzySearch(searchKey) ||\r\n invoice.deliveryName.fuzzySearch(searchKey) ||\r\n (invoice.formattedNett && invoice.formattedNett.fuzzySearch(searchKey)) ||\r\n (invoice.detailLines && invoice.detailLines.toString().fuzzySearch(searchKey))\r\n })\r\n return {\r\n ...state,\r\n filteredInvoices: searchedInvoices\r\n }\r\n case INVOICE_LIST_CLOSE_NOTIFICATION:\r\n return {\r\n ...state,\r\n notification: {\r\n show: false,\r\n type: '',\r\n message: ''\r\n }\r\n }\r\n\r\n\r\n case INVOICE_DETAIL_REQUEST_STARTED:\r\n return {\r\n ...state,\r\n detailLine: {\r\n loading: true\r\n }\r\n }\r\n case INVOICE_DETAIL_REQUEST_SUCCESS:\r\n return {\r\n ...state,\r\n invoiceDetail: {\r\n loading: false,\r\n lines: action.payload\r\n }\r\n }\r\n\r\n case INVOICE_DETAIL_REQUEST_FAILED:\r\n return {\r\n ...state,\r\n invoiceDetail: {\r\n loading: false,\r\n lines: []\r\n },\r\n notification: {\r\n show: true,\r\n type: 'error',\r\n message: action.payload\r\n }\r\n }\r\n case INVOICE_LIST_FORM_VALUE_CHANGED: {\r\n return {\r\n ...state,\r\n formValues: {\r\n [action.payload.name]: action.payload.value\r\n }\r\n }\r\n }\r\n default:\r\n return state\r\n\r\n }\r\n}\r\nString.prototype.fuzzySearch = function (searchKey) {\r\n let hay = this.toLowerCase(),\r\n i = 0,\r\n n = -1,\r\n l;\r\n searchKey = searchKey.toLowerCase();\r\n\r\n for (; l = searchKey[i++];) {\r\n if (!~(n = hay.indexOf(l, n + 1))) return false;\r\n }\r\n\r\n return true;\r\n};\r\nexport default reducer;\r\n","import {\r\n PICKUP_DETAIL_CLOSE_NOTIFICATION,\r\n PICKUP_DETAIL_CLOSE_SAVE_NOTIFICATION,\r\n PICKUP_DETAIL_FORM_VALUE_CHANGE,\r\n PICKUP_DETAIL_OPEN_NOTIFICATION,\r\n SAVE_PICKUP_DETAIL_REQUEST_FAILED,\r\n SAVE_PICKUP_DETAIL_REQUEST_STARTED,\r\n SAVE_PICKUP_DETAIL_REQUEST_SUCCESS,\r\n VIEW_INVOICE_DETAIL_ADD_COMMENT,\r\n VIEW_INVOICE_DETAIL_ADD_LINE_IMAGE,\r\n VIEW_INVOICE_DETAIL_FAILED,\r\n VIEW_INVOICE_DETAIL_REMOVE_LINE_IMAGE,\r\n VIEW_INVOICE_DETAIL_REQUEST,\r\n VIEW_INVOICE_DETAIL_SUCCESS,\r\n VIEW_INVOICE_DETAIL_UPDATE_ALL_LINE_STATUS,\r\n VIEW_INVOICE_DETAIL_UPDATE_PICKUP_STATUS\r\n} from \"./InvoiceDetailConstants\";\r\nimport {BASE_URL1} from \"../../helpers/UrlHelper\";\r\n\r\n\r\nconst initialState = {\r\n invoiceHeader: {},\r\n details: [],\r\n lineActions: [],\r\n isLoading: false,\r\n notification: {},\r\n setting: {},\r\n roles: [],\r\n formValues: {\r\n name: '',\r\n role: '',\r\n comment: '',\r\n signature: '',\r\n },\r\n saving: false,\r\n pickupSaveNotification: {\r\n show: false,\r\n success: false,\r\n message: '',\r\n url: '',\r\n canViewProofDocument:false\r\n }\r\n\r\n}\r\n\r\nconst reducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n case VIEW_INVOICE_DETAIL_REQUEST:\r\n return {\r\n ...state,\r\n isLoading: true,\r\n formValues: {\r\n name: '',\r\n role: '',\r\n comment: '',\r\n signature: ''\r\n }\r\n }\r\n case VIEW_INVOICE_DETAIL_SUCCESS:\r\n let tmpDetailLineActions = [];\r\n if (action.payload.details) {\r\n action.payload.details.forEach(detail => {\r\n let newAction = {\r\n id: detail.id,\r\n pickup: detail.item !== \"/C\" && detail.item !== \"/F\" && !detail.alreadyAccepted,\r\n comment: detail.comment,\r\n supportingImage: detail.image,\r\n showActionButtons: detail.item !== \"/C\" && detail.item !== \"/F\" && !detail.alreadyAccepted,\r\n accepted: detail.alreadyAccepted\r\n }\r\n tmpDetailLineActions.push(newAction);\r\n })\r\n }\r\n let selectedRoleIndex = action.payload.setting.options.findIndex(option => option.isSelected);\r\n\r\n return {\r\n ...state,\r\n isLoading: false,\r\n invoiceHeader: action.payload.invoiceHeader,\r\n details: action.payload.details,\r\n lineActions: tmpDetailLineActions,\r\n setting: action.payload.setting,\r\n roles: action.payload.setting.options,\r\n formValues: {\r\n ...state.formValues,\r\n role: selectedRoleIndex !== -1 ? action.payload.setting.options[selectedRoleIndex].text : ''\r\n },\r\n notification: {\r\n show: false,\r\n type: '',\r\n message: ''\r\n }\r\n }\r\n\r\n case VIEW_INVOICE_DETAIL_FAILED:\r\n return {\r\n ...state,\r\n isLoading: false,\r\n invoices: {},\r\n notification: {\r\n show: true,\r\n type: 'error',\r\n message: action.payload\r\n }\r\n }\r\n\r\n case VIEW_INVOICE_DETAIL_ADD_COMMENT:\r\n return {\r\n ...state,\r\n lineActions: state.lineActions.map(lineAction => {\r\n if (lineAction.id === action.payload.id) {\r\n return {\r\n ...lineAction,\r\n comment: action.payload.comment\r\n }\r\n }\r\n return lineAction\r\n })\r\n }\r\n case VIEW_INVOICE_DETAIL_ADD_LINE_IMAGE:\r\n return {\r\n ...state,\r\n lineActions: state.lineActions.map(lineAction => {\r\n if (lineAction.id === action.payload.id) {\r\n return {\r\n ...lineAction,\r\n supportingImage: action.payload.image\r\n }\r\n }\r\n return lineAction\r\n })\r\n }\r\n\r\n case VIEW_INVOICE_DETAIL_REMOVE_LINE_IMAGE:\r\n return {\r\n ...state,\r\n lineActions: state.lineActions.map(lineAction => {\r\n if (lineAction.id === action.payload.id) {\r\n return {\r\n ...lineAction,\r\n supportingImage: ''\r\n }\r\n }\r\n return lineAction\r\n })\r\n }\r\n\r\n case VIEW_INVOICE_DETAIL_UPDATE_PICKUP_STATUS:\r\n return {\r\n ...state,\r\n lineActions: state.lineActions.map(lineAction => {\r\n if (lineAction.id === action.payload.id) {\r\n return {\r\n ...lineAction,\r\n pickup: action.payload.status\r\n }\r\n }\r\n return lineAction\r\n })\r\n }\r\n\r\n case VIEW_INVOICE_DETAIL_UPDATE_ALL_LINE_STATUS:\r\n return {\r\n ...state,\r\n lineActions: state.lineActions.map(lineAction => {\r\n if (lineAction.showActionButtons) {\r\n return {\r\n ...lineAction,\r\n pickup: action.payload.checkedStatus\r\n }\r\n }\r\n return lineAction\r\n })\r\n }\r\n case SAVE_PICKUP_DETAIL_REQUEST_STARTED:\r\n return {\r\n ...state,\r\n saving: true,\r\n notification: {\r\n ...state.notification,\r\n show: false\r\n }\r\n }\r\n\r\n case SAVE_PICKUP_DETAIL_REQUEST_SUCCESS:\r\n return {\r\n ...state,\r\n saving: false,\r\n pickupSaveNotification: {\r\n show: true,\r\n success: true,\r\n message: action.payload.message,\r\n canViewProofDocument: action.payload.canViewProofDocument,\r\n url: action.payload.canViewProofDocument ? `${BASE_URL1}${action.payload.url}` : \"\",\r\n }\r\n\r\n }\r\n case SAVE_PICKUP_DETAIL_REQUEST_FAILED:\r\n return {\r\n ...state,\r\n saving: false,\r\n pickupSaveNotification: {\r\n ...state.pickupSaveNotification,\r\n show: true,\r\n success: false,\r\n message: action.payload,\r\n }\r\n }\r\n\r\n case PICKUP_DETAIL_CLOSE_NOTIFICATION:\r\n return {\r\n ...state,\r\n notification: {\r\n ...state.notification,\r\n show: false,\r\n message: ''\r\n }\r\n }\r\n\r\n case PICKUP_DETAIL_OPEN_NOTIFICATION:\r\n return {\r\n ...state,\r\n notification: {\r\n ...state.notification,\r\n show: true,\r\n type: action.payload.type,\r\n message: action.payload.message\r\n }\r\n }\r\n\r\n case PICKUP_DETAIL_FORM_VALUE_CHANGE:\r\n return {\r\n ...state,\r\n formValues: {\r\n ...state.formValues,\r\n [action.payload.name]: action.payload.value\r\n }\r\n }\r\n case PICKUP_DETAIL_CLOSE_SAVE_NOTIFICATION:\r\n return {\r\n ...state,\r\n pickupSaveNotification: {\r\n ...state.pickupSaveNotification,\r\n show: false,\r\n message: '',\r\n\r\n }\r\n }\r\n default:\r\n return state\r\n\r\n }\r\n}\r\n\r\nexport default reducer;\r\n","import {\r\n SEARCH_CUSTOMERS_BY_CODE_REQUEST_FAILED,\r\n SEARCH_CUSTOMERS_BY_CODE_REQUEST_SUCCESS,\r\n SEARCH_CUSTOMERS_BY_NAME_REQUEST_FAILED,\r\n SEARCH_CUSTOMERS_BY_NAME_REQUEST_SUCCESS\r\n} from \"./CustomerConstants\";\r\n\r\nconst initialState = {\r\n customersByCode: [],\r\n customersByName: [],\r\n searchError: false\r\n}\r\n\r\nconst reducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n\r\n case SEARCH_CUSTOMERS_BY_CODE_REQUEST_SUCCESS:\r\n return {\r\n ...state,\r\n customersByCode: action.payload,\r\n searchError: false\r\n }\r\n\r\n case SEARCH_CUSTOMERS_BY_CODE_REQUEST_FAILED:\r\n return {\r\n ...state,\r\n customersByCode: [],\r\n searchError: true\r\n }\r\n\r\n case SEARCH_CUSTOMERS_BY_NAME_REQUEST_SUCCESS:\r\n return {\r\n ...state,\r\n customersByName: action.payload,\r\n searchError: false\r\n }\r\n\r\n case SEARCH_CUSTOMERS_BY_NAME_REQUEST_FAILED:\r\n return {\r\n ...state,\r\n customersByName: [],\r\n searchError: true\r\n }\r\n\r\n default:\r\n return state\r\n\r\n }\r\n}\r\n\r\nexport default reducer;\r\n","import {\r\n LOGIN_REQUEST_FAILED,\r\n LOGIN_REQUEST_STARTED,\r\n LOGIN_REQUEST_SUCCESS, LOGOUT_USER,\r\n} from \"./AuthConstants\";\r\nimport {USER_KEY} from \"../../helpers/TokenHelper\";\r\n\r\nconst initialState = {\r\n error: '',\r\n loading: false,\r\n user: {},\r\n notification: {}\r\n}\r\n\r\nconst reducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n\r\n case LOGIN_REQUEST_STARTED:\r\n return {\r\n ...state,\r\n loading: true\r\n }\r\n case LOGIN_REQUEST_SUCCESS:\r\n\r\n localStorage.setItem(USER_KEY, JSON.stringify(action.payload));\r\n\r\n return {\r\n ...state,\r\n user: action.payload,\r\n loading: false\r\n }\r\n case LOGIN_REQUEST_FAILED:\r\n return {\r\n ...state,\r\n user: {},\r\n loading: false,\r\n error: action.payload\r\n }\r\n\r\n case LOGOUT_USER:\r\n localStorage.removeItem('user');\r\n return {\r\n ...state,\r\n user: {},\r\n loading: false\r\n }\r\n\r\n\r\n default:\r\n return state\r\n\r\n }\r\n}\r\n\r\nexport default reducer;\r\n","import {\r\n SEARCH_CUSTOMER_ORDER_NUMBER_REQUEST_FAILED,\r\n SEARCH_CUSTOMER_ORDER_NUMBER_REQUEST_SUCCESS\r\n} from \"./CustomerOrderNumberConstants\";\r\n\r\nconst initialState = {\r\n orderNumbers: [],\r\n searchError: false\r\n}\r\n\r\nconst reducer = (state = initialState, action) => {\r\n switch (action.type) {\r\n\r\n case SEARCH_CUSTOMER_ORDER_NUMBER_REQUEST_SUCCESS:\r\n return {\r\n ...state,\r\n orderNumbers: action.payload,\r\n searchError: false\r\n }\r\n\r\n case SEARCH_CUSTOMER_ORDER_NUMBER_REQUEST_FAILED:\r\n return {\r\n ...state,\r\n orderNumbers: [],\r\n searchError: true\r\n }\r\n default:\r\n return state\r\n\r\n }\r\n}\r\n\r\nexport default reducer;\r\n","import {combineReducers} from \"redux\";\r\nimport InvoiceListReducer from \"./invoice-list/InvoiceListReducer\";\r\nimport InvoiceDetailReducer from \"./invoice-detail/InvoiceDetailReducer\";\r\nimport CustomerReducer from \"./customer/CustomerReducer\";\r\nimport AuthReducer from \"./login/AuthReducer\";\r\nimport CustomerOrderNumberReducer from \"./customer-order-number/CustomerOrderNumberReducer\";\r\n\r\n\r\nconst rootReducer = combineReducers({\r\n invoiceList: InvoiceListReducer,\r\n invoiceDetail: InvoiceDetailReducer,\r\n customers: CustomerReducer,\r\n auth: AuthReducer,\r\n customerOrderNumbers: CustomerOrderNumberReducer\r\n})\r\n\r\nexport default rootReducer;\r\n","import {applyMiddleware, createStore} from \"redux\";\r\nimport rootReducer from \"./RootReducer\";\r\nimport thunk from \"redux-thunk\";\r\nimport {setupInterceptors} from \"./Api\";\r\n\r\nconst store = createStore(\r\n rootReducer,\r\n applyMiddleware(thunk)\r\n);\r\nsetupInterceptors(store);\r\nexport default store;\r\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport App from './App';\nimport {Provider} from 'react-redux';\nimport store from \"./redux/Store\";\nimport {Router} from 'react-router-dom'\nimport history from \"./history/History\";\nimport {BASE_SUBDOMAIN} from \"./helpers/UrlHelper\";\n\n\nReactDOM.render(\n \n \n \n \n \n \n ,\n document.getElementById('root')\n);\n\nif (!process.env.NODE_ENV || process.env.NODE_ENV === 'development') {\n if (module.hot) {\n module.hot.accept();\n }\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\n// reportWebVitals(console.log);\n"],"sourceRoot":""}