{"version":3,"sources":["webpack:///webpack/bootstrap","webpack:///./src/store/globalStore.ts","webpack:///./src/components/swDateRangePicker.vue?ad6d","webpack:///./src/functions/getSession.ts","webpack:///./src/store/modules/articleStatusStore.ts","webpack:///./src/store/index.ts","webpack:///./src/plugins/vuetify.ts","webpack:///./src/functions/tools.ts","webpack:///./src/assets/sounds/failed.mp3","webpack:///./src/functions/articleStatusConfig.ts","webpack:///./src/functions/whitelabel.ts","webpack:///./src/assets/sounds/success.mp3","webpack:///./src/views/SignUp.vue?01b6","webpack:///./src/components/swCurrency.vue","webpack:///src/components/swCurrency.vue","webpack:///./src/components/swCurrency.vue?2d78","webpack:///./src/components/swCurrency.vue?99f5","webpack:///./src/views/SignUp.vue","webpack:///src/views/SignUp.vue","webpack:///./src/views/SignUp.vue?e6a1","webpack:///./src/views/SignUp.vue?3a19","webpack:///./src/components/swInfo.vue?ad62","webpack:///./src/assets/barcode-logo.png","webpack:///./src/functions/authentication.ts","webpack:///./src/functions/mainMenu.ts","webpack:///./src/functions/eventBus.ts","webpack:///./src/functions/products.ts","webpack:///./src/components/swSaveCancel.vue?6729","webpack:///./src/components/swAuth.vue","webpack:///src/components/swAuth.vue","webpack:///./src/components/swAuth.vue?4d59","webpack:///./src/components/swAuth.vue?c8fb","webpack:///./src/store/consts.ts","webpack:///./src/functions/language.ts","webpack:///./src/App.vue?a22e","webpack:///./src/views/Login.vue","webpack:///src/views/Login.vue","webpack:///./src/views/Login.vue?c385","webpack:///./src/views/Login.vue?bd0e","webpack:///./src/functions/users.ts","webpack:///./src/functions/routerNavigationGuards.ts","webpack:///./src/router/index.ts","webpack:///./src/views/Login.vue?79e8","webpack:///./src/App.vue","webpack:///./src/components/swNavigationItemText.vue","webpack:///src/components/swNavigationItemText.vue","webpack:///./src/components/swNavigationItemText.vue?9917","webpack:///./src/components/swNavigationItemText.vue?8d67","webpack:///./src/components/swSaveCancel.vue","webpack:///src/components/swSaveCancel.vue","webpack:///./src/components/swSaveCancel.vue?a458","webpack:///./src/components/swSaveCancel.vue?7be0","webpack:///./src/components/swInfo.vue","webpack:///src/components/swInfo.vue","webpack:///./src/components/swInfo.vue?5074","webpack:///./src/components/swInfo.vue?7368","webpack:///./src/components/swShoppingBagDrawer.vue","webpack:///src/components/swShoppingBagDrawer.vue","webpack:///./src/components/swShoppingBagDrawer.vue?8398","webpack:///./src/components/swShoppingBagDrawer.vue?29a9","webpack:///src/App.vue","webpack:///./src/App.vue?d087","webpack:///./src/App.vue?f102","webpack:///./src/registerServiceWorker.ts","webpack:///./src/components/swWhitelabel.vue","webpack:///src/components/swWhitelabel.vue","webpack:///./src/components/swWhitelabel.vue?b1e9","webpack:///./src/components/swWhitelabel.vue?3746","webpack:///./src/directives/longpress.ts","webpack:///./src/main.ts","webpack:///./src/store/client.ts","webpack:///./src/functions/dialogService.ts","webpack:///./src/functions/soundFunctions.ts","webpack:///./src/functions/webServicesFacade.ts","webpack:///./src/functions/largeQtyVisualization.ts","webpack:///./src/functions/dashboardData.ts","webpack:///./src/functions/i18n.ts","webpack:///./src/components/swDateRangePicker.vue","webpack:///src/components/swDateRangePicker.vue","webpack:///./src/components/swDateRangePicker.vue?c213","webpack:///./src/components/swDateRangePicker.vue?008e","webpack:///./src/functions/preferences.ts"],"names":["webpackJsonpCallback","data","moduleId","chunkId","chunkIds","moreModules","executeModules","i","resolves","length","Object","prototype","hasOwnProperty","call","installedChunks","push","modules","parentJsonpFunction","shift","deferredModules","apply","checkDeferredModules","result","deferredModule","fulfilled","j","depId","splice","__webpack_require__","s","installedModules","installedCssChunks","jsonpScriptSrc","p","exports","module","l","e","promises","cssChunks","Promise","resolve","reject","href","fullhref","existingLinkTags","document","getElementsByTagName","tag","dataHref","getAttribute","rel","existingStyleTags","linkTag","createElement","type","onload","onerror","event","request","target","src","err","Error","code","parentNode","removeChild","head","appendChild","then","installedChunkData","promise","onScriptComplete","script","charset","timeout","nc","setAttribute","error","clearTimeout","chunk","errorType","realSrc","message","name","undefined","setTimeout","all","m","c","d","getter","o","defineProperty","enumerable","get","r","Symbol","toStringTag","value","t","mode","__esModule","ns","create","key","bind","n","object","property","oe","console","jsonpArray","window","oldJsonpFunction","slice","globalStore","brandSkus","b2bSkus","b2bInventory","brandProducts","indexedBrandProducts","indexedProducts","latestCollectionAPI","metadata","transactionsCache","COUNTRIES","text","getLatestCollectionAPI","collection","getLatestCollectionArray","_b","_a","checkPoint","values","setIndexedProducts","products","getIndexedProducts","setIndexedBrandProducts","getIndexedBrandProducts","getMetadata","setMetadata","getLatestCollectionObject","setLatestCollectionAPI","api","resetLatestCollectionAPI","getBrandSkus","getB2bSkus","getB2bInventory","setBrandSkus","getBrandProducts","setBrandProducts","getTransactionsCache","clearTransactionsCache","keys","forEach","shard","getItems","items","store","Array","isArray","state","attributes","productGroups","tenantBrands","brands","map","b","filter","isSupplier","campaign","campaignName","id","deepCopy","collections","reverse","skuCollections","colors","getters","dashBoardSourceData","card","layout","group","active","activeConfig","salesChannels","mySalesChannels","sizes","warehouse","gln","picqerWarehouses","mPlusKassaUsers","DATA_PROVIDERS","split","tools","getUniqueValues","sort","globalThis","getSession","user","setSession","newSession","brandFilter","brandFilterEquals","collectionFilter","collectionFilterEquals","dateName","filterDateRange","hideFullGrouper","itemsPerPage","productGroupFilter","productGroupFilterEquals","selectedFields","selectedGroups","selectedKPIs","warehouseFilter","warehouseFilterEquals","withSubtotals","showSubtotals","defaultQuery","groups","fields","period","reportViz","actions","mutations","namespaced","ensureImpliedProperties","productFunctions","Vue","use","Vuex","storePropertyMappingFnsInState","allMappings","getPreferedPropertyMappings","propertyMappingFn","buildPropertyMappingFn","mappingStrategyE","MAP","propertyCleaningFn","CLEAN","cardAuthorized","tenant","userRoles","tenantIDIncluded","tenantID","includes","roleIncluded","role","some","userFunctions","hasRole","Store","articleStatus","dialogDisplayed","loading","activeFormValid","localDocumentIndex","alerts","header","authenticated","drawer","b2bDrawer","b2bBasket","b2bBasketCount","b2bBasketValue","b2bBasketUpdateTrigger","b2bSelectedWarehouses","showBeta","prefix","location","hostname","startsWith","editing","hideMainFilter","rowsInfo","filtered","total","inventory","loadingStatus","importBusy","exportBusy","locale","paginationCurrentPage","paginationTotalPages","foldReportsUI","reportsFilterFullUI","beforeAuthLanguage","selectedProduct","articleStatusTableViz","mainFilterPrompt","matrixClipboard","productIsSelected","networkError","rawFilter","productPickerActive","barcodeScannerMode","productPicker","productPickerItems","appFilterByList","appFilterBySelectedKey","scannedBarcode","skuLoading","skuPromise","reportGroups","articleStatusConfig","groupChoices","reportColumns","fieldChoices","poFilterDate","info","showInfoDrawer","roles","deviceId","wh","current_tenant","username","settings","uploadDirectory","b2bAccessList","vatHi","vatLo","totalNrBarcodes","totalNrConsumers","lastPulled","brandOwnerOf","SET_TOTAL_NR_BARCODES","nr","COMPUTE_UNIQUE_SKU_PROPERTIES","skus","buildProductIndexedObject","getAttributes","colorFamily","mainColorDescription","size","articleGroup","allCollections","concat","year","parseInt","Date","getFullYear","combineBrands","brand","SET_NETWORK_ERROR","log","SET_AUTHENTICATION","SET_LOADING_STATUS","status","SET_BRANDS","SET_METADATA","SET_USER","language","SET_EDITING","CLEAR_FILTER","RAISE_ALERT","alert","sound","soundFunctions","playFailed","vuetify","framework","goTo","allMonthsOfTheYear","months","monthName","Intl","DateTimeFormat","month","format","monthNumber","prioritizedInfo","filteredInfo","priority","translatedReportColumns","column","showForB2bChannels","assign","swT","reportColumnsAbbreviated","translatedReportGroupColumns","attribute","activeAttributes","fieldType","showWhenPreference","reports","years","now","thisYear","brandAccess","selectedBrandName","tenantId","hasAccess","partnerchannels","latestcollection","selectedBrandData","find","ownerTenantId","associates","isAssociate","associate","isDemo","isDeviceUser","brandCollection","hashBrand","aliases","mapSubSizes","sizeOrdering","authorizedPagesList","authorizedPages","sourceData","computeUniqueSkuProperties","commit","payload","setLoadingStatus","setAuthentication","setUser","setEditing","clearFilter","raiseAlert","ensureConfigDocs","dispatch","system","consts","allConfig","ensureTenantCollection","startupDB","url","refreshDB","pull","updateObjects","objects2Patch","objects2Create","obj","auditHeaders","silent","this","body","response","patch","updateSkuObjects","barcodesToSave","success","audit","prepareSkusForUI","sku","usedByTenant","deleteObjects","delete","updatePreference","keyLevels","block","config","level","preferences","saveTenantPreferences","saveUserPreferences","loadBrand","dataProvider","apiInfo","newBrandData","newSkuData","brandAPI","brandName","_c","selectedBrandSkus","BRANDHASH","brandInventory","webServices","getBrandInventory","warehouseId","qty","getBarcode","res","getSku","barcode","callback","loadSettings","userPreference","loadPreferences","tenantPreference","loadDB","tenantResources","tenantResource","metaResources","metaResource","resource","alias","metabrandsetting","hideBrand","procesSkus","resolveSkuPromise","skuDataPromise","updateInfoData","owner","title","drawerContent","tooltipContent","component","remove","clearAll","infoOwners","index","indexOf","Vuetify","LIGHT_THEMES","primary","secondary","accent","warning","qliqpoint","DARK_THEMES","theme","getTheme","themes","light","dark","lang","locales","nl","de","en","current","scope","toString","len","prop","padLeft","num","places","char","String","padStart","getProperty","propertyName","parts","a","pickByKey","arr","reduce","acc","record","copyToClipboard","el","range","sel","createRange","getSelection","removeAllRanges","selectNodeContents","addRange","selectNode","createTextRange","moveToElementText","select","execCommand","apiHeaders","headers","conentType","cookies","parseParams","substring","element","debounce","fn","delay","timeoutID","args","detectBrowser","userAgent","navigator","toLowerCase","match","maxTouchPoints","sleep","sortObjectArrayByStringProperty","direction","sa","sb","sortObjectArrayByBooleanProperty","ba","bb","sortObjectArrayByNumberProperty","na","nb","useCorrectSort","skuOneColumnSorting","params","previousField","activeSort","rows","field","imageUrlParse","imageUrl","imageWidth","rootUrl","protocol","onCookieChange","cookieName","lastSid","setInterval","sid","getWeek","date","dayNr","getDay","setDate","getDate","firstThursday","valueOf","setMonth","Math","ceil","getWeekYear","generateTimeframes","startDate","endDate","timeGranularity","currentDate","frameStart","frameEnd","TimeGranularityE","DAY","WEEK","MONTH","getMonth","QUARTER","floor","YEAR","setFullYear","saveStringAsFile","filename","mimeType","blob","Blob","link","download","URL","createObjectURL","dataset","downloadurl","join","evt","MouseEvent","view","bubbles","cancelable","dispatchEvent","checkSkuPrices","buyPrice","price","splitArrayIntoBatches","batchSize","from","_","compareStringsWithDiacritic","mainText","queryText","removeDiacritics","str","normalize","replace","normalizedMainText","normalizedQueryText","domain","multiFilterFiltrex","filtersLoading","selectorButtons","stockInsightTableKey","toggleSelectors","toggleQuarters","toggleMonths","multiFilterConfig","toggleYears","toggleRelativePeriods","anyDate","consistencyChecked","advancedUI","hideZeroes","matrixVizibilityToggles","showImage","showNegativeValues","showPositiveValues","calculatingIndicator","controlPanels","dates","fullUI","foldUI","manualFilter","tab","modalFromDatePicker","modalToDatePicker","noTableFormatting","rawAggregations","rawAggregationBuffer","selectedRelativePeriod","relativePeriods","shardProcessing","shardsToProcess","nrCalculationJobs","calculationJob","tableSortBy","tableSortDesc","today","maxRows","QTY_SHELF_STOCK","QTY_RECIEVED","QTY_SOLD","QTY_CONSIGNMENT","QTY_CHANGE","QTY_TRANSIT","QTY_END_SHELF_STOCK","allCommands","command","selectFields","color","icon","endpoint","fieldsToPickFrom","QTY_END_STOCK","QTY_STOCK","AMOUNT_STOCK","AMOUNT_SHELF_STOCK","AMOUNT_REVALUATE","AMOUNT_RECIEVED","AMOUNT_SOLD_EXCL","COSTPRICE_SOLD","AMOUNT_CHANGE","AMOUNT_TRANSIT","QTY_PO","AMOUNT_PO","QTY_PO_COMPLETE","AMOUNT_PO_COMPLETE","QTY_MINIMUM_STOCK","AMOUNT_MINIMUM_STOCK","AMOUNT_CONSIGNMENT","COSTPRICE_CONSIGNMENT","MAX_RECIEVE_TIMESTAMP","AMOUNT_END_STOCK","AMOUNT_END_SHELF_STOCK","SELLOUT_PERCENTAGE","ROI","QTY_AVG_STOCK","disabled","VALUE_AVG_STOCK","QTY_TURNOVER_VELOCITY","AMOUNT_TURNOVER_VELOCITY","PROFITABILITY","MARGIN","PROFIT","QTY_RETURN","AMOUNT_RETURN","RETURN_PERCENTAGE","AMOUNT_SOLD_DISCOUNT","QTY_SOLD_BEFORE_RETURNS","QTY_ORDER","AMOUNT_ORDER","COSTPRICE_ORDER","QTY_REORDER","AMOUNT_REORDER","COSTPRICE_REORDER","QTY_PICKLIST","AMOUNT_PICKLIST","COSTPRICE_PICKLIST","QTY_B2B_SOLD","AMOUNT_B2B_SOLD","COSTPRICE_B2B_SOLD","QTY_B2B_RESOLD","AMOUNT_B2B_RESOLD","COSTPRICE_B2B_RESOLD","QTY_B2B_RETURN","AMOUNT_B2B_RETURN","COSTPRICE_B2B_RETURN","isQliqpoint","isFashionUnited","isMplusKassa","siteLogo","siteWatermark","siteAnimation","teamViewerLink","orderMethodForDomain","render","_vm","_self","largeQty","class","align","_v","_s","amount","largeQtyVisualize","toFixed","staticRenderFns","props","computed","alignleft","methods","require","attrs","staticStyle","on","staticClass","ref","$event","valid","expression","signUpRequest","model","companyName","emailRules","idx","$router","animationUrl","companyNameRules","v","email","test","$store","languages","UISettings","errors","singleErrorMessage","whitelabelFunctions","formWidth","$vuetify","breakpoint","smAndDown","setLanguage","languageCode","$refs","form","validate","authentication","signUp","details","authenticate","password","urlFriendlyPassword","encodeURIComponent","urlFriendlyUsername","loginRequest","axios","webServicesPath","validateOTP","mfaToken","otp","post","validateStatus","requestResetPassword","resetPasswordRequest","resetPassword","confirmPassword","readableUsername","changeUsername","userId","userName","changeUsernameRequest","changeEmail","currentPwd","newEmail","changeEmailRequest","set2fa","onOff","set2faRequest","TwoFactorAuthEnabled","verifyEmail","verifyEmailRequest","pages","shortcut","beta","children","domains","defaultURLs","STOCK_LINK","ARTICLE_STATUS_LINK","TOPX_LINK","STOCK_INSIGHT_LINK","SALES_PER_CUSTOMER_LINK","whitelabel","showInContextFunction","forbidden","unreadCount","swRoutes","routes","authRoutes","route","pageAndRouteMatchIndex","findIndex","page","path","childPageAndRouteMatchIndeces","childIndex","routeOnly","currentDomain","newE","emitter","mitt","eventBus","$on","$off","off","$emit","emit","isBrandEqual","hashedBrand","isSkuOfBrand","getBrandSettings","brandOrHash","indexKey","subColor","attributeNames","k","attributeName","attributesArray","sortedAttributes","buildSizeIndex","sizeOrderingData","mainSize","rawSize","sizeToMap","mappedIndex","sizeIndex","order","sizeFound","subSize","isNaN","latestCollectionBrandSkusNotInTenant","latestCollectionBrandSkus","allSkusObject","lcSkus","latestCollectionSku","articleCodeSupplier","articleCode","source","mainColorCode","skuActive","colorSupplier","sortSkusByCollection","collectionOrder","sortExpression","images","subColorCode","articleGrouperExpression","uniqueBrandProducts","currentArticleGrouperValue","currentProduct","articleGrouperValue","SKUS","SOURCE","IMAGES","typedBrandProducts","newColor","subColors","colorCodeSupplier","processProduct","product","grouper","hashtable","DUPLICATES","fromEntries","entries","getProductDetails","grouperName","grouperList","ATTRIBUTES","pricetagLayouts","SIZES","COLORS","colorObject","hasSubSizes","colorKey","image","SUBCOLORsizeSupplier_COMBIS","INDEX","newSku","articleDescription","vat","vatCategory","vatCategoryE","HIGH","suggestedRetailPrice","salePrice","warehouseLocation","subColorDescription","isDataOnly","allBrands","brandHash","lcBrand","brandSetting","propertyMapping","discount","calculation","orderMethod","lastSync","lastAutomatedSync","orderMethodConfiguration","footprint","freeShippingThreshold","useConsignmentInventory","markRaw","allSkus","parseFloat","setBrandContext","cachedBrand","newData","createCell","sum","item","createRow","inputBarcodes","row","cells","grouperKey","duplicatesArr","initialItems","turnTargetSkusIntoProducts","mergedSkus","skusGroupedByGrouperList","inputBarcode","iSku","identifyUniqueGroupsInProductSkus","productSkus","uniqueGroups","buildMatrixProduct","matrixMetadata","matrix","grouperHeader","cell","MATRIX","buildMatrices","indexedSkus","hideInactiveSkus","setAllMatrixQuantities","quantity","multiplyAllMatrixQuantities","multiplier","articleGroupSupplier","collectionSupplier","colorCode","sizeSupplier","colorDescription","calculateMargin","tenantBrandsObject","brandsObject","hashCache","addBRANDHASH","brandSettings","addFOOTPRINT","articlestatus_footprint","tenantBrand","FOOTPRINT","authorizedFor","_t","_e","directives","rawName","webServicesPaths","development","production","process","localDateFormat","version","dashboardColor","erpServices","latestCollection","brandLogosUrl","softwear","fotoManagerUrl","imageRoot","stockRoot","feedId","groupsIcons","favorites","favoriteBrands","default","hidePreferenceInUI","dashboardOrder","skuEditorColumns","defaultwarehouse","fashioncloud","fashionunited","linolux","triumph_it","euretco","barcodebot","mpluskassa","mpluskassaIdent","mpluskassaSecret","mpluskassaUser","focusHook","sendCloudIntegration","sendCloudPrivateKey","sendCloudPublicKey","zalandointegration","zalandospynltoken","zalandospynlcustomer","defaultzalandowarehouse","zalandodevice","zalandocashier","webshopfulfillment","webshopwarehouse","fulfillmentStrategy","transitfrom","orderfrombrands","dropshipmentEmailAddress","labelPrinting","labelPrintingStrategy","pricetagLayoutDefaults","printQueues","articlestatus","articlestatus_extended","articlestatus_fifo","stock","biGranularity","high","low","brandOwnerView","applyLatestCollectionMapping","applyTenantMapping","applyDataProviderMapping","defaultcollection","autoCreateSkuForUnknownBarcode","sizeranges","audioFeedback","synchronizeWith","magento","magentoUrl","magentoToken","picqerIntegration","picqerApiToken","picqerApiDomain","picqerLatestCollectionWarehouse","picqerWarehouse","uiSettingsExist","checkLanguage","savedLanguage","scopedSlots","showPasswordResetUsernameInput","nativeOn","showPasswordCharacters","oneTimePassword","arguments","$$v","returnToLogin","checkbox","usernameRules","passwordRules","resetPasswordRules","required","minimal_length","passwordMatch","newPassword","showPasswordResetPasswordInputs","logoUrl","mounted","_this$$route$query","_this$$route$query2","_this$$route$query3","_this$$route$query4","$route","query","popup","languageExists","reset","switchToken","$nextTick","oneTimePasswordField","focus","usernameField","token","set","expires","redirect","rootProp","toLocaleDateString","oneRole","hasDataProviderSubscription","tokenAuthentication","search","userResponse","getMe","onboardFlow","_d","authorizedPaths","paths","pathsList","childrenPaths","childPage","canNavigate","to","authorizedPathsList","requestedPath","decodeURIComponent","fullPath","authorized","requestedPathFirstPart","stringsShouldNotExist","alwaysAllowed","next","VueRouter","router","base","scrollBehavior","hash","selector","beforeEach","routerNavigationGuards","$set","proxy","showSwitchedToBarcodeModeToolTip","tree","percentageBarcodesUsed","percentageConsumersUsed","$alertIndex","headerTranslationPluralization","displayPagination","save","cancel","shake","watch","handler","immediate","deep","infoClick","imageSrc","imageFromB2bBarcode","getB2bSkuByBarcode","components","getWarehouseById","warehouses","_this$$store$state$ac","partnerChannels","fashionUnited","tenantGln","skusPerBrand","lines","createSku","createPricat","qtyPerBrandPerWarehouse","purchaseOrderIdList","mPlusKassaSupplierPerBrand","mPlusSupplierList","getMPlusKassaData","categoryId","relationNumber","orders","_mPlusKassaSupplierPe","createPurchaseOrder","getTime","supplier","showDialog","multiple","sendPurchaseOrders","deleteProductFromBasket","productCode","$forceUpdate","selectProduct","extend","swNavigationItemText","swSaveCancel","Login","SignUp","swInfo","swDateRangePicker","swShoppingBagDrawer","showRoles","open","maxBarcodes","_getSession$tenant","maxConsumers","_getSession$tenant2","menuItems","menuItem","hazard","productPickerMode","appFilterMode","agg0","agg1","agg2","entry","_this$$store$state$se","newValue","oldValue","nrSkus","min","nrConsumers","maxNrConsumers","$watch","nextTick","barcodeScanner","activated","addEventListener","debounceFn","newVal","trim","onbeforeunload","onExit","keyCommand","beforeUpdate","countUnread","documents","read","keymap","f1","goToKeyboardShorcuts","goToProducts","goToProductsAsDev","goToPreferences","goToCustomers","goToStockReport","goToArticleStatusReport","goToTopXReport","goToPOS","goToDashboard","goToDevTools","toggleDrawer","focusAppFilter","switchToProductMode","switchToBarcodeMode","switchToAppFiterMode","pasteBarcode","scanBarcode","dialogText","returnValue","srcElement","inputMode","preventDefault","showTooltip","register","ready","registered","cached","updatefound","updated","offline","binding","vNode","compName","context","warn","pressTimer","start","button","capitalizeFirstLetter","val","charAt","toUpperCase","VueHotkey","directive","longPress","productionTip","swAuth","swWhitelabel","swCurrency","vueApexCharts","VTextField","VCurrencyField","decimalLength","autoDecimalMode","max","defaultValue","valueAsInteger","allowNegative","h","App","$mount","history","faviconUrl","existingFavicons","querySelectorAll","newFavicon","newShortcutIcon","classList","add","applyCRUDoperation","operation","crudOperation","oldData","jsonPatch","newDocument","processOpLog","opLog","nextOpLogId","opLogId","pullOpLogRaw","lastOplogId","startupDBApi","options","pullOpLog","checkPointHeader","lastCheckPointTime","getObjects","patchObjects","NEVER_PATCH","patches","doc","op","put","ids","createObjects","getCachedChunk","chunkNr","cache","saveChunkToCache","getStringUntilChar","chr","getMaxChunkNr","nrExistingChunks","getCachedOplogSize","setCachedOplogSize","clearCacheForUrl","delMany","processOpLog25","oplog","reader","pipeThrough","TextDecoderStream","getReader","contentLength","lastOplogSize","buf","nrOperations","done","newLinePos","line","JSON","parse","fetchOptions","method","responseType","stringify","pullOplogRaw25","opLogSize","fetch","pullOplogRawFromCache","pullOplog25","oplogSize","patchObjects25","updateObjects25","deleteObjects25","createObjects25","readCheckpointFromStream","nextOplogId","immutable","update","checkPointResponse","savedAt","lastAccessed","lastModified","forwardLocation","host","dialogMap","swPromptDialog","importPath","emitEventValue","swInfoDialog","swInventoryChangeDialog","swPrintDialog","swValuePickDialog","swXLSImportDialog","swBrandPopup","swYesNoDialog","swYesNoCancelDialog","swChooseNewSkuMethod","swLayoutObjectEditorDialog","swSkuImportHistory","handleButtonPress","$destroy","$el","createDialogComponent","dialog","DialogComponent","DialogConstructor","dialogInstance","propsData","componentName","constructor","playSucceed","Audio","play","failed","retryRequest","retry","axiosRetry","retries","retryDelay","exponentialDelay","retryCondition","getStockSnapshot","json","baseURL","transformRequest","defaults","pako","gzip","dbaPWD","dbaGetAllCollections","dataTest","placeholder","dbaRunQuery","cacheBuster","uuidv4","dbaRunCommand","dbaPut","dbaDelete","latestCollectionGet","latestCollectionPost","latestCollectionPut","latestCollectionPatch","lookupOnly","getTenant","brandId","setTenant","MessageTypes","sendToOutbox","regenerateBI","getSchema","schema","postImage","file","fileName","formData","FormData","append","getActivePOS","getSpynlMetrics","getSpynlSales","group_by","getLATConnections","getM2FEvents","getNPData","getPicqerData","getTenantById","getAssociatesWithOwners","brandID","tenants","list","syncPOs","numDays","getTools","syncResource","impersonate","resetDbaPWD","forceDownload","urlCreator","webkitURL","click","getSkuImportHistory","getSkuImportHistoryFile","importSkuFileToArchive","sendToPrintQueue","queueName","getTokens","createToken","description","remark","revokeToken","tokenId","getImagesFromCdn","getFpSkus","sendReceivingToFp","sendProcessedInventoryChange","dateToday","dateYearAgo","dateWeekAgo","dateMonthAgo","todayYearAgo","todayWeekAgo","todayMonthAgo","objectData","updateFunc","threshold","groupBy","currency","totalTime","XaxisLabels","whiteLabelFunctions","SUPPORTED_LOCALES","nlLocale","deLocale","enLocale","DOMAIN_TRANSLATIONS","nl_qliqpoint","de_qliqpoint","en_qliqpoint","nl_mpluskassa","de_mpluskassa","en_mpluskassa","nl_fashionUnited","de_fashionUnited","en_fashionUnited","localHideDates","localLabels","localDisabled","dateMin","hideDates","labels","dateStart","dateEnd","minDate","subDays","dateMax","maxDate","$props","ignoreFirstEmit","updateDates","systemOK","userPreferenceOK","savePreferences","getPicqerWarehouses","idwarehouse","getMPlusKassaUsers","users","employeeNumber","onFocusHooks"],"mappings":"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","file":"js/app.81621a2e.js","sourcesContent":[" \t// install a JSONP callback for chunk loading\n \tfunction webpackJsonpCallback(data) {\n \t\tvar chunkIds = data[0];\n \t\tvar moreModules = data[1];\n \t\tvar executeModules = data[2];\n\n \t\t// add \"moreModules\" to the modules object,\n \t\t// then flag all \"chunkIds\" as loaded and fire callback\n \t\tvar moduleId, chunkId, i = 0, resolves = [];\n \t\tfor(;i < chunkIds.length; i++) {\n \t\t\tchunkId = chunkIds[i];\n \t\t\tif(Object.prototype.hasOwnProperty.call(installedChunks, chunkId) && installedChunks[chunkId]) {\n \t\t\t\tresolves.push(installedChunks[chunkId][0]);\n \t\t\t}\n \t\t\tinstalledChunks[chunkId] = 0;\n \t\t}\n \t\tfor(moduleId in moreModules) {\n \t\t\tif(Object.prototype.hasOwnProperty.call(moreModules, moduleId)) {\n \t\t\t\tmodules[moduleId] = moreModules[moduleId];\n \t\t\t}\n \t\t}\n \t\tif(parentJsonpFunction) parentJsonpFunction(data);\n\n \t\twhile(resolves.length) {\n \t\t\tresolves.shift()();\n \t\t}\n\n \t\t// add entry modules from loaded chunk to deferred list\n \t\tdeferredModules.push.apply(deferredModules, executeModules || []);\n\n \t\t// run deferred modules when all chunks ready\n \t\treturn checkDeferredModules();\n \t};\n \tfunction checkDeferredModules() {\n \t\tvar result;\n \t\tfor(var i = 0; i < deferredModules.length; i++) {\n \t\t\tvar deferredModule = deferredModules[i];\n \t\t\tvar fulfilled = true;\n \t\t\tfor(var j = 1; j < deferredModule.length; j++) {\n \t\t\t\tvar depId = deferredModule[j];\n \t\t\t\tif(installedChunks[depId] !== 0) fulfilled = false;\n \t\t\t}\n \t\t\tif(fulfilled) {\n \t\t\t\tdeferredModules.splice(i--, 1);\n \t\t\t\tresult = __webpack_require__(__webpack_require__.s = deferredModule[0]);\n \t\t\t}\n \t\t}\n\n \t\treturn result;\n \t}\n\n \t// The module cache\n \tvar installedModules = {};\n\n \t// object to store loaded CSS chunks\n \tvar installedCssChunks = {\n \t\t\"app\": 0\n \t}\n\n \t// object to store loaded and loading chunks\n \t// undefined = chunk not loaded, null = chunk preloaded/prefetched\n \t// Promise = chunk loading, 0 = chunk loaded\n \tvar installedChunks = {\n \t\t\"app\": 0\n \t};\n\n \tvar deferredModules = [];\n\n \t// script path function\n \tfunction jsonpScriptSrc(chunkId) {\n \t\treturn __webpack_require__.p + \"js/\" + ({}[chunkId]||chunkId) + \".\" + {\"chunk-0471b71a\":\"4dd3d8ed\",\"chunk-0f9b08b4\":\"e3b9e786\",\"chunk-1071b40d\":\"b83563e2\",\"chunk-1f137598\":\"71e12bfa\",\"chunk-2d0c229d\":\"361040f8\",\"chunk-2d0c8873\":\"b4265c50\",\"chunk-2d0e44e8\":\"f002a684\",\"chunk-2d2133a7\":\"526d8d5d\",\"chunk-2d215fa4\":\"0029f11d\",\"chunk-2d225025\":\"c977bdc0\",\"chunk-37b42f6e\":\"d430024c\",\"chunk-3ad491ca\":\"a75af1d4\",\"chunk-010460de\":\"808c0273\",\"chunk-2b0af422\":\"77bf416e\",\"chunk-3af00f3a\":\"078628da\",\"chunk-325e7661\":\"7d0d6bd0\",\"chunk-39f05470\":\"218546c8\",\"chunk-3d7962ec\":\"bc28cd8d\",\"chunk-3d9270a4\":\"3fda5ba7\",\"chunk-46a3390d\":\"c8a04736\",\"chunk-2d0d3a73\":\"79485b66\",\"chunk-233b7a2b\":\"61e28764\",\"chunk-46c6dcb9\":\"f8ec42b1\",\"chunk-5488e59a\":\"5a3f83b7\",\"chunk-63bdd1f0\":\"f787df85\",\"chunk-30b17294\":\"62e5e0b9\",\"chunk-699fe8bf\":\"9e2568d0\",\"chunk-0d01edce\":\"02405490\",\"chunk-61a64c12\":\"462c27b9\",\"chunk-227f2987\":\"bf600c54\",\"chunk-3dd2a0ca\":\"a4d8cafa\",\"chunk-7a626fa7\":\"39793363\",\"chunk-6c65e47e\":\"95573ea1\",\"chunk-7731f8c5\":\"0e5b14ab\",\"chunk-e9eb40b4\":\"d7c05f4f\",\"chunk-72753b0a\":\"4eab126e\",\"chunk-ac3db7f8\":\"22e4f013\",\"chunk-b4ca2cdc\":\"eab41c85\",\"chunk-2d0ac1df\":\"8582b87e\",\"chunk-2d0b726a\":\"d66bc902\",\"chunk-2d0b8e95\":\"98242ca4\",\"chunk-2d0bfef1\":\"0b43ece6\",\"chunk-2d0c267b\":\"b3ede74f\",\"chunk-2d0d76c4\":\"0556a716\",\"chunk-2d21d0b2\":\"1c7ae515\",\"chunk-2d22a16b\":\"f36d422c\",\"chunk-2d230088\":\"8223795b\",\"chunk-10fd0d0c\":\"5feb7a28\",\"chunk-4e6aabf6\":\"4a49b9a2\",\"chunk-2d0c7ca0\":\"0b72289b\",\"chunk-416af209\":\"2eaaa3bd\",\"chunk-d713dd68\":\"8c1f389b\",\"chunk-6394b506\":\"c8ea187b\",\"chunk-06aed3f2\":\"fa507acf\",\"chunk-761b52e1\":\"827cf4ab\",\"chunk-a24b2064\":\"6d8a52d8\",\"chunk-ab948ea2\":\"765bfdfd\",\"chunk-abf87f86\":\"b471b80f\",\"chunk-ec698d3c\":\"bd160da0\",\"chunk-bff1b22c\":\"d915fe3f\",\"chunk-d6d0cde4\":\"0f94ba10\",\"chunk-de101fda\":\"22df2bd5\",\"chunk-edc11ee8\":\"b8fcbdb2\",\"chunk-fafcceea\":\"a5f90e11\",\"chunk-2d216214\":\"3368af5d\",\"chunk-2d216257\":\"69e90091\",\"chunk-40cd4414\":\"5e1206c1\"}[chunkId] + \".js\"\n \t}\n\n \t// The require function\n \tfunction __webpack_require__(moduleId) {\n\n \t\t// Check if module is in cache\n \t\tif(installedModules[moduleId]) {\n \t\t\treturn installedModules[moduleId].exports;\n \t\t}\n \t\t// Create a new module (and put it into the cache)\n \t\tvar module = installedModules[moduleId] = {\n \t\t\ti: moduleId,\n \t\t\tl: false,\n \t\t\texports: {}\n \t\t};\n\n \t\t// Execute the module function\n \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n \t\t// Flag the module as loaded\n \t\tmodule.l = true;\n\n \t\t// Return the exports of the module\n \t\treturn module.exports;\n \t}\n\n \t// This file contains only the entry chunk.\n \t// The chunk loading function for additional chunks\n \t__webpack_require__.e = function requireEnsure(chunkId) {\n \t\tvar promises = [];\n\n\n \t\t// mini-css-extract-plugin CSS loading\n \t\tvar cssChunks = {\"chunk-0471b71a\":1,\"chunk-0f9b08b4\":1,\"chunk-1071b40d\":1,\"chunk-1f137598\":1,\"chunk-37b42f6e\":1,\"chunk-010460de\":1,\"chunk-2b0af422\":1,\"chunk-3af00f3a\":1,\"chunk-325e7661\":1,\"chunk-39f05470\":1,\"chunk-3d7962ec\":1,\"chunk-3d9270a4\":1,\"chunk-233b7a2b\":1,\"chunk-46c6dcb9\":1,\"chunk-5488e59a\":1,\"chunk-63bdd1f0\":1,\"chunk-30b17294\":1,\"chunk-699fe8bf\":1,\"chunk-0d01edce\":1,\"chunk-61a64c12\":1,\"chunk-227f2987\":1,\"chunk-7a626fa7\":1,\"chunk-6c65e47e\":1,\"chunk-7731f8c5\":1,\"chunk-e9eb40b4\":1,\"chunk-72753b0a\":1,\"chunk-ac3db7f8\":1,\"chunk-b4ca2cdc\":1,\"chunk-10fd0d0c\":1,\"chunk-4e6aabf6\":1,\"chunk-416af209\":1,\"chunk-d713dd68\":1,\"chunk-6394b506\":1,\"chunk-06aed3f2\":1,\"chunk-761b52e1\":1,\"chunk-a24b2064\":1,\"chunk-ab948ea2\":1,\"chunk-ec698d3c\":1,\"chunk-bff1b22c\":1,\"chunk-d6d0cde4\":1,\"chunk-de101fda\":1,\"chunk-edc11ee8\":1};\n \t\tif(installedCssChunks[chunkId]) promises.push(installedCssChunks[chunkId]);\n \t\telse if(installedCssChunks[chunkId] !== 0 && cssChunks[chunkId]) {\n \t\t\tpromises.push(installedCssChunks[chunkId] = new Promise(function(resolve, reject) {\n \t\t\t\tvar href = \"css/\" + ({}[chunkId]||chunkId) + \".\" + {\"chunk-0471b71a\":\"7d887a01\",\"chunk-0f9b08b4\":\"98ce9b1d\",\"chunk-1071b40d\":\"dba2f936\",\"chunk-1f137598\":\"726b3234\",\"chunk-2d0c229d\":\"31d6cfe0\",\"chunk-2d0c8873\":\"31d6cfe0\",\"chunk-2d0e44e8\":\"31d6cfe0\",\"chunk-2d2133a7\":\"31d6cfe0\",\"chunk-2d215fa4\":\"31d6cfe0\",\"chunk-2d225025\":\"31d6cfe0\",\"chunk-37b42f6e\":\"fedd3d63\",\"chunk-3ad491ca\":\"31d6cfe0\",\"chunk-010460de\":\"9458db89\",\"chunk-2b0af422\":\"7d887a01\",\"chunk-3af00f3a\":\"7d887a01\",\"chunk-325e7661\":\"1f6f071e\",\"chunk-39f05470\":\"bed9d15f\",\"chunk-3d7962ec\":\"7d887a01\",\"chunk-3d9270a4\":\"316519d5\",\"chunk-46a3390d\":\"31d6cfe0\",\"chunk-2d0d3a73\":\"31d6cfe0\",\"chunk-233b7a2b\":\"84e71db8\",\"chunk-46c6dcb9\":\"ba7de4a1\",\"chunk-5488e59a\":\"ea8d29a3\",\"chunk-63bdd1f0\":\"107d3528\",\"chunk-30b17294\":\"40188a55\",\"chunk-699fe8bf\":\"54accc9a\",\"chunk-0d01edce\":\"631786e9\",\"chunk-61a64c12\":\"78b7893c\",\"chunk-227f2987\":\"939a57e9\",\"chunk-3dd2a0ca\":\"31d6cfe0\",\"chunk-7a626fa7\":\"1383535b\",\"chunk-6c65e47e\":\"d198159d\",\"chunk-7731f8c5\":\"d198159d\",\"chunk-e9eb40b4\":\"87a92fe5\",\"chunk-72753b0a\":\"da222081\",\"chunk-ac3db7f8\":\"7d887a01\",\"chunk-b4ca2cdc\":\"5187dc42\",\"chunk-2d0ac1df\":\"31d6cfe0\",\"chunk-2d0b726a\":\"31d6cfe0\",\"chunk-2d0b8e95\":\"31d6cfe0\",\"chunk-2d0bfef1\":\"31d6cfe0\",\"chunk-2d0c267b\":\"31d6cfe0\",\"chunk-2d0d76c4\":\"31d6cfe0\",\"chunk-2d21d0b2\":\"31d6cfe0\",\"chunk-2d22a16b\":\"31d6cfe0\",\"chunk-2d230088\":\"31d6cfe0\",\"chunk-10fd0d0c\":\"84cf6be1\",\"chunk-4e6aabf6\":\"2bf4fc8d\",\"chunk-2d0c7ca0\":\"31d6cfe0\",\"chunk-416af209\":\"c3439a56\",\"chunk-d713dd68\":\"df96a54d\",\"chunk-6394b506\":\"df96a54d\",\"chunk-06aed3f2\":\"aeacc1ad\",\"chunk-761b52e1\":\"fedd3d63\",\"chunk-a24b2064\":\"88750ac1\",\"chunk-ab948ea2\":\"92ab97f4\",\"chunk-abf87f86\":\"31d6cfe0\",\"chunk-ec698d3c\":\"17b50fa8\",\"chunk-bff1b22c\":\"7d887a01\",\"chunk-d6d0cde4\":\"7d887a01\",\"chunk-de101fda\":\"4cab0180\",\"chunk-edc11ee8\":\"f963d674\",\"chunk-fafcceea\":\"31d6cfe0\",\"chunk-2d216214\":\"31d6cfe0\",\"chunk-2d216257\":\"31d6cfe0\",\"chunk-40cd4414\":\"31d6cfe0\"}[chunkId] + \".css\";\n \t\t\t\tvar fullhref = __webpack_require__.p + href;\n \t\t\t\tvar existingLinkTags = document.getElementsByTagName(\"link\");\n \t\t\t\tfor(var i = 0; i < existingLinkTags.length; i++) {\n \t\t\t\t\tvar tag = existingLinkTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\") || tag.getAttribute(\"href\");\n \t\t\t\t\tif(tag.rel === \"stylesheet\" && (dataHref === href || dataHref === fullhref)) return resolve();\n \t\t\t\t}\n \t\t\t\tvar existingStyleTags = document.getElementsByTagName(\"style\");\n \t\t\t\tfor(var i = 0; i < existingStyleTags.length; i++) {\n \t\t\t\t\tvar tag = existingStyleTags[i];\n \t\t\t\t\tvar dataHref = tag.getAttribute(\"data-href\");\n \t\t\t\t\tif(dataHref === href || dataHref === fullhref) return resolve();\n \t\t\t\t}\n \t\t\t\tvar linkTag = document.createElement(\"link\");\n \t\t\t\tlinkTag.rel = \"stylesheet\";\n \t\t\t\tlinkTag.type = \"text/css\";\n \t\t\t\tlinkTag.onload = resolve;\n \t\t\t\tlinkTag.onerror = function(event) {\n \t\t\t\t\tvar request = event && event.target && event.target.src || fullhref;\n \t\t\t\t\tvar err = new Error(\"Loading CSS chunk \" + chunkId + \" failed.\\n(\" + request + \")\");\n \t\t\t\t\terr.code = \"CSS_CHUNK_LOAD_FAILED\";\n \t\t\t\t\terr.request = request;\n \t\t\t\t\tdelete installedCssChunks[chunkId]\n \t\t\t\t\tlinkTag.parentNode.removeChild(linkTag)\n \t\t\t\t\treject(err);\n \t\t\t\t};\n \t\t\t\tlinkTag.href = fullhref;\n\n \t\t\t\tvar head = document.getElementsByTagName(\"head\")[0];\n \t\t\t\thead.appendChild(linkTag);\n \t\t\t}).then(function() {\n \t\t\t\tinstalledCssChunks[chunkId] = 0;\n \t\t\t}));\n \t\t}\n\n \t\t// JSONP chunk loading for javascript\n\n \t\tvar installedChunkData = installedChunks[chunkId];\n \t\tif(installedChunkData !== 0) { // 0 means \"already installed\".\n\n \t\t\t// a Promise means \"currently loading\".\n \t\t\tif(installedChunkData) {\n \t\t\t\tpromises.push(installedChunkData[2]);\n \t\t\t} else {\n \t\t\t\t// setup Promise in chunk cache\n \t\t\t\tvar promise = new Promise(function(resolve, reject) {\n \t\t\t\t\tinstalledChunkData = installedChunks[chunkId] = [resolve, reject];\n \t\t\t\t});\n \t\t\t\tpromises.push(installedChunkData[2] = promise);\n\n \t\t\t\t// start chunk loading\n \t\t\t\tvar script = document.createElement('script');\n \t\t\t\tvar onScriptComplete;\n\n \t\t\t\tscript.charset = 'utf-8';\n \t\t\t\tscript.timeout = 120;\n \t\t\t\tif (__webpack_require__.nc) {\n \t\t\t\t\tscript.setAttribute(\"nonce\", __webpack_require__.nc);\n \t\t\t\t}\n \t\t\t\tscript.src = jsonpScriptSrc(chunkId);\n\n \t\t\t\t// create error before stack unwound to get useful stacktrace later\n \t\t\t\tvar error = new Error();\n \t\t\t\tonScriptComplete = function (event) {\n \t\t\t\t\t// avoid mem leaks in IE.\n \t\t\t\t\tscript.onerror = script.onload = null;\n \t\t\t\t\tclearTimeout(timeout);\n \t\t\t\t\tvar chunk = installedChunks[chunkId];\n \t\t\t\t\tif(chunk !== 0) {\n \t\t\t\t\t\tif(chunk) {\n \t\t\t\t\t\t\tvar errorType = event && (event.type === 'load' ? 'missing' : event.type);\n \t\t\t\t\t\t\tvar realSrc = event && event.target && event.target.src;\n \t\t\t\t\t\t\terror.message = 'Loading chunk ' + chunkId + ' failed.\\n(' + errorType + ': ' + realSrc + ')';\n \t\t\t\t\t\t\terror.name = 'ChunkLoadError';\n \t\t\t\t\t\t\terror.type = errorType;\n \t\t\t\t\t\t\terror.request = realSrc;\n \t\t\t\t\t\t\tchunk[1](error);\n \t\t\t\t\t\t}\n \t\t\t\t\t\tinstalledChunks[chunkId] = undefined;\n \t\t\t\t\t}\n \t\t\t\t};\n \t\t\t\tvar timeout = setTimeout(function(){\n \t\t\t\t\tonScriptComplete({ type: 'timeout', target: script });\n \t\t\t\t}, 120000);\n \t\t\t\tscript.onerror = script.onload = onScriptComplete;\n \t\t\t\tdocument.head.appendChild(script);\n \t\t\t}\n \t\t}\n \t\treturn Promise.all(promises);\n \t};\n\n \t// expose the modules object (__webpack_modules__)\n \t__webpack_require__.m = modules;\n\n \t// expose the module cache\n \t__webpack_require__.c = installedModules;\n\n \t// define getter function for harmony exports\n \t__webpack_require__.d = function(exports, name, getter) {\n \t\tif(!__webpack_require__.o(exports, name)) {\n \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n \t\t}\n \t};\n\n \t// define __esModule on exports\n \t__webpack_require__.r = function(exports) {\n \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n \t\t}\n \t\tObject.defineProperty(exports, '__esModule', { value: true });\n \t};\n\n \t// create a fake namespace object\n \t// mode & 1: value is a module id, require it\n \t// mode & 2: merge all properties of value into the ns\n \t// mode & 4: return value when already ns object\n \t// mode & 8|1: behave like require\n \t__webpack_require__.t = function(value, mode) {\n \t\tif(mode & 1) value = __webpack_require__(value);\n \t\tif(mode & 8) return value;\n \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n \t\tvar ns = Object.create(null);\n \t\t__webpack_require__.r(ns);\n \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n \t\treturn ns;\n \t};\n\n \t// getDefaultExport function for compatibility with non-harmony modules\n \t__webpack_require__.n = function(module) {\n \t\tvar getter = module && module.__esModule ?\n \t\t\tfunction getDefault() { return module['default']; } :\n \t\t\tfunction getModuleExports() { return module; };\n \t\t__webpack_require__.d(getter, 'a', getter);\n \t\treturn getter;\n \t};\n\n \t// Object.prototype.hasOwnProperty.call\n \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n\n \t// __webpack_public_path__\n \t__webpack_require__.p = \"/\";\n\n \t// on error function for async loading\n \t__webpack_require__.oe = function(err) { console.error(err); throw err; };\n\n \tvar jsonpArray = window[\"webpackJsonp\"] = window[\"webpackJsonp\"] || [];\n \tvar oldJsonpFunction = jsonpArray.push.bind(jsonpArray);\n \tjsonpArray.push = webpackJsonpCallback;\n \tjsonpArray = jsonpArray.slice();\n \tfor(var i = 0; i < jsonpArray.length; i++) webpackJsonpCallback(jsonpArray[i]);\n \tvar parentJsonpFunction = oldJsonpFunction;\n\n\n \t// add entry module to deferred list\n \tdeferredModules.push([0,\"chunk-vendors\"]);\n \t// run deferred modules when ready\n \treturn checkDeferredModules();\n","import { SkuI, MarkedSkuI, ProductI, deepCopy, DATA_PROVIDERS } from '@softwear/latestcollectioncore'\nimport tools from '@/functions/tools'\nimport { StartupDBApiI } from '../types/startupDBClient'\nimport { InventoryI } from '@/types/network'\n/** \nThis module is used to store large amounts of data retrieved from the server.\nIt's not efficient to store all that data in the Vuex store due to all the reactivity overhead.\nWe only retrieve this data to use some portions of it and make it reactive when we need it.\n*/\n\nconst globalStore = {\n brandSkus: [] as SkuI[] | MarkedSkuI[],\n b2bSkus: {} as SkuI[] | MarkedSkuI[],\n b2bInventory: [],\n brandProducts: [] as ProductI[],\n indexedBrandProducts: {},\n indexedProducts: {} as ProductI[],\n latestCollectionAPI: [] as StartupDBApiI[],\n metadata: {},\n transactionsCache: {},\n}\n\nconst COUNTRIES = [\n { text: 'Afghanistan', value: 'AF' },\n { text: 'Åland Islands', value: 'AX' },\n { text: 'Albania', value: 'AL' },\n { text: 'Algeria', value: 'DZ' },\n { text: 'American Samoa', value: 'AS' },\n { text: 'AndorrA', value: 'AD' },\n { text: 'Angola', value: 'AO' },\n { text: 'Anguilla', value: 'AI' },\n { text: 'Antarctica', value: 'AQ' },\n { text: 'Antigua and Barbuda', value: 'AG' },\n { text: 'Argentina', value: 'AR' },\n { text: 'Armenia', value: 'AM' },\n { text: 'Aruba', value: 'AW' },\n { text: 'Australia', value: 'AU' },\n { text: 'Austria', value: 'AT' },\n { text: 'Azerbaijan', value: 'AZ' },\n { text: 'Bahamas', value: 'BS' },\n { text: 'Bahrain', value: 'BH' },\n { text: 'Bangladesh', value: 'BD' },\n { text: 'Barbados', value: 'BB' },\n { text: 'Belarus', value: 'BY' },\n { text: 'Belgium', value: 'BE' },\n { text: 'Belize', value: 'BZ' },\n { text: 'Benin', value: 'BJ' },\n { text: 'Bermuda', value: 'BM' },\n { text: 'Bhutan', value: 'BT' },\n { text: 'Bolivia', value: 'BO' },\n { text: 'Bosnia and Herzegovina', value: 'BA' },\n { text: 'Botswana', value: 'BW' },\n { text: 'Bouvet Island', value: 'BV' },\n { text: 'Brazil', value: 'BR' },\n { text: 'British Indian Ocean Territory', value: 'IO' },\n { text: 'Brunei Darussalam', value: 'BN' },\n { text: 'Bulgaria', value: 'BG' },\n { text: 'Burkina Faso', value: 'BF' },\n { text: 'Burundi', value: 'BI' },\n { text: 'Cambodia', value: 'KH' },\n { text: 'Cameroon', value: 'CM' },\n { text: 'Canada', value: 'CA' },\n { text: 'Cape Verde', value: 'CV' },\n { text: 'Cayman Islands', value: 'KY' },\n { text: 'Central African Republic', value: 'CF' },\n { text: 'Chad', value: 'TD' },\n { text: 'Chile', value: 'CL' },\n { text: 'China', value: 'CN' },\n { text: 'Christmas Island', value: 'CX' },\n { text: 'Cocos (Keeling) Islands', value: 'CC' },\n { text: 'Colombia', value: 'CO' },\n { text: 'Comoros', value: 'KM' },\n { text: 'Congo', value: 'CG' },\n { text: 'Congo, The Democratic Republic of the', value: 'CD' },\n { text: 'Cook Islands', value: 'CK' },\n { text: 'Costa Rica', value: 'CR' },\n { text: \"Cote D'Ivoire\", value: 'CI' },\n { text: 'Croatia', value: 'HR' },\n { text: 'Cuba', value: 'CU' },\n { text: 'Cyprus', value: 'CY' },\n { text: 'Czech Republic', value: 'CZ' },\n { text: 'Denmark', value: 'DK' },\n { text: 'Djibouti', value: 'DJ' },\n { text: 'Dominica', value: 'DM' },\n { text: 'Dominican Republic', value: 'DO' },\n { text: 'Ecuador', value: 'EC' },\n { text: 'Egypt', value: 'EG' },\n { text: 'El Salvador', value: 'SV' },\n { text: 'Equatorial Guinea', value: 'GQ' },\n { text: 'Eritrea', value: 'ER' },\n { text: 'Estonia', value: 'EE' },\n { text: 'Ethiopia', value: 'ET' },\n { text: 'Falkland Islands (Malvinas)', value: 'FK' },\n { text: 'Faroe Islands', value: 'FO' },\n { text: 'Fiji', value: 'FJ' },\n { text: 'Finland', value: 'FI' },\n { text: 'France', value: 'FR' },\n { text: 'French Guiana', value: 'GF' },\n { text: 'French Polynesia', value: 'PF' },\n { text: 'French Southern Territories', value: 'TF' },\n { text: 'Gabon', value: 'GA' },\n { text: 'Gambia', value: 'GM' },\n { text: 'Georgia', value: 'GE' },\n { text: 'Germany', value: 'DE' },\n { text: 'Ghana', value: 'GH' },\n { text: 'Gibraltar', value: 'GI' },\n { text: 'Greece', value: 'GR' },\n { text: 'Greenland', value: 'GL' },\n { text: 'Grenada', value: 'GD' },\n { text: 'Guadeloupe', value: 'GP' },\n { text: 'Guam', value: 'GU' },\n { text: 'Guatemala', value: 'GT' },\n { text: 'Guernsey', value: 'GG' },\n { text: 'Guinea', value: 'GN' },\n { text: 'Guinea-Bissau', value: 'GW' },\n { text: 'Guyana', value: 'GY' },\n { text: 'Haiti', value: 'HT' },\n { text: 'Heard Island and Mcdonald Islands', value: 'HM' },\n { text: 'Holy See (Vatican City State)', value: 'VA' },\n { text: 'Honduras', value: 'HN' },\n { text: 'Hong Kong', value: 'HK' },\n { text: 'Hungary', value: 'HU' },\n { text: 'Iceland', value: 'IS' },\n { text: 'India', value: 'IN' },\n { text: 'Indonesia', value: 'ID' },\n { text: 'Iran, Islamic Republic Of', value: 'IR' },\n { text: 'Iraq', value: 'IQ' },\n { text: 'Ireland', value: 'IE' },\n { text: 'Isle of Man', value: 'IM' },\n { text: 'Israel', value: 'IL' },\n { text: 'Italy', value: 'IT' },\n { text: 'Jamaica', value: 'JM' },\n { text: 'Japan', value: 'JP' },\n { text: 'Jersey', value: 'JE' },\n { text: 'Jordan', value: 'JO' },\n { text: 'Kazakhstan', value: 'KZ' },\n { text: 'Kenya', value: 'KE' },\n { text: 'Kiribati', value: 'KI' },\n { text: \"Korea, Democratic People'S Republic of\", value: 'KP' },\n { text: 'Korea, Republic of', value: 'KR' },\n { text: 'Kuwait', value: 'KW' },\n { text: 'Kyrgyzstan', value: 'KG' },\n { text: \"Lao People'S Democratic Republic\", value: 'LA' },\n { text: 'Latvia', value: 'LV' },\n { text: 'Lebanon', value: 'LB' },\n { text: 'Lesotho', value: 'LS' },\n { text: 'Liberia', value: 'LR' },\n { text: 'Libyan Arab Jamahiriya', value: 'LY' },\n { text: 'Liechtenstein', value: 'LI' },\n { text: 'Lithuania', value: 'LT' },\n { text: 'Luxembourg', value: 'LU' },\n { text: 'Macao', value: 'MO' },\n { text: 'Macedonia, The Former Yugoslav Republic of', value: 'MK' },\n { text: 'Madagascar', value: 'MG' },\n { text: 'Malawi', value: 'MW' },\n { text: 'Malaysia', value: 'MY' },\n { text: 'Maldives', value: 'MV' },\n { text: 'Mali', value: 'ML' },\n { text: 'Malta', value: 'MT' },\n { text: 'Marshall Islands', value: 'MH' },\n { text: 'Martinique', value: 'MQ' },\n { text: 'Mauritania', value: 'MR' },\n { text: 'Mauritius', value: 'MU' },\n { text: 'Mayotte', value: 'YT' },\n { text: 'Mexico', value: 'MX' },\n { text: 'Micronesia, Federated States of', value: 'FM' },\n { text: 'Moldova, Republic of', value: 'MD' },\n { text: 'Monaco', value: 'MC' },\n { text: 'Mongolia', value: 'MN' },\n { text: 'Montserrat', value: 'MS' },\n { text: 'Morocco', value: 'MA' },\n { text: 'Mozambique', value: 'MZ' },\n { text: 'Myanmar', value: 'MM' },\n { text: 'Namibia', value: 'NA' },\n { text: 'Nauru', value: 'NR' },\n { text: 'Nepal', value: 'NP' },\n { text: 'Netherlands', value: 'NL' },\n { text: 'Netherlands Antilles', value: 'AN' },\n { text: 'New Caledonia', value: 'NC' },\n { text: 'New Zealand', value: 'NZ' },\n { text: 'Nicaragua', value: 'NI' },\n { text: 'Niger', value: 'NE' },\n { text: 'Nigeria', value: 'NG' },\n { text: 'Niue', value: 'NU' },\n { text: 'Norfolk Island', value: 'NF' },\n { text: 'Northern Mariana Islands', value: 'MP' },\n { text: 'Norway', value: 'NO' },\n { text: 'Oman', value: 'OM' },\n { text: 'Pakistan', value: 'PK' },\n { text: 'Palau', value: 'PW' },\n { text: 'Palestinian Territory, Occupied', value: 'PS' },\n { text: 'Panama', value: 'PA' },\n { text: 'Papua New Guinea', value: 'PG' },\n { text: 'Paraguay', value: 'PY' },\n { text: 'Peru', value: 'PE' },\n { text: 'Philippines', value: 'PH' },\n { text: 'Pitcairn', value: 'PN' },\n { text: 'Poland', value: 'PL' },\n { text: 'Portugal', value: 'PT' },\n { text: 'Puerto Rico', value: 'PR' },\n { text: 'Qatar', value: 'QA' },\n { text: 'Reunion', value: 'RE' },\n { text: 'Romania', value: 'RO' },\n { text: 'Russian Federation', value: 'RU' },\n { text: 'RWANDA', value: 'RW' },\n { text: 'Saint Helena', value: 'SH' },\n { text: 'Saint Kitts and Nevis', value: 'KN' },\n { text: 'Saint Lucia', value: 'LC' },\n { text: 'Saint Pierre and Miquelon', value: 'PM' },\n { text: 'Saint Vincent and the Grenadines', value: 'VC' },\n { text: 'Samoa', value: 'WS' },\n { text: 'San Marino', value: 'SM' },\n { text: 'Sao Tome and Principe', value: 'ST' },\n { text: 'Saudi Arabia', value: 'SA' },\n { text: 'Senegal', value: 'SN' },\n { text: 'Serbia and Montenegro', value: 'CS' },\n { text: 'Seychelles', value: 'SC' },\n { text: 'Sierra Leone', value: 'SL' },\n { text: 'Singapore', value: 'SG' },\n { text: 'Slovakia', value: 'SK' },\n { text: 'Slovenia', value: 'SI' },\n { text: 'Solomon Islands', value: 'SB' },\n { text: 'Somalia', value: 'SO' },\n { text: 'South Africa', value: 'ZA' },\n { text: 'South Georgia and the South Sandwich Islands', value: 'GS' },\n { text: 'Spain', value: 'ES' },\n { text: 'Sri Lanka', value: 'LK' },\n { text: 'Sudan', value: 'SD' },\n { text: 'Suriname', value: 'SR' },\n { text: 'Svalbard and Jan Mayen', value: 'SJ' },\n { text: 'Swaziland', value: 'SZ' },\n { text: 'Sweden', value: 'SE' },\n { text: 'Switzerland', value: 'CH' },\n { text: 'Syrian Arab Republic', value: 'SY' },\n { text: 'Taiwan, Province of China', value: 'TW' },\n { text: 'Tajikistan', value: 'TJ' },\n { text: 'Tanzania, United Republic of', value: 'TZ' },\n { text: 'Thailand', value: 'TH' },\n { text: 'Timor-Leste', value: 'TL' },\n { text: 'Togo', value: 'TG' },\n { text: 'Tokelau', value: 'TK' },\n { text: 'Tonga', value: 'TO' },\n { text: 'Trinidad and Tobago', value: 'TT' },\n { text: 'Tunisia', value: 'TN' },\n { text: 'Turkey', value: 'TR' },\n { text: 'Turkmenistan', value: 'TM' },\n { text: 'Turks and Caicos Islands', value: 'TC' },\n { text: 'Tuvalu', value: 'TV' },\n { text: 'Uganda', value: 'UG' },\n { text: 'Ukraine', value: 'UA' },\n { text: 'United Arab Emirates', value: 'AE' },\n { text: 'United Kingdom', value: 'GB' },\n { text: 'United States', value: 'US' },\n { text: 'United States Minor Outlying Islands', value: 'UM' },\n { text: 'Uruguay', value: 'UY' },\n { text: 'Uzbekistan', value: 'UZ' },\n { text: 'Vanuatu', value: 'VU' },\n { text: 'Venezuela', value: 'VE' },\n { text: 'Viet Nam', value: 'VN' },\n { text: 'Virgin Islands, British', value: 'VG' },\n { text: 'Virgin Islands, U.S.', value: 'VI' },\n { text: 'Wallis and Futuna', value: 'WF' },\n { text: 'Western Sahara', value: 'EH' },\n { text: 'Yemen', value: 'YE' },\n { text: 'Zambia', value: 'ZM' },\n { text: 'Zimbabwe', value: 'ZW' },\n]\n\nfunction getLatestCollectionAPI(collection: string): StartupDBApiI {\n return globalStore.latestCollectionAPI[collection]\n}\nfunction getLatestCollectionArray(collection: string) {\n if (!globalStore.latestCollectionAPI[collection]?.checkPoint?.data) return []\n return Object.values(globalStore.latestCollectionAPI[collection].checkPoint.data) as any[]\n}\nfunction setIndexedProducts(products) {\n return (globalStore.indexedProducts = products)\n}\nfunction getIndexedProducts(): ProductI[] {\n return globalStore.indexedProducts\n}\nfunction setIndexedBrandProducts(products) {\n return (globalStore.indexedBrandProducts = products)\n}\nfunction getIndexedBrandProducts() {\n return globalStore.indexedBrandProducts\n}\nfunction getMetadata(): any {\n return globalStore.metadata\n}\nfunction setMetadata(metadata) {\n return (globalStore.metadata = metadata)\n}\nfunction getLatestCollectionObject(collection: string) {\n return globalStore.latestCollectionAPI[collection]?.checkPoint?.data || {}\n}\nfunction setLatestCollectionAPI(collection: string, api: StartupDBApiI) {\n globalStore.latestCollectionAPI[collection] = api\n}\nfunction resetLatestCollectionAPI(collection: string) {\n delete globalStore.latestCollectionAPI[collection]\n}\nfunction getBrandSkus() {\n return globalStore.brandSkus\n}\nfunction getB2bSkus(): SkuI[] {\n return globalStore.b2bSkus\n}\nfunction getB2bInventory(): InventoryI[] {\n return globalStore.b2bInventory\n}\nfunction setBrandSkus(brandSkus: Array<MarkedSkuI>) {\n globalStore.brandSkus = brandSkus\n}\nfunction getBrandProducts() {\n return globalStore.brandProducts\n}\nfunction setBrandProducts(brandProducts: Array<ProductI>) {\n globalStore.brandProducts = brandProducts\n}\nfunction getTransactionsCache() {\n return globalStore.transactionsCache\n}\nfunction clearTransactionsCache() {\n Object.keys(globalStore.transactionsCache).forEach((shard) => {\n delete globalStore.transactionsCache[shard]\n })\n}\nglobalThis.globalStore = globalStore\n\nfunction getItems(items: string, store: any) {\n if (Array.isArray(items)) return items\n switch (items) {\n case 'attribute':\n return Object.keys(store.state.attributes)\n case 'articleGroup':\n return store.state.productGroups\n case 'brand':\n return store.state.tenantBrands\n case 'masterbrands':\n return store.state.brands.map((b) => b.collection)\n case 'mastersuppliers':\n return store.state.brands.filter((b) => b.isSupplier).map((b) => b.collection)\n case 'campaigns':\n return getLatestCollectionArray('campaign').map((campaign) => ({ text: campaign.campaignName, value: campaign.id }))\n case 'collection':\n return deepCopy(store.state.collections).reverse()\n case 'skuCollection':\n return deepCopy(store.state.skuCollections).reverse()\n case 'colorFamily':\n return store.state.colors\n case 'dashboard':\n return store.getters.dashBoardSourceData.map((card) => card.name)\n case 'pricetagLayouts':\n return getLatestCollectionArray('layout')\n .filter((layout) => layout.group === 'pricetag' && layout.active)\n .map((layout) => layout.name)\n case 'salesChannels':\n return store.state.activeConfig.salesChannels.mySalesChannels.value\n case 'size':\n return store.state.sizes\n case 'vatCategory':\n return [\n { text: 'vat-low', value: 'low' },\n { text: 'vat-high', value: 'high' },\n { text: 'vat-zero', value: 'zero' },\n ]\n case 'warehouse':\n return getLatestCollectionArray('warehouse')\n .filter((warehouse) => warehouse.active)\n .map((warehouse) => warehouse.name)\n case 'warehouseId':\n return getLatestCollectionArray('warehouse')\n .filter((warehouse) => warehouse.active)\n .map((warehouse) => ({ text: warehouse.name, value: warehouse.id }))\n case 'warehouseIdWithGln':\n return getLatestCollectionArray('warehouse')\n .filter((warehouse) => warehouse.active && warehouse.gln)\n .map((warehouse) => ({ text: warehouse.name, value: warehouse.id }))\n case 'picqerWarehouseId':\n return store.state.picqerWarehouses\n case 'mPlusKassaUsers':\n return store.state.mPlusKassaUsers\n case 'dataprovider':\n return DATA_PROVIDERS.split(',')\n case 'country':\n return COUNTRIES\n default:\n return tools.getUniqueValues(getLatestCollectionArray('sku').map((e) => e[items])).sort()\n }\n}\n\nexport default {\n clearTransactionsCache,\n getB2bSkus,\n getB2bInventory,\n getBrandSkus,\n getBrandProducts,\n getIndexedBrandProducts,\n getIndexedProducts,\n getLatestCollectionArray,\n getLatestCollectionObject,\n getMetadata,\n getTransactionsCache,\n getLatestCollectionAPI,\n setBrandSkus,\n setBrandProducts,\n setIndexedBrandProducts,\n setIndexedProducts,\n setMetadata,\n setLatestCollectionAPI,\n resetLatestCollectionAPI,\n getItems,\n}\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./swDateRangePicker.vue?vue&type=style&index=0&id=3eb1d46d&prod&scoped=true&lang=css\"","import store from '@/store/index'\nimport Session from '../types/session'\n\nfunction getSession() {\n return store?.state.user as Session\n}\n\nfunction setSession(newSession: any) {\n store.state.user = newSession\n}\n\nexport { getSession, setSession }\n","// initial state\nconst state = () => ({\n brandFilter: null,\n brandFilterEquals: true,\n collectionFilter: null,\n collectionFilterEquals: true,\n dateName: null,\n filterDateRange: null,\n hideFullGrouper: true,\n itemsPerPage: 20,\n productGroupFilter: null,\n productGroupFilterEquals: true,\n selectedFields: null,\n selectedGroups: null,\n selectedKPIs: null,\n warehouseFilter: null,\n warehouseFilterEquals: true,\n withSubtotals: true,\n showSubtotals: true,\n defaultQuery: {\n type: 'articlestatus',\n groups: 'sku.brand',\n filter: '',\n fields: '1,6,8,12,14,43',\n period: 'THISWEEK',\n reportViz: 'table',\n },\n})\n\n// getters\nconst getters = {}\n\n// actions\nconst actions = {}\n\n// mutations\nconst mutations = {}\n\nexport default {\n namespaced: true,\n state,\n getters,\n actions,\n mutations,\n}\n","import Vue from 'vue'\nimport Vuex from 'vuex'\nimport globalStore from './globalStore'\nimport consts from './consts'\nimport productFunctions from '@/functions/products'\nimport { SkuI, hashBrand, deepCopy, buildPropertyMappingFn, getPreferedPropertyMappings, mappingStrategyE } from '@softwear/latestcollectioncore'\nimport startupDB from './client'\nimport vuetify from '../plugins/vuetify'\nimport tools from '../functions/tools'\nimport userFunctions from '@/functions/users'\nimport webServices from '@/functions/webServicesFacade'\nimport preferences from '@/functions/preferences'\nimport articleStatus from '@/store/modules/articleStatusStore'\nimport { authorizedPagesList } from '@/functions/mainMenu'\nimport { swT } from '@/functions/i18n'\nimport articleStatusConfig from '../functions/articleStatusConfig'\nconst ensureImpliedProperties = productFunctions.ensureImpliedProperties\nimport sourceData from '../functions/dashboardData'\nimport { AuditHeadersI } from '@/types/startupDBClient'\nimport soundFunctions from '@/functions/soundFunctions'\n\nVue.use(Vuex)\n\nconst storePropertyMappingFnsInState = function(state) {\n const allMappings = getPreferedPropertyMappings(\n state.activeConfig,\n globalStore.getLatestCollectionArray('metabrandsetting'),\n globalStore.getLatestCollectionArray('dataproviderbrandsetting'),\n globalStore.getLatestCollectionArray('tenantbrandsetting')\n )\n state.propertyMappingFn = buildPropertyMappingFn(allMappings, mappingStrategyE.MAP)\n state.propertyCleaningFn = buildPropertyMappingFn(allMappings, mappingStrategyE.CLEAN)\n}\nconst cardAuthorized = function(card, tenant, userRoles) {\n const tenantIDIncluded = card.tenantID.length == 0 || card.tenantID.includes(tenant)\n const roleIncluded = card.role.length == 0 || card.role.some((role) => userFunctions.hasRole(userRoles, role))\n\n return tenantIDIncluded && roleIncluded\n}\nexport default new Vuex.Store({\n modules: {\n articleStatus,\n },\n state: {\n dialogDisplayed: false,\n loading: false,\n activeConfig: null,\n activeFormValid: false,\n localDocumentIndex: null,\n alerts: [\n {\n state: false,\n header: '',\n type: 'info',\n },\n ],\n attributes: [],\n authenticated: false,\n brands: [], // all latestCollection & tenant brands merged together\n collections: [], // sku collections + some inferred collections\n skuCollections: [], // only collections that come from the sku data\n colors: [],\n drawer: true,\n b2bDrawer: false,\n b2bBasket: {}, // b2bBasket.warehouse.articleCodeSupplier.barcode = qty\n b2bBasketCount: 0, // nr Pieces in b2bBasket\n b2bBasketValue: 0, // total buyPrice in b2bBasket\n b2bBasketUpdateTrigger: 0, // increment this whenever we want to force the basket dependencies to recompute, watching the b2bBasket itself will not trigger because Vue's inability to see net properties.\n b2bSelectedWarehouses: [],\n showBeta: ['127.0.0.1', '192.168.2.7', 'localhost', 'beta.', 'edge.'].some((prefix) => window.location.hostname.startsWith(prefix)),\n editing: false, // used in all components to prevent navigating away from that component when editing\n filter: '',\n hideMainFilter: false,\n reportViz: null,\n rowsInfo: {\n filtered: null,\n total: null,\n },\n inventory: [],\n loadingStatus: 'loading',\n importBusy: false,\n exportBusy: false,\n locale: 'en',\n paginationCurrentPage: 1,\n paginationTotalPages: null,\n foldReportsUI: true,\n reportsFilterFullUI: false,\n beforeAuthLanguage: '',\n selectedProduct: null,\n articleStatusTableViz: 'table',\n mainFilterPrompt: 'filter',\n matrixClipboard: [],\n metadata: null,\n productIsSelected: false,\n networkError: null,\n productGroups: [], // all productgroups\n rawFilter: '',\n productPickerActive: false,\n barcodeScannerMode: false,\n productPicker: '',\n productPickerItems: [],\n appFilterByList: ['articleCodeSupplier', 'articleCode', 'articleDescription', 'articleGroup', 'articleGroupSupplier', 'collection', 'colorFamily'],\n appFilterBySelectedKey: 'articleCodeSupplier',\n scannedBarcode: '',\n sizes: [],\n skuLoading: true,\n skuPromise: null,\n tenantBrands: [],\n reportGroups: articleStatusConfig.groupChoices,\n reportColumns: articleStatusConfig.fieldChoices,\n poFilterDate: [null, null],\n info: {\n showInfoDrawer: false,\n data: [] as any,\n },\n user: {\n name: '',\n roles: {},\n deviceId: '',\n wh: '',\n current_tenant: '',\n username: '',\n settings: {\n tenant: {\n settings: {\n uploadDirectory: '',\n },\n },\n user: {\n id: '',\n },\n },\n tenant: {\n id: '',\n name: '',\n gln: '',\n },\n b2bAccessList: [],\n },\n vatHi: 21,\n vatLo: 9,\n propertyMappingFn: null,\n propertyCleaningFn: null,\n totalNrBarcodes: 0,\n totalNrConsumers: 0,\n lastPulled: {\n inventory: 0,\n },\n picqerWarehouses: [{ value: 0, text: '** SAVE API TOKEN FIRST TO SELECT WAREHOUSE **' }],\n mPlusKassaUsers: [{ value: 0, text: '** SAVE API TOKEN FIRST TO SELECT EMPLOYEE **' }],\n brandOwnerOf: [],\n },\n mutations: {\n SET_TOTAL_NR_BARCODES(state, nr) {\n state.totalNrBarcodes = nr\n },\n COMPUTE_UNIQUE_SKU_PROPERTIES(state, skus) {\n globalStore.setIndexedProducts(productFunctions.buildProductIndexedObject(skus))\n state.attributes = productFunctions.getAttributes(skus)\n state.colors = tools.getUniqueValues(skus.map((e) => e.colorFamily || e.mainColorDescription)).sort()\n state.sizes = tools.getUniqueValues(skus.map((e) => e.size)).sort()\n state.productGroups = tools.getUniqueValues(skus.map((e) => e.articleGroup)).sort()\n const collections = skus.map((e) => e.collection)\n state.skuCollections = tools.getUniqueValues(collections).sort()\n const allCollections = state.skuCollections.concat(['00noos', '00admin'])\n for (let year = 10; year < parseInt(('' + (new Date().getFullYear() + 1)).slice(-2)); year++) allCollections.push(year + 'winter', year + 'summer')\n state.collections = allCollections\n state.brands = productFunctions.combineBrands(state, skus)\n state.tenantBrands = tools.getUniqueValues(skus.map((e) => e.brand || 'unknown'))\n },\n SET_NETWORK_ERROR(state, e) {\n state.networkError = e\n console.log('network error', e)\n },\n SET_AUTHENTICATION(state, value) {\n state.authenticated = value\n },\n SET_LOADING_STATUS(state, status) {\n state.loadingStatus = status\n },\n SET_BRANDS(state, brands) {\n state.brands = brands\n },\n SET_METADATA(state, data) {\n state.metadata = data\n },\n SET_USER(state, user) {\n state.user = user\n if (user.language) state.locale = user.language.slice(0, 2)\n },\n SET_EDITING(state, editing) {\n state.editing = editing\n },\n CLEAR_FILTER(state) {\n state.filter = ''\n state.rawFilter = ''\n state.scannedBarcode = ''\n },\n RAISE_ALERT(state, alert) {\n alert.state = true\n if (alert.sound) soundFunctions.playFailed()\n\n state.alerts.push(alert)\n vuetify.framework.goTo(0)\n if (alert.timeout) {\n setTimeout(function() {\n alert.state = false\n }, alert.timeout)\n }\n },\n },\n getters: {\n allMonthsOfTheYear(state) {\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Intl/DateTimeFormat\n // return an array of objects with the month name and the month number\n // { monthName: 'jan', monthNumber: 1 }\n\n const months = []\n for (let i = 0; i < 12; i++) {\n const monthName = new Intl.DateTimeFormat(state.locale, { month: 'short' }).format(new Date(2020, i, 1))\n months.push({ monthName, monthNumber: i })\n }\n return months\n },\n prioritizedInfo(state) {\n const filteredInfo = state.info.data.filter((e) => e.priority)\n if (filteredInfo.length) return filteredInfo\n return state.info.data\n },\n translatedReportColumns(state) {\n return state.reportColumns\n .filter((column) => !column.showForB2bChannels || state.activeConfig.salesChannels.mySalesChannels?.value.includes('wholesale'))\n .map((column) => ({ ...column, text: swT(column.text) }))\n },\n reportColumnsAbbreviated(state) {\n return state.reportColumns.map((column) => ({ ...column, text: swT(column.text, `abr`) }))\n },\n translatedReportGroupColumns(state) {\n const reportGroups = []\n for (const attribute of state.activeConfig.products.activeAttributes.value)\n reportGroups.push({\n text: attribute,\n value: `'sku._${attribute}'`,\n reportViz: 'all',\n fieldType: 0,\n })\n return state.reportGroups\n .concat(reportGroups)\n .map((group) => ({ ...group, text: swT(group.text) }))\n .filter((group) => group.reportViz == 'all' || (',' + group.reportViz + ',').includes(',' + state.reportViz + ','))\n .filter((group) => {\n if (!group.showWhenPreference) return true\n return state.activeConfig.reports[group.showWhenPreference]?.value\n })\n },\n years() {\n const years = []\n const now = new Date()\n const thisYear = now.getFullYear()\n for (let year = thisYear - 3; year <= thisYear; year++) years.push(year)\n return years\n },\n brandAccess: (state) => (selectedBrandName) => {\n const tenantId = state.user.current_tenant\n if (tenantId == 'master') return { hasAccess: true }\n const roles = state.user.roles[tenantId]\n if (userFunctions.hasRole(roles, 'sw')) return { hasAccess: true }\n if (!state.activeConfig.partnerchannels.latestcollection.value) return { hasAccess: false }\n const selectedBrandData = state.brands.find((brand) => brand.collection === selectedBrandName)\n if (!selectedBrandData) return { hasAccess: false }\n if (!selectedBrandData.ownerTenantId || selectedBrandData.ownerTenantId === state.user.current_tenant || !selectedBrandData.associates) return { hasAccess: true }\n const isAssociate = selectedBrandData.associates.find((associate) => associate.tenantId === state.user.current_tenant)\n if (!isAssociate) return { hasAccess: false }\n return { status: isAssociate?.status, hasAccess: isAssociate?.status === 'approved' }\n },\n roles(state) {\n return state.user.roles[state.user.current_tenant] || []\n },\n isDemo(state) {\n return state.user.roles[state.user.current_tenant]?.includes('products-demo')\n },\n isDeviceUser(state) {\n return !!state.user.deviceId && !!state.user.wh\n },\n brandCollection: (state) => (brand) => {\n return state.brands.find((e) => hashBrand(e.name) == brand || e?.collection == brand || e.aliases?.includes(brand))\n },\n mapSubSizes(state) {\n return state.activeConfig.products.mapSubSizes.value\n },\n sizeOrdering(state) {\n return state.metadata.sizeOrdering.data\n },\n uploadDirectory(state) {\n return state.user.settings.tenant.settings.uploadDirectory\n },\n authorizedPagesList(state, getters) {\n if (getters.roles.length === 0) return []\n const authorizedPages = authorizedPagesList(getters.roles, state.showBeta)\n if (process.env.NODE_ENV === 'development') {\n authorizedPages.push({\n name: 'developertools',\n link: '/dev',\n icon: 'mdi-dev-to',\n shortcut: 'Alt+F12',\n })\n }\n return authorizedPages\n },\n dashBoardSourceData(state) {\n const tenant = state.user.current_tenant\n const userRoles = state.user.roles[tenant]\n return sourceData.filter((card) => {\n return cardAuthorized(card, tenant, userRoles)\n })\n },\n },\n actions: {\n computeUniqueSkuProperties({ commit }, payload) {\n commit('COMPUTE_UNIQUE_SKU_PROPERTIES', payload)\n },\n setLoadingStatus({ commit }, payload) {\n commit('SET_LOADING_STATUS', payload)\n },\n setAuthentication({ commit }, payload) {\n commit('SET_AUTHENTICATION', payload)\n },\n setUser({ commit }, payload) {\n commit('SET_USER', payload)\n },\n setEditing({ commit }, payload) {\n commit('SET_EDITING', payload)\n },\n clearFilter({ commit }) {\n commit('CLEAR_FILTER')\n },\n raiseAlert({ commit }, payload) {\n commit('RAISE_ALERT', payload)\n },\n async ensureConfigDocs({ dispatch }) {\n const system = globalStore.getLatestCollectionObject('system')\n if (!('tenantPreference' in system)) {\n await dispatch('updateObjects', {\n api: globalStore.getLatestCollectionAPI('system'),\n data: [{ id: 'tenantPreference', ...consts.allConfig }],\n })\n }\n },\n async ensureTenantCollection({ state }, payload) {\n const collection = globalStore.getLatestCollectionArray(payload)\n if (collection.length == 0) {\n const tenantId = state.user.current_tenant\n globalStore.setLatestCollectionAPI('eventlog', await startupDB({ url: '/' + tenantId + '/eventlog' }))\n globalStore.getLatestCollectionArray('eventlog')\n }\n },\n async refreshDB() {\n await globalStore.getLatestCollectionAPI('purchaseorder')?.pull()\n await globalStore.getLatestCollectionAPI('transaction')?.pull()\n },\n /* eslint-disable */\n async updateObjects(\n { state },\n payload: {\n data: any[]\n api: any\n silent?: boolean\n auditHeaders?: AuditHeadersI\n }\n ) {\n /* eslint-enable */\n // Split objects in two groups. New objects (without id) should be updated/created (sending the whole object to the server),\n // existing objects (with id) can be patched (sending only the diff to the server)\n\n const objects2Patch = []\n const objects2Create = []\n\n payload.data.forEach((obj) => {\n if (!obj.id || !payload.api?.checkPoint.data[obj.id]) objects2Create.push(obj)\n else objects2Patch.push(obj)\n })\n // In some cases the function will create and patch in one go\n // Cannot interrupt the flow\n if (objects2Create.length > 0) {\n try {\n await payload.api.create(objects2Create, payload?.auditHeaders)\n if (!payload.silent)\n this.dispatch('raiseAlert', {\n header: 'data_saved',\n type: 'success',\n timeout: 3000,\n })\n } catch (e) {\n this.dispatch('raiseAlert', {\n header: (e as any).message,\n body: (e as any).message + '.tip',\n type: 'error',\n text: (e as any).response.data.error,\n })\n return false\n }\n }\n\n if (objects2Patch.length > 0) {\n try {\n if (await payload.api.patch(objects2Patch, payload?.auditHeaders))\n if (!payload.silent)\n this.dispatch('raiseAlert', {\n header: 'data_updated',\n type: 'success',\n timeout: 3000,\n })\n } catch (e) {\n console.log(e)\n this.dispatch('raiseAlert', {\n header: (e as any).message,\n body: (e as any).message + '.tip',\n type: 'error',\n text: (e as any).response.data.error,\n })\n return false\n }\n }\n return true\n },\n async updateSkuObjects(\n { state },\n payload: {\n data: any[]\n audit?: string\n }\n ) {\n const barcodesToSave = payload.data\n const success = await this.dispatch('updateObjects', {\n api: globalStore.getLatestCollectionAPI('sku'),\n data: barcodesToSave,\n auditHeaders: { 'x-transaction-audit-source': payload.audit },\n })\n if (success) {\n productFunctions.prepareSkusForUI(barcodesToSave, state)\n barcodesToSave.forEach((sku) => (sku.usedByTenant = true))\n return true\n }\n return false\n },\n /* eslint-disable */\n async deleteObjects({ state }, payload) {\n /* eslint-enable */\n try {\n if (await payload.api.delete(payload.data, payload?.auditHeaders))\n if (!payload.silent)\n this.dispatch('raiseAlert', {\n header: 'data_deleted',\n type: 'success',\n timeout: 3000,\n })\n } catch (e) {\n this.dispatch('raiseAlert', {\n header: (e as any).message,\n body: (e as any).message + '.tip',\n type: 'error',\n text: (e as any).response.data.error,\n })\n return false\n }\n return true\n },\n async updatePreference({ state }, { key, value }) {\n const activeConfig = deepCopy(state.activeConfig)\n\n const keyLevels = key.split('.')\n const block = keyLevels[0]\n const config = keyLevels[1]\n if (!activeConfig[block] || !activeConfig[block][config]) throw `Preference key ${key} does not exist`\n activeConfig[block][config].value = value\n if (activeConfig[block][config].level == 'tenant') await preferences.saveTenantPreferences(this, activeConfig)\n if (activeConfig[block][config].level == 'user') await preferences.saveUserPreferences(this, activeConfig)\n this.dispatch('loadSettings')\n },\n async loadBrand({ getters, state }, { brand = '', dataProvider }) {\n const tenantId = state.user.current_tenant\n const roles = state.user.roles[tenantId]\n if (brand == '' || !getters.brandAccess(brand).hasAccess) {\n globalStore.resetLatestCollectionAPI('selectedbrand')\n return true\n }\n try {\n const apiInfo = globalStore.getLatestCollectionAPI('selectedbrand')\n if (apiInfo?.brand == brand && !dataProvider) {\n const newBrandData = await globalStore.getLatestCollectionAPI('selectedbrand')?.pull()\n const newSkuData = await globalStore.getLatestCollectionAPI('sku')?.pull()\n if (!newSkuData && !newBrandData) return false\n }\n globalStore.resetLatestCollectionAPI('selectedbrand')\n let url = `/brands/${brand}`\n if (dataProvider) url = `/restricted/${dataProvider}/${brand}`\n if (userFunctions.hasRole(roles, 'lc-b2b')) url = `/b2b/${brand}`\n\n const brandAPI = await startupDB({ url })\n brandAPI.brand = brand\n brandAPI.dataProvider = dataProvider\n globalStore.setLatestCollectionAPI('selectedbrand', brandAPI)\n if (globalStore.getLatestCollectionArray('selectedbrand').length == 0 && userFunctions.hasRole(roles, 'lc-b2b')) {\n const brandAPI = await startupDB({ url: `/brands/${brand}` })\n brandAPI.brand = brand\n brandAPI.dataProvider = dataProvider\n globalStore.setLatestCollectionAPI('selectedbrand', brandAPI)\n }\n } catch (e) {\n if (userFunctions.hasRole(roles, 'lc-b2b')) {\n // /b2b/:brandId might not exist, fallback to /brands/:brandId.\n try {\n const brandAPI = await startupDB({ url: `/brands/${brand}` })\n brandAPI.brand = brand\n brandAPI.dataProvider = dataProvider\n globalStore.setLatestCollectionAPI('selectedbrand', brandAPI)\n } catch (e) {\n // Show error that latestCollection data cannot be loaded\n }\n }\n // Show error that latestCollection data cannot be loaded\n }\n const propertyMappingFn = this.state.propertyMappingFn\n const brandName = globalStore.getLatestCollectionObject('metabrandsetting')[brand]?.name\n const selectedBrandSkus = globalStore.getLatestCollectionArray('selectedbrand')\n selectedBrandSkus.forEach((sku) => {\n sku.brand = brandName\n sku.BRANDHASH = brand\n })\n selectedBrandSkus.forEach(propertyMappingFn)\n selectedBrandSkus.forEach(ensureImpliedProperties)\n if (userFunctions.hasRole(roles, 'lc-b2b,lc-data-only')) {\n const b2bSkus = globalStore.getB2bSkus()\n selectedBrandSkus.forEach((sku) => (b2bSkus[sku.id] = sku))\n }\n if (userFunctions.hasRole(roles, 'lc-b2b')) {\n const b2bInventory = globalStore.getB2bInventory()\n const brandInventory = await webServices.getBrandInventory(brand)\n brandInventory.forEach((o) => {\n if (!b2bInventory[o.id]) b2bInventory[o.id] = 0\n Object.keys(o.data).forEach((warehouseId) => (b2bInventory[o.id] += o.data[warehouseId].qty))\n })\n console.log(globalStore.getB2bInventory())\n }\n return true\n },\n async getBarcode({ state, commit }, payload) {\n try {\n const res = await webServices.getSku(state, payload.barcode, false)\n const skus = globalStore.getLatestCollectionArray('sku')\n await globalStore.getLatestCollectionAPI('sku')?.pull()\n commit('SET_BRANDS', productFunctions.combineBrands(state, skus))\n payload.callback(res.data)\n } catch (error) {\n payload.callback(null)\n return\n }\n },\n loadSettings({ state }) {\n const system = globalStore.getLatestCollectionObject('system')\n const userPreference = globalStore.getLatestCollectionObject('userpreference')\n\n state.activeConfig = userFunctions.loadPreferences(state.locale, userPreference[state.user.settings.user.id] || {}, system.tenantPreference || {})\n },\n async loadDB({ state, commit, dispatch }) {\n try {\n const tenantId = state.user.current_tenant\n const roles = state.user.roles[tenantId]\n commit('SET_LOADING_STATUS', 'loading')\n // Setup connections with statupDB for all the collections we need.\n // Keep references to them in globalStore, not in Vuex. We do this because the collections are large so making\n // that data reactive is too expensive. We use getter- and setter-functions in globalStore to get data out when we need to\n // make it reactive.\n\n const tenantResources = userFunctions.hasRole(roles, 'lc-b2b')\n ? ['warehouse', 'system', 'userpreference', 'tenantbrandsetting']\n : ['warehouse', 'inventorymanagement', 'system', 'userpreference', 'tenantbrandsetting', 'layout', 'campaign']\n for (const tenantResource of tenantResources) {\n globalStore.setLatestCollectionAPI(tenantResource, await startupDB({ url: `/${tenantId}/${tenantResource}` }))\n }\n\n const metaResources = userFunctions.hasRole(roles, 'lc-b2b')\n ? ['metadata', 'metabrandsetting']\n : ['metadata', 'metabrandsetting', 'dataproviderbrandsetting', 'layout:masterlayout']\n\n for (const metaResource of metaResources) {\n const [resource, alias] = metaResource.split(':')\n globalStore.setLatestCollectionAPI(alias || resource, await startupDB({ url: `/${resource}` }))\n }\n\n if (userFunctions.hasRole(roles, 'sw')) {\n globalStore.setLatestCollectionAPI('inbox', await startupDB({ url: '/inbox' }))\n } else if (!userFunctions.hasRole(roles, 'lc-b2b')) {\n globalStore.setLatestCollectionAPI('inbox', await startupDB({ url: '/' + tenantId + '/inbox' }))\n }\n\n await dispatch('ensureConfigDocs')\n dispatch('loadSettings')\n\n const metadata = globalStore.getLatestCollectionObject('metadata')\n commit('SET_METADATA', metadata)\n globalStore.setMetadata(metadata)\n const metabrandsetting = globalStore.getLatestCollectionArray('metabrandsetting')\n commit(\n 'SET_BRANDS',\n metabrandsetting.filter((b) => !b.hideBrand)\n )\n console.log(state.user.current_tenant)\n state.brandOwnerOf = metabrandsetting.filter((b) => b.ownerTenantId == state.user.current_tenant).map((b) => b.collection)\n\n storePropertyMappingFnsInState(state)\n const procesSkus = function(skus: SkuI[]) {\n state.skuLoading = false\n productFunctions.prepareSkusForUI(skus, state)\n\n commit('COMPUTE_UNIQUE_SKU_PROPERTIES', skus)\n commit('SET_TOTAL_NR_BARCODES', skus.length)\n }\n\n state.skuPromise = new Promise((resolveSkuPromise) => {\n if (!userFunctions.hasRole(roles, 'lc-b2b')) {\n const skuDataPromise = startupDB({ url: '/' + tenantId + '/sku' })\n skuDataPromise.then((data) => {\n globalStore.setLatestCollectionAPI('sku', data)\n procesSkus(globalStore.getLatestCollectionArray('sku'))\n resolveSkuPromise(true)\n })\n } else {\n state.skuLoading = false\n resolveSkuPromise(true)\n }\n })\n if (!userFunctions.hasRole(roles, 'lc-b2b'))\n for (const tenantResource of ['inventory']) {\n globalStore.setLatestCollectionAPI(tenantResource, await startupDB({ url: `/${tenantId}/${tenantResource}` }))\n }\n\n commit('SET_LOADING_STATUS', 'not loading')\n return true\n } catch (e) {\n commit('SET_NETWORK_ERROR', e)\n commit('SET_LOADING_STATUS', 'not loading')\n return false\n }\n },\n\n updateInfoData({ state }, { owner, title = '', drawerContent = '', tooltipContent = '', component, remove = false, priority = false, clearAll = false }) {\n if (clearAll) {\n state.info.data = []\n state.info.showInfoDrawer = false\n return\n }\n\n if (!owner) return\n\n let infoOwners\n\n if (state.info.data.length) {\n infoOwners = state.info.data.map((e) => e.owner)\n }\n\n if (remove) {\n const index = infoOwners.indexOf(owner)\n state.info.data.splice(index, 1)\n return\n }\n\n state.info.data.push({ owner, title, drawerContent, tooltipContent, priority, component })\n },\n },\n})\n","import Vue from 'vue'\nimport Vuetify from 'vuetify/lib'\nimport nl from 'vuetify/lib/locale/nl'\nimport de from 'vuetify/lib/locale/de'\nimport en from 'vuetify/lib/locale/en'\nimport tools from '../functions/tools'\n\nVue.use(Vuetify)\n\nconst LIGHT_THEMES = {\n latestcollection: {\n primary: '#1976D2',\n secondary: '#424242',\n accent: '#82B1FF',\n error: '#FF5252',\n info: '#2196F3',\n success: '#4CAF50',\n warning: '#FB8C00',\n },\n qliqpoint: {\n primary: '#00509d',\n secondary: '#b0bec5',\n info: '#00509d',\n accent: '#8c9eff',\n error: '#b71c1c',\n success: '#008800',\n warning: '#FB8C00',\n },\n}\nconst DARK_THEMES = {\n latestcollection: {\n primary: '#2196F3',\n secondary: '#424242',\n accent: '#FF4081',\n error: '#FF5252',\n info: '#2196F3',\n success: '#4CAF50',\n warning: '#FB8C00',\n },\n qliqpoint: {\n primary: '#00509d',\n info: '#00509d',\n secondary: '#b0bec5',\n accent: '#8c9eff',\n success: '#006600',\n error: '#b71c1c',\n },\n}\n\nconst theme = tools.getTheme()\n\nexport default new Vuetify({\n theme: {\n themes: {\n light: LIGHT_THEMES[theme],\n dark: DARK_THEMES[theme],\n },\n },\n lang: {\n locales: { nl, de, en },\n current: 'nl',\n },\n})\n","import { hashBrand, SkuI, TimeGranularityE } from '@softwear/latestcollectioncore'\nimport { AuditHeadersI } from '../types/startupDBClient'\nimport cookies from 'js-cookie'\n\n/**\n * A simple forEach() implementation for Arrays, Objects and NodeLists\n *\n * @see See [GitHub](https://gist.github.com/cferdinandi/42f985de9af4389e7ab3)\n * @private\n * @param {Array|Object|NodeList} collection Collection of items to iterate\n * @param {Function} callback Callback function for each iteration\n * @param {Array|Object|NodeList} scope Object/NodeList/Array that forEach is iterating over (aka `this`)\n */\nfunction forEach(collection, callback, scope = undefined) {\n if (Object.prototype.toString.call(collection) === '[object Object]') {\n for (const prop in collection) {\n if (Object.prototype.hasOwnProperty.call(collection, prop)) {\n callback.call(scope, collection[prop], prop, collection)\n }\n }\n return\n }\n for (let i = 0, len = collection.length; i < len; i++) {\n callback.call(scope, collection[i], i, collection)\n }\n}\n\nfunction padLeft(num, places, char) {\n return String(num).padStart(places, char ? char : '0')\n}\n\n/**\n * A function to take a string written in dot notation style, and use it to\n * find a nested object property inside of an object.\n *\n * Useful in a plugin or module that accepts a JSON array of objects, but\n * you want to let the user specify where to find various bits of data\n * inside of each custom object instead of forcing a standardized\n * property list.\n *\n * @param String nested A dot notation style parameter reference (ie \"urls.small\")\n * @param Object object (optional) The object to search\n *\n * @return the value of the property in question\n */\n\nfunction getProperty(propertyName, object) {\n const parts = propertyName.split('.')\n const length = parts.length\n let property = object\n\n for (let i = 0; i < length; i++) {\n if (property) {\n property = property[parts[i]]\n }\n }\n return property\n}\n\nfunction getUniqueValues(a: Array<string>) {\n const t = {}\n return a.filter((e: string) => e && !(t[e] = e in t))\n}\n\n/**\n * Pick key value pairs from an object by keys\n * If key is not found it will be ignored\n * @param Object object from which to choose key value pairs\n * @param String[] contains the keys which we want to pick\n *\n * @return Object\n */\nfunction pickByKey(obj, arr) {\n return arr.reduce((acc, record) => (record in obj && (acc[record] = obj[record]), acc), {})\n}\n\nfunction copyToClipboard(el) {\n const body = document.body as any\n let range, sel\n if (document.createRange && window.getSelection) {\n range = document.createRange()\n sel = window.getSelection()\n sel.removeAllRanges()\n try {\n range.selectNodeContents(el)\n sel.addRange(range)\n } catch (e) {\n range.selectNode(el)\n sel.addRange(range)\n }\n } else if (body.createTextRange) {\n range = body.createTextRange()\n range.moveToElementText(el)\n range.select()\n }\n document.execCommand('copy')\n}\nfunction apiHeaders(headers?: AuditHeadersI, conentType?: string) {\n if (!conentType) conentType = 'application/json'\n return {\n headers: { ...headers, 'Content-Type': conentType, 'X-Authentication-token': cookies.get('sid') },\n }\n}\n\n/**\n *\n * @param url {string} url searchstring like \"?parameter=value&anotherParameter=anotherValue\"\n * @returns {object} object with parameters like {\"parameter\":\"value\",\"anotherParameter\":\"anotherValue\"}\n */\nfunction parseParams(url: string): any {\n return url\n ?.substring(1)\n .split('&')\n .map((p) => p.split('='))\n .reduce((acc, element) => ({ ...acc, [element[0]]: element[1] }), {})\n}\n\nfunction debounce(fn: Function, delay: number) {\n let timeoutID = null\n return function(this: any, ...args) {\n clearTimeout(timeoutID)\n timeoutID = setTimeout(() => {\n fn.apply(this, args)\n }, delay)\n }\n}\n\nfunction detectBrowser(): string {\n const userAgent = navigator.userAgent.toLowerCase()\n if (userAgent.match(/chrome|chromium|crios/)) return 'chrome'\n if (userAgent.match(/edg/)) return 'edge'\n if (userAgent.match(/firefox|fxios/)) return 'firefox'\n if (userAgent.match(/safari/)) return 'safari' + (navigator?.maxTouchPoints ? '-mobile' : '')\n if (userAgent.match(/opr\\//)) return 'opera'\n return 'unknown'\n}\n\nfunction sleep(m) {\n return new Promise((r) => setTimeout(r, m))\n}\n\nfunction sortObjectArrayByStringProperty(o: object[], key: string, direction: boolean) {\n o.sort((a, b) => {\n const sa = a[key] || '',\n sb = b[key] || ''\n if (sa < sb) return direction ? -1 : 1\n if (sa > sb) return direction ? 1 : -1\n return 0\n })\n}\n\nfunction sortObjectArrayByBooleanProperty(o: object[], key: string, direction: boolean) {\n o.sort((a, b) => {\n const ba = a[key] || false,\n bb = b[key] || false\n return direction ? ba - bb : bb - ba\n })\n}\n\nfunction sortObjectArrayByNumberProperty(o: object[], key: string, direction: boolean) {\n o.sort((a, b) => {\n const na = a[key] || 0,\n nb = b[key] || 0\n return direction ? na - nb : nb - na\n })\n}\n\nfunction useCorrectSort(type) {\n switch (type) {\n case 'boolean':\n return sortObjectArrayByBooleanProperty\n case 'currency':\n return sortObjectArrayByNumberProperty\n }\n return sortObjectArrayByStringProperty\n}\n\nfunction skuOneColumnSorting(params = { selectedFields: [], index: null, fields: [] }, previousField, activeSort, rows) {\n const { selectedFields, index, fields } = { ...params }\n const field = fields[selectedFields[index]]\n\n if (previousField !== selectedFields[index]) {\n field.sort = undefined\n }\n\n if (previousField === selectedFields[index]) {\n const sort = useCorrectSort(field.type)\n switch (field.sort) {\n case undefined:\n sort(rows, field.field, true)\n if (activeSort) fields[activeSort].sort = null\n activeSort = selectedFields[index]\n field.sort = 'asc'\n break\n case 'asc':\n sort(rows, field.field, false)\n field.sort = 'desc'\n break\n default:\n field.sort = undefined\n }\n }\n\n return { fields, activeSort, rows }\n}\n\nfunction imageUrlParse(imageUrl, imageWidth) {\n const rootUrl = imageUrl.includes('localhost') ? '' : 'https://images.weserv.nl/?url='\n const protocol = imageUrl.substring(0, 4) == 'http' ? '' : 'https://'\n if (imageWidth == undefined) return `${rootUrl}${protocol}${imageUrl}`\n return `${rootUrl}${protocol}${imageUrl}&w=${imageWidth}`\n}\n\nfunction onCookieChange(cookieName, callback) {\n let lastSid = cookies.get(cookieName)\n setInterval(() => {\n const sid = cookies.get(cookieName)\n if (lastSid && sid !== lastSid) callback()\n lastSid = sid\n }, 5000)\n}\n\nconst getWeek = function(date) {\n // Create a copy of this date object\n const target = new Date(date)\n\n // ISO week date weeks start on monday\n // so correct the day number\n const dayNr = (date.getDay() + 6) % 7\n\n // ISO 8601 states that week 1 is the week\n // with the first thursday of that year.\n // Set the target date to the thursday in the target week\n target.setDate(target.getDate() - dayNr + 3)\n\n // Store the millisecond value of the target date\n const firstThursday = target.valueOf()\n\n // Set the target to the first thursday of the year\n // First set the target to january first\n target.setMonth(0, 1)\n // Not a thursday? Correct the date to the next thursday\n if (target.getDay() != 4) {\n target.setMonth(0, 1 + ((4 - target.getDay() + 7) % 7))\n }\n\n // The weeknumber is the number of weeks between the\n // first thursday of the year and the thursday in the target week\n return 1 + Math.ceil((firstThursday - target.valueOf()) / 604800000) // 604800000 = 7 * 24 * 3600 * 1000\n}\n/**\n * Get the ISO week date year number\n */\n\nconst getWeekYear = function(date) {\n // Create a new date object for the thursday of this week\n const target = new Date(date)\n target.setDate(target.getDate() - ((date.getDay() + 6) % 7) + 3)\n\n return target.getFullYear()\n}\n\nconst generateTimeframes = function(startDate: Date, endDate: Date, timeGranularity: TimeGranularityE): Date[][] {\n const result = []\n let currentDate = new Date(startDate)\n\n while (currentDate <= endDate) {\n let frameStart: Date, frameEnd: Date\n\n switch (timeGranularity) {\n case TimeGranularityE.DAY:\n frameStart = new Date(currentDate)\n frameEnd = new Date(currentDate)\n break\n case TimeGranularityE.WEEK:\n frameStart = new Date(currentDate)\n frameStart.setDate(currentDate.getDate() - currentDate.getDay() + (currentDate.getDay() === 0 ? -6 : 1))\n frameEnd = new Date(frameStart)\n frameEnd.setDate(frameStart.getDate() + 6)\n break\n case TimeGranularityE.MONTH:\n frameStart = new Date(currentDate.getFullYear(), currentDate.getMonth(), 1)\n frameEnd = new Date(currentDate.getFullYear(), currentDate.getMonth() + 1, 0)\n break\n case TimeGranularityE.QUARTER:\n frameStart = new Date(currentDate.getFullYear(), Math.floor(currentDate.getMonth() / 3) * 3, 1)\n frameEnd = new Date(frameStart.getFullYear(), frameStart.getMonth() + 3, 0)\n break\n case TimeGranularityE.YEAR:\n frameStart = new Date(currentDate.getFullYear(), 0, 1)\n frameEnd = new Date(currentDate.getFullYear(), 11, 31)\n break\n default:\n throw new Error('Invalid timeframe')\n }\n\n result.push([frameStart, frameEnd])\n\n // Move to the next timeframe\n switch (timeGranularity) {\n case TimeGranularityE.DAY:\n // currentDate.setDate(currentDate.getDate() + 1)\n currentDate = new Date(currentDate.getFullYear(), currentDate.getMonth(), currentDate.getDate() + 1)\n break\n case TimeGranularityE.WEEK:\n currentDate.setDate(currentDate.getDate() + 7)\n break\n case TimeGranularityE.MONTH:\n currentDate.setMonth(currentDate.getMonth() + 1)\n break\n case TimeGranularityE.QUARTER:\n currentDate.setMonth(currentDate.getMonth() + 3)\n break\n case TimeGranularityE.YEAR:\n currentDate.setFullYear(currentDate.getFullYear() + 1)\n break\n }\n }\n\n return result\n}\nconst saveStringAsFile = function(filename, payload, mimeType) {\n const blob = new Blob([payload], { type: mimeType })\n const link = document.createElement('a')\n\n link.download = filename\n link.href = window.URL.createObjectURL(blob)\n link.dataset.downloadurl = [mimeType, link.download, link.href].join(':')\n\n const evt = new MouseEvent('click', {\n view: window,\n bubbles: true,\n cancelable: true,\n })\n\n link.dispatchEvent(evt)\n link.remove()\n}\n\nconst checkSkuPrices = function(sku: SkuI, store: any, swT: any): any {\n if (!sku) return\n if (sku.buyPrice && sku.buyPrice < sku.price) return\n if (!sku.buyPrice)\n store.dispatch('raiseAlert', {\n header: `${swT('no_buy_price_header')}${sku.id}`,\n body: 'no_buy_price_body',\n type: 'warning',\n timeout: 10000,\n })\n else if (sku.buyPrice >= sku.price)\n store.dispatch('raiseAlert', {\n header: `${swT('wrong_prices_header')}${sku.id}`,\n body: 'wrong_prices_body',\n type: 'warning',\n timeout: 10000,\n })\n}\n\nconst splitArrayIntoBatches = function(arr: any, batchSize: number): any {\n return Array.from({ length: Math.ceil(arr.length / batchSize) }, (_, i) => arr.slice(i * batchSize, i * batchSize + batchSize))\n}\n\n/**\n * Compare two strings if they belong to each others.\n * @param mainText The full text string.\n * @param queryText The sub text string to look for.\n * @returns True if the queryText is a substring of the item. (No matter the lattercase or diacritics)\n * @return Boolean\n */\nconst compareStringsWithDiacritic = function(mainText: string, queryText: string): boolean {\n // Normalize the strings to remove diacritic\n const removeDiacritics = (str: string): string =>\n str\n .normalize('NFD')\n .replace(/[\\u0300-\\u036f]/g, '')\n .toLowerCase()\n\n const normalizedMainText = removeDiacritics(mainText)\n const normalizedQueryText = removeDiacritics(queryText)\n\n // Check if the normalized queryText exists in the normalized mainText\n return normalizedMainText.includes(normalizedQueryText)\n}\n\nconst getTheme = function() {\n const domain = window.location.hostname\n if (domain.includes('.qliqpoint.')) return 'qliqpoint'\n return 'latestcollection'\n}\nexport default {\n apiHeaders,\n copyToClipboard,\n debounce,\n detectBrowser,\n forEach,\n pickByKey,\n padLeft,\n getProperty,\n getUniqueValues,\n parseParams,\n skuOneColumnSorting,\n sleep,\n sortObjectArrayByStringProperty,\n imageUrlParse,\n onCookieChange,\n getWeek,\n getWeekYear,\n generateTimeframes,\n saveStringAsFile,\n checkSkuPrices,\n splitArrayIntoBatches,\n compareStringsWithDiacritic,\n getTheme,\n}\n","module.exports = __webpack_public_path__ + \"media/failed.f39711ec.mp3\";","import { articleStatus } from '@softwear/latestcollectioncore'\nimport { swT } from '@/functions/i18n'\n\nexport default {\n swT,\n multiFilterFiltrex: '',\n filtersLoading: true,\n selectorButtons: [\n { name: 'all' },\n { name: 'warehouses' },\n { name: 'brands' },\n { name: 'collections' },\n { name: 'productgroups' },\n { name: 'groups' },\n { name: 'fields' },\n { name: 'none' },\n ],\n stockInsightTableKey: { text: 'sku.size', value: 'sku.size', reportViz: 'table,stockinsight' },\n toggleSelectors: [],\n toggleQuarters: null,\n toggleMonths: [],\n multiFilterConfig: {},\n toggleYears: null,\n toggleRelativePeriods: null,\n anyDate: '',\n consistencyChecked: null,\n advancedUI: false,\n hideZeroes: false,\n matrixVizibilityToggles: ['showImage'],\n showImage: true,\n showNegativeValues: false,\n showPositiveValues: false,\n calculatingIndicator: false,\n controlPanels: [],\n dates: null,\n fullUI: false,\n foldUI: true,\n manualFilter: '',\n tab: 0,\n modalFromDatePicker: false,\n modalToDatePicker: false,\n noTableFormatting: false,\n rawAggregations: {},\n rawAggregationBuffer: {},\n selectedRelativePeriod: {},\n relativePeriods: ['LAST365', 'LASTMONTH', 'THISMONTH', 'LASTWEEK', 'THISWEEK', 'YESTERDAY', 'TODAY'],\n shardProcessing: 0,\n shardsToProcess: [],\n nrCalculationJobs: 0,\n calculationJob: 0,\n tableSortBy: ['g0'],\n tableSortDesc: [],\n today: '',\n maxRows: 500000,\n selectedFields: [\n articleStatus.QTY_SHELF_STOCK,\n articleStatus.QTY_RECIEVED,\n articleStatus.QTY_SOLD,\n articleStatus.QTY_CONSIGNMENT,\n articleStatus.QTY_CHANGE,\n articleStatus.QTY_TRANSIT,\n articleStatus.QTY_END_SHELF_STOCK,\n ],\n selectedGroups: [],\n allCommands: [\n {\n command: 'SkuEditor',\n selectFields: 'no',\n message: 'skueditor',\n color: 'success',\n icon: 'mdi-table,stockinsight-edit',\n role: 'products-admin',\n },\n {\n command: 'StockTransfer',\n endpoint: 'MatrixEditor',\n selectFields: 'no',\n message: 'stocktransfer',\n color: 'success',\n icon: 'mdi-transfer',\n role: 'products-admin',\n },\n {\n command: 'MinimumStock',\n endpoint: 'MatrixEditor',\n selectFields: 'no',\n message: 'minimum stock',\n color: 'success',\n icon: 'mdi-transfer',\n role: 'products-admin',\n },\n {\n command: 'PriceTags',\n selectFields: 'one',\n message: 'printPricetags',\n color: 'success',\n icon: 'mdi-tag',\n fieldsToPickFrom: [articleStatus.QTY_END_STOCK, articleStatus.QTY_RECIEVED, articleStatus.QTY_TRANSIT],\n role: 'products',\n },\n ],\n fieldChoices: [\n { text: 'beginstockqty', value: articleStatus.QTY_STOCK, fieldType: 0 },\n { text: 'beginstockvalue', value: articleStatus.AMOUNT_STOCK, fieldType: 'currency' },\n { text: 'shelfstockqty', value: articleStatus.QTY_SHELF_STOCK, fieldType: 0 },\n { text: 'shelfstockvalue', value: articleStatus.AMOUNT_SHELF_STOCK, fieldType: 'currency' },\n { text: 'revalue', value: articleStatus.AMOUNT_REVALUATE, fieldType: 'currency' },\n { text: 'receivedqty', value: articleStatus.QTY_RECIEVED, fieldType: 0 },\n { text: 'receivedvalue', value: articleStatus.AMOUNT_RECIEVED, fieldType: 'currency' },\n { text: 'soldqty', value: articleStatus.QTY_SOLD, fieldType: 0 },\n { text: 'soldamountex', value: articleStatus.AMOUNT_SOLD_EXCL, fieldType: 'currency' },\n { text: 'soldcost', value: articleStatus.COSTPRICE_SOLD, fieldType: 'currency' },\n { text: 'changeqty', value: articleStatus.QTY_CHANGE, fieldType: 0 },\n { text: 'changevalue', value: articleStatus.AMOUNT_CHANGE, fieldType: 'currency' },\n { text: 'transitqty', value: articleStatus.QTY_TRANSIT, fieldType: 0 },\n { text: 'transitvalue', value: articleStatus.AMOUNT_TRANSIT, fieldType: 'currency' },\n { text: 'poqty', value: articleStatus.QTY_PO, fieldType: 0 },\n { text: 'povalue', value: articleStatus.AMOUNT_PO, fieldType: 'currency' },\n { text: 'pocompleteqty', value: articleStatus.QTY_PO_COMPLETE, fieldType: 0 },\n { text: 'pocompletevalue', value: articleStatus.AMOUNT_PO_COMPLETE, fieldType: 'currency' },\n { text: 'minstockqty', value: articleStatus.QTY_MINIMUM_STOCK, fieldType: 0 },\n { text: 'minstockvalue', value: articleStatus.AMOUNT_MINIMUM_STOCK, fieldType: 'currency' },\n { text: 'consignmentqty', value: articleStatus.QTY_CONSIGNMENT, fieldType: 0 },\n { text: 'consignmentvalue', value: articleStatus.AMOUNT_CONSIGNMENT, fieldType: 'currency' },\n { text: 'consignmentcost', value: articleStatus.COSTPRICE_CONSIGNMENT, fieldType: 'currency' },\n { text: 'maxreceivedate', value: articleStatus.MAX_RECIEVE_TIMESTAMP, fieldType: 'date' },\n { text: 'endstockqty', value: articleStatus.QTY_END_STOCK, fieldType: 0 },\n { text: 'endstockvalue', value: articleStatus.AMOUNT_END_STOCK, fieldType: 'currency' },\n { text: 'endshelfstockqty', value: articleStatus.QTY_END_SHELF_STOCK, fieldType: 0 },\n {\n text: 'endshelfstockvalue',\n value: articleStatus.AMOUNT_END_SHELF_STOCK,\n fieldType: 'currency',\n },\n { text: 'selloutpercentage', value: articleStatus.SELLOUT_PERCENTAGE, fieldType: 'percentage' },\n { text: 'roi', value: articleStatus.ROI, fieldType: 'currency' },\n { text: 'avgqty', value: articleStatus.QTY_AVG_STOCK, disabled: false, fieldType: 1 },\n { text: 'avgvalue', value: articleStatus.VALUE_AVG_STOCK, disabled: false, fieldType: 'currency' },\n {\n text: 'turnovervelocityqty',\n value: articleStatus.QTY_TURNOVER_VELOCITY,\n fieldType: 1,\n },\n {\n text: 'turnovervelocityamount',\n value: articleStatus.AMOUNT_TURNOVER_VELOCITY,\n fieldType: 1,\n },\n { text: 'profitability', value: articleStatus.PROFITABILITY, fieldType: 'percentage' },\n { text: 'margin', value: articleStatus.MARGIN, fieldType: 'percentage' },\n { text: 'profit', value: articleStatus.PROFIT, fieldType: 'currency' },\n { text: 'return', value: articleStatus.QTY_RETURN, fieldType: 0 },\n { text: 'returnvalue', value: articleStatus.AMOUNT_RETURN, fieldType: 'currency' },\n { text: 'returnpercentage', value: articleStatus.RETURN_PERCENTAGE, fieldType: 'percentage' },\n { text: 'discount', value: articleStatus.AMOUNT_SOLD_DISCOUNT, fieldType: 'currency' },\n { text: 'sold_before_returns_qty', value: articleStatus.QTY_SOLD_BEFORE_RETURNS, fieldType: 0 },\n\n { text: 'order_qty', value: articleStatus.QTY_ORDER, fieldType: 0, showForB2bChannels: true },\n { text: 'order_amount', value: articleStatus.AMOUNT_ORDER, fieldType: 'currency', showForB2bChannels: true },\n { text: 'order_cost', value: articleStatus.COSTPRICE_ORDER, fieldType: 'currency', showForB2bChannels: true },\n\n { text: 'reorder_qty', value: articleStatus.QTY_REORDER, fieldType: 0, showForB2bChannels: true },\n { text: 'reorder_amount', value: articleStatus.AMOUNT_REORDER, fieldType: 'currency', showForB2bChannels: true },\n { text: 'reorder_cost', value: articleStatus.COSTPRICE_REORDER, fieldType: 'currency', showForB2bChannels: true },\n\n { text: 'picklist_qty', value: articleStatus.QTY_PICKLIST, fieldType: 0, showForB2bChannels: true },\n { text: 'picklist_amount', value: articleStatus.AMOUNT_PICKLIST, fieldType: 'currency', showForB2bChannels: true },\n { text: 'picklist_cost', value: articleStatus.COSTPRICE_PICKLIST, fieldType: 'currency', showForB2bChannels: true },\n\n { text: 'b2b_sold_qty', value: articleStatus.QTY_B2B_SOLD, fieldType: 0, showForB2bChannels: true },\n { text: 'b2b_sold_amount', value: articleStatus.AMOUNT_B2B_SOLD, fieldType: 'currency', showForB2bChannels: true },\n { text: 'b2b_sold_cost', value: articleStatus.COSTPRICE_B2B_SOLD, fieldType: 'currency', showForB2bChannels: true },\n\n { text: 'b2b_resold_qty', value: articleStatus.QTY_B2B_RESOLD, fieldType: 0, showForB2bChannels: true },\n { text: 'b2b_resold_amount', value: articleStatus.AMOUNT_B2B_RESOLD, fieldType: 'currency', showForB2bChannels: true },\n { text: 'b2b_resold_cost', value: articleStatus.COSTPRICE_B2B_RESOLD, fieldType: 'currency', showForB2bChannels: true },\n\n { text: 'b2b_return_qty', value: articleStatus.QTY_B2B_RETURN, fieldType: 0, showForB2bChannels: true },\n { text: 'b2b_return_amount', value: articleStatus.AMOUNT_B2B_RETURN, fieldType: 'currency', showForB2bChannels: true },\n { text: 'b2b_return_cost', value: articleStatus.COSTPRICE_B2B_RETURN, fieldType: 'currency', showForB2bChannels: true },\n ],\n years: [],\n\n // The items key represents the associated case found in the getItems function\n groupChoices: [\n { text: 'sku.articleGroupSupplier', value: 'sku.articleGroupSupplier', items: '', reportViz: 'all' },\n { text: 'sku.brand', value: 'sku.brand', items: 'brand', reportViz: 'table,stockinsight,matrix,customertable' },\n { text: 'sku.collection', value: 'sku.collection', items: 'collection', reportViz: 'all' },\n { text: 'sku.collectionSupplier', value: 'sku.collectionSupplier', items: 'collectionSupplier', reportViz: 'table,stockinsight' },\n { text: 'sku.articleGroup', value: 'sku.articleGroup', items: 'articleGroup', reportViz: 'all' },\n { text: 'sku.articleCode', value: 'sku.articleCode', items: 'articleCode', reportViz: 'table,stockinsight,customertable' },\n { text: 'sku.articleCodeSupplier', value: 'sku.articleCodeSupplier', items: 'articleCodeSupplier', reportViz: 'table,stockinsight,customertable' },\n { text: 'sku.articleDescription', value: 'sku.articleDescription', items: 'articleDescription', reportViz: 'table,stockinsight,customertable' },\n { text: 'sku.colorCode', value: 'sku.colorCode', items: 'colorCode', reportViz: 'table,stockinsight,cards' },\n { text: 'sku.colorFamily', value: 'sku.colorFamily', items: 'colorFamily', reportViz: 'table,stockinsight,customertable' },\n { text: 'sku.colorSupplier', value: 'sku.colorSupplier', items: 'colorSupplier', reportViz: 'table,stockinsight' },\n { text: 'sku.colorCodeSupplier', value: 'sku.colorCodeSupplier', items: 'colorCodeSupplier', reportViz: 'table,stockinsight' },\n { text: 'sku.size', value: 'sku.size', items: 'size', reportViz: 'table,stockinsight,customertable' },\n { text: 'sku.subSize', value: 'sku.subSize', items: 'subSize', reportViz: 'table,stockinsight,customertable' },\n { text: 'transaction.ean', value: 'transaction.ean', items: '', reportViz: 'table,stockinsight' },\n { text: 'sku.campaigns', value: 'sku.campaigns', items: '', reportViz: 'table,stockinsight', fieldType: 'campaignKeys' },\n { text: 'sku.footprint', value: 'sku.FOOTPRINT', items: '', reportViz: 'table,stockinsight', showWhenPreference: 'articlestatus_footprint' },\n { text: 'sku.DTBGROUP', value: 'sku.DTBGROUP', items: '', reportViz: 'table,stockinsight' },\n { text: 'sku.BTEGROUP', value: 'sku.BTEGROUP', items: '', reportViz: 'table,stockinsight' },\n { text: 'Set', value: 'sku.set', items: '', reportViz: 'table,stockinsight' },\n { text: 'sku.FEDASGROUP', value: 'sku.FEDASGROUP', items: '', reportViz: 'table,stockinsight' },\n { text: 'sku.manufacturer', value: 'sku.manufacturer', items: '', reportViz: 'table,stockinsight' },\n { text: 'wh.name', value: 'wh.name', items: 'warehouse', reportViz: 'table,stockinsight,matrix,customertable' },\n { text: 'wh.code', value: 'wh.code', items: '', reportViz: 'table,stockinsight' },\n { text: 'transaction.docnr', value: 'transaction.docnr', items: '', reportViz: 'table,stockinsight,matrix,customertable', showWhenPreference: 'articlestatus_extended' },\n { text: 'transaction.agent', value: 'transaction.agent', items: '', reportViz: 'table,stockinsight,matrix,customertable', showWhenPreference: 'articlestatus_extended' },\n { text: 'transaction.vat', value: 'transaction.vat', items: '', reportViz: 'table,stockinsight', showWhenPreference: 'articlestatus_extended' },\n {\n text: 'transaction.type',\n value: 'transaction.type',\n items: '',\n reportViz: 'table,stockinsight',\n fieldType: 'transactionType',\n showWhenPreference: 'articlestatus_extended',\n },\n { text: 'transaction.time', value: 'transaction.time', items: '', reportViz: 'table,stockinsight', fieldType: 'date', showWhenPreference: 'articlestatus_extended' },\n { text: 'transaction.day', value: 'transaction.day', items: '', reportViz: 'table,stockinsight', showWhenPreference: 'articlestatus_extended' },\n { text: 'transaction.week', value: 'transaction.week', items: '', reportViz: 'table,stockinsight', showWhenPreference: 'articlestatus_extended' },\n { text: 'transaction.month', value: 'transaction.month', items: '', reportViz: 'table,stockinsight', showWhenPreference: 'articlestatus_extended' },\n { text: 'transaction.quarter', value: 'transaction.quarter', items: '', reportViz: 'table,stockinsight', showWhenPreference: 'articlestatus_extended' },\n { text: 'transaction.year', value: 'transaction.year', items: '', reportViz: 'table,stockinsight', showWhenPreference: 'articlestatus_extended' },\n { text: 'transaction.fId', value: 'transaction.fId', items: '', reportViz: 'table,stockinsight', showWhenPreference: 'articlestatus_extended' },\n { text: 'customer.lastName', value: 'customer.lastName', items: '', reportViz: 'customertable' },\n { text: 'customer.name', value: 'customer.name', items: '', reportViz: 'customertable' },\n { text: 'customer.legalname', value: 'customer.legalname', items: '', reportViz: 'customertable' },\n { text: 'customer.email', value: 'customer.email', items: '', reportViz: 'customertable' },\n { text: 'customer.mailing', value: 'customer.mailing', items: '', reportViz: 'customertable' },\n { text: 'customer.city', value: 'customer.city', items: '', reportViz: 'customertable' },\n { text: 'customer.zipcode', value: 'customer.zipcode', items: '', reportViz: 'customertable' },\n { text: 'customer.countrycode', value: 'customer.countrycode', items: '', reportViz: 'customertable' },\n { text: 'customer.phone', value: 'customer.phone', items: '', reportViz: 'customertable' },\n { text: 'customer.street', value: 'customer.street', items: '', reportViz: 'customertable' },\n { text: 'customer.streetnumber', value: 'customer.number', items: '', reportViz: 'customertable' },\n { text: 'customer.streetnumberaddition', value: 'customer.addition', items: '', reportViz: 'customertable' },\n ],\n}\n","const isQliqpoint = function(url) {\n return url.includes('qliqpoint.fashion') || url.includes('qliqpoint.lc')\n}\n\nconst isFashionUnited = function(url) {\n return url.includes('fashionunited.latestcollection')\n}\nconst isMplusKassa = function(url) {\n return url.includes('mpluskassa.latestcollection')\n}\n\nconst siteLogo = function(url: string): string {\n if (isQliqpoint(url)) return '/img/qplogotr.png'\n if (isFashionUnited(url)) return '/img/fashionunited.png'\n if (url.includes('swretail.latestcollection')) return '/img/swretail.png'\n if (url.includes('mpluskassa.latestcollection')) return '/img/mplus.png'\n return '/img/lclogotr.png'\n}\n\nconst siteWatermark = function(url: string): string {\n if (isQliqpoint(url)) return '/img/qplogotr.png'\n if (isFashionUnited(url)) return '/img/fashionunited.png'\n if (url.includes('swretail.latestcollection')) return '/img/swretail.png'\n if (url.includes('mpluskassa.latestcollection')) return '/img/mplus.png'\n return '/img/barcode-logo.png'\n}\n\nconst siteAnimation = function(url: string): string {\n if (isQliqpoint(url)) return '/Loading_Q.gif'\n return '/Loading_Barcode.gif'\n}\n\nconst teamViewerLink = function(url: string): string {\n if (isQliqpoint(url)) return 'https://custom.teamviewer.com/qliqpoint'\n if (url.includes('latestcollection.fashion') || url.includes('127.0.0.1')) return 'https://get.teamviewer.com/latestcollection'\n return ''\n}\n\nconst orderMethodForDomain = function(url: string): 'FASHION_UNITED' | 'MPLUSKASSA' | '' {\n if (isFashionUnited(url)) return 'FASHION_UNITED'\n if (isMplusKassa(url)) return 'MPLUSKASSA'\n return ''\n}\n\nconst domain = function(url: string): 'fashionUnited' | 'qliqpoint' | 'mpluskassa' | 'latestcollection' {\n if (isFashionUnited(url)) return 'fashionUnited'\n if (isQliqpoint(url)) return 'qliqpoint'\n if (isMplusKassa(url)) return 'mpluskassa'\n return 'latestcollection'\n}\n\nexport default {\n domain,\n orderMethodForDomain,\n siteAnimation,\n siteLogo,\n siteWatermark,\n teamViewerLink,\n}\n","module.exports = __webpack_public_path__ + \"media/success.06f3b04c.mp3\";","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./SignUp.vue?vue&type=style&index=0&id=ebc8fde8&prod&scoped=true&lang=css\"","var render = function render(){var _vm=this,_c=_vm._self._c;return (_vm.largeQty)?_c('span',{class:_vm.align},[_vm._v(\" \"+_vm._s(typeof _vm.amount == 'number' ? '€ ' + _vm.largeQtyVisualize(_vm.amount) : '')+\" \")]):_c('span',{class:_vm.align},[_vm._v(\" \"+_vm._s(typeof _vm.amount == 'number' ? '€ ' + _vm.amount.toFixed(2) : '')+\" \")])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <span v-if=\"largeQty\" :class=\"align\">\n {{ typeof amount == 'number' ? '€ ' + largeQtyVisualize(amount) : '' }}\n </span>\n <span v-else :class=\"align\">\n {{ typeof amount == 'number' ? '€ ' + amount.toFixed(2) : '' }}\n </span>\n</template>\n\n<script>\nimport { largeQtyVisualize } from '../functions/largeQtyVisualization'\nexport default {\n props: ['amount', 'alignleft', 'largeQty'],\n computed: {\n align() {\n if (this.alignleft) return 'text-left'\n else return 'text-right'\n },\n },\n methods: {\n largeQtyVisualize,\n },\n}\n</script>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./swCurrency.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./swCurrency.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./swCurrency.vue?vue&type=template&id=1d14210b\"\nimport script from \"./swCurrency.vue?vue&type=script&lang=js\"\nexport * from \"./swCurrency.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-container',{staticClass:\"ma-0 pa-0 hero\",attrs:{\"fill-height\":\"\",\"fluid\":\"\"}},[_c('nav',[_c('v-app-bar',{staticStyle:{\"background-color\":\"#0000\"},attrs:{\"app\":\"\",\"flat\":\"\"}},[_c('v-toolbar-title',[_c('v-img',{attrs:{\"width\":\"50px\",\"contain\":\"\",\"src\":require(\"../assets/barcode-logo.png\")}})],1),_c('v-spacer'),_c('div',[_c('v-menu',{attrs:{\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({staticStyle:{\"min-width\":\"26px !important\"},attrs:{\"color\":\"white\",\"data-test\":\"changeLanguageButton\",\"small\":\"\"}},'v-btn',attrs,false),on),[_vm._v(\" \"+_vm._s(_vm.language)+\" \")])]}}])},[_c('v-list',_vm._l((_vm.languages),function(item,index){return _c('v-list-item',{key:index,on:{\"click\":function($event){return _vm.setLanguage(item.value)}}},[_c('v-list-item-title',{attrs:{\"data-test\":`languageOption-${item.value}`}},[_vm._v(_vm._s(item.text))])],1)}),1)],1)],1)],1)],1),_c('v-row',{staticClass:\"signup-form\",attrs:{\"justify\":\"center\",\"align\":\"center\"}},[_c('v-card',{staticClass:\"pa-4\",class:_vm.formWidth,attrs:{\"elevation\":\"8\"}},[_c('v-card-title',[_vm._v(_vm._s(_vm.swT('signup')))]),_c('v-card-subtitle',[_vm._v(_vm._s(_vm.swT('create_lc_account')))]),_c('v-card-text',{staticClass:\"pa-2\"},[_c('v-form',{ref:\"form\",attrs:{\"lazy-validation\":\"\"},on:{\"submit\":function($event){$event.preventDefault();}},model:{value:(_vm.valid),callback:function ($$v) {_vm.valid=$$v},expression:\"valid\"}},[_c('v-text-field',{staticClass:\"px-1\",attrs:{\"outlined\":\"\",\"dense\":\"\",\"data-test\":\"CompanyNameField\",\"type\":\"text\",\"rules\":_vm.companyNameRules,\"label\":_vm.swT('company_name'),\"required\":\"\"},nativeOn:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.signUpRequest.apply(null, arguments)}},model:{value:(_vm.companyName),callback:function ($$v) {_vm.companyName=$$v},expression:\"companyName\"}}),_c('v-text-field',{staticClass:\"px-1\",attrs:{\"outlined\":\"\",\"dense\":\"\",\"data-test\":\"emailField\",\"type\":\"email\",\"rules\":_vm.emailRules,\"label\":_vm.swT('email'),\"required\":\"\"},nativeOn:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.signUpRequest.apply(null, arguments)}},model:{value:(_vm.email),callback:function ($$v) {_vm.email=$$v},expression:\"email\"}}),_c('v-row',{staticClass:\"py-4 d-flex justify-center\"},[_c('v-btn',{staticClass:\"mr-4\",attrs:{\"color\":\"primary\",\"data-test\":\"signupButton\"},on:{\"click\":_vm.signUpRequest}},[_vm._v(\" \"+_vm._s(_vm.swT('signup'))+\" \")])],1),_c('v-row',{staticClass:\"text-center message-box\"},[_c('v-spacer'),(_vm.message)?_c('p',{staticClass:\"text-center blue--text font-weight-bold message\"},[_vm._v(_vm._s(_vm.message))]):_vm._e(),(_vm.singleErrorMessage)?_c('p',{staticClass:\"text-center red--text font-weight-bold message\"},[_vm._v(_vm._s(_vm.singleErrorMessage))]):_vm._e(),(_vm.errors !== '')?_c('div',_vm._l((_vm.errors),function(error,idx){return _c('div',{key:idx},[_c('p',{staticClass:\"text-center red--text font-weight-bold message\"},[_vm._v(\" \"+_vm._s(error)+\" \")])])}),0):_vm._e(),_c('v-spacer')],1),_c('v-row',{staticClass:\"py-4 d-flex align-center justify-center\"},[_c('p',{staticClass:\"text-center mb-0\"},[_vm._v(\" \"+_vm._s(_vm.swT('already_have_account'))+\" \")]),_c('v-btn',{attrs:{\"color\":\"primary\",\"text\":\"\"},on:{\"click\":function($event){return _vm.$router.push('/login')}}},[_vm._v(_vm._s(_vm.swT('login')))])],1)],1)],1)],1)],1),(_vm.loadingStatus)?_c('v-overlay',{staticClass:\"overlay\"},[_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[_c('v-img',{attrs:{\"src\":_vm.animationUrl,\"height\":\"100%\",\"width\":\"100%\"}})],1)],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <v-container fill-height fluid class=\"ma-0 pa-0 hero\">\n <nav>\n <v-app-bar app flat style=\"background-color: #0000\">\n <v-toolbar-title>\n <v-img width=\"50px\" contain src=\"../assets/barcode-logo.png\"></v-img>\n </v-toolbar-title>\n <v-spacer></v-spacer>\n <div>\n <v-menu offset-y>\n <template v-slot:activator=\"{ on, attrs }\">\n <v-btn style=\"min-width: 26px !important\" color=\"white\" data-test=\"changeLanguageButton\" small v-bind=\"attrs\" v-on=\"on\">\n {{ language }}\n </v-btn>\n </template>\n <v-list>\n <v-list-item v-for=\"(item, index) in languages\" :key=\"index\" @click=\"setLanguage(item.value)\">\n <v-list-item-title :data-test=\"`languageOption-${item.value}`\">{{ item.text }}</v-list-item-title>\n </v-list-item>\n </v-list>\n </v-menu>\n </div>\n </v-app-bar>\n </nav>\n <v-row justify=\"center\" align=\"center\" class=\"signup-form\">\n <v-card :class=\"formWidth\" class=\"pa-4\" elevation=\"8\">\n <v-card-title>{{ swT('signup') }}</v-card-title>\n <v-card-subtitle>{{ swT('create_lc_account') }}</v-card-subtitle>\n <v-card-text class=\"pa-2\">\n <v-form ref=\"form\" v-model=\"valid\" lazy-validation @submit.prevent>\n <v-text-field\n v-model=\"companyName\"\n outlined\n dense\n data-test=\"CompanyNameField\"\n type=\"text\"\n :rules=\"companyNameRules\"\n class=\"px-1\"\n :label=\"swT('company_name')\"\n required\n @keyup.native.enter=\"signUpRequest\"\n ></v-text-field>\n\n <v-text-field\n v-model=\"email\"\n outlined\n dense\n data-test=\"emailField\"\n type=\"email\"\n :rules=\"emailRules\"\n class=\"px-1\"\n :label=\"swT('email')\"\n required\n @keyup.native.enter=\"signUpRequest\"\n ></v-text-field>\n\n <v-row class=\"py-4 d-flex justify-center\">\n <v-btn color=\"primary\" data-test=\"signupButton\" class=\"mr-4\" @click=\"signUpRequest\">\n {{ swT('signup') }}\n </v-btn>\n </v-row>\n <v-row class=\"text-center message-box\">\n <v-spacer></v-spacer>\n <p v-if=\"message\" class=\"text-center blue--text font-weight-bold message\">{{ message }}</p>\n <p v-if=\"singleErrorMessage\" class=\"text-center red--text font-weight-bold message\">{{ singleErrorMessage }}</p>\n <div v-if=\"errors !== ''\">\n <div v-for=\"(error, idx) in errors\" :key=\"idx\">\n <p class=\"text-center red--text font-weight-bold message\">\n {{ error }}\n </p>\n </div>\n </div>\n <v-spacer></v-spacer>\n </v-row>\n <v-row class=\"py-4 d-flex align-center justify-center\">\n <p class=\"text-center mb-0\">\n {{ swT('already_have_account') }}\n </p>\n <v-btn color=\"primary\" text @click=\"$router.push('/login')\">{{ swT('login') }}</v-btn>\n </v-row>\n </v-form>\n </v-card-text>\n </v-card>\n </v-row>\n <v-overlay v-if=\"loadingStatus\" class=\"overlay\">\n <transition name=\"fade\" mode=\"out-in\">\n <v-img :src=\"animationUrl\" height=\"100%\" width=\"100%\"></v-img>\n </transition>\n </v-overlay>\n </v-container>\n</template>\n\n<script>\nimport authentication from '@/functions/authentication'\nimport language from '@/functions/language'\nimport { swT } from '@/functions/i18n'\nimport consts from '@/store/consts'\nimport whitelabelFunctions from '@/functions/whitelabel'\n\nexport default {\n data() {\n return {\n swT,\n valid: true,\n companyName: '',\n companyNameRules: [(v) => !!v || swT('required')],\n email: '',\n emailRules: [(v) => !!v || swT('required'), (v) => /.+@.+\\..+/.test(v) || swT('email_must_be_valid')],\n language: this.$store.state.locale,\n languages: consts.allConfig.UISettings.language.items,\n message: '',\n errors: {},\n singleErrorMessage: '',\n loadingStatus: false,\n }\n },\n computed: {\n animationUrl() {\n return whitelabelFunctions.siteAnimation(window.location.href)\n },\n formWidth() {\n return this.$vuetify.breakpoint.smAndDown ? '' : 'wide'\n },\n },\n methods: {\n setLanguage(languageCode) {\n this.language = language.setLanguage(this.$store, languageCode)\n this.$store.state.beforeAuthLanguage = languageCode\n },\n async signUpRequest() {\n if (!this.$refs.form.validate()) return\n this.loadingStatus = true\n\n const response = await authentication.signUp(this.language, this.companyName, this.email)\n this.message = ''\n this.errors = {}\n this.singleErrorMessage = ''\n\n if (response.data.response == 'ok') {\n this.message = swT('check_mailbox_to_finish_process')\n this.errors = ''\n } else {\n if (typeof response.data.details !== 'undefined') {\n this.errors = response.data.details\n } else {\n this.singleErrorMessage = response.data.error\n }\n }\n\n this.loadingStatus = false\n },\n },\n}\n</script>\n\n<style scoped>\n.wide {\n min-width: 480px;\n}\n.hero {\n background: url('https://picsum.photos/1920/1080?random');\n background-size: cover;\n background-position: center;\n height: 100vh;\n}\n.signup-form {\n max-width: 100vw !important;\n margin: 0;\n}\n.message-box {\n max-width: 480px;\n}\n.overlay {\n background-color: rgba(0, 0, 0, 0.3);\n}\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./SignUp.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./SignUp.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./SignUp.vue?vue&type=template&id=ebc8fde8&scoped=true\"\nimport script from \"./SignUp.vue?vue&type=script&lang=js\"\nexport * from \"./SignUp.vue?vue&type=script&lang=js\"\nimport style0 from \"./SignUp.vue?vue&type=style&index=0&id=ebc8fde8&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"ebc8fde8\",\n null\n \n)\n\nexport default component.exports","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./swInfo.vue?vue&type=style&index=0&id=b1d02c52&prod&lang=scss&scoped=true\"","module.exports = __webpack_public_path__ + \"img/barcode-logo.ebc9ae04.png\";","import tools from './tools'\nimport axios from 'axios'\nimport consts from '../store/consts'\nimport cookies from 'js-cookie'\n\nconst authenticate = async function(username: string, password: string): Promise<object> {\n const urlFriendlyPassword = encodeURIComponent(password)\n const urlFriendlyUsername = encodeURIComponent(username)\n\n try {\n const loginRequest = await axios.get(`${consts.webServicesPath}/v1/login?username=${urlFriendlyUsername}&password=${urlFriendlyPassword}`)\n return loginRequest.data\n } catch (e) {\n return null\n }\n}\nconst validateOTP = async function(mfaToken: string, otp: string): Promise<object> {\n try {\n const loginRequest = await axios.get(`${consts.webServicesPath}/v1/validateOTP?mfaToken=${mfaToken}&otp=${otp}`)\n return loginRequest.data\n } catch (e) {\n return null\n }\n}\n\nconst signUp = async function(language: string, companyName: string, email: string): Promise<any> {\n try {\n const signUpRequest = await axios.post(\n `${consts.webServicesPath}/v1/signup`,\n {\n companyName: companyName,\n email: email,\n },\n {\n headers: {\n 'Accept-Language': language,\n },\n validateStatus: () => true,\n }\n )\n\n return signUpRequest\n } catch (error) {\n return null\n }\n}\n\nconst requestResetPassword = async function(language: string, email: string): Promise<any> {\n try {\n const resetPasswordRequest = await axios.post(\n `${consts.webServicesPath}/v1/resetpassword`,\n {\n email: email,\n },\n {\n headers: {\n 'Accept-Language': language,\n },\n validateStatus: () => true,\n }\n )\n return resetPasswordRequest\n } catch (error) {\n return null\n }\n}\n\nconst resetPassword = async function(language: string, key: string, username: string, password: string, confirmPassword: string): Promise<any> {\n const readableUsername = username.replace(/ /g, '+')\n\n try {\n const resetPasswordRequest = await axios.post(\n `${consts.webServicesPath}/v1/setnewpassword`,\n {\n key: key,\n username: readableUsername,\n password: password,\n confirmPassword: confirmPassword,\n },\n {\n headers: {\n 'Accept-Language': language,\n },\n validateStatus: () => true,\n }\n )\n return resetPasswordRequest\n } catch (error) {\n return null\n }\n}\n\nconst changeUsername = async function(language: string, userId: string, userName: string): Promise<any> {\n try {\n const changeUsernameRequest = await axios.post(\n `${consts.webServicesPath}/v1/changeUsername`,\n {\n userId: userId,\n username: userName,\n },\n {\n ...tools.apiHeaders(),\n validateStatus: () => true,\n headers: {\n 'Accept-Language': language,\n },\n }\n )\n return changeUsernameRequest.data\n } catch (error) {\n return null\n }\n}\n\nconst changeEmail = async function(language: string, currentPwd: string, newEmail: string): Promise<any> {\n try {\n const changeEmailRequest = await axios.post(\n `${consts.webServicesPath}/v1/changeEmail`,\n {\n currentPwd: currentPwd,\n newEmail: newEmail,\n },\n {\n ...tools.apiHeaders(),\n validateStatus: () => true,\n headers: {\n 'Accept-Language': language,\n },\n }\n )\n return changeEmailRequest.data\n } catch (error) {\n return null\n }\n}\n\nconst set2fa = async function(onOff: boolean, user: string, password: string): Promise<any> {\n try {\n const set2faRequest = await axios.post(\n `${consts.webServicesPath}/v1/set2fa`,\n {\n TwoFactorAuthEnabled: onOff,\n username: user,\n password: password,\n sid: cookies.get('sid'),\n },\n {\n validateStatus: () => true,\n }\n )\n return set2faRequest.data\n } catch (error) {\n return null\n }\n}\n\nconst verifyEmail = async function(email: string, key: string): Promise<any> {\n try {\n const verifyEmailRequest = await axios.post(\n `${consts.webServicesPath}/v1/verifyEmail`,\n {\n email: email,\n key: key,\n },\n {\n validateStatus: () => true,\n }\n )\n return verifyEmailRequest.data\n } catch (error) {\n return null\n }\n}\n\nexport default {\n authenticate,\n validateOTP,\n set2fa,\n signUp,\n requestResetPassword,\n resetPassword,\n changeUsername,\n changeEmail,\n verifyEmail,\n}\n","import userFunctions from '@/functions/users'\nimport { deepCopy } from '@softwear/latestcollectioncore'\nimport { routes } from '@/router/index'\nimport { RouteConfig } from 'vue-router'\nimport consts from '@/store/consts'\nimport whitelabel from '@/functions/whitelabel'\nimport whitelabelFunctions from '@/functions/whitelabel'\n\ninterface PageI {\n name: string\n link?: string\n sid?: boolean\n icon?: string\n role?: string\n forbidden?: string\n shortcut?: string\n beta?: boolean\n children?: PageI[]\n unreadCount?: number\n domains?: string\n showInContextFunction?: Function\n}\n\nconst pages: PageI[] | RouteConfig[] = [\n {\n name: 'dashboard',\n link: '/dashboard',\n icon: 'mdi-view-dashboard',\n role: 'dashboard-user,sw-admin',\n shortcut: 'Alt+F10',\n beta: true,\n },\n {\n name: 'brand_products',\n link: '/products',\n icon: 'mdi-tag-search',\n shortcut: 'Alt+F1',\n },\n {\n name: 'skus',\n icon: 'mdi-table-edit',\n role: 'products-admin,products-user,products-dataprovider_admin',\n link: '/skueditor',\n },\n {\n name: 'masterdata',\n icon: 'mdi-domain',\n role: 'products-dataprovider_admin,sw-admin',\n link: '/skueditor?masterdata=true&filter=brand==\"masterdata\"',\n },\n {\n name: 'consumers',\n link: '/consumers',\n icon: 'mdi-account-group',\n role: 'impersonator',\n shortcut: 'Alt+F4',\n },\n {\n name: 'customers',\n link: '/customers',\n icon: 'mdi-account-group',\n role: 'sales',\n beta: true,\n },\n { name: 'transit', link: '/transit', icon: 'mdi-transfer', role: 'sw' },\n {\n name: 'sell',\n icon: 'mdi-barcode',\n children: [\n {\n name: 'pos',\n link: 'https://pos.qliqpoint.store',\n sid: true,\n icon: 'mdi-cash-register',\n role: 'pos-device',\n domains: 'qliqpoint',\n shortcut: 'Alt+F9',\n },\n {\n name: 'webshop',\n link: 'https://my.shopsettings.com/p/softwear',\n icon: 'mdi-cloud-sync',\n role: 'ecwid_link-show_link',\n },\n ],\n },\n {\n name: 'transactions',\n icon: 'mdi-text-box-search',\n children: [\n {\n name: 'purchase-orders',\n link: '/purchaseorders',\n icon: 'mdi-clipboard-list-outline',\n role: 'products-purchase',\n },\n {\n name: 'receivings',\n link: '/receivings',\n icon: 'mdi-clipboard-arrow-down',\n role: 'logistics-receivings_user',\n },\n {\n name: 'invoices',\n link: '/invoices',\n icon: 'mdi-receipt-text-outline',\n role: 'owner',\n },\n {\n name: 'mutations',\n link: '/transactions?type=mutations',\n icon: 'mdi-package-variant',\n role: 'sw',\n },\n {\n name: 'transits',\n link: '/transit',\n icon: 'mdi-transfer',\n beta: true,\n role: 'owner',\n },\n {\n name: 'sales',\n link: '/transactions?type=sales',\n icon: 'mdi-cash-register',\n role: 'sw',\n },\n {\n name: 'salesOrders',\n link: '/salesorders',\n icon: 'mdi-file-document-outline',\n role: 'sales-admin',\n },\n {\n name: 'stocktaking',\n link: '/inventory',\n icon: 'mdi-package-variant',\n beta: true,\n role: 'products-admin,products-user',\n },\n {\n name: 'mutations',\n link: '/inventory?type=mutations',\n icon: 'mdi-package-variant-closed',\n beta: true,\n role: 'products-admin,products-user',\n },\n {\n name: 'B2CSales',\n link: '/b2csales',\n icon: 'mdi-cash-register',\n beta: true,\n role: 'owner',\n },\n ],\n },\n {\n name: 'reports',\n icon: 'mdi-chart-bar',\n children: [\n {\n name: 'stock',\n link: consts.defaultURLs.STOCK_LINK,\n icon: 'mdi-package-variant',\n role: 'products-report',\n shortcut: 'Alt+F6',\n },\n {\n name: 'articlestatus',\n link: consts.defaultURLs.ARTICLE_STATUS_LINK,\n icon: 'mdi-table-eye',\n role: 'products-report',\n shortcut: 'Alt+F7',\n },\n {\n name: 'topx',\n link: consts.defaultURLs.TOPX_LINK,\n icon: 'mdi-order-alphabetical-descending',\n role: 'products-report',\n shortcut: 'Alt+F8',\n },\n {\n name: 'businessinsight',\n link: consts.defaultURLs.STOCK_INSIGHT_LINK,\n icon: 'mdi-chart-box-plus-outline',\n role: 'products-report',\n beta: true,\n },\n {\n name: 'salespercustomer',\n link: consts.defaultURLs.SALES_PER_CUSTOMER_LINK,\n icon: 'mdi-account-group',\n role: 'products-report',\n beta: true,\n },\n ],\n },\n {\n name: 'tenants',\n link: '/tenants',\n icon: 'mdi-account-group',\n role: 'sw',\n },\n {\n name: 'sysadmin',\n icon: 'mdi-auto-fix',\n role: 'sw',\n children: [\n {\n name: 'sizeordering',\n link: '/sizeordering',\n icon: 'mdi-order-numeric-ascending',\n role: 'sw',\n },\n ],\n },\n { name: 'dba', link: '/dba', icon: 'mdi-database-cog', role: 'sw' },\n {\n name: 'help',\n icon: 'mdi-account-question',\n role: 'products',\n children: [\n {\n name: 'teamviewer',\n link: whitelabel.teamViewerLink(window.location.href),\n icon: 'mdi-teamviewer',\n showInContextFunction: () => whitelabel.teamViewerLink(window.location.href) != '',\n },\n {\n name: 'apidocumentation',\n link: 'https://developer.latestcollection.com/',\n icon: 'mdi-api',\n },\n {\n name: 'faq',\n link: '/FAQ',\n icon: 'mdi-frequently-asked-questions',\n role: 'sw',\n },\n {\n name: 'glossary',\n link: '/Glossary',\n icon: 'mdi-frequently-asked-questions',\n },\n {\n name: 'keyboardshortcuts',\n link: '/keyboardshortcuts',\n icon: 'mdi-keyboard-settings',\n shortcut: 'F1',\n },\n {\n name: 'documentation',\n link: '/docs',\n icon: 'mdi-file-document-multiple',\n role: 'sw',\n },\n {\n name: 'about',\n link: '/about',\n icon: 'mdi-information',\n },\n ],\n },\n {\n name: 'settings',\n icon: 'mdi-cog',\n children: [\n {\n name: 'preferences',\n link: '/preferences',\n icon: 'mdi-application-cog',\n role: 'products,sw,lc-data-only',\n shortcut: 'Alt+F2',\n },\n {\n name: 'layouts',\n link: '/layouts',\n icon: 'mdi-file-document-edit',\n role: 'owner,sw',\n },\n { name: 'campaigns', link: '/campaigns', icon: 'mdi-sale', role: 'owner,products-dataprovider_admin' },\n { name: 'warehouse', link: '/warehouse', icon: 'mdi-store-cog', role: 'owner,lc-data-only' },\n { name: 'tools', link: '/tools', icon: 'mdi-hammer-wrench', role: 'products,sw', forbidden: 'products-demo' },\n { name: 'eventlog', link: '/eventlog', icon: 'mdi-sine-wave', role: 'products,sw', forbidden: 'products-demo' },\n { name: 'partnertokens', link: '/partnertokens', icon: 'mdi-key-chain', role: 'products-dataprovider_admin,sw', forbidden: 'products-demo' },\n ],\n },\n {\n name: 'inbox',\n link: '/inbox',\n icon: 'mdi-tray-full',\n role: 'sw,products-admin',\n unreadCount: 0,\n },\n {\n name: 'storybook',\n link: '/storybook',\n icon: 'mdi-family-tree',\n role: 'sw',\n },\n {\n name: 'Load balancer',\n icon: 'loadbalancer-icon',\n role: 'sw-admin',\n children: [\n {\n name: 'Tenants',\n link: '/loadbalancer?type=tenants&tenantid=',\n icon: 'mdi-account-box',\n },\n {\n name: 'Servers',\n link: '/loadbalancer?type=servers&serverindex=',\n icon: 'mdi-server',\n },\n {\n name: 'Config',\n link: '/loadbalancer?type=config',\n icon: 'mdi-cog',\n },\n ],\n },\n {\n name: 'account',\n link: '/account',\n icon: 'mdi-account-cog',\n role: 'products,lc-data-only',\n },\n {\n name: 'brandMetadata',\n link: '/brandMetadata',\n icon: 'mdi-tag-edit',\n role: 'sw-admin',\n },\n {\n name: 'organization',\n link: '/organization',\n icon: 'mdi-office-building-cog',\n role: 'sw-admin,owner,lc-data-only',\n },\n {\n name: 'logout',\n link: '/logout',\n icon: 'mdi-logout',\n },\n]\n\n/*\n * Combines routes and main menu items\n * Routes that have no menu correspondence are being added on the top level array\n * This allows us to take advantage of the existing infrastructure that calculates the menu and the route guards rules\n * We clean the routes on the view, removing the routes that are not menu items, so that the main menu is not polluted\n * Now we can add our roles to the router route definitions\n */\nconst swRoutes = routes.reduce((authRoutes, route) => {\n const pageAndRouteMatchIndex = authRoutes.findIndex((page) => page.link === route.path)\n if (pageAndRouteMatchIndex !== -1) {\n // @ts-ignore\n authRoutes[pageAndRouteMatchIndex] = { ...route, ...authRoutes[pageAndRouteMatchIndex] }\n return authRoutes\n }\n let childPageAndRouteMatchIndeces\n authRoutes.forEach((page, index) => {\n if (page.children) {\n const childIndex = page.children.findIndex((page) => page.link === route.path)\n if (childIndex !== -1) childPageAndRouteMatchIndeces = [index, childIndex]\n }\n })\n // @ts-ignore\n if (childPageAndRouteMatchIndeces?.length === 2) {\n // @ts-ignore\n authRoutes[childPageAndRouteMatchIndeces[0]].children[childPageAndRouteMatchIndeces[1]] = {\n ...route,\n ...authRoutes[childPageAndRouteMatchIndeces[0]].children[childPageAndRouteMatchIndeces[1]],\n }\n return authRoutes\n }\n // fallthrough for routes with no match on the main menu\n // we mark them as `routeOnly` to clean them out when interpreting the main menu\n authRoutes.push({\n ...route,\n link: route.path,\n // @ts-ignore\n routeOnly: true,\n })\n return authRoutes\n}, pages)\n\nfunction authorizedPagesList(userRoles: string[], showBeta: boolean): PageI[] {\n const authorizedPages = []\n const currentDomain = whitelabelFunctions.domain(window.location.href)\n swRoutes.forEach((e) => {\n if (e.beta && !showBeta) return\n if (e.domains !== undefined && !e.domains.includes(currentDomain)) return\n if (e.forbidden !== undefined && userFunctions.hasRole(userRoles, e.forbidden))\n // blacklisting a page propagates to children\n return\n const children = []\n if (e.children) {\n e.children.forEach((c: any) => {\n if (c.beta && !showBeta) return\n if (c.domains !== undefined && !c.domains.includes(currentDomain)) return\n\n if (c.forbidden !== undefined && userFunctions.hasRole(userRoles, c.forbidden)) return\n if (userFunctions.hasRole(userRoles, c.role)) children.push(c)\n })\n }\n if (userFunctions.hasRole(userRoles, e.role)) {\n if (!e.children) authorizedPages.push(e)\n if (e.children && children.length > 0) {\n const newE = deepCopy(e)\n newE.children = children\n authorizedPages.push(newE)\n }\n }\n })\n return authorizedPages\n}\n\nexport { pages, authorizedPagesList, PageI }\n","import mitt from 'mitt'\nconst emitter = mitt()\n\nexport const eventBus = {\n $on: emitter.on,\n $off: emitter.off,\n $emit: emitter.emit,\n all: emitter.all,\n}\n","import { SkuI, ProductI, AttributeI, vatCategoryE, MarkedSkuI, MatrixI, RowI, ColorI, BrandSettingI } from '@softwear/latestcollectioncore'\nimport globalStore from '../store/globalStore'\nimport tools from '../functions/tools'\nimport userFunctions from '../functions/users'\nimport { hashBrand, deepCopy, sizeToMap } from '@softwear/latestcollectioncore'\nimport { markRaw } from 'vue'\n\nfunction isBrandEqual(hashedBrand: string, collection: string, aliases: string[]) {\n return hashedBrand == collection || aliases?.includes(hashedBrand)\n}\nfunction isSkuOfBrand(sku: SkuI, collection: string, aliases: string[]) {\n const hashedBrand = sku.BRANDHASH || hashBrand(sku.brand)\n return isBrandEqual(hashedBrand, collection, aliases)\n}\nfunction getBrandSettings(brandOrHash: string, brands: BrandSettingI[]): BrandSettingI {\n const hashedBrand = hashBrand(brandOrHash)\n return brands.find((brand) => isBrandEqual(hashedBrand, brand.collection, brand.aliases))\n}\n\nfunction indexKey(color: string, subColor: string, size: string): string {\n return color + '\\t' + (subColor || '') + '\\t' + size\n}\n\n/**\n * Return all the different attribute names and values from the skus array\n * This list is usefull in UI's where a user needs to pick an existing attribute name.\n *\n * @private\n * @param {Array<SkuI>} skus Array of sku objects\n */\nfunction getAttributes(skus: Array<SkuI>): Array<AttributeI> {\n const attributeNames: Array<string> = []\n skus.forEach(function(sku: SkuI) {\n Object.keys(sku).forEach((k) => {\n if (k[0] == '_' && k[1] != '_') {\n const attributeName = k.substring(1)\n if (attributeName != null && attributeName != undefined && attributeNames.indexOf(attributeName) == -1) attributeNames.push(attributeName)\n }\n })\n })\n const attributes = {}\n attributeNames.forEach((attribute) => {\n attributes[attribute] = []\n })\n skus.forEach(function(sku: SkuI) {\n Object.keys(sku).forEach((k) => {\n if (k[0] == '_' && k[1] != '_') {\n const attributeName = k.substring(1)\n if (sku[k] != null && sku[k] != undefined && attributes[attributeName].indexOf(sku[k]) == -1) attributes[attributeName].push(sku[k])\n }\n })\n })\n\n const attributesArray: Array<unknown> = []\n for (const attribute in attributes) {\n if (Object.prototype.hasOwnProperty.call(attributes, attribute)) {\n attributesArray.push({ key: attribute, value: attributes[attribute] })\n }\n }\n attributesArray.sort((a: any, b: any) => (a.key < b.key ? -1 : 1))\n\n const sortedAttributes = {} as Array<AttributeI>\n attributesArray.forEach((e: any) => (sortedAttributes[e.key] = e.value.sort()))\n return sortedAttributes\n}\n\nconst buildSizeIndex = (sizeOrderingData, mapSubSizes: boolean) => (sku) => {\n // Determine horizontal sizeIndex so we can display sizes in a matrix.\n // The sizeIndex is a 5 digit string. sizeIndex + size is used to order sizes.\n // For numerical sizes, sizeIndex is a leftpadded string of the size itself.\n // For other sizes, we lookup the size in the sizeOrdering map. If it exists, it's sizeIndex is listed there\n // along with optional size/subsize splitting values.\n // If we can't find it, we look wether there is a map rule for the longest prefix of our size.\n // When found, that sizeIndex will be used but not the splitting data. This works well with polutted sizes\n // like XS**** etc...\n if (!sku.size) return\n if (sku.mainSize) return\n const rawSize = sizeToMap(sku.size)\n let prefix = rawSize\n let mappedIndex = null\n do {\n mappedIndex = sizeOrderingData[prefix]\n if (mappedIndex != undefined) {\n sku.sizeIndex = mappedIndex.order || '00000'\n const sizeFound = mapSubSizes && prefix == rawSize && mappedIndex.size\n if (sizeFound) {\n sku.mainSize = mappedIndex.size\n if (mappedIndex.subSize) {\n sku.subSize = mappedIndex.subSize\n sku.size = mappedIndex.size + mappedIndex.subSize\n } else {\n sku.size = mappedIndex.size\n }\n } else {\n sku.mainSize = rawSize\n }\n break\n }\n prefix = prefix.slice(0, -1)\n } while (prefix)\n if (!mappedIndex) {\n if (!sku.size) {\n sku.mainSize = rawSize\n sku.size = rawSize\n }\n if (!sku.mainSize) sku.mainSize = sku.size\n if (!isNaN(parseInt(prefix))) sku.sizeIndex = tools.padLeft(rawSize, 5, '0')\n }\n}\n\nfunction latestCollectionBrandSkusNotInTenant(latestCollectionBrandSkus: MarkedSkuI[], allSkusObject: object): MarkedSkuI[] | SkuI[] {\n // Return latestCollection skus that the tenant doesn't have\n\n const lcSkus = latestCollectionBrandSkus.filter((latestCollectionSku: SkuI) => !allSkusObject[latestCollectionSku.barcode || latestCollectionSku.id])\n // There is no harm in reusing the objects in the brand collection for the tenant's own copy since the tenant cannot change the brand collection\n // In case of a sowftwear-admin, it\\s the other way around.\n lcSkus.forEach((sku: any) => {\n sku.barcode = sku.id\n delete sku.id\n sku.active = true\n sku.articleCodeSupplier = sku.articleCodeSupplier || sku.articleCode\n sku.source = 'latestCollection'\n sku.mainColorCode = ''\n sku.mainColorDescription = ''\n sku.skuActive = true\n sku.colorSupplier = sku.colorSupplier || sku.colorFamily\n })\n return lcSkus\n}\n\nfunction sortSkusByCollection(skus) {\n const collectionOrder = function(o: SkuI) {\n const year = o.collection?.substring(0, 2) || '00'\n if (year > '50') return '' + parseInt(year)\n return '' + (99 - parseInt(year))\n }\n const sortExpression = function(o: SkuI) {\n return (o.images ? '0' : '1') + collectionOrder(o) + o.articleCode + '.' + o.colorFamily + '.' + o.sizeIndex + '.' + o.size + '.' + o.subColorCode\n }\n skus.sort((a: SkuI, b: SkuI) => {\n return sortExpression(a) < sortExpression(b) ? -1 : 1\n })\n return skus\n}\n\nconst articleGrouperExpression = function(sku: SkuI): string {\n return sku.articleCodeSupplier\n}\n/**\n * Return all products from a given brand from the global skus.\n *\n * Group sku's into product objects.\n * Add all sku's of a product to its SKUS array.\n * Add all sizes of a product to its SIZES array.\n * Add all colors of a product to its COLORS array.\n *\n * @private\n * @param {string} brand brand is used as a filter on the global skus array\n */\nfunction getBrandProducts(brandSkus: MarkedSkuI[], sizeOrdering, mapSubSizes: boolean): ProductI[] {\n if (brandSkus.length == 0) return []\n brandSkus.forEach((sku: SkuI) => buildSizeIndex(sizeOrdering, mapSubSizes)(sku))\n // Order the skus by articleCode/color/sizeIndex\n // Is this sorting needed?\n brandSkus = sortSkusByCollection(brandSkus)\n\n // Get 'products' from skus by selecting the unique values at the articleCode property\n const t = {}\n const uniqueBrandProducts = brandSkus.filter((e: SkuI) => {\n const key = articleGrouperExpression(e)\n return !(t[key] = key in t)\n })\n\n // Make a deep copy so we can safely change the 'products'\n // (which are in essence just one of the skus's of a product)\n const brandProducts = deepCopy(uniqueBrandProducts)\n\n // Add sku's to the product they belong\n let currentArticleGrouperValue, currentProduct\n for (const sku of brandSkus) {\n const articleGrouperValue = articleGrouperExpression(sku)\n if (currentArticleGrouperValue != articleGrouperValue) {\n currentArticleGrouperValue = articleGrouperValue\n currentProduct = brandProducts.find((sku: SkuI) => articleGrouperExpression(sku) == currentArticleGrouperValue)\n if (!currentProduct.SKUS) currentProduct.SKUS = []\n }\n currentProduct.SKUS.push(sku)\n if (sku.SOURCE == 'latestCollection') currentProduct.source = 'latestCollection'\n if (sku.usedByTenant) currentProduct.usedByTenant = true\n }\n\n brandProducts.forEach(function(p: any) {\n p.IMAGES =\n p.images?.split(',').map((i) => {\n return { name: i, url: i }\n }) || []\n p.active = true\n })\n\n const typedBrandProducts = (brandProducts as unknown) as ProductI[]\n // Side effect\n globalStore.setBrandProducts(typedBrandProducts)\n\n return typedBrandProducts\n}\n\n/**\n * Return an empty color object\n *\n * @private\n */\nfunction newColor() {\n return {\n color: '',\n subColors: [],\n IMAGES: [],\n colorCodeSupplier: '',\n colorSupplier: '',\n newColor: true,\n }\n}\n\nfunction processProduct(product, grouper = '') {\n const hashtable = {}\n // Loop through each SKU in the productSlug array\n product.SKUS.forEach((sku) => {\n // Create the unique identifier for grouping\n const key = grouper ? `${sku.colorFamily}__${sku.size}__${sku[grouper]}` : `${sku.colorFamily}__${sku.size}`\n\n // If the key doesn't exist in the hashtable, add it\n if (!hashtable[key]) {\n hashtable[key] = []\n }\n\n hashtable[key].push(sku)\n })\n // Add the duplicates object to the product\n // product.SKUS = xskus\n // @ts-ignore\n product.DUPLICATES = Object.fromEntries(Object.entries(hashtable).filter(([key, value]) => value.length > 1))\n\n return product\n}\n/**\n * Augment the given product object with details from the underlying skus.\n * The given product can be an existing product or one sku of a product.\n *\n * @param product\n */\nfunction getProductDetails(product: ProductI, grouperName, grouperList = ['']): ProductI {\n if (product.ATTRIBUTES == undefined) {\n product.ATTRIBUTES = {}\n // Attributes, as all properties, are stored redundantly at the SKU level, however, we assume their values are the same on all sku's.\n // That's why, in order to collect them at the productlevel, we collect them from the first sku in our list\n if (product.SKUS.length > 0) {\n Object.keys(product.SKUS[0]).forEach((k) => {\n if (k[0] == '_' && k[1] != '_') product.ATTRIBUTES[k.substring(1)] = product.SKUS[0][k]\n })\n }\n }\n if (product.SKUS.length > 0 && product.pricetagLayouts) product.pricetagLayouts = product.SKUS[0].pricetagLayouts.split(',')\n if (product.SIZES == undefined) {\n const sizes = product.SKUS.map((e) => ({ size: e.mainSize, sizeIndex: e.sizeIndex }))\n sizes.sort((a, b) => (a.sizeIndex + a.size < b.sizeIndex + b.size ? -1 : 1))\n product.SIZES = []\n sizes.forEach((s) => {\n if (!product.SIZES.includes(s.size)) product.SIZES.push(s.size)\n })\n }\n if (product.COLORS == undefined) {\n //\n // Collect all unique colors in this product.\n // We use colorFamily as the key, if it's empty, use mainColorDescription instead\n // Within each color, collect the corresponding subcolors (usually CUPs or LENGTHs)\n // It's not sufficient to discriminate on the colorFamily since there might be multiple copies with identical\n // values. When we detect that, we suffix the colorFamily with (xxx) as to make them unique\n //\n product.COLORS = []\n const colorObject = {}\n const hasSubSizes = product.SKUS.find((s) => s.subSize)\n if (hasSubSizes) {\n product.SKUS.forEach((s) => {\n if (!s.subSize) s.subSize = ' '\n })\n }\n for (const sku of product.SKUS) {\n const colorKey = sku.colorFamily\n if (!colorObject[colorKey]) {\n colorObject[colorKey] = {\n color: sku.colorFamily,\n subColors: [],\n IMAGES: sku.images?.split(',').map((image) => {\n return { name: image, url: image }\n }),\n SUBCOLORsizeSupplier_COMBIS: [],\n colorCodeSupplier: '',\n colorSupplier: '',\n }\n }\n if (!colorObject[colorKey].SUBCOLORsizeSupplier_COMBIS.includes(sku.subColorCode + '.' + sku.size)) {\n colorObject[colorKey].SUBCOLORsizeSupplier_COMBIS.push(sku.subColorCode + '.' + sku.size)\n }\n if (sku.subSize && colorObject[colorKey].subColors.indexOf(sku.subSize) == -1) {\n colorObject[colorKey].subColors.push(sku.subSize)\n }\n colorObject[colorKey].colorCodeSupplier = sku.colorCodeSupplier\n colorObject[colorKey].colorSupplier = sku.colorSupplier\n }\n\n processProduct(product, grouperName)\n\n for (const key in colorObject) {\n colorObject[key].subColors.sort()\n product.COLORS.push({\n color: colorObject[key].color,\n subColors: colorObject[key].subColors,\n IMAGES: colorObject[key].IMAGES,\n colorCodeSupplier: colorObject[key].colorCodeSupplier,\n colorSupplier: colorObject[key].colorSupplier,\n })\n }\n }\n if (product.INDEX == undefined) {\n // Build an index to find barcodes based on color/subSize/mainSize\n // We need that to quickly find barcodes while looping through sizes and color\n\n product.INDEX = {}\n product.SKUS.forEach((s) => {\n if (grouperList[0].length) {\n if (!s[grouperName]) s[grouperName] = ''\n }\n if (grouperName) product.INDEX[`${indexKey(s.colorFamily, s.subSize, s.mainSize)}\\t${s[grouperName] || ''}`] = s.barcode\n else product.INDEX[indexKey(s.colorFamily, s.subSize, s.mainSize)] = s.barcode\n })\n }\n return product\n}\n\nfunction newSku(color = { colorCodeSupplier: '', colorSupplier: '', color: '' }, size = '', sizeIndex = '', subColor = ''): SkuI {\n // We don't add id and barcode, the server will do that for us\n return {\n barcode: '',\n articleCode: '',\n articleDescription: '',\n pricetagLayouts: '',\n brand: '',\n articleGroup: '',\n groups: [],\n vat: 0,\n vatCategory: vatCategoryE.HIGH,\n mainColorCode: '',\n price: 0,\n buyPrice: 0,\n suggestedRetailPrice: 0,\n salePrice: 0,\n collection: '',\n active: true,\n skuActive: true,\n warehouseLocation: '',\n colorCodeSupplier: color.colorCodeSupplier,\n colorSupplier: color.colorSupplier,\n colorFamily: color.color,\n primary: true,\n size: size,\n mainSize: size,\n // @ts-ignore\n sizeIndex: sizeIndex,\n subColorDescription: subColor,\n subColorCode: subColor,\n subSize: subColor,\n }\n}\n\n/**\n * Returns an array of brand objects combining all the LatestCollection brands and the tenant-defined brands that are unknown to LatestCollection.\n * Apply tenant-specific settings.\n */\nfunction combineBrands(state: any, skus: Array<any>) {\n const tenant = state.user.current_tenant\n const isDataOnly = userFunctions.hasRole(state.user.roles[tenant], 'lc-data-only')\n\n const allBrands = globalStore\n .getLatestCollectionArray('metabrandsetting')\n .filter((e: any) => {\n // return true\n if (!isDataOnly) return true\n return e.gln && e.gln != '' && e.gln.length == 13\n })\n .map((e: any) => ({ source: 'latestCollection', usedByTenant: false, ...e }))\n const tenantBrands = tools.getUniqueValues(skus.map((e) => e.brand || 'unknown'))\n for (const brand of tenantBrands) {\n const brandHash = hashBrand(brand)\n const lcBrand = allBrands.find((brand) => isBrandEqual(brandHash, brand.collection, brand.aliases))\n if (lcBrand == undefined) {\n allBrands.push({\n name: brand,\n id: brand,\n collection: brandHash,\n source: 'tenant',\n usedByTenant: true,\n })\n } else {\n lcBrand.usedByTenant = true\n lcBrand.hideBrand = false\n }\n }\n if (userFunctions.hasRole(state.user.roles[tenant], 'products-dataprovider_admin')) {\n // For dataProviderAdmin's: apply dataProviderBrandSettings\n globalStore.getLatestCollectionArray('dataproviderbrandsetting').forEach((brandSetting) => {\n const brand = allBrands.find(({ id }) => id == brandSetting.id.split(':')[0])\n if (brand) {\n brand.dataProvider = brandSetting.dataProvider\n brand.propertyMapping = deepCopy(brandSetting.propertyMapping)\n }\n })\n } else if (userFunctions.hasRole(state.user.roles[tenant], 'sw')) {\n // Apply meta brand settings\n globalStore.getLatestCollectionArray('metabrandsetting').forEach((brandSetting) => {\n const brand = allBrands.find(({ id }) => id == brandSetting.id)\n if (brand) {\n brand.propertyMapping = deepCopy(brandSetting.propertyMapping)\n }\n })\n } else {\n // Apply tenant defined brand settings to our brands array\n globalStore.getLatestCollectionArray('tenantbrandsetting').forEach((brandSetting) => {\n const brand = allBrands.find(({ id }) => id == brandSetting.id)\n if (brand) {\n brand.discount = brandSetting.discount\n brand.calculation = brandSetting.calculation\n brand.orderMethod = brandSetting.orderMethod\n brand.lastSync = brandSetting.lastSync || 0\n brand.lastAutomatedSync = brandSetting.lastAutomatedSync || 0\n brand.propertyMapping = deepCopy(brandSetting.propertyMapping)\n brand.orderMethodConfiguration = deepCopy(brandSetting.orderMethodConfiguration)\n brand.footprint = brandSetting.footprint\n brand.freeShippingThreshold = brandSetting.freeShippingThreshold\n brand.useConsignmentInventory = brandSetting.useConsignmentInventory\n }\n })\n }\n allBrands.sort((a, b) => {\n return (a.source == 'latestCollection' ? '0' : '1') + (a.usedByTenant ? '0' : '1') + a.name <\n (b.source == 'latestCollection' ? '0' : '1') + (b.usedByTenant ? '0' : '1') + b.name\n ? -1\n : 1\n })\n\n // filter out hidden brand\n if (tenant != 'master' || !userFunctions.hasRole(state.user.roles[tenant], 'sw')) {\n return allBrands.filter((brand) => brand.hideBrand == false || brand.hideBrand == undefined)\n } else {\n return allBrands\n }\n}\n\nfunction buildProductIndexedObject(skus) {\n return skus.reduce((products, sku) => {\n products[`${sku.brand}__${sku.articleCodeSupplier}`] = (products[`${sku.brand}__${sku.articleCodeSupplier}`] || []).concat(markRaw(sku))\n return products\n }, {})\n}\n\n/**\n * Return all skus from a given brand from the tenant skus + brand skus.\n * This function started out using as series of .map. It generated so many new objects that memory consumption and GC started to play up real bad.\n * The .forEach replacements speeds stuff up x2\n * Additionally, we use Vue's MarkRaw here to prevent these sku's to become reactive which would grind things to a halt on large arrays\n **/\nfunction getBrandSkus(brandSetting: BrandSettingI): MarkedSkuI[] | SkuI[] {\n const latestCollectionBrandSkus = globalStore.getLatestCollectionObject('selectedbrand')\n const allSkus = markRaw([])\n globalStore\n .getLatestCollectionArray('sku')\n .filter((sku: SkuI) => isSkuOfBrand(sku, brandSetting?.collection, brandSetting?.aliases) || latestCollectionBrandSkus[sku.barcode || sku.id])\n .forEach((sku) => {\n sku.source = latestCollectionBrandSkus[sku.barcode || sku.id] ? 'latestCollection' : 'tenant'\n sku.barcode = sku.id\n sku.usedByTenant = true\n allSkus.push(markRaw(sku))\n })\n latestCollectionBrandSkusNotInTenant(globalStore.getLatestCollectionArray('selectedbrand'), globalStore.getLatestCollectionObject('sku')).forEach((sku) =>\n allSkus.push(markRaw(sku))\n )\n allSkus.forEach((sku: SkuI) => {\n sku.price = typeof sku.price == 'string' ? parseFloat(sku.price) : sku.price\n sku.buyPrice = typeof sku.buyPrice == 'string' ? parseFloat(sku.buyPrice) : sku.buyPrice\n sku.skuActive = sku.skuActive === undefined ? true : sku.skuActive\n })\n return allSkus\n}\nasync function setBrandContext(store, brand = '', dataProvider = undefined, cachedBrand) {\n // We cannot afford to load the brand data if it's already loaded, it will remove all the barcodes from globalStore\n if (cachedBrand === undefined) throw new Error('cachedBrand is required')\n if (hashBrand(brand) === hashBrand(cachedBrand)) return false\n const hashedBrand = hashBrand(brand)\n const brandSetting = getBrandSettings(hashedBrand, store.state.brands)\n const newData = await store.dispatch('loadBrand', { brand: brandSetting?.collection, dataProvider })\n const skus = getBrandSkus(brandSetting)\n\n globalStore.setBrandSkus(skus)\n if (!newData) return false\n globalStore.setIndexedBrandProducts(buildProductIndexedObject(skus))\n return true\n}\nconst createCell = (items, skus) => {\n return {\n items: items,\n value: items.reduce((sum, item) => sum + item[1], 0),\n key: items.map((item) => item[0]).join(','),\n skus,\n }\n}\n\n/**\n * Returns `RowI`.\n *\n * Creates a new matrix row.\n * @private\n * @param {string[]} arr: contains the color and subcolor values. color + subColor is the default grouper for the matrix, always present.\n * @param {ProductI} product: the product for which we build the matrix.\n * @param {MarkedSkuI[]} inputBarcodes: collection of skus for which we want to build matrices. Here we update matrix quantities from inputBarcodes.\n */\nfunction createRow(arr: string[], product: ProductI, inputBarcodes: MarkedSkuI[], grouperName, grouperList): RowI {\n // eslint-disable-next-line\n let [color, subColor, group] = arr\n const grouper = group ? `${color} ${subColor} / ${group}` : `${color} ${subColor}`\n const row = markRaw({ group: grouper, cells: [] })\n for (const size in product.SIZES) {\n const grouperKey = group ? `${color}__${product.SIZES[size]}${subColor}__${group}` : `${color}__${product.SIZES[size]}${subColor}`\n\n if (!grouperName && product.DUPLICATES[grouperKey]) {\n const duplicatesArr = product.DUPLICATES[grouperKey]\n const initialItems = duplicatesArr.map((sku) => [sku.barcode, sku.qty || 0])\n row.cells.push(createCell(initialItems, duplicatesArr))\n continue\n }\n\n if (grouperName && product.DUPLICATES[grouperKey]) {\n const duplicatesArr = product.DUPLICATES[grouperKey]\n const initialItems = duplicatesArr.map((sku) => [sku.barcode, sku.qty || 0])\n row.cells.push(createCell(initialItems, duplicatesArr))\n continue\n }\n\n const key = indexKey(color, subColor, product.SIZES[size])\n const barcode = product.INDEX[grouperName ? `${color}\\t${subColor}\\t${product.SIZES[size]}\\t${group}` : key]\n if (grouperList[0].length) {\n row.cells.push({ key: barcode, value: inputBarcodes.find((sku) => sku.barcode === barcode && sku[grouperName] === group)?.qty || 0 })\n } else {\n row.cells.push({ key: barcode, value: inputBarcodes.find((sku) => sku.barcode === barcode)?.qty || 0 })\n }\n }\n return row\n}\n\n/**\n * Returns `ProductI`.\n *\n * Gets the whole skus objects.\n * @private\n * @param {MarkedSkuI[]} skus: can be all skus or brand specific skus. Taken from the `globalStore` We have only barcodes at this point and we need full sku data so we can later use `articleCode`s.\n * @param {MarkedSkuI[]} inputBarcodes: collection of skus for which we want to build matrices. Here we update matrix quantities from inputBarcodes.\n * @param {Record<string, any>} sizeOrdering: hardcoded size table used to interpret different size names. Static resource sent by backend.\n * @param {boolean} mapSubSizes: whether we should apply mapping from sizeOrdering object or not. Static resource sent by backend.\n */\nfunction turnTargetSkusIntoProducts(skus: MarkedSkuI[], inputBarcodes: MarkedSkuI[], sizeOrdering: Record<string, any>, mapSubSizes: boolean, grouperName, grouperList): ProductI {\n let mergedSkus\n if (grouperList[0].length) {\n const skusGroupedByGrouperList = []\n\n skus.forEach((sku) => {\n grouperList.forEach((group) => {\n const newSku = { ...sku }\n newSku[grouperName] = group\n if (!newSku.barcode) newSku.barcode = newSku.id\n buildSizeIndex(sizeOrdering, mapSubSizes)(newSku)\n const inputBarcode = inputBarcodes.find((iSku) => newSku.barcode === iSku.barcode && newSku[grouperName] === iSku[grouperName])\n if (inputBarcode) {\n newSku.qty = inputBarcode.qty\n }\n skusGroupedByGrouperList.push(newSku)\n })\n })\n mergedSkus = skusGroupedByGrouperList\n } else {\n mergedSkus = skus?.map((sku: MarkedSkuI) => {\n if (!sku.barcode) sku.barcode = sku.id\n buildSizeIndex(sizeOrdering, mapSubSizes)(sku)\n const inputBarcode = inputBarcodes.find((iSku) => sku.barcode === iSku.barcode)\n return inputBarcode ? { ...sku, ...inputBarcode } : sku\n })\n }\n const product = markRaw({}) as ProductI\n product.SKUS = mergedSkus\n return getProductDetails(product, grouperName, grouperList)\n}\n\nfunction identifyUniqueGroupsInProductSkus(productSkus, grouper): string[] {\n const uniqueGroups = ['']\n productSkus.forEach((sku) => {\n if (!uniqueGroups.includes(sku[grouper])) uniqueGroups.push(sku[grouper])\n })\n return uniqueGroups\n}\n\n/**\n * Returns `ProductI`.\n *\n * Prepare the matrix and metadata and add it to the given product.\n * @private\n * @param {ProductI} product: the product that we need the matrix for.\n * @param {number} index: the index of the given product.\n * @param {MarkedSkuI[]} inputBarcodes: collection of barcode objects for which we want to build matrices.\n * @param {Function} matrixMetadata: callback function to extract product info\n * This info is used mainly to display information above the matrix.\n * For example the articleCode property can be displayed on top of the matrix as a unique identifier\n * for that matrix.\n */\nfunction buildMatrixProduct(product: ProductI, index: number, inputBarcodes: MarkedSkuI[], matrixMetadata: Function, grouperName, grouperList): ProductI {\n const matrix = { headers: [], rows: [], matrixMetadata: '' } as MatrixI\n const grouperHeader = grouperName ? ` / ${grouperName}` : ''\n matrix.headers = [`color${grouperHeader}`].concat(\n product.SIZES.map((size: string) => size),\n ['total']\n )\n\n let uniqueGroups\n if (grouperName) uniqueGroups = grouperList[0].length ? grouperList : identifyUniqueGroupsInProductSkus(product.SKUS, grouperName)\n\n product.COLORS.forEach((color: ColorI) => {\n if (grouperName) {\n uniqueGroups.forEach((group) => {\n if (color.subColors.length == 0) {\n const r = createRow([color.color, '', group], product, inputBarcodes, grouperName, grouperList)\n // if all keys are undefined, we don't want to add the row\n if (r.cells.find((cell) => cell.key != undefined)) matrix.rows.push(r)\n } else {\n color.subColors.forEach((subColor: string) => {\n const r = createRow([color.color, subColor, group], product, inputBarcodes, grouperName, grouperList)\n if (r.cells.find((cell) => cell.key != undefined)) matrix.rows.push(r)\n })\n }\n })\n } else {\n if (color.subColors.length == 0) {\n matrix.rows.push(createRow([color.color, ''], product, inputBarcodes, grouperName, grouperList))\n } else {\n color.subColors.forEach((subColor: string) => {\n matrix.rows.push(createRow([color.color, subColor], product, inputBarcodes, grouperName, grouperList))\n })\n }\n }\n })\n\n // sort rows by first column\n matrix.rows.sort((a, b) => {\n return a.group < b.group ? -1 : 1\n })\n\n product.MATRIX = matrix\n product.MATRIX.matrixMetadata = matrixMetadata(product, index)\n return product\n}\n\n/**\n * Appends a `MATRIX` key containing matrix data to a product.\n *\n * @param {MarkedSkuI[]} inputBarcodes: Collection of barcode objects to build matrices for.\n * @param {SkuI[]} indexedSkus: SKUs to match against the inputBarcodes.\n * @param {ProductI[]} indexedProducts: Products to extract data for matrices. Typically, all tenant products or a subset (brand products).\n * @param {Function} matrixMetadata: Callback to extract product info for display above the matrix (e.g., articleCode as a unique identifier).\n * @param {Record<string, any>} sizeOrdering: Hardcoded size table for interpreting size names. Static resource from backend.\n * @param {boolean} mapSubSizes: Flag to apply mapping from sizeOrdering object. Static resource from backend.\n * @param {string} grouperName: This is an optional parameter used as a header for the first column.\n * If a list of groupers is provided, the function will group by each item in the list.\n * The grouperName should correspond to a SKU property. If it doesn't naturally exist as a SKU property like color or size,\n * the input SKUs need to be restructured to include the correct property.\n * For instance, to group by warehouse, the warehouse property must be incorporated into the input SKUs.\n * This parameter supports translation.\n * @param {string[]} grouperList: Optional. Groups rows by each item in the list. Requires a grouperName for the header. Used to limit the grouper to a list of values.\n * Acts as a filter for the grouperName.\n * @param {boolean} hideInactiveSkus: Flag to filter out inactive SKUs.\n * @return {ProductI[]} Products array now containing matrix data.\n */\n\nfunction buildMatrices(\n inputBarcodes: MarkedSkuI[],\n indexedSkus: SkuI[],\n indexedProducts: ProductI[],\n matrixMetadata: Function,\n sizeOrdering: Record<string, any>,\n mapSubSizes: boolean,\n grouperName = '',\n grouperList = [''],\n hideInactiveSkus = false\n): ProductI[] {\n const products = {} // skus grouped by product for which we will calculate the matrices\n // we select the products we need to show the user\n inputBarcodes.forEach((inputBarcode: MarkedSkuI): void => {\n const barcode: string = inputBarcode.barcode\n const sku: SkuI = indexedSkus[barcode]\n if (!sku) return\n const key = `${sku.brand}__${sku.articleCodeSupplier}`\n let skus: MarkedSkuI[] = deepCopy(indexedProducts[key])\n if (hideInactiveSkus) skus = skus.filter((sku: MarkedSkuI) => sku.active)\n if (!products[key]) products[key] = skus\n })\n // 'SKUS' key must match existing pipeline expectation\n // for each product we calculate the matrix data\n return (\n Object.values(products)\n // turn target skus into products\n .map(\n (skus: any): ProductI => {\n return turnTargetSkusIntoProducts(skus, inputBarcodes, sizeOrdering, mapSubSizes, grouperName, grouperList)\n }\n )\n .map(\n (product: ProductI, index: number): ProductI => {\n return buildMatrixProduct(product, index, inputBarcodes, matrixMetadata, grouperName, grouperList)\n }\n )\n )\n}\n\nfunction setAllMatrixQuantities(rows, quantity = 0) {\n return rows.map((row) => {\n row.cells.map((cell) => {\n cell.value = quantity\n return cell\n })\n return row\n })\n}\n\nfunction multiplyAllMatrixQuantities(rows, multiplier = -1) {\n return rows.map((row) => {\n row.cells.map((cell) => {\n if (cell.value != 0 && cell.value != undefined) cell.value = parseInt(cell.value) * multiplier\n return cell\n })\n return row\n })\n}\n\nconst ensureImpliedProperties = function(sku: SkuI) {\n // Ensure mapping fields\n if (!sku.articleGroupSupplier) sku.articleGroupSupplier = sku.articleGroup\n if (!sku.collectionSupplier) sku.collectionSupplier = sku.collection\n if (!sku.colorCodeSupplier) sku.colorCodeSupplier = sku.colorCode\n if (!sku.sizeSupplier) sku.sizeSupplier = sku.size\n\n if (!sku.colorFamily && sku.colorSupplier) sku.colorFamily = '' + sku.colorSupplier\n if (!sku.colorFamily && sku.colorDescription) sku.colorFamily = '' + sku.colorDescription\n if (!sku.colorFamily && sku.mainColorDescription) sku.colorFamily = '' + sku.mainColorDescription\n if (!sku.articleCodeSupplier) sku.articleCodeSupplier = sku.articleCode\n if (!sku.size && sku.sizeSupplier) sku.size = sku.sizeSupplier\n if (!sku.barcode) sku.barcode = sku.id\n}\n\nfunction calculateMargin(sku: SkuI, vatHi: number): string {\n if (!sku.price || sku.price == 0) return (0.0).toFixed(1) + '%'\n\n let vat = vatHi\n if (sku.vat) vat = sku.vat\n\n const price = (sku.price / (100 + vat)) * 100\n if (sku.buyPrice) return (((price - sku.buyPrice) / price) * 100).toFixed(1) + '%'\n}\n\nfunction prepareSkusForUI(skus: SkuI[], state) {\n const tenantBrandsObject = globalStore.getLatestCollectionObject('tenantbrandsetting')\n const brandsObject = globalStore.getLatestCollectionObject('metabrandsetting')\n const hashCache = {}\n const addBRANDHASH = function(sku) {\n // Map brand\n if (!hashCache[sku.brand]) hashCache[sku.brand] = hashBrand(sku.brand)\n const hashedBrand = hashCache[sku.brand]\n const brand = brandsObject[hashedBrand]\n if (brand) {\n sku.brand = brand.name\n sku.BRANDHASH = brand.id\n return\n }\n const brandSettings = getBrandSettings(hashedBrand, state.brands)\n if (brandSettings) {\n sku.brand = brandSettings.name\n sku.BRANDHASH = brandSettings.id\n return\n }\n brandsObject[hashedBrand] = { id: hashedBrand, name: sku.brand }\n sku.BRANDHASH = hashedBrand\n }\n const addFOOTPRINT = function(sku) {\n if (state.activeConfig.reports.articlestatus_footprint.value) {\n const tenantBrand = tenantBrandsObject[sku.BRANDHASH]\n // @ts-ignore\n if (tenantBrand) sku.FOOTPRINT = tenantBrand.footprint\n // @ts-ignore\n else sku.FOOTPRINT = 1\n }\n }\n skus.forEach(addBRANDHASH)\n skus.forEach(addFOOTPRINT)\n skus.forEach(state.propertyMappingFn)\n skus.forEach(ensureImpliedProperties)\n skus.forEach(buildSizeIndex(state.metadata.sizeOrdering.data, state.activeConfig.products.mapSubSizes.value))\n}\n\nexport default {\n buildMatrices,\n buildProductIndexedObject,\n buildSizeIndex,\n calculateMargin,\n combineBrands,\n ensureImpliedProperties,\n getAttributes,\n getBrandProducts,\n getBrandSettings,\n getBrandSkus,\n getProductDetails,\n indexKey,\n isSkuOfBrand,\n multiplyAllMatrixQuantities,\n newColor,\n newSku,\n prepareSkusForUI,\n setAllMatrixQuantities,\n setBrandContext,\n}\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./swSaveCancel.vue?vue&type=style&index=0&id=10bc8ae1&prod&scoped=true&lang=css\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',[(_vm.authorizedFor)?_c('span',[_vm._t(\"default\")],2):_vm._e(),_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.authorizedFor),expression:\"!authorizedFor\"}]},[_vm._t(\"otherwise\")],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <span>\n <span v-if=\"authorizedFor\">\n <slot></slot>\n </span>\n <span v-show=\"!authorizedFor\">\n <slot name=\"otherwise\"></slot>\n </span>\n </span>\n</template>\n\n<script>\nimport user from '../functions/users'\n\nexport default {\n props: ['role'],\n computed: {\n authorizedFor() {\n return user.hasRole(this.$store.getters.roles, this.role)\n },\n },\n}\n</script>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./swAuth.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./swAuth.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./swAuth.vue?vue&type=template&id=cc52725c\"\nimport script from \"./swAuth.vue?vue&type=script&lang=js\"\nexport * from \"./swAuth.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","import { Consts } from '@/types/consts'\nimport { version } from '../../package.json'\n\nconst webServicesPaths = {\n development: 'http://' + location.hostname + ':3000',\n // development: 'http://edge.latestcollection.fashion',\n // development: 'http://beta.latestcollection.fashion',\n // development: 'http://www.latestcollection.fashion',\n production: 'https://' + location.hostname,\n}\nconst webServicesPath = webServicesPaths[process.env.NODE_ENV]\n\nconst consts: Consts = {\n defaultURLs: {\n STOCK_LINK: '/reports?type=stock&groups=sku.brand&fields=43&period=TODAY&reportViz=matrix',\n ARTICLE_STATUS_LINK:\n '/reports?type=articlestatus&reportViz=table&filter=&groups=sku.brand&fields=1,2,6,7,8,10,12,13,43,44,32,39,36,38,11,40,33&orderby=g0&sortorder=1&period=LASTMONTH',\n TOPX_LINK: '/reports?type=articlestatus&groups=sku.articleCodeSupplier&fields=8&period=LASTWEEK&orderby=g0&sortorder=1&reportViz=cards',\n STOCK_INSIGHT_LINK:\n '/reports?type=stockinsight&groups=sku.brand,sku.articleCodeSupplier,sku.articleDescription,sku.colorFamily&tablekey=sku.size&fields=1,6,8,12,14,43&kpis=10,32,39,36,38,27&period=THISWEEK&reportViz=stockinsight',\n SALES_PER_CUSTOMER_LINK: '/reports?type=articlestatus&groups=customer.lastName,customer.email&fields=8,10&period=THISWEEK&reportViz=customertable',\n },\n localDateFormat: 'yyyy-MM-dd',\n version: version,\n webServicesPaths,\n dashboardColor: '#625B51',\n webServicesPath,\n erpServices: process.env.NODE_ENV === 'production' ? 'https://api.softwear.nl/myapi' : 'https://alderaan55.softwear.nl/myapi',\n latestCollection: {\n brandLogosUrl: 'https://www.softwear.nl/home/latestcollection/images/size1',\n },\n softwear: {\n fotoManagerUrl: 'http://www.softwear.nl/nl/fotomanager/upload2.php',\n imageRoot: 'https://www.softwear.nl/home',\n stockRoot: 'https://www.softwear.nl/stock',\n },\n tenant: {\n feedId: '',\n },\n groupsIcons: [\n 'accessoires',\n 'bags',\n 'bodywear',\n 'bras',\n 'dresses',\n 'fitness-training',\n 'flip-flops',\n 'footwear',\n 'gloves-',\n 'hats',\n 'jackets_1',\n 'jackets',\n 'panties',\n 'pants',\n 'polo_s',\n 'rackets',\n 'running',\n 'sets',\n 'shoes',\n 'shorts',\n 'singlets',\n 'skirts',\n 'soccer',\n 'socks',\n 'sportswear',\n 'suits',\n 'sweaters',\n 'tennis',\n 'tights',\n 'tops_1',\n 'tops',\n 't-shirts',\n 'unknown',\n 'vests',\n 'winter-sports',\n ],\n allConfig: {\n favorites: {\n favoriteBrands: {\n role: [''],\n level: 'user',\n type: 'autocomplete',\n items: 'brand',\n default: [],\n hidePreferenceInUI: true,\n },\n dashboardOrder: {\n role: [''],\n level: 'user',\n type: 'autocomplete',\n items: 'dashboard',\n default: [],\n hidePreferenceInUI: true,\n },\n skuEditorColumns: {\n role: [''],\n level: 'user',\n type: 'select',\n default: [\n 'barcode',\n 'articlecode',\n 'articledescription',\n 'colorfamily',\n 'colorsupplier',\n 'colorcodesupplier',\n 'size',\n 'sizesupplier',\n 'buyprice',\n 'sellprice',\n 'articlegroup',\n ],\n hidePreferenceInUI: true,\n },\n defaultwarehouse: {\n role: [''],\n level: 'user',\n type: 'enum',\n items: 'warehouse',\n default: '',\n },\n },\n salesChannels: {\n mySalesChannels: {\n role: ['owner'],\n level: 'tenant',\n type: 'autocomplete',\n items: [\n { text: 'wholesale', value: 'wholesale' },\n { text: 'wholesale-ecommerce', value: 'wholesale-ecommerce' },\n { text: 'retail-ecommerce', value: 'retail-ecommerce' },\n { text: 'retail-outlet', value: 'retail-outlet' },\n { text: 'retail-consignment', value: 'retail-consignment' },\n { text: 'retail-store', value: 'retail-store' },\n { text: 'zalando', value: 'zalando' },\n { text: 'miinto', value: 'miinto' },\n { text: 'bol', value: 'bol' },\n { text: 'amazon', value: 'amazon' },\n ],\n default: [],\n },\n },\n partnerchannels: {\n latestcollection: {\n role: ['impersonator'],\n level: 'tenant',\n type: 'boolean',\n default: true,\n },\n fashioncloud: {\n role: ['owner'],\n level: 'tenant',\n type: 'string',\n default: '',\n },\n fashionunited: {\n role: ['owner', 'lc-data-only'],\n domain: 'fashioniunited',\n level: 'tenant',\n type: 'string',\n default: '',\n },\n linolux: {\n role: ['owner'],\n level: 'tenant',\n type: 'string',\n default: '',\n },\n triumph_it: {\n role: ['owner'],\n level: 'tenant',\n type: 'string',\n default: '',\n },\n euretco: {\n role: ['owner'],\n level: 'tenant',\n type: 'string',\n default: '',\n },\n barcodebot: {\n role: ['owner'],\n level: 'tenant',\n type: 'boolean',\n default: false,\n },\n mpluskassa: {\n role: ['owner', 'lc-data-only'],\n domain: 'mpluskassa',\n level: 'tenant',\n type: 'string',\n default: '',\n },\n mpluskassaIdent: {\n role: ['owner', 'lc-data-only'],\n domain: 'mpluskassa',\n level: 'tenant',\n type: 'string',\n default: '',\n },\n mpluskassaSecret: {\n role: ['owner', 'lc-data-only'],\n domain: 'mpluskassa',\n level: 'tenant',\n type: 'string',\n default: '',\n },\n mpluskassaUser: {\n role: ['owner', 'lc-data-only'],\n domain: 'mpluskassa',\n level: 'tenant',\n type: 'enum',\n items: 'mPlusKassaUsers',\n focusHook: 'getMPlusKassaUsers',\n default: '',\n },\n },\n sendCloudIntegration: {\n sendCloudPrivateKey: {\n role: ['owner'],\n level: 'tenant',\n type: 'string',\n default: '',\n },\n sendCloudPublicKey: {\n role: ['owner'],\n level: 'tenant',\n type: 'string',\n default: '',\n },\n },\n zalandointegration: {\n zalandospynltoken: {\n role: ['owner'],\n level: 'tenant',\n type: 'string',\n default: '',\n },\n zalandospynlcustomer: {\n role: ['owner'],\n level: 'tenant',\n type: 'string',\n default: '',\n },\n defaultzalandowarehouse: {\n role: ['owner'],\n level: 'tenant',\n type: 'enum',\n items: 'warehouse',\n default: '',\n },\n zalandodevice: {\n role: ['owner'],\n level: 'tenant',\n type: 'string',\n default: '',\n },\n zalandocashier: {\n role: ['owner'],\n level: 'tenant',\n type: 'string',\n default: '',\n },\n },\n webshopfulfillment: {\n webshopwarehouse: {\n role: ['owner'],\n level: 'tenant',\n type: 'enum',\n items: 'warehouse',\n default: '',\n },\n fulfillmentStrategy: {\n role: ['owner'],\n level: 'tenant',\n type: 'enum',\n items: [\n { text: 'None', value: 'none' },\n { text: 'Auto transit', value: 'autoTransit' },\n {\n text: 'Minimize transits, randomize store',\n value: 'minimizeTransitsRandomizeStore',\n disabled: true,\n },\n {\n text: 'Minimize transits, slowest store',\n value: 'minimizeTransitsSlowestStore',\n disabled: true,\n },\n {\n text: 'Minimize transits, fullest store',\n value: 'minimizeTransitsFullestStore',\n disabled: true,\n },\n ],\n default: 'none',\n },\n transitfrom: {\n role: ['owner'],\n level: 'tenant',\n type: 'select',\n items: 'warehouse',\n default: [],\n },\n orderfrombrands: {\n role: ['owner'],\n level: 'tenant',\n type: 'autocomplete',\n items: 'brand',\n default: [],\n },\n dropshipmentEmailAddress: {\n role: ['owner'],\n level: 'tenant',\n type: 'string',\n default: '',\n },\n },\n labelPrinting: {\n labelPrintingStrategy: {\n role: ['owner'],\n level: 'tenant',\n type: 'enum',\n items: [\n { text: 'PDF download', value: 'pdfDownload' },\n { text: 'PDF preview', value: 'pdfPreview' },\n { text: 'ZPL', value: 'zplDirect' },\n { text: 'ZPL preview', value: 'zplPreview' },\n ],\n default: 'PDF download',\n },\n pricetagLayoutDefaults: {\n role: ['owner'],\n level: 'tenant',\n type: 'combobox',\n items: 'pricetagLayouts',\n default: [],\n },\n printQueues: {\n role: ['owner'],\n level: 'tenant',\n type: 'combobox',\n items: '',\n default: [],\n },\n },\n reports: {\n articlestatus: {\n role: ['report'],\n level: 'tenant',\n type: 'boolean',\n default: true,\n },\n articlestatus_footprint: {\n role: ['report'],\n level: 'tenant',\n type: 'boolean',\n default: false,\n },\n articlestatus_extended: {\n role: ['report'],\n level: 'tenant',\n type: 'boolean',\n default: false,\n },\n articlestatus_fifo: {\n role: ['report'],\n level: 'tenant',\n type: 'boolean',\n default: false,\n },\n stock: {\n role: ['report'],\n level: 'tenant',\n type: 'boolean',\n default: true,\n },\n biGranularity: {\n role: ['owner'],\n level: 'tenant',\n type: 'enum',\n items: ['year', 'month'],\n default: 'year',\n },\n },\n vat: {\n high: {\n role: ['owner'],\n level: 'tenant',\n type: 'number',\n default: '21',\n },\n low: {\n role: ['owner'],\n level: 'tenant',\n type: 'number',\n default: '9',\n },\n },\n products: {\n activeAttributes: {\n role: ['products'],\n level: 'tenant',\n type: 'combobox',\n items: 'attribute',\n default: [],\n },\n brandOwnerView: {\n role: ['products'],\n level: 'user',\n type: 'boolean',\n default: false,\n },\n mapSubSizes: {\n role: ['products-admin'],\n level: 'tenant',\n type: 'boolean',\n default: true,\n },\n applyLatestCollectionMapping: {\n role: ['products-admin'],\n level: 'tenant',\n type: 'boolean',\n default: true,\n },\n applyTenantMapping: {\n role: ['products-admin'],\n level: 'tenant',\n type: 'boolean',\n default: true,\n },\n applyDataProviderMapping: {\n role: ['products-admin'],\n level: 'tenant',\n type: 'select',\n items: [{ header: 'SELECT SOME' }, { text: 'euretco' }, { text: 'linolux' }],\n default: [],\n },\n defaultcollection: {\n role: ['products'],\n level: 'tenant',\n type: 'string',\n default: 'NOS',\n },\n autoCreateSkuForUnknownBarcode: {\n role: ['owner'],\n level: 'tenant',\n type: 'boolean',\n default: false,\n },\n sizeranges: {\n role: ['products-admin'],\n level: 'tenant',\n type: 'textarea',\n default:\n '\\\nYS,YM,YL,3XS,XXS,XS,S,M,L,XL,XXL,3XL,4XL\\n\\\n22,24,26,28,30,32,34,36,38,40,42,44,46,48,50,52,54,56\\n\\\n60,65,70,75,80,85,90,95,100,105,110,115,120,125,130,135,140\\n\\\n0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22\\n\\\nXS/S,S/M,M/L,L/XL,XS/S,M/L,XL/XXL\\n\\\n28/28,28/30,28/32,28/34,28/36,28/38,29/28,29/30,29/32,29/34,29/36,29/38,30/28,30/30,30/32,30/34,30/36,30/38,31/28,31/30,31/32,31/34,31/36,31/38,32/28,32/30,32/32,32/34,32/36,32/38,33/28,33/30,33/32,33/34,33/36,33/38,34/28,34/30,34/32,34/34,34/36,34/38,36/28,36/30,36/32,36/34,36/36,36/38,38/28,38/30,38/32,38/34,38/36,38/38,40/28,40/30,40/32,40/34,40/36,40/38\\n\\\n65A,65B,65C,70A,70B,70C\\n\\\n47-48,49-50,51-52,53-54,55-56,57-58,59-60,61-62,63-64,65-66\\n\\\n80,86,92,98,104,110,116,122,128,134,140,146,152,158,164,170,176\\n\\\n25,26,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50\\n\\\n25,25½,26,26½,27,27½,28,28½,29,29½,30,30½,31,31½,32,32½,33,33½,34,34½,35,35½,36,36½,37,37½,38,38½,39,39½,40,40½,41,41½,42,42½,43,43½,44,44½,45,45½,46,46½,47,47½,48,48½,49,49½,50',\n },\n },\n UISettings: {\n language: {\n role: [''],\n level: 'tenant',\n type: 'enum',\n items: [\n { text: 'English', value: 'en' },\n { text: 'Nederlands', value: 'nl' },\n { text: 'Deutsch', value: 'de' },\n ],\n default: 'en',\n },\n audioFeedback: {\n role: ['products'],\n level: 'user',\n type: 'boolean',\n default: true,\n },\n },\n synchronizeWith: {\n softwear: {\n role: ['owner'],\n level: 'tenant',\n type: 'autocomplete',\n items: [\n { text: 'purchaseOrders', value: 'purchaseorders' },\n { text: 'receivings', value: 'receivings' },\n { text: 'desadv', value: 'desadv' },\n { text: 'invoice', value: 'invoice' },\n { text: 'pos', value: 'pos' },\n { text: 'transit', value: 'transit' },\n ],\n default: [],\n },\n },\n magento: {\n magentoUrl: { role: ['owner'], level: 'tenant', type: 'string', default: '' },\n magentoToken: { role: ['owner'], level: 'tenant', type: 'string', default: '' },\n },\n picqerIntegration: {\n picqerApiToken: {\n role: ['owner'],\n level: 'tenant',\n type: 'string',\n default: '',\n },\n picqerApiDomain: {\n role: ['owner'],\n level: 'tenant',\n type: 'string',\n default: '',\n },\n picqerLatestCollectionWarehouse: {\n role: ['owner'],\n level: 'tenant',\n type: 'enum',\n items: 'warehouseId',\n default: '',\n },\n picqerWarehouse: {\n role: ['owner'],\n level: 'tenant',\n type: 'enum',\n items: 'picqerWarehouseId',\n focusHook: 'getPicqerWarehouses',\n default: '',\n },\n },\n },\n roles: [\n 'account-admin',\n 'dashboard-user',\n 'inventory-user',\n 'logistics-receivings_user',\n 'pos-device',\n 'products-admin',\n 'products-user',\n 'products-purchase_admin',\n 'products-purchase_user',\n 'products-report',\n 'sales-user',\n 'sales-admin',\n 'sw-admin',\n 'products-demo',\n 'owner',\n 'sales-admin',\n 'sales-user',\n ],\n}\nexport default consts\n","function setLanguage(store: any, languageCode: string): string {\n const uiSettingsExist = store.state.activeConfig?.UISettings\n\n if (uiSettingsExist) {\n store.dispatch('updatePreference', { key: 'UISettings.language', value: languageCode })\n } else {\n store.state.locale = languageCode\n }\n\n return languageCode\n}\n\nfunction checkLanguage(store) {\n let savedLanguage\n\n if (store.state.activeConfig?.UISettings) {\n if (store.state.beforeAuthLanguage) {\n savedLanguage = setLanguage(store, store.state.beforeAuthLanguage)\n store.state.beforeAuthLanguage = ''\n } else {\n savedLanguage = store.state.activeConfig.UISettings.language?.value\n }\n } else {\n savedLanguage = store.state.locale\n }\n\n if (savedLanguage) store.state.locale = savedLanguage\n\n return savedLanguage || ''\n}\n\nexport default { checkLanguage, setLanguage }\n","export * from \"-!../node_modules/mini-css-extract-plugin/dist/loader.js??ref--9-oneOf-1-0!../node_modules/css-loader/dist/cjs.js??ref--9-oneOf-1-1!../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../node_modules/postcss-loader/src/index.js??ref--9-oneOf-1-2!../node_modules/sass-loader/dist/cjs.js??ref--9-oneOf-1-3!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=style&index=0&id=2b2c0850&prod&lang=scss\"","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('v-container',{staticClass:\"ma-0 pa-0 hero\",attrs:{\"fill-height\":\"\",\"fluid\":\"\"}},[_c('nav',[_c('v-app-bar',{staticStyle:{\"background-color\":\"#0000\"},attrs:{\"app\":\"\",\"flat\":\"\"}},[_c('v-spacer'),_c('div',[_c('v-menu',{attrs:{\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({staticStyle:{\"min-width\":\"26px !important\"},attrs:{\"color\":\"white\",\"data-test\":\"changeLanguageButton\",\"small\":\"\"}},'v-btn',attrs,false),on),[_vm._v(\" \"+_vm._s(_vm.language)+\" \")])]}}])},[_c('v-list',_vm._l((_vm.languages),function(item,index){return _c('v-list-item',{key:index,on:{\"click\":function($event){return _vm.setLanguage(item.value)}}},[_c('v-list-item-title',{attrs:{\"data-test\":`languageOption-${item.value}`}},[_vm._v(_vm._s(item.text))])],1)}),1)],1)],1)],1)],1),_c('v-row',{staticClass:\"login-form\",attrs:{\"justify\":\"center\",\"align\":\"center\"}},[_c('v-card',{staticClass:\"pa-4\",class:_vm.formWidth,attrs:{\"elevation\":\"8\"}},[_c('v-form',{ref:\"form\",attrs:{\"lazy-validation\":\"\"},on:{\"submit\":function($event){$event.preventDefault();}},model:{value:(_vm.valid),callback:function ($$v) {_vm.valid=$$v},expression:\"valid\"}},[(!_vm.showPasswordResetUsernameInput && !_vm.showPasswordResetPasswordInputs)?_c('div',[_c('v-row',{staticClass:\"mx-1 mt-1 mb-4\"},[_c('v-img',{staticClass:\"mx-auto\",attrs:{\"max-height\":\"200px\",\"max-width\":\"250px\",\"src\":_vm.logoUrl}})],1),_c('v-card-text',{staticClass:\"pa-2\"},[(_vm.mfaToken == null)?_c('v-text-field',{ref:\"usernameField\",staticClass:\"px-1\",attrs:{\"outlined\":\"\",\"dense\":\"\",\"data-test\":\"usernameField\",\"type\":\"text\",\"rules\":_vm.usernameRules,\"label\":_vm.swT('email_or_username'),\"persistent-placeholder\":\"\",\"required\":\"\"},nativeOn:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.login.apply(null, arguments)}},model:{value:(_vm.username),callback:function ($$v) {_vm.username=$$v},expression:\"username\"}}):_vm._e(),(_vm.mfaToken == null)?_c('v-text-field',{staticClass:\"px-1\",attrs:{\"outlined\":\"\",\"dense\":\"\",\"data-test\":\"passwordField\",\"append-icon\":_vm.showPasswordCharacters ? 'mdi-eye' : 'mdi-eye-off',\"type\":_vm.showPasswordCharacters ? 'text' : 'password',\"rules\":_vm.passwordRules,\"label\":_vm.swT('password'),\"persistent-placeholder\":\"\",\"required\":\"\"},on:{\"click:append\":function($event){_vm.showPasswordCharacters = !_vm.showPasswordCharacters}},nativeOn:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.login.apply(null, arguments)}},model:{value:(_vm.password),callback:function ($$v) {_vm.password=$$v},expression:\"password\"}}):_vm._e(),_c('v-text-field',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.mfaToken != null),expression:\"mfaToken != null\"}],ref:\"oneTimePasswordField\",staticClass:\"px-1\",attrs:{\"outlined\":\"\",\"dense\":\"\",\"data-test\":\"oneTimePasswordField\",\"type\":\"text\",\"label\":_vm.swT('one_time_password'),\"persistent-placeholder\":\"\",\"required\":\"\"},nativeOn:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.login.apply(null, arguments)}},model:{value:(_vm.oneTimePassword),callback:function ($$v) {_vm.oneTimePassword=$$v},expression:\"oneTimePassword\"}}),_c('v-row',{staticClass:\"py-4 d-flex justify-center\"},[_c('v-btn',{attrs:{\"color\":\"primary\",\"data-test\":\"loginButton\"},on:{\"click\":_vm.login}},[_vm._v(\" \"+_vm._s(_vm.swT('login'))+\" \")])],1),_c('v-row',{staticClass:\"d-flex flex-column align-center justify-center\"},[_c('v-btn',{attrs:{\"color\":\"primary\",\"text\":\"\"},on:{\"click\":function($event){return _vm.$router.push('/signup')}}},[_vm._v(_vm._s(_vm.swT('signup')))]),_c('v-btn',{staticClass:\"mb-2\",attrs:{\"text\":\"\",\"small\":\"\",\"color\":\"primary\"},on:{\"click\":function($event){_vm.showPasswordResetUsernameInput = !_vm.showPasswordResetUsernameInput}}},[_vm._v(\" \"+_vm._s(_vm.swT('resetPassword'))+\" \")]),_c('p',{staticClass:\"text-center blue--text font-weight-bold\"},[_vm._v(_vm._s(_vm.message))]),_c('p',{staticClass:\"text-center red--text font-weight-bold\"},[_vm._v(_vm._s(_vm.error))])],1)],1)],1):_vm._e(),(_vm.showPasswordResetUsernameInput)?_c('div',[_c('v-card-title',[_vm._v(_vm._s(_vm.swT('resetPassword')))]),_c('v-card-text',{staticClass:\"pa-2\"},[_c('v-row',{staticClass:\"py-1 d-flex flex-column align-center justify-center\"},[(_vm.showPasswordResetUsernameInput)?_c('v-text-field',{staticClass:\"px-1\",attrs:{\"outlined\":\"\",\"dense\":\"\",\"label\":_vm.swT('email_or_username'),\"rules\":_vm.usernameRules,\"persistent-placeholder\":\"\"},nativeOn:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.requestResetPassword.apply(null, arguments)}},model:{value:(_vm.username),callback:function ($$v) {_vm.username=$$v},expression:\"username\"}}):_vm._e(),_c('v-btn',{staticClass:\"mb-2\",attrs:{\"color\":\"primary\"},on:{\"click\":function($event){return _vm.requestResetPassword()}}},[_vm._v(\" \"+_vm._s(_vm.swT('requestEmail'))+\" \")]),_c('p',{staticClass:\"text-center red--text font-weight-bold\"},[_vm._v(_vm._s(_vm.error))]),_c('v-btn',{staticClass:\"mb-2\",attrs:{\"text\":\"\",\"small\":\"\",\"color\":\"primary\"},on:{\"click\":function($event){return _vm.returnToLogin('requestResetPassword')}}},[_vm._v(\" \"+_vm._s(_vm.swT('login'))+\" \")])],1)],1)],1):_vm._e(),(_vm.showPasswordResetPasswordInputs)?_c('div',[_c('v-card-title',[_vm._v(_vm._s(_vm.swT('resetPassword')))]),_c('v-card-text',{staticClass:\"pa-2\"},[_c('v-row',{staticClass:\"py-1 d-flex flex-column align-center justify-center\"},[_c('v-text-field',{staticClass:\"px-1\",attrs:{\"append-icon\":_vm.showPasswordCharacters ? 'mdi-eye' : 'mdi-eye-off',\"rules\":[_vm.resetPasswordRules.required, _vm.resetPasswordRules.minimal_length],\"type\":_vm.showPasswordCharacters ? 'text' : 'password',\"outlined\":\"\",\"dense\":\"\",\"data-test\":\"passwordResetField\",\"persistent-placeholder\":\"\",\"label\":_vm.swT('password')},on:{\"click:append\":function($event){_vm.showPasswordCharacters = !_vm.showPasswordCharacters}},nativeOn:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.resetPassword.apply(null, arguments)}},model:{value:(_vm.newPassword),callback:function ($$v) {_vm.newPassword=$$v},expression:\"newPassword\"}}),_c('v-text-field',{staticClass:\"px-1\",attrs:{\"append-icon\":_vm.showPasswordCharacters ? 'mdi-eye' : 'mdi-eye-off',\"rules\":[_vm.resetPasswordRules.required, _vm.resetPasswordRules.minimal_length, _vm.resetPasswordRules.passwordMatch],\"type\":_vm.showPasswordCharacters ? 'text' : 'password',\"outlined\":\"\",\"dense\":\"\",\"data-test\":\"confirmPasswordResetField\",\"persistent-placeholder\":\"\",\"label\":_vm.swT('confirm_password')},on:{\"click:append\":function($event){_vm.showPasswordCharacters = !_vm.showPasswordCharacters}},nativeOn:{\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.resetPassword.apply(null, arguments)}},model:{value:(_vm.confirmPassword),callback:function ($$v) {_vm.confirmPassword=$$v},expression:\"confirmPassword\"}}),_c('v-btn',{staticClass:\"mb-2\",attrs:{\"color\":\"primary\",\"data-test\":\"resetPasswordButton\"},on:{\"click\":function($event){return _vm.resetPassword()}}},[_vm._v(\" \"+_vm._s(_vm.swT('resetPassword'))+\" \")]),_c('p',{staticClass:\"text-center red--text font-weight-bold\",attrs:{\"data-test\":`error-${!!_vm.error}`}},[_vm._v(_vm._s(_vm.error))]),_c('v-btn',{staticClass:\"mb-2\",attrs:{\"text\":\"\",\"small\":\"\",\"color\":\"primary\"},on:{\"click\":function($event){return _vm.returnToLogin('resetPassword')}}},[_vm._v(\" \"+_vm._s(_vm.swT('login'))+\" \")])],1)],1)],1):_vm._e()])],1)],1),(_vm.loadingStatus)?_c('v-overlay',{staticClass:\"overlay\"},[_c('transition',{attrs:{\"name\":\"fade\",\"mode\":\"out-in\"}},[_c('v-img',{attrs:{\"src\":_vm.animationUrl,\"height\":\"100%\",\"width\":\"100%\"}})],1)],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <v-container fill-height fluid class=\"ma-0 pa-0 hero\">\n <nav>\n <v-app-bar app flat style=\"background-color: #0000\">\n <v-spacer></v-spacer>\n <div>\n <v-menu offset-y>\n <template v-slot:activator=\"{ on, attrs }\">\n <v-btn style=\"min-width: 26px !important\" color=\"white\" data-test=\"changeLanguageButton\" small v-bind=\"attrs\" v-on=\"on\">\n {{ language }}\n </v-btn>\n </template>\n <v-list>\n <v-list-item v-for=\"(item, index) in languages\" :key=\"index\" @click=\"setLanguage(item.value)\">\n <v-list-item-title :data-test=\"`languageOption-${item.value}`\">{{ item.text }}</v-list-item-title>\n </v-list-item>\n </v-list>\n </v-menu>\n </div>\n </v-app-bar>\n </nav>\n <v-row justify=\"center\" align=\"center\" class=\"login-form\">\n <v-card :class=\"formWidth\" class=\"pa-4\" elevation=\"8\">\n <v-form ref=\"form\" v-model=\"valid\" lazy-validation @submit.prevent>\n <div v-if=\"!showPasswordResetUsernameInput && !showPasswordResetPasswordInputs\">\n <v-row class=\"mx-1 mt-1 mb-4\">\n <v-img max-height=\"200px\" max-width=\"250px\" class=\"mx-auto\" :src=\"logoUrl\"></v-img>\n </v-row>\n <v-card-text class=\"pa-2\">\n <v-text-field\n v-if=\"mfaToken == null\"\n ref=\"usernameField\"\n v-model=\"username\"\n outlined\n dense\n data-test=\"usernameField\"\n type=\"text\"\n :rules=\"usernameRules\"\n class=\"px-1\"\n :label=\"swT('email_or_username')\"\n persistent-placeholder\n required\n @keyup.native.enter=\"login\"\n ></v-text-field>\n\n <v-text-field\n v-if=\"mfaToken == null\"\n v-model=\"password\"\n outlined\n dense\n data-test=\"passwordField\"\n :append-icon=\"showPasswordCharacters ? 'mdi-eye' : 'mdi-eye-off'\"\n :type=\"showPasswordCharacters ? 'text' : 'password'\"\n :rules=\"passwordRules\"\n class=\"px-1\"\n :label=\"swT('password')\"\n persistent-placeholder\n required\n @keyup.native.enter=\"login\"\n @click:append=\"showPasswordCharacters = !showPasswordCharacters\"\n ></v-text-field>\n <v-text-field\n v-show=\"mfaToken != null\"\n ref=\"oneTimePasswordField\"\n v-model=\"oneTimePassword\"\n outlined\n dense\n data-test=\"oneTimePasswordField\"\n type=\"text\"\n class=\"px-1\"\n :label=\"swT('one_time_password')\"\n persistent-placeholder\n required\n @keyup.native.enter=\"login\"\n ></v-text-field>\n\n <v-row class=\"py-4 d-flex justify-center\">\n <v-btn color=\"primary\" data-test=\"loginButton\" @click=\"login\">\n {{ swT('login') }}\n </v-btn>\n </v-row>\n <v-row class=\" d-flex flex-column align-center justify-center\">\n <v-btn color=\"primary\" text @click=\"$router.push('/signup')\">{{ swT('signup') }}</v-btn>\n <v-btn text small color=\"primary\" class=\"mb-2\" @click=\"showPasswordResetUsernameInput = !showPasswordResetUsernameInput\">\n {{ swT('resetPassword') }}\n </v-btn>\n <p class=\"text-center blue--text font-weight-bold\">{{ message }}</p>\n <p class=\"text-center red--text font-weight-bold\">{{ error }}</p>\n </v-row>\n </v-card-text>\n </div>\n <div v-if=\"showPasswordResetUsernameInput\">\n <v-card-title>{{ swT('resetPassword') }}</v-card-title>\n <v-card-text class=\"pa-2\">\n <v-row class=\"py-1 d-flex flex-column align-center justify-center\">\n <v-text-field\n v-if=\"showPasswordResetUsernameInput\"\n v-model=\"username\"\n outlined\n dense\n :label=\"swT('email_or_username')\"\n :rules=\"usernameRules\"\n class=\"px-1\"\n persistent-placeholder\n @keyup.native.enter=\"requestResetPassword\"\n ></v-text-field>\n <v-btn color=\"primary\" class=\"mb-2\" @click=\"requestResetPassword()\">\n {{ swT('requestEmail') }}\n </v-btn>\n <p class=\"text-center red--text font-weight-bold\">{{ error }}</p>\n <v-btn text small color=\"primary\" class=\"mb-2\" @click=\"returnToLogin('requestResetPassword')\">\n {{ swT('login') }}\n </v-btn>\n </v-row>\n </v-card-text>\n </div>\n <div v-if=\"showPasswordResetPasswordInputs\">\n <v-card-title>{{ swT('resetPassword') }}</v-card-title>\n <v-card-text class=\"pa-2\">\n <v-row class=\"py-1 d-flex flex-column align-center justify-center\">\n <v-text-field\n v-model=\"newPassword\"\n :append-icon=\"showPasswordCharacters ? 'mdi-eye' : 'mdi-eye-off'\"\n :rules=\"[resetPasswordRules.required, resetPasswordRules.minimal_length]\"\n :type=\"showPasswordCharacters ? 'text' : 'password'\"\n outlined\n dense\n class=\"px-1\"\n data-test=\"passwordResetField\"\n persistent-placeholder\n :label=\"swT('password')\"\n @click:append=\"showPasswordCharacters = !showPasswordCharacters\"\n @keyup.native.enter=\"resetPassword\"\n ></v-text-field>\n <v-text-field\n v-model=\"confirmPassword\"\n :append-icon=\"showPasswordCharacters ? 'mdi-eye' : 'mdi-eye-off'\"\n :rules=\"[resetPasswordRules.required, resetPasswordRules.minimal_length, resetPasswordRules.passwordMatch]\"\n :type=\"showPasswordCharacters ? 'text' : 'password'\"\n outlined\n dense\n class=\"px-1\"\n data-test=\"confirmPasswordResetField\"\n persistent-placeholder\n :label=\"swT('confirm_password')\"\n @click:append=\"showPasswordCharacters = !showPasswordCharacters\"\n @keyup.native.enter=\"resetPassword\"\n ></v-text-field>\n <v-btn color=\"primary\" class=\"mb-2\" data-test=\"resetPasswordButton\" @click=\"resetPassword()\">\n {{ swT('resetPassword') }}\n </v-btn>\n <p class=\"text-center red--text font-weight-bold\" :data-test=\"`error-${!!error}`\">{{ error }}</p>\n <v-btn text small color=\"primary\" class=\"mb-2\" @click=\"returnToLogin('resetPassword')\">\n {{ swT('login') }}\n </v-btn>\n </v-row>\n </v-card-text>\n </div>\n </v-form>\n </v-card>\n </v-row>\n <v-overlay v-if=\"loadingStatus\" class=\"overlay\">\n <transition name=\"fade\" mode=\"out-in\">\n <v-img :src=\"animationUrl\" height=\"100%\" width=\"100%\"></v-img>\n </transition>\n </v-overlay>\n </v-container>\n</template>\n\n<script>\nimport { swT } from '@/functions/i18n'\nimport authentication from '@/functions/authentication'\nimport cookies from 'js-cookie'\nimport language from '@/functions/language'\nimport consts from '@/store/consts'\nimport whitelabelFunctions from '@/functions/whitelabel'\n\nexport default {\n data() {\n return {\n swT,\n valid: true,\n username: '',\n checkbox: false,\n usernameRules: [(v) => !!v || swT('required')],\n password: '',\n passwordRules: [(v) => !!v || swT('required')],\n resetPasswordRules: {\n required: (value) => !!value || swT('required'),\n minimal_length: (v) => v.length >= 10 || swT('minimal_10_characters'),\n passwordMatch: (v) => v === this.newPassword || swT('password_must_match'),\n },\n language: this.$store.state.locale,\n languages: consts.allConfig.UISettings.language.items,\n showPasswordResetUsernameInput: false,\n showPasswordResetPasswordInputs: false,\n showPasswordCharacters: false,\n newPassword: '',\n confirmPassword: '',\n message: '',\n error: '',\n mfaToken: null,\n oneTimePassword: '',\n loadingStatus: false,\n }\n },\n computed: {\n animationUrl() {\n return whitelabelFunctions.siteAnimation(window.location.href)\n },\n logoUrl() {\n return whitelabelFunctions.siteLogo(window.location.href)\n },\n formWidth() {\n return this.$vuetify.breakpoint.smAndDown ? '' : 'wide'\n },\n },\n mounted() {\n if (this.$route.query.popup === 'noRole') {\n this.$store.dispatch('raiseAlert', {\n header: 'youNeedADifferentRole',\n type: 'warning',\n timeout: 3000,\n })\n }\n\n if (this.$route.query?.username?.length > 0 && this.$route.query?.key?.length > 0) {\n this.showPasswordResetPasswordInputs = true\n }\n if (this.$route.query?.lang?.length > 0) {\n if (this.languageExists(this.$route.query.lang)) {\n this.setLanguage(this.$route.query?.lang)\n }\n }\n },\n methods: {\n returnToLogin(view) {\n if (view == 'requestResetPassword') this.showPasswordResetUsernameInput = !this.showPasswordResetUsernameInput\n if (view == 'resetPassword') this.showPasswordResetPasswordInputs = !this.showPasswordResetPasswordInputs\n\n this.error = ''\n this.$refs.form.reset()\n },\n async resetPassword() {\n if (!this.$refs.form.validate()) return\n this.loadingStatus = true\n\n const response = await authentication.resetPassword(this.language, this.$route.query.key, this.$route.query.username, this.newPassword, this.confirmPassword)\n this.message = ''\n this.error = ''\n\n if (response != null && Object.keys(response).length > 0) {\n if (response.data.response == 'ok') {\n this.showPasswordResetPasswordInputs = !this.showPasswordResetPasswordInputs\n this.message = swT('password_reset_success')\n } else {\n this.error = response.data.error\n }\n } else {\n this.error = swT('something_wrong_try_again_later')\n }\n this.loadingStatus = false\n },\n languageExists(languageCode) {\n return this.languages.some((language) => language.value === languageCode)\n },\n setLanguage(languageCode) {\n if (this.languageExists(languageCode)) {\n this.language = language.setLanguage(this.$store, languageCode)\n this.$store.state.beforeAuthLanguage = languageCode\n }\n },\n async requestResetPassword() {\n if (!this.$refs.form.validate()) return\n this.loadingStatus = true\n\n const response = await authentication.requestResetPassword(this.language, this.username)\n this.message = ''\n this.error = ''\n\n if (response != null && Object.keys(response).length > 0) {\n if (response.data.response == 'ok') {\n this.showPasswordResetUsernameInput = !this.showPasswordResetUsernameInput\n this.message = swT('check_mailbox_to_finish_process')\n } else {\n this.error = response.data.error\n }\n } else {\n this.error = swT('something_wrong_try_again_later')\n }\n\n this.loadingStatus = false\n },\n async login() {\n if (!this.$refs.form.validate()) return\n\n if (this.mfaToken) {\n const response = await authentication.validateOTP(this.mfaToken, this.oneTimePassword)\n if (response !== null && response.sid) {\n this.$store.dispatch('raiseAlert', {\n header: 'loginsuccess',\n type: 'success',\n timeout: 3000,\n })\n this.mfaToken = null\n this.$refs.form.reset()\n this.switchToken(response.sid)\n }\n if (response == null) {\n this.$store.dispatch('raiseAlert', {\n header: 'loginfailed',\n type: 'error',\n timeout: 3000,\n })\n }\n return\n }\n const response = await authentication.authenticate(this.username, this.password)\n if (response !== null && response.sid) {\n this.$store.dispatch('raiseAlert', {\n header: 'loginsuccess',\n type: 'success',\n timeout: 3000,\n })\n this.switchToken(response.sid)\n }\n if (response !== null && response['2FAToken']) {\n this.mfaToken = response['2FAToken']\n this.$nextTick(() => {\n this.$refs.oneTimePasswordField.focus()\n })\n return\n }\n if (response === null || Object.keys(response).length === 0) {\n this.$store.dispatch('raiseAlert', {\n header: 'loginfailed',\n type: 'error',\n timeout: 3000,\n })\n }\n this.password = ''\n if (this.mfaToken) this.$refs.oneTimePasswordField.focus()\n else this.$refs.usernameField.focus()\n },\n\n switchToken(token) {\n this.loadingStatus = true\n this.$nextTick(() => {\n if (cookies.get('sid') != token) cookies.set('sid', token, { expires: 365 })\n this.$router.push({\n path: this.$route.query.redirect || '/',\n })\n })\n },\n },\n}\n</script>\n\n<style scoped>\n.wide {\n min-width: 480px;\n}\n.hero {\n background: url('https://picsum.photos/1920/1080?random');\n background-size: cover;\n background-position: center;\n height: 100vh;\n}\n.login-form {\n max-width: 100vw !important;\n margin: 0;\n}\n.overlay {\n background-color: rgba(0, 0, 0, 0.3);\n}\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./Login.vue?vue&type=template&id=46e357fc&scoped=true\"\nimport script from \"./Login.vue?vue&type=script&lang=js\"\nexport * from \"./Login.vue?vue&type=script&lang=js\"\nimport style0 from \"./Login.vue?vue&type=style&index=0&id=46e357fc&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"46e357fc\",\n null\n \n)\n\nexport default component.exports","import consts from '../store/consts'\nimport tools from './tools'\n\n/**\n * This function composes a configuration object that holds all settings that influence the UI.\n * consts.allConfig lists all settings including default values and the 'level' at which they can be overwritten (tenant/user)\n * Some of them are defined at the tenant level, some at the user level.\n *\n * @private\n * @param {String} locale used to localize date objects\n * @param {Object} userPreference userPreference object taken holding user preferences\n * @param {Object} teantConfig tenantPreference object taken holding tenant preferences\n */\nfunction loadPreferences(locale: string, userPreference: object, tenantPreference: object) {\n const activeConfig = consts.allConfig\n // Init default values\n tools.forEach(activeConfig, function(value, rootProp) {\n tools.forEach(value, function(value, prop) {\n activeConfig[rootProp][prop].value = value.default\n if (value.type == 'date') {\n activeConfig[rootProp][prop].value = new Date()\n activeConfig[rootProp][prop].value = activeConfig[rootProp][prop].value.toLocaleDateString(locale)\n //activeConfig[rootProp][prop].value = activeConfig[rootProp][prop].value.toISOString().substring(0, 10)\n }\n })\n })\n // Apply tenant settings\n tools.forEach(tenantPreference, function(value, rootProp) {\n tools.forEach(value, function(value, prop) {\n if (activeConfig[rootProp]?.[prop]?.level == 'tenant' && 'value' in value) {\n activeConfig[rootProp][prop].value = value.value\n }\n })\n })\n // Apply user settings\n tools.forEach(userPreference, function(value, rootProp) {\n tools.forEach(value, function(value, prop) {\n if (activeConfig[rootProp]?.[prop]?.level == 'user' && 'value' in value) {\n activeConfig[rootProp][prop].value = value.value\n }\n })\n })\n return activeConfig\n}\n/* Determine if a user has a particular role\n * Params:\n * roles: An array of roles the user has\n * role: Comma separated string of role(s) or role-prefix(es) to verify\n *\n *\n * Returns true if one of the roles in \"role\" appears in the array \"roles\"\n * If \"role\" is empty, no role is needed so access is granted\n * A role can either be a fully qualified string that needs to match exactly with a given role in \"roles\"\n * or it can be a prefix for one of the role patterns ...-user, ..._user, ...-admin\n */\nfunction hasRole(roles, role) {\n if (!role) return true\n if (!roles) return false\n let hasRole = false\n if (!Array.isArray(role)) role = role.split(',')\n role.forEach((oneRole) => {\n if (\n roles.indexOf(oneRole + '-user') >= 0 ||\n roles.indexOf(oneRole + '_user') >= 0 ||\n roles.indexOf(oneRole + '-admin') >= 0 ||\n roles.indexOf(oneRole + '_admin') >= 0 ||\n roles.indexOf(oneRole + '-consultant') >= 0 ||\n roles.indexOf(oneRole) >= 0\n ) {\n hasRole = true\n }\n })\n return hasRole\n}\n\nfunction hasDataProviderSubscription(dataProvider, state) {\n return state.activeConfig.partnerchannels[dataProvider]?.value\n}\n\nexport default {\n loadPreferences,\n hasRole,\n hasDataProviderSubscription,\n}\n","import { NavigationGuardNext, Route } from 'vue-router'\nimport cookies from 'js-cookie'\nimport tools from '../functions/tools'\nimport webServices from '../functions/webServicesFacade'\nimport store from '../store/index'\nimport { PageI } from '../functions/mainMenu'\nimport { getSession } from '../functions/getSession'\n\nasync function tokenAuthentication() {\n const params = tools.parseParams(window.location.search)\n const token = cookies.get('sid')\n if (params?.sid == undefined && token == undefined) return false\n if (params?.sid && token !== params.sid) cookies.set('sid', params.sid, { expires: 365 })\n\n try {\n const userResponse = await webServices.getMe()\n if (userResponse?.data?.data?.redirect && !window.location.href.includes('beta.latestcollection.fashion') && !window.location.href.includes('127.0.0.1'))\n window.location.href = 'https://www.latestcollection.fashion'\n const onboardFlow = userResponse?.data?.data?.onboardFlow\n if (onboardFlow)\n store.dispatch('raiseAlert', {\n header: 'onboard_header_' + onboardFlow,\n body: 'onboard_body_' + onboardFlow,\n type: 'info',\n })\n store.dispatch('setUser', userResponse.data.data)\n store.dispatch('setAuthentication', true)\n return await store.dispatch('loadDB')\n } catch (e) {\n store.dispatch('setLoadingStatus', 'not loading')\n return false\n }\n}\n\n// `pages` is the object holding all the mainMenu info found in mainMenu.ts\n// Calculate authorized paths from authorized pages\n// Therefore configuring the `pages` object will automatically add navigation guards\nfunction authorizedPaths(authorizedPages: PageI[]): string[] {\n const paths = authorizedPages.reduce((pathsList: string[], page: PageI) => {\n if (!page.children) {\n pathsList.push(page.link)\n return pathsList\n }\n const childrenPaths = []\n page.children.forEach((childPage: PageI): void => {\n childrenPaths.push(childPage.link)\n })\n return pathsList.concat(childrenPaths)\n }, [])\n\n // assume acces to `/` when access to `/products` is granted\n // as set in the router but not in the main menu\n if (paths.find((path: string): boolean => path === '/products')) paths.push('/')\n return paths\n}\n\n// Determine if a user is authenticated and they are allowed by their role\nfunction canNavigate(to: Route): boolean {\n const current_tenant = getSession().current_tenant\n if (getSession().roles[current_tenant]?.includes('sw-admin')) return true\n const authenticated = store.state.authenticated\n const authorizedPathsList = authorizedPaths(store.getters.authorizedPagesList)\n const requestedPath = decodeURIComponent(to.fullPath)\n const authorized = authorizedPathsList.includes(requestedPath)\n\n // For the links like '/reports?type=stock&filter=&groups=sku.brand&fields=41&period=TODAY&orderby=g0&sortorder=&reportViz=matrix'\n // They may navigate to page stock but this whole link doesn't exist on authorizedPathsList\n // So here the filtering options are allowed for who is allowed to view the page\n if (authenticated && !authorized) {\n const requestedPathFirstPart = requestedPath.split('&')[0]\n for (const path of authorizedPathsList) if (path.split('&')[0] === requestedPathFirstPart) return true\n\n // For the paths like '/skueditor?masterdata=true&filter=brand==\"masterdata\"'\n // If the requested link doesn't include masterdata so the user may navigate to that view\n // The user must also be authorized to navigate to the path like /skueditor\n const stringsShouldNotExist = ['masterdata', '/transactions?type', '/reports?type', '/loadbalancer?type']\n if (!stringsShouldNotExist.some((path) => requestedPath.includes(path)) && authorizedPathsList.includes(to.path)) return true\n }\n\n const alwaysAllowed = ['/login', '/signup'].includes(to.path)\n return (authenticated && authorized) || alwaysAllowed\n}\n\nexport default async function(to: Route, from: Route, next: NavigationGuardNext): Promise<void> {\n if (!store.state.authenticated) await tokenAuthentication()\n if (to.name == 'logout') store.state.editing = false\n if (store.state.editing) {\n store.dispatch('raiseAlert', {\n header: 'stillediting',\n type: 'warning',\n timeout: 5000,\n })\n next(false)\n } else if (canNavigate(to)) {\n next()\n } else if (!store.state.authenticated) {\n next(`/login?redirect=${encodeURIComponent(to.fullPath)}`)\n } else if (!authorizedPaths(store.getters.authorizedPagesList).includes(to.fullPath)) {\n next({ path: '/login', query: { popup: 'noRole', redirect: encodeURIComponent(to.fullPath) } })\n } else next()\n}\n","import Vue from 'vue'\nimport VueRouter, { RouteConfig } from 'vue-router'\nimport routerNavigationGuards from '@/functions/routerNavigationGuards'\n\nVue.use(VueRouter)\n\n// Lazy load views\nconst routes: Array<RouteConfig> = [\n {\n path: '/',\n name: 'Home',\n component: () => import('../views/Products.vue'),\n },\n {\n path: '/account',\n name: 'Account',\n component: () => import('../views/Account.vue'),\n },\n {\n path: '/about',\n name: 'About',\n component: () => import('../views/About.vue'),\n },\n { path: '/buy', name: 'Buy', component: () => import('../views/Buy.vue') },\n {\n path: '/campaigns',\n name: 'Campaigns',\n component: () => import('../views/Campaigns.vue'),\n },\n {\n path: '/customers',\n name: 'Customers',\n component: () => import('../views/Customers.vue'),\n },\n {\n path: '/consumers',\n name: 'Consumers',\n component: () => import('../views/Consumers.vue'),\n },\n {\n path: '/b2csales',\n name: 'B2CSales',\n component: () => import('../views/B2CSales.vue'),\n },\n {\n path: '/dashboard',\n name: 'Dashboard',\n component: () => import('../views/Dashboard.vue'),\n },\n {\n path: '/brandMetadata',\n name: 'BrandMetadata',\n component: () => import('../views/BrandMetadata.vue'),\n },\n {\n path: '/dba',\n name: 'DBA',\n component: () => import('../views/Dba.vue'),\n },\n {\n path: '/error',\n name: 'Error',\n component: () => import('../views/Error.vue'),\n },\n {\n path: '/eventlog',\n name: 'eventlog',\n component: () => import('../views/Eventlog.vue'),\n props: (route) => {\n return { query: route.query }\n },\n },\n {\n path: '/glossary',\n name: 'glossary',\n component: () => import('../views/Glossary.vue'),\n props: (route) => {\n return { query: route.query }\n },\n },\n {\n path: '/inbox',\n name: 'Inbox',\n component: () => import('../views/Inbox.vue'),\n },\n {\n path: '/inventory',\n name: 'Inventory',\n component: () => import('../views/Inventory.vue'),\n props: (route) => {\n return { query: route.query }\n },\n },\n {\n path: '/invoices',\n name: 'Invoices',\n component: () => import('../views/Invoices.vue'),\n },\n {\n path: '/layouts',\n name: 'Layouts',\n component: () => import('../views/Layouts.vue'),\n },\n {\n path: '/organization',\n name: 'Organization',\n component: () => import('../views/Organization.vue'),\n },\n {\n path: '/products',\n name: 'Products',\n component: () => import('../views/Products.vue'),\n props: (route) => {\n return { query: route.query }\n },\n },\n {\n path: '/purchaseorders',\n name: 'PurchaseOrders',\n component: () => import('../views/PurchaseOrders.vue'),\n props: (route) => ({ brand: route.query.brand }),\n },\n {\n path: '/receivings',\n name: 'Receivings',\n component: () => import('../views/Receivings.vue'),\n props: (route) => ({ brand: route.query.brand }),\n },\n {\n path: '/reports',\n name: 'Reports',\n component: () => import('../views/Reports.vue'),\n props: (route) => ({ query: route.query }),\n },\n {\n path: '/salesorders',\n name: 'SalesOrders',\n component: () => import('../views/SalesOrders.vue'),\n },\n {\n path: '/skueditor',\n name: 'SkuEditor',\n props: (route) => ({ filter: route.query.filter, redirect: route.query.redirect }),\n component: () => import('../views/SkuEditor.vue'),\n },\n {\n path: '/partnertokens',\n name: 'Partnertokens',\n component: () => import('../views/Partnertokens.vue'),\n },\n {\n path: '/preferences',\n name: 'Preferences',\n component: () => import('../views/Preferences.vue'),\n },\n {\n path: '/sizeordering',\n name: 'SizeOrdering',\n component: () => import('../views/SizeOrdering.vue'),\n },\n {\n path: '/tenants',\n name: 'Tenants',\n component: () => import('../views/Tenants.vue'),\n props: (route) => {\n return { query: route.query }\n },\n },\n {\n path: '/tools',\n name: 'Tools',\n component: () => import('../views/Tools.vue'),\n props: (route) => {\n return { query: route.query }\n },\n },\n {\n path: '/transactions',\n name: 'Transactions',\n component: () => import('../views/Transactions.vue'),\n props: (route) => {\n return { query: route.query }\n },\n },\n {\n path: '/transit',\n name: 'Transit',\n component: () => import('../views/Transit.vue'),\n },\n {\n path: '/subscribe',\n name: 'Subscribe',\n component: () => import('../views/Subscribe.vue'),\n props: (route) => {\n return { query: route.query }\n },\n },\n {\n path: '/storybook',\n name: 'Storybook',\n component: () => import('../views/Storybook.vue'),\n props: (route) => {\n return { query: route.query }\n },\n },\n {\n path: '/dev',\n name: 'Developertools',\n component: () => import('../views/dev.vue'),\n },\n {\n path: '/warehouse',\n name: 'Warehouse',\n component: () => import('../views/Warehouse.vue'),\n props: (route) => {\n return { query: route.query }\n },\n },\n {\n path: '/template',\n name: 'template',\n component: () => import('../views/template.vue'),\n props: (route) => {\n return { query: route.query }\n },\n },\n {\n path: '/docs',\n name: 'docs',\n component: () => import('../views/docs.vue'),\n props: (route) => {\n return { query: route.query }\n },\n },\n {\n path: '/FAQ',\n name: 'FAQ',\n component: () => import('../views/FAQ.vue'),\n props: (route) => {\n return { query: route.query }\n },\n },\n {\n path: '/keyboardshortcuts',\n name: 'keyboardshortcuts',\n component: () => import('../views/Keyboardshortcuts.vue'),\n props: (route) => {\n return { query: route.query }\n },\n },\n {\n path: '/login',\n name: 'login',\n component: () => import('../views/Login.vue'),\n },\n {\n path: '/logout',\n name: 'logout',\n component: () => import('../views/Logout.vue'),\n },\n {\n path: '/signup',\n name: 'signup',\n component: () => import('../views/SignUp.vue'),\n props: (route) => {\n return { query: route.query }\n },\n },\n {\n path: '/matrixeditor',\n name: 'MatrixEditor',\n component: () => import('../views/MatrixEditor.vue'),\n props: (route) => ({ sku: route.query.sku, from: route.query.from }),\n },\n {\n path: '/matrixpoc',\n name: 'matrixpoc',\n component: () => import('../components/swMatrixPOC.vue'),\n },\n { path: '*', name: 'for-o-for', component: () => import('../views/404.vue') },\n {\n path: '/loadbalancer',\n name: 'Loadbalancer',\n component: () => import('../views/loadbalancer/LoadbalancerRouter.vue'),\n props: (route) => {\n return { query: route.query }\n },\n },\n]\n\nconst router = new VueRouter({\n mode: 'history',\n base: process.env.BASE_URL,\n routes,\n scrollBehavior(to) {\n if (to.hash) return { selector: to.hash }\n },\n})\n\nrouter.beforeEach((to, from, next) => {\n routerNavigationGuards(to, from, next)\n})\n\nexport { routes, router }\n","export * from \"-!../../node_modules/mini-css-extract-plugin/dist/loader.js??ref--7-oneOf-1-0!../../node_modules/css-loader/dist/cjs.js??ref--7-oneOf-1-1!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/loaders/stylePostLoader.js!../../node_modules/postcss-loader/src/index.js??ref--7-oneOf-1-2!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./Login.vue?vue&type=style&index=0&id=46e357fc&prod&scoped=true&lang=css\"","var render = function render(){var _vm=this,_c=_vm._self._c,_setup=_vm._self._setupProxy;return _c('v-app',[(_vm.$route.name !== 'login' && _vm.$route.name !== 'signup')?_c('div',[_c('nav',[_c('v-app-bar',{class:_vm.hazard,staticStyle:{\"opacity\":\"0.96\",\"z-index\":\"6\"},attrs:{\"app\":\"\",\"flat\":\"\"}},[_c('v-toolbar-title',[(!_vm.$store.state.drawer)?_c('span',[_c('v-img',{attrs:{\"width\":\"90px\",\"contain\":\"\",\"src\":_vm.logoUrl},on:{\"click\":function($event){_vm.$store.state.drawer = true}}})],1):_vm._e()]),_c('v-spacer'),(_vm.appFilterMode)?_c('v-text-field',{directives:[{name:\"show\",rawName:\"v-show\",value:(_vm.$store.state.authenticated),expression:\"$store.state.authenticated\"}],ref:\"app-filter\",staticClass:\"px-1\",attrs:{\"outlined\":\"\",\"background-color\":\"white\",\"clearable\":\"\",\"hide-details\":\"\",\"dense\":\"\",\"fab\":\"\",\"data-test\":\"app-filter\",\"label\":_vm.$store.state.mainFilterPrompt,\"prepend-inner-icon\":\"mdi-magnify\"},model:{value:(_vm.$store.state.rawFilter),callback:function ($$v) {_vm.$set(_vm.$store.state, \"rawFilter\", $$v)},expression:\"$store.state.rawFilter\"}}):_vm._e(),_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.$store.state.loading && _vm.$store.state.skuLoading),expression:\"!$store.state.loading && $store.state.skuLoading\"}]},[_c('v-progress-circular',{attrs:{\"width\":2,\"size\":20,\"color\":\"grey darken-1\",\"indeterminate\":\"\"}})],1),(_vm.productPickerMode)?_c('v-autocomplete',{ref:\"productPicker\",staticClass:\"px-1 pr-0\",attrs:{\"outlined\":\"\",\"background-color\":\"white\",\"clearable\":\"\",\"open-on-clear\":\"\",\"hide-details\":\"\",\"dense\":\"\",\"fab\":\"\",\"data-test\":\"productPicker\",\"label\":`${_vm.swT('search_by')} ${_vm.swT('sku.' + _vm.$store.state.appFilterBySelectedKey)}`,\"items\":_vm.$store.state.productPickerItems,\"item-text\":_vm.$store.state.appFilterBySelectedKey,\"item-value\":_vm.$store.state.appFilterBySelectedKey},scopedSlots:_vm._u([{key:\"item\",fn:function(data){return [[_c('v-card',{staticClass:\"ma-2 ml-n2\",attrs:{\"elevation\":\"2\"}},[_c('v-expand-transition',{attrs:{\"appear\":\"\"}},[(data.item.IMAGES && data.item.IMAGES.length > 0)?_c('v-img',{attrs:{\"src\":_vm.imageSrc(data.item.IMAGES[0].url, 150),\"max-width\":\"75\"}}):_vm._e()],1)],1),_c('v-list-item-content',[_c('v-list-item-title',{staticClass:\"blue--text\",domProps:{\"innerHTML\":_vm._s(data.item[_vm.$store.state.appFilterBySelectedKey])}}),(_vm.$store.state.appFilterBySelectedKey !== 'articleCodeSupplier')?_c('v-list-item-subtitle',[_vm._v(_vm._s(data.item.articleCodeSupplier))]):_vm._e(),(_vm.$store.state.appFilterBySelectedKey !== 'articleGroup')?_c('v-list-item-subtitle',[_vm._v(_vm._s(data.item.articleGroup))]):_vm._e(),(_vm.$store.state.appFilterBySelectedKey !== 'articleDescription')?_c('div',[_vm._v(\" \"+_vm._s(data.item.articleDescription)+\" \")]):_vm._e()],1)]]}},{key:\"append\",fn:function(){return [(['/receivings', '/inventory', '/products'].includes(_vm.$route.path))?_c('v-img',{staticClass:\"mr-2\",staticStyle:{\"filter\":\"grayscale(1)\",\"cursor\":\"pointer\"},attrs:{\"width\":_vm.$vuetify.breakpoint.smAndDown ? '20px' : '35px',\"contain\":\"\",\"src\":require(\"./assets/barcode-logo.png\"),\"data-test\":\"activateBarcodeMode\",\"small\":_vm.$vuetify.breakpoint.smAndDown},on:{\"click\":_vm.switchToBarcodeMode}}):_vm._e()]},proxy:true},{key:\"prepend-inner\",fn:function(){return [[_c('v-menu',{attrs:{\"left\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-icon',_vm._g(_vm._b({attrs:{\"small\":_vm.$vuetify.breakpoint.smAndDown}},'v-icon',attrs,false),on),[_vm._v(\"mdi-menu\")])]}}],null,false,3158670572)},[_c('v-list',_vm._l((_vm.$store.state.appFilterByList),function(property){return _c('v-list-item',{key:property,staticClass:\"d-flex align-center\"},[_c('div',{class:_vm.$store.state.appFilterBySelectedKey === property ? 'blue--text' : '',on:{\"click\":function($event){_vm.$store.state.appFilterBySelectedKey = property}}},[_vm._v(\" \"+_vm._s(_vm.swT('sku.' + property))+\" \")])])}),1)],1)]]},proxy:true}],null,false,805791876),model:{value:(_vm.$store.state.productPicker),callback:function ($$v) {_vm.$set(_vm.$store.state, \"productPicker\", $$v)},expression:\"$store.state.productPicker\"}}):_vm._e(),(_vm.barcodeScannerMode)?_c('v-text-field',{ref:\"barcodeScanner\",attrs:{\"outlined\":\"\",\"background-color\":\"white\",\"clearable\":\"\",\"hide-details\":\"\",\"prepend-inner-icon\":\"mdi-magnify\",\"dense\":\"\",\"fab\":\"\",\"label\":\"Scan barcode\",\"data-test\":\"scanBarcodeTextField\"},on:{\"paste\":function($event){return _vm.pasteBarcode()},\"keyup\":function($event){if(!$event.type.indexOf('key')&&_vm._k($event.keyCode,\"enter\",13,$event.key,\"Enter\"))return null;return _vm.scanBarcode()}},scopedSlots:_vm._u([{key:\"append\",fn:function(){return [(_vm.$route.path === '/products')?_c('v-tooltip',{attrs:{\"bottom\":\"\",\"color\":\"warning\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-img',{staticStyle:{\"cursor\":\"pointer\"},attrs:{\"width\":\"35px\",\"contain\":\"\",\"data-test\":\"deactivateBarcodeMode\",\"src\":require(\"./assets/barcode-logo.png\")},on:{\"load\":_vm.showTooltip,\"click\":_vm.switchToAppFiterMode}})]}}],null,false,2971089734),model:{value:(_vm.showSwitchedToBarcodeModeToolTip),callback:function ($$v) {_vm.showSwitchedToBarcodeModeToolTip=$$v},expression:\"showSwitchedToBarcodeModeToolTip\"}},[_c('span',[_vm._v(_vm._s(_vm.swT('swiched_to_barcode_mode')))])]):_c('v-img',{staticStyle:{\"cursor\":\"pointer\"},attrs:{\"width\":\"35px\",\"contain\":\"\",\"data-test\":\"deactivateBarcodeMode\",\"src\":require(\"./assets/barcode-logo.png\")},on:{\"click\":_vm.switchToProductMode}})]},proxy:true}],null,false,98864188),model:{value:(_vm.barcode),callback:function ($$v) {_vm.barcode=$$v},expression:\"barcode\"}}):_vm._e(),_c('v-spacer'),(_vm.$store.state.info.data.length)?_c('swInfo'):_vm._e(),(_vm.$store.state.editing)?_c('swSaveCancel'):_vm._e(),_c('div',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.$store.state.authenticated),expression:\"!$store.state.authenticated\"}]},[_c('v-menu',{attrs:{\"offset-y\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-btn',_vm._g(_vm._b({staticStyle:{\"min-width\":\"26px !important\"},attrs:{\"color\":\"white\",\"small\":\"\"}},'v-btn',attrs,false),on),[_vm._v(\" \"+_vm._s(_vm.language)+\" \")])]}}],null,false,4205269786)},[_c('v-list',_vm._l((_vm.languages),function(item,index){return _c('v-list-item',{key:index,on:{\"click\":function($event){_vm.$vuetify.lang.locale = _vm.language = item.code}}},[_c('v-list-item-title',[_vm._v(_vm._s(item.label))])],1)}),1)],1)],1),_c('swAuth',{attrs:{\"role\":\"lc-b2b,lc-data-only\"}},[(_vm.$store.state.b2bBasketCount == 0)?_c('v-icon',{staticClass:\"ma-0\",attrs:{\"left\":\"\"},on:{\"click\":function($event){_vm.$store.state.b2bDrawer = !_vm.$store.state.b2bDrawer}}},[_vm._v(\"mdi-shopping-outline\")]):_c('v-icon',{staticClass:\"ma-0\",attrs:{\"left\":\"\"},on:{\"click\":function($event){_vm.$store.state.b2bDrawer = !_vm.$store.state.b2bDrawer}}},[_vm._v(\"mdi-shopping\")])],1),(!_vm.$store.state.editing)?_c('v-app-bar-nav-icon',{attrs:{\"data-test\":\"hamburger\"},on:{\"click\":_vm.toggleDrawer}}):_vm._e()],1)],1),_c('v-navigation-drawer',{directives:[{name:\"hotkey\",rawName:\"v-hotkey\",value:(_vm.keymap()),expression:\"keymap()\"}],staticClass:\"sw-grey\",attrs:{\"data-test\":\"drawer\",\"app\":\"\",\"fixed\":\"\"},model:{value:(_vm.$store.state.drawer),callback:function ($$v) {_vm.$set(_vm.$store.state, \"drawer\", $$v)},expression:\"$store.state.drawer\"}},[_c('v-subheader',{staticClass:\"white display-1 thin py-12\",staticStyle:{\"height\":\"128px\"}},[_c('v-img',{attrs:{\"src\":_vm.logoUrl},on:{\"click\":function($event){_vm.$store.state.drawer = false}}})],1),(_vm.getSession().settings.user.username)?_c('div',{staticClass:\"username pt-4 px-4 text-h6 text-truncate\"},[_vm._v(_vm._s(_vm.getSession().settings.user.username))]):_vm._e(),_c('swAuth',{attrs:{\"role\":\"sw\"}},[(!_vm.$store.state.editing)?_c('v-switch',{staticClass:\"pa-0 pl-2\",attrs:{\"label\":\"Show roles\",\"dark\":\"\",\"dense\":\"\",\"hide-details\":\"\"},model:{value:(_vm.showRoles),callback:function ($$v) {_vm.showRoles=$$v},expression:\"showRoles\"}}):_vm._e()],1),(_vm.$store.state.authenticated && !_vm.$store.state.editing)?_c('v-treeview',{staticClass:\"drawer__treeview pt-2\",attrs:{\"dark\":\"\",\"open\":_vm.open,\"items\":_vm.menuItems,\"dense\":\"\",\"animation\":\"\",\"item-key\":\"name\",\"transition\":\"\",\"open-on-click\":\"\"},scopedSlots:_vm._u([{key:\"label\",fn:function({ item }){return [(item.link && item.link.slice(0, 4) == 'http' && item.sid == true)?_c('a',{staticClass:\"white--text\",attrs:{\"href\":`${item.link}?sid=${_vm.cookies.get('sid')}`,\"target\":\"_blank\"}},[_c('swNavigationItemText',{attrs:{\"item\":item,\"show-roles\":_vm.showRoles}})],1):(item.link && item.link.slice(0, 4) == 'http' && !item.sid == true)?_c('a',{staticClass:\"white--text\",attrs:{\"href\":item.link,\"target\":\"_blank\"}},[_c('swNavigationItemText',{attrs:{\"item\":item,\"show-roles\":_vm.showRoles}})],1):(item.link)?_c('router-link',{staticClass:\"white--text\",attrs:{\"to\":item.link,\"data-test\":item.name}},[_c('swNavigationItemText',{attrs:{\"item\":item,\"show-roles\":_vm.showRoles}})],1):_c('span',{attrs:{\"data-test\":item.name}},[_c('swNavigationItemText',{attrs:{\"item\":item,\"show-roles\":_vm.showRoles}})],1)]}}],null,false,1752280536),model:{value:(_vm.tree),callback:function ($$v) {_vm.tree=$$v},expression:\"tree\"}}):_vm._e(),_c('swAuth',{attrs:{\"role\":\"lc-b2b,lc-data-only\"}},[_c('template',{slot:\"otherwise\"},[_c('div',{staticClass:\"py-0 ma-0 px-2 caption\"},[_c('v-progress-linear',{attrs:{\"buffer-value\":\"100\",\"color\":\"error\",\"background-color\":\"success\",\"rounded\":\"\"},model:{value:(_vm.percentageBarcodesUsed),callback:function ($$v) {_vm.percentageBarcodesUsed=$$v},expression:\"percentageBarcodesUsed\"}}),_vm._v(\" \"+_vm._s(_vm.percentageBarcodesUsed)+\" % of \"+_vm._s(_vm.maxBarcodes)+\" barcodes used \")],1),(_vm.percentageConsumersUsed)?_c('div',{staticClass:\"py-0 ma-0 px-2 caption\"},[_c('v-progress-linear',{attrs:{\"buffer-value\":\"100\",\"color\":\"error\",\"background-color\":\"success\",\"rounded\":\"\"},model:{value:(_vm.percentageConsumersUsed),callback:function ($$v) {_vm.percentageConsumersUsed=$$v},expression:\"percentageConsumersUsed\"}}),_vm._v(\" \"+_vm._s(_vm.percentageConsumersUsed)+\" % of \"+_vm._s(_vm.maxConsumers)+\" consumers used \")],1):_vm._e()])],2)],1),_c('swAuth',{attrs:{\"role\":\"lc-b2b,lc-data-only\"}},[_c('v-navigation-drawer',{attrs:{\"fixed\":\"\",\"app\":\"\",\"right\":\"\",\"width\":\"320\"},model:{value:(_vm.$store.state.b2bDrawer),callback:function ($$v) {_vm.$set(_vm.$store.state, \"b2bDrawer\", $$v)},expression:\"$store.state.b2bDrawer\"}},[_c('swShoppingBagDrawer')],1)],1),_c('v-main',{staticClass:\"mx-0\"},[_c('v-overlay',{attrs:{\"value\":_vm.$store.state.loading}},[_c('v-img',{attrs:{\"src\":_vm.animationUrl,\"contain\":\"\",\"max-height\":\"80vh\"}})],1),_c('div',{staticClass:\"main-height\"},[_c('v-expand-transition',[(_vm.$store.state.info.showInfoDrawer)?_c('div',_vm._l((_vm.$store.getters.prioritizedInfo),function(info,id){return _c('div',{key:id},[(info.component)?_c('v-card',[_c('v-card-text',[_c(info.component,{tag:\"component\"})],1)],1):_vm._e(),(info.drawerContent)?_c('v-card',{attrs:{\"tile\":\"\",\"text\":\"\"}},[_c('v-card-title',{attrs:{\"primary-title\":\"\"}},[_vm._v(\" \"+_vm._s(info.title)+\" \")]),_c('v-card-text',{domProps:{\"innerHTML\":_vm._s(info.drawerContent)}})],1):_vm._e()],1)}),0):_vm._e()]),_vm._l((_vm.$store.state.alerts),function(alert,$alertIndex){return _c('v-alert',{key:$alertIndex,staticClass:\"mb-0 pa-5 alert\",attrs:{\"text\":alert.prominent,\"prominent\":alert.prominent,\"dismissible\":\"\",\"type\":alert.type,\"data-test\":`alert-${alert.type}`},model:{value:(alert.state),callback:function ($$v) {_vm.$set(alert, \"state\", $$v)},expression:\"alert.state\"}},[_c('b',[_vm._v(_vm._s(_vm.swT(alert.header, alert.headerTranslationPluralization)))]),(alert.youtube)?_c('p',[_c('iframe',{attrs:{\"src\":alert.youtube,\"frameborder\":\"0\",\"allowfullscreen\":\"\"}})]):_vm._e(),(alert.image)?_c('p',[_c('v-img',{attrs:{\"src\":alert.image}})],1):_vm._e(),(alert.body)?_c('p',[_vm._v(_vm._s(_vm.swT(alert.body)))]):_vm._e(),(alert.text)?_c('pre',[_vm._v(_vm._s(alert.text))]):_vm._e()])}),_c('keep-alive',{attrs:{\"exclude\":\"Reports,Receivings,PurchaseOrders,SkuEditor,SwSkuEditor\"}},[(_vm.$store.state.loadingStatus != 'loading')?_c('router-view',{key:_vm.$route.fullPath}):_c('div',[_c('v-img',{attrs:{\"src\":_vm.animationUrl,\"contain\":\"\",\"max-height\":\"80vh\"}})],1)],1)],2),(_vm.displayPagination)?_c('div',{staticClass:\"bottom-sticky text-center py-1\"},[_c('v-pagination',{attrs:{\"length\":_vm.$store.state.paginationTotalPages,\"total-visible\":10,\"circle\":\"\"},model:{value:(_vm.$store.state.paginationCurrentPage),callback:function ($$v) {_vm.$set(_vm.$store.state, \"paginationCurrentPage\", $$v)},expression:\"$store.state.paginationCurrentPage\"}})],1):_vm._e()],1)],1):(_vm.$route.name == 'login')?_c('div',[_vm._l((_vm.$store.state.alerts),function(alert,$alertIndex){return _c('v-alert',{key:$alertIndex,staticClass:\"mb-0 pa-5\",attrs:{\"dismissible\":\"\",\"type\":alert.type},model:{value:(alert.state),callback:function ($$v) {_vm.$set(alert, \"state\", $$v)},expression:\"alert.state\"}},[_c('b',[_vm._v(_vm._s(_vm.swT(alert.header)))]),(alert.body)?_c('p',[_vm._v(_vm._s(_vm.swT(alert.body)))]):_vm._e()])}),_c('Login')],2):(_vm.$route.name == 'signup')?_c('div',[_vm._l((_vm.$store.state.alerts),function(alert,$alertIndex){return _c('v-alert',{key:$alertIndex,staticClass:\"mb-0 pa-5\",attrs:{\"dismissible\":\"\",\"type\":alert.type},model:{value:(alert.state),callback:function ($$v) {_vm.$set(alert, \"state\", $$v)},expression:\"alert.state\"}},[_c('b',[_vm._v(_vm._s(_vm.swT(alert.header)))]),(alert.body)?_c('p',[_vm._v(_vm._s(_vm.swT(alert.body)))]):_vm._e()])}),_c('SignUp')],2):_vm._e()])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',{class:_vm.showRoles ? 'caption d-flex' : 'd-flex',on:{\"click\":function($event){return _vm.callback()}}},[_c('v-icon',[_vm._v(_vm._s(_vm.item.icon))]),_c('span',{staticClass:\"ml-2 mr-1 text-truncate\"},[_vm._v(\" \"+_vm._s(_vm.swT(_vm.item.name))+\" \"),(_vm.item.unreadCount > 0)?_c('v-chip',{attrs:{\"small\":\"\"}},[_vm._v(_vm._s(_vm.item.unreadCount))]):_vm._e()],1),(_vm.item.beta)?_c('span',{staticClass:\"pr-4 warning--text ml-auto\"},[_vm._v(\"beta\")]):_vm._e(),(_vm.showRoles)?_c('span',{staticClass:\"caption pa-0 ma-0 green--text\"},[_c('br'),_vm._v(\" \"+_vm._s(_vm.item.role)+\" \")]):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <span :class=\"showRoles ? 'caption d-flex' : 'd-flex'\" @click=\"callback()\">\n <v-icon>{{ item.icon }}</v-icon>\n <span class=\"ml-2 mr-1 text-truncate\">\n {{ swT(item.name) }}\n <v-chip v-if=\"item.unreadCount > 0\" small>{{ item.unreadCount }}</v-chip>\n </span>\n <span v-if=\"item.beta\" class=\"pr-4 warning--text ml-auto\">beta</span>\n <span v-if=\"showRoles\" class=\"caption pa-0 ma-0 green--text\">\n <br />\n {{ item.role }}\n </span>\n </span>\n</template>\n\n<script>\nimport { swT } from '@/functions/i18n'\nimport { eventBus } from '../main'\n\nexport default {\n props: ['item', 'showRoles'],\n data() {\n return {\n swT,\n }\n },\n methods: {\n callback() {\n if (['/receivings', '/purchaseorders'].includes(this.item.path)) {\n eventBus.$emit('resetGenericView')\n }\n if (this.item.path == '/skueditor') {\n eventBus.$emit('resetSkuEditor')\n }\n },\n },\n}\n</script>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./swNavigationItemText.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./swNavigationItemText.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./swNavigationItemText.vue?vue&type=template&id=3c499cf2\"\nimport script from \"./swNavigationItemText.vue?vue&type=script&lang=js\"\nexport * from \"./swNavigationItemText.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[(_vm.$vuetify.breakpoint.xs)?_c('div',{staticClass:\"savecancel\"},[_c('v-btn',{staticClass:\"mr-2 py-5 success\",attrs:{\"data-test\":\"saveButton\",\"disabled\":!_vm.$store.state.activeFormValid,\"small\":\"\"},on:{\"click\":_vm.save}},[_c('v-icon',[_vm._v(\"mdi-check\")])],1),_c('v-btn',{staticClass:\"py-5 error\",attrs:{\"data-test\":\"cancelButton\",\"small\":\"\"},on:{\"click\":_vm.cancel}},[_c('v-icon',[_vm._v(\"mdi-close\")])],1)],1):_c('div',[_c('v-btn',{staticClass:\"mx-2 success\",attrs:{\"data-test\":\"saveButton\",\"data-cy\":`saveButton-disabled-${!_vm.$store.state.activeFormValid}`,\"disabled\":!_vm.$store.state.activeFormValid},on:{\"click\":_vm.save}},[_vm._v(\" \"+_vm._s(_vm.swT('save'))+\" \")]),_c('v-btn',{staticClass:\"mx-2 error\",attrs:{\"data-test\":\"cancelButton\"},on:{\"click\":_vm.cancel}},[_vm._v(\" \"+_vm._s(_vm.swT('cancel'))+\" \")])],1)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <div>\n <div v-if=\"$vuetify.breakpoint.xs\" class=\"savecancel\">\n <v-btn class=\"mr-2 py-5 success\" data-test=\"saveButton\" :disabled=\"!$store.state.activeFormValid\" small @click=\"save\">\n <v-icon>mdi-check</v-icon>\n </v-btn>\n <v-btn class=\"py-5 error\" data-test=\"cancelButton\" small @click=\"cancel\">\n <v-icon>mdi-close</v-icon>\n </v-btn>\n </div>\n <div v-else>\n <v-btn class=\"mx-2 success\" data-test=\"saveButton\" :data-cy=\"`saveButton-disabled-${!$store.state.activeFormValid}`\" :disabled=\"!$store.state.activeFormValid\" @click=\"save\">\n {{ swT('save') }}\n </v-btn>\n <v-btn class=\"mx-2 error\" data-test=\"cancelButton\" @click=\"cancel\">\n {{ swT('cancel') }}\n </v-btn>\n </div>\n </div>\n</template>\n\n<script>\nimport { swT } from '@/functions/i18n'\nimport { eventBus } from '../main'\nexport default {\n data() {\n return {\n swT,\n // todo\n }\n },\n methods: {\n save() {\n eventBus.$emit('save')\n },\n cancel() {\n eventBus.$emit('cancel')\n },\n },\n}\n</script>\n<style scoped>\n.savecancel {\n width: 120px;\n text-align: right;\n}\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./swSaveCancel.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./swSaveCancel.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./swSaveCancel.vue?vue&type=template&id=10bc8ae1&scoped=true\"\nimport script from \"./swSaveCancel.vue?vue&type=script&lang=js\"\nexport * from \"./swSaveCancel.vue?vue&type=script&lang=js\"\nimport style0 from \"./swSaveCancel.vue?vue&type=style&index=0&id=10bc8ae1&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"10bc8ae1\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('v-tooltip',{attrs:{\"bottom\":\"\",\"color\":\"rgba(0,0,0,0)\",\"dark\":\"\"},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on }){return [_c('v-icon',_vm._g({class:_vm.shake ? 'shake' : '',on:{\"click\":_vm.infoClick}},on),[_vm._v(\"mdi-help-circle-outline\")])]}}])},[_c('v-card',{attrs:{\"elevation\":\"4\",\"width\":\"50vw\"}},_vm._l((_vm.$store.getters.prioritizedInfo),function(info,id){return _c('div',{key:id},[(info.tooltipContent)?_c('v-card-text',[_c('v-row',[_c('v-col',[_vm._v(\" \"+_vm._s(info.tooltipContent)+\" \")])],1)],1):_vm._e()],1)}),0)],1)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <div>\n <v-tooltip bottom color=\"rgba(0,0,0,0)\" dark>\n <template v-slot:activator=\"{ on }\">\n <v-icon :class=\"shake ? 'shake' : ''\" v-on=\"on\" @click=\"infoClick\">mdi-help-circle-outline</v-icon>\n </template>\n <v-card elevation=\"4\" width=\"50vw\">\n <div v-for=\"(info, id) in $store.getters.prioritizedInfo\" :key=\"id\">\n <v-card-text v-if=\"info.tooltipContent\">\n <v-row>\n <v-col>\n {{ info.tooltipContent }}\n </v-col>\n </v-row>\n </v-card-text>\n </div>\n </v-card>\n </v-tooltip>\n </div>\n</template>\n\n<script>\nexport default {\n data() {\n return {\n shake: false,\n }\n },\n watch: {\n '$store.state.info.data': {\n handler() {\n this.shake = true\n setTimeout(() => {\n this.shake = false\n }, 1500)\n },\n immediate: true,\n deep: true,\n },\n },\n methods: {\n infoClick() {\n if (this.$store.state.info.data.length) this.$store.state.info.showInfoDrawer = !this.$store.state.info.showInfoDrawer\n },\n },\n}\n</script>\n\n<style lang=\"scss\" scoped>\n.shake {\n animation: shake 1.5s ease-in-out 1;\n}\n\n@keyframes shake {\n 0% {\n transform: rotate(0deg);\n }\n 10% {\n transform: rotate(-10deg);\n }\n 20% {\n transform: rotate(10deg);\n }\n 30% {\n transform: rotate(-10deg);\n }\n 40% {\n transform: rotate(20deg);\n }\n 50% {\n transform: rotate(-20deg);\n color: green;\n }\n 60% {\n transform: rotate(20deg);\n }\n 70% {\n transform: rotate(-20deg);\n }\n 80% {\n transform: rotate(15deg);\n }\n 90% {\n transform: rotate(-15deg);\n }\n 100% {\n transform: rotate(0deg);\n }\n}\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./swInfo.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./swInfo.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./swInfo.vue?vue&type=template&id=b1d02c52&scoped=true\"\nimport script from \"./swInfo.vue?vue&type=script&lang=js\"\nexport * from \"./swInfo.vue?vue&type=script&lang=js\"\nimport style0 from \"./swInfo.vue?vue&type=style&index=0&id=b1d02c52&prod&lang=scss&scoped=true\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"b1d02c52\",\n null\n \n)\n\nexport default component.exports","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',[_c('div',{staticClass:\"sticky-0 white\"},[_c('v-row',[_c('v-col',{staticClass:\"mt-3 mb-4 ml-4 mr-0 pr-0\",attrs:{\"cols\":\"8\"}},[_c('h3',[_vm._v(_vm._s(_vm.swT('shopping_basket')))])]),_c('v-spacer'),_c('v-col',{staticClass:\"mt-3 mb-4\",attrs:{\"cols\":\"3\"}},[_c('v-icon',{attrs:{\"right\":\"\"},on:{\"click\":function($event){_vm.$store.state.b2bDrawer = false}}},[_vm._v(\"mdi-close\")])],1)],1),_c('v-row',{staticClass:\"ma-0 pa-0\"},[_c('v-col',{staticClass:\"ma-0 pa-0\"},[_c('swAuth',{attrs:{\"role\":\"lc-b2b\"}},[_c('v-btn',{staticClass:\"mx-8\",staticStyle:{\"width\":\"80%\"},attrs:{\"large\":\"\",\"color\":\"blue\",\"dark\":\"\",\"data-test\":\"checkout\"}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-shopping\")]),_vm._v(\" \"+_vm._s(_vm.swT('checkout'))+\" \")],1)],1),_c('swAuth',{attrs:{\"role\":\"lc-data-only\"}},[_c('v-btn',{staticClass:\"mx-8\",staticStyle:{\"width\":\"80%\"},attrs:{\"large\":\"\",\"color\":\"blue\",\"dark\":\"\",\"data-test\":\"sendOrder\"},on:{\"click\":_vm.sendOrder}},[_c('v-icon',{attrs:{\"left\":\"\"}},[_vm._v(\"mdi-email-fast-outline\")]),_vm._v(\" \"+_vm._s(_vm.swT('send_to_erp'))+\" \")],1)],1)],1)],1),_c('v-divider',{staticClass:\"pt-4 mt-4\"})],1),(_vm.$store.state.b2bBasketCount == 0)?_c('v-container',[_c('v-row',[_c('v-col',[_c('h4',[_vm._v(\" \"+_vm._s(_vm.swT('shopping_basket_empty'))+\" \")])])],1)],1):_c('v-container',[_vm._l((Object.entries(_vm.$store.state.b2bBasket)),function(warehouse,i){return _c('v-row',{key:i},[_c('v-col',[_c('h3',[_vm._v(_vm._s(_vm.getWarehouseById(warehouse[0]).name))]),_c('v-divider'),_vm._l((Object.entries(warehouse[1])),function(item,j){return _c('v-row',{key:j},[_c('v-col',{attrs:{\"cols\":\"4\"}},[_c('v-img',{attrs:{\"src\":_vm.imageSrc(_vm.imageFromB2bBarcode(Object.keys(item[1])[0]), 200)},on:{\"click\":function($event){return _vm.selectProduct(item[0])}}})],1),_c('v-col',{attrs:{\"cols\":\"8\"}},[_c('h5',{staticClass:\"grey--text\"},[_vm._v(_vm._s(_vm.getB2bSkuByBarcode(Object.keys(item[1])[0]).brand))]),_c('h5',[_vm._v(_vm._s(item[0]))]),_c('h5',[_vm._v(_vm._s(_vm.getB2bSkuByBarcode(Object.keys(item[1])[0]).articleDescription))]),_vm._v(\" \"+_vm._s(Object.values(item[1]).reduce((agg, qty) => agg + qty, 0))+\" \"+_vm._s(_vm.swT('pieces'))+\" \"),_c('div',{attrs:{\"align\":\"right\"}},[_c('v-icon',{on:{\"click\":function($event){return _vm.deleteProductFromBasket(warehouse[0], item[0])}}},[_vm._v(\"mdi-trash-can-outline\")])],1)])],1)})],2)],1)}),_c('v-divider'),_c('v-row',{staticClass:\"mt-0 pt-0\"},[_c('v-col',[_c('h4',[_vm._v(_vm._s(_vm.swT('total_pieces')))]),_c('h3',[_vm._v(_vm._s(_vm.swT('total')))])]),_c('v-col',{attrs:{\"align\":\"right\"}},[_c('h4',[_vm._v(_vm._s(_vm.$store.state.b2bBasketCount))]),_c('h3',[_vm._v(\"€ \"+_vm._s(_vm.$store.state.b2bBasketValue))])])],1),_c('v-divider'),_c('v-divider',{staticClass:\"mt-1\"})],2)],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <div>\n <div class=\"sticky-0 white\">\n <v-row>\n <v-col class=\"mt-3 mb-4 ml-4 mr-0 pr-0\" cols=\"8\">\n <h3>{{ swT('shopping_basket') }}</h3>\n </v-col>\n <v-spacer></v-spacer>\n <v-col class=\"mt-3 mb-4\" cols=\"3\">\n <v-icon right @click=\"$store.state.b2bDrawer = false\">mdi-close</v-icon>\n </v-col>\n </v-row>\n <v-row class=\"ma-0 pa-0\">\n <v-col class=\"ma-0 pa-0\">\n <swAuth role=\"lc-b2b\">\n <v-btn style=\"width: 80%\" class=\"mx-8\" large color=\"blue\" dark data-test=\"checkout\">\n <v-icon left>mdi-shopping</v-icon>\n {{ swT('checkout') }}\n </v-btn>\n </swAuth>\n <swAuth role=\"lc-data-only\">\n <v-btn style=\"width: 80%\" class=\"mx-8\" large color=\"blue\" dark data-test=\"sendOrder\" @click=\"sendOrder\">\n <v-icon left>mdi-email-fast-outline</v-icon>\n {{ swT('send_to_erp') }}\n </v-btn>\n </swAuth>\n </v-col>\n </v-row>\n <v-divider class=\"pt-4 mt-4\"></v-divider>\n </div>\n <v-container v-if=\"$store.state.b2bBasketCount == 0\">\n <v-row>\n <v-col>\n <h4>\n {{ swT('shopping_basket_empty') }}\n </h4>\n </v-col>\n </v-row>\n </v-container>\n <v-container v-else>\n <v-row v-for=\"(warehouse, i) of Object.entries($store.state.b2bBasket)\" :key=\"i\">\n <v-col>\n <h3>{{ getWarehouseById(warehouse[0]).name }}</h3>\n <v-divider></v-divider>\n <v-row v-for=\"(item, j) of Object.entries(warehouse[1])\" :key=\"j\">\n <v-col cols=\"4\">\n <v-img :src=\"imageSrc(imageFromB2bBarcode(Object.keys(item[1])[0]), 200)\" @click=\"selectProduct(item[0])\"></v-img>\n </v-col>\n <v-col cols=\"8\">\n <h5 class=\"grey--text\">{{ getB2bSkuByBarcode(Object.keys(item[1])[0]).brand }}</h5>\n <h5>{{ item[0] }}</h5>\n <h5>{{ getB2bSkuByBarcode(Object.keys(item[1])[0]).articleDescription }}</h5>\n {{ Object.values(item[1]).reduce((agg, qty) => agg + qty, 0) }} {{ swT('pieces') }}\n <div align=\"right\">\n <v-icon @click=\"deleteProductFromBasket(warehouse[0], item[0])\">mdi-trash-can-outline</v-icon>\n </div>\n </v-col>\n </v-row>\n </v-col>\n </v-row>\n <v-divider></v-divider>\n <v-row class=\"mt-0 pt-0\">\n <v-col>\n <h4>{{ swT('total_pieces') }}</h4>\n <h3>{{ swT('total') }}</h3>\n </v-col>\n <v-col align=\"right\">\n <h4>{{ $store.state.b2bBasketCount }}</h4>\n <h3>€ {{ $store.state.b2bBasketValue }}</h3>\n </v-col>\n </v-row>\n <v-divider></v-divider>\n <v-divider class=\"mt-1\"></v-divider>\n </v-container>\n </div>\n</template>\n\n<script>\nimport { swT } from '@/functions/i18n'\nimport globalStore from '@/store/globalStore'\nimport { eventBus } from '@/functions/eventBus'\nimport webServices from '../functions/webServicesFacade'\nimport { getSession } from '../functions/getSession'\n\nimport tools from '../functions/tools'\nimport whitelabel from '../functions/whitelabel'\nimport { showDialog } from '../functions/dialogService'\n\nexport default {\n components: {},\n data() {\n return {\n swT,\n }\n },\n computed: {},\n watch: {},\n methods: {\n getWarehouseById(id) {\n if (!id) return ''\n const warehouses = globalStore.getLatestCollectionObject('warehouse')\n return warehouses[id]\n },\n getB2bSkuByBarcode(barcode) {\n if (!barcode) return ''\n const latestCollectionBrandSkus = globalStore.getB2bSkus()\n return latestCollectionBrandSkus[barcode]\n },\n imageFromB2bBarcode(barcode) {\n if (!barcode) return ''\n const latestCollectionBrandSkus = globalStore.getB2bSkus()\n const sku = latestCollectionBrandSkus[barcode]\n if (!sku) return ''\n const images = sku.images\n if (!images) return ''\n return images.split(',')[0]\n },\n async sendOrder() {\n const tenantId = getSession().current_tenant\n if (this.$store.state.activeConfig.partnerChannels?.fashionUnited?.value) {\n const tenantGln = getSession().tenant.gln\n if (!tenantGln) return this.$store.dispatch('raiseAlert', { header: 'tenant_gln_not_configured', type: 'error', timeout: 5000 })\n }\n\n const skus = globalStore.getB2bSkus()\n\n // Create one pricat per brand\n const skusPerBrand = {} //{\"BRANDHASH\":{\"barcode\":{sku}}}\n\n Object.values(this.$store.state.b2bBasket).forEach((order) => {\n Object.values(order).forEach((lines) => {\n Object.keys(lines).forEach((barcode) => {\n const sku = skus[barcode]\n const brandHash = sku.BRANDHASH\n if (!skusPerBrand[brandHash]) skusPerBrand[brandHash] = {}\n if (!skusPerBrand[brandHash][barcode]) skusPerBrand[brandHash][barcode] = sku\n })\n })\n })\n try {\n for (const brandHash of Object.keys(skusPerBrand)) {\n await webServices.createSku(tenantId, Object.values(skusPerBrand[brandHash]))\n await webServices.createPricat(tenantId, Object.values(skusPerBrand[brandHash]), '')\n }\n this.$store.dispatch('raiseAlert', { header: 'pricat_has_been_sent', type: 'info', timeout: 5000 })\n } catch (e) {\n this.$store.dispatch('raiseAlert', { header: 'pricat_could_not_been_sent', type: 'error', timeout: 15000 })\n }\n\n // Create one order per brand per warehouse\n const qtyPerBrandPerWarehouse = {} //{\"BRANDHASH\":{\"<wh>\":{\"barcode\":<qty>}}}\n\n Object.entries(this.$store.state.b2bBasket).forEach(([wh, order]) => {\n Object.values(order).forEach((lines) => {\n Object.entries(lines).forEach(([barcode, qty]) => {\n const sku = skus[barcode]\n const brandHash = sku.BRANDHASH\n if (!qtyPerBrandPerWarehouse[brandHash]) qtyPerBrandPerWarehouse[brandHash] = {}\n if (!qtyPerBrandPerWarehouse[brandHash][wh]) qtyPerBrandPerWarehouse[brandHash][wh] = {}\n qtyPerBrandPerWarehouse[brandHash][wh][barcode] = qty\n })\n })\n })\n const purchaseOrderIdList = []\n\n const orderMethod = whitelabel.orderMethodForDomain(window.location.href)\n const mPlusKassaSupplierPerBrand = {}\n let mPlusSupplierList = []\n if (orderMethod == 'MPLUSKASSA')\n mPlusSupplierList = (await webServices.getMPlusKassaData('getRelations')).data.filter((r) => r.categoryId == '2').map((r) => ({ text: r.name, value: r.relationNumber }))\n for (const [brand, orders] of Object.entries(qtyPerBrandPerWarehouse)) {\n for (const [wh, order] of Object.entries(orders)) {\n const items = Object.entries(order).map(([barcode, qty]) => ({ barcode, qty }))\n const response = await webServices.createPurchaseOrder(tenantId, items, brand, new Date().getTime(), wh)\n if (orderMethod == 'MPLUSKASSA' && !mPlusKassaSupplierPerBrand[brand]) {\n const supplier = await showDialog('swValuePickDialog', {\n multiple: false,\n title: 'selectOne',\n items: mPlusSupplierList,\n message: 'Select a supplier from your list of known suppliers in your MPlusKassa',\n })\n if (supplier == undefined) continue\n mPlusKassaSupplierPerBrand[brand] = supplier\n }\n purchaseOrderIdList.push({ id: response.data[0].id, orderMethod: orderMethod, supplier: mPlusKassaSupplierPerBrand[brand]?.value })\n }\n }\n try {\n await webServices.sendPurchaseOrders(purchaseOrderIdList)\n this.$store.dispatch('raiseAlert', { header: 'order_has_been_sent', type: 'info', timeout: 5000 })\n } catch (e) {\n this.$store.dispatch('raiseAlert', { header: 'order_could_not_be_sent', type: 'error', timeout: 15000 })\n }\n this.$store.state.b2bBasket = {}\n this.$store.state.b2bBasketUpdateTrigger++\n this.$store.state.b2bDrawer = false\n },\n imageSrc(imageUrl, imageWidth) {\n return tools.imageUrlParse(imageUrl, imageWidth)\n },\n deleteProductFromBasket(warehouse, productCode) {\n delete this.$store.state.b2bBasket[warehouse][productCode]\n if (Object.keys(this.$store.state.b2bBasket[warehouse]).length == 0) delete this.$store.state.b2bBasket[warehouse]\n this.$store.state.b2bBasketUpdateTrigger++\n eventBus.$emit('updateB2BForm')\n this.$forceUpdate()\n },\n selectProduct(articleCodeSupplier) {\n eventBus.$emit('selectB2BProduct', articleCodeSupplier)\n },\n },\n}\n</script>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./swShoppingBagDrawer.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./swShoppingBagDrawer.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./swShoppingBagDrawer.vue?vue&type=template&id=5471341a\"\nimport script from \"./swShoppingBagDrawer.vue?vue&type=script&lang=js\"\nexport * from \"./swShoppingBagDrawer.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","<template>\n <v-app>\n <div v-if=\"$route.name !== 'login' && $route.name !== 'signup'\">\n <nav>\n <v-app-bar app flat style=\"opacity: 0.96; z-index: 6;\" :class=\"hazard\">\n <v-toolbar-title>\n <span v-if=\"!$store.state.drawer\">\n <v-img width=\"90px\" contain :src=\"logoUrl\" @click=\"$store.state.drawer = true\"></v-img>\n </span>\n </v-toolbar-title>\n\n <v-spacer></v-spacer>\n\n <!-- App Filter -->\n <v-text-field\n v-if=\"appFilterMode\"\n v-show=\"$store.state.authenticated\"\n ref=\"app-filter\"\n v-model=\"$store.state.rawFilter\"\n outlined\n background-color=\"white\"\n clearable\n hide-details\n dense\n fab\n data-test=\"app-filter\"\n :label=\"$store.state.mainFilterPrompt\"\n prepend-inner-icon=\"mdi-magnify\"\n class=\"px-1\"\n ></v-text-field>\n <span v-show=\"!$store.state.loading && $store.state.skuLoading\">\n <v-progress-circular :width=\"2\" :size=\"20\" color=\"grey darken-1\" indeterminate></v-progress-circular>\n </span>\n\n <!-- Product picker -->\n <v-autocomplete\n v-if=\"productPickerMode\"\n ref=\"productPicker\"\n v-model=\"$store.state.productPicker\"\n outlined\n background-color=\"white\"\n clearable\n open-on-clear\n hide-details\n dense\n fab\n data-test=\"productPicker\"\n class=\"px-1 pr-0\"\n :label=\"`${swT('search_by')} ${swT('sku.' + $store.state.appFilterBySelectedKey)}`\"\n :items=\"$store.state.productPickerItems\"\n :item-text=\"$store.state.appFilterBySelectedKey\"\n :item-value=\"$store.state.appFilterBySelectedKey\"\n >\n <template v-slot:item=\"data\">\n <template>\n <v-card elevation=\"2\" class=\"ma-2 ml-n2\">\n <v-expand-transition appear>\n <v-img v-if=\"data.item.IMAGES && data.item.IMAGES.length > 0\" :src=\"imageSrc(data.item.IMAGES[0].url, 150)\" max-width=\"75\" />\n </v-expand-transition>\n </v-card>\n <v-list-item-content>\n <v-list-item-title class=\"blue--text\" v-html=\"data.item[$store.state.appFilterBySelectedKey]\"></v-list-item-title>\n <v-list-item-subtitle v-if=\"$store.state.appFilterBySelectedKey !== 'articleCodeSupplier'\">{{ data.item.articleCodeSupplier }}</v-list-item-subtitle>\n <v-list-item-subtitle v-if=\"$store.state.appFilterBySelectedKey !== 'articleGroup'\">{{ data.item.articleGroup }}</v-list-item-subtitle>\n <div v-if=\"$store.state.appFilterBySelectedKey !== 'articleDescription'\">\n {{ data.item.articleDescription }}\n </div>\n </v-list-item-content>\n </template>\n </template>\n <template v-slot:append class=\"d-flex justify-center\">\n <v-img\n v-if=\"['/receivings', '/inventory', '/products'].includes($route.path)\"\n :width=\"$vuetify.breakpoint.smAndDown ? '20px' : '35px'\"\n contain\n src=\"./assets/barcode-logo.png\"\n style=\"filter: grayscale(1); cursor: pointer\"\n data-test=\"activateBarcodeMode\"\n class=\"mr-2\"\n :small=\"$vuetify.breakpoint.smAndDown\"\n @click=\"switchToBarcodeMode\"\n ></v-img>\n </template>\n <template v-slot:prepend-inner>\n <template>\n <v-menu left>\n <template v-slot:activator=\"{ on, attrs }\">\n <v-icon v-bind=\"attrs\" :small=\"$vuetify.breakpoint.smAndDown\" v-on=\"on\">mdi-menu</v-icon>\n </template>\n\n <v-list>\n <v-list-item v-for=\"property in $store.state.appFilterByList\" :key=\"property\" class=\"d-flex align-center\">\n <div :class=\"$store.state.appFilterBySelectedKey === property ? 'blue--text' : ''\" @click=\"$store.state.appFilterBySelectedKey = property\">\n {{ swT('sku.' + property) }}\n </div>\n </v-list-item>\n </v-list>\n </v-menu>\n </template>\n </template>\n </v-autocomplete>\n\n <!-- Barcode scanner -->\n <v-text-field\n v-if=\"barcodeScannerMode\"\n ref=\"barcodeScanner\"\n v-model=\"barcode\"\n outlined\n background-color=\"white\"\n clearable\n hide-details\n prepend-inner-icon=\"mdi-magnify\"\n dense\n fab\n label=\"Scan barcode\"\n data-test=\"scanBarcodeTextField\"\n @paste=\"pasteBarcode()\"\n @keyup.enter=\"scanBarcode()\"\n >\n <template v-slot:append>\n <v-tooltip v-if=\"$route.path === '/products'\" v-model=\"showSwitchedToBarcodeModeToolTip\" bottom color=\"warning\">\n <!-- eslint-disable-next-line vue/no-unused-vars -->\n <template v-slot:activator=\"{ on, attrs }\">\n <v-img\n width=\"35px\"\n contain\n data-test=\"deactivateBarcodeMode\"\n src=\"./assets/barcode-logo.png\"\n style=\"cursor: pointer\"\n @load=\"showTooltip\"\n @click=\"switchToAppFiterMode\"\n ></v-img>\n </template>\n <span>{{ swT('swiched_to_barcode_mode') }}</span>\n </v-tooltip>\n <v-img v-else width=\"35px\" contain data-test=\"deactivateBarcodeMode\" src=\"./assets/barcode-logo.png\" style=\"cursor: pointer\" @click=\"switchToProductMode\"></v-img>\n </template>\n </v-text-field>\n\n <v-spacer></v-spacer>\n\n <swInfo v-if=\"$store.state.info.data.length\" />\n\n <swSaveCancel v-if=\"$store.state.editing\" />\n <div v-show=\"!$store.state.authenticated\">\n <v-menu offset-y>\n <template v-slot:activator=\"{ on, attrs }\">\n <v-btn style=\"min-width: 26px !important\" color=\"white\" small v-bind=\"attrs\" v-on=\"on\">\n {{ language }}\n </v-btn>\n </template>\n <v-list>\n <v-list-item v-for=\"(item, index) in languages\" :key=\"index\" @click=\"$vuetify.lang.locale = language = item.code\">\n <v-list-item-title>{{ item.label }}</v-list-item-title>\n </v-list-item>\n </v-list>\n </v-menu>\n </div>\n <swAuth role=\"lc-b2b,lc-data-only\">\n <v-icon v-if=\"$store.state.b2bBasketCount == 0\" left class=\"ma-0\" @click=\"$store.state.b2bDrawer = !$store.state.b2bDrawer\">mdi-shopping-outline</v-icon>\n <v-icon v-else left class=\"ma-0\" @click=\"$store.state.b2bDrawer = !$store.state.b2bDrawer\">mdi-shopping</v-icon>\n </swAuth>\n\n <v-app-bar-nav-icon v-if=\"!$store.state.editing\" data-test=\"hamburger\" @click=\"toggleDrawer\"></v-app-bar-nav-icon>\n </v-app-bar>\n </nav>\n\n <v-navigation-drawer v-model=\"$store.state.drawer\" v-hotkey=\"keymap()\" data-test=\"drawer\" class=\"sw-grey\" app fixed>\n <v-subheader class=\"white display-1 thin py-12\" style=\"height: 128px\">\n <v-img :src=\"logoUrl\" @click=\"$store.state.drawer = false\"></v-img>\n </v-subheader>\n <div v-if=\"getSession().settings.user.username\" class=\"username pt-4 px-4 text-h6 text-truncate\">{{ getSession().settings.user.username }}</div>\n <swAuth role=\"sw\">\n <v-switch v-if=\"!$store.state.editing\" v-model=\"showRoles\" label=\"Show roles\" dark dense hide-details class=\"pa-0 pl-2\"></v-switch>\n </swAuth>\n <v-treeview\n v-if=\"$store.state.authenticated && !$store.state.editing\"\n v-model=\"tree\"\n class=\"drawer__treeview pt-2\"\n dark\n :open=\"open\"\n :items=\"menuItems\"\n dense\n animation\n item-key=\"name\"\n transition\n open-on-click\n >\n <template v-slot:label=\"{ item }\">\n <a v-if=\"item.link && item.link.slice(0, 4) == 'http' && item.sid == true\" class=\"white--text\" :href=\"`${item.link}?sid=${cookies.get('sid')}`\" target=\"_blank\">\n <swNavigationItemText :item=\"item\" :show-roles=\"showRoles\"></swNavigationItemText>\n </a>\n <a v-else-if=\"item.link && item.link.slice(0, 4) == 'http' && !item.sid == true\" class=\"white--text\" :href=\"item.link\" target=\"_blank\">\n <swNavigationItemText :item=\"item\" :show-roles=\"showRoles\"></swNavigationItemText>\n </a>\n <router-link v-else-if=\"item.link\" class=\"white--text\" :to=\"item.link\" :data-test=\"item.name\">\n <swNavigationItemText :item=\"item\" :show-roles=\"showRoles\"></swNavigationItemText>\n </router-link>\n <span v-else :data-test=\"item.name\">\n <swNavigationItemText :item=\"item\" :show-roles=\"showRoles\"></swNavigationItemText>\n </span>\n </template>\n </v-treeview>\n\n <swAuth role=\"lc-b2b,lc-data-only\">\n <template slot=\"otherwise\">\n <div class=\"py-0 ma-0 px-2 caption\">\n <v-progress-linear v-model=\"percentageBarcodesUsed\" buffer-value=\"100\" color=\"error\" background-color=\"success\" rounded></v-progress-linear>\n {{ percentageBarcodesUsed }} % of {{ maxBarcodes }} barcodes used\n </div>\n <div v-if=\"percentageConsumersUsed\" class=\"py-0 ma-0 px-2 caption\">\n <v-progress-linear v-model=\"percentageConsumersUsed\" buffer-value=\"100\" color=\"error\" background-color=\"success\" rounded></v-progress-linear>\n {{ percentageConsumersUsed }} % of {{ maxConsumers }} consumers used\n </div>\n </template>\n </swAuth>\n </v-navigation-drawer>\n\n <swAuth role=\"lc-b2b,lc-data-only\">\n <v-navigation-drawer v-model=\"$store.state.b2bDrawer\" fixed app right width=\"320\">\n <swShoppingBagDrawer></swShoppingBagDrawer>\n </v-navigation-drawer>\n </swAuth>\n <v-main class=\"mx-0\">\n <v-overlay :value=\"$store.state.loading\">\n <v-img :src=\"animationUrl\" contain max-height=\"80vh\"></v-img>\n </v-overlay>\n <div class=\"main-height\">\n <v-expand-transition>\n <div v-if=\"$store.state.info.showInfoDrawer\">\n <div v-for=\"(info, id) in $store.getters.prioritizedInfo\" :key=\"id\">\n <v-card v-if=\"info.component\">\n <v-card-text>\n <component :is=\"info.component\"></component>\n </v-card-text>\n </v-card>\n <v-card v-if=\"info.drawerContent\" tile text>\n <v-card-title primary-title>\n {{ info.title }}\n </v-card-title>\n <v-card-text v-html=\"info.drawerContent\"></v-card-text>\n </v-card>\n </div>\n </div>\n </v-expand-transition>\n <v-alert\n v-for=\"(alert, $alertIndex) in $store.state.alerts\"\n :key=\"$alertIndex\"\n v-model=\"alert.state\"\n :text=\"alert.prominent\"\n :prominent=\"alert.prominent\"\n dismissible\n :type=\"alert.type\"\n class=\"mb-0 pa-5 alert\"\n :data-test=\"`alert-${alert.type}`\"\n >\n <b>{{ swT(alert.header, alert.headerTranslationPluralization) }}</b>\n <p v-if=\"alert.youtube\">\n <iframe :src=\"alert.youtube\" frameborder=\"0\" allowfullscreen></iframe>\n </p>\n <p v-if=\"alert.image\">\n <v-img :src=\"alert.image\"></v-img>\n </p>\n <p v-if=\"alert.body\">{{ swT(alert.body) }}</p>\n <pre v-if=\"alert.text\">{{ alert.text }}</pre>\n </v-alert>\n\n <!-- \n To include or exclude Views, You must define the name option in your component's options object, example:\n name: \"Receivings\"\n -->\n <keep-alive exclude=\"Reports,Receivings,PurchaseOrders,SkuEditor,SwSkuEditor\">\n <router-view v-if=\"$store.state.loadingStatus != 'loading'\" :key=\"$route.fullPath\" />\n <div v-else>\n <v-img :src=\"animationUrl\" contain max-height=\"80vh\"></v-img>\n </div>\n </keep-alive>\n </div>\n\n <div v-if=\"displayPagination\" class=\"bottom-sticky text-center py-1\">\n <v-pagination v-model=\"$store.state.paginationCurrentPage\" :length=\"$store.state.paginationTotalPages\" :total-visible=\"10\" circle></v-pagination>\n </div>\n </v-main>\n </div>\n <div v-else-if=\"$route.name == 'login'\">\n <v-alert v-for=\"(alert, $alertIndex) in $store.state.alerts\" :key=\"$alertIndex\" v-model=\"alert.state\" dismissible :type=\"alert.type\" class=\"mb-0 pa-5\">\n <b>{{ swT(alert.header) }}</b>\n <p v-if=\"alert.body\">{{ swT(alert.body) }}</p>\n </v-alert>\n <Login />\n </div>\n <div v-else-if=\"$route.name == 'signup'\">\n <v-alert v-for=\"(alert, $alertIndex) in $store.state.alerts\" :key=\"$alertIndex\" v-model=\"alert.state\" dismissible :type=\"alert.type\" class=\"mb-0 pa-5\">\n <b>{{ swT(alert.header) }}</b>\n <p v-if=\"alert.body\">{{ swT(alert.body) }}</p>\n </v-alert>\n <SignUp />\n </div>\n </v-app>\n</template>\n\n<script>\nimport Vue, { nextTick } from 'vue'\nimport userFunctions from './functions/users'\nimport tools from './functions/tools'\nimport swNavigationItemText from './components/swNavigationItemText.vue'\nimport swSaveCancel from './components/swSaveCancel.vue'\nimport swInfo from './components/swInfo.vue'\nimport Login from './views/Login.vue'\nimport SignUp from './views/SignUp.vue'\nimport { pages } from '@/functions/mainMenu'\nimport { swT } from '@/functions/i18n'\nimport language from '@/functions/language'\nimport consts from '@/store/consts'\nimport swDateRangePicker from './components/swDateRangePicker.vue'\nimport globalStore from '@/store/globalStore'\nimport swShoppingBagDrawer from './components/swShoppingBagDrawer.vue'\nimport whitelabelFunctions from '@/functions/whitelabel'\nimport cookies from 'js-cookie'\nimport { getSession } from './functions/getSession'\n\nexport default Vue.extend({\n name: 'App',\n components: { swNavigationItemText, swSaveCancel, Login, SignUp, swInfo, swDateRangePicker, swShoppingBagDrawer },\n data() {\n return {\n swT,\n getSession,\n barcode: '',\n showRoles: false,\n language: this.$store.state.locale,\n languages: consts.allConfig.UISettings.language.items,\n open: ['public'],\n tree: [],\n pages: pages,\n percentageBarcodesUsed: 0,\n percentageConsumersUsed: 0,\n showSwitchedToBarcodeModeToolTip: false,\n cookies: cookies,\n }\n },\n\n computed: {\n animationUrl() {\n return whitelabelFunctions.siteAnimation(window.location.href)\n },\n logoUrl() {\n return whitelabelFunctions.siteLogo(window.location.href)\n },\n maxBarcodes() {\n return getSession().tenant?.maxBarcodes || 100000\n },\n maxConsumers() {\n return getSession().tenant?.maxConsumers || 10000\n },\n displayPagination() {\n return this.$store.state.paginationTotalPages > 0\n },\n menuItems() {\n return this.$store.getters.authorizedPagesList.filter((menuItem) => {\n const fn = menuItem.showInContextFunction\n if (fn && !fn()) return false\n\n return !menuItem.routeOnly\n })\n },\n hazard() {\n if (userFunctions.hasRole(this.$store.getters.roles, 'sw-admin')) return 'red-hazard'\n if (userFunctions.hasRole(this.$store.getters.roles, 'products-dataprovider_admin')) return 'yellow-hazard'\n if (userFunctions.hasRole(this.$store.getters.roles, 'impersonator')) return 'green-hazard'\n return ''\n },\n productPickerMode() {\n return this.$store.state.productPickerActive && !this.$store.state.barcodeScannerMode && !this.$store.state.hideMainFilter\n },\n barcodeScannerMode() {\n return this.$store.state.productPickerActive && this.$store.state.barcodeScannerMode && !this.$store.state.hideMainFilter\n },\n appFilterMode() {\n return !this.$store.state.productPickerActive && !this.$store.state.hideMainFilter && !this.$store.state.productIsSelected && this.$store.state.mainFilterPrompt\n },\n },\n watch: {\n '$store.state.b2bBasketUpdateTrigger'() {\n this.$store.state.b2bBasketCount = Object.values(this.$store.state.b2bBasket).reduce(\n (agg0, warehouse) => agg0 + Object.values(warehouse).reduce((agg1, product) => agg1 + Object.values(product).reduce((agg2, qty) => agg2 + qty, 0), 0),\n 0\n )\n if (this.$store.state.b2bBasketCount == 0) {\n this.$store.state.b2bBasketValue = 0\n return\n }\n const latestCollectionBrandSkus = globalStore.getB2bSkus()\n this.$store.state.b2bBasketValue = Object.values(this.$store.state.b2bBasket)\n .reduce(\n (agg0, warehouse) =>\n agg0 +\n Object.values(warehouse).reduce(\n (agg1, product) =>\n agg1 +\n Object.entries(product).reduce((agg2, entry) => {\n const barcode = entry[0]\n const sku = latestCollectionBrandSkus[barcode] || { buyPrice: 0 }\n return agg2 + sku.buyPrice\n }, 0),\n 0\n ),\n 0\n )\n .toFixed(2)\n },\n $route: {\n handler() {\n // This fixes the disappearing app-filter which should be visible when there is no product selected\n if (this.$route.path === '/products' && Object.keys(this.$route.query).length && this.$store.state.selectedProduct?.articleCode) this.$store.state.productIsSelected = true\n else this.$store.state.productIsSelected = false\n },\n immediate: true,\n deep: true,\n },\n '$store.state.paginationTotalPages'(newValue, oldValue) {\n if (oldValue === -1) this.$store.state.paginationCurrentPage = 1\n if (newValue && this.$store.state.paginationCurrentPage > newValue) this.$store.state.paginationCurrentPage = newValue || 1\n },\n '$store.state.totalNrBarcodes'() {\n const nrSkus = this.$store.state.totalNrBarcodes\n const maxBarcodes = this.maxBarcodes\n if (!maxBarcodes) return\n this.percentageBarcodesUsed = Math.min(parseInt((nrSkus / maxBarcodes) * 100), 100)\n },\n '$store.state.totalNrConsumers'() {\n const nrConsumers = this.$store.state.totalNrConsumers\n const maxNrConsumers = this.maxConsumers\n if (!maxNrConsumers) return\n this.percentageConsumersUsed = Math.min(parseInt((nrConsumers / maxNrConsumers) * 100), 100)\n },\n },\n mounted() {\n this.$watch('$store.state.productPickerActive', async function(newValue) {\n if (newValue) {\n await nextTick()\n const productPicker = this.$refs.productPicker\n if (this.$store.state.productPickerActive && productPicker) productPicker.focus()\n }\n })\n\n this.$watch('$store.state.barcodeScannerMode', async function(newValue) {\n if (newValue) {\n await nextTick()\n const barcodeScanner = this.$refs.barcodeScanner\n if (this.$store.state.barcodeScannerMode && barcodeScanner) barcodeScanner.focus()\n }\n })\n },\n activated() {\n this.$store.dispatch('clearFilter')\n },\n async created() {\n // Set the title of the page to 'Qliqpoint' when printing, remove when not needed anymore\n window.addEventListener('beforeprint', function() {\n document.title = 'Qliqpoint'\n })\n window.addEventListener('afterprint', function() {\n document.title = 'Latest Collection'\n })\n\n const debounceFn = tools.debounce((newVal) => {\n this.$store.state.filter = newVal?.trim()\n }, 500)\n this.$watch('$store.state.rawFilter', debounceFn)\n window.onbeforeunload = this.onExit\n window.addEventListener('keydown', this.keyCommand)\n },\n beforeUpdate() {\n this.checkLanguage()\n this.countUnread()\n },\n methods: {\n countUnread() {\n const menuItems = this.$store.getters.authorizedPagesList.filter((menuItem) => !menuItem.routeOnly)\n menuItems.forEach((menuItem, index) => {\n if (menuItem.unreadCount !== undefined) {\n let unreadCount = 0\n\n const documents = globalStore.getLatestCollectionArray(menuItem.name)\n documents.forEach((document) => {\n if (document.read == false) unreadCount++\n })\n this.$store.getters.authorizedPagesList[index].unreadCount = unreadCount\n }\n })\n },\n checkLanguage() {\n const savedLanguage = language.checkLanguage(this.$store)\n if (savedLanguage) {\n this.language = savedLanguage\n }\n },\n keymap() {\n return {\n f1: this.goToKeyboardShorcuts,\n 'alt+f1': this.goToProducts,\n 'alt+o': this.goToProductsAsDev, // F keys don't work in cypress\n 'alt+f2': this.goToPreferences,\n 'alt+f3': this.goToProducts,\n 'alt+f4': this.goToCustomers,\n 'alt+f6': this.goToStockReport,\n 'alt+f7': this.goToArticleStatusReport,\n 'alt+f8': this.goToTopXReport,\n 'alt+f9': this.goToPOS,\n 'alt+f10': this.goToDashboard,\n 'alt+f12': this.goToDevTools,\n 'ctrl+/': this.toggleDrawer,\n 'ctrl+f': this.focusAppFilter,\n }\n },\n switchToProductMode() {\n this.$store.state.barcodeScannerMode = false\n this.$nextTick(() => {\n this.$refs.productPicker.focus()\n })\n },\n switchToBarcodeMode() {\n this.$store.state.barcodeScannerMode = true\n this.$nextTick(() => {\n this.$refs.barcodeScanner.focus()\n })\n },\n switchToAppFiterMode() {\n this.$store.state.productPickerActive = false\n this.$store.state.barcodeScannerMode = false\n this.$store.state.rawFilter = ''\n },\n pasteBarcode() {\n // The pasted value is not readily available in the binded variable\n // We wait a while before processing\n setTimeout(() => this.scanBarcode(), 20)\n },\n scanBarcode() {\n if (typeof this.barcode == 'string' && [12, 13].includes(this.barcode.length)) {\n this.$store.state.scannedBarcode = this.barcode\n this.barcode = ''\n }\n },\n goToDashboard() {\n if (process.env.NODE_ENV === 'development') this.$router.push({ path: 'dashboard' })\n },\n goToProductsAsDev() {\n if (process.env.NODE_ENV === 'development') this.$router.push({ path: 'products' })\n },\n goToDevTools() {\n this.$router.push({ path: 'dev' })\n },\n goToPOS() {\n window.location.href = 'https://softwear6.softwearconnect.com'\n },\n goToKeyboardShorcuts() {\n this.$router.push({ path: 'keyboardshortcuts' })\n },\n goToProducts() {\n this.$router.push({ path: 'products' })\n },\n goToPreferences() {\n this.$router.push({ path: 'preferences' })\n },\n goToCustomers() {\n this.$router.push({ path: 'consumers' })\n },\n goToArticleStatusReport() {\n this.$router.push({ path: consts.defaultURLs.ARTICLE_STATUS_LINK })\n },\n goToStockReport() {\n this.$router.push({ path: consts.defaultURLs.STOCK_LINK })\n },\n goToTopXReport() {\n this.$router.push({ path: consts.defaultURLs.TOPX_LINK })\n },\n onExit(e) {\n if (!this.$store.state.editing) return\n const dialogText = 'Changes that you made may not be saved.'\n e.returnValue = dialogText\n return dialogText // Modern browsers ignore the text you provide here\n },\n toggleDrawer() {\n this.$store.state.drawer = !this.$store.state.drawer\n },\n focusAppFilter() {\n this.$refs['app-filter'].focus()\n },\n keyCommand(e) {\n if (!e.key) return\n const key = e.key.toLowerCase()\n if ((key == '.' || key == 'e') && e.srcElement.inputMode == 'decimal') e.preventDefault()\n },\n imageSrc(imageUrl, imageWidth) {\n return tools.imageUrlParse(imageUrl, imageWidth)\n },\n showTooltip() {\n this.showSwitchedToBarcodeModeToolTip = true\n setTimeout(() => {\n this.showSwitchedToBarcodeModeToolTip = false\n }, 3000)\n },\n },\n})\n</script>\n\n<style lang=\"scss\">\n.main-height {\n min-height: calc(100vh - 116px);\n}\n.v-application--is-ltr .v-chip .v-chip__close.v-icon.v-icon--right {\n margin-left: 3px;\n margin-right: -4px;\n}\n.v-chip .v-chip__content {\n margin-left: -4px;\n margin-right: -4px;\n}\n.v-chip {\n margin-top: 3px !important;\n}\n.v-input--is-readonly {\n pointer-events: none;\n}\n*,\nhtml,\nbody {\n font-family: 'Roboto' !important;\n}\nhtml {\n overflow-y: auto;\n}\n.v-list {\n padding: 0;\n}\n.v-list-item {\n border-bottom: solid 1px lightgray;\n}\nh1 {\n font-size: 3rem;\n font-weight: 300;\n}\n.theme-qliqpoint h2 {\n color: rgb(10, 78, 151);\n}\n.theme-latestcollection h2 {\n color: #d13326;\n}\n.theme-qliqpoint .red--text {\n color: rgb(10, 78, 151) !important;\n}\n.theme-latestcollection .red--text {\n color: #d13326 !important;\n}\na {\n text-decoration: none;\n}\n.ellipsis {\n overflow: hidden;\n text-overflow: ellipsis;\n display: block;\n white-space: nowrap;\n}\n/*** TRANSITIONS ***/\n.fade-enter {\n opacity: 0;\n transform: translateX(-100px);\n}\n.fade-enter-active,\n.fade-leave-active {\n transition: all 0.5s ease;\n}\n.fade-leave-to {\n opacity: 0;\n transform: translateX(100px);\n}\ntextarea {\n white-space: nowrap;\n overflow: scroll;\n}\n.drawer__treeview .v-treeview-node__root:hover {\n background-color: #90251dc9;\n}\n.poView .v-input__slot {\n padding: 0 4px !important;\n}\n.v-main__wrap .container {\n max-width: 100%;\n}\n.sizerangeBorder {\n border: 1px solid #cdd4db;\n background-color: #eef1f3;\n font-weight: bold;\n text-align: center;\n}\n.sw-grey {\n color: #b2bac7 !important;\n background-color: #464d5c !important;\n}\n\n.v-menu__content {\n cursor: pointer;\n}\n\n.theme--light.v-data-table .v-data-table-header th span {\n display: inline-block;\n max-width: 100%; /* Allow the span to take up 100% width */\n overflow: hidden;\n vertical-align: middle;\n text-overflow: ellipsis; /* Add ellipsis for text overflow */\n}\n\n.theme--light.v-data-table .v-data-table-header th {\n white-space: nowrap; /* Prevent text from wrapping by default */\n}\n\n.theme--light.v-data-table .v-data-table-header th i {\n margin-left: 3px; /* Add some space between text and icon */\n vertical-align: middle;\n}\n\n.theme-qliqpoint .theme--light.v-data-table .v-data-table-header th.sortable.active .v-data-table-header__icon,\n.theme-qliqpoint .theme--light.v-data-table .v-data-table-header__sort-badge,\n.theme-qliqpoint .theme--light.v-data-table .v-data-table__wrapper table thead tr th,\n.theme-qliqpoint .theme--light.v-data-table .v-data-table__wrapper table thead tr th.sortable,\n.theme-qliqpoint .theme--light.v-data-table .v-data-table__wrapper table thead tr th.sortable.active {\n font-weight: 400;\n font-size: 13px;\n background-color: #00509d;\n color: white !important;\n padding: 0 2px !important;\n}\n.theme-latestcollection .theme--light.v-data-table .v-data-table-header th.sortable.active .v-data-table-header__icon,\n.theme-latestcollection .theme--light.v-data-table .v-data-table-header__sort-badge,\n.theme-latestcollection .theme--light.v-data-table .v-data-table__wrapper table thead tr th,\n.theme-latestcollection .theme--light.v-data-table .v-data-table__wrapper table thead tr th.sortable,\n.theme-latestcollection .theme--light.v-data-table .v-data-table__wrapper table thead tr th.sortable.active {\n font-weight: 400;\n font-size: 13px;\n background-color: #2196f3;\n color: white !important;\n padding: 0 2px !important;\n}\n.v-data-table table tbody tr td {\n padding: 0 4px 0 4px !important;\n}\n.v-text-field > .v-input__control > .v-input__slot:before {\n border-style: none;\n}\n.strikethrough {\n text-decoration: line-through;\n}\ninput {\n caret-color: #d13326;\n}\n.sticky {\n @media (max-width: 600px) {\n top: 54px;\n }\n @media (min-width: 600px) {\n top: 62px;\n }\n position: sticky !important;\n z-index: 4;\n}\n.sticky-0 {\n top: 0px;\n position: sticky !important;\n z-index: 4;\n}\n.sticky-2 {\n top: 96px;\n position: sticky !important;\n z-index: 4;\n}\n.sticky-3 {\n top: 128px;\n position: sticky !important;\n z-index: 4;\n}\n.breadcrumbs {\n top: 64px;\n position: sticky !important;\n z-index: 3;\n &.sm {\n top: 56px;\n }\n}\n.username {\n color: white;\n overflow: hidden;\n white-space: nowrap;\n}\n/* Disables spinners for number inputs */\n/* Chrome, Safari, Edge, Opera */\ninput::-webkit-outer-spin-button,\ninput::-webkit-inner-spin-button {\n -webkit-appearance: none;\n margin: 0;\n}\n\n/* Firefox */\ninput[type='number'] {\n -moz-appearance: textfield;\n}\n.align-numbers input {\n text-align: right;\n}\n.bottom-sticky {\n position: sticky;\n bottom: 0px;\n z-index: 4;\n background-color: rgba(11, 11, 11, 0.1);\n}\npre {\n font-family: 'Courier New', Courier, monospace !important;\n white-space: pre-wrap; /* css-3 */\n white-space: -moz-pre-wrap; /* Mozilla, since 1999 */\n white-space: -pre-wrap; /* Opera 4-6 */\n white-space: -o-pre-wrap; /* Opera 7 */\n}\ntable,\nth,\ntd {\n border: 1px solid lightgrey;\n border-collapse: collapse;\n}\n.red-hazard {\n background-image: repeating-linear-gradient(-60deg, #fff, #fff 20px, #bb0000 20px, #bb0000 40px);\n}\n.yellow-hazard {\n background-image: repeating-linear-gradient(-60deg, #444, #555 20px, #ffb101 20px, #ffb101 40px);\n}\n.green-hazard {\n background-image: repeating-linear-gradient(-60deg, #ddd, #fff 20px, #1b9d05 20px, #1b9d05 40px);\n}\n.alert {\n z-index: 99999;\n}\n/*using this class the loadbalancer nav will have the loadbalancer svg */\n.loadbalancer-icon {\n content: url(./assets/groupsIcons/loadbalancer.svg);\n}\n.v-textarea textarea {\n overflow: auto;\n}\n\n@media print {\n .v-navigation-drawer,\n .v-toolbar,\n .v-overlay,\n .v-pagination,\n .no-print,\n header {\n display: none;\n }\n .v-main {\n width: 100%;\n }\n @page {\n size: A4 landscape;\n }\n th span {\n color: black !important;\n }\n\n .theme-qliqpoint h1,\n .theme-qliqpoint h2 {\n color: rgb(10, 78, 151) !important;\n font-size: 12pt;\n }\n .theme-latestcollection h1,\n .theme-latestcollection h2 {\n color: black !important;\n font-size: 12pt;\n }\n .no-print {\n display: none;\n }\n}\n</style>\n","import mod from \"-!../node_modules/cache-loader/dist/cjs.js??ref--13-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../node_modules/cache-loader/dist/cjs.js??ref--13-0!../node_modules/thread-loader/dist/cjs.js!../node_modules/babel-loader/lib/index.js!../node_modules/cache-loader/dist/cjs.js??ref--1-0!../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./App.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./App.vue?vue&type=template&id=2b2c0850\"\nimport script from \"./App.vue?vue&type=script&lang=js\"\nexport * from \"./App.vue?vue&type=script&lang=js\"\nimport style0 from \"./App.vue?vue&type=style&index=0&id=2b2c0850&prod&lang=scss\"\n\n\n/* normalize component */\nimport normalizer from \"!../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","/* eslint-disable no-console */\n\nimport { register } from 'register-service-worker'\n\nif (process.env.NODE_ENV === 'production') {\n register(`${process.env.BASE_URL}service-worker.js`, {\n ready() {\n console.log('App is being served from cache by a service worker.\\n' + 'For more details, visit https://goo.gl/AFskqB')\n },\n registered() {\n console.log('Service worker has been registered.')\n },\n cached() {\n console.log('Content has been cached for offline use.')\n },\n updatefound() {\n console.log('New content is downloading.')\n },\n updated() {\n console.log('New content is available; please refresh.')\n },\n offline() {\n console.log('No internet connection found. App is running in offline mode.')\n },\n error(error) {\n console.error('Error during service worker registration:', error)\n },\n })\n}\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('span',[(_vm.authorizedFor)?_c('span',[_vm._t(\"default\")],2):_vm._e(),_c('span',{directives:[{name:\"show\",rawName:\"v-show\",value:(!_vm.authorizedFor),expression:\"!authorizedFor\"}]},[_vm._t(\"otherwise\")],2)])\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <span>\n <span v-if=\"authorizedFor\">\n <slot></slot>\n </span>\n <span v-show=\"!authorizedFor\">\n <slot name=\"otherwise\"></slot>\n </span>\n </span>\n</template>\n\n<script>\nimport whitelabelFunctions from '@/functions/whitelabel'\n\nexport default {\n props: ['domain'],\n computed: {\n authorizedFor() {\n return whitelabelFunctions.domain(window.location.href)\n },\n },\n}\n</script>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./swWhitelabel.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./swWhitelabel.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./swWhitelabel.vue?vue&type=template&id=b717e6b0\"\nimport script from \"./swWhitelabel.vue?vue&type=script&lang=js\"\nexport * from \"./swWhitelabel.vue?vue&type=script&lang=js\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n null,\n null\n \n)\n\nexport default component.exports","// This implements a vue longpress directive.\n// For documentation, see: https://blog.logrocket.com/building-a-long-press-directive-in-vue-3408d60fb511/\nexport default {\n bind: function(el, binding, vNode) {\n // Run Function\n const handler = (e) => {\n binding.value(e)\n }\n // Make sure expression provided is a function\n if (typeof binding.value !== 'function') {\n // Fetch name of component\n const compName = vNode.context.name\n // pass warning to console\n let warn = `[longpress:] provided expression '${binding.expression}' is not a function, but has to be`\n if (compName) {\n warn += `Found in component '${compName}' `\n }\n\n console.warn(warn)\n }\n\n // Define variable\n let pressTimer = null\n\n // Define funtion handlers\n // Create timeout ( run function after 1s )\n const start = (e) => {\n if (e.type === 'click' && e.button !== 0) {\n return\n }\n\n if (pressTimer === null) {\n pressTimer = setTimeout(() => {\n // Run function\n handler({})\n }, 1000)\n }\n }\n\n // Cancel Timeout\n const cancel = () => {\n // Check if timer has a value or not\n if (pressTimer !== null) {\n clearTimeout(pressTimer)\n pressTimer = null\n }\n }\n\n // Add Event listeners\n el.addEventListener('mousedown', start)\n el.addEventListener('touchstart', start)\n // Cancel timeouts if this events happen\n el.addEventListener('click', cancel)\n el.addEventListener('mouseout', cancel)\n el.addEventListener('touchend', cancel)\n el.addEventListener('touchcancel', cancel)\n },\n}\n","import Vue from 'vue'\nimport App from './App.vue'\nimport './registerServiceWorker'\nimport { router } from './router'\nimport store from './store'\nimport vuetify from './plugins/vuetify'\nimport swAuth from './components/swAuth.vue'\nimport swWhitelabel from './components/swWhitelabel.vue'\nimport swCurrency from './components/swCurrency.vue'\nimport vueApexCharts from 'vue-apexcharts'\nimport VCurrencyField from 'v-currency-field'\nimport { VTextField } from 'vuetify/lib'\nimport longPress from './directives/longpress'\nimport VueHotkey from 'v-hotkey'\nimport tools from './functions/tools'\nimport { eventBus } from './functions/eventBus'\n\nVue.use(VueHotkey)\nVue.directive('longpress', longPress)\n\nVue.config.productionTip = false\nVue.component('swAuth', swAuth)\nVue.component('swWhitelabel', swWhitelabel)\nVue.component('swCurrency', swCurrency)\nVue.component('apexchart', vueApexCharts)\nVue.component('v-text-field', VTextField)\nVue.use(VCurrencyField, {\n locale: 'nl-NL',\n decimalLength: 2,\n autoDecimalMode: true,\n min: null,\n max: null,\n defaultValue: 0,\n valueAsInteger: false,\n allowNegative: false,\n})\nnew Vue({\n router,\n store,\n vuetify,\n render: (h) => h(App),\n}).$mount('#app')\n\ntools.onCookieChange('sid', () => {\n const r = router as any\n if (r.history.current.name != 'login') router.push({ path: 'logout' })\n})\n\nfunction capitalizeFirstLetter(val) {\n return (\n String(val)\n .charAt(0)\n .toUpperCase() + String(val).slice(1)\n )\n}\nconst theme = tools.getTheme()\nconst faviconUrl = `/favicon-${theme}.ico?v=${Date.now()}`\n\n// Remove existing favicon links\nconst existingFavicons = document.querySelectorAll('link[rel=\"icon\"], link[rel=\"shortcut icon\"]')\nexistingFavicons.forEach((link) => link.parentNode.removeChild(link))\n\n// Create and append the new favicon link\nconst newFavicon = document.createElement('link')\nnewFavicon.rel = 'icon'\nnewFavicon.href = faviconUrl\nnewFavicon.type = 'image/x-icon'\n\nconst newShortcutIcon = document.createElement('link')\nnewShortcutIcon.rel = 'shortcut icon'\nnewShortcutIcon.href = faviconUrl\nnewShortcutIcon.type = 'image/x-icon'\n\ndocument.head.appendChild(newFavicon)\ndocument.head.appendChild(newShortcutIcon)\n\ndocument.body.classList.add('theme-' + theme)\ndocument.title = capitalizeFirstLetter(theme)\nexport { eventBus }\n","/**\n *\n * The startupDB client takes care of synchronizing data between the server and the browser.\n *\n * It defines a set of CRUD operations to manipulate the data.\n *\n * @param {object} options - Options.\n * options.url = url to startupDB resource\n *\n * READ (cRud):\n * By creating an instance of the client, the latest checkpoint for the given collection is retrieved from the server and\n * kept in memory by the client.\n *\n * Example:\n * const skuAPI = await startupDB({ url: \"localhost:3000/api/skus\" })\n *\n * CREATE (Crud):\n * The create method takes an array of objects and sends them to the startupDB server.\n * If the server can create the objects succesfully, it responds with an the opLog that needs to be processed by the\n * client in order to refresh it's data\n *\n * Example:\n * await skuAPI.create(skus)\n *\n * UPDATE (crUd):\n * The update method takes an array of objects and sends them to the startupDB server.\n * If the server can process the updates succesfully, it responds with an the opLog that needs to be processed by the\n * client in order to refresh it's data\n *\n * Example:\n * await skuAPI.update(skus)\n *\n * DELETE (cruD):\n * The delete method takes an array of objects and sends them to the startupDB server.\n * If the server can delete the objects succesfully, it responds with an the opLog that needs to be processed by the\n * client in order to refresh it's data\n *\n * Example:\n * await skuAPI.delete(skus)\n *\n */\nimport * as jsonPatch from 'fast-json-patch'\nimport tools from '../functions/tools'\nimport webServices from '../functions/webServicesFacade'\nimport { AuditHeadersI, ClientOptionsI, StartupDBApiI, CheckPointI } from '../types/startupDBClient'\nimport { deepCopy } from '@softwear/latestcollectioncore'\nimport consts from '../store/consts'\nimport { get, set, keys, delMany } from 'idb-keyval'\n\nconst applyCRUDoperation = function(operation, context) {\n const data = context.checkPoint.data\n const crudOperation = operation.operation\n if (crudOperation == 'delete') {\n for (const item of operation.oldData) {\n delete data[item.id]\n }\n }\n if (crudOperation == 'create') {\n for (const item of operation.data) {\n if (item.id) data[item.id] = item\n else data.push(item)\n }\n }\n if (crudOperation == 'update') {\n for (const item of operation.data) {\n data[item.id] = item\n }\n }\n if (crudOperation == 'patch') {\n for (const item of operation.data) {\n const document = deepCopy(data[item.id] || {})\n if (item.patch) data[item.id] = jsonPatch.applyPatch(document, item.patch).newDocument\n else data[item.id] = Object.assign(document, item)\n }\n }\n}\n\nconst processOpLog = function(opLog, context) {\n const checkPoint = context.checkPoint\n if (opLog.status == 200) {\n opLog.data.forEach(async function(operation) {\n checkPoint.nextOpLogId = operation.opLogId + 1\n applyCRUDoperation(operation, context)\n })\n return opLog.data.length\n }\n return 0\n}\n\nconst pullOpLogRaw = async function(context: any) {\n if (context.checkPoint.nextOpLogId > 1 && context.lastOplogId < context.checkPoint.nextOpLogId) return 0\n const opLog = await webServices.startupDBApi.get(`${context.options.url}?fromOpLogId=${context.checkPoint.nextOpLogId - 1}`, tools.apiHeaders())\n return processOpLog(opLog, context)\n}\n\nconst pullOpLog = async function(this: any) {\n // await webServices.startupDBApi.get(`${this.options.url}?returnType=tally`, tools.apiHeaders()) // This triggers possibe DB hook on the server\n const checkPointHeader = await webServices.startupDBApi.head(this.options.url, tools.apiHeaders())\n let lastCheckPointTime = checkPointHeader.headers?.['x-last-checkpoint-time'] || '0'\n if (lastCheckPointTime == '0') lastCheckPointTime = '' + new Date().getTime()\n const lastOplogId = parseInt(checkPointHeader.headers?.['x-last-oplog-id'] || '-1')\n return await pullOpLogRaw({ options: this.options, checkPoint: this.checkPoint, lastCheckPointTime: lastCheckPointTime, lastOplogId: lastOplogId })\n}\nconst getObjects = function(this: any, id) {\n if (id) return this.checkPoint.data[id]\n return this.checkPoint.data\n}\n\nconst patchObjects = async function(this: any, payload, auditHeaders: AuditHeadersI) {\n const NEVER_PATCH = ['/__created', '/__modified']\n // If we're not dealing with an array, create a one object array\n if (!Array.isArray(payload)) payload = [payload]\n const patches = []\n payload.forEach((doc) => {\n if (!doc.id || !this.checkPoint.data[doc.id]) throw 'Will not patch nonexisting documents, use createObjects instead'\n const patch = jsonPatch.compare(this.checkPoint.data[doc.id], doc).filter((op) => !NEVER_PATCH.includes(op.path))\n if (patch.length > 0) patches.push({ id: doc.id, patch: patch })\n })\n if (patches.length == 0) return 0\n const opLog = await webServices.startupDBApi.patch(`${this.options.url}?fromOpLogId=${this.checkPoint.nextOpLogId - 1}`, patches, tools.apiHeaders(auditHeaders))\n return await processOpLog(opLog, this)\n}\n\nconst updateObjects = async function(this: any, payload, auditHeaders: AuditHeadersI) {\n const opLog = await webServices.startupDBApi.put(`${this.options.url}?fromOpLogId=${this.checkPoint.nextOpLogId - 1}`, payload, tools.apiHeaders(auditHeaders))\n return await processOpLog(opLog, this)\n}\n\nconst deleteObjects = async function(this: any, payload, auditHeaders: AuditHeadersI) {\n const ids = payload.map((i) => `\"${i.id || i.barcode}\"`).join(',')\n const opLog = await webServices.startupDBApi.delete(`${this.options.url}?fromOpLogId=${this.checkPoint.nextOpLogId - 1}&filter=id in (${ids})`, tools.apiHeaders(auditHeaders))\n return await processOpLog(opLog, this)\n}\n\nconst createObjects = async function(this: any, payload, auditHeaders: AuditHeadersI) {\n const opLog = await webServices.startupDBApi.post(`${this.options.url}?fromOpLogId=${this.checkPoint.nextOpLogId - 1}`, payload, tools.apiHeaders(auditHeaders))\n return await processOpLog(opLog, this)\n}\nasync function getCachedChunk(url: string, chunkNr: number): Promise<string | undefined> {\n const cache = await get(`${url}_${chunkNr}_`)\n if (cache) return await cache.text()\n return undefined\n}\nasync function saveChunkToCache(prefix: string, url: string, chunkNr: number, value): Promise<string | undefined> {\n await set(`${prefix}_${url}_${chunkNr++}_`, value ? new Blob([value]) : undefined)\n return undefined\n}\nfunction getStringUntilChar(str: string, chr: string): string {\n const index = str.indexOf(chr)\n if (index !== -1) return str.substring(0, index)\n return str\n}\nasync function getMaxChunkNr(url: string): Promise<number> {\n const prefix = getStringUntilChar(`${url}`, '?')\n const nrExistingChunks = (await keys()).filter((k) => (k as string).includes(prefix) && !(k as string).includes('_content_length_')).length\n return nrExistingChunks > 0 ? nrExistingChunks - 1 : 0\n}\nasync function getCachedOplogSize(url: string): Promise<number> {\n const prefix = getStringUntilChar(url, '?')\n const cache = await get(`${prefix}_content_length_`)\n if (cache) return parseInt(cache) || 0\n return 0\n}\nasync function setCachedOplogSize(url: string, size: number): Promise<void> {\n const prefix = getStringUntilChar(`oplog_${url}`, '?')\n await set(`${prefix}_content_length_`, size)\n return\n}\nasync function clearCacheForUrl(url: string): Promise<void> {\n const prefix = getStringUntilChar(url, '?')\n await delMany((await keys()).filter((k) => (k as string).includes(prefix)))\n}\nconst processOpLog25 = async function(oplog: Response | undefined, context: any): Promise<number> {\n const url = context.options.url\n let reader\n if (oplog) {\n reader = oplog.body.pipeThrough(new TextDecoderStream()).getReader()\n const contentLength = parseInt(oplog.headers.get('Content-Length')) || 0\n context.lastOplogSize += contentLength\n await setCachedOplogSize(url, context.lastOplogSize)\n } else {\n context.lastOplogSize = await getCachedOplogSize(`oplog_${url}`)\n if (!(await getCachedChunk(`oplog_${url}`, 0))) return 0\n }\n let chunkNr = oplog ? await getMaxChunkNr(`oplog_${url}`) : 0\n let buf = ''\n let nrOperations = 0\n while (true) {\n let chunk\n if (oplog) {\n const block = await reader.read()\n chunk = block.value\n await saveChunkToCache('oplog', url, chunkNr++, chunk)\n if (block.done) return nrOperations\n } else {\n chunk = await getCachedChunk(`oplog_${url}`, chunkNr++)\n if (!chunk) return nrOperations\n }\n buf += chunk\n do {\n const newLinePos = buf.indexOf('\\n')\n if (newLinePos == -1) break\n const line = buf.substring(0, newLinePos)\n buf = buf.substring(newLinePos + 1)\n if (!line) continue\n const operation = JSON.parse(line)\n applyCRUDoperation(operation, context)\n nrOperations++\n } while (true)\n }\n}\n\nconst fetchOptions = function(method, payload?) {\n const options = tools.apiHeaders() as any\n options.responseType = 'stream'\n options.headers['Accept'] = 'application/x-ndjson'\n if (payload) options.body = JSON.stringify(payload)\n options.method = method\n return options\n}\n\nconst pullOplogRaw25 = async function(context: any) {\n if (context.opLogSize <= context.lastOplogSize) return 0\n const opLog = await fetch(`${consts.webServicesPath}/data${context.options.url}?fromOpLogId=${context.lastOplogSize}`, fetchOptions('GET'))\n // context.lastOplogSize = context.opLogSize\n console.log('opLogSize vs expected', context.lastOplogSize, context.opLogSize, context.options.url)\n return await processOpLog25(opLog, context)\n}\nconst pullOplogRawFromCache = async function(context: any) {\n return await processOpLog25(undefined, context)\n}\n\nconst pullOplog25 = async function(this: any) {\n // await webServices.startupDBApi.get(`${this.options.url}?returnType=tally`, tools.apiHeaders()) // This triggers possibe DB hook on the server\n const checkPointHeader = await webServices.startupDBApi.head(this.options.url, tools.apiHeaders())\n let lastCheckPointTime = checkPointHeader.headers?.['x-last-checkpoint-time'] || '0'\n if (lastCheckPointTime == '0') lastCheckPointTime = '' + new Date().getTime()\n const oplogSize = parseInt(checkPointHeader.headers?.['x-last-oplog-id'])\n return await pullOplogRaw25({\n options: this.options,\n checkPoint: this.checkPoint,\n lastCheckPointTime: lastCheckPointTime,\n lastOplogSize: this.lastOplogSize,\n opLogSize: oplogSize,\n })\n}\n\nconst patchObjects25 = async function(this: any, payload) {\n const NEVER_PATCH = ['/__created', '/__modified']\n // If we're not dealing with an array, create a one object array\n if (!Array.isArray(payload)) payload = [payload]\n const patches = []\n payload.forEach((doc) => {\n if (!doc.id || !this.checkPoint.data[doc.id]) throw 'Will not patch nonexisting documents, use createObjects instead'\n const patch = jsonPatch.compare(this.checkPoint.data[doc.id], doc).filter((op) => !NEVER_PATCH.includes(op.path))\n if (patch.length > 0) patches.push({ id: doc.id, patch: patch })\n })\n if (patches.length == 0) return 0\n const opLog = await fetch(`${consts.webServicesPath}/data${this.options.url}?fromOpLogId=${this.lastOplogSize}`, fetchOptions('PATCH', patches))\n return await processOpLog25(opLog, this)\n}\n\nconst updateObjects25 = async function(this: any, payload) {\n const opLog = await fetch(`${consts.webServicesPath}/data${this.options.url}?fromOpLogId=${this.lastOplogSize}`, fetchOptions('PUT', payload))\n return await processOpLog25(opLog, this)\n}\n\nconst deleteObjects25 = async function(this: any, payload) {\n const ids = payload.map((i) => `\"${i.id || i.barcode}\"`).join(',')\n const opLog = await fetch(`${consts.webServicesPath}/data${this.options.url}?fromOpLogId=${this.lastOplogSize}&filter=id in (${ids})`, fetchOptions('DELETE', payload))\n return await processOpLog25(opLog, this)\n}\n\nconst createObjects25 = async function(this: any, payload) {\n const opLog = await fetch(`${consts.webServicesPath}/data${this.options.url}?fromOpLogId=${this.lastOplogSize}`, fetchOptions('POST', payload))\n return await processOpLog25(opLog, this)\n}\nconst readCheckpointFromStream = async function(url: string): Promise<{ data: CheckPointI }> {\n let chunkNr = 0\n let reader = null\n let checkPoint = null\n let buf = ''\n if (!(await getCachedChunk(`checkPoint_${url}`, 0))) {\n const response = await fetch(consts.webServicesPath + '/data/' + url, fetchOptions('GET'))\n reader = response.body.pipeThrough(new TextDecoderStream()).getReader()\n await clearCacheForUrl(url)\n }\n while (true) {\n let chunk\n if (!reader) {\n chunk = await getCachedChunk(`checkPoint_${url}`, chunkNr++)\n if (!chunk) return { data: checkPoint || { data: {}, nextOplogId: 0 } }\n } else {\n const block = await reader.read()\n chunk = block.value\n await saveChunkToCache('checkPoint', url, chunkNr++, chunk)\n if (block.done) return { data: checkPoint || { data: {}, nextOplogId: 0 } }\n }\n buf += chunk\n do {\n const newLinePos = buf.indexOf('\\n')\n if (newLinePos == -1) break\n const line = buf.substring(0, newLinePos)\n buf = buf.substring(newLinePos + 1)\n if (!line) continue\n const obj = JSON.parse(line)\n if (checkPoint == null) {\n checkPoint = obj as CheckPointI\n } else {\n if (Array.isArray(checkPoint.data)) checkPoint.data.push(obj)\n else checkPoint.data[obj.id] = obj\n }\n } while (true)\n }\n}\n\nexport default async function(options: ClientOptionsI): Promise<StartupDBApiI> {\n if (['edge.latestcollection.fashion'].includes(window.location.hostname)) {\n // if (['127.0.0.1', '192.168.2.7', 'localhost'].includes(window.location.hostname) || ['edge.latestcollection.fashion'].includes(window.location.hostname)) {\n let lastCheckPointTime: string\n let lastOplogSize: number\n if (!options.immutable) {\n const checkPointHeader = await webServices.startupDBApi.head(options.url, tools.apiHeaders())\n lastCheckPointTime = checkPointHeader.headers?.['x-last-checkpoint-time']\n lastOplogSize = parseInt(checkPointHeader.headers?.['x-last-oplog-id']) || 0\n } else {\n lastCheckPointTime = 'immutable'\n lastOplogSize = 0\n }\n if (lastCheckPointTime == '0') lastCheckPointTime = '' + new Date().getTime()\n\n // The checkpoint we just received might have been cached locally and not reflect the most recent operations\n const checkPoint = (await readCheckpointFromStream(`${options.url}?returnType=checkPoint&cacheBuster=${lastCheckPointTime}`)) as { data: CheckPointI }\n const context = { options: options, checkPoint: checkPoint.data, lastCheckPointTime: lastCheckPointTime, lastOplogSize: 0, opLogSize: lastOplogSize }\n await pullOplogRawFromCache(context)\n await pullOplogRaw25(context)\n\n return {\n options: options,\n checkPoint: checkPoint.data,\n lastCheckPointTime: lastCheckPointTime,\n lastOplogId: 0,\n lastOplogSize: context.lastOplogSize,\n pull: pullOplog25,\n read: getObjects,\n update: updateObjects25,\n delete: deleteObjects25,\n create: createObjects25,\n patch: patchObjects25,\n }\n } else {\n let lastCheckPointTime: string\n let lastOplogId: number\n if (!options.immutable) {\n const checkPointHeader = await webServices.startupDBApi.head(options.url, tools.apiHeaders())\n lastCheckPointTime = checkPointHeader.headers?.['x-last-checkpoint-time'] || '0'\n lastOplogId = parseInt(checkPointHeader.headers?.['x-last-oplog-id'] || '-1')\n } else {\n lastCheckPointTime = 'immutable'\n lastOplogId = -1\n }\n if (lastCheckPointTime == '0') lastCheckPointTime = '' + new Date().getTime()\n let checkPointResponse\n try {\n checkPointResponse = (await webServices.startupDBApi.get(`${options.url}?returnType=checkPoint&cacheBuster=${lastCheckPointTime}`, tools.apiHeaders())) as {\n data: CheckPointI\n }\n } catch (e) {\n checkPointResponse = {\n checkPoint: 0,\n nextOpLogId: 0,\n savedAt: '',\n data: {},\n options: {},\n lastAccessed: 0,\n lastModified: 0,\n }\n if ((e as any).status == 403) {\n window.alert('Your session has expired. Log in again.')\n const forwardLocation = `${window.location.protocol}//${window.location.host}/login`\n if (window.location.href != forwardLocation) window.location.href = forwardLocation\n }\n }\n // The checkpoint we just received might have been cached locally and not reflect the most recent operations\n await pullOpLogRaw({ options: options, checkPoint: checkPointResponse.data, lastCheckPointTime: lastCheckPointTime, lastOplogId: lastOplogId })\n return {\n options: options,\n checkPoint: checkPointResponse.data,\n lastCheckPointTime: lastCheckPointTime,\n lastOplogId: lastOplogId,\n lastOplogSize: 0,\n pull: pullOpLog,\n read: getObjects,\n update: updateObjects,\n delete: deleteObjects,\n create: createObjects,\n patch: patchObjects,\n }\n }\n}\n","import Vue from 'vue'\nimport vuetify from '@/plugins/vuetify'\nimport store from '../store/index'\nimport { router } from '../router'\n\n// A map to associate each component name with its dynamic import path and the events it can emit\nconst dialogMap = {\n swPromptDialog: { importPath: () => import('@/components/swPromptDialog.vue'), emitEventValue: 'value' },\n swInfoDialog: { importPath: () => import('@/components/swInfoDialog.vue'), emitEventValue: null },\n swInventoryChangeDialog: { importPath: () => import('@/components/swInventoryChangeDialog.vue'), emitEventValue: 'value' },\n swPrintDialog: { importPath: () => import('@/components/swPrintDialog.vue'), emitEventValue: null },\n swValuePickDialog: { importPath: () => import('@/components/swValuePickDialog.vue'), emitEventValue: 'value' },\n swXLSImportDialog: { importPath: () => import('@/components/swXLSImportDialog.vue'), emitEventValue: 'value' },\n swBrandPopup: { importPath: () => import('@/components/swBrandPopup.vue'), emitEventValue: 'value' },\n swYesNoDialog: { importPath: () => import('@/components/swYesNoDialog.vue'), emitEventValue: 'value' },\n swYesNoCancelDialog: { importPath: () => import('@/components/swYesNoCancelDialog.vue'), emitEventValue: 'value' },\n swChooseNewSkuMethod: { importPath: () => import('@/components/swChooseNewSkuMethod.vue'), emitEventValue: 'value' },\n swLayoutObjectEditorDialog: { importPath: () => import('@/components/swLayoutObjectEditorDialog.vue'), emitEventValue: 'value' },\n swSkuImportHistory: { importPath: () => import('@/components/swSkuImportHistory.vue'), emitEventValue: 'value' },\n}\n\n// Handles the action when a dialog button is pressed\nfunction handleButtonPress(component, resolve, value) {\n resolve(value) // Resolve the promise with the provided value\n\n // Remove the component from the DOM and destroy the Vue instance\n component.$destroy()\n document.body.removeChild(component.$el)\n store.state.dialogDisplayed = false // Mark that no dialog is currently displayed\n}\n\n// Creates and displays the dialog component\nasync function createDialogComponent(dialog, props) {\n // Set the dialogDisplayed state to true to prevent interference with keyboard shortcuts on the page\n store.state.dialogDisplayed = true\n\n // Dynamically import the dialog component\n const { default: DialogComponent } = await dialog.importPath()\n const DialogConstructor = Vue.extend(DialogComponent)\n\n const dialogInstance = new DialogConstructor({\n propsData: props,\n vuetify, // Inject the Vuetify instance here\n store, // Inject the store here\n router, // Inject the router\n })\n\n // Manually mount the dialog instance to an element\n dialogInstance.$mount(document.createElement('div'))\n\n // Append the dialog component to the DOM\n document.body.appendChild(dialogInstance.$el)\n\n // Return a promise to handle events emitted by the dialog component\n return new Promise((resolve) => {\n dialogInstance.$on('dialogServiceEvent', (value) => {\n handleButtonPress(dialogInstance, resolve, dialog.emitEventValue ? value : null)\n })\n })\n}\n\n// Public function to show a dialog based on the component name and provided properties\nexport async function showDialog(componentName: string, props: any) {\n if (!componentName) throw new Error(`Component name is not provided.`)\n\n const dialog = dialogMap[componentName]\n if (!dialog) throw new Error(`Component name \"${componentName}\" is not defined.`)\n\n // Set the value property to true to make the dialog visible by default\n if (!props) props = { value: true }\n else if (props.constructor === Object) props['value'] = true\n\n return createDialogComponent(dialog, props)\n}\n","import success from '@/assets/sounds/success.mp3'\nimport failed from '@/assets/sounds/failed.mp3'\nimport store from '@/store/index'\n\n/**\n * Returns `void`.\n *\n * Play a local success.mp3 file as a sign for a succeed process.\n */\nfunction playSucceed(): void {\n if (store.state.activeConfig.UISettings?.audioFeedback?.value) {\n new Audio(success).play()\n }\n}\n\n/**\n * Returns `void`.\n *\n * Play a local failed.mp3 file as a sign for a failed process.\n */\nfunction playFailed(): void {\n if (store.state.activeConfig.UISettings?.audioFeedback?.value) {\n new Audio(failed).play()\n }\n}\n\nexport default {\n playSucceed,\n playFailed,\n}\n","import tools from './tools'\nimport axios from 'axios'\nimport pako from 'pako'\nimport consts from '../store/consts'\nimport cookies from 'js-cookie'\nimport axiosRetry from 'axios-retry'\nimport { v4 as uuidv4 } from 'uuid'\nimport { showDialog } from './dialogService'\nimport { getSession } from '../functions/getSession'\nimport { InventoryI } from '@/types/network'\n\nconst retryRequest = function(err) {\n if (process.env.NODE_ENV === 'development' && err.config.url.includes('softwear.nl')) return false\n const retry = err.message == 'Network Error' || err.response.status >= 500\n return retry\n}\naxiosRetry(axios, { retries: 10, retryDelay: axiosRetry.exponentialDelay, retryCondition: retryRequest })\n\nconst getStockSnapshot = async function(id) {\n // Use fetch because in this case, we don't want the axios retry mechanism to ckick in\n const response = await fetch(`${consts.softwear.stockRoot}/${id}/stocksnapshot.json`)\n return await response.json()\n}\n\n// Setup Axios middleware to compress requests using pako gzip library\nconst startupDBApi = axios.create({\n baseURL: consts.webServicesPath + '/data',\n transformRequest: (axios.defaults.transformRequest as Array<any>).concat(function(data, headers) {\n if (!(process.env.NODE_ENV === 'production' && typeof data === 'string' && data.length > 1024)) return data\n // compress strings if over 1KB\n headers['Content-Encoding'] = 'gzip'\n return pako.gzip(data)\n }),\n})\naxiosRetry(startupDBApi, { retries: 10, retryDelay: axiosRetry.exponentialDelay, retryCondition: retryRequest })\n\nlet dbaPWD = ''\nconst dbaGetAllCollections = async function() {\n dbaPWD = (\n await showDialog('swPromptDialog', {\n title: 'DBA',\n message: 'Enter DBA password',\n dataTest: 'dba',\n type: 'password',\n placeholder: 'Password',\n })\n ).toString()\n return startupDBApi.get('', { params: { token: dbaPWD } })\n}\nconst dbaRunQuery = function(collection, query) {\n return startupDBApi.get(collection, {\n params: { token: dbaPWD, filter: query, cacheBuster: uuidv4() },\n })\n}\nconst dbaRunCommand = function(command) {\n return startupDBApi.post('', command, {\n params: { token: dbaPWD },\n headers: { 'Content-Type': 'application/json' },\n })\n}\n\nconst dbaPut = function(collection, document, params) {\n return startupDBApi.put(collection, document, {\n params: { ...params, token: dbaPWD },\n })\n}\n\nconst dbaDelete = function(collection, document) {\n return startupDBApi.delete(collection, {\n params: { token: dbaPWD, id: document.id },\n })\n}\n\nconst latestCollectionGet = async function(endpoint) {\n return startupDBApi.get(endpoint, tools.apiHeaders())\n}\n\nconst latestCollectionPost = async function(endpoint, data) {\n return startupDBApi.post(endpoint, data, tools.apiHeaders())\n}\nconst latestCollectionPut = async function(endpoint, data) {\n return startupDBApi.put(endpoint, data, tools.apiHeaders())\n}\n\nconst latestCollectionPatch = async function(endpoint, data) {\n return startupDBApi.patch(endpoint, data, tools.apiHeaders())\n}\n\nconst getSku = async function(state, barcode, lookupOnly) {\n if (isNaN(barcode)) return { data: '' }\n const tenantId = state.user.current_tenant\n if (lookupOnly) return latestCollectionGet(`/${tenantId}/sku?id=${barcode}&lookupOnly`)\n return latestCollectionGet(`/${tenantId}/sku?id=${barcode}`)\n}\n\nconst getMe = async function() {\n return latestCollectionGet('/me')\n}\n\nconst getTenant = async function(tenantId: string) {\n return latestCollectionGet(`/tenant?id=${tenantId}`)\n}\n\nconst getBrandInventory = async function(brandId: string): Promise<InventoryI[]> {\n return (await latestCollectionGet(`/brands/${brandId}/inventory`)).data\n}\nconst setTenant = async function(data) {\n return latestCollectionPatch('/tenant', data)\n}\nenum MessageTypes {\n missingBarcode = 'missingBarcode',\n}\ninterface Message {\n sender: string\n receiver: string\n type: MessageTypes\n body: object\n}\nconst sendToOutbox = function(message: Message) {\n return axios.post(`${consts.webServicesPath}/service/outbox`, message, tools.apiHeaders())\n}\n\nconst regenerateBI = function(tenantId, version) {\n return axios.post(`${consts.webServicesPath}/service/regeneratebi`, { tenantId, version }, tools.apiHeaders())\n}\n/**\n *\n * getSchema intentionally does not use startupDBApi\n * since it is only supposed to run against a dev database\n */\nconst getSchema = function(schema) {\n return axios.get(`${consts.webServicesPath}/v1/schema/${schema}.json`)\n}\nconst postImage = function(file: Blob, fileName: string) {\n // Create a FormData object\n const formData = new FormData()\n formData.append('file', file, fileName)\n if (process.env.NODE_ENV === 'production') axios.post(consts.softwear.fotoManagerUrl + '?id=' + consts.tenant.feedId, formData)\n else axios.post(consts.softwear.fotoManagerUrl + '?id=' + '123', formData)\n}\n\nconst getActivePOS = function() {\n return axios.get(consts.webServicesPath + '/service/pos-active', tools.apiHeaders())\n}\n\nconst getSpynlMetrics = function() {\n return axios.get(consts.webServicesPath + '/service/spynl-metrics', tools.apiHeaders())\n}\n\nconst getSpynlSales = function(source, endDate, startDate, group_by?) {\n if (group_by) {\n return axios.get(consts.webServicesPath + `/service/spynl-sales?doc=${source}&endDate=${endDate}&group_by=${group_by}&startDate=${startDate}`, tools.apiHeaders())\n } else {\n return axios.get(consts.webServicesPath + `/service/spynl-sales?doc=${source}&endDate=${endDate}&startDate=${startDate}`, tools.apiHeaders())\n }\n}\n\nconst getLATConnections = function() {\n return axios.get(consts.webServicesPath + '/service/pos-stats', tools.apiHeaders())\n}\n\nconst getM2FEvents = function() {\n return axios.get(consts.webServicesPath + '/service/spynl-events', tools.apiHeaders())\n}\n\nconst getNPData = function(source) {\n return axios.get(consts.webServicesPath + `/service/np?doc=${source}`, tools.apiHeaders())\n}\n\nconst getPicqerData = function(source) {\n return axios.get(consts.webServicesPath + `/service/picqer?doc=${source}`, tools.apiHeaders())\n}\nconst getMPlusKassaData = function(source) {\n return axios.get(consts.webServicesPath + `/service/mpluskassa?doc=${source}`, tools.apiHeaders())\n}\n\nconst getTenantById = function(tenantId) {\n return latestCollectionGet(`/tenant?id=${tenantId}`)\n}\n\nconst getAssociatesWithOwners = function(brandID, tenants) {\n const token = cookies.get('sid')\n return axios.post(\n `${consts.webServicesPath}/service/beforeGetTenantsWithOwners?token=${token}`,\n {\n id: brandID,\n tenants: tenants,\n },\n {\n ...tools.apiHeaders(),\n validateStatus: () => true,\n }\n )\n}\n\nconst sendPurchaseOrders = async function(list: { id: string; pdf?: string; orderMethod?: string; supplier?: any }[]) {\n return axios.post(`${consts.webServicesPath}/service/sendPurchaseOrder`, list, tools.apiHeaders())\n}\n\nconst syncPOs = async function(numDays) {\n return axios.get(`${consts.webServicesPath}/data/${getSession().current_tenant}/purchaseorder?days=${numDays}`, tools.apiHeaders())\n}\n\nconst getTools = async function() {\n return axios.get(`${consts.webServicesPath}/data/tool`, tools.apiHeaders())\n}\n\nconst syncResource = async function(resource: string, store, params?) {\n return axios.post(`${consts.webServicesPath}/service/sync`, { resource: resource, tenant: getSession().current_tenant }, { ...tools.apiHeaders(), params })\n}\n\nconst impersonate = function(tenantId) {\n return axios.post(consts.webServicesPath + `/service/impersonate`, { tenantId: tenantId }, tools.apiHeaders())\n}\n\nconst resetDbaPWD = function() {\n dbaPWD = ''\n}\n\nasync function forceDownload(url, fileName) {\n let blob\n try {\n blob = await axios.get(url, { responseType: 'blob' })\n } catch (error) {\n try {\n blob = await axios.get(tools.imageUrlParse(url, 1000), { responseType: 'blob' })\n } catch (error) {\n return false\n }\n }\n const urlCreator = window.URL || window.webkitURL\n const imageUrl = urlCreator.createObjectURL(blob.data)\n const tag = document.createElement('a')\n tag.href = imageUrl\n tag.download = fileName\n document.body.appendChild(tag)\n tag.click()\n document.body.removeChild(tag)\n return true\n}\n\nconst getSkuImportHistory = function(brand) {\n const token = cookies.get('sid')\n return axios.get(`${consts.webServicesPath}/service/sku-import-history?brand=${brand}&token=${token}`)\n}\nconst getSkuImportHistoryFile = function(brand, fileName) {\n const token = cookies.get('sid')\n return axios.get(`${consts.webServicesPath}/service/sku-import-history/download?brand=${brand}&filename=${fileName}&token=${token}`, { responseType: 'blob' })\n}\nconst importSkuFileToArchive = function(brand, collection, blob) {\n const token = cookies.get('sid')\n return axios.post(\n `${consts.webServicesPath}/service/sku-import-history?token=${token}`,\n {\n brand: brand,\n collection: collection,\n blob: blob,\n },\n tools.apiHeaders()\n )\n}\n\nconst sendToPrintQueue = function(queueName, payload) {\n return axios.post(`https://pq2.softwearconnect.com/queue?queue=${queueName}`, payload)\n}\n\nconst getTokens = async function(tenantId) {\n if (tenantId == 'master') return latestCollectionGet(`/token`)\n return latestCollectionGet(`/token?filter=data.current_tenant==\"${tenantId}\"`)\n}\n\nconst createToken = async function(tenantId: string, description: string) {\n return latestCollectionPost(`/token`, { tenantId: tenantId, description: description })\n}\n\nconst createPricat = async function(tenantId: string, items: any[], remark: string) {\n return latestCollectionPost(`${tenantId}/pricat`, { items: items, remark: remark })\n}\nconst createSku = async function(tenantId: string, skus: any[]) {\n return latestCollectionPut(`${tenantId}/sku`, skus)\n}\nconst createPurchaseOrder = async function(tenantId: string, items: any[], brand: string, date: number, warehouse: string) {\n return latestCollectionPost(`${tenantId}/purchaseorder`, { items: items, brand: brand, date: date, warehouseId: warehouse })\n}\n\nconst revokeToken = async function(tokenId: string) {\n return latestCollectionPatch(`/token`, { id: tokenId, patch: [{ op: 'replace', path: '/active', value: false }] })\n}\n\nconst getImagesFromCdn = function(brandId) {\n return axios.get(`${consts.webServicesPath}/service/imagecdn?brand=${brandId}`, tools.apiHeaders())\n}\nconst getFpSkus = async function(id) {\n // Use fetch because in this case, we don't want the axios retry mechanism to ckick in\n return await axios.get(`${consts.softwear.stockRoot}/${id}/fpfeed.js`)\n}\n\nconst sendReceivingToFp = async function(id: string, tenant: string) {\n return axios.post(`${consts.webServicesPath}/service/sendReceivingToFP`, { id: id, tenant: tenant }, tools.apiHeaders())\n}\n\nconst sendProcessedInventoryChange = function(document: any) {\n const token = cookies.get('sid')\n\n return axios.post(\n `${consts.webServicesPath}/service/sendInventorychange?token=${token}`,\n {\n document: document,\n },\n {\n ...tools.apiHeaders(),\n validateStatus: () => true,\n }\n )\n}\n\nexport default {\n resetDbaPWD,\n getSku,\n getMe,\n getTenant,\n setTenant,\n getStockSnapshot,\n dbaGetAllCollections,\n dbaRunQuery,\n dbaRunCommand,\n dbaPut,\n dbaDelete,\n forceDownload,\n getSchema,\n startupDBApi,\n postImage,\n getActivePOS,\n getSpynlMetrics,\n getSpynlSales,\n getLATConnections,\n getM2FEvents,\n regenerateBI,\n sendToOutbox,\n getNPData,\n getPicqerData,\n getMPlusKassaData,\n getTenantById,\n getTokens,\n createToken,\n revokeToken,\n getAssociatesWithOwners,\n sendPurchaseOrders,\n getSkuImportHistory,\n getSkuImportHistoryFile,\n importSkuFileToArchive,\n syncPOs,\n impersonate,\n sendToPrintQueue,\n getImagesFromCdn,\n getFpSkus,\n syncResource,\n sendReceivingToFp,\n sendProcessedInventoryChange,\n getTools,\n createPricat,\n createSku,\n createPurchaseOrder,\n getBrandInventory,\n}\n","const largeQtyVisualize = function(amount) {\n if (typeof amount != 'number') return amount\n if (amount < 1000) return amount.toFixed(1)\n if (amount < 1000000) return (amount / 1000).toFixed(1) + 'K'\n return (amount / 1000000).toFixed(1) + 'M'\n}\n\nexport { largeQtyVisualize }\n","import consts from '../store/consts'\nimport { format } from 'date-fns'\n\nconst dateToday = new Date()\nconst dateYearAgo = new Date(new Date().setFullYear(new Date().getFullYear() - 1))\nconst dateWeekAgo = new Date(dateToday).setDate(dateToday.getDate() - 6)\nconst dateMonthAgo = new Date(dateToday).setDate(dateToday.getDate() - 29)\nconst today = format(dateToday, 'yyyy-MM-dd')\nconst todayYearAgo = format(dateYearAgo, 'yyyy-MM-dd')\nconst todayWeekAgo = format(dateWeekAgo, 'yyyy-MM-dd')\nconst todayMonthAgo = format(dateMonthAgo, 'yyyy-MM-dd')\n\nconst sourceData = [\n {\n name: 'nrOpenPOS',\n title: 'open_POS',\n objectData: 'noData',\n type: 'number',\n description: '# Open POS',\n icon: 'mdi-store',\n role: ['sw-admin'],\n color: 'blue',\n updateFunc: 'activePOS',\n tenantID: ['master'],\n },\n {\n name: 'nrClosedPOS',\n title: 'closed_POS',\n objectData: 'noData',\n type: 'number',\n description: '# closed cash registers',\n icon: 'mdi-store-off',\n role: ['sw-admin'],\n color: 'blue',\n updateFunc: 'activePOS',\n tenantID: [],\n },\n {\n name: 'M2FEvents',\n title: 'M2F_events',\n objectData: 'noData',\n type: 'status',\n description: '# M2F events',\n icon: 'mdi-alert-circle-outline',\n role: ['sw-admin'],\n color: 100,\n updateFunc: 'getM2FEvents',\n tenantID: [],\n url: '',\n },\n {\n name: 'LCconnections',\n title: 'LC_connections',\n objectData: 'noData',\n type: 'progress',\n description: 'LC connections',\n icon: 'mdi-store-off',\n role: ['sw-admin'],\n color: consts.dashboardColor,\n updateFunc: 'getLATConnections',\n tenantID: [],\n },\n {\n name: 'openOverActive',\n title: 'open_cashregisters',\n objectData: 'noData',\n type: 'progress',\n description: 'Opened cash registers / all active devices',\n icon: 'mdi-store-off',\n role: ['sw-admin'],\n color: consts.dashboardColor,\n updateFunc: 'getSpynlMetrics',\n tenantID: [],\n },\n {\n name: 'openOverClosed',\n title: 'closed_cashregisters',\n objectData: 'noData',\n type: 'progress',\n description: 'Closed cash registers / opened cashregisters',\n icon: 'mdi-store-off',\n role: ['sw-admin'],\n color: consts.dashboardColor,\n updateFunc: 'activePOS',\n tenantID: [],\n },\n {\n name: 'EOSOverActive',\n title: 'EOS_over_active',\n objectData: 'noData',\n type: 'progress',\n description: 'Devices using EOS / all active devices',\n icon: 'mdi-store-off',\n role: ['sw-admin'],\n color: consts.dashboardColor,\n updateFunc: 'getSpynlMetrics',\n tenantID: [],\n },\n {\n name: 'USBOverActive',\n title: 'USB_over_active',\n objectData: 'noData',\n type: 'progress',\n description: 'Devices using Web USB / all active devices',\n icon: 'mdi-store-off',\n role: ['sw-admin'],\n color: consts.dashboardColor,\n updateFunc: 'getSpynlMetrics',\n tenantID: [],\n },\n {\n name: 'spynlSalesPerWarehouse',\n title: 'sales_per_warehouse',\n objectData: [],\n type: 'dates',\n description: 'Sales per warehouse',\n icon: 'mdi-cart-percent',\n role: [],\n color: 'orange',\n updateFunc: 'getSpynlSalesPerWarehouse',\n tenantID: [],\n config: {\n dates: [today, todayYearAgo], // Dates that have test data: '2023-05-31', '2023-04-30'\n threshold: 0,\n },\n },\n {\n name: 'spynlSalesPerPeriod',\n title: 'sales_last_12m',\n objectData: [],\n type: 'sparkline',\n description: 'sales_last_12m',\n icon: 'mdi-chart-multiple',\n role: [],\n color: 'orange',\n updateFunc: 'getSpynlSalesPerPeriod',\n tenantID: [],\n config: {\n dates: [today, todayYearAgo], // Dates that have test data: '2024-12-31', '2024-01-01'\n groupBy: 'month',\n currency: true,\n totalTime: 'year',\n XaxisLabels: [],\n },\n },\n {\n name: 'salesThisMonth',\n title: 'sales_last_30d',\n objectData: [],\n type: 'sparkline',\n description: 'sales_last_30d',\n icon: 'mdi-chart-line',\n role: [],\n color: 'orange',\n updateFunc: 'getSpynlSalesPerPeriod',\n tenantID: [],\n config: {\n dates: [today, todayMonthAgo],\n groupBy: 'day',\n currency: true,\n totalTime: 'month',\n XaxisLabels: [],\n },\n },\n {\n name: 'salesThisWeek',\n title: 'sales_last_7d',\n objectData: [],\n type: 'sparkline',\n description: 'sales_last_7d',\n icon: 'mdi-chart-line',\n role: [],\n color: 'orange',\n updateFunc: 'getSpynlSalesPerPeriod',\n tenantID: [],\n config: {\n dates: [today, todayWeekAgo],\n groupBy: 'day',\n currency: true,\n totalTime: 'week',\n XaxisLabels: [],\n },\n },\n {\n name: 'todaysTurnover',\n title: 'today_turnover',\n objectData: 'No data',\n type: 'currency',\n description: 'today_turnover_description',\n icon: 'mdi-cash-multiple',\n role: [],\n color: 'blue',\n updateFunc: 'getSpynlSalesSummary',\n tenantID: [],\n config: {\n dates: [today, today], // Dates that have test data: '2023-05-30', '2023-05-30'\n },\n },\n {\n name: 'todaysTransactions',\n title: 'today_transactions',\n objectData: 'No data',\n type: 'number',\n description: 'today_transactions_description',\n icon: 'mdi-cash-register',\n role: [],\n color: 'blue',\n updateFunc: 'getSpynlSalesSummary',\n tenantID: [],\n config: {\n dates: [today, today], // Dates that have test data: '2023-05-30', '2023-05-30'\n },\n },\n {\n name: 'todaysAvgQty',\n title: 'today_avg_qty',\n objectData: 'No data',\n type: 'number',\n description: 'today_avg_qty_description',\n icon: 'mdi-receipt-text',\n role: [],\n color: 'blue',\n updateFunc: 'getSpynlSalesSummary',\n tenantID: [],\n config: {\n dates: [today, today], // Dates that have test data: '2023-05-30', '2023-05-30'\n },\n },\n {\n name: 'NPqtyQueue',\n title: 'RUN queue',\n objectData: 'noData',\n type: 'number',\n description: 'Run queue',\n icon: 'mdi-checkbox-multiple-marked',\n role: [],\n color: 'blue',\n updateFunc: 'getNPQueue',\n tenantID: ['91389', 'master'],\n },\n {\n name: 'NPqtyFailed',\n title: 'Failed queue',\n objectData: 'noData',\n type: 'number',\n description: 'Run queue',\n icon: 'mdi-close-box-multiple',\n role: [],\n color: 'blue',\n updateFunc: 'getNPPromese',\n tenantID: ['91389', 'master'],\n },\n {\n name: 'NPDeltastocks',\n title: 'Delta Stocks',\n objectData: 'noData',\n type: 'number',\n description: 'Promese',\n icon: 'mdi-delta',\n role: [],\n color: 'indigo',\n updateFunc: 'getNPPromese',\n tenantID: ['91389', 'master'],\n },\n {\n name: 'NPFullstock',\n title: 'Full Stock',\n objectData: 'noData',\n type: 'number',\n description: 'Promese',\n icon: 'mdi-tray-full',\n role: [],\n color: 'indigo',\n updateFunc: 'getNPPromese',\n tenantID: ['91389', 'master'],\n },\n {\n name: 'NPReturns',\n title: 'Returns',\n objectData: 'noData',\n type: 'number',\n description: 'Promese',\n icon: 'mdi-clipboard-arrow-left',\n role: [],\n color: 'indigo',\n updateFunc: 'getNPPromese',\n tenantID: ['91389', 'master'],\n },\n {\n name: 'NPShipments',\n title: 'Shipments',\n objectData: 'noData',\n type: 'number',\n description: 'Promese',\n icon: 'mdi-truck',\n role: [],\n color: 'indigo',\n updateFunc: 'getNPPromese',\n tenantID: ['91389', 'master'],\n },\n {\n name: 'NPWrSyncStatus',\n title: 'WrSync',\n objectData: 'noData',\n type: 'status',\n description: 'Services',\n icon: 'mdi-autorenew',\n role: [],\n color: '',\n updateFunc: 'getNPWrSync',\n tenantID: ['91389', 'master'],\n url: '',\n },\n {\n name: 'NPBijenkorfINV',\n title: 'Bijenkorf INV',\n objectData: 'noData',\n type: 'number',\n description: 'EDI',\n icon: 'mdi-file-document-multiple',\n role: [],\n color: '#CD9575',\n updateFunc: 'getNPEDI',\n tenantID: ['91389', 'master'],\n },\n {\n name: 'NPBijenkorfSlS',\n title: 'Bijenkorf SLS',\n objectData: 'noData',\n type: 'number',\n description: 'EDI',\n icon: 'mdi-file-document-multiple',\n role: [],\n color: '#CD9575',\n updateFunc: 'getNPEDI',\n tenantID: ['91389', 'master'],\n },\n {\n name: 'NPBijenkorf',\n title: 'Bijenkorf ---',\n objectData: 'noData',\n type: 'number',\n description: 'EDI',\n icon: 'mdi-file-document-multiple',\n role: [],\n color: '#CD9575',\n updateFunc: 'getNPEDI',\n tenantID: ['91389', 'master'],\n },\n {\n name: 'NPOtherINV',\n title: 'OtherINV',\n objectData: 'noData',\n type: 'number',\n description: 'EDI',\n icon: 'mdi-file-document-multiple',\n role: [],\n color: '#CD9575',\n updateFunc: 'getNPEDI',\n tenantID: ['91389', 'master'],\n },\n {\n name: 'NPOtherSLS',\n title: 'Other SLS',\n objectData: 'noData',\n type: 'number',\n description: 'EDI',\n icon: 'mdi-file-document-multiple',\n role: [],\n color: '#CD9575',\n updateFunc: 'getNPEDI',\n tenantID: ['91389', 'master'],\n },\n {\n name: 'NPOther',\n title: 'Other ---',\n objectData: 'noData',\n type: 'number',\n description: 'EDI',\n icon: 'mdi-file-document-multiple',\n role: [],\n color: '#CD9575',\n updateFunc: 'getNPEDI',\n tenantID: ['91389', 'master'],\n },\n {\n name: 'NPDESADV',\n title: 'DESADV',\n objectData: 'noData',\n type: 'number',\n description: 'EDI',\n icon: 'mdi-file-document-multiple',\n role: [],\n color: '#CD9575',\n updateFunc: 'getNPEDI',\n tenantID: ['91389', 'master'],\n },\n {\n name: 'NPOpen',\n title: 'Promese Open',\n objectData: 'noData',\n type: 'number',\n description: 'Promese',\n icon: 'mdi-autorenew',\n role: [],\n color: '#3B3C36',\n updateFunc: 'getNPPicktickets',\n tenantID: ['91389'],\n },\n {\n name: 'NPToPromese',\n title: 'To Promese',\n objectData: 'noData',\n type: 'number',\n description: 'Promese',\n icon: 'mdi-file-document-outline',\n role: [],\n color: '#3B3C36',\n updateFunc: 'getNPPicktickets',\n tenantID: ['91389'],\n },\n {\n name: 'NPAtPromese',\n title: 'At Promese',\n objectData: 'noData',\n type: 'number',\n description: 'Promese',\n icon: 'mdi-file-document-outline',\n role: [],\n color: '#3B3C36',\n updateFunc: 'getNPPicktickets',\n tenantID: ['91389'],\n },\n {\n name: 'NPPicked',\n title: 'Picked',\n objectData: 'noData',\n type: 'number',\n description: 'Promese',\n icon: 'mdi-file-document-outline',\n role: [],\n color: '#3B3C36',\n updateFunc: 'getNPPicktickets',\n tenantID: ['91389'],\n },\n {\n name: 'NPReplen',\n title: 'Replen',\n objectData: 'noData',\n type: 'number',\n description: 'Promese',\n icon: 'mdi-file-document-outline',\n role: [],\n color: '#3B3C36',\n updateFunc: 'getNPPicktickets',\n tenantID: ['91389'],\n },\n {\n name: 'NPsold',\n title: '7d sold',\n objectData: 'noData',\n type: 'number',\n description: 'Docs',\n icon: 'mdi-file-document',\n role: [],\n color: '#CD7F32',\n updateFunc: 'getNPDocs',\n tenantID: ['91389', 'master'],\n },\n {\n name: 'NPshipped',\n title: '7d shipped',\n objectData: 'noData',\n type: 'number',\n description: 'Docs',\n icon: 'mdi-file-document',\n role: [],\n color: '#CD7F32',\n updateFunc: 'getNPDocs',\n tenantID: ['91389', 'master'],\n },\n {\n name: '12345Test',\n title: '12345 test',\n objectData: 'noData',\n type: 'number',\n description: '#abfg',\n icon: 'mdi-file-document-multiple',\n role: [],\n color: 'indigo',\n updateFunc: '',\n tenantID: ['12345'],\n },\n {\n name: '12345Test',\n title: '12345 test',\n objectData: 'noData',\n type: 'number',\n description: '#c47h',\n icon: 'mdi-file-document-multiple',\n role: ['products-admin'],\n color: 'indigo',\n updateFunc: '',\n tenantID: ['12345'],\n },\n]\n\nexport default sourceData\n","import nlLocale from '../locales/nl.json'\nimport deLocale from '../locales/de.json'\nimport enLocale from '../locales/en.json'\nimport nl_qliqpoint from '../locales/nl.qliqpoint.json'\nimport de_qliqpoint from '../locales/de.qliqpoint.json'\nimport en_qliqpoint from '../locales/en.qliqpoint.json'\nimport nl_mpluskassa from '../locales/nl.mpluskassa.json'\nimport de_mpluskassa from '../locales/de.mpluskassa.json'\nimport en_mpluskassa from '../locales/en.mpluskassa.json'\nimport nl_fashionUnited from '../locales/nl.fashionunited.json'\nimport de_fashionUnited from '../locales/de.fashionunited.json'\nimport en_fashionUnited from '../locales/en.fashionunited.json'\nimport store from '@/store/index'\nimport whiteLabelFunctions from './whitelabel'\n\n/**\n * swT service\n * @param key The key that is to be translated, determined in the component\n * @param storeLocale The user preference language coming from the store, determined at main.ts\n * @param n Used in pluralization/abbreviation, determined in the component\n *\n * Some translations have to be dependent on URL, if it contains Qlilqpoint, we will a different translation store in a sepereat .qliqpoint translation file per language\n *\n * Common use case:\n *\n * swT('saveProducts')\n *\n * For pluralization 4 keys are possible:\n * saveProducts: Save? // mandatory as it is fallback\n * saveProducts0: There is nothing to save.\n * saveProducts1: Save 1 product?\n * saveProductsS: Save n products? // notice the capital S at the end of the key name\n *\n * Pluralization example:\n *\n * swT('saveProducts', productsToBeSaved.length)\n *\n * No support for negative values for n, will go to fallback value\n *\n * For abbreviations, use the key with _abr suffix\n * If the abbreviation is not available, it will attempt to show the unabbreviated version and if that one is missing, it will show the key itself\n */\n\nconst domain = whiteLabelFunctions.domain(window.location.href)\nconst SUPPORTED_LOCALES = {\n nl: nlLocale,\n de: deLocale,\n en: enLocale,\n}\n\nif (domain != 'latestcollection') {\n const DOMAIN_TRANSLATIONS = {\n nl_qliqpoint,\n de_qliqpoint,\n en_qliqpoint,\n nl_mpluskassa,\n de_mpluskassa,\n en_mpluskassa,\n nl_fashionUnited,\n de_fashionUnited,\n en_fashionUnited,\n }\n Object.keys(SUPPORTED_LOCALES).forEach((locale) => Object.assign(SUPPORTED_LOCALES[locale], DOMAIN_TRANSLATIONS[`${locale}_${domain}`]))\n}\n\nfunction swT(key: string, n?: number | string): string {\n const locale = SUPPORTED_LOCALES[store.state.locale] || enLocale\n\n if (n === undefined) return locale[key] || key\n\n switch (n) {\n case 0:\n return locale[`${key}0`] || key\n case 1:\n return locale[`${key}1`] || key\n case 'abr':\n return locale[`${key}_abr`] || locale[key] || key\n default:\n if (typeof n != 'string' && n > 1) {\n return locale[`${key}S`].replace('{n}', n) || key\n }\n }\n}\n\nexport { swT }\n","var render = function render(){var _vm=this,_c=_vm._self._c;return _c('div',{staticClass:\"d-flex flex-row\",staticStyle:{\"width\":\"220px\"}},[(_vm.localHideDates[0])?_c('v-dialog',{ref:\"dialog0\",attrs:{\"return-value\":_vm.dates[0],\"persistent\":\"\",\"max-width\":\"290px\"},on:{\"update:returnValue\":function($event){return _vm.$set(_vm.dates, 0, $event)},\"update:return-value\":function($event){return _vm.$set(_vm.dates, 0, $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [(_vm.localHideDates[0])?_c('v-text-field',_vm._g(_vm._b({staticClass:\"daterange-input mr-1\",attrs:{\"dense\":\"\",\"label\":_vm.localLabels[0] ? _vm.swT(_vm.localLabels[0]) : _vm.swT('startdate'),\"prepend-icon\":_vm.showIcons ? 'mdi-calendar' : '',\"hide-details\":\"\",\"outlined\":\"\",\"disabled\":_vm.localDisabled[0],\"readonly\":\"\"},model:{value:(_vm.dates[0]),callback:function ($$v) {_vm.$set(_vm.dates, 0, $$v)},expression:\"dates[0]\"}},'v-text-field',attrs,false),on)):_vm._e()]}}],null,false,3101985325),model:{value:(_vm.modalFromDatePicker),callback:function ($$v) {_vm.modalFromDatePicker=$$v},expression:\"modalFromDatePicker\"}},[_c('v-date-picker',{attrs:{\"min\":_vm.dateMin,\"max\":_vm.dateMax},on:{\"input\":function($event){return _vm.$refs.dialog0.save(_vm.dates[0])},\"change\":_vm.updateDates},model:{value:(_vm.dates[0]),callback:function ($$v) {_vm.$set(_vm.dates, 0, $$v)},expression:\"dates[0]\"}})],1):_vm._e(),(_vm.localHideDates[1])?_c('v-dialog',{ref:\"dialog1\",attrs:{\"return-value\":_vm.dates[1],\"persistent\":\"\",\"max-width\":\"290px\"},on:{\"update:returnValue\":function($event){return _vm.$set(_vm.dates, 1, $event)},\"update:return-value\":function($event){return _vm.$set(_vm.dates, 1, $event)}},scopedSlots:_vm._u([{key:\"activator\",fn:function({ on, attrs }){return [_c('v-text-field',_vm._g(_vm._b({staticClass:\"daterange-input ml-1\",attrs:{\"dense\":\"\",\"label\":_vm.localLabels[1] ? _vm.swT(_vm.localLabels[1]) : _vm.swT('enddate'),\"prepend-icon\":_vm.showIcons ? 'mdi-calendar' : '',\"hide-details\":\"\",\"outlined\":\"\",\"readonly\":\"\",\"disabled\":_vm.localDisabled[1]},model:{value:(_vm.dates[1]),callback:function ($$v) {_vm.$set(_vm.dates, 1, $$v)},expression:\"dates[1]\"}},'v-text-field',attrs,false),on))]}}],null,false,3842812575),model:{value:(_vm.modalToDatePicker),callback:function ($$v) {_vm.modalToDatePicker=$$v},expression:\"modalToDatePicker\"}},[_c('v-date-picker',{attrs:{\"min\":_vm.dateMin,\"max\":_vm.dateMax},on:{\"input\":function($event){return _vm.$refs.dialog1.save(_vm.dates[1])},\"change\":_vm.updateDates},model:{value:(_vm.dates[1]),callback:function ($$v) {_vm.$set(_vm.dates, 1, $$v)},expression:\"dates[1]\"}})],1):_vm._e()],1)\n}\nvar staticRenderFns = []\n\nexport { render, staticRenderFns }","<template>\n <div class=\"d-flex flex-row\" style=\"width: 220px\">\n <v-dialog v-if=\"localHideDates[0]\" ref=\"dialog0\" v-model=\"modalFromDatePicker\" :return-value.sync=\"dates[0]\" persistent max-width=\"290px\">\n <template v-slot:activator=\"{ on, attrs }\">\n <v-text-field\n v-if=\"localHideDates[0]\"\n v-model=\"dates[0]\"\n dense\n :label=\"localLabels[0] ? swT(localLabels[0]) : swT('startdate')\"\n :prepend-icon=\"showIcons ? 'mdi-calendar' : ''\"\n hide-details\n outlined\n :disabled=\"localDisabled[0]\"\n readonly\n v-bind=\"attrs\"\n class=\"daterange-input mr-1\"\n v-on=\"on\"\n ></v-text-field>\n </template>\n <v-date-picker v-model=\"dates[0]\" :min=\"dateMin\" :max=\"dateMax\" @input=\"$refs.dialog0.save(dates[0])\" @change=\"updateDates\"></v-date-picker>\n </v-dialog>\n <v-dialog v-if=\"localHideDates[1]\" ref=\"dialog1\" v-model=\"modalToDatePicker\" :return-value.sync=\"dates[1]\" persistent max-width=\"290px\">\n <template v-slot:activator=\"{ on, attrs }\">\n <v-text-field\n v-model=\"dates[1]\"\n dense\n :label=\"localLabels[1] ? swT(localLabels[1]) : swT('enddate')\"\n :prepend-icon=\"showIcons ? 'mdi-calendar' : ''\"\n hide-details\n outlined\n readonly\n :disabled=\"localDisabled[1]\"\n v-bind=\"attrs\"\n class=\"daterange-input ml-1\"\n v-on=\"on\"\n ></v-text-field>\n </template>\n <v-date-picker v-model=\"dates[1]\" :min=\"dateMin\" :max=\"dateMax\" @input=\"$refs.dialog1.save(dates[1])\" @change=\"updateDates\"></v-date-picker>\n </v-dialog>\n </div>\n</template>\n\n<script>\nimport { swT } from '@/functions/i18n'\nimport { format, subDays } from 'date-fns'\n\nexport default {\n name: 'SwDateRangePicker',\n props: ['minDate', 'maxDate', 'startDate', 'endDate', 'showIcons', 'labels', 'hideDates', 'ignoreFirstEmit', 'disabled'],\n data() {\n return {\n swT,\n modalFromDatePicker: false,\n modalToDatePicker: false,\n }\n },\n computed: {\n localDisabled() {\n return this.disabled || [false, false]\n },\n localHideDates() {\n return this.hideDates || [true, true]\n },\n localLabels() {\n return this.labels || ['', '']\n },\n dates: {\n get: function() {\n return [this.dateStart, this.dateEnd]\n },\n set: function(newVal) {\n return newVal\n },\n },\n dateMin() {\n return this.minDate ? this.minDate : process.env.NODE_ENV === 'development' ? '2021-01-01' : format(subDays(new Date(), 365), 'yyyy-MM-dd')\n },\n dateMax() {\n return this.maxDate || format(new Date(), 'yyyy-MM-dd')\n },\n dateStart() {\n return this.startDate ? this.startDate : process.env.NODE_ENV === 'development' ? '2021-01-04' : format(subDays(new Date(), 30), 'yyyy-MM-dd')\n },\n dateEnd() {\n return this.endDate || format(new Date(), 'yyyy-MM-dd')\n },\n },\n watch: {\n $props: {\n handler() {\n if (this.startDate && this.endDate) this.dates = [this.startDate, this.endDate]\n },\n deep: true,\n immediate: true,\n },\n },\n mounted() {\n if (!this.ignoreFirstEmit) this.updateDates()\n },\n methods: {\n updateDates() {\n this.$emit('updateDateRange', this.dates)\n },\n },\n}\n</script>\n\n<style scoped>\n.daterange-input {\n pointer-events: auto;\n}\n</style>\n","import mod from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./swDateRangePicker.vue?vue&type=script&lang=js\"; export default mod; export * from \"-!../../node_modules/cache-loader/dist/cjs.js??ref--13-0!../../node_modules/thread-loader/dist/cjs.js!../../node_modules/babel-loader/lib/index.js!../../node_modules/cache-loader/dist/cjs.js??ref--1-0!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/index.js??vue-loader-options!./swDateRangePicker.vue?vue&type=script&lang=js\"","import { render, staticRenderFns } from \"./swDateRangePicker.vue?vue&type=template&id=3eb1d46d&scoped=true\"\nimport script from \"./swDateRangePicker.vue?vue&type=script&lang=js\"\nexport * from \"./swDateRangePicker.vue?vue&type=script&lang=js\"\nimport style0 from \"./swDateRangePicker.vue?vue&type=style&index=0&id=3eb1d46d&prod&scoped=true&lang=css\"\n\n\n/* normalize component */\nimport normalizer from \"!../../node_modules/@vue/cli-service/node_modules/vue-loader/lib/runtime/componentNormalizer.js\"\nvar component = normalizer(\n script,\n render,\n staticRenderFns,\n false,\n null,\n \"3eb1d46d\",\n null\n \n)\n\nexport default component.exports","import globalStore from '../store/globalStore'\nimport webServices from '../functions/webServicesFacade'\nimport { getSession } from '../functions/getSession'\n\nconst saveTenantPreferences = async function(store, preferences) {\n // Save the tenant settings to the system collection\n const systemOK = await store.dispatch('updateObjects', {\n api: globalStore.getLatestCollectionAPI('system'),\n data: [{ id: 'tenantPreference', ...preferences }],\n silent: true,\n })\n\n if (systemOK) return preferences\n else return null\n}\nconst saveUserPreferences = async function(store, preferences) {\n // Save the user settings to the user collection\n const userPreferenceOK = await store.dispatch('updateObjects', {\n api: globalStore.getLatestCollectionAPI('userpreference'),\n data: [{ ...preferences, id: getSession().settings.user.id }],\n silent: true,\n })\n\n if (userPreferenceOK) return preferences\n else return null\n}\nconst savePreferences = async function(store, preferences) {\n // Save the tenant settings to the system collection\n const systemOK = saveTenantPreferences(store, preferences)\n const userPreferenceOK = saveUserPreferences(store, preferences)\n\n if (systemOK && userPreferenceOK) return preferences\n else return null\n}\n\nconst getPicqerWarehouses = async function(store) {\n const warehouses = (await webServices.getPicqerData('warehouses')).data\n if (!warehouses) return\n store.state.picqerWarehouses = warehouses.map((warehouse) => ({ text: warehouse.name, value: warehouse.idwarehouse }))\n}\nconst getMPlusKassaUsers = async function(store) {\n const users = (await webServices.getMPlusKassaData('getEmployees')).data\n if (!users) return\n store.state.mPlusKassaUsers = users.map((user) => ({ text: user.name, value: user.employeeNumber }))\n}\nexport default {\n savePreferences,\n saveTenantPreferences,\n saveUserPreferences,\n onFocusHooks: {\n getPicqerWarehouses: getPicqerWarehouses,\n getMPlusKassaUsers: getMPlusKassaUsers,\n },\n}\n"],"sourceRoot":""}