{"version":3,"sources":["actions/CustomerPortalAction.js","actions/API_LOCATIONS.js","stores/CustomerPortalStore.js","components/Customer/Common/Loading.js","authenticationService.js","actions/error_icon.svg","actions/success_icon.svg","components/Customer/constants.js","actions/warning_icon.svg","components/Customer/route.js","components/Customer/HeaderFooter/HeaderAndFooter.js","components/Customer/HeaderFooter/Header.js","components/Customer/OrderEntry/OrderEntry.js","components/Customer/OrderEntry/ItemSearchInput.js","components/Customer/HeaderFooter/HeaderLink.js","components/Customer/HeaderFooter/Footer.js","components/Customer/Home.js","dispatcher/CustomerPortalDispatcher.js","components/Customer lazy /^.*$/ groupOptions: {} namespace object"],"names":["icons","success","SUCCESS_ICON","error","ERROR_ICON","warning","WARNING_ICON","toastOption","toast","position","showConfirmButton","timer","customClass","container","onBeforeOpen","window","translate","addEventListener","Swal","stopTimer","resumeTimer","alertType","info","defaultMsg","defaultOptions","extraOptions","autoRedirect","afterAction","undefined","displayGeneralMessage","msg","title","type","allowDismiss","message","content","options","html","allowOutsideClick","allowEscapeKey","allowEnterKey","showCloseButton","confirmButtonColor","fire","then","result","location","href","origin","CustomerPortalAction","data","CustomerPortalDispatcher","dispatch","actionType","value","key","obj","Object","keys","map","k","encodeURIComponent","join","page","user","CustomerPortalStore","getCurrentUserName","name","localStorage","currentUser","fetch","method","headers","body","JSON","stringify","response","status","Error","catch","console","isLoggedIn","json","redirectUrl","features","parse","getItem","sessionStorage","userName","header","headerInfo","login","language","input","displayModal","errors","setItem","secretKey","token","Promise","resolve","reject","username","email","params","url","API","text","imageUrl","imageWidth","imageHeight","removeItem","authenticationService","query","convertObjectToQueryString","person","arcustomer","arCustomerNo","retry","customerActivity","lastStatementDate","year","Date","getFullYear","graphData","label","lastLastYearTotalInvoices","replace","lastYearTotalInvoices","yearToDateTotalInvoices","e","document","getElementById","currencySymbol","fetchActivityCustomerActivity","this","show","perpage","sortBy","descending","transactions","settings","getAccountActivitySetting","customerNumber","getCustomerNumber","template","transactionData","setTimeout","className","elements","dataType","dataName","columns","width","fields","arr","_","forEach","transactiontypes","item","push","transactionSettings","transactiontype","getTransactionsUpdateDate","viewby","doctype","fetchOrderByOrder","fetchOrderByItem","currentPage","ordersPerPage","orderData","docfilter","results","types","orderType","orderSettings","docNo","getOrderUpdateDate","orderNo","docType","docStatus","quoteNo","quoteNumber","merchantBilling","docno","transactionDetail","invoiceno","documentNumber","documentType","reset","documents","useStoredCard","surchargeMessage","makePaymentMessage","maxPaymentAmount","paymentType","supportedPaymentTypes","allowPayments","allowOrderPayments","allowQuotePayments","allowUnallocatedPayments","customerCurrency","source","selectAll","paymentCards","id","cardId","transaction","customerInfo","accountInfo","inputs","phoneNumber","errorMessage","popup","mixin","icon","customerno","trim","documentNo","zipCode","postalCode","invoiceInfo","transactionInfo","Status","errorCode","formattedAmount","TransactionDetails","DocumentNo","receiptInfo","cardname","CardName","cardno","CardNumber","docamount","Amount","docreference","TransactionId","doccode","AuthCode","ArCustomerNo","invoiceamount","merchantId","amount","currency","orderId","customer","Currency","Reference","ARCustomerNo","log","_user","_header","_language","_errors","_notifications","_broadcastStatus","_salespersonCustomer","_cusActivity","_transactionData","_transactionSettings","_transactionDate","_orderData","_orderSettings","_orderDate","_orderDrillDown","_orderDetails","_transactionDetail","_merchantBilling","_payAccountInfo","total","checked","checkedDocuments","_payAccountDetails","_prepaymentDocs","_paymentCards","_accountInfo","_customerInfo","_recentInvoice","_recentReceipt","_invoiceError","_invoiceInfo","_invoiceReceipt","_customization","_customizationName","dispatchToken","register","dispatcherCallback","bind","emit","callback","on","removeListener","newLogin","userType","logo","salesperson","companyName","erp","allowPartialPayment","broadcastStartDate","broadcastExpiryDate","broadcastTitle","broadcastMessage","siteSettings","find","filter","action","currentLangeuage","clearAllData","rememberMe","ready","doc","elem","selectedCurrency","currencyCode","amountDue","currentAmt","parseFloat","payable","paymentCard","index","findIndex","curIndex","defaultCard","splice","paymentRates","customerNo","reference","emitChange","EventEmitter","Loading","props","noSpace","disableAll","React","Component","defaultProps","module","exports","TRANSACTION_TYPE","REGISTRATION_FIELD","GRAPH_DATASET_OPT","barPercentage","borderWidth","fontFamily","hoverBackgroundColor","hoverBorderColor","backgroundColor","borderColor","GRAPH_OPTION","plugins","datalabels","display","align","anchor","offset","formatter","context","responsive","hoverMode","stacked","legend","scales","xAxes","gridLines","drawOnChartArea","offsetGridLines","scaleLabel","labelString","fontSize","yAxes","integersOnly","override","labels","ticks","beginAtZero","N49LOGO","FEATURES_ROUTE_MAPPING","AccountActivity","pathName","img","ViewTransactions","ClickToPay","ViewOrders","StoredCards","PayAccount","Prepayment","ContactUs","OrderEntry","CARD_IMG_LIST","$","require","routeMapping","path","filePath","desc","canAnonymous","activity","payment","prepayment","orders","manageCredt","contactus","password","myAccount","resetpassword","orderDetails","receipt","slack","quickpay","orderentry","superuser","home","getRouteInfo","target","CustomRouter","state","activeRoute","baseTitle","hasError","isLoading","history","validateLogin","getCustomizationList","customization","cus","displayName","notExact","setState","anonymousRoutes","route","routeName","split","pathname","Array","openpages","pageID","getTime","client","routePath","featureList","featureKey","findKey","indexOf","shift","remove","prevProps","prevState","routes","refs","sendErrorLog","unlisten","timeout","enter","exit","classNames","onClick","Suspense","fallback","i","ref","exact","component","lazy","withRouter","HeaderAndFooter","_onChange","addChangeListener","getHeaderInfo","getCurrentUserType","setClientNumber","fetchHeaderInfo","removeChangeListener","logout","switchLanguage","customizations","logoURL","hideMenu","displayLogin","children","address","phone","Header","isDropDownToggled","isMenuActive","activeSubMenu","toggleMenu","autoCloseDropDown","event","removeEventListener","menuDiv","getComputedStyle","homelink","to","src","alt","data-toggle","aria-haspopup","aria-expanded","LANGUAGES","activateDropDown","aria-hidden","data-translation","customerName","translationTag","triggerSubMenu","onSubmit","shipViaCodes","selectedShipViaCode","selectedShipViaCodeName","shipToLocations","selectedShipToLocation","shipToName","address1","address2","country","city","stateOrProvince","zipOrPostalCode","poNumber","requestDeliveryDate","comments","disabled","open","items","orderTypes","allowMiscCharge","allowPriceOverride","noteToCustomer","showItemDetails","hasShowItemDetails","shipVia","confirmToClose","isFetching","translation","getLanguage","handleInputChange","order","description","shipViaCode","shipToCode","shipToAddress1","shipToAddress2","shipToCity","shipToStateOrProv","shipToCountry","shipToPostalCode","shipToPhone","shipToEmail","itemTotal","reduce","prev","current","extendedPrice","formatNum","miscCharge","orderTotal","shippingInstructionsComment","detail","itemNumber","itemNo","quantityOrdered","quantity","unitOfMeasure","uom","unitPrice","price","comment","lineType","length","orderNumber","orderEntry","orderSuccess","focusConfirm","showCancelButton","reverseButtons","cancelButtonText","close","confirmButtonText","viewOrPrint","confirm","pleaseSelect","code","selectedIndex","element","setSelectedShipViaCode","shipToLocation","setSelectedShipToLocation","keyCode","match","overwritePrice","forceUpdate","delay","itemPricing","areYouSure","cancelButtonColor","yesDelete","array","areYouSureClearOrder","yes","cancel","additionalInfos","imageUrls","uoms","addBtnTxt","hide","additionalInfosTxt","uomTxt","uomSelectionVisible","priceTxt","imageSlide","imageIndicators","images","active","targetPriceElement","targetPriceInputElement","targetExtendedPriceElement","targetActiveElements","prop","val","selected","isExisting","uri","details","UOMs","uoMs","popupWidth","querySelector","offsetWidth","showItemDetail","fetchPricing","clickConfirm","onOpen","select","preConfirm","get","concat","fetchPricingWithDetails","focus","datepicker","format","autoclose","startDate","toLocaleDateString","handleChange","tooltip","onbeforeunload","billingAddress","getERP","onChange","handleShipToLocationChange","entry","maxLength","onBlur","toggle","autoComplete","onKeyDown","handleDeliverDateChange","placeholder","handleShipViaCodeChange","rows","defaultValue","onFocus","handlePricingChange","overWriteUnitPrice","searchItem","onInputChange","subTotal","footer","clear","opt","submit","prompt","when","areYouSureToLeave","data-placement","ItemSearchInput","useRef","useState","setIsLoading","setOptions","useEffect","enterPressed","noResult","isButtonPressed","isSelected","handleSearch","useCallback","isOptionEmpty","encodeURI","other","itemType","filterBy","option","toLowerCase","labelKey","onSearch","promptText","flip","highlightOnlyResult","selectHintOnEnter","useCache","renderMenu","filteredOptions","menuProps","emptyLabel","getInput","HeaderLink","activeClassName","Footer","style","marginTop","rel","startsWith","Home","currentDate","lastUpdate","yesterday","Dispatcher","webpackAsyncContext","req","__webpack_require__","o","ids","all","slice","t"],"mappings":"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,eAAeS,QAAQ,SAASoV,GAChChX,aAAa4B,QAAQ,YAAatB,KAAKC,UAAUwW,IACjDpa,OAAOE,iBAAiB,gBAAgB,SAACud,GACvC,GAAGpa,aAAa+W,UAAU,CACxB,IAAIA,EAAa/W,aAAa+W,UAAYzW,KAAKW,MAAMjB,aAAa+W,WAAa,GAC3EC,EAAS7V,eAAe6V,OACzBD,EAAUC,WAAgBD,EAAUC,GACnC3X,OAAOC,KAAKyX,GAAWsI,QAAU,GACnCrf,aAAa2C,WAAW,aACxB3C,aAAa4B,QAAQ,aAAa,IAAI0B,OAEtCtD,aAAa4B,QAAQ,YAAatB,KAAKC,UAAUwW,QApCxC,E,sEA0Cf,OACI,yBAAK/R,UAAU,mBACX,kBAAC,IAAD,KACI,kBAAC,UAAD,KACI,kBAAC,UAAD,a,GA/CU0L,IAAMC,a,iCCTxC,aACe,QAAI+X,c,0CCDnB,IAAInpB,EAAM,CACT,oCAAqC,CACpC,IACA,EACA,EACA,EACA,IAED,uCAAwC,CACvC,IACA,EACA,EACA,EACA,IAED,sCAAuC,CACtC,IACA,EACA,EACA,EACA,IAED,yCAA0C,CACzC,IACA,EACA,EACA,EACA,IAED,6CAA8C,CAC7C,IACA,EACA,EACA,EACA,IAED,gDAAiD,CAChD,IACA,EACA,EACA,EACA,IAED,kCAAmC,CAClC,IACA,EACA,EACA,EACA,IAED,qCAAsC,CACrC,IACA,EACA,EACA,EACA,IAED,oCAAqC,CACpC,IACA,EACA,KAED,uCAAwC,CACvC,IACA,EACA,KAED,6BAA8B,CAC7B,IACA,EACA,EACA,EACA,KAED,gCAAiC,CAChC,IACA,EACA,EACA,EACA,KAED,qBAAsB,CACrB,IACA,EACA,KAED,wBAAyB,CACxB,IACA,EACA,KAED,gDAAiD,CAChD,IACA,EACA,EACA,KAED,mDAAoD,CACnD,IACA,EACA,EACA,KAED,sCAAuC,CACtC,IACA,EACA,KAED,0BAA2B,CAC1B,IACA,EACA,EACA,EACA,IAED,6BAA8B,CAC7B,IACA,EACA,EACA,EACA,IAED,iCAAkC,CACjC,IACA,EACA,EACA,IAED,oCAAqC,CACpC,IACA,EACA,EACA,IAED,oBAAqB,CACpB,IACA,EACA,KAED,uBAAwB,CACvB,IACA,EACA,KAED,8BAA+B,CAC9B,IACA,EACA,KAED,mBAAoB,CACnB,IACA,GAED,sBAAuB,CACtB,IACA,GAED,kBAAmB,CAClB,IACA,EACA,EACA,IAED,qBAAsB,CACrB,IACA,EACA,EACA,IAED,wBAAyB,CACxB,IACA,EACA,IAED,2BAA4B,CAC3B,IACA,EACA,IAED,8BAA+B,CAC9B,IACA,EACA,KAED,wBAAyB,CACxB,IACA,EACA,IAED,2BAA4B,CAC3B,IACA,EACA,IAED,sBAAuB,CACtB,IACA,EACA,IAED,yBAA0B,CACzB,IACA,EACA,IAED,uBAAwB,CACvB,IACA,GAED,wBAAyB,CACxB,IACA,GAED,2BAA4B,CAC3B,IACA,GAED,wBAAyB,CACxB,IACA,GAED,2BAA4B,CAC3B,IACA,GAED,iCAAkC,CACjC,IACA,GAED,oCAAqC,CACpC,IACA,GAED,4BAA6B,CAC5B,IACA,GAED,+BAAgC,CAC/B,IACA,GAED,SAAU,CACT,IACA,GAED,YAAa,CACZ,IACA,GAED,iCAAkC,CACjC,IACA,EACA,IAED,oCAAqC,CACpC,IACA,EACA,IAED,4BAA6B,CAC5B,IACA,EACA,IAED,+BAAgC,CAC/B,IACA,EACA,IAED,wBAAyB,CACxB,IACA,EACA,IAED,2BAA4B,CAC3B,IACA,EACA,IAED,4BAA6B,CAC5B,IACA,EACA,IAED,+BAAgC,CAC/B,IACA,EACA,IAED,oCAAqC,CACpC,IACA,EACA,IAED,uCAAwC,CACvC,IACA,EACA,IAED,gCAAiC,CAChC,IACA,EACA,IAED,mCAAoC,CACnC,IACA,EACA,IAED,oCAAqC,CACpC,IACA,EACA,IAED,uCAAwC,CACvC,IACA,EACA,IAED,yBAA0B,CACzB,IACA,EACA,IAED,4BAA6B,CAC5B,IACA,EACA,IAED,wCAAyC,CACxC,IACA,EACA,EACA,IAED,2CAA4C,CAC3C,IACA,EACA,EACA,IAED,iBAAkB,CACjB,IACA,EACA,IAED,oBAAqB,CACpB,IACA,EACA,IAED,YAAa,CACZ,IACA,EACA,KAED,eAAgB,CACf,IACA,EACA,KAED,+BAAgC,CAC/B,IACA,GAED,kCAAmC,CAClC,IACA,GAED,0BAA2B,CAC1B,IACA,GAED,6BAA8B,CAC7B,IACA,GAED,0BAA2B,CAC1B,IACA,EACA,IAED,6BAA8B,CAC7B,IACA,EACA,IAED,mCAAoC,CACnC,IACA,EACA,EACA,EACA,EACA,IAED,sCAAuC,CACtC,IACA,EACA,EACA,EACA,EACA,IAED,+BAAgC,CAC/B,IACA,EACA,KAED,kCAAmC,CAClC,IACA,EACA,KAED,yBAA0B,CACzB,IACA,EACA,EACA,EACA,IAED,4BAA6B,CAC5B,IACA,EACA,EACA,EACA,IAED,+BAAgC,CAC/B,IACA,EACA,KAED,kCAAmC,CAClC,IACA,EACA,KAED,mCAAoC,CACnC,IACA,EACA,EACA,EACA,EACA,IAED,sCAAuC,CACtC,IACA,EACA,EACA,EACA,EACA,IAED,0BAA2B,CAC1B,IACA,EACA,IAED,6BAA8B,CAC7B,IACA,EACA,IAED,oCAAqC,CACpC,IACA,EACA,KAED,uCAAwC,CACvC,IACA,EACA,KAED,gCAAiC,CAChC,IACA,EACA,IAED,mCAAoC,CACnC,IACA,EACA,IAED,oCAAqC,CACpC,IACA,EACA,KAED,uCAAwC,CACvC,IACA,EACA,KAED,gCAAiC,CAChC,IACA,EACA,IAED,mCAAoC,CACnC,IACA,EACA,IAED,qCAAsC,CACrC,IACA,EACA,IAED,wCAAyC,CACxC,IACA,EACA,IAED,4BAA6B,CAC5B,IACA,EACA,KAED,+BAAgC,CAC/B,IACA,EACA,KAED,cAAe,CACd,IACA,EACA,IAED,iBAAkB,CACjB,IACA,EACA,IAED,oCAAqC,CACpC,IACA,EACA,KAED,uCAAwC,CACvC,IACA,EACA,KAED,uCAAwC,CACvC,IACA,EACA,KAED,0CAA2C,CAC1C,IACA,EACA,KAED,gCAAiC,CAChC,IACA,EACA,EACA,KAED,mCAAoC,CACnC,IACA,EACA,EACA,KAED,gCAAiC,CAChC,IACA,EACA,KAED,mCAAoC,CACnC,IACA,EACA,KAED,gCAAiC,CAChC,IACA,EACA,KAED,mCAAoC,CACnC,IACA,EACA,KAED,sCAAuC,CACtC,IACA,EACA,EACA,IAED,yCAA0C,CACzC,IACA,EACA,EACA,IAED,iCAAkC,CACjC,IACA,EACA,KAED,oCAAqC,CACpC,IACA,EACA,KAED,wCAAyC,CACxC,IACA,EACA,EACA,GACA,KAED,2CAA4C,CAC3C,IACA,EACA,EACA,GACA,KAED,wCAAyC,CACxC,IACA,EACA,EACA,KAED,2CAA4C,CAC3C,IACA,EACA,EACA,KAED,mCAAoC,CACnC,IACA,EACA,EACA,IAED,sCAAuC,CACtC,IACA,EACA,EACA,IAED,mCAAoC,CACnC,IACA,EACA,EACA,IAED,sCAAuC,CACtC,IACA,EACA,EACA,IAED,yCAA0C,CACzC,IACA,EACA,KAED,4CAA6C,CAC5C,IACA,EACA,KAED,0CAA2C,CAC1C,IACA,EACA,EACA,IAED,6CAA8C,CAC7C,IACA,EACA,EACA,IAED,8CAA+C,CAC9C,IACA,EACA,IAED,iDAAkD,CACjD,IACA,EACA,IAED,yCAA0C,CACzC,IACA,EACA,KAED,4CAA6C,CAC5C,IACA,EACA,KAED,2CAA4C,CAC3C,IACA,EACA,KAED,8CAA+C,CAC9C,IACA,EACA,KAED,cAAe,CACd,IACA,GAED,iBAAkB,CACjB,IACA,GAED,UAAW,CACV,IACA,GAED,aAAc,CACb,IACA,IAGF,SAASopB,EAAoBC,GAC5B,IAAIC,EAAoBC,EAAEvpB,EAAKqpB,GAC9B,OAAO7mB,QAAQC,UAAUxD,MAAK,WAC7B,IAAIsF,EAAI,IAAIpD,MAAM,uBAAyBkoB,EAAM,KAEjD,MADA9kB,EAAEoc,KAAO,mBACHpc,KAIR,IAAIilB,EAAMxpB,EAAIqpB,GAAMngB,EAAKsgB,EAAI,GAC7B,OAAOhnB,QAAQinB,IAAID,EAAIE,MAAM,GAAG1pB,IAAIspB,EAAoB/kB,IAAItF,MAAK,WAChE,OAAOqqB,EAAoBK,EAAEzgB,EAAIsgB,EAAI,OAGvCJ,EAAoBrpB,KAAO,WAC1B,OAAOD,OAAOC,KAAKC,IAEpBopB,EAAoBlgB,GAAK,IACzBoI,EAAOC,QAAU6X","file":"static/js/154.79b9177c.chunk.js","sourcesContent":["import CustomerPortalDispatcher from '../dispatcher/CustomerPortalDispatcher';\r\nimport CustomerPortalStore from '../stores/CustomerPortalStore';\r\n\r\nimport authenticationService from '../authenticationService';\r\n\r\nimport Swal from 'sweetalert2';\r\nimport _ from 'lodash';\r\nimport * as API from './API_LOCATIONS';\r\n\r\nimport SUCCESS_ICON from './success_icon.svg';\r\nimport ERROR_ICON from './error_icon.svg';\r\nimport WARNING_ICON from './warning_icon.svg';\r\n\r\nconst icons = {\r\n    success: SUCCESS_ICON,\r\n    error: ERROR_ICON,\r\n    warning: WARNING_ICON\r\n}\r\nvar toastOption = {\r\n    toast: true,\r\n    position: 'top',\r\n    showConfirmButton: false,\r\n    timer: 3000,\r\n    customClass: {\r\n        container: 'toast-alert'\r\n    },\r\n    onBeforeOpen: (toast) => {\r\n        window.translate();\r\n        toast.addEventListener('mouseenter', Swal.stopTimer)\r\n        toast.addEventListener('mouseleave', Swal.resumeTimer)\r\n    }\r\n};\r\n\r\nconst alertType = {\r\n    success: 'success',\r\n    error: 'danger',\r\n    info: 'primary'\r\n};\r\n\r\nfunction displayToast(type, msg) {\r\n    toastOption.customClass.popup = ('alert alert-' + alertType[type]);\r\n    let Toast = Swal.mixin(toastOption);\r\n    Toast.fire({\r\n        icon: type,\r\n        title: `<span data-translation=\"general.error.${msg}\">${msg}</span>`,\r\n    });\r\n}\r\n\r\nconst defaultTitle = 'ERROR';\r\nconst defaultMsg = \"Something unexpected has occurred, please try again later.\";\r\nconst defaultOptions = {\r\n    extraOptions: {},\r\n    autoRedirect: true,\r\n    afterAction: undefined\r\n}\r\nfunction displayGeneralMessage(msg = defaultMsg, title = defaultTitle, type = 'error', allowDismiss = true, extraOptions = defaultOptions) {\r\n    if (msg.message && typeof msg.message === 'string') msg = msg.message;\r\n    let content = `<div class='swal2-custom-container'>`;\r\n    if (icons[type]) {\r\n        content += `<div class='swal2-header-section d-flex align-items-center'>\r\n                        <img class='img-fluid swal2-img' src=\"${icons[type]}\"}/>\r\n                        <div class='swal-2-title'><b>${title}</b></div>\r\n                    </div>`\r\n    } else {\r\n        content += `<div class='text-center'>\r\n                        <p class='swal-2-title'><b>${title}</b></p>\r\n                    </div>`\r\n    }\r\n    content += `<span data-translation=\"general.error.${msg}\">${msg}</span>\r\n             </div>`;\r\n    let options = {\r\n        html: (content),\r\n        allowOutsideClick: allowDismiss,\r\n        allowEscapeKey: allowDismiss,\r\n        allowEnterKey: allowDismiss,\r\n        showCloseButton: true,\r\n        showConfirmButton: allowDismiss,\r\n        confirmButtonColor: '#3B555B',\r\n        onBeforeOpen: () => {\r\n            window.translate();\r\n        }\r\n    };\r\n    if (options.extraOptions) options = { ...options, ...extraOptions.extraOptions };\r\n    Swal.fire(options).then(function (result) {\r\n        if (extraOptions.autoRedirect) window.location.href = window.location.origin;\r\n        if (extraOptions.afterAction && typeof options.afterAction == 'function') options.afterAction()\r\n        return null;\r\n    });\r\n}\r\nclass CustomerPortalAction {\r\n    displayGeneralMessage(msg = defaultMsg, title = defaultTitle, type = 'error', allowDismiss = true, options = defaultOptions) {\r\n        displayGeneralMessage(msg, title, type, allowDismiss, options);\r\n    }\r\n    submitArticle(data) {\r\n        CustomerPortalDispatcher.dispatch({\r\n            actionType: 'SUBMIT_ARTICLE',\r\n            value: data\r\n        });\r\n\r\n        CustomerPortalDispatcher.dispatch({\r\n            actionType: 'APPROVE_ARTICLE',\r\n            value: data\r\n        });\r\n    }\r\n    removeArticle(key) {\r\n        CustomerPortalDispatcher.dispatch({\r\n            actionType: 'REMOVE_ARTICLE',\r\n            value: key\r\n        });\r\n    }\r\n    // ------------------------------- General tab actions -------------------------------\r\n    // data handling functions\r\n    convertObjectToQueryString(obj) {\r\n        return Object.keys(obj).map(function (k) {\r\n            return encodeURIComponent(k) + '=' + encodeURIComponent(obj[k])\r\n        }).join('&');\r\n    }\r\n    sendErrorLog(page,error,info){\r\n      let user = CustomerPortalStore.getCurrentUserName();\r\n      let msg = `user: \"${user}\", page: \"${window.origin + page}\", errorType: \"${error.name}\", error: \"${error.message}\"`;\r\n      let url = API.HOST + '/api/log';\r\n      if(!localStorage.currentUser) return false\r\n      fetch(url, {\r\n          method: 'post',\r\n          headers: {\r\n            'Accept': 'application/json',\r\n            'Content-Type': 'application/json',\r\n          },\r\n          body: JSON.stringify(msg),\r\n      }).then((response) => {\r\n          if (response.status == 500)\r\n              throw new Error(response.status)\r\n      }).catch((error) => {\r\n          console.error(`fetch error: ${error}`);\r\n      });\r\n    }\r\n    // Get General information, such as topic/users requirements\r\n    fetchHeaderInfo(isLoggedIn) {\r\n        fetch(API.HOST + API.FETCH_HEADER_INFO, {}).then((response) => {\r\n            if (response.status !== 200) {\r\n                throw new Error(response.status)\r\n            }\r\n            return response.json()\r\n        }).then((data) => {\r\n            if (data.redirectUrl) {\r\n                window.location.href = data.redirectUrl;\r\n            }\r\n            let features = [];\r\n            if (isLoggedIn) {\r\n                const currentUser = JSON.parse(localStorage.getItem(\"currentUser\") || sessionStorage.getItem(\"currentUser\"));\r\n                data.userName = currentUser.name;\r\n                features = currentUser.features;\r\n            }\r\n            CustomerPortalDispatcher.dispatch({\r\n                actionType: 'SET_HEADER',\r\n                header: {\r\n                    headerInfo: data,\r\n                    login: isLoggedIn,\r\n                    features: features\r\n                },\r\n                language: data.language\r\n            });\r\n        }).catch((error) => {\r\n            displayGeneralMessage();\r\n            console.error(`fetch error: ${error}`);\r\n        });\r\n    }\r\n    switchLanguage(language){\r\n      CustomerPortalDispatcher.dispatch({\r\n          actionType: 'SET_LANGUAGE',\r\n          language: language\r\n      });\r\n    }\r\n    registerNewAccount(input,displayModal) {\r\n        let url = API.HOST + API.POST_NEW_ACCOUNT;\r\n        fetch(url, {\r\n            method: 'post',\r\n            headers: {\r\n                'Accept': 'application/json',\r\n                'Content-Type': 'application/json'\r\n            },\r\n            body: JSON.stringify(input),\r\n        }).then((response) => {\r\n            if (response.status == 500)\r\n                throw new Error(response.status)\r\n            return response.json()\r\n        }).then((data) => {\r\n            if (!data.error) {\r\n                displayGeneralMessage('', 'You are now registered!', 'success', true)\r\n                localStorage.setItem('currentUser', JSON.stringify(data));\r\n                sessionStorage.setItem('currentUser', JSON.stringify(data));\r\n                CustomerPortalDispatcher.dispatch({\r\n                    actionType: 'SET_USER_LOGIN',\r\n                    user: data,\r\n                    features: data.features,\r\n                    secretKey: data.token,\r\n                    userName: data.name\r\n                });\r\n            } else if (data.error == 'register-needs-approval') {\r\n                displayModal(false);\r\n                displayGeneralMessage(\"We will verify and approve your access shortly.\", \"Thank you for your registration\", \"success\", true, { autoRedirect: false });\r\n            } else {\r\n                if (typeof data.error === 'string') data.error = { error: data.error }\r\n                CustomerPortalDispatcher.dispatch({\r\n                    actionType: 'SET_ERROR',\r\n                    errors: data.error\r\n                });\r\n            }\r\n        }).catch((error) => {\r\n            CustomerPortalDispatcher.dispatch({\r\n                actionType: 'SET_ERROR',\r\n                errors: {error: 'Unexpected error, Please try again later'}\r\n            });\r\n            displayGeneralMessage();\r\n            console.error(`fetch error: ${error}`);\r\n        });\r\n    };\r\n    async RequestNewAccount(input) {\r\n        return new Promise((resolve, reject) => {\r\n            let url = API.HOST + API.POST_REQUEST_ACCOUNT;\r\n            fetch(url, {\r\n                method: 'post',\r\n                headers: {\r\n                    'Accept': 'application/json',\r\n                    'Content-Type': 'application/json'\r\n                },\r\n                body: JSON.stringify(input),\r\n            }).then((response) => {\r\n                if (response.status == 500)\r\n                    throw new Error(response.status)\r\n                return response.json()\r\n            }).then((data) => {\r\n                if (!data.error) {\r\n                    displayGeneralMessage(\"We will contact you shortly\", \"Thank you for your request\", \"success\", true, { autoRedirect: false });\r\n                }\r\n                resolve(data);\r\n            }).catch((error) => {\r\n                console.error(`fetch error: ${error}`);\r\n            });\r\n        })\r\n    };\r\n    async postResetPasswordForm(username, email) {\r\n        return new Promise((resolve, reject) => {\r\n            let params = { username: username, email: email };\r\n            let url = API.HOST + API.POST_RESET_PASSWORD_FORM;\r\n            fetch(url, {\r\n                method: 'post',\r\n                headers: {\r\n                    'Accept': 'application/json',\r\n                    'Content-Type': 'application/json',\r\n                },\r\n                body: JSON.stringify(params),\r\n            }).then((response) => {\r\n                if (response.status !== 200)\r\n                    throw new Error(response.status);\r\n                return response.json();\r\n            }).then((data) => {\r\n                if (!data.message) {\r\n                    resolve(true);\r\n                } else {\r\n                    CustomerPortalDispatcher.dispatch({\r\n                        actionType: 'SET_ERROR',\r\n                        errors: data.message\r\n                    });\r\n                    resolve(false);\r\n                }\r\n            }).catch((error) => {\r\n                displayGeneralMessage();\r\n                console.error(`fetch error: ${error}`);\r\n            });\r\n        })\r\n    };\r\n    postResetPassword(input) {\r\n        let url = API.HOST + API.POST_RESET_PASSWORD + '?token=' + input.token;\r\n        fetch(url, {\r\n            headers: {\r\n                'Accept': 'application/json',\r\n                'Content-Type': 'application/json',\r\n            },\r\n            method: 'POST',\r\n            body: JSON.stringify(input),\r\n        }).then((response) => {\r\n            if (response.status !== 200)\r\n                throw new Error(response.status)\r\n            return response.json()\r\n        }).then((data) => {\r\n            if (data.success) {\r\n                Swal.fire({\r\n                    title: \"\",\r\n                    text: \"Password updated\",\r\n                    imageUrl: icons['success'],\r\n                    imageWidth: 76,\r\n                    imageHeight: 76,\r\n                }).then(function () {\r\n                    if(localStorage.currentUser) localStorage.removeItem('currentUser');\r\n                    if(sessionStorage.currentUser) sessionStorage.removeItem('currentUser');\r\n                    CustomerPortalDispatcher.dispatch({\r\n                        actionType: 'USER_LOG_OUT'\r\n                    });\r\n                    window.location.href = window.location.origin;\r\n                });\r\n            } else {\r\n                CustomerPortalDispatcher.dispatch({\r\n                    actionType: 'SET_ERROR',\r\n                    errors: {message:data.error}\r\n                });\r\n            }\r\n        }).catch((error) => {\r\n            displayGeneralMessage();\r\n            console.error(`fetch error: ${error}`);\r\n        });\r\n    };\r\n    sendContactWithoutLogin(msg,displayModal,response='Your message has been sent to our team') {\r\n        let url = API.HOST + API.SEND_CONTACT_WITHOUT_LOGIN;\r\n        fetch(url, {\r\n            method: 'post',\r\n            headers: {\r\n                'Accept': 'application/json',\r\n                'Content-Type': 'application/json',\r\n            },\r\n            body: JSON.stringify(msg),\r\n        }).then((response) => {\r\n            if (response.status == 500)\r\n                throw new Error(response.status)\r\n            return response.json()\r\n        }).then((data) => {\r\n            displayModal(false);\r\n            displayGeneralMessage(response, 'Sent!', 'success', true, { autoRedirect: false });\r\n        }).catch((error) => {\r\n            displayGeneralMessage();\r\n            console.error(`fetch error: ${error}`);\r\n        });\r\n    }\r\n    setLogin(user) {\r\n        CustomerPortalDispatcher.dispatch({\r\n            actionType: 'SET_USER_LOGIN',\r\n            user: user,\r\n            features: user.features,\r\n            secretKey: user.token,\r\n            userName: user.name,\r\n            language: user.language\r\n        });\r\n    }\r\n    async logout() {\r\n        return new Promise((resolve, reject) => {\r\n            CustomerPortalDispatcher.dispatch({\r\n                actionType: 'USER_LOG_OUT',\r\n            });\r\n            resolve(true);\r\n        });\r\n    }\r\n    async fetchPopUpMessage() {\r\n        return new Promise((resolve, reject) => {\r\n            fetch(API.HOST + API.FETCH_POPUP_API, {\r\n                headers: {\r\n                    'Authorization': authenticationService()\r\n                }\r\n            }).then((response) => {\r\n                if (response.status !== 200)\r\n                    throw new Error(response.status)\r\n                return response.json()\r\n            }).then((data) => {\r\n                CustomerPortalDispatcher.dispatch({\r\n                    actionType: 'SET_BROADCAST_STATUS',\r\n                    status: false\r\n                });\r\n                resolve(data);\r\n            }).catch((error) => {\r\n                console.error(`fetch error: ${error}`);\r\n            });\r\n        })\r\n    };\r\n    postPopUpMessage() {\r\n        let url = API.HOST + API.PUT_POPUP_DISMISS;\r\n        fetch(url, {\r\n            method: 'put',\r\n            headers: {\r\n                'Accept': 'application/json',\r\n                'Content-Type': 'application/json',\r\n                'Authorization': authenticationService()\r\n            },\r\n            body: JSON.stringify({}),\r\n        }).then((response) => {\r\n            if (response.status !== 200)\r\n                throw new Error(response.status)\r\n        }).catch((error) => {\r\n            console.error(`fetch error: ${error}`);\r\n        });\r\n    };\r\n    enableBroadCastCheck(){\r\n      CustomerPortalDispatcher.dispatch({\r\n          actionType: 'SET_BROADCAST_STATUS',\r\n          status: true\r\n      });\r\n    }\r\n    async getBoardcastDate() {\r\n        return new Promise((resolve, reject) => {\r\n            let url = API.HOST + API.GET_BROADCAST_DATE;\r\n            fetch(url, {\r\n                method: 'get',\r\n                headers: {\r\n                    'Authorization': authenticationService()\r\n                },\r\n            }).then((response) => {\r\n                if (response.status !== 200)\r\n                    throw new Error(response.status)\r\n                return response.json()\r\n            }).then((data) => {\r\n                resolve(data);\r\n            }).catch((error) => {\r\n                console.error(`fetch error: ${error}`);\r\n            });\r\n        })\r\n    };\r\n    postBroadcastDate() {\r\n        let url = API.HOST + API.SET_BROADCAST_DATE;\r\n        fetch(url, {\r\n            method: 'post',\r\n            headers: {\r\n                'Accept': 'application/json',\r\n                'Content-Type': 'application/json',\r\n                'Authorization': authenticationService()\r\n            },\r\n            body: JSON.stringify({}),\r\n        }).then((response) => {\r\n            if (response.status !== 200)\r\n                throw new Error(response.status)\r\n            return response.json()\r\n        }).then((data) => {\r\n            return true;\r\n        }).catch((error) => {\r\n            console.error(`fetch error: ${error}`);\r\n        });\r\n    };\r\n    async fetchCustomerList(query) {\r\n        return new Promise((resolve, reject) => {\r\n          let url = API.HOST + API.FETCH_SALESPERSON_LIST + '?';\r\n          url += this.convertObjectToQueryString({query:query});\r\n          fetch(url, {\r\n              headers: {\r\n                  'Accept': 'application/json',\r\n                  'Content-Type': 'application/json',\r\n                  'Authorization': authenticationService()\r\n              }\r\n          }).then((response) => {\r\n              if (response.status == 500)\r\n                  throw new Error(response.status)\r\n              return response.json()\r\n          }).then((data) => {\r\n              if (!data.error) {\r\n                  resolve(data);\r\n              } else {\r\n                  displayGeneralMessage(data.error, undefined, 'error', false, { autoRedirect: false });\r\n              }\r\n          }).catch((error) => {\r\n              displayGeneralMessage();\r\n              console.error(`fetch error: ${error}`);\r\n          });\r\n        });\r\n    };\r\n    async fetchSalespersonNumber() {\r\n        return new Promise((resolve, reject) => {\r\n            let url = API.HOST + API.SALESPERSON_AR_API;\r\n            fetch(url, {\r\n                method: 'get',\r\n                headers: {\r\n                    'Authorization': authenticationService()\r\n                },\r\n            }).then((response) => {\r\n                if (response.status !== 200)\r\n                    throw new Error(response.status)\r\n                return response.json()\r\n            }).then((data) => {\r\n                debugger\r\n                resolve(data);\r\n            }).catch((error) => {\r\n                console.error(`fetch error: ${error}`);\r\n            });\r\n        })\r\n    };\r\n    async setClientNumber(person) {\r\n        return new Promise((resolve, reject) => {\r\n            let url = API.HOST + API.SALESPERSON_AR_API + '?';\r\n            url += this.convertObjectToQueryString({arcustomer:person.arCustomerNo});\r\n            fetch(url, {\r\n                method: 'PUT',\r\n                headers: {\r\n                    'Authorization': authenticationService()\r\n                },\r\n            }).then((response) => {\r\n                if (response.status == 500)\r\n                    throw new Error(response.status)\r\n                return response.json()\r\n            }).then((data) => {\r\n                if (data.success) {\r\n                  CustomerPortalDispatcher.dispatch({\r\n                    actionType: 'SET_SALESPERSON_CUSTOMER',\r\n                    data: person\r\n                  });\r\n                  resolve(undefined)\r\n                } else { // error\r\n                  displayGeneralMessage(data.message, undefined, 'error', true, { autoRedirect: false });\r\n                  resolve(true)\r\n                }\r\n            }).catch((error) => {\r\n                console.error(`fetch error: ${error}`);\r\n            });\r\n        })\r\n    };\r\n    fetchActivityCustomerActivity(retry = true) {\r\n        fetch(API.HOST + API.CUSTOMER_ACTIVITY_API, {\r\n            headers: {\r\n                'Authorization': authenticationService()\r\n            }\r\n        }).then((response) => {\r\n            if (response.status == 500)\r\n                throw new Error(response.status)\r\n            return response.json()\r\n        }).then((data) => {\r\n            if (data.error)\r\n                throw new Error(data)\r\n            if(data.customerActivity){\r\n              data.customerActivity.lastStatementDate = (data.customerActivity.lastStatementDate == 0) ? (undefined) : (data.customerActivity.lastStatementDate);\r\n              if(data.customerActivity){\r\n                let year = new Date().getFullYear();\r\n                let graphData = [{\r\n                  label:year-2, value:(data.customerActivity.lastLastYearTotalInvoices||'0').replace(/[^\\d.]/g, '')\r\n                },{\r\n                  label:year-1, value:(data.customerActivity.lastYearTotalInvoices||'0').replace(/[^\\d.]/g, '')\r\n                },{\r\n                  label:year, value:(data.customerActivity.yearToDateTotalInvoices||'0').replace(/[^\\d.]/g, '')\r\n                }]\r\n                data.customerActivity.graphData = Object.keys(graphData).map(e => graphData[e]);\r\n              }\r\n              document.getElementById('currencysymbol').value = data.customerActivity.currencySymbol;\r\n            }\r\n            CustomerPortalDispatcher.dispatch({\r\n                actionType: 'SET_ACTIVITY_CUSTOMER_ACTIVITY',\r\n                data: data\r\n            });\r\n        }).catch((error) => {\r\n            if(retry){\r\n              this.fetchActivityCustomerActivity(false)\r\n            } else {\r\n              displayGeneralMessage();\r\n              console.error(`fetch error: ${error}`);\r\n            }\r\n        });\r\n    }\r\n    fetchRecentInvoices(){\r\n        let params = { type: 'invoice', show: 'all', page: 1, perpage: 3, sortBy: 'docDate', descending: 1 };\r\n        let url = API.HOST + API.FETCH_TRANSACTIONS_API + '?';\r\n        url += this.convertObjectToQueryString(params);\r\n        fetch(url, {\r\n            headers: {\r\n                'Accept': 'application/json',\r\n                'Content-Type': 'application/json',\r\n                'Authorization': authenticationService()\r\n            }\r\n        }).then((response) => {\r\n            if (response.status == 500)\r\n                throw new Error(response.status)\r\n            return response.json()\r\n        }).then((data) => {\r\n            if (data.error) {\r\n                throw new Error(data.error)\r\n            }\r\n            CustomerPortalDispatcher.dispatch({\r\n                actionType: 'FETCH_RECENT_INVOICES',\r\n                data: data.transactions,\r\n            });\r\n        }).catch((error) => {\r\n            displayGeneralMessage();\r\n            console.error(`fetch error: ${error}`);\r\n        });\r\n    }\r\n    fetchRecentReceipt(){\r\n        let params = { type: 'receipt', show: 'all', page: 1, perpage: 3, sortBy: 'docDate', descending: 1 };\r\n        let url = API.HOST + API.FETCH_TRANSACTIONS_API + '?';\r\n        url += this.convertObjectToQueryString(params);\r\n        fetch(url, {\r\n            headers: {\r\n                'Accept': 'application/json',\r\n                'Content-Type': 'application/json',\r\n                'Authorization': authenticationService()\r\n            }\r\n        }).then((response) => {\r\n            if (response.status == 500)\r\n                throw new Error(response.status)\r\n            return response.json()\r\n        }).then((data) => {\r\n            if (data.error) {\r\n                throw new Error(data.error)\r\n            }\r\n            CustomerPortalDispatcher.dispatch({\r\n                actionType: 'FETCH_RECENT_RECEIPTS',\r\n                data: data.transactions,\r\n            });\r\n        }).catch((error) => {\r\n            displayGeneralMessage();\r\n            console.error(`fetch error: ${error}`);\r\n        });\r\n    }\r\n    fetchActivityCustom(){\r\n        let settings = CustomerPortalStore.getAccountActivitySetting() || {};\r\n        let customerNumber = CustomerPortalStore.getCustomerNumber();\r\n      let params = {\r\n          template: settings.template,\r\n          customerNumber: customerNumber,\r\n      };\r\n      let url = API.HOST + API.FETCH_DOC_DETAILS_CUSTOM_API + '?';\r\n      url += this.convertObjectToQueryString(params);\r\n      fetch(url, {\r\n          headers: {\r\n              'Accept': 'application/json',\r\n              'Content-Type': 'application/json',\r\n              'Authorization': authenticationService()\r\n          }\r\n      }).then((response) => {\r\n          if (response.status == 500)\r\n              throw new Error(response.status)\r\n          return response.json()\r\n      }).then((data) => {\r\n          if (!data.error) {\r\n              CustomerPortalDispatcher.dispatch({\r\n                actionType: 'SET_ACTIVITY_CUSTOMER_ACTIVITY',\r\n                data: data\r\n              });\r\n          } else {\r\n              displayGeneralMessage(data.error, undefined, 'error', false, { autoRedirect: false });\r\n          }\r\n      }).catch((error) => {\r\n          displayGeneralMessage();\r\n          console.error(`fetch error: ${error}`);\r\n      });\r\n    }\r\n    fetchTransactions(type = 'all', show = 'all', page = 1, perpage = 10) {\r\n        let params = {\r\n            type: type,\r\n            show: show,\r\n            page: page,\r\n            perpage: perpage,\r\n            sortBy: 'docDate',\r\n            descending: 1,\r\n        };\r\n        let url = API.HOST + API.FETCH_TRANSACTIONS_API + '?';\r\n        url += this.convertObjectToQueryString(params);\r\n        fetch(url, {\r\n            headers: {\r\n                'Accept': 'application/json',\r\n                'Content-Type': 'application/json',\r\n                'Authorization': authenticationService()\r\n            }\r\n        }).then((response) => {\r\n            if (response.status == 500)\r\n                throw new Error(response.status)\r\n            return response.json()\r\n        }).then((data) => {\r\n            if (data.error) {\r\n                throw new Error(data.error)\r\n            }\r\n            CustomerPortalDispatcher.dispatch({\r\n                actionType: 'FETCH_TRANSACTIONS',\r\n                transactionData: data,\r\n                page: page,\r\n                show: show,\r\n                type: type,\r\n                perpage: perpage\r\n            });\r\n        }).catch((error) => {\r\n            displayGeneralMessage();\r\n            console.error(`fetch error: ${error}`);\r\n        });\r\n    }\r\n    fetchTransactionsCM(type = 'all', show = 'all', page = 1, perpage = 10) {\r\n        setTimeout(function(){\r\n          let data = {\r\n            data: [\r\n              {\r\n              \tclassName:'d-flex',\r\n              \telements: [\r\n              \t\t{\r\n              \t\t\tclassName:'',\r\n              \t\t\tdataType: 'table-selector',\r\n              \t\t\ttitle: 'Transaction Type',\r\n              \t\t\tdataName:'type',\r\n              \t\t\tdata:[\r\n              \t\t\t\t{text:'All',value:'all'},\r\n              \t\t\t\t{text:'Invoice',value:'invoice'},\r\n              \t\t\t\t{text:'Unapplied Cash',value:'unappliedcash'},\r\n              \t\t\t\t{text:'Debit Note',value:'debitnote'},\r\n              \t\t\t\t{text:'Credit Note',value:'creditnote'},\r\n              \t\t\t\t{text:'Interest',value:'interest'},\r\n              \t\t\t]\r\n              \t\t},\r\n              \t\t{\r\n              \t\t\tclassName:'flex-grow-1 pl-5',\r\n              \t\t\tdataType: 'table-selector',\r\n              \t\t\ttitle: 'Show',\r\n              \t\t\tdataName:'show',\r\n              \t\t\tdata:[\r\n              \t\t\t\t{text:'All',value:'all'},\r\n              \t\t\t\t{text:'Open Only',value:'open'},\r\n              \t\t\t]\r\n              \t\t},\r\n              \t\t{\r\n              \t\t\tclassName:'text-md-right',\r\n              \t\t\tdataType: 'table-selector',\r\n              \t\t\ttitle: 'Transactions per page',\r\n              \t\t\tdataName:'perpage',\r\n              \t\t\tdata:[\r\n              \t\t\t\t{text:'10',value:'10'},\r\n              \t\t\t\t{text:'25',value:'25'},\r\n              \t\t\t\t{text:'50',value:'50'},\r\n              \t\t\t]\r\n              \t\t}\r\n              \t]\r\n              },\r\n              {\r\n              \tclassName:'div-white-background',\r\n              \tdataType: 'table',\r\n              \tcolumns:['TYPE','DOCUMENT NO.','DOC.DATE','DUE DATE','PO#','ORIG.AMT','APPLIED AMT','BALANCE'],\r\n              \twidth:[15,25,12,12,6,10,10,10],\r\n              \tcustomClass:['doc-type-data','doc-number','','','','text-md-right','text-md-right','text-md-right'],\r\n              \tfields:['docType','docLink','docDate','dueDate','poNo','originalAmt','appliedAmt','currentAmt'],\r\n              \tdata:[\r\n              \t\t{\"entryNumber\":\"2\",\"docDate\":\"07/30/2020\",\"batchNumber\":\"61\",\"currencyCode\":\"USD\",\"dueDate\":\"08/05/2020\",\"salesPerson\":\"BB\",\"orderNumber\":\"\",\"currentAmt\":\"$ 406.27\",\"appliedAmt\":\"$ 812.54\",\"docType\":\"invoice\",\"invoiceType\":\"2\",\"customerNo\":\"1200\",\"fullyPaid\":false,\"documentDescription\":\"Equipment Maintains\",\"docNo\":\"IN00000000000000000006\",\"source\":\"AR\",\"receiptNumber\":\"\",\"originalAmt\":\"$ 406.27\",\"poNo\":\"\",\"transactionType\":\"summary\",\"details\":[]},\r\n              \t\t{\"entryNumber\":\"1\",\"docDate\":\"07/01/2020\",\"batchNumber\":\"65\",\"currencyCode\":\"USD\",\"dueDate\":\"07/15/2020\",\"salesPerson\":\"BB\",\"orderNumber\":\"\",\"currentAmt\":\"$ 0.00\",\"appliedAmt\":\"$ 2,338.04\",\"docType\":\"invoice\",\"invoiceType\":\"2\",\"customerNo\":\"1200\",\"fullyPaid\":false,\"documentDescription\":\"\",\"docNo\":\"IN0000000000061\",\"source\":\"OE\",\"receiptNumber\":\"\",\"originalAmt\":\"$ 2,338.04\",\"poNo\":\"\",\"transactionType\":\"summary\",\"details\":[]},\r\n              \t\t{\"entryNumber\":\"3\",\"docDate\":\"06/30/2020\",\"batchNumber\":\"25\",\"currencyCode\":\"USD\",\"dueDate\":\"07/05/2020\",\"salesPerson\":\"BB\",\"orderNumber\":\"\",\"currentAmt\":\"$ 1,623.75\",\"appliedAmt\":\"$ 0.00\",\"docType\":\"invoice\",\"invoiceType\":\"1\",\"customerNo\":\"1200\",\"fullyPaid\":false,\"documentDescription\":\"Project and Job Costing Billings\",\"docNo\":\"IN00000000000000000003\",\"source\":\"PM\",\"receiptNumber\":\"\",\"originalAmt\":\"$ 1,623.75\",\"poNo\":\"\",\"transactionType\":\"item\",\"details\":[]},\r\n              \t\t{\"entryNumber\":\"4\",\"docDate\":\"06/30/2020\",\"batchNumber\":\"25\",\"currencyCode\":\"USD\",\"dueDate\":\"06/30/2020\",\"salesPerson\":\"BB\",\"orderNumber\":\"\",\"currentAmt\":\"$ 43.30\",\"appliedAmt\":\"$ 0.00\",\"docType\":\"creditnote\",\"invoiceType\":\"1\",\"customerNo\":\"1200\",\"fullyPaid\":false,\"documentDescription\":\"Project and Job Costing Billings\",\"docNo\":\"CR00000000000000000002\",\"source\":\"PM\",\"receiptNumber\":\"\",\"originalAmt\":\"$ 43.30\",\"poNo\":\"\",\"transactionType\":\"item\",\"details\":[]},\r\n              \t\t{\"entryNumber\":\"1\",\"docDate\":\"06/24/2020\",\"batchNumber\":\"67\",\"currencyCode\":\"USD\",\"dueDate\":\"07/05/2020\",\"salesPerson\":\"BB\",\"orderNumber\":\"\",\"currentAmt\":\"$ 0.00\",\"appliedAmt\":\"$ 117.10\",\"docType\":\"invoice\",\"invoiceType\":\"1\",\"customerNo\":\"1200\",\"fullyPaid\":false,\"documentDescription\":\"\",\"docNo\":\"IN00000000000000000013\",\"source\":\"AR\",\"receiptNumber\":\"\",\"originalAmt\":\"$ 117.10\",\"poNo\":\"\",\"transactionType\":\"item\",\"details\":[]},\r\n              \t\t{\"entryNumber\":\"1\",\"docDate\":\"06/24/2020\",\"batchNumber\":\"66\",\"currencyCode\":\"USD\",\"dueDate\":\"07/05/2020\",\"salesPerson\":\"BB\",\"orderNumber\":\"\",\"currentAmt\":\"$ 137.60\",\"appliedAmt\":\"$ 264.37\",\"docType\":\"invoice\",\"invoiceType\":\"1\",\"customerNo\":\"1200\",\"fullyPaid\":false,\"documentDescription\":\"\",\"docNo\":\"IN00000000000000000012\",\"source\":\"AR\",\"receiptNumber\":\"\",\"originalAmt\":\"$ 126.77\",\"poNo\":\"\",\"transactionType\":\"item\",\"details\":[]},\r\n              \t\t{\"entryNumber\":\"1\",\"docDate\":\"06/15/2020\",\"batchNumber\":\"25\",\"currencyCode\":\"USD\",\"dueDate\":\"06/15/2020\",\"salesPerson\":\"\",\"orderNumber\":\"\",\"currentAmt\":\"$ 50.00\",\"appliedAmt\":\"$ 0.00\",\"docType\":\"prepayment\",\"invoiceType\":\"2\",\"customerNo\":\"1200\",\"fullyPaid\":false,\"documentDescription\":\"Received in advance from Ron\",\"docNo\":\"PP00000000000000000001\",\"source\":\"AR\",\"receiptNumber\":\"2501\",\"originalAmt\":\"$ 50.00\",\"poNo\":\"\",\"transactionType\":\"summary\",\"details\":[]},\r\n              \t\t{\"entryNumber\":\"1\",\"docDate\":\"06/01/2020\",\"batchNumber\":\"24\",\"currencyCode\":\"USD\",\"dueDate\":\"06/01/2020\",\"salesPerson\":\"\",\"orderNumber\":\"\",\"currentAmt\":\"$ 621.99\",\"appliedAmt\":\"$ 1,623.48\",\"docType\":\"receipt\",\"invoiceType\":\"2\",\"customerNo\":\"1200\",\"fullyPaid\":false,\"documentDescription\":\"\",\"docNo\":\"PY00000000000000000049\",\"source\":\"AR\",\"receiptNumber\":\"000000024-00001\",\"originalAmt\":\"$ 2,245.47\",\"poNo\":\"\",\"transactionType\":\"summary\",\"details\":[]},\r\n              \t\t{\"entryNumber\":\"1\",\"docDate\":\"06/01/2020\",\"batchNumber\":\"18\",\"currencyCode\":\"USD\",\"dueDate\":\"06/15/2020\",\"salesPerson\":\"BB\",\"orderNumber\":\"\",\"currentAmt\":\"$ 0.00\",\"appliedAmt\":\"$ 403.77\",\"docType\":\"invoice\",\"invoiceType\":\"1\",\"customerNo\":\"1200\",\"fullyPaid\":false,\"documentDescription\":\"Desc\",\"docNo\":\"IN1832\",\"source\":\"AR\",\"receiptNumber\":\"\",\"originalAmt\":\"$ 403.77\",\"poNo\":\"\",\"transactionType\":\"item\",\"details\":[]},\r\n              \t\t{\"entryNumber\":\"3\",\"docDate\":\"05/31/2020\",\"batchNumber\":\"53\",\"currencyCode\":\"USD\",\"dueDate\":\"05/31/2020\",\"salesPerson\":\"\",\"orderNumber\":\"\",\"currentAmt\":\"$ 0.00\",\"appliedAmt\":\"$ 97.43\",\"docType\":\"receipt\",\"invoiceType\":\"2\",\"customerNo\":\"1200\",\"fullyPaid\":true,\"documentDescription\":\"\",\"docNo\":\"PY00000000000000000071\",\"source\":\"AR\",\"receiptNumber\":\"WT01247741\",\"originalAmt\":\"$ 97.43\",\"poNo\":\"\",\"transactionType\":\"summary\",\"details\":[]}\r\n              \t],\r\n              },\r\n              {\r\n              \tclassName:'text-center d-flex justify-content-around d-md-block',\r\n              \telements:[\r\n              \t\t{\r\n              \t\t\tclassName:'',\r\n              \t\t\tdataType:'previous-btn',\r\n              \t\t},\r\n              \t\t{\r\n              \t\t\tclassName:'',\r\n              \t\t\tdataType:'next-btn',\r\n              \t\t}\r\n              \t]\r\n              }\r\n            ]\r\n          }\r\n          CustomerPortalDispatcher.dispatch({\r\n              actionType: 'FETCH_TRANSACTIONS_CM',\r\n              data: data,\r\n          });\r\n        },500);\r\n    }\r\n    fetchTransactionSetting() {\r\n        fetch(API.HOST + API.FETCH_TRANSACTION_SETTINGS_API, {\r\n            headers: {\r\n                'Accept': 'application/json',\r\n                'Content-Type': 'application/json',\r\n                'Authorization': authenticationService()\r\n            }\r\n        }).then((response) => {\r\n            if (response.status !== 200)\r\n                throw new Error(response.status)\r\n            return response.json()\r\n        }).then((data) => {\r\n            let arr = [];\r\n            _.forEach(data.transactiontypes, (item, key) => { arr.push(item.type) })\r\n            let transactionSettings = {\r\n                type: data.transactiontype,\r\n                page: 1,\r\n                perpage: data.perpage,\r\n                transactiontypes: arr\r\n            }\r\n            CustomerPortalDispatcher.dispatch({\r\n                actionType: 'FETCH_TRANSACTION_SETTING',\r\n                transactionSettings: transactionSettings\r\n            });\r\n        }).catch((error) => {\r\n            // displayGeneralMessage(error);\r\n            console.error(`fetch error: ${error}`);\r\n        });\r\n    }\r\n    async fetchTransactionUpdateDate() {\r\n        return new Promise((resolve, reject) => {\r\n            let url = API.HOST + API.FETCH_TRANSACTION_UPDATE_DATE;\r\n            fetch(url, {\r\n                headers: {\r\n                    'Accept': 'application/json',\r\n                    'Content-Type': 'application/json',\r\n                    'Authorization': authenticationService()\r\n                }\r\n            }).then((response) => {\r\n                if (response.status !== 200)\r\n                    throw new Error(response.status)\r\n                return response.json()\r\n            }).then((data) => {\r\n                let date = CustomerPortalStore.getTransactionsUpdateDate();\r\n                if (date !== data) {\r\n                    CustomerPortalDispatcher.dispatch({\r\n                        actionType: 'FETCH_TRANSACTION_UPDATE_DATE',\r\n                        data: data\r\n                    });\r\n                    resolve(true);\r\n                } else {\r\n                    resolve(false);\r\n                }\r\n\r\n            }).catch((error) => {\r\n                console.error(`fetch error: ${error}`);\r\n            });\r\n        })\r\n    };\r\n    fetchOrdersCM(viewby = 'order', type = 'all', show = 'all', page = 1, perpage = 10) {\r\n        setTimeout(function(){\r\n          let data = {\r\n            data: [\r\n              {\r\n              \tclassName:'d-flex',\r\n              \telements: [\r\n              \t\t{\r\n              \t\t\tclassName:'flex-grow-1',\r\n              \t\t\tdataType: 'table-selector',\r\n              \t\t\ttitle: 'View By',\r\n              \t\t\tdataName:'viewby',\r\n              \t\t\tdata:[\r\n              \t\t\t\t{text:'Orders',value:'order'},\r\n              \t\t\t\t{text:'Items',value:'item'}\r\n              \t\t\t]\r\n              \t\t},\r\n              \t\t{\r\n              \t\t\tclassName:'text-md-right',\r\n              \t\t\tdataType: 'table-selector',\r\n              \t\t\ttitle: 'Items per page',\r\n              \t\t\tdataName:'perpage',\r\n              \t\t\tdata:[\r\n              \t\t\t\t{text:'10',value:'10'},\r\n              \t\t\t\t{text:'25',value:'25'},\r\n              \t\t\t\t{text:'50',value:'50'},\r\n              \t\t\t]\r\n              \t\t}\r\n              \t]\r\n              },\r\n              {\r\n              \tclassName:'div-white-background p-0 mt-2',\r\n              \tdataType: 'list-table',\r\n              \tcolumns:['ITEM NO.','DESCRIPTION','DOCUMENT NO.','DOC.DATE','QTY ORDERED','QTY SHIPPED','QTY B/ORDER','UNIT PRICE'],\r\n              \twidth:[10,25,15,10,11,11,11,10],\r\n              \tcustomClass:['','','doc-number','','text-md-right','text-md-right','text-md-right','text-md-right'],\r\n                fields:['itemNo','description','orderNo','orderDate','qty','qtyShipped','qtyBackorder','unitPrice'],\r\n              \tdata:[\r\n                  { \"itemNo\"       : \"A1-103/0\",\r\n                    \"lineNo\"       : \"1\",\r\n                    \"description\"  : \"Fluorescent Desk Lamp\",\r\n                    \"orderNo\"      : \"ORD000000000138\",\r\n                    \"orderDate\"    : \"08/07/2020\",\r\n                    \"qty\"          : \"1\",\r\n                    \"qtyShipped\"   : \"0\",\r\n                    \"qtyBackorder\" : \"1\",\r\n                    \"unitPrice\"    : \"$ 59.99\" },\r\n                  { \"itemNo\"       : \"A1-103/0\",\r\n                    \"lineNo\"       : \"2\",\r\n                    \"description\"  : \"Fluorescent Desk Lamp\",\r\n                    \"orderNo\"      : \"ORD000000000137\",\r\n                    \"orderDate\"    : \"08/07/2020\",\r\n                    \"qty\"          : \"1\",\r\n                    \"qtyShipped\"   : \"0\",\r\n                    \"qtyBackorder\" : \"1\",\r\n                    \"unitPrice\"    : \"$ 59.99\" },\r\n                  { \"itemNo\"       : \"A1-103/0\",\r\n                    \"lineNo\"       : \"3\",\r\n                    \"description\"  : \"Fluorescent Desk Lamp\",\r\n                    \"orderNo\"      : \"ORD000000000136\",\r\n                    \"orderDate\"    : \"08/06/2020\",\r\n                    \"qty\"          : \"1\",\r\n                    \"qtyShipped\"   : \"0\",\r\n                    \"qtyBackorder\" : \"1\",\r\n                    \"unitPrice\"    : \"$ 59.99\" },\r\n                  { \"itemNo\"       : \"F1-470/T\",\r\n                    \"lineNo\"       : \"4\",\r\n                    \"description\"  : \"Filing Cabinet - 4 Drawers - Hunts-2500\",\r\n                    \"orderNo\"      : \"ORD000000000135\",\r\n                    \"orderDate\"    : \"08/04/2020\",\r\n                    \"qty\"          : \"1\",\r\n                    \"qtyShipped\"   : \"0\",\r\n                    \"qtyBackorder\" : \"1\",\r\n                    \"unitPrice\"    : \"$ 421.96\" },\r\n                  { \"itemNo\"       : \"A1-310/0\",\r\n                    \"lineNo\"       : \"5\",\r\n                    \"description\"  : \"Halogen Desk Light\",\r\n                    \"orderNo\"      : \"ORD000000000134\",\r\n                    \"orderDate\"    : \"08/04/2020\",\r\n                    \"qty\"          : \"1\",\r\n                    \"qtyShipped\"   : \"0\",\r\n                    \"qtyBackorder\" : \"1\",\r\n                    \"unitPrice\"    : \"$ 50.35\" },\r\n                  { \"itemNo\"       : \"A1-103/0\",\r\n                    \"lineNo\"       : \"6\",\r\n                    \"description\"  : \"Fluorescent Desk Lamp\",\r\n                    \"orderNo\"      : \"ORD000000000133\",\r\n                    \"orderDate\"    : \"08/04/2020\",\r\n                    \"qty\"          : \"1\",\r\n                    \"qtyShipped\"   : \"0\",\r\n                    \"qtyBackorder\" : \"1\",\r\n                    \"unitPrice\"    : \"$ 59.99\" },\r\n                  { \"itemNo\"       : \"A1-103/0\",\r\n                    \"lineNo\"       : \"7\",\r\n                    \"description\"  : \"Fluorescent Desk Lamp\",\r\n                    \"orderNo\"      : \"ORD000000000132\",\r\n                    \"orderDate\"    : \"07/31/2020\",\r\n                    \"qty\"          : \"1\",\r\n                    \"qtyShipped\"   : \"0\",\r\n                    \"qtyBackorder\" : \"1\",\r\n                    \"unitPrice\"    : \"$ 59.99\" },\r\n                  { \"itemNo\"       : \"A1-103/0\",\r\n                    \"lineNo\"       : \"8\",\r\n                    \"description\"  : \"Fluorescent Desk Lamp\",\r\n                    \"orderNo\"      : \"ORD000000000131\",\r\n                    \"orderDate\"    : \"07/30/2020\",\r\n                    \"qty\"          : \"1\",\r\n                    \"qtyShipped\"   : \"0\",\r\n                    \"qtyBackorder\" : \"1\",\r\n                    \"unitPrice\"    : \"$ 59.99\" },\r\n                  { \"itemNo\"       : \"A1-103/0\",\r\n                    \"lineNo\"       : \"9\",\r\n                    \"description\"  : \"Fluorescent Desk Lamp\",\r\n                    \"orderNo\"      : \"ORD000000000130\",\r\n                    \"orderDate\"    : \"07/30/2020\",\r\n                    \"qty\"          : \"1\",\r\n                    \"qtyShipped\"   : \"0\",\r\n                    \"qtyBackorder\" : \"1\",\r\n                    \"unitPrice\"    : \"$ 59.99\" },\r\n                  { \"itemNo\"       : \"A1-103/0\",\r\n                    \"lineNo\"       : \"10\",\r\n                    \"description\"  : \"Fluorescent Desk Lamp\",\r\n                    \"orderNo\"      : \"ORD000000000129\",\r\n                    \"orderDate\"    : \"07/30/2020\",\r\n                    \"qty\"          : \"1\",\r\n                    \"qtyShipped\"   : \"0\",\r\n                    \"qtyBackorder\" : \"1\",\r\n                    \"unitPrice\"    : \"$ 59.99\" }\r\n                ],\r\n              }\r\n            ]\r\n          }\r\n          CustomerPortalDispatcher.dispatch({\r\n              actionType: 'FETCH_ORDERS_CM',\r\n              data: data,\r\n          });\r\n        },500);\r\n    }\r\n    fetchOrder(viewby = 'order', doctype = 'all', show = 'all', page = 1, perpage = 10) {\r\n        // eslint-disable-next-line\r\n        (viewby == 'order') ? (this.fetchOrderByOrder(doctype, show, page, perpage)) : (this.fetchOrderByItem(doctype, show, page, perpage));\r\n    }\r\n    fetchOrderByOrder(doctype = 'all', show = 'open', page = 1, perpage = 10) {\r\n        let params = {\r\n            show: show,\r\n            currentPage: page,\r\n            doctype: doctype,\r\n            ordersPerPage: perpage,\r\n        };\r\n        if (!show) {\r\n            delete params.show;\r\n        }\r\n        let url = API.HOST + API.FETCH_ORDERS_LIST_API + '?';\r\n        url += this.convertObjectToQueryString(params);\r\n        fetch(url, {\r\n            headers: {\r\n                'Accept': 'application/json',\r\n                'Content-Type': 'application/json',\r\n                'Authorization': authenticationService()\r\n            }\r\n        }).then((response) => {\r\n            if (response.status == 500)\r\n                throw new Error(response.status)\r\n            return response.json()\r\n        }).then((data) => {\r\n            if (data.error) {\r\n                throw new Error(data.error)\r\n            }\r\n            CustomerPortalDispatcher.dispatch({\r\n                actionType: 'FETCH_ORDERS',\r\n                orderData: data,\r\n                page: page,\r\n                doctype: doctype,\r\n                perpage: perpage,\r\n                viewby: 'order'\r\n            });\r\n        }).catch((error) => {\r\n            displayGeneralMessage();\r\n            console.error(`fetch error: ${error}`);\r\n        });\r\n    }\r\n    fetchOrderByItem(doctype = 'all', show = 'open', page = 1, perpage = 10) {\r\n        let params = {\r\n            show: show,\r\n            page: page,\r\n            docfilter: doctype,\r\n            results: perpage,\r\n        };\r\n        if (!show) {\r\n            delete params.show;\r\n        }\r\n        let url = API.HOST + API.FETCH_ORDERS_ITEM_API + '?';\r\n        url += this.convertObjectToQueryString(params);\r\n        fetch(url, {\r\n            headers: {\r\n                'Accept': 'application/json',\r\n                'Content-Type': 'application/json',\r\n                'Authorization': authenticationService()\r\n            }\r\n        }).then((response) => {\r\n            if (response.status == 500)\r\n                throw new Error(response.status)\r\n            return response.json()\r\n        }).then((data) => {\r\n            if (data.error) {\r\n                throw new Error(data.error)\r\n            }\r\n            CustomerPortalDispatcher.dispatch({\r\n                actionType: 'FETCH_ORDERS',\r\n                orderData: data,\r\n                page: page,\r\n                doctype: doctype,\r\n                perpage: perpage,\r\n                viewby: 'item'\r\n            });\r\n        }).catch((error) => {\r\n            displayGeneralMessage();\r\n            console.error(`fetch error: ${error}`);\r\n        });\r\n    };\r\n    fetchOrdersSetting() {\r\n        fetch(API.HOST + API.FETCH_ORDERS_SETTINGS_API, {\r\n            headers: {\r\n                'Accept': 'application/json',\r\n                'Content-Type': 'application/json',\r\n                'Authorization': authenticationService()\r\n            }\r\n        }).then((response) => {\r\n            if (response.status !== 200)\r\n                throw new Error(response.status)\r\n            return response.json()\r\n        }).then((data) => {\r\n            let arr = [];\r\n            _.forEach(data.types, (item, key) => { arr.push(item.type) })\r\n            data.orderType = arr;\r\n            CustomerPortalDispatcher.dispatch({\r\n                actionType: 'FETCH_ORDER_SETTING',\r\n                orderSettings: data\r\n            });\r\n        }).catch((error) => {\r\n            // displayGeneralMessage(error);\r\n            console.error(`fetch error: ${error}`);\r\n        });\r\n    }\r\n    async fetchOrderDetails(docNo){\r\n      return new Promise((resolve, reject) => {\r\n        let params = { docNo: docNo };\r\n        let url = API.HOST + API.FETCH_ORDERS_DETAILS + '?';\r\n        url += this.convertObjectToQueryString(params);\r\n        fetch(url, {\r\n          headers: {\r\n            'Accept': 'application/json',\r\n            'Content-Type': 'application/json',\r\n            'Authorization': authenticationService()\r\n          }\r\n        }).then((response) => {\r\n          if (response.status == 500)\r\n          throw new Error(response.status)\r\n          return response.json()\r\n        }).then((data) => {\r\n          if (data.error) {\r\n            throw new Error(data.error)\r\n          }\r\n          CustomerPortalDispatcher.dispatch({\r\n            actionType: 'FETCH_PAY_ACCOUNT_DETAILS',\r\n            data: data,\r\n            docNo: docNo\r\n          });\r\n          resolve(data);\r\n        }).catch((error) => {\r\n          displayGeneralMessage();\r\n          console.error(`fetch error: ${error}`);\r\n        });\r\n      });\r\n    }\r\n    async fetchOrdersUpdateDate() {\r\n        return new Promise((resolve, reject) => {\r\n            let url = API.HOST + API.FETCH_ORDERS_UPDATE_DATE;\r\n            fetch(url, {\r\n                headers: {\r\n                    'Accept': 'application/json',\r\n                    'Content-Type': 'application/json',\r\n                    'Authorization': authenticationService()\r\n                }\r\n            }).then((response) => {\r\n                if (response.status !== 200)\r\n                    throw new Error(response.status)\r\n                return response.json()\r\n            }).then((data) => {\r\n                let date = CustomerPortalStore.getOrderUpdateDate();\r\n                if (date !== data) {\r\n                    CustomerPortalDispatcher.dispatch({\r\n                        actionType: 'FETCH_ORDER_UPDATE_DATE',\r\n                        data: data\r\n                    });\r\n                    resolve(true);\r\n                } else {\r\n                    resolve(false);\r\n                }\r\n\r\n            }).catch((error) => {\r\n                console.error(`fetch error: ${error}`);\r\n            });\r\n        })\r\n    };\r\n    fetchDocumentDrillDown(orderNo,docType,docStatus) {\r\n        let url = API.HOST + API.FETCH_DOCUMENT_DRILLDOWN + `?documentNumber=${orderNo}&documentType=${docType}&documentStatus=${docStatus}`;\r\n        fetch(url, {\r\n            headers: {\r\n                'Accept': 'application/json',\r\n                'Content-Type': 'application/json',\r\n                'Authorization': authenticationService()\r\n            }\r\n        }).then((response) => {\r\n            if (response.status == 500)\r\n                throw new Error(response.status)\r\n            return response.json()\r\n        }).then((data) => {\r\n            CustomerPortalDispatcher.dispatch({\r\n                actionType: 'SET_ORDER_DRILL_DOWN',\r\n                data: data\r\n            });\r\n        }).catch((error) => {\r\n            displayGeneralMessage();\r\n            console.error(`fetch error: ${error}`);\r\n        });\r\n    }\r\n    async quoteToOrder(quoteNo){\r\n      return new Promise((resolve, reject) => {\r\n        let params = {\r\n            quoteNumber: quoteNo\r\n        };\r\n        let url = API.HOST + API.FETCH_QUOTE_TO_ORDER + '?';\r\n        url += this.convertObjectToQueryString(params);\r\n        fetch(url, {\r\n            method: 'POST',\r\n            headers: {\r\n                'Accept': 'application/json',\r\n                'Content-Type': 'application/json',\r\n                'Authorization': authenticationService()\r\n            },\r\n        }).then((response) => {\r\n            if (response.status !== 200)\r\n                throw new Error(response.status)\r\n            return response.json()\r\n        }).then((result) => {\r\n          resolve(result);\r\n        }).catch((error) => {\r\n            displayGeneralMessage();\r\n            console.error(`fetch error: ${error}`);\r\n        });\r\n      })\r\n    }\r\n    fetchMerchantBillingInfo() {\r\n        let url = API.HOST + API.FETCH_DOC_MERCHANT_API;\r\n        fetch(url, {\r\n            headers: {\r\n                'Accept': 'application/json',\r\n                'Content-Type': 'application/json',\r\n                'Authorization': authenticationService()\r\n            }\r\n        }).then((response) => {\r\n            if (response.status !== 200)\r\n                throw new Error(response.status)\r\n            return response.json()\r\n        }).then((data) => {\r\n            CustomerPortalDispatcher.dispatch({\r\n                actionType: 'FETCH_MERCHANT_BILLING',\r\n                merchantBilling: data\r\n            });\r\n        }).catch((error) => {\r\n            // displayGeneralMessage(error);\r\n            console.error(`fetch error: ${error}`);\r\n        });\r\n    }\r\n    fetchTransactionDetailAR(docno, transactiontype, docType) {\r\n        let params = {\r\n            transactiontype: transactiontype,\r\n            docno: docno,\r\n            docType: docType\r\n        };\r\n        let url = API.HOST + API.FETCH_DOC_DETAILS_AR_API + '?';\r\n        url += this.convertObjectToQueryString(params);\r\n        fetch(url, {\r\n            headers: {\r\n                'Accept': 'application/json',\r\n                'Content-Type': 'application/json',\r\n                'Authorization': authenticationService()\r\n            }\r\n        }).then((response) => {\r\n            if (response.status == 500)\r\n                throw new Error(response.status)\r\n            return response.json()\r\n        }).then((data) => {\r\n            if (!data.error) {\r\n                CustomerPortalDispatcher.dispatch({\r\n                    actionType: 'FETCH_TRANSACTION_DETAIL',\r\n                    transactionDetail: data\r\n                });\r\n            } else {\r\n                displayGeneralMessage(data.error, '', 'error', false);\r\n            }\r\n        }).catch((error) => {\r\n            displayGeneralMessage();\r\n            console.error(`fetch error: ${error}`);\r\n        });\r\n    }\r\n    fetchTransactionDetailOE(docno, type) {\r\n        let params = {\r\n            docno: docno,\r\n            type: type\r\n        };\r\n        let url = API.HOST + API.FETCH_DOC_DETAILS_OE_API + '?';\r\n        url += this.convertObjectToQueryString(params);\r\n        fetch(url, {\r\n            headers: {\r\n                'Accept': 'application/json',\r\n                'Content-Type': 'application/json',\r\n                'Authorization': authenticationService()\r\n            }\r\n        }).then((response) => {\r\n            if (response.status == 500)\r\n                throw new Error(response.status)\r\n            return response.json()\r\n        }).then((data) => {\r\n            if (!data.error) {\r\n                CustomerPortalDispatcher.dispatch({\r\n                    actionType: 'FETCH_TRANSACTION_DETAIL',\r\n                    transactionDetail: data\r\n                });\r\n            } else {\r\n                displayGeneralMessage(data.error, '', 'error', false);\r\n            }\r\n        }).catch((error) => {\r\n            displayGeneralMessage();\r\n            console.error(`fetch error: ${error}`);\r\n        });\r\n    }\r\n    fetchTransactionDetailFW(docno, type) {\r\n        let params = {\r\n            invoiceno: docno,\r\n        };\r\n        let url = API.HOST + API.FETCH_DOC_DETAILS_FWLTC_API + '?';\r\n        url += this.convertObjectToQueryString(params);\r\n        fetch(url, {\r\n            headers: {\r\n                'Accept': 'application/json',\r\n                'Content-Type': 'application/json',\r\n                'Authorization': authenticationService()\r\n            }\r\n        }).then((response) => {\r\n            if (response.status == 500)\r\n                throw new Error(response.status)\r\n            return response.json()\r\n        }).then((data) => {\r\n            if (!data.error) {\r\n                CustomerPortalDispatcher.dispatch({\r\n                    actionType: 'FETCH_TRANSACTION_DETAIL',\r\n                    transactionDetail: data\r\n                });\r\n            } else {\r\n                displayGeneralMessage(data.error, undefined, 'error', false, { autoRedirect: false });\r\n            }\r\n        }).catch((error) => {\r\n            displayGeneralMessage();\r\n            console.error(`fetch error: ${error}`);\r\n        });\r\n    }\r\n    fetchTransactionDetailCM(docno, type, template, name){\r\n      let customerNumber = CustomerPortalStore.getCustomerNumber();\r\n        let params = {\r\n            documentNumber: docno,\r\n            template: template,\r\n            documentType: type,\r\n            customerNumber: customerNumber,\r\n            name : name\r\n        };\r\n        let url = API.HOST + API.FETCH_DOC_DETAILS_CUSTOM_API + '?';\r\n        url += this.convertObjectToQueryString(params);\r\n        fetch(url, {\r\n            headers: {\r\n                'Accept': 'application/json',\r\n                'Content-Type': 'application/json',\r\n                'Authorization': authenticationService()\r\n            }\r\n        }).then((response) => {\r\n            if (response.status == 500)\r\n                throw new Error(response.status)\r\n            return response.json()\r\n        }).then((data) => {\r\n            if (!data.error) {\r\n                CustomerPortalDispatcher.dispatch({\r\n                    actionType: 'FETCH_TRANSACTION_DETAIL',\r\n                    transactionDetail: data\r\n                });\r\n            } else {\r\n                displayGeneralMessage(data.error, undefined, 'error', false, { autoRedirect: false });\r\n            }\r\n        }).catch((error) => {\r\n            displayGeneralMessage();\r\n            console.error(`fetch error: ${error}`);\r\n        });\r\n    }\r\n    fetchPayAccount(reset = false) {\r\n        let url = API.HOST + API.FETCH_PAY_ACCOUNT_INFO;\r\n        fetch(url, {\r\n            headers: {\r\n                'Accept': 'application/json',\r\n                'Content-Type': 'application/json',\r\n                'Authorization': authenticationService()\r\n            }\r\n        }).then((response) => {\r\n            if (response.status == 500)\r\n                throw new Error(response.status)\r\n            return response.json()\r\n        }).then((data) => {\r\n            if (data.error) {\r\n                displayGeneralMessage(data.error,undefined,undefined,undefined,{autoRedirect:false});\r\n            } else {\r\n                CustomerPortalDispatcher.dispatch({\r\n                    actionType: 'FETCH_PAY_ACCOUNT_INFO',\r\n                    documents: data.documents,\r\n                    useStoredCard: data.useStoredCard,\r\n                    surchargeMessage: data.surchargeMessage,\r\n                    makePaymentMessage: data.makePaymentMessage,\r\n                    maxPaymentAmount: data.maxPaymentAmount,\r\n                    paymentType : data.supportedPaymentTypes || [],\r\n                    allowPayments: data.allowPayments,\r\n                    allowOrderPayments: data.allowOrderPayments,\r\n                    allowQuotePayments: data.allowQuotePayments,\r\n                    allowUnallocatedPayments: data.allowUnallocatedPayments,\r\n                    customerCurrency: data.customerCurrency,\r\n                    reset: reset\r\n                });\r\n            }\r\n        }).catch((error) => {\r\n            displayGeneralMessage();\r\n            console.error(`fetch error: ${error}`);\r\n        });\r\n    }\r\n    async fetchPayAccountDetails(docNo,source){\r\n      return new Promise((resolve, reject) => {\r\n        let params = { docNo: docNo , source: source};\r\n        let url = API.HOST + API.FETCH_PAY_ACCOUNT_DETAILS + '?';\r\n        url += this.convertObjectToQueryString(params);\r\n        fetch(url, {\r\n          headers: {\r\n            'Accept': 'application/json',\r\n            'Content-Type': 'application/json',\r\n            'Authorization': authenticationService()\r\n          }\r\n        }).then((response) => {\r\n          if (response.status == 500)\r\n          throw new Error(response.status)\r\n          return response.json()\r\n        }).then((data) => {\r\n          if (data.error) {\r\n            throw new Error(data.error)\r\n          }\r\n          CustomerPortalDispatcher.dispatch({\r\n            actionType: 'FETCH_PAY_ACCOUNT_DETAILS',\r\n            data: data,\r\n            docNo: docNo\r\n          });\r\n          resolve(data);\r\n        }).catch((error) => {\r\n          displayGeneralMessage();\r\n          console.error(`fetch error: ${error}`);\r\n        });\r\n      });\r\n    }\r\n    updatePayAccountSelection(docNo) {\r\n        CustomerPortalDispatcher.dispatch({\r\n            actionType: 'LOCAL_UPDATE_PAY_ACCOUNT_SELECTION',\r\n            docNo: docNo\r\n        });\r\n    }\r\n    updatePayAccountTotal(docNo,input) {\r\n        CustomerPortalDispatcher.dispatch({\r\n            actionType: 'LOCAL_UPDATE_PAY_ACCOUNT_TOTAL',\r\n            docNo: docNo,\r\n            input: input\r\n        });\r\n    }\r\n    selectAllPayment(selectAll) {\r\n        CustomerPortalDispatcher.dispatch({\r\n            actionType: 'LOCAL_SELECT_ALL_PAY',\r\n            selectAll: selectAll\r\n        });\r\n    }\r\n    fetchPaymentCards() {\r\n        let url = API.HOST + API.PAYMENT_CARDS_API;\r\n        fetch(url, {\r\n            headers: {\r\n                'Accept': 'application/json',\r\n                'Content-Type': 'application/json',\r\n                'Authorization': authenticationService()\r\n            }\r\n        }).then((response) => {\r\n            if (response.status == 500)\r\n                throw new Error(response.status)\r\n            return response.json()\r\n        }).then((data) => {\r\n            if (data.error) {\r\n                throw new Error(data.error)\r\n            }\r\n            CustomerPortalDispatcher.dispatch({\r\n                actionType: 'FETCH_PAYMENT_CARDS',\r\n                paymentCards: data\r\n            });\r\n        }).catch((error) => {\r\n            displayGeneralMessage();\r\n            console.error(`fetch error: ${error}`);\r\n        });\r\n    }\r\n    setPaymentCardToDefault(id) {\r\n        let params = {\r\n            cardId: id\r\n        };\r\n        let url = API.HOST + API.PAYMENT_CARDS_API + '?';\r\n        url += this.convertObjectToQueryString(params);\r\n        fetch(url, {\r\n            headers: {\r\n                'Accept': 'application/json',\r\n                'Content-Type': 'application/json',\r\n                'Authorization': authenticationService()\r\n            },\r\n            method: 'put',\r\n            // body: JSON.stringify({ cardId:id }),\r\n        }).then((response) => {\r\n            if (response.status !== 200)\r\n                throw new Error(response.status)\r\n            return response.json()\r\n        }).then((data) => {\r\n            CustomerPortalDispatcher.dispatch({\r\n                actionType: 'SET_PAYMENT_TO_DEFAULT',\r\n                id: id\r\n            });\r\n        }).catch((error) => {\r\n            displayGeneralMessage();\r\n            console.error(`fetch error: ${error}`);\r\n        });\r\n    }\r\n    deletePaymentCard(id) {\r\n        let params = {\r\n            cardId: id\r\n        };\r\n        let url = API.HOST + API.PAYMENT_CARDS_API + '?';\r\n        url += this.convertObjectToQueryString(params);\r\n        fetch(url, {\r\n            method: 'delete',\r\n            headers: {\r\n                'Accept': 'application/json',\r\n                'Content-Type': 'application/json',\r\n                'Authorization': authenticationService()\r\n            }\r\n        }).then((response) => {\r\n            if (response.status !== 200)\r\n                throw new Error(response.status)\r\n            return response.json()\r\n        }).then((data) => {\r\n            CustomerPortalDispatcher.dispatch({\r\n                actionType: 'DELETE_PAYMENT_CARD',\r\n                id: id\r\n            });\r\n        }).catch((error) => {\r\n            displayGeneralMessage();\r\n            console.error(`fetch error: ${error}`);\r\n        });\r\n    }\r\n    fetchPrepayment(docType){\r\n      let url = API.HOST + API.FETCH_PAY_ACCOUNT_INFO+\"?docType=\"+docType;\r\n      fetch(url, {\r\n          headers: {\r\n              'Accept': 'application/json',\r\n              'Content-Type': 'application/json',\r\n              'Authorization': authenticationService()\r\n          }\r\n      }).then((response) => {\r\n          if (response.status == 500)\r\n              throw new Error(response.status)\r\n          return response.json()\r\n      }).then((data) => {\r\n          if (data.error) {\r\n              displayGeneralMessage(data.error,undefined,undefined,undefined,{autoRedirect:false});\r\n          } else {\r\n              CustomerPortalDispatcher.dispatch({\r\n                  actionType: 'FETCH_PREPAYMENT',\r\n                  documents: data.documents,\r\n                  surchargeMessage: data.surchargeMessage,\r\n                  useStoredCard: data.useStoredCard,\r\n                  makePaymentMessage: data.makePaymentMessage,\r\n                  maxPaymentAmount: data.maxPaymentAmount,\r\n                  paymentType : data.supportedPaymentTypes || [],\r\n                  allowPayments: data.allowPayments,\r\n                  allowOrderPayments: data.allowOrderPayments,\r\n                  allowQuotePayments: data.allowQuotePayments,\r\n                  allowUnallocatedPayments: data.allowUnallocatedPayments,\r\n                  customerCurrency: data.customerCurrency,\r\n              });\r\n          }\r\n      }).catch((error) => {\r\n          displayGeneralMessage();\r\n          console.error(`fetch error: ${error}`);\r\n      });\r\n    }\r\n    resetPrepayment(){\r\n      CustomerPortalDispatcher.dispatch({\r\n          actionType: 'RESET_PREPAYMENT'\r\n      });\r\n    }\r\n    updatePrepaymentSelection(docNo) {\r\n        CustomerPortalDispatcher.dispatch({\r\n            actionType: 'LOCAL_UPDATE_PREPAY',\r\n            docNo: docNo\r\n        });\r\n    }\r\n    updatePrepaymentTotal(docNo,input) {\r\n        CustomerPortalDispatcher.dispatch({\r\n            actionType: 'LOCAL_UPDATE_PREPAY_TOTAL',\r\n            docNo: docNo,\r\n            input: input\r\n        });\r\n    }\r\n    selectAllPrepayment(selectAll,type) {\r\n        CustomerPortalDispatcher.dispatch({\r\n            actionType: 'LOCAL_SELECT_ALL_PREPAY',\r\n            selectAll: selectAll,\r\n            type: type\r\n        });\r\n    }\r\n    insertUnallocatedPayment(transaction){\r\n        CustomerPortalDispatcher.dispatch({\r\n            actionType: 'INSERT_PREPAYMENT',\r\n            transaction: transaction\r\n        });\r\n    }\r\n    fetchContactFormInfo() {\r\n        let url = API.HOST + API.FETCH_CONTACT_INFO_API;\r\n        fetch(url, {\r\n            headers: {\r\n                'Accept': 'application/json',\r\n                'Content-Type': 'application/json',\r\n                'Authorization': authenticationService()\r\n            }\r\n        }).then((response) => {\r\n            if (response.status !== 200)\r\n                throw new Error(response.status)\r\n            return response.json()\r\n        }).then((data) => {\r\n            CustomerPortalDispatcher.dispatch({\r\n                actionType: 'SET_CUSTOMER_INFO',\r\n                customerInfo: data\r\n            });\r\n        }).catch((error) => {\r\n            displayGeneralMessage();\r\n            console.error(`fetch error: ${error}`);\r\n            CustomerPortalDispatcher.dispatch({\r\n                actionType: 'SET_CUSTOMER_INFO',\r\n                customerInfo: {}\r\n            });\r\n        });\r\n    }\r\n    sendContactMessage(msg,response='Your message has been sent to our team') {\r\n        let url = API.HOST + API.POST_CONTACT_API;\r\n        fetch(url, {\r\n            method: 'post',\r\n            headers: {\r\n                'Accept': 'application/json',\r\n                'Content-Type': 'application/json',\r\n                'Authorization': authenticationService()\r\n            },\r\n            body: JSON.stringify(msg),\r\n        }).then((response) => {\r\n            if (response.status !== 200)\r\n                throw new Error(response.status)\r\n            return response.json()\r\n        }).then((data) => {\r\n            displayGeneralMessage(response, 'Sent!', 'success', true, { autoRedirect: true });\r\n            CustomerPortalDispatcher.dispatch({\r\n                actionType: 'RESET_CUSTOMER_INFO',\r\n            });\r\n        }).catch((error) => {\r\n            displayGeneralMessage();\r\n            console.error(`fetch error: ${error}`);\r\n        });\r\n    }\r\n    submitChangePasswordForm(input) {\r\n        let url = API.HOST + API.POST_PASSWORD_API;\r\n        fetch(url, {\r\n            method: 'post',\r\n            headers: {\r\n                'Accept': 'application/json',\r\n                'Content-Type': 'application/json',\r\n                'Authorization': authenticationService()\r\n            },\r\n            body: JSON.stringify(input),\r\n        }).then((response) => {\r\n            if (response.status === 200) {\r\n                displayGeneralMessage('Password Updated', 'Updated!', 'success', true, { autoRedirect: false });\r\n                return response;\r\n            } else {\r\n                return response.json()\r\n            }\r\n        }).then((data) => {\r\n            CustomerPortalDispatcher.dispatch({\r\n                actionType: 'SET_ERROR',\r\n                errors: data\r\n            });\r\n        }).catch((error) => {\r\n            //displayGeneralMessage(error);\r\n            console.error(`fetch error: ${error}`);\r\n        });\r\n    };\r\n    fetchMyAccountInfo() {\r\n        let url = API.HOST + API.MY_ACCOUNT_API;\r\n        fetch(url, {\r\n            headers: {\r\n                'Accept': 'application/json',\r\n                'Content-Type': 'application/json',\r\n                'Authorization': authenticationService()\r\n            }\r\n        }).then((response) => {\r\n            if (response.status !== 200)\r\n                throw new Error(response.status)\r\n            return response.json()\r\n        }).then((data) => {\r\n            CustomerPortalDispatcher.dispatch({\r\n                actionType: 'FETCH_MY_ACCOUNT_INFO',\r\n                accountInfo: data\r\n            });\r\n        }).catch((error) => {\r\n            displayGeneralMessage();\r\n            console.error(`fetch error: ${error}`);\r\n        });\r\n    }\r\n    updateMyAccountInfo(inputs) {\r\n        let params = {\r\n            name: inputs.name,\r\n            phoneNumber: inputs.phoneNumber,\r\n            email: inputs.email\r\n        };\r\n        let url = API.HOST + API.MY_ACCOUNT_API;\r\n        fetch(url, {\r\n            method: 'put',\r\n            headers: {\r\n                'Accept': 'application/json',\r\n                'Content-Type': 'application/json',\r\n                'Authorization': authenticationService()\r\n            },\r\n            body: JSON.stringify(params),\r\n        }).then((response) => {\r\n            if (response.status == 500)\r\n                throw new Error(response.status);\r\n            return response.json();\r\n        }).then((data) => {\r\n            if (data.errorMessage) {\r\n              data.error = { error: data.errorMessage }\r\n            }\r\n            if (!data.error) {\r\n                displayToast('info', data.message || 'Updated');;\r\n            }\r\n            CustomerPortalDispatcher.dispatch({\r\n                actionType: 'UPDATE_ACCOUNT_INFO',\r\n                errors: { error: data.error },\r\n                name: inputs.name\r\n            });\r\n        }).catch((error) => {\r\n            displayGeneralMessage();\r\n            console.error(`fetch error: ${error}`);\r\n        });\r\n    }\r\n    fetchPaymentInvoiceInfo(inputs,docType) {\r\n        let params = {\r\n            customerno: inputs.customerno.trim(),\r\n            documentNo: inputs.invoiceno.trim(),\r\n            docType: docType\r\n        };\r\n        if (docType == 'unapplied') params.zipCode = inputs.postalCode.trim();\r\n        let url = API.HOST + API.FETCH_PAYMENT_INVOICE_INFO + '?';\r\n        url += this.convertObjectToQueryString(params);\r\n        fetch(url, {\r\n            headers: {\r\n                'Accept': 'application/json',\r\n                'Content-Type': 'application/json',\r\n                'Authorization': authenticationService()\r\n            }\r\n        }).then((response) => {\r\n            if (response.status !== 200)\r\n                throw new Error(response.status);\r\n            return response.json()\r\n        }).then((data) => {\r\n            if (typeof data === \"string\") data = JSON.parse(data);\r\n            CustomerPortalDispatcher.dispatch({\r\n                actionType: 'FETCH_PAYMENT_INVOICE_INFO',\r\n                invoiceInfo: data\r\n            });\r\n        }).catch((error) => {\r\n            displayGeneralMessage();\r\n            console.error(`fetch error: ${error}`);\r\n        });\r\n    }\r\n    fetchPaymentInvoiceReceipt(id) {\r\n        // id is transaction id\r\n        id = id.replace(/[^\\x00-\\x7F]/g, \"\"); // remove invalid characters\r\n        let url = API.HOST + API.FETCH_TRANSACTION_INFO + '?transactionId=' + id;\r\n        //console.log(url);\r\n        fetch(url, {\r\n            headers: {\r\n                'Authorization': authenticationService()\r\n            }\r\n        }).then((response) => {\r\n            if (response.status !== 200)\r\n                throw new Error(response.status)\r\n            return response.json();\r\n        }).then((json) => {\r\n            let data\r\n            if (json.error) {\r\n                data = {\r\n                    transactionInfo:{\r\n                        Status: \"error\",\r\n                        errorCode: json.error,\r\n                        formattedAmount:\"\",\r\n                    }\r\n                }\r\n            } else {\r\n                let documentNo = \"\";\r\n                //capitalize TransactionDetails, EntityFramework object\r\n                if (json.TransactionDetails[0]) {\r\n                    documentNo = json.TransactionDetails[0].DocumentNo;\r\n                }\r\n\r\n                 data = {\r\n                    receiptInfo: {\r\n                        cardname: json.CardName,\r\n                        cardno: json.CardNumber,\r\n                        docno: documentNo,\r\n                        docamount: json.Amount,\r\n                        docreference: json.TransactionId,\r\n                        doccode: json.AuthCode,\r\n                    },\r\n                    invoiceInfo: {\r\n                        customerno: json.ArCustomerNo,\r\n                        invoiceno: documentNo,\r\n                        invoiceamount: json.Amount,\r\n                    },\r\n                    transactionInfo: json\r\n                };\r\n            }\r\n            return data;\r\n        }).then((data) => {\r\n            CustomerPortalDispatcher.dispatch({\r\n                actionType: 'FETCH_PAYMENT_INVOICE_RECEIPT',\r\n                data: data\r\n            });\r\n        }).catch((error) => {\r\n            displayGeneralMessage();\r\n            console.error(`fetch error: ${error}`);\r\n        });\r\n    }\r\n    async getCustomizationList(){\r\n        return new Promise((resolve, reject) => {\r\n             let url = API.HOST + API.GET_CUSTOMIZATION;\r\n             fetch(url, {\r\n                 headers: {\r\n                     'Accept': 'application/json',\r\n                     'Content-Type': 'application/json',\r\n                     'Authorization': authenticationService()\r\n                 }\r\n             }).then((response) => {\r\n                 if (response.status !== 200)\r\n                     throw new Error(response.status)\r\n                 return response.json()\r\n             }).then((data) => {\r\n                 resolve(data);\r\n             }).catch((error) => {\r\n                 displayGeneralMessage();\r\n                 console.error(`fetch error: ${error}`);\r\n             });\r\n        });\r\n    }\r\n    fetchCustomization(name){\r\n       let url = API.HOST + API.GET_CUSTOMIZATION + \"?name=\"+name;\r\n       fetch(url, {\r\n           headers: {\r\n               'Accept': 'application/json',\r\n               'Content-Type': 'application/json',\r\n               'Authorization': authenticationService()\r\n           }\r\n       }).then((response) => {\r\n           if (response.status !== 200)\r\n               throw new Error(response.status)\r\n           return response.text()\r\n       }).then((data) => {\r\n           CustomerPortalDispatcher.dispatch({\r\n               actionType: 'FETCH_CUSTOMIZATION',\r\n               content: data,\r\n               name: name\r\n           });\r\n       }).catch((error) => {\r\n           displayGeneralMessage();\r\n           console.error(`fetch error: ${error}`);\r\n       });\r\n    }\r\n    async validateToken(token,id){\r\n        return new Promise((resolve, reject) => {\r\n            let url = API.HOST + API.VALIDATE_TOKEN +'?';\r\n            url += this.convertObjectToQueryString({merchantId:id,token:token});\r\n            fetch(url, {\r\n                method: 'post',\r\n                headers: {\r\n                  'Accept': 'application/json',\r\n                  'Content-Type': 'application/json',\r\n                },\r\n            }).then((response) => {\r\n                if (response.status == 500)\r\n                    throw new Error(response.status)\r\n                return response.json();\r\n            }).then((data) => {\r\n                if (!data.error) {\r\n                  resolve({success:true,user:data});\r\n                } else {\r\n                  resolve({success:false});\r\n                }\r\n            }).catch((error) => {\r\n                console.error(`fetch error: ${error}`);\r\n            });\r\n        });\r\n    }\r\n    async getPayPalCredentials(){\r\n        return new Promise((resolve, reject) => {\r\n            let url = API.HOST + API.PAYPAL_CREDENTIALS;\r\n            fetch(url, {\r\n            }).then((response) => {\r\n                if (response.status == 500)\r\n                    throw new Error(response.status)\r\n                return response.json();\r\n            }).then((data) => {\r\n              resolve(data);\r\n            }).catch((error) => {\r\n                console.error(`fetch error: ${error}`);\r\n            });\r\n        });\r\n    }\r\n    async createPayPalTransaction(amount, currency, orderId,customer,transaction) {\r\n        return new Promise((resolve, reject) => {\r\n            let data = transaction;\r\n            data.Currency = currency;\r\n            data.Amount = amount;\r\n            data.Reference = orderId;\r\n            data.ARCustomerNo = customer;\r\n            let url = API.HOST + API.PAYPAL_CREATE_ORDER;\r\n            fetch(url, {\r\n                method: 'post',\r\n                headers: {\r\n                  'Accept': 'application/json',\r\n                  'Content-Type': 'application/json',\r\n                },\r\n                body: JSON.stringify(data),\r\n            }).then((response) => {\r\n                if (response.status == 500)\r\n                    throw new Error(response.status)\r\n                return response.json();\r\n            }).then((data) => {\r\n              resolve(data);\r\n            }).catch((error) => {\r\n                console.error(`fetch error: ${error}`);\r\n            });\r\n        });\r\n    }\r\n    async completePayPalTransaction(data){\r\n          return new Promise((resolve, reject) => { \r\n              let url = API.HOST + API.PAYPAL_COMPELETE_ORDER;\r\n              fetch(url, {\r\n                method: 'post',\r\n                headers: {\r\n                  'Accept': 'application/json',\r\n                  'Content-Type': 'application/json',\r\n                },\r\n                body: JSON.stringify(data),\r\n              }).then((response) => {\r\n                  if (response.status == 500)\r\n                      throw new Error(response.status)\r\n                  return response.json();\r\n              }).then((data) => {\r\n                console.log(data)\r\n                resolve(data);\r\n              }).catch((error) => {\r\n                  console.error(`fetch error: ${error}`);\r\n              });\r\n          });\r\n    }\r\n    async setPayPalError(error){\r\n            return new Promise((resolve, reject) => { \r\n                let url = API.HOST + API.PAYPAL_TRANSACTION_ERROR;\r\n                fetch(url, {\r\n                  method: 'post',\r\n                  headers: {\r\n                    'Accept': 'application/json',\r\n                    'Content-Type': 'application/json',\r\n                  },\r\n                  body: JSON.stringify(error),\r\n                }).then((response) => {\r\n                    if (response.status == 500)\r\n                        throw new Error(response.status)\r\n                    return response.json();\r\n                }).then((data) => {\r\n                  console.log(data)\r\n                  resolve(data);\r\n                }).catch((error) => {\r\n                    console.error(`fetch error: ${error}`);\r\n                });\r\n            });\r\n        }\r\n    async fetchPaymentType(currency) {\r\n        return new Promise((resolve, reject) => {\r\n          //let data = {\r\n          //  useStoredCard: true,\r\n          //  allowPayments: true,\r\n          //  supportedPaymentTypes: [ {\"name\": \"CC\",\"surcharge\": \"0\"}, {\"name\": \"ACH\",\"surcharge\": \"0\"} ],\r\n          //};\r\n          //resolve(data);\r\n            let url = API.HOST + API.GET_PAYMENT_SETTING+\"?currency=\"+currency;\r\n            fetch(url, {\r\n                method: 'get',\r\n                headers: {\r\n                    'Accept': 'application/json',\r\n                    'Content-Type': 'application/json',\r\n                    'Authorization': authenticationService()\r\n                },\r\n            }).then((response) => {\r\n                if (response.status == 500)\r\n                    throw new Error(response.status)\r\n                return response.json()\r\n            }).then((data) => {\r\n                  CustomerPortalDispatcher.dispatch({\r\n                     actionType: 'OVERALL_PAYMENT_SETTINGS',\r\n                     data: data,\r\n                     currency: currency,\r\n                 });\r\n                resolve(data);\r\n            }).catch((error) => {\r\n                console.error(`fetch error: ${error}`);\r\n            });\r\n        })\r\n    };\r\n}\r\n\r\nexport default new CustomerPortalAction();\r\n","export const HOST = '';\r\n// export const HOST = 'https://vserpdp.customer-portal.biz';\r\n\r\nexport const VALIDATE_TOKEN = 'api/admin/login';\r\nexport const POST_NEW_ACCOUNT = '/api/account/register';\r\nexport const POST_RESET_PASSWORD_FORM = '/api/account/forgotpassword';\r\nexport const POST_RESET_PASSWORD = '/api/account/resetpassword';\r\nexport const POST_REQUEST_ACCOUNT = '/api/account/requestuser';\r\n\r\nexport const SALESPERSON_AR_API = '/api/salesperson';\r\nexport const FETCH_SALESPERSON_LIST = '/erp/salesperson/customers';\r\n\r\nexport const FETCH_HEADER_INFO = '/api/merchant/headerfooter';\r\nexport const FETCH_POPUP_API = '/erp/account/popupcomment';\r\nexport const PUT_POPUP_DISMISS = '/erp/account/disablepopup';\r\n\r\nexport const GET_BROADCAST_DATE = '/api/account/GetBroadcastReadDate';\r\nexport const SET_BROADCAST_DATE = '/api/account/SetBroadcastReadDate';\r\n\r\nexport const CUSTOMER_ACTIVITY_API = '/erp/customer/customeractivity';\r\nexport const CUSTOMER_INFO_API = '/erp/customer/customerinfo';\r\n\r\nexport const FETCH_TRANSACTIONS_API = '/erp/customer/transactions';\r\nexport const FETCH_TRANSACTION_SETTINGS_API = '/erp/customer/viewtransactionsettings';\r\nexport const FETCH_TRANSACTION_UPDATE_DATE = '/erp/customer/GetLatestDocumentDate';\r\n\r\nexport const FETCH_ORDERS_LIST_API = '/erp/customer/orders';\r\nexport const FETCH_ORDERS_DETAILS = '/erp/customer/orderDetails';\r\nexport const FETCH_ORDERS_ITEM_API = '/erp/customer/backorderitems';\r\nexport const FETCH_ORDERS_SETTINGS_API = '/erp/customer/viewordersettings';\r\nexport const FETCH_ORDERS_UPDATE_DATE = '/erp/customer/GetLatestOrderDate';\r\nexport const FETCH_DRILLDOWN_TO_INVOICE = '/erp/customer/InvoicesFromOrder';\r\nexport const FETCH_DRILLDOWN_FROM_QUOTE = '/erp/customer/quoteorder';\r\nexport const FETCH_QUOTE_TO_ORDER = '/erp/customer/QuoteToOrder';\r\nexport const FETCH_DOCUMENT_DRILLDOWN = '/erp/customer/DocumentDrilldown';\r\n\r\nexport const FETCH_DOC_DETAILS_AR_API = '/erp/customer/ardocumentdetails';\r\nexport const FETCH_DOC_DETAILS_OE_API = '/erp/customer/oedocumentdetails';\r\nexport const FETCH_DOC_DETAILS_FWLTC_API = '/erp/frameworkltc/invoice';\r\nexport const FETCH_DOC_DETAILS_CUSTOM_API = '/api/customizations';\r\n\r\nexport const FETCH_DOC_MERCHANT_API = '/api/merchant/billinginfo/';\r\n\r\nexport const FETCH_PAY_ACCOUNT_INFO = '/erp/customer/viewpayaccount';\r\nexport const FETCH_PAY_ACCOUNT_DETAILS = '/erp/customer/viewpayaccountdetails';\r\nexport const GET_PAYMENT_SETTING = '/erp/customer/paymentsettings';\r\nexport const PAYMENT_CARDS_API = '/api/customer/storedpaymentinfo';\r\n\r\nexport const FETCH_CONTACT_INFO_API = '/erp/user/contactusinfo';\r\nexport const SEND_CONTACT_WITHOUT_LOGIN = '/erp/customer/contactus';\r\nexport const POST_CONTACT_API = '/erp/customer/contactus';\r\n\r\nexport const MY_ACCOUNT_API = '/api/account/';\r\nexport const POST_PASSWORD_API = '/api/account/changepassword';\r\n\r\nexport const FETCH_PAYMENT_INVOICE_INFO = '/erp/customer/document';\r\nexport const POST_PAYMENT_INVOICE = '/erp/customer/quickpay';\r\nexport const FETCH_INVOICE_RECEIPT_INFO = '/erp/';\r\nexport const FETCH_TRANSACTION_INFO = '/api/transaction';\r\n\r\nexport const GET_CUSTOMIZATION = '/api/Customizations';\r\n\r\nexport const PAYPAL_CREDENTIALS = '/api/paypal/clientcredentials';\r\nexport const PAYPAL_CREATE_ORDER = '/api/paypal/createorder';\r\nexport const PAYPAL_COMPELETE_ORDER = '/api/paypal/approve';\r\nexport const PAYPAL_TRANSACTION_ERROR = '/api/paypal/error';","import CustomerPortalDispatcher from '../dispatcher/CustomerPortalDispatcher';\r\n\r\nimport EventEmitter from 'events';\r\nimport _ from 'lodash';\r\n\r\nlet CHANGE_EVENT = 'change';\r\n\r\n// ------------------------------- General -------------------------------\r\n// SET VARIABLES HERE\r\nlet _user = undefined;\r\nlet _header = undefined;\r\nlet _language = undefined;\r\nlet _errors = undefined;\r\nlet _notifications = undefined;\r\nlet _broadcastStatus = true;\r\n\r\nlet _salespersonCustomer = undefined;\r\n\r\nlet _cusActivity = undefined;\r\n\r\nlet _transactionData = undefined;\r\nlet _transactionSettings = { type: 0, page: 1, perpage: 10 };\r\nlet _transactionDate = undefined;\r\n\r\nlet _orderData = undefined;\r\nlet _orderSettings = undefined;\r\nlet _orderDate = undefined;\r\nlet _orderDrillDown = undefined;\r\nlet _orderDetails = {};\r\nlet _transactionDetail = undefined;\r\nlet _merchantBilling = undefined;\r\n\r\nlet _payAccountInfo = { total: 0.00, documents: undefined, checked: undefined, checkedDocuments: [] };\r\nlet _payAccountDetails = {};\r\nlet _prepaymentDocs = undefined;\r\nlet _paymentCards = undefined;\r\n\r\nlet _accountInfo = undefined;\r\nlet _customerInfo = undefined;\r\nlet _recentInvoice = undefined;\r\nlet _recentReceipt = undefined;\r\n\r\nlet _invoiceError = undefined;\r\nlet _invoiceInfo = undefined;\r\nlet _invoiceReceipt = undefined;\r\nlet _customization = undefined;\r\nlet _customizationName = undefined;\r\n\r\nclass CustomerPortalStore extends EventEmitter {\r\n    constructor() {\r\n        super();\r\n        this.dispatchToken = CustomerPortalDispatcher.register(this.dispatcherCallback.bind(this))\r\n    }\r\n    emitChange() {\r\n        this.emit(CHANGE_EVENT);\r\n    }\r\n\r\n    addChangeListener(callback) {\r\n        this.on(CHANGE_EVENT, callback);\r\n    }\r\n    removeChangeListener(callback) {\r\n        this.removeListener(CHANGE_EVENT, callback);\r\n    }\r\n    clearAllData() {\r\n        _errors = undefined;\r\n        _notifications = undefined;\r\n        _header.newLogin = false;\r\n        _salespersonCustomer = undefined;\r\n        _cusActivity = undefined;\r\n        _transactionData = undefined;\r\n        _transactionSettings = {};\r\n        _transactionDate = undefined;\r\n        _orderData = undefined;\r\n        _orderSettings = {};\r\n        _orderDate = undefined;\r\n        _orderDrillDown = undefined;\r\n        _orderDetails = {};\r\n        _transactionDetail = undefined;\r\n        _merchantBilling = undefined;\r\n        _payAccountInfo = { total: 0.00, documents: undefined };\r\n        _payAccountDetails = {};\r\n        _paymentCards = undefined;\r\n        _accountInfo = undefined;\r\n        _customerInfo = undefined;\r\n        _recentInvoice = undefined;\r\n        _recentReceipt = undefined;\r\n        _invoiceError = undefined;\r\n        _invoiceInfo = undefined;\r\n        _invoiceReceipt = undefined;\r\n        _customization = undefined;\r\n        _customizationName = undefined;\r\n    }\r\n\r\n    // ------------------------------- General -------------------------------\r\n    // SET GET METHODS HERE\r\n    getGeneralError() {\r\n        return _errors;\r\n    }\r\n    getNotifications() {\r\n        return _notifications;\r\n    }\r\n    // ---------------------------------------------------------\r\n    getCurrentUser() {\r\n        return _user;\r\n    }\r\n    getCurrentUsersName(){\r\n        return (JSON.parse(localStorage.currentUser || sessionStorage.currentUser || '{}').name) || \"\";\r\n    }\r\n    getCurrentUserName(){\r\n        return (JSON.parse(localStorage.currentUser || sessionStorage.currentUser || '{}').username) || \"\";\r\n    }\r\n    getCustomerNumber() {\r\n        if(_salespersonCustomer){\r\n          return (_salespersonCustomer.arCustomerNo)\r\n        } else {\r\n          return (JSON.parse(localStorage.currentUser || sessionStorage.currentUser || '{}').customerNumber) || \"\";\r\n        }\r\n    }\r\n    getCurrentUserType(){\r\n        return (JSON.parse(localStorage.currentUser || sessionStorage.currentUser || '{}').userType)\r\n    }\r\n    getHeaderLogo() {\r\n        return _header.headerInfo.logo;\r\n    }\r\n    getHeaderInfo() {\r\n        return {\r\n          header: _header,\r\n          salesperson: _salespersonCustomer,\r\n          language: _language,\r\n        };\r\n    }\r\n    getCompanyName() {\r\n        return _header.headerInfo.companyName;\r\n    }\r\n    getERP() {\r\n        return (_header.headerInfo) ? (_header.headerInfo.erp) : ('');\r\n    }\r\n    getAllowPartialPayment(){\r\n      return _header.headerInfo.allowPartialPayment;\r\n    }\r\n    getBroadCastStartDate() {\r\n        return _header.headerInfo.broadcastStartDate;\r\n    }\r\n    getBroadCastEndDate(){\r\n        return _header.headerInfo.broadcastExpiryDate;\r\n    }\r\n    getBroadCastStatus(){\r\n        return _broadcastStatus;\r\n    }\r\n    getBroadCastMessage() {\r\n        return {\r\n            title: _header.headerInfo.broadcastTitle,\r\n            message: _header.headerInfo.broadcastMessage\r\n        };\r\n    }\r\n    getShouldUseCustomTransaction() {\r\n        return false;\r\n    }\r\n    getShouldUseCustomOrder() {\r\n        return false;\r\n    }\r\n    getSalesPersonCustomer(){\r\n      return _salespersonCustomer;\r\n    }\r\n    getActivityCustomerActivity() {\r\n        return _cusActivity;\r\n    }\r\n    getRecentInvoice(){\r\n        return _recentInvoice;\r\n    }\r\n    getRecentReceipt(){\r\n        return _recentReceipt;\r\n    }\r\n    getAccountActivitySetting() {\r\n        let settings = _header.headerInfo.siteSettings;\r\n        return _.find(settings, ['endpoint', \"Acitivty\"]);\r\n    }\r\n    getInvoiceCustomizeSetting() {\r\n        return _header.headerInfo.siteSettings\r\n    }\r\n    getTransactions() {\r\n        return _transactionData;\r\n    }\r\n    getTransactionSettings() {\r\n        return _transactionSettings;\r\n    }\r\n    getTransactionsUpdateDate() {\r\n        return _transactionDate;\r\n    }\r\n    getOrders() {\r\n        return _orderData;\r\n    }\r\n    getOrderSettings() {\r\n        return _orderSettings;\r\n    }\r\n    getOrderUpdateDate() {\r\n        return _orderDate;\r\n    }\r\n    getOrderDrillDown(){\r\n        return _orderDrillDown;\r\n    }\r\n    getOrderDetails(docNo){\r\n      return _orderDetails[docNo];\r\n    }\r\n    getTransactionDetail() {\r\n        return _transactionDetail;\r\n    }\r\n    getMerchantBillingInfo() {\r\n        return _merchantBilling;\r\n    }\r\n    getPayAccountInfo() {\r\n        return _payAccountInfo;\r\n    }\r\n    getPayAccountDetails(docNo){\r\n      return _payAccountDetails[docNo];\r\n    }\r\n    getPrepayments(){\r\n        return _prepaymentDocs\r\n        // return _.filter(_prepaymentDocs,{docType: \"order\"})\r\n    }\r\n    getPayAccountChecked() {\r\n        return _.filter(_payAccountInfo.documents, { checked: true });\r\n    }\r\n    getPaymentCards() {\r\n        return _paymentCards;\r\n    }\r\n    getAccountInfo() {\r\n        return _accountInfo;\r\n    }\r\n    getCustomerInfo() {\r\n        return _customerInfo;\r\n    }\r\n    getPaymentInvoiceError() {\r\n        return _invoiceError;\r\n    }\r\n    getPaymentInvoiceInfo() {\r\n        return _invoiceInfo;\r\n    }\r\n    getPaymentInvoiceReceipt() {\r\n        return _invoiceReceipt;\r\n    }\r\n    getCusomization(){\r\n      return _customization;\r\n    }\r\n    getCusomizationName(){\r\n      return _customizationName;\r\n    }\r\n    // --------------------------ACTION METHODS----------------------\r\n    dispatcherCallback(action) {\r\n        //dispatcher call back function\r\n        //console.log(action)\r\n        switch (action.actionType) {\r\n            // ------------------------------- General -------------------------------\r\n            case \"RELOAD\":\r\n                break;\r\n            case \"SET_ERROR\":\r\n                _errors = action.errors;\r\n                break;\r\n            case \"CLEAR_ERROR\":\r\n                _errors = undefined;\r\n                break;\r\n            case 'SET_HEADER':\r\n                _header = action.header;\r\n                if(!localStorage.currentUser){\r\n                  let currentLangeuage = localStorage.language\r\n                  localStorage.language = action.language;\r\n                  _language = action.language;\r\n                  window.translate();\r\n                  if(currentLangeuage != action.language) window.translate();\r\n                } else {\r\n                  _language = (JSON.parse(localStorage.currentUser || sessionStorage.currentUser || '{}').language);\r\n                }\r\n                break;\r\n            case 'SET_LANGUAGE':\r\n                localStorage.language = action.language;\r\n                _language = action.language;\r\n                window.translate();\r\n                break;\r\n            case 'SET_USER_LOGIN':\r\n                _header.login = action.secretKey;\r\n                _header.newLogin = true;\r\n                _header.headerInfo.userName = action.userName;\r\n                _header.features = action.features;\r\n                _user = action.user;\r\n                let currentLangeuage = localStorage.language\r\n                localStorage.language = action.language;\r\n                _language = action.language;\r\n                if(currentLangeuage != action.language) window.translate();\r\n                break;\r\n            case 'USER_LOG_OUT':\r\n                _user = undefined;\r\n                _header.login = undefined;\r\n                _header.headerInfo.userName = undefined;\r\n                _header.features = [];\r\n                this.clearAllData();\r\n                break;\r\n            case 'UPDATE_ACCOUNT_INFO':\r\n                if (!action.errors.error) {\r\n                    let rememberMe = localStorage.currentUser ? true : false;\r\n                    _header.headerInfo.userName = action.name;\r\n                    let user = JSON.parse(localStorage.currentUser || sessionStorage.currentUser);\r\n                    user.name = action.name;\r\n                    if (rememberMe) {\r\n                        localStorage.setItem('currentUser', JSON.stringify(user));\r\n                    } else {\r\n                        sessionStorage.setItem('currentUser', JSON.stringify(user));\r\n                    }\r\n                }\r\n                _errors = action.errors;\r\n                break;\r\n            case 'SET_SALESPERSON_CUSTOMER':\r\n                _salespersonCustomer = action.data;\r\n                _cusActivity = undefined;\r\n                _transactionData = undefined;\r\n                _transactionSettings = {};\r\n                _transactionDate = undefined;\r\n                _orderData = undefined;\r\n                _orderSettings = {};\r\n                _orderDate = undefined;\r\n                _orderDrillDown = undefined;\r\n                _transactionDetail = undefined;\r\n                _merchantBilling = undefined;\r\n                _payAccountInfo = { total: 0.00, documents: undefined };\r\n                _paymentCards = undefined;\r\n                _accountInfo = undefined;\r\n                _customerInfo = undefined;\r\n                break;\r\n            case 'SET_BROADCAST_STATUS':\r\n                _broadcastStatus = action.status;\r\n                break;\r\n            case 'SET_ACTIVITY_CUSTOMER_ACTIVITY':\r\n                _cusActivity = action.data;\r\n                break;\r\n            case 'FETCH_RECENT_INVOICES':\r\n                _recentInvoice = action.data;\r\n                break;\r\n            case 'FETCH_RECENT_RECEIPTS':\r\n                _recentReceipt = action.data;\r\n                break;\r\n            case 'FETCH_TRANSACTIONS':\r\n                _transactionData = action.transactionData;\r\n                _transactionSettings.type = action.type;\r\n                _transactionSettings.page = action.page;\r\n                _transactionSettings.perpage = action.perpage;\r\n                break;\r\n            case 'FETCH_TRANSACTIONS_CM':\r\n                _transactionData = action.data;\r\n                break;\r\n            case 'FETCH_TRANSACTION_SETTING':\r\n                _transactionSettings = { ..._transactionSettings, ...action.transactionSettings };\r\n                break;\r\n            case 'FETCH_TRANSACTION_UPDATE_DATE':\r\n                _transactionDate = action.data;\r\n                break;\r\n            case 'FETCH_ORDERS':\r\n                _orderData = action.orderData;\r\n                _orderSettings.doctype = action.doctype;\r\n                _orderSettings.page = action.page;\r\n                _orderSettings.perpage = action.perpage;\r\n                _orderSettings.viewby = action.viewby;\r\n                _orderData.viewby = action.viewby;\r\n                break;\r\n            case 'FETCH_ORDERS_CM':\r\n                _orderData = action.data;\r\n                break;\r\n            case 'FETCH_ORDER_SETTING':\r\n                _orderSettings = { ..._orderSettings, ...action.orderSettings };\r\n                break;\r\n            case 'FETCH_ORDER_UPDATE_DATE':\r\n                _orderDate = action.data;\r\n                break;\r\n            case 'SET_ORDER_DRILL_DOWN':\r\n                _orderDrillDown = action.data;\r\n                break;\r\n            case 'FETCH_ORDER_DETAILS':\r\n                _orderDetails[action.docNo] = action.data;\r\n                break;\r\n            case 'FETCH_TRANSACTION_DETAIL':\r\n                _transactionDetail = action.transactionDetail;\r\n                break;\r\n            case 'FETCH_MERCHANT_BILLING':\r\n                _merchantBilling = action.merchantBilling;\r\n                break;\r\n            case 'FETCH_PAY_ACCOUNT_INFO':\r\n                if (!_payAccountInfo.documents) _payAccountInfo.documents = {};\r\n                _payAccountInfo.ready = true;\r\n                action.documents.forEach((doc, key) => {\r\n                    _payAccountInfo.documents[doc.docNo] = { ..._payAccountInfo.documents[doc.docNo], ...doc };\r\n                })\r\n                _payAccountInfo.useStoredCard = action.useStoredCard;\r\n                _payAccountInfo.makePaymentMessage = action.makePaymentMessage;\r\n                _payAccountInfo.maxPaymentAmount = action.maxPaymentAmount;\r\n                _payAccountInfo.allowPayments = action.allowPayments;\r\n                _payAccountInfo.allowOrderPayments = action.allowOrderPayments;\r\n                _payAccountInfo.allowQuotePayments = action.allowQuotePayments;\r\n                _payAccountInfo.customerCurrency = action.customerCurrency;\r\n                _payAccountInfo.surchargeMessage = action.surchargeMessage;\r\n                _payAccountInfo.allowUnallocatedPayments = action.allowUnallocatedPayments;\r\n                let paymentType = _.sortBy(action.paymentType, function (elem) { return (elem == 'Credit Card' ? -1 : 1) });\r\n                _payAccountInfo.paymentType = paymentType;\r\n                if (action.reset) {\r\n                    _.forEach(_payAccountInfo.documents, ((doc, key) => {\r\n                        doc.checked = false;\r\n                    }));\r\n                    _payAccountInfo.total = 0;\r\n                }\r\n                break;\r\n            case 'FETCH_PAY_ACCOUNT_DETAILS':\r\n                _payAccountDetails[action.docNo] = action.data;\r\n                break;\r\n            case 'LOCAL_UPDATE_PAY_ACCOUNT_SELECTION':{\r\n                let docNo = action.docNo;\r\n                if (_payAccountInfo.documents[docNo]) {\r\n                    _payAccountInfo.documents[docNo].checked = !_payAccountInfo.documents[docNo].checked;\r\n                    if(!_payAccountInfo.selectedCurrency) _payAccountInfo.selectedCurrency = _payAccountInfo.documents[docNo].currencyCode;\r\n                    let checked = _payAccountInfo.documents[docNo].checked;\r\n                    let amountDue = 0;\r\n                    if (_payAccountInfo.documents[docNo].currentAmt) {\r\n                        if(checked){\r\n                            let total = parseFloat(_payAccountInfo.documents[docNo].currentAmt.replace(/[^\\d.]/g, ''));\r\n                            amountDue = total;\r\n                            _payAccountInfo.documents[docNo].input = total;\r\n                        } else { //uncheck\r\n                            amountDue = (_payAccountInfo.documents[docNo].input * -1);\r\n                            _payAccountInfo.documents[docNo].input = 0;\r\n                        }\r\n                    }\r\n                    _payAccountInfo.total += amountDue;\r\n                }\r\n                break;\r\n            }\r\n            case 'LOCAL_UPDATE_PAY_ACCOUNT_TOTAL': {\r\n                let docNo = action.docNo;\r\n                if (_payAccountInfo.documents[docNo]) {\r\n                    let amount = _payAccountInfo.documents[docNo].input;\r\n                    _payAccountInfo.documents[docNo].input = action.input;\r\n                    _payAccountInfo.total = _payAccountInfo.total - (amount) + (action.input);\r\n                }\r\n                break;\r\n            }\r\n            case 'LOCAL_SELECT_ALL_PAY': {\r\n                let amountDue = 0;\r\n                _.forEach(_payAccountInfo.documents, ((value, key) => {\r\n                    if(value.payable){\r\n                      value.checked = action.selectAll;\r\n                      if (action.selectAll) {\r\n                        let total = parseFloat(value.currentAmt.replace(/[^\\d.]/g, ''));\r\n                        value.input = total;\r\n                        amountDue += total;\r\n                      } else {\r\n                        value.input = 0;\r\n                      }\r\n                    }\r\n                }));\r\n                _payAccountInfo.total = amountDue;\r\n                break;\r\n            }\r\n            case 'FETCH_PAYMENT_CARDS':\r\n                _paymentCards = action.paymentCards;\r\n                _errors = undefined;\r\n                break;\r\n            case 'ADD_NEW_PAYMENT_CARD':\r\n                _paymentCards.push(action.paymentCard);\r\n                _errors = undefined;\r\n                break;\r\n            case 'SET_PAYMENT_TO_DEFAULT': {\r\n                let index = _.findIndex(_paymentCards, 'defaultCard');\r\n                let curIndex = _.findIndex(_paymentCards, { 'cardId': action.id });\r\n                if (_paymentCards[index]) {\r\n                    _paymentCards[index].defaultCard = false;\r\n                }\r\n                _paymentCards[curIndex].defaultCard = true;\r\n                break;\r\n            }\r\n            case \"DELETE_PAYMENT_CARD\": {\r\n                let index = _.findIndex(_paymentCards, { 'cardId': action.id });\r\n                _paymentCards.splice(index, 1);\r\n                break;\r\n            }\r\n            case \"RESET_PREPAYMENT\":{\r\n                _prepaymentDocs = undefined;\r\n                break;\r\n            }\r\n            case \"FETCH_PREPAYMENT\": {\r\n              if (!_prepaymentDocs) _prepaymentDocs = {};\r\n              action.documents.forEach((doc, key) => {\r\n                  _prepaymentDocs[doc.docNo] = { ..._prepaymentDocs[doc.docNo], ...doc };\r\n              });\r\n              _payAccountInfo.ready = true;\r\n              _payAccountInfo.useStoredCard = action.useStoredCard;\r\n              _payAccountInfo.makePaymentMessage = action.makePaymentMessage;\r\n              _payAccountInfo.maxPaymentAmount = action.maxPaymentAmount;\r\n              _payAccountInfo.allowPayments = action.allowPayments;\r\n              _payAccountInfo.surchargeMessage = action.surchargeMessage;\r\n              _payAccountInfo.allowOrderPayments  = action.allowOrderPayments;\r\n              _payAccountInfo.allowQuotePayments = action.allowQuotePayments;\r\n              _payAccountInfo.allowUnallocatedPayments = action.allowUnallocatedPayments;\r\n              _payAccountInfo.customerCurrency = action.customerCurrency;\r\n              let paymentType = _.sortBy(action.paymentType, function (elem) { return (elem == 'Credit Card' ? -1 : 1) });\r\n              _payAccountInfo.paymentType = paymentType;\r\n              if (action.reset) {\r\n                  _.forEach(_payAccountInfo.documents, ((doc, key) => {\r\n                      doc.checked = false;\r\n                  }));\r\n                  _payAccountInfo.total = 0;\r\n              }\r\n              break;\r\n            }\r\n            case 'OVERALL_PAYMENT_SETTINGS':\r\n                _payAccountInfo.customerCurrency = action.currency;\r\n                _payAccountInfo.allowPayments = action.data.allowPayments;\r\n                _payAccountInfo.paymentType = action.data.paymentRates;\r\n                _payAccountInfo.useStoredCard = action.data.useStoredCard;\r\n                break;\r\n            case \"LOCAL_UPDATE_PREPAY\":{\r\n              let docNo = action.docNo;\r\n              if (_prepaymentDocs[docNo]) {\r\n                  _prepaymentDocs[docNo].checked = !_prepaymentDocs[docNo].checked;\r\n                  _prepaymentDocs[docNo].input = (_prepaymentDocs[docNo].checked)?(_prepaymentDocs[docNo].currentAmt):(0);\r\n              }\r\n              break;\r\n            }\r\n            case \"LOCAL_UPDATE_PREPAY_TOTAL\":{\r\n              let docNo = action.docNo;\r\n              if (_prepaymentDocs[docNo]) {\r\n                  _prepaymentDocs[docNo].input = action.input;\r\n              }\r\n              break;\r\n            }\r\n            case \"LOCAL_SELECT_ALL_PREPAY\":{\r\n              let amountDue = 0;\r\n              _.forEach(_.filter(_prepaymentDocs,{docType: action.type}), ((value, key) => {\r\n                  value.checked = action.selectAll;\r\n              }));\r\n              break;\r\n            }\r\n            case \"INSERT_PREPAYMENT\":{\r\n              if(!_prepaymentDocs) _prepaymentDocs = {};\r\n              _prepaymentDocs['unapplied'] = {\r\n                customerNo: this.getCustomerNumber(),\r\n                docNo: action.transaction.reference,\r\n                input: action.transaction.amount,\r\n                docType: \"unapplied\",\r\n                checked: true\r\n              }\r\n              break;\r\n            }\r\n            case \"RESET_PASSWORD_FIELD\":\r\n                _errors = undefined;\r\n                break;\r\n            case \"FETCH_MY_ACCOUNT_INFO\":\r\n                _accountInfo = action.accountInfo;\r\n                break;\r\n            case \"UPDATE_MY_ACCOUNT_INFO\":\r\n                _accountInfo = { ..._accountInfo, ...action.accountInfo };\r\n                break;\r\n            case 'SET_CUSTOMER_INFO':\r\n                _customerInfo = action.customerInfo;\r\n                _customerInfo.message = '';\r\n                break;\r\n            case 'RESET_CUSTOMER_INFO':\r\n                _customerInfo.message = '';\r\n                _errors = undefined;\r\n                break;\r\n            case 'FETCH_PAYMENT_INVOICE_ERROR':\r\n                _invoiceError = action.error;\r\n                break;\r\n            case 'FETCH_PAYMENT_INVOICE_INFO':\r\n                _invoiceInfo = action.invoiceInfo;\r\n                break;\r\n            case 'FETCH_PAYMENT_INVOICE_RECEIPT':\r\n                _invoiceReceipt = action.data;\r\n                break;\r\n            case 'FETCH_CUSTOMIZATION':\r\n                _customization = action.content;\r\n                _customizationName = action.name;\r\n                break;\r\n            default:\r\n                break;\r\n        }\r\n        this.emitChange();\r\n        return true;\r\n    }\r\n};\r\n\r\nexport default new CustomerPortalStore();\r\n","import React from 'react';\r\n\r\nexport default class Loading extends React.Component {\r\n    static defaultProps = {\r\n        disableAll: false,\r\n        noSpace: false,\r\n    }\r\n    render() {\r\n        return (\r\n            <div className={this.props.className + \" \" + (this.props.noSpace ? ('loading no-space') : ('loading'))}>\r\n                {this.props.disableAll ? (<div className='backdrop'></div>) : (false)}\r\n                <div className='loading-icon-container'>\r\n                    <div className='loading-icon text-center fa-3x'>\r\n                        <i className=\"fa fa-spinner  fa-spin\"></i>\r\n                    </div>\r\n                </div>\r\n            </div>\r\n        );\r\n    }\r\n}","export default function () {\r\n    var user = localStorage.getItem(\"currentUser\") || sessionStorage.getItem(\"currentUser\")\r\n    if (!(user === null)) {\r\n        const currentUser = JSON.parse(user);\r\n        if (currentUser && currentUser.token) {\r\n            return `Bearer ${currentUser.token}`;\r\n        }\r\n    }\r\n\r\n    return {};\r\n}","module.exports = __webpack_public_path__ + \"static/media/error_icon.c462f0ed.svg\";","module.exports = __webpack_public_path__ + \"static/media/success_icon.b876c369.svg\";","import OrderEntry from \"./OrderEntry/OrderEntry\";\r\n\r\nexport const TRANSACTION_TYPE = {\r\n  'all': \"All\",\r\n  'invoice': \"Invoice\",\r\n  'unappliedcash': \"Unapplied Cash\",\r\n  'unapplied': \"Unapplied Cash\",\r\n  'debitnote': \"Debit Note\",\r\n  'creditnote': \"Credit Note\",\r\n  'interest': \"Interest\",\r\n  'prepayment': \"Prepayment\",\r\n  'receipt': \"Receipt\",\r\n  'refund': \"Refund\",\r\n  'active': \"Active\",\r\n  'future': \"Future\",\r\n  'standing': \"Standing\",\r\n  'quote': \"Quote\",\r\n  'order': \"Order\",\r\n}\r\n\r\nexport const REGISTRATION_FIELD = {\r\n    \"zipCode\":'Zip Code',\r\n    \"email\":'Email',\r\n    \"lastPaymentAmount\": 'Last Payment Amount',\r\n    \"lastInvoiceNumber\": 'Last Invoice Number',\r\n    \"lastInvoiceAmount\":'Last Invoice Amount'\r\n}\r\n\r\nexport const GRAPH_DATASET_OPT = {\r\n  barPercentage: 0.5,\r\n  borderWidth:1,\r\n  fontFamily:'open_sansregular, Arial',\r\n  hoverBackgroundColor:'#0066ff',\r\n  hoverBorderColor:'#0066ff',\r\n  backgroundColor: [ 'rgba(58,118,126, 1)', 'rgba(56,161,172,1)', 'rgba(52,201,209,1)' ],\r\n  borderColor: [ 'rgba(58,118,126, 1)', 'rgba(56,161,172,1)', 'rgba(52,201,209,1)' ]\r\n}\r\n\r\nexport const GRAPH_OPTION = {\r\n    plugins: {\r\n        datalabels: {\r\n            display: true,\r\n            align: 'end',\r\n            anchor: 'end',\r\n            offset: 2,\r\n            formatter: ((value, context) => { return document.getElementById('currencysymbol').value + value.replace(/(\\d)(?=(\\d{3})+(?!\\d))/g, '$1,') })\r\n        }\r\n    },\r\n    responsive: true,\r\n    hoverMode: 'label',\r\n    stacked: false,\r\n    legend: { display: false },\r\n    scales: {\r\n        xAxes: [{\r\n            gridLines: { show: false, drawOnChartArea: false, offsetGridLines: true },\r\n            scaleLabel: { display: true, labelString: \"\", fontSize: 18, fontFamily: 'open_sansregular, Arial' }\r\n        }],\r\n        yAxes: [{\r\n            type: 'linear',\r\n            display: true,\r\n            position: 'left',\r\n            integersOnly: true,\r\n            override: null,\r\n            gridLines: { show: true },\r\n            scaleLabel: { display: true, fontSize: 18, fontFamily: 'open_sansregular, Arial' },\r\n            labels: { template: \"\", fontFamily: 'open_sansregular, Arial' },\r\n            ticks: { beginAtZero: true }\r\n        }]\r\n    }\r\n};\r\n\r\nexport const N49LOGO = \"/content/0/N49logo.svg\";\r\n\r\nexport const FEATURES_ROUTE_MAPPING = {\r\n    AccountActivity: { pathName: 'activity', img: '/content/0/accountactivity.jpg'},\r\n    ViewTransactions: { pathName: \"transactions\", img: '/content/0/viewtransactions.jpg'},\r\n    ClickToPay: { pathName: \"quickpay\", img: 'abc'},\r\n    ViewOrders: { pathName: \"orders\", img: '/content/0/vieworders.jpg'},\r\n    StoredCards: { pathName: \"manageCredt\", img: '/content/0/managecredit.jpg'},\r\n    PayAccount: { pathName: \"payment\", img: '/content/0/payaccount.jpg' },\r\n    Prepayment: { pathName: \"prepayment\", img: '/content/0/payaccount.jpg' },\r\n    ContactUs: { pathName: \"contactus\", img: '/content/0/contactus.jpg' },\r\n    OrderEntry: { pathName: \"orderentry\", img: '/content/0/orderentry.jpg' },\r\n  // password   : 'content/0/changepassword.jpg',\r\n};\r\n\r\nexport const CARD_IMG_LIST = {\r\n    'visa': { name: 'Visa', icon:'/content/0/visa_logo.png'},\r\n    'mastercard': { name: 'Mastercard', icon:'/content/0/mastercard_logo.png'},\r\n    'americanexpress': { name: 'American Express', icon:'/content/0/AXP_BlueBoxLogo_EXTRALARGEscale_RGB_DIGITAL_1600x1600.png'},\r\n    'discover': { name: 'Discover', icon:'/content/0/discover_logo.png'},\r\n    //'paypal': { name: 'PayPal', icon:'/content/0/CC_AMEX.jpg'}\r\n    'check': { name: 'Check', icon: '/content/0/check.png' },\r\n    'ach': { name: 'ACH', icon: '/content/0/check.png' },\r\n    'undefined': { name: 'undefined', icon: '' }\r\n}\r\n","module.exports = __webpack_public_path__ + \"static/media/warning_icon.b845218a.svg\";","import React from 'react';\r\nimport { Route, Switch, withRouter } from \"react-router-dom\";\r\nimport { TransitionGroup, CSSTransition } from 'react-transition-group';\r\nimport authenticationService from '../../authenticationService';\r\nimport CustomerPortalAction from '../../actions/CustomerPortalAction';\r\nimport _ from 'lodash';\r\nimport { FEATURES_ROUTE_MAPPING } from './constants';\r\nconst $ = require('jquery');\r\n\r\nexport const routeMapping = {\r\n    login: { path: '/login', filePath: './ManageAccount/Login', desc: 'Login', canAnonymous: true },\r\n    salesperson: { path: '/salesperson', filePath: './Salesperson/Salesperson', desc: 'Salesperson' },\r\n    activity: { path: '/activity', filePath: './AccountActivity/AccountActivityContainer', desc: 'Account Activity', },\r\n    transactions: { path: '/transactions', filePath: './ViewTransactions/ViewTransactionContainer', desc: 'View Transactions', },\r\n    payment: { path: '/payment/:status?/:code?', filePath: './PayAccount/PayAccountContainer', desc: 'Pay Account', },\r\n    prepayment: { path: '/prepayment', filePath: './Prepayment/PrePaymentContainer', desc: 'Prepayment', },\r\n    orders: { path: '/orders', filePath: './ViewTransactions/ViewOrderContainer', desc: 'View Orders', },\r\n    manageCredt: { path: '/manage', filePath: './ManageCreditCards/ManageCreditCards', desc: 'Manage Credit Cards', },\r\n    contactus: { path: '/contactus', filePath: './ContactUs/ContactUs', desc: 'Contact Us', },\r\n    password: { path: '/password', filePath: './ManageAccount/ChangePassword', desc: 'Change Password', },\r\n    myAccount: { path: '/account', filePath: './ManageAccount/MyAccount', desc: 'My Account', },\r\n    resetpassword: { path: '/resetpassword/:token?/:email?/:username?', filePath: './ManageAccount/ResetPassword', desc: 'Reset Password', canAnonymous: true },\r\n    transactionDetail: { path: '/transactions/:docInfo', filePath: './ViewDocuments/ViewDocumentDetails', desc: 'View Transactions', },\r\n    orderDetails: { path: '/orders/:docInfo', filePath: './ViewDocuments/ViewDocumentDetails', desc: 'View Orders Details', },\r\n    receipt: { path: '/receipt/:id?', filePath: './ClickToPay/ClickToPaySuccess', desc: 'Payment Receipt', canAnonymous: true },\r\n    slack: { path: '/slack/:url?', filePath: './Notification/Slack', desc: 'Slack', canAnonymous: true },\r\n    quickpay: { path: '/quickpay', filePath: './ClickToPay/ClickToPay', desc: 'Click To Pay', canAnonymous: true },\r\n    orderentry: { path: '/order', filePath: './OrderEntry/OrderEntry', desc: 'Order Entry' },\r\n    superuser: { path: '/superuser/:token/:id', filePath: './Superuser', desc: 'superuser', canAnonymous: true  },\r\n    home: { path: '/', filePath: './MerchantHome', desc: 'Home', },\r\n    // error: { path: '*', notExact: true, filePath: './NoMatch', desc: '404 Not Found', canAnonymous: true },\r\n};\r\n\r\nexport function getRouteInfo(target) {\r\n    if (routeMapping[target]) {\r\n        return {\r\n            //special case for payment because of the optional passback param\r\n            path: (target !== 'payment' ? routeMapping[target].path : '/payment'),\r\n            desc: routeMapping[target].desc,\r\n        }\r\n    }\r\n}\r\nfunction canAnonymous(route) {\r\n    let routeName = route.split('/')[1];\r\n    if (routeMapping[routeName] && routeMapping[routeName].canAnonymous) {\r\n        return true;\r\n    } else {\r\n        return false;\r\n    }\r\n}\r\n// function CustomRouter({ match, location, history, ...props }) {\r\nclass CustomRouter extends React.Component {\r\n    constructor(props) {\r\n        super(props);\r\n        this.state = {\r\n          activeRoute: '',\r\n          baseTitle: \"\",//(\"Customer Portal\" + \" - \"),\r\n          hasError: false,\r\n          isLoading: true,\r\n          routeMapping: routeMapping\r\n        }\r\n        if (sessionStorage.history) sessionStorage.removeItem('history');\r\n        this.validateLogin(this.props.location);\r\n        CustomerPortalAction.getCustomizationList().then(function(customization){\r\n          let routeMapping = this.state.routeMapping;\r\n          localStorage.setItem('customization',JSON.stringify(customization));\r\n           Object.keys(customization).map((value,key)=>{\r\n             let cus = customization[value];\r\n             routeMapping[cus.name] = { path: '/'+cus.url, filePath: './CustomPage/Custom', desc: cus.displayName }\r\n           })\r\n           routeMapping['error'] = { path: '*', notExact: true, filePath: './NoMatch', desc: '404 Not Found', canAnonymous: true }\r\n           this.setState({isLoading: false,routeMapping:routeMapping});\r\n        }.bind(this));\r\n    }\r\n    validateLogin(location) {\r\n        /*\r\n            check login status here, so each time user change page can validate his status\r\n            */\r\n        let authorization = authenticationService();\r\n        let isLoggedIn = !(typeof authorization === \"object\");\r\n        let anonymousRoutes = canAnonymous(location.pathname);\r\n        let user = JSON.parse(localStorage.currentUser||sessionStorage.currentUser||'{}');\r\n        let history = JSON.parse(sessionStorage.history||null) || new Array(5);\r\n        let openpages = (localStorage.openpages)?(JSON.parse(localStorage.openpages)):({});\r\n        let pageID = sessionStorage.pageID;\r\n        openpages[pageID] = new Date().getTime();\r\n        localStorage.setItem('openpages', JSON.stringify(openpages));\r\n        if (!isLoggedIn && !anonymousRoutes) {\r\n            this.props.history.replace('/login');\r\n            history.push('/login');\r\n        } else if (user.userType == \"Merchant\"){\r\n            window.location.replace('/merchant');\r\n        } else if (user.userType == \"Admin\"){\r\n            window.location.replace('/admin');\r\n        } else if(isLoggedIn && user.userType == 'Salesperson' && (history[4] == undefined)) {\r\n            let client = (localStorage.client)? (JSON.parse(localStorage.client)) : (undefined) ;\r\n            if(!client){\r\n              this.props.history.replace('/salesperson');\r\n              history.push('/salesperson');\r\n            }\r\n        } else {\r\n            let features = user.features;\r\n            let routePath = location.pathname.split('/')[1];\r\n            let featureList = FEATURES_ROUTE_MAPPING;\r\n            let featureKey = _.findKey(FEATURES_ROUTE_MAPPING,[\"pathName\",routePath]);\r\n            if((user && user.features && featureKey && (user.features.indexOf(featureKey) >= 0)) || !(Object.keys(featureList).indexOf(featureKey)>=0)){\r\n              history.push(location.pathname);\r\n            } else if (routePath == \"contactus\" || routePath == \"quickpay\") {\r\n              history.push(location.pathname);\r\n            } else {\r\n              this.props.history.replace('/404');\r\n              history.push('/404');\r\n            }\r\n        }\r\n        history.shift();\r\n        sessionStorage.setItem('history', JSON.stringify(history));\r\n        $('div[id^=__lpform_]').remove();\r\n    }\r\n    componentDidUpdate(prevProps, prevState) {\r\n        let routes = Object.keys(this.refs);\r\n        let companyName = document.getElementById('companyName').value;\r\n        let route = (routes[0] === prevState.activeRoute) ? (routes[1]) : (routes[0]);\r\n        if (route && route != this.state.activeRoute) {\r\n            this.setState({ activeRoute: route });\r\n            document.title = this.state.baseTitle + ((companyName) ? (companyName + ' - ') : ('')) + routeMapping[route].desc;\r\n        }\r\n    }\r\n    componentDidCatch(error, info) {\r\n      console.log(error)\r\n      let page = JSON.parse(sessionStorage.history || null)[4];\r\n      this.setState({hasError:true});\r\n      CustomerPortalAction.sendErrorLog(page,error,info);\r\n    }\r\n    componentWillUnmount() {\r\n        this.unlisten();\r\n    }\r\n    render() {\r\n      if(this.state.isLoading) return false;\r\n        return (\r\n            <TransitionGroup className=\"transition-group\">\r\n                <CSSTransition\r\n                    key={this.props.location.pathname}\r\n                    timeout={{ enter: 500, exit: 300 }}\r\n                    classNames=\"page\"\r\n                >\r\n                    {this.state.hasError?(\r\n                      <div className='div-error text-center d-flex justify-content-center align-items-center'>\r\n                        <div>\r\n                          <div className='mb-4'>Something unexpected has occurred, please try again later.</div>\r\n                          <button className='btn btn-custom' onClick={()=>{this.setState({hasError:false});this.props.history.replace('/');}}>Back To Home</button>\r\n                        </div>\r\n                      </div>\r\n                    ):(\r\n                      <section className='div-container'>\r\n                        <React.Suspense fallback={false}>\r\n                          <Switch location={this.props.location}>\r\n                            {Object.keys(this.state.routeMapping).map((item, i) => {\r\n                              if(item == \"error\") return false;\r\n                              return (\r\n                                <Route\r\n                                  key={item}\r\n                                  ref={item}\r\n                                  exact={!this.state.routeMapping[item].notExact || true}\r\n                                  path={this.state.routeMapping[item].path}\r\n                                  component={React.lazy(() => import(`${this.state.routeMapping[item].filePath}`))}\r\n                                />\r\n                              )\r\n                            })}\r\n                          </Switch>\r\n                        </React.Suspense>\r\n                      </section>\r\n                    )}\r\n                </CSSTransition>\r\n            </TransitionGroup>\r\n        );\r\n    }\r\n};\r\nexport default withRouter(CustomRouter);\r\n","import React from 'react';\r\nimport {withRouter} from 'react-router';\r\nimport authenticationService from '../../../authenticationService';\r\nimport CustomerPortalAction from '../../../actions/CustomerPortalAction';\r\nimport CustomerPortalStore  from '../../../stores/CustomerPortalStore';\r\n\r\nimport Header from './Header';\r\nimport Footer from './Footer';\r\n\r\nimport Loading from '../Common/Loading';\r\n\r\nclass HeaderAndFooter extends React.Component {\r\n\r\n  constructor(props) {\r\n    super(props);\r\n    this.state = {\r\n      headerInfo:{},\r\n      features:[],\r\n      salesperson:'',\r\n      language:'',\r\n      isLoggedIn: false,\r\n      isLoading:true,\r\n      userType:'',\r\n    };\r\n    this._onChange = this._onChange.bind(this);\r\n    CustomerPortalStore.addChangeListener(this._onChange);\r\n  }\r\n  _onChange(){\r\n    var header = CustomerPortalStore.getHeaderInfo();\r\n    var userType = CustomerPortalStore.getCurrentUserType();\r\n      if (header) {\r\n        //if (header.newLogin && !this.state.isLoggedIn) this.props.history.replace('/');\r\n        if(header.header.headerInfo.companyName) document.getElementById('companyName').value = header.header.headerInfo.companyName;\r\n        this.setState({\r\n          headerInfo:header.header.headerInfo,\r\n          isLoggedIn:header.header.login,\r\n          features: header.header.features,\r\n          salesperson: header.salesperson,\r\n          userType: userType,\r\n          language: header.language,\r\n          isLoading:false\r\n        });\r\n    }\r\n  }\r\n  componentDidMount(){\r\n    //this will basicall be the first thing after the base component is loaded\r\n    //put login validation here, kick user to login page using history\r\n      let authorization = authenticationService();\r\n      let isLoggedIn = !(typeof authorization === \"object\");\r\n      let client = (localStorage.client)? (JSON.parse(localStorage.client)) : (undefined) ;\r\n      if(client) CustomerPortalAction.setClientNumber(client).then(function(result){\r\n        if(result){\r\n            this.props.history.push('/salesperson');\r\n            localStorage.removeItem('client');\r\n        }\r\n      }.bind(this));;\r\n      CustomerPortalAction.fetchHeaderInfo(isLoggedIn);\r\n  }\r\n  componentWillUnmount() {\r\n    CustomerPortalStore.removeChangeListener(this._onChange);\r\n  }\r\n  logout(){\r\n    localStorage.removeItem('currentUser');\r\n    localStorage.removeItem('openpages');\r\n    sessionStorage.removeItem('currentUser');\r\n    localStorage.removeItem('client');\r\n    CustomerPortalAction.logout().then(() => {\r\n        this.props.history.push('/login');\r\n    });\r\n  }\r\n  switchLanguage(language) {\r\n      this.setState({language:language})\r\n      CustomerPortalAction.switchLanguage(language);\r\n  }\r\n  render() {\r\n    let customization = JSON.parse(localStorage.customization || \"{}\").customizations;\r\n    if(this.state.isLoading) return(<Loading noSpace/>)\r\n    return (\r\n      <div>\r\n        <Header\r\n            logoURL={this.state.headerInfo.logo}\r\n            companyName={this.state.headerInfo.companyName}\r\n            features = {this.state.features}\r\n            customization = {customization}\r\n            language={this.state.language}\r\n            hideMenu={this.props.location.pathname === '/' || this.props.location.pathname === '/quickpay' || this.props.location.pathname === '/salesperson'}\r\n            displayLogin={this.props.location.pathname !== '/login'}\r\n            userName = {this.state.headerInfo.userName}\r\n            userType = {this.state.userType}\r\n            logout = {this.logout.bind(this)}\r\n            isLoggedIn = {this.state.isLoggedIn}\r\n            salesperson = {this.state.salesperson}\r\n            switchLanguage = {this.switchLanguage.bind(this)}\r\n        />\r\n        <main>\r\n          {this.props.children}\r\n        </main>\r\n        <Footer\r\n          address = {this.state.headerInfo.address}\r\n          phone = {this.state.headerInfo.phone}\r\n          url = {this.state.headerInfo.url}\r\n        />\r\n      </div>\r\n    );\r\n  }\r\n}\r\n\r\nexport default withRouter(HeaderAndFooter);\r\n","import React from 'react';\r\nimport { Link } from \"react-router-dom\";\r\nimport { getRouteInfo } from '../route';\r\nimport { FEATURES_ROUTE_MAPPING } from '../constants';\r\nimport HeaderLink from './HeaderLink';\r\n\r\nexport default class Header extends React.Component {\r\n    constructor(props) {\r\n        super(props);\r\n        this.state = {\r\n            isDropDownToggled: false,\r\n            isMenuActive: false,\r\n            activeSubMenu: '',\r\n        };\r\n        this.toggleMenu = this.toggleMenu.bind(this);\r\n        this.autoCloseDropDown = this.autoCloseDropDown.bind(this);\r\n    }\r\n    autoCloseDropDown(event) {\r\n        if (this.state.isDropDownToggled) {\r\n            // eslint-disable-next-line\r\n            if (event.target != this.refs['dropdown-menu']) {\r\n                this.setState({ isDropDownToggled: false })\r\n                document.removeEventListener(\"click\", this.autoCloseDropDown, false);\r\n            }\r\n        }\r\n        if (this.state.isMenuActive && !(event.target.className.indexOf(\"sub-menu\") >= 0)) {\r\n            this.setState({ isMenuActive: false })\r\n            document.removeEventListener(\"click\", this.autoCloseDropDown, false);\r\n        }\r\n    }\r\n    activateDropDown() {\r\n        document.addEventListener(\"click\", this.autoCloseDropDown, false);\r\n        this.setState({ isDropDownToggled: true });\r\n    }\r\n\r\n    toggleMenu() {\r\n        //only switch state when the menubar is in flex (aka non mobile view)\r\n        if ((this.refs.menuDiv && window.getComputedStyle(this.refs.menuDiv).display !== 'flex') || (!this.refs.menuDiv)) {\r\n            document.addEventListener(\"click\", this.autoCloseDropDown, false);\r\n            this.setState({ isMenuActive: true });\r\n        }\r\n    }\r\n    triggerSubMenu(type) {\r\n        this.setState({ activeSubMenu: type });\r\n    }\r\n    render() {\r\n        let homelink = (this.props.isLoggedIn ? '/' : '/login');\r\n        if(this.props.userType == \"Salesperson\")  homelink = '/salesperson';\r\n        return (\r\n            <header className='react-header'>\r\n                <div className='container-fluid header-main-menu'>\r\n                    <div className='div-container'>\r\n                        <div className='row'>\r\n                            <div className='col col-12 col-md-8 text-left'>\r\n                                <div className='d-flex d-md-block'>\r\n                                    <div className='user-menu-user-name d-flex d-md-none clickable d-print-none' onClick={this.toggleMenu.bind(this)}>\r\n                                      {/* {(this.props.isLoggedIn && !this.props.hideMenu) ? (\r\n                                      ): (false)} */}\r\n                                      <span className='user-menu-user-icon clickable'><i className=\"material-icons\">menu</i></span>\r\n                                    </div>\r\n                                    <Link to={homelink} className='company-logo-link text-center w-100'>\r\n                                    {this.props.logoURL ? (\r\n                                            <img src={this.props.logoURL} alt='company-logo' className='company-logo' />\r\n                                    ) : (\r\n                                            <h3 className='company-logo-as-text text-left'>{this.props.companyName}</h3>\r\n                                    )}\r\n                                    </Link>\r\n                                </div>\r\n                            </div>\r\n                            {this.props.isLoggedIn ? (\r\n                                <div className='d-none d-md-flex col col-12 col-md-4 justify-content-center flex-column'>\r\n                                    <div className='user-menu d-print-none text-right'>\r\n                                        <div className='user-menu-user-name clickable' >\r\n                                            <div className='user-menu-language clickable'>\r\n                                                <div className=\"btn-group\">\r\n                                                  <button type=\"button\" className=\"user-menu-language-icon\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\r\n                                                    {this.props.language}\r\n                                                  </button>\r\n                                                  <div className=\"dropdown-menu dropdown-menu-right language-dropdown\">\r\n                                                    {window.LANGUAGES.map((language,key)=>{\r\n                                                      return(\r\n                                                        <button key={'language-'+key} className=\"dropdown-item user-menu-language-icon mb-2\" type=\"button\" onClick={this.props.switchLanguage.bind(this,language)}>{language}</button>\r\n                                                      )\r\n                                                    })}\r\n                                                  </div>\r\n                                                </div>\r\n                                            </div>\r\n                                        </div>\r\n                                        <div className='user-menu-user-name'>\r\n                                            <span className='user-menu-user-icon clickable' onClick={this.activateDropDown.bind(this)}><i className=\"material-icons\">account_circle</i></span>\r\n                                        </div>\r\n                                        <div className='user-menu-user-name clilckable' onClick={this.activateDropDown.bind(this)}>\r\n                                            <span className='position-relative clickable'>\r\n                                                {this.props.userName}<i className={\"h6 mb-0 ml-1 fa fa-caret-\" + (this.state.isDropDownToggled ? (\"up\") : (\"down\"))} aria-hidden=\"true\"></i>\r\n                                                <div ref='dropdown-menu' className={'dropdown-menu ' + (this.state.isDropDownToggled ? ('show') : (''))}>\r\n                                                    <div className='header-link-sm'>\r\n                                                        <Link to='/account' className='dropdown-menu-item' data-translation=\"header.account\">My Account</Link>\r\n                                                    </div>\r\n                                                    <div className='header-link-sm'>\r\n                                                        <Link to='/password' className='dropdown-menu-item' data-translation=\"header.password\">Change Password</Link>\r\n                                                    </div>\r\n                                                    <div className='header-link-sm'>\r\n                                                        <span className='btn btn-sm btn-info dropdown-menu-item clickable' onClick={this.props.logout} data-translation=\"header.logOut\">Log Out</span>\r\n                                                    </div>\r\n                                                </div>\r\n                                            </span>\r\n                                        </div>\r\n                                        {this.props.isLoggedIn && !this.props.hideMenu ? (\r\n                                            <div className='user-menu-user-name d-md-none clickable' onClick={this.toggleMenu.bind(this)}>\r\n                                                <span className='user-menu-user-icon clickable'><i className=\"material-icons\">menu</i></span>\r\n                                            </div>\r\n                                        ) : (false)}\r\n                                    </div>\r\n                                    {this.props.isLoggedIn && this.props.salesperson? (\r\n                                      <div className='user-menu d-print-none justify-content-md-between align-items-md-center'>\r\n                                          <span className='mr-3'><b data-translation=\"header.customer\">Customer</b></span>\r\n                                          <span>{this.props.salesperson.customerName}</span>\r\n                                          <Link to='/salesperson' className='btn btn-custom btn-saleperson-change' data-translation=\"general.change\">Change</Link>\r\n                                      </div>\r\n                                    ) : (false)}\r\n                                </div>\r\n                            ) : (\r\n                                <div className='col-12 col-md-4 d-flex text-right align-items-center justify-content-end'>\r\n                                    <div className='user-menu-language clickable'>\r\n                                        <div className=\"btn-group\">\r\n                                          <button type=\"button\" className=\"user-menu-language-icon\" data-toggle=\"dropdown\" aria-haspopup=\"true\" aria-expanded=\"false\">\r\n                                            {this.props.language}\r\n                                          </button>\r\n                                          <div className=\"dropdown-menu dropdown-menu-right language-dropdown\">\r\n                                            {window.LANGUAGES.map((language,key)=>{\r\n                                              return(\r\n                                                <button key={'language-'+key} className=\"dropdown-item user-menu-language-icon mb-2\" type=\"button\" onClick={this.props.switchLanguage.bind(this,language)}>{language}</button>\r\n                                              )\r\n                                            })}\r\n                                          </div>\r\n                                        </div>\r\n                                    </div>\r\n                                    {this.props.displayLogin ? (\r\n                                            <div className='user-menu-user-name mr-0'>\r\n                                                <span className='user-menu-user-icon mr-0'><i className=\"material-icons\">account_circle</i></span>\r\n                                            </div>\r\n                                    ) : (false)}\r\n                                    {this.props.displayLogin ? (\r\n                                            <div className='header-link'>\r\n                                                <Link to='/login' className='dropdown-menu-item' data-translation=\"header.login\">Sign In</Link>\r\n                                            </div>\r\n                                    ) : (false)}\r\n                                </div>\r\n                            )}\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                {this.props.isLoggedIn && !this.props.hideMenu ? (\r\n                    <div className='div-container position-relative d-print-none '>\r\n                        <div ref='menuDiv' className='d-none d-md-flex header-link-list'>\r\n                            <HeaderLink onClick={this.toggleMenu} target={getRouteInfo('home')} translationTag='home' />\r\n                            {(this.props.features) ? (this.props.features).map((item, key) => {\r\n                                if (!FEATURES_ROUTE_MAPPING[item]) return false;\r\n                                return (\r\n                                    <HeaderLink\r\n                                        key={'header-link-' + item}\r\n                                        onClick={this.toggleMenu}\r\n                                        target={getRouteInfo(FEATURES_ROUTE_MAPPING[item].pathName)}\r\n                                        translationTag={FEATURES_ROUTE_MAPPING[item].pathName}\r\n                                    />\r\n                                )\r\n                            }) : (false)}\r\n                            {(this.props.customization) ? (this.props.customization).map((item, key) => {\r\n                                return (\r\n                                    <HeaderLink\r\n                                        key={'header-link-' + item}\r\n                                        onClick={this.toggleMenu}\r\n                                        target={{path:item.url , desc:item.name}}\r\n                                    />\r\n                                )\r\n                            }) : (false)}\r\n                        </div>\r\n                    </div>\r\n                ) : (false)}\r\n                <div className={'div-mobile-menu d-block d-md-none ' + ((this.state.isMenuActive) ? ('show') : (''))} id='side-menu'>\r\n                    {this.props.isLoggedIn ? (\r\n                        <div>\r\n                            <div className='div-mobile-main-menu'>\r\n                                <HeaderLink onClick={this.toggleMenu} target={getRouteInfo('home')} translationTag='home' />\r\n                                {!this.props.hideMenu ? (\r\n                                  <div>\r\n                                    {(this.props.features) ? (this.props.features).map((item, key) => {\r\n                                      if (!FEATURES_ROUTE_MAPPING[item]) return false;\r\n                                      return (\r\n                                        <HeaderLink\r\n                                          key={'header-link-' + item}\r\n                                          onClick={this.toggleMenu}\r\n                                          target={getRouteInfo(FEATURES_ROUTE_MAPPING[item].pathName)}\r\n                                          translationTag={FEATURES_ROUTE_MAPPING[item].pathName}\r\n                                        />\r\n                                      )\r\n                                    }) : (false)}\r\n                                  </div>\r\n                                ):(false)}\r\n                                <div className='header-link' onClick={this.triggerSubMenu.bind(this, 'accountMenu')}>\r\n                                    <div className='sub-menu'>My Account</div>\r\n                                </div>\r\n                            </div>\r\n                            <div className={'div-mobile-sub-menu ' + ((this.state.activeSubMenu === 'accountMenu') ? ('showing') : (''))} ref='accountMenu'>\r\n                                <div className='sub-menu-return sub-menu' onClick={this.triggerSubMenu.bind(this, '')}>\r\n                                    <span><i className=\"fa fa-chevron-left sub-menu\" aria-hidden=\"true\"></i><b className='sub-menu'>Home</b></span>\r\n                                </div>\r\n                                <div className='header-link'>\r\n                                    <div className='sub-menu-header'>Account Information</div>\r\n                                </div>\r\n                                <HeaderLink onClick={this.toggleMenu} target={getRouteInfo('myAccount')} translationTag='header.account' />\r\n                                <HeaderLink onClick={this.toggleMenu} target={getRouteInfo('password')} translationTag='header.password' />\r\n                                <div className='header-link'>\r\n                                    <div className='' onClick={this.props.logout} data-translation=\"header.logOut\">Log Out</div>\r\n                                </div>\r\n                            </div>\r\n                        </div>\r\n                    ) : (\r\n                          <div className='div-mobile-main-menu'>\r\n                                <HeaderLink onClick={this.toggleMenu} target={getRouteInfo('login')} translationTag='login' />\r\n                        </div>\r\n                    )}\r\n                </div>\r\n            </header>\r\n        );\r\n    }\r\n}\r\n","import React from 'react';\r\nimport authenticationService from '../../../authenticationService';\r\nimport Swal from 'sweetalert2';\r\nimport { withRouter, Prompt } from 'react-router';\r\nimport ItemSearchInput from './ItemSearchInput';\r\nimport Loading from '../Common/Loading';\r\nimport CustomerPortalAction from '../../../actions/CustomerPortalAction';\r\nimport CustomerPortalStore from '../../../stores/CustomerPortalStore';\r\nimport ERROR_ICON from '../../../actions/error_icon.svg';\r\n\r\nconst $ = window.$;\r\n\r\nconst dateFormat = 'mm/dd/yyyy';\r\nconst BILLING_ADDRESS_SHIPTO = \"BillingAddress\";\r\nclass OrderEntry extends React.Component {\r\n    constructor(props) {\r\n        super(props);\r\n        this.state = {\r\n            isLoading: true,\r\n            onSubmit: false,\r\n            shipViaCodes: [],\r\n            selectedShipViaCode: \"\",\r\n            selectedShipViaCodeName: \"\",\r\n            shipToLocations: [],\r\n            selectedShipToLocation: \"\",\r\n            shipToName: \"\",\r\n            address1: \"\",\r\n            address2: \"\",\r\n            country: \"\",\r\n            city: \"\",\r\n            stateOrProvince: \"\",\r\n            zipOrPostalCode: \"\",\r\n            phoneNumber: \"\",\r\n            email: \"\",\r\n            poNumber: \"\",\r\n            requestDeliveryDate: \"\",\r\n            comments: \"\",\r\n            disabled: true,\r\n            open: true,\r\n            items: [],\r\n            value: true,\r\n\r\n            orderTypes: [],\r\n            allowMiscCharge: false,\r\n            allowPriceOverride: false,\r\n            noteToCustomer: \"\",\r\n\r\n            showItemDetails: false,\r\n            hasShowItemDetails: false,\r\n\r\n            shipVia: false,\r\n\r\n            confirmToClose: false,\r\n            isFetching: false,\r\n            translation: undefined,\r\n        };\r\n\r\n        fetch('./lang/application-' + window.getLanguage() + '.json')\r\n            .then(response => response.json())\r\n            .then((json) => {\r\n                this.setState({\r\n                    translation: json\r\n                })\r\n            });\r\n\r\n        this.handleInputChange = this.handleInputChange.bind(this);\r\n\r\n\r\n        fetch(\"\" + '/erp/OrderEntry/Settings', {\r\n            method: 'get',\r\n            headers: {\r\n                'Accept': 'application/json',\r\n                'Content-Type': 'application/json',\r\n                'Authorization': authenticationService()\r\n            }\r\n        }).then(response => response.json()).then(settings => {\r\n            if (settings.error) {\r\n                CustomerPortalAction.displayGeneralMessage(settings.error, undefined, undefined, undefined, { autoRedirect: false });\r\n            } else {\r\n                this.setState({\r\n                    orderTypes: settings.orderTypes,\r\n                    allowMiscCharge: settings.allowMiscCharge,\r\n                    allowPriceOverride: settings.allowPriceOverride,\r\n                    noteToCustomer: settings.noteToCustomer,\r\n                    showItemDetails: settings.showItemDetails,\r\n                    hasShowItemDetails: settings.showItemDetails,\r\n                    shipVia: settings.shipVia\r\n                });\r\n            }\r\n        }).catch((error) => {\r\n            CustomerPortalAction.displayGeneralMessage();\r\n            console.error(`fetch error: ${error}`);\r\n            this.setState({ onSubmit: false });\r\n        });\r\n    }\r\n\r\n    submit(orderType) {\r\n        this.setState({ onSubmit: true });\r\n        let order = new Object();\r\n        order.description = \"Web order - PO: \" + this.state.poNumber;\r\n        order.orderType = orderType.trim();\r\n        order.poNumber = this.state.poNumber;\r\n        if (this.state.selectedShipViaCode) {\r\n            order.shipViaCode = this.state.selectedShipViaCode;\r\n        }\r\n        order.shipToCode = (this.state.selectedShipToLocation == BILLING_ADDRESS_SHIPTO) ? (\"\") : (this.state.selectedShipToLocation);\r\n        order.shipToName = this.state.shipToName;\r\n        order.shipToAddress1 = this.state.address1;\r\n        order.shipToAddress2 = this.state.address2;\r\n        order.shipToCity = this.state.city;\r\n        order.shipToStateOrProv = this.state.stateOrProvince;\r\n        order.shipToCountry = this.state.country;\r\n        order.shipToPostalCode = this.state.zipOrPostalCode;\r\n        order.shipToPhone = this.state.phoneNumber;\r\n        order.shipToEmail = this.state.email;\r\n        order.itemTotal = this.state.items.reduce(function (prev, current) {\r\n            return prev + +current.extendedPrice\r\n        }, 0);\r\n        order.itemTotal = window.formatNum(order.itemTotal);\r\n        order.miscCharge = \"0\";\r\n        order.orderTotal = this.state.items.reduce(function (prev, current) {\r\n            return prev + +current.extendedPrice\r\n        }, 0);\r\n        order.orderTotal = window.formatNum(order.orderTotal);\r\n        order.shippingInstructionsComment = this.state.comments;\r\n        order.requestDeliveryDate = this.state.requestDeliveryDate;\r\n        order.orderDetails = [];\r\n        this.state.items.map((item, i) => {\r\n            let detail = new Object();\r\n            detail.itemNumber = item.itemNo;\r\n            detail.description = item.description\r\n            detail.quantityOrdered = item.quantity;\r\n            detail.unitOfMeasure = item.uom;\r\n            detail.unitPrice = item.price;\r\n            detail.comment = \"\";\r\n            detail.extendedPrice = item.extendedPrice;\r\n            detail.lineType = item.type;\r\n\r\n            // include only valid ordered quantity line\r\n            if (detail.quantityOrdered)\r\n                order.orderDetails.push(detail);\r\n        });\r\n\r\n        if (order.orderDetails.length > 0) {\r\n            fetch(\"\" + '/erp/OrderEntry/OrderEntry', {\r\n                method: 'post',\r\n                headers: {\r\n                    'Accept': 'application/json',\r\n                    'Content-Type': 'application/json',\r\n                    'Authorization': authenticationService()\r\n                },\r\n                body: JSON.stringify(order),\r\n            }).then((response) => {\r\n                if (response.status !== 200)\r\n                    throw new Error(response.status)\r\n                return response.json();\r\n            }).then((result) => {\r\n                this.setState({ onSubmit: false });\r\n\r\n                if (result.orderNumber) {\r\n                    Swal.fire({\r\n                        title: '<strong>' + this.state.translation.orderEntry.orderNumber + ': ' + result.orderNumber + '</strong>',\r\n                        html: this.state.translation.orderEntry.orderSuccess,\r\n                        focusConfirm: false,\r\n                        showCancelButton: true,\r\n                        reverseButtons: true,\r\n                        cancelButtonText: this.state.translation.orderEntry.close,\r\n                        confirmButtonColor: '#17a2b8',\r\n                        confirmButtonText: this.state.translation.orderEntry.viewOrPrint\r\n                    }).then((confirm) => {\r\n                        this.setState({ items: [], confirmToClose: false }); // clear order detail lines when order/quote is posted.\r\n                        if (confirm.value) {\r\n                            this.props.history.push('/orders/docNo=' + result.orderNumber);\r\n                        } else {\r\n                            // refresh order screen\r\n                            this.props.history.push('/order');\r\n                        }\r\n                    });\r\n                } else if (result.error) {\r\n                    CustomerPortalAction.displayGeneralMessage(result.error, undefined, undefined, undefined, { autoRedirect: false });\r\n                } else {\r\n                    // error occurs\r\n                    console.log(result);\r\n                }\r\n            }).catch((error) => {\r\n                CustomerPortalAction.displayGeneralMessage();\r\n                console.error(`fetch error: ${error}`);\r\n                this.setState({ onSubmit: false });\r\n            });\r\n        } else {\r\n            if (!this.state.translation) { return; }\r\n            CustomerPortalAction.displayGeneralMessage('', this.state.translation.orderEntry.pleaseSelect, 'warning', true, { autoRedirect: false });\r\n            this.setState({ onSubmit: false });\r\n        }\r\n    }\r\n\r\n    handleShipViaCodeChange(e) {\r\n        let code = e.target.options[e.target.options.selectedIndex].value;\r\n        let shipViaCode = this.state.shipViaCodes.find(element => element.code === code);\r\n        this.setSelectedShipViaCode(shipViaCode);\r\n    }\r\n\r\n    handleShipToLocationChange(e) {\r\n        let id = e.target.options[e.target.options.selectedIndex].value;\r\n        let shipToLocation = this.state.shipToLocations.find(element => element.id === id);\r\n        this.setSelectedShipToLocation(shipToLocation);\r\n    }\r\n\r\n    handleChange(e) {\r\n        this.setState({ [e.target.name]: e.target.value });\r\n    }\r\n    handleDeliverDateChange(e){\r\n      if(e.keyCode == 8){ //reset delivery date value on backspace\r\n        this.setState({requestDeliveryDate: \"\"});\r\n      }\r\n    }\r\n    overWriteUnitPrice(e, index) {\r\n        let value = e.target.value;\r\n        const rgx = /^[0-9]*\\.?[0-9]*$/;\r\n        if (!value || !value.trim().match(rgx)) {\r\n            value = 0;\r\n        }\r\n        this.state.items[index].overwritePrice = true;\r\n        this.state.items[index].price = value;\r\n        this.state.items[index].extendedPrice = parseFloat(this.state.items[index].price * this.state.items[index].quantity);\r\n        this.forceUpdate();\r\n    }\r\n\r\n    handlePricingChange(e, index, delay) {\r\n        let quantity = this.state.items[index].quantity;\r\n        let uom = this.state.items[index].uom;\r\n        let type = this.state.items[index].type;\r\n\r\n        if (e.target.name === \"quantity\") {\r\n            quantity = e.target.value;\r\n            const rgx = /^[0-9]*\\.?[0-9]*$/;\r\n            if (!quantity.match(rgx)) {\r\n                quantity = 0;\r\n            }\r\n            if (this.state.items[index].quantity == quantity && quantity == 1) { return; }\r\n            this.state.items[index].quantity = quantity;\r\n        } else if (e.target.name === \"uom\") {\r\n            uom = e.target.value;\r\n            this.state.items[index].uom = uom;\r\n        }\r\n\r\n        if (!delay && this.state.items[index].overwritePrice == null || this.state.items[index].overwritePrice === false) {\r\n            fetch(\"\" + '/erp/OrderEntry/ItemPricing?itemNo=' + encodeURIComponent(this.state.items[index].itemNo)\r\n                + '&uom=' + encodeURIComponent(uom)\r\n                + '&quantity=' + quantity\r\n                + '&itemType=' + type, {\r\n                headers: {\r\n                    'Authorization': authenticationService()\r\n                }\r\n            }).then((response) => {\r\n                if (response.status !== 200)\r\n                    throw new Error(response.status)\r\n                return response.json();\r\n            }).then((itemPricing) => {\r\n                if(itemPricing.error){\r\n                  CustomerPortalAction.displayGeneralMessage(itemPricing.error);\r\n                } else if (itemPricing.itemNo) {\r\n                    this.state.items[index].price = itemPricing.unitPrice;\r\n                    this.state.items[index].extendedPrice = parseFloat(itemPricing.unitPrice * quantity);\r\n\r\n                    this.forceUpdate();\r\n                } else {\r\n                    Swal.fire(itemPricing);\r\n                }\r\n            }).catch((error) => {\r\n                console.error(`fetch error: ${error}`);\r\n            });\r\n        } else {\r\n            this.state.items[index].extendedPrice = parseFloat(this.state.items[index].price * quantity);\r\n            this.forceUpdate();\r\n        }\r\n    }\r\n\r\n    toggle() {\r\n        this.setState({\r\n            open: !this.state.open\r\n        });\r\n    }\r\n\r\n    remove(e) {\r\n        if (!this.state.translation) { return; }\r\n\r\n        Swal.fire({\r\n            title: this.state.translation.orderEntry.areYouSure,\r\n            icon: 'warning',\r\n            showCancelButton: true,\r\n            confirmButtonColor: '#3085d6',\r\n            cancelButtonColor: '#d33',\r\n            confirmButtonText: this.state.translation.orderEntry.yesDelete\r\n        }).then((result) => {\r\n            if (result.value) {\r\n                var array = [...this.state.items];\r\n                var index = array.indexOf(e)\r\n                if (index !== -1) {\r\n                    array.splice(index, 1);\r\n                    this.setState({ items: array });\r\n                    this.forceUpdate();\r\n                }\r\n            }\r\n        });\r\n    }\r\n\r\n    clear() {\r\n        if (!this.state.translation) { return; }\r\n        Swal.fire({\r\n            title: this.state.translation.orderEntry.areYouSureClearOrder,\r\n            icon: 'warning',\r\n            showCancelButton: true,\r\n            confirmButtonColor: '#3085d6',\r\n            cancelButtonColor: '#d33',\r\n            confirmButtonText: this.state.translation.orderEntry.yes,\r\n            cancelButtonText: this.state.translation.orderEntry.cancel,\r\n        }).then((result) => {\r\n            if (result.value) {\r\n                // clear items\r\n                this.setState({ items: [], confirmToClose: false });\r\n            }\r\n        });\r\n    }\r\n\r\n    setSelectedShipViaCode(shipViaCode) {\r\n        let code = \"\";\r\n        let name = \"\";\r\n        if (shipViaCode) {\r\n            code = shipViaCode.code;\r\n            name = shipViaCode.name;\r\n        }\r\n        this.setState({\r\n            selectedShipViaCode: code,\r\n            selectedShipViaCodeName: name\r\n        });\r\n    }\r\n\r\n    setSelectedShipToLocation(shipToLocation) {\r\n        console.log(shipToLocation)\r\n        if (shipToLocation) {\r\n            this.setState({\r\n                selectedShipToLocation: shipToLocation.id,\r\n                shipToName: shipToLocation.shipToName,\r\n                address1: shipToLocation.address1,\r\n                address2: shipToLocation.address2,\r\n                country: shipToLocation.country,\r\n                city: shipToLocation.city,\r\n                stateOrProvince: shipToLocation.stateOrProvince,\r\n                zipOrPostalCode: shipToLocation.zipOrPostalCode,\r\n                phoneNumber: shipToLocation.phoneNumber,\r\n                email: shipToLocation.email,\r\n                disabled: true\r\n            });\r\n        } else { // clear\r\n            this.setState({\r\n                selectedShipToLocation: \"\",\r\n                shipToName: \"\",\r\n                address1: \"\",\r\n                address2: \"\",\r\n                country: \"\",\r\n                city: \"\",\r\n                stateOrProvince: \"\",\r\n                zipOrPostalCode: \"\",\r\n                phoneNumber: \"\",\r\n                email: \"\",\r\n                disabled: false\r\n            });\r\n        }\r\n    }\r\n\r\n    handleInputChange(event) {\r\n        const target = event.target;\r\n        const value = target.type === 'checkbox' ? target.checked : target.value;\r\n        const name = target.name;\r\n\r\n        this.setState({\r\n            [name]: value\r\n        });\r\n    }\r\n\r\n    // display only\r\n    showItemDetail(itemNumber, description, additionalInfos, imageUrls, quantity, uom, uoms, price, extendedPrice, addBtnTxt) {\r\n        $('.fa-calendar').hide();\r\n        if (!addBtnTxt) { addBtnTxt = '<span data-translation=\"orderEntry.add\"></span>' }\r\n\r\n        let additionalInfosTxt = \"\";\r\n        for (let i = 0; i < additionalInfos.length; i++) {\r\n            additionalInfosTxt += \"<div class='mb-1 pre-line'>\" + additionalInfos[i] + \"</div>\";\r\n        }\r\n\r\n        let uomTxt = '';\r\n        let uomSelectionVisible = '';\r\n        if (uoms.length == 1) {\r\n            uomTxt = uoms[0];\r\n            uomSelectionVisible = 'd-none';\r\n        }\r\n        uomTxt += '<select id=\"uom\" class=\"select-custom bold ' + uomSelectionVisible + '\">';\r\n        for (let i = 0; i < uoms.length; i++) {\r\n            let isSelected = uom == uoms[i] ? ' selected=\"selected\" ' : \"\";\r\n            uomTxt += '<option' + isSelected + '>' + uoms[i] + '</option>';\r\n        }\r\n        uomTxt += '</select>';\r\n\r\n        let priceTxt = ``;\r\n        if (this.state.allowPriceOverride) {\r\n            priceTxt = `<span id=\"price\" class=\"d-none\">${window.window.formatNum(price)}</span><input class=\"order-entry-price-pop-up\" id=\"priceInput\" value=${window.formatNum(price)} type=\"number\" />`;\r\n        } else {\r\n            priceTxt = `<span id=\"price\">${window.window.formatNum(price)}</span>`;\r\n        }\r\n\r\n        let imageSlide = '';\r\n        let imageIndicators = '<ul class=\"carousel-indicators\">';\r\n        let images = '<div class=\"carousel-inner\">';\r\n        if (imageUrls && imageUrls.length > 0) {\r\n            for (let i = 0; i < imageUrls.length; i++) {\r\n                let active = (i === 0) ? 'active' : ''; // first image is default\r\n                imageIndicators += `<li data-target=\"#itemImage\" data-slide-to=\"${i}\" class=\"${active}\"></li>`;\r\n                images += `<div class=\"carousel-item ${active}\" style=\"max-width: 420px;\">\r\n                                  <img src=\"${imageUrls[i]}\" class=\"img-fluid\"/>\r\n                           </div>`;\r\n            }\r\n\r\n            imageSlide = `<div class=\"col\">\r\n                            <div id=\"itemImage\" class=\"carousel slide\" data-ride=\"carousel\">\r\n                              ${imageIndicators}</ul>\r\n                              ${images}</div>\r\n                              <a class=\"carousel-control-prev\" href=\"#itemImage\" data-slide=\"prev\">\r\n                                <span class=\"carousel-control-prev-icon\"></span>\r\n                              </a>\r\n                              <a class=\"carousel-control-next\" href=\"#itemImage\" data-slide=\"next\">\r\n                                <span class=\"carousel-control-next-icon\"></span>\r\n                              </a>\r\n                            </div>\r\n                          </div>`\r\n        }\r\n\r\n        // render modal\r\n        let modal = `<div class=\"container-fluid\" style='font-size: smaller;'>\r\n                      <div class=\"row\">\r\n                        ${imageSlide}\r\n                        <div class=\"col text-left pre-line\">\r\n                            <p class='green-text-color font-weight-bold text-uppercase'><span data-translation='orderEntry.itemNo'></span> ${itemNumber}</p>\r\n                            <h4 class=\"font-weight-light mt-2 mb-2 pre-line\">${description}</h4>\r\n                            <p class='green-text-color font-weight-bold text-uppercase mt-4 mb-1'><span data-translation='orderEntry.additionalInfo'></span></p>\r\n                            ${additionalInfosTxt}\r\n                            <div class=\"mt-5\">\r\n                                <table style=\"width:100%\">\r\n                                      <tr>\r\n                                        <th class='green-text-color text-uppercase'><span data-translation='orderEntry.quantity'></span></th>\r\n                                        <th class='green-text-color text-uppercase'><span data-translation='orderEntry.uom'></span></th>\r\n                                        <th class='green-text-color text-right text-uppercase'><span data-translation='orderEntry.price'></span></th>\r\n                                        <th class='green-text-color text-right text-uppercase'><span data-translation='orderEntry.extendedPrice'></span></th>\r\n                                      </tr>\r\n                                      <tr>\r\n                                        <td><input id=\"quantity\" class=\"order-entry-quantity-pop-up\" value='${quantity}'\" /></td>\r\n                                        <td>${uomTxt}</td>\r\n                                        <td class=\"text-right\">${priceTxt}</td>\r\n                                        <td class=\"text-right\">$<span id=\"extendedPrice\">${window.window.formatNum(extendedPrice)}</span></td>\r\n                                        <td rowspan=\"2\">\r\n                                            <button class=\"btn btn-custom float-right\" id=\"addBtn\">${addBtnTxt}</button>\r\n                                        </td>\r\n                                      </tr>\r\n                                 </table>\r\n                            </div>\r\n                        </div>\r\n                      </div>\r\n                    </div>`\r\n        return modal;\r\n    }\r\n\r\n    // without details\r\n    fetchPricing(itemNumber, quantity, uom, targetPriceElement, targetPriceInputElement, targetExtendedPriceElement, targetActiveElements) {\r\n        $(targetActiveElements).prop(\"disabled\", true);\r\n        fetch(\"\" + '/erp/OrderEntry/ItemPricing?itemNo=' + encodeURIComponent(itemNumber)\r\n            + '&uom=' + encodeURIComponent(uom)\r\n            + '&quantity=' + quantity, {\r\n            headers: {\r\n                'Authorization': authenticationService()\r\n            }\r\n        }).then((response) => {\r\n            if (response.status !== 200)\r\n                throw new Error(response.status)\r\n            return response.json();\r\n        }).then((itemPricing) => {\r\n            if (itemPricing.itemNo) {\r\n                let price = itemPricing.unitPrice;\r\n                let extendedPrice = parseFloat(itemPricing.unitPrice * quantity);\r\n                $(targetPriceInputElement).val(price);\r\n                $(targetPriceElement).text(price);\r\n                $(targetExtendedPriceElement).text(extendedPrice);\r\n                $(targetActiveElements).prop(\"disabled\", false);\r\n            } else {\r\n                Swal.fire(itemPricing);\r\n            }\r\n        }).catch((error) => {\r\n            console.error(`fetch error: ${error}`);\r\n            $(targetActiveElements).prop(\"disabled\", false);\r\n        });\r\n    }\r\n\r\n    // with details\r\n    fetchPricingWithDetails(selected, index) {\r\n        let itemNumber = selected.itemNo;\r\n        let isExisting = index >= 0;\r\n        let addBtnTxt = \"\";\r\n\r\n        let uri = \"\" + '/erp/OrderEntry/ItemPricingDetails?itemNo=' + encodeURIComponent(itemNumber);\r\n        let quantity = 1;\r\n        let uom = '';\r\n        if (isExisting) {\r\n            quantity = this.state.items[index].quantity;\r\n            uom = this.state.items[index].uom;\r\n            uri += '&uom=' + encodeURIComponent(uom) + '&quantity=' + quantity;\r\n            addBtnTxt = '<span data-translation=\"orderEntry.update\"></span>';\r\n        }\r\n        this.setState({ value: false, isFetching: true });\r\n        fetch(uri, {\r\n            headers: {\r\n                'Authorization': authenticationService()\r\n            }\r\n        }).then((response) => {\r\n            if (response.status !== 200)\r\n                throw new Error(response.status)\r\n            return response.json();\r\n        }).then((details) => {\r\n            if (details.itemNo) {\r\n                let itemNumber = details.itemNo;\r\n                let price = (isExisting) ? (this.state.items[index].price) : details.unitPrice;\r\n                let UOMs = (isExisting) ? (this.state.items[index].UOMs) : details.uoMs;\r\n                uom = (isExisting) ? (this.state.items[index].uom) : details.uom;\r\n                let extendedPrice = parseFloat(price * quantity);\r\n                let description = details.description;\r\n                let additionalInfos = details.additionalInfos;\r\n                let imageUrls = details.imageUrls;\r\n\r\n                let popupWidth = document.querySelector('.div-oe-form').offsetWidth ?? '100%';\r\n                if (!imageUrls || imageUrls.length == 0) {\r\n                    popupWidth = '500pt';\r\n                }\r\n\r\n                Swal.fire({\r\n                    html: this.showItemDetail(itemNumber, description, additionalInfos, imageUrls, quantity, uom, UOMs, price, extendedPrice, addBtnTxt),\r\n                    width: popupWidth,\r\n                    showConfirmButton: false,\r\n                    showCloseButton: true,\r\n                    allowOutsideClick: false,\r\n                    onBeforeOpen: () => {\r\n                        window.translate();\r\n                        let overwritePrice = false;\r\n                        document.querySelector('#quantity').addEventListener('change', () => {\r\n                            if (!overwritePrice) {\r\n                                this.fetchPricing(itemNumber, $(\"#quantity\").val(), $(\"#uom option:selected\").text(), \"#price\", \"#priceInput\", \"#extendedPrice\", \"#addBtn\");\r\n                            } else { // if the price has been overwritten\r\n                                let price = $('#priceInput').val();\r\n                                let quantity = $('#quantity').val();\r\n                                $('#extendedPrice').text(window.window.formatNum(parseFloat(price) * parseFloat(quantity)));\r\n                            }\r\n                        });\r\n\r\n                        document.querySelector('#uom').addEventListener('change', () => {\r\n                            if (!overwritePrice) {\r\n                                this.fetchPricing(itemNumber, $(\"#quantity\").val(), $(\"#uom option:selected\").text(), \"#price\", \"#priceInput\", \"#extendedPrice\", \"#addBtn\");\r\n                            }\r\n                        });\r\n\r\n                        if (this.state.allowPriceOverride) {\r\n                            document.querySelector('#priceInput').addEventListener('change', () => {\r\n                                let price = $('#priceInput').val();\r\n                                let quantity = $('#quantity').val();\r\n                                $('#price').text(price);\r\n                                $('#quantity').val(quantity);\r\n                                $('#extendedPrice').text(window.window.formatNum(parseFloat(price) * parseFloat(quantity)));\r\n                                overwritePrice = true;\r\n                            });\r\n                        }\r\n\r\n                        document.querySelector(\"#addBtn\").addEventListener('click', () => {\r\n                            Swal.clickConfirm();\r\n                        });\r\n                    },\r\n                    onOpen: () => { $('#quantity').select(); },\r\n                    preConfirm: function () {\r\n                        return new Promise((resolve, reject) => {\r\n                            let uoms = $(\"#uom>option\").map(function () { return $(this).text(); }).get();\r\n\r\n                            resolve({\r\n                                itemNumber: itemNumber,\r\n                                description: description,\r\n                                extendedPrice: $('#extendedPrice').text(),\r\n                                price: $('#price').text(),\r\n                                uom: $('#uom').find(\":selected\").text(),\r\n                                uoms: uoms,\r\n                                quantity: $('#quantity').val(),\r\n                            });\r\n                        });\r\n                    }\r\n                }).then((data) => {\r\n                    if (data && data.value && data.value.itemNumber) {\r\n                        let item = new Object();\r\n                        item.itemNo = data.value.itemNumber;\r\n                        item.description = data.value.description;\r\n                        item.price = data.value.price;\r\n                        item.uom = data.value.uom;\r\n                        item.quantity = data.value.quantity;\r\n                        item.UOMs = data.value.uoms;\r\n                        item.extendedPrice = data.value.extendedPrice;\r\n                        item.type = selected.type;\r\n\r\n                        if (isExisting) {\r\n                            this.state.items[index].quantity = parseFloat(item.quantity);\r\n                            this.state.items[index].uom = item.uom;\r\n                            this.state.items[index].price = parseFloat(item.price);\r\n                            this.state.items[index].extendedPrice = parseFloat(item.price * item.quantity);\r\n                            this.forceUpdate();\r\n                        } else {\r\n                            this.setState({\r\n                                items: this.state.items.concat([item]),\r\n                                confirmToClose: true\r\n                            });\r\n                        }\r\n                    }\r\n\r\n                    $('.fa-calendar').show();\r\n                    this.setState({ value: true, isFetching: false });\r\n                });\r\n            }\r\n        }).catch((error) => {\r\n            console.error(`fetch error: ${error}`);\r\n            this.setState({ value: true, isFetching: false });\r\n        });\r\n    }\r\n\r\n    // on selected item\r\n    onInputChange(value) {\r\n        this.setState({\r\n            value: false\r\n        });\r\n\r\n        if (value && value[0]) {\r\n            let selected = value[0];\r\n            selected.itemNo = selected.id;\r\n\r\n            // if enhance, show this instead.\r\n            if (this.state.showItemDetails && selected.type === 'Item') { // add new\r\n                this.fetchPricingWithDetails(selected, -1);\r\n            } else { // no details\r\n                let item = new Object();\r\n                item.itemNo = selected.itemNo;\r\n                item.description = selected.description;\r\n                item.type = selected.type;\r\n\r\n                fetch(\"\" + '/erp/OrderEntry/ItemPricing?itemNo=' + encodeURIComponent(item.itemNo) + '&itemType=' + item.type, {\r\n                    headers: {\r\n                        'Authorization': authenticationService()\r\n                    }\r\n                }).then((response) => {\r\n                    if (response.status !== 200)\r\n                        throw new Error(response.status)\r\n                    return response.json();\r\n                }).then((itemPricing) => {\r\n                    if (itemPricing.itemNo) {\r\n                        item.price = itemPricing.unitPrice;\r\n                        item.uom = itemPricing.uom;\r\n                        item.quantity = 1;\r\n                        item.UOMs = itemPricing.uoMs;\r\n                        item.extendedPrice = itemPricing.unitPrice;\r\n\r\n                        this.setState({\r\n                            items: this.state.items.concat([item]),\r\n                            confirmToClose: true\r\n                        });\r\n\r\n                        this.setState({\r\n                            value: true\r\n                        });\r\n                        if (this.refs['quantity'] && item.type === 'Item')\r\n                            this.refs['quantity'].focus();\r\n                        else if (this.refs['unitPrice'])\r\n                            this.refs['unitPrice'].focus();\r\n                    } else {\r\n                        Swal.fire(itemPricing);\r\n                    }\r\n                }).catch((error) => {\r\n                    console.error(`fetch error: ${error}`);\r\n                });\r\n            }\r\n        }\r\n    }\r\n\r\n    componentDidUpdate(prevProps,prevState) {\r\n      if(prevState.isLoading && !this.state.isLoading){\r\n          //move datepicker to componentDidUpdate to make sure element exist when initializing\r\n          $('.datepicker').datepicker({\r\n              format: dateFormat,\r\n              autoclose: true,\r\n              startDate: new Date().toLocaleDateString('en-US').split`T`[0],\r\n          });\r\n          $('.datepicker').datepicker().on(\"changeDate\",function(e){\r\n            this.handleChange(e);\r\n          }.bind(this));\r\n      }\r\n    }\r\n\r\n    componentWillUnmount() {\r\n        $('[data-toggle=\"tooltip\"]').tooltip();\r\n        if (this.state.confirmToClose) {\r\n            window.onbeforeunload = () => true\r\n        } else {\r\n            window.onbeforeunload = null\r\n        }\r\n\r\n        window.onbeforeunload = null\r\n    }\r\n\r\n    componentDidMount() {\r\n        if (!this.state.translation) {\r\n            fetch('./lang/application-' + window.getLanguage() + '.json')\r\n                .then(response => response.json())\r\n                .then((json) => {\r\n                    this.setState({\r\n                        translation: json\r\n                    })\r\n                }).then(() => {\r\n                    window.translate();\r\n                });\r\n        }\r\n\r\n        fetch(\"\" + '/erp/OrderEntry/ShipToLocations', {\r\n            headers: {\r\n                'Authorization': authenticationService()\r\n            }\r\n        }).then((response) => {\r\n            if (response.status !== 200)\r\n                throw new Error(response.status)\r\n            return response.json();\r\n        }).then((result) => {\r\n            if (result.error) {\r\n                console.error(`fetch error: ${result.error}`);\r\n                var error = result.error;\r\n                CustomerPortalAction.displayGeneralMessage(undefined, 'oe-' + error);\r\n                return false;\r\n            }\r\n\r\n            let shipToLocations = result.shipToLocations;\r\n            let shipViaCodes = result.shipViaCodes;\r\n\r\n            if (shipViaCodes && shipViaCodes.length != 0) {\r\n                this.setState({\r\n                    shipViaCodes: shipViaCodes\r\n                });\r\n                //this.setSelectedShipViaCode(shipViaCodes[0]);\r\n            }\r\n\r\n            if (shipToLocations && shipToLocations.length != 0) {\r\n                this.setState({\r\n                    shipToLocations: shipToLocations,\r\n                });\r\n                this.setSelectedShipToLocation(shipToLocations[0]);\r\n            } else {\r\n                // get billing address\r\n                fetch('/erp/customer/customerinfo/', {\r\n                    headers: {\r\n                        'Authorization': authenticationService()\r\n                    }\r\n                }).then((response) => {\r\n                    if (response.status !== 200)\r\n                        throw new Error(response.status)\r\n                    return response.json();\r\n                }).then((info) => {\r\n                    if (info) {\r\n                        this.setState({\r\n                            shipToName: info.shipToName,\r\n                            address1: info.billingAddress,\r\n                            address2: \"\",\r\n                            country: info.country,\r\n                            city: info.city,\r\n                            stateOrProvince: info.state,\r\n                            zipOrPostalCode: info.zipCode,\r\n                            phoneNumber: info.phoneNumber,\r\n                            email: info.email,\r\n                            disabled: false\r\n                        });\r\n                    }\r\n                }).catch((error) => {\r\n                    console.error(`fetch error: ${error}`);\r\n                });\r\n            }\r\n\r\n            this.setState({ isLoading: false });\r\n        }).then(() => {\r\n            window.translate();\r\n        }).catch((error) => {\r\n            console.error(`fetch error: ${error}`);\r\n        });\r\n    }\r\n    render() {\r\n        let erp = CustomerPortalStore.getERP();\r\n        if (this.state.isLoading || !this.state.translation) {\r\n            return (\r\n                <Loading />\r\n            )\r\n        }\r\n        let header = <div className=\"top div-white-background py-0  container-fluid\">\r\n            <div className=\"row\">\r\n                <div className=\"col col-12 col-md-6 oe-border-line py-3\">\r\n                    <label data-translation=\"orderEntry.shipToLocation\">Ship-to Location</label>\r\n                    <select disabled={!this.state.shipToLocations || this.state.shipToLocations.length == 0} className=\"form-control\" name=\"shipToLocation\" value={this.state.selectedShipToLocation} onChange={(e) => { this.handleShipToLocationChange(e) }}>\r\n                        {this.state.shipToLocations && this.state.shipToLocations.length > 0 ?\r\n                            this.state.shipToLocations.map((entry) => {\r\n                                return (<option key={entry.id} value={entry.id} data-translation={(entry.id == BILLING_ADDRESS_SHIPTO) ? (\"orderEntry.DefaultShipToLocation\") : (\"\")}>{entry.id}</option>)\r\n                            })\r\n                            : (false)}\r\n                        {erp != \"SageIntacct\" ? (<option value=\"\">--NEW--</option>) : (false)}\r\n                    </select>\r\n\r\n                    <div className={\"show collapse\" + (this.state.open ? ' in' : '')}>\r\n                        <label data-translation=\"orderEntry.shipToName\">Ship To Name</label>\r\n                        <input type=\"text\" maxLength=\"60\" className=\"form-control\" name=\"shipToName\" disabled={this.state.disabled} value={this.state.shipToName} onChange={(e) => { this.handleChange(e) }}></input>\r\n                        <label data-translation=\"orderEntry.address1\">Address 1</label>\r\n                        <input type=\"text\" maxLength=\"60\" className=\"form-control\" name=\"address1\" disabled={this.state.disabled} value={this.state.address1} onChange={(e) => { this.handleChange(e) }}></input>\r\n                        <label data-translation=\"orderEntry.address2\">Address 2</label>\r\n                        <input type=\"text\" maxLength=\"60\" className=\"form-control\" name=\"address2\" disabled={this.state.disabled} value={this.state.address2} onChange={(e) => { this.handleChange(e) }}></input>\r\n\r\n                        <div className=\"row\">\r\n                            <div className=\"col\">\r\n                                <label data-translation=\"orderEntry.country\">Country</label>\r\n                                <input type=\"text\" maxLength=\"30\" className=\"form-control\" name=\"country\" disabled={this.state.disabled} value={this.state.country} onChange={(e) => { this.handleChange(e) }}></input>\r\n                            </div>\r\n                            <div className=\"col\">\r\n                                <label data-translation=\"orderEntry.city\">City</label>\r\n                                <input type=\"text\" maxLength=\"30\" className=\"form-control\" name=\"city\" disabled={this.state.disabled} value={this.state.city} onChange={(e) => { this.handleChange(e) }}></input>\r\n                            </div>\r\n                        </div>\r\n\r\n                        <div className=\"row\">\r\n                            <div className=\"col\">\r\n                                <label data-translation=\"orderEntry.stateProvince\">State/Province</label>\r\n                                <input type=\"text\" maxLength=\"30\" className=\"form-control\" name=\"stateOrProvince\" disabled={this.state.disabled} value={this.state.stateOrProvince} onChange={(e) => { this.handleChange(e) }}></input>\r\n                            </div>\r\n                            <div className=\"col\">\r\n                                <label data-translation=\"orderEntry.zipPostalCode\">Zip/Postal Code</label>\r\n                                <input type=\"text\" maxLength=\"20\" className=\"form-control\" name=\"zipOrPostalCode\" disabled={this.state.disabled} value={this.state.zipOrPostalCode} onChange={(e) => { this.handleChange(e) }}></input>\r\n                            </div>\r\n                        </div>\r\n\r\n                        <div className=\"row\">\r\n                            <div className=\"col\">\r\n                                <label data-translation=\"orderEntry.phone\">Phone</label>\r\n                                <input type=\"text\" maxLength=\"30\" className=\"form-control\" name=\"phoneNumber\" disabled={this.state.disabled} value={this.state.phoneNumber} onChange={(e) => { this.handleChange(e) }}></input>\r\n                            </div>\r\n                            <div className=\"col\">\r\n                                <label data-translation=\"orderEntry.email\">Email</label>\r\n                                <input type=\"email\" maxLength=\"50\" className=\"form-control\" name=\"email\" disabled={this.state.disabled} value={this.state.email} onChange={(e) => { this.handleChange(e) }}></input>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <div className=\"col col-12 col-md-6 mb-4 mb-md-0 py-3 d-flex flex-column\">\r\n                    <label data-translation=\"orderEntry.poNumber\">PO Number</label>\r\n                    <div>\r\n                        <div className=\"input-group\">\r\n                            <input type=\"text\" maxLength=\"22\" className=\"form-control text-uppercase mr-md-4\" name=\"poNumber\" onBlur={(e) => { this.handleChange(e) }}></input>\r\n                            <span className=\"input-group-addon btn btn-info teal d-none d-md-block\"\r\n                                onClick={this.toggle.bind(this)}>\r\n                                {this.state.open ? <i className=\"fa fa-chevron-up\"></i> : <i className=\"fa fa-chevron-down\"></i>}\r\n                            </span>\r\n                        </div>\r\n                    </div>\r\n\r\n                    <div className={\"d-flex flex-column flex-grow-1 show collapse\" + (this.state.open ? ' in' : '')}>\r\n                        <div className='w-50 form-group mb-0'>\r\n                            <label data-translation=\"orderEntry.requestDeliveryDate\">Request Delivery Date</label>\r\n                        </div>\r\n                        <div className='w-50 form-group position-relative mb-0'>\r\n                            <i className=\"fa fa-calendar click-through\" aria-hidden=\"true\"></i>\r\n                            <input type=\"text\" autoComplete='off' className=\"form-control datepicker form-control-i pl-3\"\r\n                                   value={this.state.requestDeliveryDate || \"\"} name=\"requestDeliveryDate\" onKeyDown={this.handleDeliverDateChange.bind(this)} onChange={(e)=>{}}\r\n                                   placeholder = {dateFormat}\r\n                             />\r\n                        </div>\r\n                        {this.state.shipVia ?\r\n                            <div>\r\n                                <label data-translation=\"orderEntry.shipViaCode\">Ship Via Code</label>\r\n                                <select disabled={!this.state.shipViaCodes || this.state.shipViaCodes.length == 0}\r\n                                    className=\"form-control\" name=\"shipViaCode\" value={this.state.selectedShipViaCode}\r\n                                    onChange={(e) => { this.handleShipViaCodeChange(e) }}>\r\n                                    <option value=\"\">--NONE--</option>\r\n                                    {this.state.shipViaCodes && this.state.shipViaCodes.length > 0 ?\r\n                                        this.state.shipViaCodes.map((entry) => {\r\n                                            return (<option key={entry.code} value={entry.code}>{entry.code} - {entry.name}</option>)\r\n                                        })\r\n                                        : (false)}\r\n                                </select>\r\n                            </div>\r\n                            : (false)}\r\n                        <div className='form-group d-flex flex-column flex-grow-1'>\r\n                            <label data-translation=\"orderEntry.commentsShippingInstructions\">Comments/Shipping Instructions</label>\r\n                            <textarea className=\"form-control flex-grow-1\" maxLength=\"250\" rows=\"4\" defaultValue={this.state.comments} name=\"comments\" onBlur={(e) => { this.handleChange(e) }}></textarea>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n                <div className='col-12 d-md-none'>\r\n                    <span className=\"btn btn-custom w-100 mx-0 mb-3\"\r\n                        onClick={this.toggle.bind(this)}>\r\n                        {this.state.open ? <i className=\"fa fa-chevron-up\"></i> : <i className=\"fa fa-chevron-down\"></i>}\r\n                    </span>\r\n                </div>\r\n            </div>\r\n        </div>;\r\n\r\n        let detail = <div className=\"div-white-background mt-4 p-0\">\r\n            <div className='oe-table border-table table list-table table-hover'>\r\n                <div className='table-row table-header no-hover'>\r\n                    <div className=\"table-cell col-item\">\r\n                        <label data-translation=\"orderEntry.item\">Item</label>\r\n                    </div>\r\n                    <div className=\"table-cell col-desc\">\r\n                        <label data-translation=\"orderEntry.description\">Description</label>\r\n                    </div>\r\n                    <div className=\"table-cell col-quantity\">\r\n                        <label className=\"\" data-translation=\"orderEntry.quantity\">Quantity</label>\r\n                    </div>\r\n                    <div className=\"table-cell col-uom\">\r\n                        <label className=\"\" data-translation=\"orderEntry.uom\">UOM</label>\r\n                    </div>\r\n                    <div className=\"table-cell col-price\">\r\n                        <label className=\"\" data-translation=\"orderEntry.price\">Price</label>\r\n                    </div>\r\n                    <div className=\"table-cell col-ext-price\">\r\n                        <label className=\"\" data-translation=\"orderEntry.extendedPrice\">Ext. Price</label>\r\n                    </div>\r\n                    <div className=\"table-cell col-dlt text-center\">\r\n                        <label className=\"\" data-translation=\"orderEntry.remove\">Remove</label>\r\n                    </div>\r\n                </div>\r\n                {this.state.items.map((item, i) => {\r\n                    return (\r\n                        <div className='table-row' key={'item-' + item.itemNo + '-' + i}>\r\n                            <div className='table-cell col-item'>\r\n                                <span className='mobile title' data-translation=\"orderEntry.item\">Item</span>\r\n                                <span>\r\n                                    {(this.state.hasShowItemDetails && item.type === 'Item') ? <button className=\"btn btn-link no-padding text-left\" disabled={this.state.isFetching} onClick={(e) => { this.fetchPricingWithDetails(item, i) }}>{item.itemNo}</button> : item.itemNo}\r\n                                </span>\r\n                            </div>\r\n                            <div className='table-cell col-desc'>\r\n                                <span className='mobile title' data-translation=\"orderEntry.description\">Description</span>\r\n                                <span>\r\n                                    {(this.state.hasShowItemDetails && item.type === 'Item') ? <button className=\"btn btn-link no-padding text-left\" disabled={this.state.isFetching} onClick={(e) => { this.fetchPricingWithDetails(item, i) }}>{item.description}</button> : item.description}\r\n                                </span>\r\n                            </div>\r\n\r\n                            <div className='table-cell col-quantity'>\r\n                                <span className='mobile title' data-translation=\"orderEntry.quantity\">Quantity</span>\r\n                                {(item.type == 'Item') ? <input className=\"order-entry-quantity\" name=\"quantity\" ref={\"quantity\"} type=\"number\" disabled={this.state.isFetching} onFocus={(e) => { e.target.select(); }} value={item.quantity} onChange={(e) => { this.handlePricingChange(e, i, true) }} onBlur={(e) => { this.handlePricingChange(e, i) }}></input> : (false)}\r\n                            </div>\r\n\r\n                            <div className='table-cell col-uom'>\r\n                                <span className='mobile title' data-translation=\"orderEntry.price\">UOM</span>\r\n                                {item.UOMs && item.UOMs.length > 1 ?\r\n                                    (<select className=\"select-custom bold \" value={item.uom} name=\"uom\" disabled={this.state.isFetching} onChange={(e) => { this.handlePricingChange(e, i) }}>\r\n                                        {item.UOMs.map((uom) => {\r\n                                            return (<option key={uom} value={uom}>{uom}</option>)\r\n                                        })}\r\n                                    </select>) : <span className=\"\">{item.uom}</span>}\r\n                            </div>\r\n                            <div className='table-cell col-price'>\r\n                                <span className='mobile title' data-translation=\"orderEntry.uom\">Price</span>\r\n                                {this.state.allowPriceOverride ?\r\n                                    (<span>\r\n                                        <input\r\n                                          className=\"order-entry-price\"\r\n                                          value={(typeof item.price == \"number\") ? (window.formatNum(item.price,2,6)) : (item.price)}\r\n                                          type=\"number\"\r\n                                          name=\"unitPrice\"\r\n                                          ref={\"unitPrice\"}\r\n                                          disabled={this.state.isFetching}\r\n                                          onFocus={(e) => { e.target.select(); }}\r\n                                          onChange={(e) => { this.overWriteUnitPrice(e, i) }}>\r\n                                        </input>\r\n                                    </span>)\r\n                                    :\r\n                                    (<span className=\"\">${window.formatNum(item.price || 0)}</span>)\r\n                                }\r\n                            </div>\r\n                            <div className='table-cell col-ext-price'>\r\n                                <span className='mobile title' data-translation=\"orderEntry.extendedPrice\">Ext. Price</span>\r\n                                <span className=\"\">${window.formatNum(item.extendedPrice || 0)}</span>\r\n                            </div>\r\n                            <div className='table-cell col-dlt text-center'>\r\n                                <span onClick={this.remove.bind(this, item)}><i className=\"fa fa-trash text-danger btn \"></i></span>\r\n                            </div>\r\n                        </div>\r\n                    )\r\n                })}\r\n\r\n            </div>\r\n\r\n            <div className=\"mt-3 px-3 div-search-box\">\r\n                <label data-translation=\"orderEntry.addItem\" id=\"test\">ADD ITEM</label>\r\n                <div className=\"dropdown-content container-fluid px-0\">\r\n                    <div className='row'>\r\n                        <div className='col-12 col-md-5 px-md-0 pl-0'>\r\n                            <ItemSearchInput placeholder={this.state.translation.orderEntry.searchItem} disabled={!this.state.value} id=\"itemSearchBox\" onChange={value => this.onInputChange(value)}></ItemSearchInput>\r\n                        </div>\r\n\r\n                        {this.state.hasShowItemDetails ?\r\n                            <label className=\"checkbox-inline ml-5 text-uppercase\"><input\r\n                                name=\"showItemDetails\"\r\n                                className=\"green-background\"\r\n                                type=\"checkbox\"\r\n                                checked={this.state.showItemDetails}\r\n                                onChange={this.handleInputChange} /> <span data-translation=\"orderEntry.showItemDetails\">Show Item Details</span></label> :\r\n                            (false)}\r\n                    </div>\r\n                </div>\r\n            </div>\r\n            <br></br>\r\n        </div>;\r\n        let subTotal = 0;\r\n        this.state.items.map(function (item, index) {\r\n            subTotal += parseFloat(item.extendedPrice);\r\n        })\r\n        let footer = <div className=\"row row-eq-height mt-4\">\r\n            <div className=\"col-12 col-md-8 mb-3 mb-md-0\">\r\n                <div className=\"div-background div-gray-background d-flex align-items-center p-4 h-100\">\r\n                    {this.state.noteToCustomer ?\r\n                        <div>\r\n                            <h5 data-translation=\"orderEntry.note\">Note</h5>\r\n                            <p className='m-0 pre-line'>\r\n                                {this.state.noteToCustomer}\r\n                            </p>\r\n                        </div> : (false)}\r\n                </div>\r\n            </div>\r\n            <div className=\"col-12 col-md-4\">\r\n                <div className=\"div-background div-dark-background d-flex align-items-center p-3 h-100\">\r\n                    <h4 className=\"\"><span data-translation=\"orderEntry.subtotal\">SUBTOTAL</span>\r\n                        <span className=\"ml-4\">${window.window.formatNum(subTotal)}</span>\r\n                    </h4>\r\n                </div>\r\n            </div>\r\n            <div className='d-flex justify-content-end custom-btn-group w-100 mx-2 my-4'>\r\n                <button className=\"d-print-none btn btn-custom btn-outline-custom \" type=\"submit\" data-translation=\"orderEntry.clear\" onClick={this.clear.bind(this)}>Clear</button>\r\n                {(this.state.orderTypes && this.state.orderTypes.length > 0) ?\r\n                    <div>\r\n                        {this.state.orderTypes.map((opt, index) =>\r\n                            <button className=\"d-print-none btn btn-custom \" key={opt} type=\"submit\" data-translation={opt === \"Quote\" ? \"orderEntry.placeQuote\" : \"orderEntry.placeOrder\"} disabled={this.state.onSubmit} onClick={this.submit.bind(this, opt)}>Place {opt}</button>\r\n                        )}\r\n\r\n                    </div>\r\n                    : (false)\r\n                }\r\n            </div>\r\n        </div >;\r\n\r\n        let prompt = (this.state.translation.orderEntry) ? <Prompt\r\n            when={this.state.confirmToClose && (this.state.items && this.state.items.length > 0)}\r\n            message={this.state.translation.orderEntry.areYouSureToLeave}\r\n        /> : (false);\r\n\r\n        let content = <div className='div-oe-form'>\r\n            {prompt}\r\n            <div className='page-title'><span data-translation=\"orderEntry.title\">Order Entry</span> <i data-toggle=\"tooltip\" className=\"tooltip-inner\" data-placement=\"right\" title=\"You can use the tab keys to go through the fields. When searching items, try to use the enter key to add items quicker\" className=\"fa fa-question-circle\"></i></div>\r\n            {header} {detail} {footer}\r\n        </div>;\r\n        return (content);\r\n    }\r\n}\r\n\r\nexport default withRouter(OrderEntry);\r\n","/* eslint-disable import/no-extraneous-dependencies */\r\n/* eslint-disable import/no-unresolved */\r\n/* eslint-disable no-shadow */\r\n\r\nimport fetch from 'isomorphic-fetch';\r\nimport React, { useCallback, useState, useRef, useEffect } from 'react';\r\nimport { Menu, MenuItem, AsyncTypeahead } from 'react-bootstrap-typeahead';\r\nimport authenticationService from '../../../authenticationService';\r\nconst $ = require('jquery');\r\n\r\n\r\nconst ItemSearchInput = (props) => {\r\n\r\n    const ref = useRef();\r\n    const [isLoading, setIsLoading] = useState(false);\r\n    const [options, setOptions] = useState([]);\r\n    useEffect(() => {\r\n        if (!props.disabled) {\r\n            setIsLoading(true);\r\n            setOptions([]);\r\n            setIsLoading(false);\r\n        }\r\n    }, [props.disabled]);\r\n\r\n    let enterPressed = false;\r\n    let noResult = \" No match found -\";\r\n    let isButtonPressed = false;\r\n    let isSelected = false;\r\n\r\n    const filterByCallback = (option, props) => (\r\n        // support for item type\r\n        option.type.toLowerCase().replace(/-|\\s/g, \"\").replace(/\\//g, '').indexOf(props.text.toLowerCase().replace(/-|\\s/g, \"\").replace(/\\//g, '')) !== -1 ||\r\n        // support for comments\r\n        option.other.toLowerCase().replace(/-|\\s/g, \"\").replace(/\\//g, '').indexOf(props.text.toLowerCase().replace(/-|\\s/g, \"\").replace(/\\//g, '')) !== -1 ||\r\n        (!option.id && option.description == noResult) ||\r\n        option.id.toLowerCase().replace(/-|\\s/g, \"\").replace(/\\//g, '').indexOf(props.text.toLowerCase().replace(/-|\\s/g, \"\").replace(/\\//g, '')) !== -1 ||\r\n        option.description.toLowerCase().replace(/-|\\s/g, \"\").replace(/\\//g, '').indexOf(props.text.toLowerCase().replace(/-|\\s/g, \"\").replace(/\\//g, '')) !== -1\r\n    );\r\n\r\n    const handleSearch = useCallback((query) => {\r\n\r\n        let isOptionEmpty = options.length === 0 ||\r\n            (!options[0].id && options[0].description == noResult);\r\n\r\n        if ((enterPressed && query && isOptionEmpty) || (isButtonPressed && query)) {\r\n            setIsLoading(true);\r\n\r\n            fetch('/erp/OrderEntry/Items?searchString=' + encodeURI(query), {\r\n                headers: {\r\n                    'Authorization': authenticationService()\r\n                }\r\n            }).then((response) => {\r\n                if (response.status !== 200)\r\n                    throw new Error(response.status)\r\n                return response.json()\r\n            }).then((items) => {\r\n                if (items.error) items = [];\r\n                if (items) {\r\n\r\n                    const options = (items).map((i) => ({\r\n                        id: i.itemNo,\r\n                        description: i.description,\r\n                        other: i.other,\r\n                        disabled: false,\r\n                        type: i.itemType\r\n                    }));\r\n                    setOptions(options);\r\n\r\n                    if (options.length == 0) {\r\n                        setOptions([{\r\n                            id: \"\", description: noResult, other: \"\", disabled: true, type: \"\"\r\n                        }]);\r\n                    }\r\n\r\n                    setIsLoading(false);\r\n\r\n                    if (ref && ref.current) {\r\n                        ref.current.focus();\r\n                        isButtonPressed = false;\r\n                    }\r\n                }\r\n            });\r\n        }\r\n        enterPressed = false;\r\n    });\r\n\r\n    return (\r\n        <div className='container-fluid'>\r\n            <div className=\"row\">\r\n                {props.disabled ? (\r\n                    <div className=\"col-10 position-relative\" disabled>\r\n                        <input className='rbt-input-main form-control rbt-input' disabled />\r\n                    </div>\r\n                ) : (\r\n                        <AsyncTypeahead\r\n                            id=\"inputbox\"\r\n                            className=\"col-10\"\r\n                            filterBy={filterByCallback}\r\n                            ref={ref}\r\n                            isLoading={isLoading}\r\n                            labelKey=\"description\"\r\n                            onSearch={\r\n                                (e) => {\r\n                                    handleSearch(e);\r\n                                }\r\n                            }\r\n                            promptText=\"\"\r\n                            flip={true}\r\n                            highlightOnlyResult={true}\r\n                            selectHintOnEnter={true}\r\n                            onKeyDown={(e) => {\r\n                                if (e.keyCode === 8) {\r\n                                    setIsLoading(false);\r\n                                    setOptions([]);\r\n                                    //ref.current.clear();\r\n                                    return false;\r\n                                }\r\n                                if (e.keyCode === 13) {\r\n                                    enterPressed = true;\r\n                                    handleSearch(e.target.value);\r\n                                }\r\n                            }}\r\n                            onChange={(e) => {\r\n                                if (!isSelected) {\r\n                                    props.onChange(e);\r\n                                    isSelected = true;\r\n                                }\r\n                            }}\r\n                            placeholder={props.placeholder}\r\n                            useCache={false}\r\n                            options={options}\r\n                            renderMenu={(filteredOptions, menuProps) => (\r\n                                <Menu {...menuProps} emptyLabel=\"\">\r\n                                    {filteredOptions.map((option, index) => (\r\n                                        <MenuItem\r\n                                            disabled={option.disabled}\r\n                                            key={option.id}\r\n                                            option={option}\r\n                                            position={index}>\r\n                                            {option.id} - {option.description}\r\n                                        </MenuItem>\r\n                                    ))}\r\n                                </Menu>\r\n                            )}\r\n                        />\r\n                    )}\r\n\r\n                <span className=\"col-2 btn btn-primary teal\" onClick={() => {\r\n                    enterPressed = true;\r\n                    isButtonPressed = true;\r\n                    if (ref && ref.current) {\r\n                        handleSearch(ref.current.getInput().value);\r\n                    }\r\n                }}><i className=\"fa fa-search\"></i></span>\r\n            </div>\r\n        </div>\r\n    );\r\n};\r\n\r\nexport default ItemSearchInput;","import React from 'react';\r\nimport { NavLink  } from \"react-router-dom\";\r\n\r\nexport default class HeaderLink extends React.Component {\r\n  render(){\r\n    return (\r\n      <div className='header-link'>\r\n        <NavLink\r\n          exact\r\n          onClick={this.props.onClick}\r\n          activeClassName=\"selected\"\r\n          to={this.props.target.path}\r\n          data-translation={\"header.\"+this.props.translationTag}\r\n        >\r\n          {this.props.target.desc}\r\n        </NavLink >\r\n      </div>\r\n    );\r\n  }\r\n}\r\n","import React from 'react';\r\nimport { N49LOGO } from '../constants';\r\n\r\nexport default class Footer extends React.Component {\r\n    render() {\r\n        return (\r\n            <footer className='customer-portal-footer d-print-none'>\r\n                <div className='div-container container-fluid'>\r\n                    <div className='row'>\r\n                        <div className='col-12 col-md-4 order-md-2'>\r\n                            <a href=\"https://www.north49.com/customerportal/\" style={{ marginTop: '-6px' }} target=\"_blank\" rel=\"noopener noreferrer\" className='justify-content-md-end  justify-content-center d-flex align-items-stretch text-decoration-none'>\r\n                                <img src={N49LOGO} alt=\"Powered by North49\" className='clickable footer-n49-logo' />\r\n                            </a>\r\n                        </div>\r\n                        <div className='col-12 col-md-8'>\r\n                            <div className='footer-company-info'>\r\n                                <p className=\"company-address w-100\"><i className=\"fa fa-building-o\"></i> {this.props.address}</p>\r\n                                <p className='company-info'>\r\n                                    <span className='company-phone'><i className=\"fa fa-phone\" />{this.props.phone}</span>\r\n                                    <span className='company-separater'>|</span>\r\n                                    <span className='company-url'><a href={(this.props.url||\"\").startsWith(\"http\") ? (this.props.url) : ('http://' + this.props.url)} target=\"_blank\">{this.props.url}</a></span>\r\n                                </p>\r\n                            </div>\r\n                        </div>\r\n                    </div>\r\n                </div>\r\n            </footer>\r\n        );\r\n    }\r\n}\r\n","import React from 'react';\r\nimport { BrowserRouter } from \"react-router-dom\";\r\n\r\nimport HeaderAndFooter from './HeaderFooter/HeaderAndFooter';\r\nimport CustomRouter from './route';\r\n\r\nimport './CustomerPortal.css';\r\nimport CustomerPortalAction from '../../actions/CustomerPortalAction';\r\n\r\nexport default class Home extends React.Component {\r\n    constructor(props) {\r\n        super(props);\r\n        var currentDate = new Date();\r\n        var lastUpdate = new Date(localStorage.lastUpdate)\r\n        let openpages = (localStorage.openpages && localStorage.openpages!='NaN')?(JSON.parse(localStorage.openpages)):({});\r\n        if(typeof openpages != 'object') openpages = {};\r\n        var yesterday = (currentDate - 28800000);\r\n        var length = Object.keys(openpages).length;\r\n        if(length>=0){\r\n          Object.keys(openpages).map((key)=>{\r\n            if(((openpages[key] - yesterday) <= 0)){\r\n              length--;\r\n            }\r\n          })\r\n          if(length <= 0 && !localStorage.lastUpdate){\r\n            openpages = {};\r\n            localStorage.removeItem('currentUser');\r\n          }\r\n        }\r\n        if( localStorage.lastUpdate && ((currentDate - lastUpdate) >= 5000) ){\r\n          localStorage.removeItem('currentUser');\r\n        }\r\n        localStorage.removeItem('lastUpdate');\r\n        let pageID = new Date().getTime();\r\n        openpages[pageID] = pageID;\r\n        sessionStorage.setItem('pageID',pageID);\r\n        localStorage.setItem('openpages', JSON.stringify(openpages));\r\n        window.addEventListener('beforeunload', (event) => {\r\n          if(localStorage.openpages){\r\n            let openpages = (localStorage.openpages)?(JSON.parse(localStorage.openpages)):({});\r\n            let pageID = sessionStorage.pageID;\r\n            if(openpages[pageID]) delete openpages[pageID];\r\n            if (Object.keys(openpages).length <= 0 ) {\r\n              localStorage.removeItem('openpages');\r\n              localStorage.setItem('lastUpdate',new Date())\r\n            } else {\r\n              localStorage.setItem('openpages', JSON.stringify(openpages));\r\n            }\r\n          }\r\n        });\r\n    }\r\n    render(){\r\n        return (\r\n            <div className=\"customer-portal\">\r\n                <BrowserRouter>\r\n                    <HeaderAndFooter>\r\n                        <CustomRouter />\r\n                    </HeaderAndFooter>\r\n                </BrowserRouter>\r\n            </div>\r\n        );\r\n    }\r\n}\r\n","import { Dispatcher } from 'flux';\r\nexport default new Dispatcher();","var map = {\n\t\"./AccountActivity/AccountActivity\": [\n\t\t248,\n\t\t9,\n\t\t0,\n\t\t1,\n\t\t73\n\t],\n\t\"./AccountActivity/AccountActivity.js\": [\n\t\t248,\n\t\t9,\n\t\t0,\n\t\t1,\n\t\t73\n\t],\n\t\"./AccountActivity/AccountActivityCM\": [\n\t\t249,\n\t\t9,\n\t\t0,\n\t\t1,\n\t\t74\n\t],\n\t\"./AccountActivity/AccountActivityCM.js\": [\n\t\t249,\n\t\t9,\n\t\t0,\n\t\t1,\n\t\t74\n\t],\n\t\"./AccountActivity/AccountActivityContainer\": [\n\t\t334,\n\t\t9,\n\t\t0,\n\t\t1,\n\t\t70\n\t],\n\t\"./AccountActivity/AccountActivityContainer.js\": [\n\t\t334,\n\t\t9,\n\t\t0,\n\t\t1,\n\t\t70\n\t],\n\t\"./AccountActivity/ActivityStats\": [\n\t\t204,\n\t\t9,\n\t\t0,\n\t\t1,\n\t\t83\n\t],\n\t\"./AccountActivity/ActivityStats.js\": [\n\t\t204,\n\t\t9,\n\t\t0,\n\t\t1,\n\t\t83\n\t],\n\t\"./AccountActivity/ActivitySummary\": [\n\t\t203,\n\t\t9,\n\t\t109\n\t],\n\t\"./AccountActivity/ActivitySummary.js\": [\n\t\t203,\n\t\t9,\n\t\t109\n\t],\n\t\"./AccountActivity/BarChart\": [\n\t\t197,\n\t\t9,\n\t\t0,\n\t\t1,\n\t\t110\n\t],\n\t\"./AccountActivity/BarChart.js\": [\n\t\t197,\n\t\t9,\n\t\t0,\n\t\t1,\n\t\t110\n\t],\n\t\"./BroadcastMessage\": [\n\t\t250,\n\t\t9,\n\t\t111\n\t],\n\t\"./BroadcastMessage.js\": [\n\t\t250,\n\t\t9,\n\t\t111\n\t],\n\t\"./ClickToPay/CardConnect/CardConnectTokenizer\": [\n\t\t208,\n\t\t9,\n\t\t6,\n\t\t112\n\t],\n\t\"./ClickToPay/CardConnect/CardConnectTokenizer.js\": [\n\t\t208,\n\t\t9,\n\t\t6,\n\t\t112\n\t],\n\t\"./ClickToPay/CardConnect/styles.css\": [\n\t\t423,\n\t\t7,\n\t\t156\n\t],\n\t\"./ClickToPay/ClickToPay\": [\n\t\t335,\n\t\t9,\n\t\t4,\n\t\t6,\n\t\t75\n\t],\n\t\"./ClickToPay/ClickToPay.js\": [\n\t\t335,\n\t\t9,\n\t\t4,\n\t\t6,\n\t\t75\n\t],\n\t\"./ClickToPay/ClickToPaySuccess\": [\n\t\t336,\n\t\t9,\n\t\t0,\n\t\t85\n\t],\n\t\"./ClickToPay/ClickToPaySuccess.js\": [\n\t\t336,\n\t\t9,\n\t\t0,\n\t\t85\n\t],\n\t\"./Common/CPButton\": [\n\t\t147,\n\t\t9,\n\t\t113\n\t],\n\t\"./Common/CPButton.js\": [\n\t\t147,\n\t\t9,\n\t\t113\n\t],\n\t\"./Common/DRILL_DOWN_BTN.svg\": [\n\t\t217,\n\t\t7,\n\t\t157\n\t],\n\t\"./Common/Loading\": [\n\t\t152,\n\t\t9\n\t],\n\t\"./Common/Loading.js\": [\n\t\t152,\n\t\t9\n\t],\n\t\"./Common/PayPal\": [\n\t\t201,\n\t\t9,\n\t\t4,\n\t\t86\n\t],\n\t\"./Common/PayPal.js\": [\n\t\t201,\n\t\t9,\n\t\t4,\n\t\t86\n\t],\n\t\"./Common/PopUpMessage\": [\n\t\t337,\n\t\t9,\n\t\t87\n\t],\n\t\"./Common/PopUpMessage.js\": [\n\t\t337,\n\t\t9,\n\t\t87\n\t],\n\t\"./Common/QUOTE_TO_ORDER.svg\": [\n\t\t218,\n\t\t7,\n\t\t158\n\t],\n\t\"./ContactUs/ContactUs\": [\n\t\t338,\n\t\t9,\n\t\t88\n\t],\n\t\"./ContactUs/ContactUs.js\": [\n\t\t338,\n\t\t9,\n\t\t88\n\t],\n\t\"./CustomPage/Custom\": [\n\t\t339,\n\t\t9,\n\t\t89\n\t],\n\t\"./CustomPage/Custom.js\": [\n\t\t339,\n\t\t9,\n\t\t89\n\t],\n\t\"./CustomerPortal.css\": [\n\t\t331,\n\t\t7\n\t],\n\t\"./HeaderFooter/Footer\": [\n\t\t301,\n\t\t9\n\t],\n\t\"./HeaderFooter/Footer.js\": [\n\t\t301,\n\t\t9\n\t],\n\t\"./HeaderFooter/Header\": [\n\t\t295,\n\t\t9\n\t],\n\t\"./HeaderFooter/Header.js\": [\n\t\t295,\n\t\t9\n\t],\n\t\"./HeaderFooter/HeaderAndFooter\": [\n\t\t294,\n\t\t9\n\t],\n\t\"./HeaderFooter/HeaderAndFooter.js\": [\n\t\t294,\n\t\t9\n\t],\n\t\"./HeaderFooter/HeaderLink\": [\n\t\t300,\n\t\t9\n\t],\n\t\"./HeaderFooter/HeaderLink.js\": [\n\t\t300,\n\t\t9\n\t],\n\t\"./Home\": [\n\t\t318,\n\t\t9\n\t],\n\t\"./Home.js\": [\n\t\t318,\n\t\t9\n\t],\n\t\"./ManageAccount/ChangePassword\": [\n\t\t340,\n\t\t9,\n\t\t90\n\t],\n\t\"./ManageAccount/ChangePassword.js\": [\n\t\t340,\n\t\t9,\n\t\t90\n\t],\n\t\"./ManageAccount/ContactUs\": [\n\t\t252,\n\t\t9,\n\t\t91\n\t],\n\t\"./ManageAccount/ContactUs.js\": [\n\t\t252,\n\t\t9,\n\t\t91\n\t],\n\t\"./ManageAccount/Login\": [\n\t\t341,\n\t\t9,\n\t\t71\n\t],\n\t\"./ManageAccount/Login.js\": [\n\t\t341,\n\t\t9,\n\t\t71\n\t],\n\t\"./ManageAccount/MyAccount\": [\n\t\t342,\n\t\t9,\n\t\t92\n\t],\n\t\"./ManageAccount/MyAccount.js\": [\n\t\t342,\n\t\t9,\n\t\t92\n\t],\n\t\"./ManageAccount/RequestNewAccount\": [\n\t\t254,\n\t\t9,\n\t\t93\n\t],\n\t\"./ManageAccount/RequestNewAccount.js\": [\n\t\t254,\n\t\t9,\n\t\t93\n\t],\n\t\"./ManageAccount/ResetPassword\": [\n\t\t343,\n\t\t9,\n\t\t94\n\t],\n\t\"./ManageAccount/ResetPassword.js\": [\n\t\t343,\n\t\t9,\n\t\t94\n\t],\n\t\"./ManageAccount/ResetPasswordForm\": [\n\t\t255,\n\t\t9,\n\t\t95\n\t],\n\t\"./ManageAccount/ResetPasswordForm.js\": [\n\t\t255,\n\t\t9,\n\t\t95\n\t],\n\t\"./ManageAccount/SignUp\": [\n\t\t253,\n\t\t9,\n\t\t96\n\t],\n\t\"./ManageAccount/SignUp.js\": [\n\t\t253,\n\t\t9,\n\t\t96\n\t],\n\t\"./ManageCreditCards/ManageCreditCards\": [\n\t\t344,\n\t\t9,\n\t\t0,\n\t\t97\n\t],\n\t\"./ManageCreditCards/ManageCreditCards.js\": [\n\t\t344,\n\t\t9,\n\t\t0,\n\t\t97\n\t],\n\t\"./MerchantHome\": [\n\t\t345,\n\t\t9,\n\t\t84\n\t],\n\t\"./MerchantHome.js\": [\n\t\t345,\n\t\t9,\n\t\t84\n\t],\n\t\"./NoMatch\": [\n\t\t346,\n\t\t9,\n\t\t114\n\t],\n\t\"./NoMatch.js\": [\n\t\t346,\n\t\t9,\n\t\t114\n\t],\n\t\"./OrderEntry/ItemSearchInput\": [\n\t\t297,\n\t\t9\n\t],\n\t\"./OrderEntry/ItemSearchInput.js\": [\n\t\t297,\n\t\t9\n\t],\n\t\"./OrderEntry/OrderEntry\": [\n\t\t296,\n\t\t9\n\t],\n\t\"./OrderEntry/OrderEntry.js\": [\n\t\t296,\n\t\t9\n\t],\n\t\"./PayAccount/PayAccount\": [\n\t\t256,\n\t\t9,\n\t\t79\n\t],\n\t\"./PayAccount/PayAccount.js\": [\n\t\t256,\n\t\t9,\n\t\t79\n\t],\n\t\"./PayAccount/PayAccountContainer\": [\n\t\t347,\n\t\t9,\n\t\t0,\n\t\t4,\n\t\t6,\n\t\t68\n\t],\n\t\"./PayAccount/PayAccountContainer.js\": [\n\t\t347,\n\t\t9,\n\t\t0,\n\t\t4,\n\t\t6,\n\t\t68\n\t],\n\t\"./PayAccount/PayAccountEntry\": [\n\t\t224,\n\t\t9,\n\t\t115\n\t],\n\t\"./PayAccount/PayAccountEntry.js\": [\n\t\t224,\n\t\t9,\n\t\t115\n\t],\n\t\"./PayAccount/PayOption\": [\n\t\t225,\n\t\t9,\n\t\t0,\n\t\t4,\n\t\t78\n\t],\n\t\"./PayAccount/PayOption.js\": [\n\t\t225,\n\t\t9,\n\t\t0,\n\t\t4,\n\t\t78\n\t],\n\t\"./Prepayment/PayAccountEntry\": [\n\t\t257,\n\t\t9,\n\t\t116\n\t],\n\t\"./Prepayment/PayAccountEntry.js\": [\n\t\t257,\n\t\t9,\n\t\t116\n\t],\n\t\"./Prepayment/PrePaymentContainer\": [\n\t\t348,\n\t\t9,\n\t\t0,\n\t\t4,\n\t\t6,\n\t\t67\n\t],\n\t\"./Prepayment/PrePaymentContainer.js\": [\n\t\t348,\n\t\t9,\n\t\t0,\n\t\t4,\n\t\t6,\n\t\t67\n\t],\n\t\"./Prepayment/Prepayment\": [\n\t\t349,\n\t\t9,\n\t\t80\n\t],\n\t\"./Prepayment/Prepayment.js\": [\n\t\t349,\n\t\t9,\n\t\t80\n\t],\n\t\"./Prepayment/PrepaymentOrderEntry\": [\n\t\t226,\n\t\t9,\n\t\t117\n\t],\n\t\"./Prepayment/PrepaymentOrderEntry.js\": [\n\t\t226,\n\t\t9,\n\t\t117\n\t],\n\t\"./Prepayment/PrepaymentOrders\": [\n\t\t258,\n\t\t9,\n\t\t81\n\t],\n\t\"./Prepayment/PrepaymentOrders.js\": [\n\t\t258,\n\t\t9,\n\t\t81\n\t],\n\t\"./Prepayment/PrepaymentQuoteEntry\": [\n\t\t227,\n\t\t9,\n\t\t118\n\t],\n\t\"./Prepayment/PrepaymentQuoteEntry.js\": [\n\t\t227,\n\t\t9,\n\t\t118\n\t],\n\t\"./Prepayment/PrepaymentQuotes\": [\n\t\t259,\n\t\t9,\n\t\t82\n\t],\n\t\"./Prepayment/PrepaymentQuotes.js\": [\n\t\t259,\n\t\t9,\n\t\t82\n\t],\n\t\"./Prepayment/PrepaymentUnallocated\": [\n\t\t260,\n\t\t9,\n\t\t98\n\t],\n\t\"./Prepayment/PrepaymentUnallocated.js\": [\n\t\t260,\n\t\t9,\n\t\t98\n\t],\n\t\"./Salesperson/Salesperson\": [\n\t\t350,\n\t\t9,\n\t\t119\n\t],\n\t\"./Salesperson/Salesperson.js\": [\n\t\t350,\n\t\t9,\n\t\t119\n\t],\n\t\"./Superuser\": [\n\t\t351,\n\t\t9,\n\t\t99\n\t],\n\t\"./Superuser.js\": [\n\t\t351,\n\t\t9,\n\t\t99\n\t],\n\t\"./ViewDocuments/ViewDetailsARItem\": [\n\t\t261,\n\t\t9,\n\t\t100\n\t],\n\t\"./ViewDocuments/ViewDetailsARItem.js\": [\n\t\t261,\n\t\t9,\n\t\t100\n\t],\n\t\"./ViewDocuments/ViewDetailsARSummary\": [\n\t\t262,\n\t\t9,\n\t\t101\n\t],\n\t\"./ViewDocuments/ViewDetailsARSummary.js\": [\n\t\t262,\n\t\t9,\n\t\t101\n\t],\n\t\"./ViewDocuments/ViewDetailsCM\": [\n\t\t263,\n\t\t9,\n\t\t0,\n\t\t102\n\t],\n\t\"./ViewDocuments/ViewDetailsCM.js\": [\n\t\t263,\n\t\t9,\n\t\t0,\n\t\t102\n\t],\n\t\"./ViewDocuments/ViewDetailsFW\": [\n\t\t264,\n\t\t9,\n\t\t103\n\t],\n\t\"./ViewDocuments/ViewDetailsFW.js\": [\n\t\t264,\n\t\t9,\n\t\t103\n\t],\n\t\"./ViewDocuments/ViewDetailsOE\": [\n\t\t265,\n\t\t9,\n\t\t104\n\t],\n\t\"./ViewDocuments/ViewDetailsOE.js\": [\n\t\t265,\n\t\t9,\n\t\t104\n\t],\n\t\"./ViewDocuments/ViewDocumentDetails\": [\n\t\t352,\n\t\t9,\n\t\t0,\n\t\t69\n\t],\n\t\"./ViewDocuments/ViewDocumentDetails.js\": [\n\t\t352,\n\t\t9,\n\t\t0,\n\t\t69\n\t],\n\t\"./ViewTransactions/ViewOrderCM\": [\n\t\t266,\n\t\t9,\n\t\t105\n\t],\n\t\"./ViewTransactions/ViewOrderCM.js\": [\n\t\t266,\n\t\t9,\n\t\t105\n\t],\n\t\"./ViewTransactions/ViewOrderContainer\": [\n\t\t353,\n\t\t9,\n\t\t0,\n\t\t10,\n\t\t108\n\t],\n\t\"./ViewTransactions/ViewOrderContainer.js\": [\n\t\t353,\n\t\t9,\n\t\t0,\n\t\t10,\n\t\t108\n\t],\n\t\"./ViewTransactions/ViewOrderDrillDown\": [\n\t\t269,\n\t\t9,\n\t\t0,\n\t\t120\n\t],\n\t\"./ViewTransactions/ViewOrderDrillDown.js\": [\n\t\t269,\n\t\t9,\n\t\t0,\n\t\t120\n\t],\n\t\"./ViewTransactions/ViewOrderItem\": [\n\t\t228,\n\t\t9,\n\t\t0,\n\t\t76\n\t],\n\t\"./ViewTransactions/ViewOrderItem.js\": [\n\t\t228,\n\t\t9,\n\t\t0,\n\t\t76\n\t],\n\t\"./ViewTransactions/ViewOrderList\": [\n\t\t315,\n\t\t9,\n\t\t0,\n\t\t10\n\t],\n\t\"./ViewTransactions/ViewOrderList.js\": [\n\t\t315,\n\t\t9,\n\t\t0,\n\t\t10\n\t],\n\t\"./ViewTransactions/ViewOrderListByItem\": [\n\t\t267,\n\t\t9,\n\t\t121\n\t],\n\t\"./ViewTransactions/ViewOrderListByItem.js\": [\n\t\t267,\n\t\t9,\n\t\t121\n\t],\n\t\"./ViewTransactions/ViewOrderListByOrder\": [\n\t\t268,\n\t\t9,\n\t\t0,\n\t\t72\n\t],\n\t\"./ViewTransactions/ViewOrderListByOrder.js\": [\n\t\t268,\n\t\t9,\n\t\t0,\n\t\t72\n\t],\n\t\"./ViewTransactions/ViewTransactionContainer\": [\n\t\t354,\n\t\t9,\n\t\t77\n\t],\n\t\"./ViewTransactions/ViewTransactionContainer.js\": [\n\t\t354,\n\t\t9,\n\t\t77\n\t],\n\t\"./ViewTransactions/ViewTransactionList\": [\n\t\t270,\n\t\t9,\n\t\t106\n\t],\n\t\"./ViewTransactions/ViewTransactionList.js\": [\n\t\t270,\n\t\t9,\n\t\t106\n\t],\n\t\"./ViewTransactions/ViewTransactionListCM\": [\n\t\t271,\n\t\t9,\n\t\t107\n\t],\n\t\"./ViewTransactions/ViewTransactionListCM.js\": [\n\t\t271,\n\t\t9,\n\t\t107\n\t],\n\t\"./constants\": [\n\t\t176,\n\t\t9\n\t],\n\t\"./constants.js\": [\n\t\t176,\n\t\t9\n\t],\n\t\"./route\": [\n\t\t238,\n\t\t9\n\t],\n\t\"./route.js\": [\n\t\t238,\n\t\t9\n\t]\n};\nfunction webpackAsyncContext(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\treturn Promise.resolve().then(function() {\n\t\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\t\te.code = 'MODULE_NOT_FOUND';\n\t\t\tthrow e;\n\t\t});\n\t}\n\n\tvar ids = map[req], id = ids[0];\n\treturn Promise.all(ids.slice(2).map(__webpack_require__.e)).then(function() {\n\t\treturn __webpack_require__.t(id, ids[1])\n\t});\n}\nwebpackAsyncContext.keys = function webpackAsyncContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackAsyncContext.id = 419;\nmodule.exports = webpackAsyncContext;"],"sourceRoot":""}