{"version":3,"file":"terminalapp.js","sourceRoot":"","sources":["../src/menu/menu.ts","../src/menu/header.ts","../src/menu/infobar.ts","../src/apps/appbase.ts","../src/classes/Assistant.ts","../src/classes/AddItemAssistant.ts","../src/app.ts","../src/apps/app_arrival.ts","../src/apps/app_arrival_create.ts","../src/apps/app_arrival_show.ts","../src/classes/PlacementInfoBox.ts","../src/classes/LotInfoBox.ts","../src/apps/app_audit_placement.ts","../src/apps/app_audit_stock.ts","../src/apps/app_device_log.ts","../src/apps/app_empty.ts","../src/apps/app_settings.ts","../src/apps/app_pack_order.ts","../src/apps/app_fast_pack_order.ts","../src/apps/app_generate_picklist.ts","../src/apps/app_item_info.ts","../src/apps/app_location_mapping.ts","../src/apps/app_move_stock.ts","../src/apps/app_order_info.ts","../src/apps/app_pack_tote_list.ts","../src/apps/app_pick_orders.ts","../src/classes/PicklistProblemAssistant.ts","../src/apps/app_picklist.ts","../src/apps/app_production.ts","../src/apps/app_receive_transfer.ts","../src/apps/app_return.ts","../src/apps/app_scan_to_pallet.ts","../src/apps/app_slave.ts","../src/apps/app_status.ts","../src/apps/homescreen.ts","../src/apps/login.ts","../src/classes/AddressFormAssistant.ts","../src/classes/BarcodeInputAssistant.ts","../src/classes/EditLotAssistant.ts","../src/classes/EditShipmentInfoAssistant.ts","../src/classes/FinishProductionAssistant.ts","../src/classes/ItemParkingAssistant.ts","../src/classes/ItemSearcherAssistant.ts","../src/classes/PickAssistant.ts","../src/classes/ItemShortcutAssistant.ts","../src/classes/OrderNoteForm.ts","../src/classes/OrderSearcherAssistant.ts","../src/classes/OrderShipmentSearchAssistant.ts","../src/classes/PlacementFinderAssistant.ts","../src/classes/PlacementPickerAssistant.ts","../src/classes/PlacementShortcutAssistant.ts","../src/classes/PrinterPickAssistant.ts","../src/classes/PurchaseLineAssistant.ts","../src/classes/QuickAuditAssistant.ts","../src/classes/RefundBundleAssistant.ts","../src/classes/SerialNumberAssistant.ts","../src/classes/ToteAssistant.ts","../src/classes/ToteContentInfoBox.ts","../src/classes/TransferPackageAssistant.ts","../src/classes/TrolleyAssistant.ts"],"names":[],"mappings":"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","sourcesContent":["namespace TerminalApp {\r\n export class Menu {\r\n constructor() {\r\n\r\n }\r\n }\r\n}","namespace TerminalApp {\r\n export class Header {\r\n constructor() {\r\n document.getElementById(\"home_button\").onclick = () => {\r\n GetApp(\"homescreen\").open();\r\n }\r\n\r\n document.getElementById(\"home_button_2\").onclick = () => {\r\n GetApp(\"homescreen\").open();\r\n }\r\n\r\n document.getElementById(\"sign_out_button\").onclick = () => {\r\n LogOut();\r\n }\r\n\r\n\r\n (document.querySelector(\".find_placement_button\") as HTMLElement).onclick = () => {\r\n placementFinderAssistant.open(null);\r\n //if (document.fullscreen)\r\n // document.exitFullscreen();\r\n //else\r\n // document.body.requestFullscreen();\r\n }\r\n }\r\n }\r\n}","namespace TerminalApp {\r\n export class Infobar {\r\n info_open_arrivals = document.getElementById(\"info_open_arrivals\");\r\n info_order_count = document.getElementById(\"info_order_count\");\r\n info_being_picked = document.getElementById(\"info_being_picked\");\r\n info_ready_for_pack = document.getElementById(\"info_ready_for_pack\");\r\n\r\n constructor() {\r\n\r\n\r\n const updateInfoBar = (counts: number[], stockCounts: { [id: string]: number }, deadlineCounts: { [id: string]: number }) => {\r\n var readyForPickCount = counts[0];\r\n var totalOrderCount = counts[1];\r\n var beeingPickedCount = counts[2];\r\n var readyPackCount = counts[3];\r\n var arrivalsCount = counts[4];\r\n var auditCount = counts[5];\r\n var refillCount = counts[6];\r\n var productionCount = counts[7];\r\n var blockedCount = counts[8];\r\n this.info_order_count.innerHTML = readyForPickCount + \"/\" + totalOrderCount;\r\n this.info_being_picked.innerHTML = beeingPickedCount.toString();\r\n this.info_ready_for_pack.innerHTML = readyPackCount.toString();\r\n this.info_open_arrivals.innerHTML = arrivalsCount.toString();\r\n\r\n if (blockedCount > 0) {\r\n this.info_ready_for_pack.innerHTML += \" (\" + blockedCount.toString() + \" \" + SP.Localize(\"word_blocked\") + \")\";\r\n }\r\n\r\n //for (var id in stockCounts) {\r\n // document.querySelectorAll(\".stock_count_\" + id).forEach(e => {\r\n // e.innerHTML = stockCounts[id].toString();\r\n // });\r\n //}\r\n\r\n //for (var id in deadlineCounts) {\r\n // document.querySelectorAll(\".deadline_count_\" + id).forEach(e => {\r\n // e.innerHTML = deadlineCounts[id].toString();\r\n // });\r\n //}\r\n\r\n TerminalApp.Homescreen.instance.setAppNumber(\"app_pick_orders\", readyForPickCount);\r\n TerminalApp.Homescreen.instance.setAppNumber(\"app_pack_tote_list\", readyPackCount, blockedCount);\r\n TerminalApp.Homescreen.instance.setAppNumber(\"app_move_stock\", refillCount);\r\n TerminalApp.Homescreen.instance.setAppNumber(\"app_arrival\", arrivalsCount)\r\n TerminalApp.Homescreen.instance.setAppNumber(\"app_audit_placement\", auditCount)\r\n TerminalApp.Homescreen.instance.setAppNumber(\"app_production\", productionCount)\r\n if (TerminalApp.App_Generate_Picklist.instance) TerminalApp.App_Generate_Picklist.instance.updateStockCounts(stockCounts);\r\n if (TerminalApp.App_Generate_Picklist.instance) TerminalApp.App_Generate_Picklist.instance.updateDeadlineCounts(deadlineCounts);\r\n }\r\n hub.on(\"updateInfoBar\", updateInfoBar);\r\n\r\n\r\n\r\n }\r\n }\r\n}","namespace TerminalApp {\r\n\r\n\r\n export function CreateButton(iconUrl: string, buttonText: string): HTMLDivElement {\r\n var button = document.createElement(\"div\");\r\n button.classList.add(\"noselect\", \"btn\");\r\n\r\n if (iconUrl != null) {\r\n var icon = document.createElement(\"img\");\r\n icon.classList.add(\"icon\");\r\n icon.src = iconUrl;\r\n button.appendChild(icon);\r\n }\r\n\r\n if (iconUrl != null) {\r\n var text = document.createElement(\"span\");\r\n text.classList.add(\"text\", \"big\", \"left\");\r\n text.innerHTML = buttonText;\r\n button.appendChild(text);\r\n }\r\n\r\n return button;\r\n }\r\n\r\n export let ignoreHashChange = false;\r\n\r\n let appName = document.querySelector(\".top .headline .app_name\")\r\n\r\n export class AppBase {\r\n container: HTMLElement;\r\n id: string;\r\n is_open: boolean = false;\r\n constructor(id: string) {\r\n this.id = id;\r\n this.container = document.getElementById(this.id);\r\n }\r\n\r\n async onOpen() { };\r\n async onClose() { };\r\n\r\n async close() {\r\n if (this.is_open) {\r\n //remove active notifications\r\n SP.DismissAll();\r\n\r\n //set open state \r\n this.is_open = false;\r\n\r\n //hide contianer\r\n this.container.style.transition = \"\";\r\n this.container.style.opacity = \"0\";\r\n this.container.style.display = \"none\";\r\n this.container.style.pointerEvents = \"none\";\r\n\r\n //leave app group\r\n await hub.connection.invoke(\"leaveGroup\", this.id);\r\n\r\n //call app close event\r\n this.onClose();\r\n }\r\n }\r\n\r\n async open(params: { [name: string]: any } = {}) {\r\n //close running apps\r\n CloseAllApps();\r\n\r\n //start loading\r\n StartLoading();\r\n\r\n //set open state\r\n this.is_open = true;\r\n\r\n //set display and transistion of container\r\n this.container.style.display = \"block\";\r\n this.container.style.transition = \"all ease-out 0.3s\";\r\n\r\n //ignore haschanges and set hashes\r\n ignoreHashChange = true;\r\n params[\"app\"] = this.id;\r\n SP.setAllHash(params);\r\n\r\n //join group and call app onopen\r\n await hub.connection.invoke(\"joinGroup\", this.id);\r\n await this.onOpen();\r\n\r\n //delay for css opacity animation\r\n await SP.sleep(2);\r\n\r\n //click sound\r\n SP.Sounds.Click.play();\r\n\r\n //fade in container\r\n this.container.style.opacity = \"1\";\r\n this.container.style.pointerEvents = \"auto\";\r\n\r\n //revoke hash ignore\r\n ignoreHashChange = false;\r\n\r\n var name = this.container.getAttribute(\"data-name\");\r\n if (name) appName.innerHTML = \" ▸ \" + name;\r\n else appName.innerHTML = \"\";\r\n //stop loading\r\n StopLoading();\r\n }\r\n }\r\n\r\n\r\n \r\n\r\n}","\r\nnamespace TerminalApp {\r\n\r\n export class Assistant {\r\n container = document.createElement(\"div\");\r\n constructor() {\r\n this.container.classList.add(\"assistant\");\r\n //close button\r\n var close_button = this.container.appendChild(document.createElement(\"div\"))\r\n close_button.classList.add(\"close\");\r\n close_button.innerHTML = \"X\";\r\n close_button.addEventListener(\"click\", () => {\r\n this.close();\r\n });\r\n\r\n }\r\n\r\n close() {\r\n this.container.style.display = \"none\";\r\n }\r\n\r\n }\r\n}","/// \r\n\r\nnamespace TerminalApp {\r\n\r\n\r\n export class AddItemAssistant extends Assistant {\r\n form_menu = document.createElement(\"div\");\r\n customer_menu = document.createElement(\"div\");\r\n stock_suggestion_container = document.createElement(\"div\");\r\n error_container: HTMLElement;\r\n ean_input: HTMLInputElement;\r\n sku_input: HTMLInputElement;\r\n description_input: HTMLInputElement;\r\n submit_button: HTMLElement;\r\n customerId: string;\r\n resultCount = 0;\r\n callback: (itemId: string) => void;\r\n constructor() {\r\n super();\r\n\r\n //setup stock screen\r\n var stock_headline = this.customer_menu.appendChild(document.createElement(\"h1\"));\r\n stock_headline.innerHTML = SP.Localize(\"sentance_select_customer\");\r\n this.customer_menu.append(this.stock_suggestion_container);\r\n\r\n\r\n this.form_menu.innerHTML = `\r\n

${SP.Localize(\"sentance_scan_barcode\")}

\r\n
\r\n

${SP.Localize(\"sentance_enter_sku\")}

\r\n \r\n

${SP.Localize(\"sentance_enter_barcode\")}

\r\n \r\n

${SP.Localize(\"sentance_enter_description\")}

\r\n \r\n
Item Not Found
\r\n
${SP.Localize(\"word_add\")}
\r\n `;\r\n\r\n this.ean_input = this.form_menu.querySelector(\".barcode_input\");\r\n this.sku_input = this.form_menu.querySelector(\".sku_input\");\r\n this.description_input = this.form_menu.querySelector(\".description_input\");\r\n this.error_container = this.form_menu.querySelector(\".error\");\r\n this.submit_button = this.form_menu.querySelector(\".btn\");\r\n this.submit_button.addEventListener(\"click\", async () => {\r\n var result = await SP.post(\"/api/v1/item/create\", {\r\n sku: this.sku_input.value,\r\n barcodes: [this.ean_input.value],\r\n description: this.description_input.value,\r\n customerId: this.customerId\r\n });\r\n\r\n if (result.status != 200) {\r\n this.error_container.innerHTML = result.msg;\r\n this.error_container.style.display = \"block\";\r\n SP.Sounds.Error.play();\r\n }\r\n else {\r\n this.callback(result.itemId);\r\n this.close();\r\n }\r\n });\r\n\r\n this.sku_input.addEventListener(\"keydown\", (e) => {\r\n if (e.which == 13) this.ean_input.focus();\r\n });\r\n\r\n this.ean_input.addEventListener(\"keydown\", (e) => {\r\n if (e.which == 13) this.description_input.focus();\r\n });\r\n\r\n //this.description_input.addEventListener(\"keydown\", (e) => {\r\n // if (e.which == 13) this.submit_button.click();\r\n //});\r\n \r\n\r\n this.container.appendChild(this.form_menu);\r\n this.container.appendChild(this.customer_menu);\r\n }\r\n\r\n\r\n hide() {\r\n this.customer_menu.style.display = \"none\";\r\n this.form_menu.style.display = \"none\";\r\n }\r\n\r\n async open_customer_picker() {\r\n this.hide();\r\n this.container.style.display = \"block\";\r\n this.customer_menu.style.display = \"block\";\r\n let customers = await SP.Data.Customer.getCustomerInfos(true);\r\n this.stock_suggestion_container.innerHTML = \"\";\r\n if (customers.length == 1) {\r\n this.customerId = customers[0].customerId;\r\n return this.open_form();\r\n }\r\n\r\n customers.forEach(c => {\r\n this.addCustomer(c);\r\n });\r\n }\r\n\r\n open_form() {\r\n this.hide();\r\n this.ean_input.value = \"\";\r\n this.sku_input.value = \"\";\r\n this.description_input.value = \"\";\r\n this.error_container.style.display = \"none\";\r\n\r\n this.container.style.display = \"block\";\r\n this.form_menu.style.display = \"block\";\r\n }\r\n\r\n clear() {\r\n //clear home buttons\r\n this.container.style.display = \"none\";\r\n }\r\n\r\n addCustomer(item: SP.CustomerInfo) {\r\n var c = this.stock_suggestion_container.appendChild(document.createElement(\"div\"))\r\n c.classList.add(\"btn\", \"noselect\");\r\n c.innerHTML = `
${item.customerName}
`;\r\n c.addEventListener(\"click\", () => {\r\n this.customerId = item.customerId;\r\n this.open_form();\r\n });\r\n }\r\n\r\n bound = false;\r\n\r\n async open(callback: (itemId: string) => void) {\r\n this.callback = callback;\r\n this.open_customer_picker();\r\n\r\n this.ean_input.value = \"\";\r\n //this.ean_input.focus();\r\n\r\n if (!this.bound) {\r\n barcodeListener.on(null, this.scanBarcode, this);\r\n this.bound = true;\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n close() {\r\n if (this.bound) {\r\n barcodeListener.off(null, this.scanBarcode);\r\n this.bound = false;\r\n }\r\n super.close();\r\n }\r\n\r\n scanBarcode(bc: string) {\r\n SP.blurActive();\r\n this.ean_input.value = bc;\r\n this.sku_input.value = bc;\r\n this.description_input.focus();\r\n return false;\r\n }\r\n }\r\n\r\n\r\n}","/// \r\n/// \r\n/// \r\n/// \r\n/// \r\n/// \r\n/// \r\n/// \r\n\r\n\r\n\r\n//namespace DebugLogging {\r\n// export let saveLog: boolean = false;\r\n// export let streamLog: boolean = false;\r\n// export let logMessages: any[] = [];\r\n// var console_log = console.log;\r\n// var console_error = console.error;\r\n\r\n// export function init() {\r\n// console.log = function () {\r\n// if (saveLog) {\r\n// var arr = [\"log\", Date.now(), arguments];\r\n// logMessages.push(arr);\r\n// }\r\n\r\n// if (streamLog) {\r\n// if (TerminalApp.hub.connection.state == \"Connected\")\r\n// TerminalApp.hub.connection.invoke(\"PushDebugLog\", \"log\", arguments);\r\n// }\r\n\r\n// console_log.apply(console, arguments);\r\n// };\r\n\r\n// console.error = function () {\r\n// if (saveLog) {\r\n// var arr = [\"error\", Date.now(), arguments];\r\n// logMessages.push(arr);\r\n// }\r\n\r\n// if (streamLog) {\r\n// if (TerminalApp.hub.connection.state == \"Connected\")\r\n// TerminalApp.hub.connection.invoke(\"PushDebugLog\", \"error\", arguments);\r\n// }\r\n\r\n// console_error.apply(console, arguments);\r\n// };\r\n// }\r\n//}\r\n\r\n\r\n\r\nnamespace TerminalApp {\r\n //vars\r\n export let deviceId = -1;\r\n export let deviceType = \"\";\r\n export let devicePrefix = \"\";\r\n export let currentUser = \"\";\r\n export let currentCustomer = \"\";\r\n export const app_constructors: { [key: string]: any } = {};\r\n export const apps: { [key: string]: AppBase } = {};\r\n export let hub: SP.SignalRConnection = new SP.SignalRConnection(\"/wmshub/\");\r\n export let barcodeListener = new SP.BarcodeEngine();\r\n export const container = document.getElementById(\"terminalapp\");\r\n export const infobar = new TerminalApp.Infobar();\r\n export const header = new TerminalApp.Header();\r\n export const menu = new TerminalApp.Menu();\r\n export let addItemAssistant: AddItemAssistant;\r\n export let itemShortcutAssistant: ItemShortcutAssistant;\r\n export let itemParkingAssistant: ItemParkingAssistant;\r\n export let placementShortcutAssistant: PlacementShortcutAssistant;\r\n export let placementFinderAssistant: PlacementFinderAssistant;\r\n export let placementPickerAssistant: PlacementPickerAssistant;\r\n export let toteAndPlacementPickerAssistant: ToteAndPlacementPickerAssistant;\r\n export let printerPickAssistant: PrinterPickAssistant;\r\n export let toteAssistant: ToteAssistant;\r\n export let itemSearchAssistant: ItemSearcherAssistant;\r\n export let quickAuditAssistant: QuickAuditAssistant;\r\n export let trolleyAssistant: TrolleyAssistant;\r\n export let editLotAssistant: EditLotAssistant;\r\n\r\n export function createListButton(className: string, text: string, action: () => void) {\r\n let btn = document.createElement(\"div\");\r\n btn.classList.add(\"btn\", \"noselect\", \"list_button\", className);\r\n\r\n let icon = btn.appendChild(document.createElement(\"i\"));\r\n icon.classList.add(\"fas\", \"fa-check\", \"icon\");\r\n\r\n let txt = btn.appendChild(document.createElement(\"span\"));\r\n txt.classList.add(\"text\", \"big\", \"left\");\r\n txt.innerHTML = text;\r\n\r\n btn.addEventListener(\"click\", action);\r\n return btn;\r\n }\r\n \r\n export function normalize(number: number) {\r\n return parseFloat(number.toFixed(3));\r\n }\r\n\r\n export function RegisterApp(key: string, constructor: any) {\r\n this.app_constructors[key] = constructor;\r\n }\r\n\r\n export function GetBarcodeQty(allBarcodes: { [key: string]: number }, bc: string): number {\r\n if (!bc || !allBarcodes) return null;\r\n\r\n bc = bc.trim().replace(/^0+/, '');\r\n\r\n // Try accessing directly first\r\n let qty = allBarcodes[bc];\r\n\r\n // If not found, try with leading zeros\r\n if (qty === undefined) {\r\n for (let key in allBarcodes) {\r\n let strippedKey = key.trim().replace(/^0+/, '');\r\n if (strippedKey === bc) {\r\n qty = allBarcodes[key];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n //soft match\r\n if (qty === undefined && App_Settings.wmsSettings.allow_soft_barcode_match) {\r\n for (let key in allBarcodes) {\r\n let strippedKey = key.trim().replace(/^0+/, '');\r\n if (strippedKey.includes(bc) || bc.includes(strippedKey)) {\r\n qty = allBarcodes[key];\r\n break;\r\n }\r\n }\r\n }\r\n\r\n // If still not found, return null\r\n if (qty === undefined) return null;\r\n\r\n return qty ? qty : 1;\r\n }\r\n\r\n let loading = false;\r\n let loadingScreen = document.getElementById(\"loading_screen\");\r\n let loadingVideo = loadingScreen.querySelector(\"video\") as HTMLVideoElement;\r\n let _loadCount = 0;\r\n export async function StartLoading(disableInput: boolean = true, disbleScanning: boolean = true) {\r\n console.log(\"Start\");\r\n\r\n _loadCount++;\r\n loadingScreen.style.pointerEvents = disableInput ? \"all\" : \"none\";\r\n if (disbleScanning) barcodeListener.pause();\r\n\r\n if (!loading) {\r\n loadingVideo.play();\r\n loadingScreen.style.display = \"flex\";\r\n loading = true;\r\n //await SP.sleep(0);\r\n loadingScreen.style.opacity = \"1\";\r\n }\r\n }\r\n\r\n export async function StopLoading() {;\r\n //await SP.sleep(2);\r\n console.log(\"Stop\");\r\n _loadCount--;\r\n console.log(_loadCount);\r\n if (!_loadCount && loading) {\r\n loadingVideo.pause();\r\n loading = false;\r\n barcodeListener.resume();\r\n loadingScreen.style.opacity = \"0\";\r\n loadingScreen.style.display = \"none\";\r\n }\r\n }\r\n\r\n export async function CloseAllApps() {\r\n for (let key in apps) { apps[key].close(); }\r\n }\r\n\r\n export function GetApp(key: string): AppBase {\r\n if (apps[key] == null) apps[key] = new app_constructors[key]();\r\n return apps[key];\r\n }\r\n\r\n //export async function TransferUser() {\r\n // location.href = '/terminal/?handler=SignIn?transfer=' + deviceId;\r\n //}\r\n\r\n export async function LogOut() {\r\n var result = await SP.post(\"/API/FormSubmit/Login?Handler=Logout\", null);\r\n GetApp(\"login\").open();\r\n location.reload();\r\n }\r\n\r\n export function SetDevice(id: number) {\r\n deviceId = id;\r\n localStorage.setItem(\"wms_deviceId\", id.toString());\r\n\r\n\r\n JsBarcode(\"#terminal_barcode2\", devicePrefix + \"_\" + id, {\r\n width: 4,\r\n height: 100,\r\n displayValue: false\r\n });\r\n\r\n document.querySelectorAll(\".terminal_name\").forEach(item => item.innerHTML = deviceType + \" \" + id.toString());\r\n }\r\n\r\n\r\n export function start(authenticated: boolean, userId: string, _deviceType: string, _devicePrefix: string) {\r\n //DebugLogging.init();\r\n\r\n deviceType = _deviceType;\r\n devicePrefix = _devicePrefix;\r\n currentUser = userId;\r\n\r\n\r\n barcodeListener._startCallbacks.push(() => {\r\n //console.log(\"Start Scanning Barcode\");\r\n SP.blurActive();\r\n });\r\n\r\n //method that will convert alternativ barcodes to stock placement scans!\r\n if (App_Settings.wmsSettings.use_additional_placement_barcodes) {\r\n var cached: any = {};\r\n var n = 0;\r\n barcodeListener._convertScanMethods.push(async (barcode) => {\r\n if (\r\n barcode\r\n && barcodeListener.hasBoundCommand(\"sp\")\r\n ) {\r\n //clear cache at 300\r\n if (n > 300) {\r\n cached = {};\r\n n = 0;\r\n }\r\n\r\n //get from cache or add from api\r\n if (cached[barcode] === undefined) {\r\n cached[barcode] = await SP.get(\"/api/v1/info/getPlacementId/\" + barcode) ?? false;\r\n n++;\r\n }\r\n\r\n //convert to stockplacement scan\r\n if (cached[barcode]) {\r\n barcodeListener.performScan(\"sp_\" + cached[barcode]);\r\n return false;\r\n\r\n }\r\n\r\n }\r\n\r\n return true;\r\n });\r\n }\r\n\r\n hub.on(\"ScanBarcode\", async (code: string) => {\r\n await barcodeListener.performScan(code);\r\n });\r\n\r\n\r\n hub.on(\"alert\", (msg: string) => {\r\n SP.alertX(msg);\r\n });\r\n\r\n hub.on(\"goToHomeScreen\", (msg: string) => {\r\n GetApp(\"homescreen\").open();\r\n });\r\n\r\n hub.on(\"transferUser\", async () => {\r\n var success = await SP.post(\"/API/FormSubmit/Login?Handler=Transfer&TransferDeviceId=\" + deviceId, null);\r\n if (success) {\r\n authenticated = true;\r\n if (devicePrefix == \"ps\")\r\n await GetApp(\"app_pack_tote_list\").open();\r\n else\r\n await GetApp(\"homescreen\").open();\r\n location.reload();\r\n }\r\n });\r\n\r\n hub.on(\"update_ui\", (className: string, value: string) => {\r\n document.querySelectorAll(\".\" + className).forEach((item) => {\r\n item.innerHTML = value;\r\n });\r\n console.log(\"updating \" + className + \" with value: \" + value);\r\n });\r\n\r\n //hub.on(\"transferUser\", TransferUser);\r\n\r\n //hub.on(\"signOut\", LogOut);\r\n\r\n let _reconnecting = false;\r\n\r\n let registerDevice = async () => {\r\n var wms_deviceId = parseInt(localStorage.getItem(\"wms_deviceId\") ?? \"-1\");\r\n console.log(\"RegisterDevice\", wms_deviceId, 1);\r\n deviceId = await hub.connection.invoke(\"RegisterDevice\", wms_deviceId, 1);\r\n SetDevice(deviceId);\r\n }\r\n\r\n hub.onDisconnect((error) => {\r\n if (!_reconnecting) {\r\n _reconnecting = true;\r\n console.log(error);\r\n StartLoading(true, true);\r\n console.log(\"DISCONNECTED\");\r\n }\r\n });\r\n\r\n hub.onReconnected(async () => {\r\n if (_reconnecting) {\r\n //force reload current location app\r\n CloseAllApps();\r\n ignoreHashChange = false;\r\n await hashChanged();\r\n await registerDevice();\r\n StopLoading();\r\n console.log(\"RECONNECTED\");\r\n _reconnecting = false;\r\n }\r\n });\r\n var settingsApp = (GetApp(\"app_settings\") as App_Settings);\r\n hub.start(App_Settings.terminalSettings.transport, async () => {\r\n await registerDevice();\r\n\r\n if (!authenticated)\r\n GetApp(\"login\").open();\r\n else {\r\n //load settings\r\n await settingsApp.loadUserSettings();\r\n var appKey = SP.getHash(\"app\");\r\n var params = SP.getHashData();\r\n delete params[\"app\"];\r\n if (appKey != null) GetApp(appKey).open(params);\r\n else GetApp(\"homescreen\").open();\r\n }\r\n });\r\n\r\n ///Bind barcode commands\r\n barcodeListener.on(\"te\", (terminalId) => {\r\n //temp do auto slave\r\n var id = parseInt(terminalId);\r\n SP.setAllHash({ \"app\": \"app_slave\", \"parent\": id.toString() });\r\n\r\n return;\r\n\r\n hub.connection.invoke(\"TransferLoginToTerminal\", parseInt(terminalId)).then((result) => {\r\n if (result.success) {\r\n LogOut();\r\n }\r\n });\r\n }, null);\r\n\r\n ///Bind barcode commands\r\n barcodeListener.on(\"ps\", (terminalId) => {\r\n hub.connection.invoke(\"TransferLoginToTerminal\", parseInt(terminalId)).then((result) => {\r\n var id = parseInt(terminalId);\r\n SP.setAllHash({ \"app\": \"app_slave\", \"parent\": id.toString() });\r\n });\r\n }, null);\r\n\r\n\r\n ///Bind barcode commands\r\n barcodeListener.on(\"a\", (deviceId) => {\r\n var id = parseInt(deviceId);\r\n SP.setAllHash({ \"app\": \"app_slave\", \"parent\": id.toString() });\r\n }, null);\r\n\r\n\r\n barcodeListener.on(\"print\", (data) => {\r\n selectPrinter(data);\r\n }, null);\r\n\r\n barcodeListener.on(\"lt\", async (token) => {\r\n var loginApp = await GetApp(\"login\") as login;\r\n await loginApp.open();\r\n (document.getElementById(\"login_username\") as HTMLInputElement).value = \"\";\r\n (document.getElementById(\"login_password\") as HTMLInputElement).value = token;\r\n await loginApp.LogIn();\r\n }, null);\r\n\r\n //fix touch problems\r\n\r\n container.addEventListener(\"touchmove\", (e) => {\r\n // console.log(\"prevented default behaviour\");\r\n // e.preventDefault();\r\n });\r\n container.addEventListener(\"touchstart\", (e) => {\r\n //console.log(\"prevented default behaviour\");\r\n //e.preventDefault();\r\n });\r\n\r\n addItemAssistant = new AddItemAssistant();\r\n itemShortcutAssistant = new ItemShortcutAssistant();\r\n itemParkingAssistant = new ItemParkingAssistant();\r\n placementShortcutAssistant = new PlacementShortcutAssistant();\r\n placementFinderAssistant = new PlacementFinderAssistant();\r\n placementPickerAssistant = new PlacementPickerAssistant();\r\n toteAndPlacementPickerAssistant = new ToteAndPlacementPickerAssistant();\r\n toteAssistant = new ToteAssistant();\r\n itemSearchAssistant = new ItemSearcherAssistant();\r\n quickAuditAssistant = new QuickAuditAssistant();\r\n trolleyAssistant = new TrolleyAssistant();\r\n editLotAssistant = new EditLotAssistant();\r\n\r\n printerPickAssistant = new PrinterPickAssistant();\r\n container.appendChild(placementFinderAssistant.container);\r\n container.appendChild(addItemAssistant.container);\r\n container.appendChild(itemShortcutAssistant.container);\r\n container.appendChild(itemParkingAssistant.container);\r\n container.appendChild(placementShortcutAssistant.container);\r\n container.appendChild(placementPickerAssistant.container);\r\n container.appendChild(toteAndPlacementPickerAssistant.container);\r\n container.appendChild(printerPickAssistant.container);\r\n container.appendChild(toteAssistant.container);\r\n container.appendChild(itemSearchAssistant.container);\r\n container.appendChild(quickAuditAssistant.container);\r\n container.appendChild(trolleyAssistant.container);\r\n container.appendChild(editLotAssistant.container);\r\n\r\n }\r\n\r\n export function selectPrinter(data: string) {\r\n let name = data.split(\":\")[0];\r\n let labelFormat = data.split(\":\")[1];\r\n let current = labelFormat === \"1\" ? App_Settings.terminalSettings.etiquette_printer :\r\n labelFormat === \"2\" ? App_Settings.terminalSettings.a4_printer :\r\n App_Settings.terminalSettings.label_printer;\r\n\r\n if (current == name || name == \"\") return;\r\n\r\n if (labelFormat === \"0\") App_Settings.terminalSettings.label_printer = name;\r\n else if (labelFormat === \"1\") App_Settings.terminalSettings.etiquette_printer = name;\r\n else if (labelFormat === \"2\") App_Settings.terminalSettings.a4_printer = name;\r\n else {\r\n //set all\r\n App_Settings.terminalSettings.label_printer = App_Settings.terminalSettings.etiquette_printer = App_Settings.terminalSettings.a4_printer = name;\r\n }\r\n\r\n App_Settings.instance.saveSettings();\r\n DeviceLog.log(\"Changing printer to \" + name);\r\n\r\n //talk\r\n var text = SP.Localize(\"sentance_now_using_printer\") + \" \" + name;\r\n\r\n if (labelFormat === \"0\") text += \", \" + SP.Localize(\"sentance_for_labels\");\r\n else if (labelFormat === \"1\") text += \", \" + SP.Localize(\"sentance_for_etiquettes\");\r\n else if (labelFormat === \"2\") text += \", \" + SP.Localize(\"sentance_for_a4\");\r\n\r\n Talk(text);\r\n }\r\n\r\n export async function hashChanged() {\r\n if (ignoreHashChange) {\r\n ignoreHashChange = false;\r\n return;\r\n }\r\n console.log(\"Changed Hash, loading new page\");\r\n var appKey = SP.getHash(\"app\");\r\n var params = SP.getHashData();\r\n delete params[\"app\"];\r\n if (appKey != null) await GetApp(appKey).open(params);\r\n }\r\n\r\n if ('serviceWorker' in navigator) {\r\n window.addEventListener('load', () => {\r\n navigator.serviceWorker.register('/sw.js?v=2', {\r\n scope: '/'\r\n })\r\n .then(registration => {\r\n console.log(\"Service Worker registration completed ...\");\r\n });\r\n });\r\n }\r\n\r\n //listen for hashchanges\r\n window.addEventListener(\"hashchange\", () => {\r\n hashChanged();\r\n }, false);\r\n\r\n\r\n\r\n\r\n export class Input_Popup {\r\n container = document.createElement(\"div\");\r\n headline = document.createElement(\"h1\");\r\n input = document.createElement(\"input\");\r\n btn = document.createElement(\"div\");\r\n btn_close = document.createElement(\"div\");\r\n btn_txt = document.createElement(\"span\");\r\n action: () => void;\r\n\r\n get value() {\r\n return this.input.value;\r\n }\r\n\r\n set value(val) {\r\n this.input.value = val;\r\n }\r\n\r\n get open() {\r\n return this.container.style.display == \"block\";\r\n }\r\n\r\n constructor() {\r\n this.container.appendChild(this.headline);\r\n this.container.appendChild(this.input);\r\n this.container.appendChild(this.btn);\r\n this.btn.appendChild(this.btn_txt);\r\n\r\n this.btn_close.classList.add(\"close\");\r\n this.btn_close.innerHTML = \"X\";\r\n this.btn_close.addEventListener(\"click\", () => { this.hide(); });\r\n this.container.appendChild(this.btn_close);\r\n\r\n\r\n this.container.classList.add(\"input_popup\")\r\n\r\n //style\r\n this.input.classList.add(\"full_input\");\r\n this.btn.classList.add(\"btn\", \"grad-green\")\r\n this.btn_txt.classList.add(\"text\", \"big\", \"center\");\r\n\r\n\r\n this.btn.addEventListener(\"click\", () => { this.execute(); });\r\n container.appendChild(this.container);\r\n }\r\n\r\n show(headline: string, buttonText: string, placeholder: string, action: () => void) {\r\n this.btn_txt.innerHTML = buttonText;\r\n this.headline.innerHTML = headline;\r\n this.input.placeholder = placeholder;\r\n this.input.value = '';\r\n this.action = action;\r\n this.container.style.display = \"block\";\r\n }\r\n\r\n hide() {\r\n this.container.style.display = \"none\";\r\n }\r\n\r\n execute() {\r\n if (this.action) this.action();\r\n this.hide();\r\n }\r\n\r\n setExecute(value: string) {\r\n this.input.value = value;\r\n this.btn.click();\r\n }\r\n\r\n }\r\n export let input_popup = new Input_Popup();\r\n}\r\n\r\n","/// \r\n\r\nnamespace TerminalApp {\r\n\r\n\r\n\r\n class ArrivalElement {\r\n index: number = 0;\r\n renderedIndex: number = 0;\r\n data: SP.ArrivalInfo;\r\n html: HTMLElement;\r\n menu: SP.SwipeMenu;\r\n\r\n\r\n constructor(data: SP.ArrivalInfo) {\r\n this.data = data;\r\n\r\n var icon = data.arrivalType == SP.ArrivalType.Return || data.arrivalType == SP.ArrivalType.InternalReturn ? \"/terminal/img/icon/return-box.png\" : data.arrivalType == SP.ArrivalType.Audit ? \"/terminal/img/icon/audit-box.png\" : \"/terminal/img/icon/open-box.png\";\r\n\r\n var locInfo = data.arrivalLocation ? `(${data.arrivalLocation})` : \"\";\r\n this.html = CreateButton(icon, `${data.stockName} ${locInfo}
${data.arrivalSender} ${data.arrivalReferenceNo}`);\r\n this.html.classList.add(\"full\");\r\n\r\n var timeText = document.createElement(\"div\");\r\n timeText.classList.add(\"text\", \"top\", \"right\");\r\n timeText.innerHTML = `${data.arrivalDate} ${data.arrivalTime}`;\r\n this.html.appendChild(timeText);\r\n //;\r\n var statusText = document.createElement(\"div\");\r\n statusText.classList.add(\"text\", \"bottom\", \"right\");\r\n statusText.style.bottom = \"9px\";\r\n var statusColor = data.itemsArrived == data.itemsExpected ? \"\" : \"style='background-color: #eba537'\";\r\n statusText.innerHTML = `${data.itemsArrived} / ${data.itemsExpected ? data.itemsExpected : \"-\"}`;\r\n this.html.appendChild(statusText);\r\n\r\n if (data.arrivalFinished) {\r\n this.html.classList.add(\"faded\");\r\n this.html.addEventListener(\"click\", () => { GetApp(\"app_arrival_show\").open({ id: this.data.arrivalId }) });\r\n }\r\n else {\r\n this.menu = new SP.SwipeMenu(\r\n /*Element*/\r\n this.html,\r\n\r\n /*Click Event*/\r\n () => { GetApp(\"app_arrival_show\").open({ id: this.data.arrivalId }) },\r\n\r\n /*buttons*/\r\n [\r\n /*Edit Button */{ icon: \"\", text: SP.Localize(\"word_edit\"), color: \"#359ee8\", confirm: false, action: async () => { SP.setAllHash({ \"app\": \"app_arrival_create\", \"id\": this.data.arrivalId }) } },\r\n /*Finish Button*/{\r\n icon: \"\", text: SP.Localize(\"word_finish\"), color: \"#5ce835\", confirm: true, action: async () => {\r\n var result = await SP.get(\"/api/v1/arrival/finish/\" + this.data.arrivalId);\r\n if (result.status == 200) {\r\n SP.Sounds.Success.play();\r\n }\r\n else {\r\n \r\n this.menu.return();\r\n await SP.alertX(`${result.status}: ${result.msg}`);\r\n if (result.exception) { console.log(result.exception); }\r\n }\r\n }\r\n }\r\n ],\r\n /*group*/\r\n \"app_arrival\"\r\n );\r\n }\r\n }\r\n }\r\n\r\n class ArrivalAssistant {\r\n container = document.createElement(\"div\");\r\n home_menu = document.createElement(\"div\");\r\n stock_menu = document.createElement(\"div\");\r\n po_menu = document.createElement(\"div\");\r\n sender_menu = document.createElement(\"div\");\r\n reference_menu = document.createElement(\"div\");\r\n location_menu = document.createElement(\"div\");\r\n front_po_suggestion_container = document.createElement(\"div\");\r\n stock_suggestion_container = document.createElement(\"div\");\r\n po_suggestion_container = document.createElement(\"div\");\r\n sender_suggestion_container = document.createElement(\"div\");\r\n locations_container = document.createElement(\"div\");\r\n\r\n sender_input = document.createElement(\"input\");\r\n reference_number_input = document.createElement(\"input\");\r\n sender_reference_number_input = document.createElement(\"input\");\r\n customer_name_input = document.createElement(\"input\");\r\n customer_name_container = document.createElement(\"div\");\r\n\r\n po_search_input: HTMLInputElement;\r\n\r\n create_button: HTMLElement;\r\n error: HTMLElement;\r\n\r\n initialized = false;\r\n stockButtons: HTMLElement[] = [];\r\n\r\n result_barcode: string;\r\n result_sender: string;\r\n result_reference: string;\r\n result_sender_reference: string;\r\n result_arrival_location: string;\r\n result_customer: string;\r\n result_purchase_order: SP.purchaseOrderInfo;\r\n result_arrival_type: SP.ArrivalType;\r\n\r\n constructor() {\r\n\r\n this.container.classList.add(\"assistant\");\r\n\r\n //close button\r\n var close_button = this.container.appendChild(document.createElement(\"div\"))\r\n close_button.classList.add(\"close\");\r\n close_button.innerHTML = \"X\";\r\n close_button.addEventListener(\"click\", () => {\r\n this.close();\r\n });\r\n\r\n //setup home screen\r\n var home_headline = this.home_menu.appendChild(document.createElement(\"h1\"));\r\n home_headline.innerHTML = SP.Localize(\"word_suggestions\");\r\n this.home_menu.append(this.front_po_suggestion_container);\r\n this.addArrivalButton();\r\n this.addReturnButton();\r\n this.addAuditButton();\r\n this.addInternalReturnButton();\r\n this.container.appendChild(this.home_menu);\r\n\r\n //setup stock screen\r\n var stock_headline = this.stock_menu.appendChild(document.createElement(\"h1\"));\r\n stock_headline.innerHTML = SP.Localize(\"sentance_pick_stock\");\r\n this.stock_menu.append(this.stock_suggestion_container);\r\n this.container.appendChild(this.stock_menu);\r\n\r\n //setup pending screen\r\n var po_headline = this.po_menu.appendChild(document.createElement(\"h1\"));\r\n po_headline.innerHTML = SP.Localize(\"sentance_select_purchase_order\");\r\n\r\n\r\n //search\r\n var po_search_input = this.po_search_input = document.createElement(\"input\");\r\n po_search_input.type = \"text\";\r\n po_search_input.placeholder = SP.Localize(\"sentance_search_purchase_order\") + \" ...\";\r\n po_search_input.autocomplete = \"off\";\r\n po_search_input.tabIndex = 1;\r\n po_search_input.classList.add(\"search_input\", \"form-control\");\r\n this.po_menu.append(po_search_input);\r\n\r\n var timeout: any = null;\r\n po_search_input.addEventListener(\"input\", () => {\r\n var keyword = po_search_input.value;\r\n clearTimeout(timeout);\r\n timeout = setTimeout(() => {\r\n this.search_purchace_orders(keyword);\r\n }, 1000);\r\n });\r\n\r\n\r\n this.po_menu.append(this.po_suggestion_container);\r\n this.container.appendChild(this.po_menu);\r\n\r\n var manualButton = this.po_menu.appendChild(document.createElement(\"div\"));\r\n manualButton.classList.add(\"btn\", \"grad-green\", \"noselect\");\r\n manualButton.innerHTML = `${SP.Localize(\"sentance_add_manually\")}`;\r\n manualButton.addEventListener(\"click\", () => { this.open_sender_menu() });\r\n\r\n\r\n //setup sender screen\r\n var sender_headline = this.sender_menu.appendChild(document.createElement(\"h1\"));\r\n sender_headline.innerHTML = SP.Localize(\"sentance_pick_sender\");\r\n this.sender_input.type = \"text\";\r\n this.sender_input.placeholder = SP.Localize(\"sentance_find_sender\") + \" ...\";\r\n this.sender_input.autocomplete = \"off\";\r\n this.sender_input.tabIndex = 1;\r\n this.sender_input.classList.add(\"search_input\", \"form-control\");\r\n this.sender_input.addEventListener(\"keyup\", () => {\r\n this.load_senders(this.result_customer, this.sender_input.value);\r\n });\r\n\r\n this.sender_menu.append(this.sender_input);\r\n this.sender_menu.append(this.sender_suggestion_container);\r\n this.container.appendChild(this.sender_menu);\r\n\r\n\r\n //setup locations screen\r\n var location_headline = this.location_menu.appendChild(document.createElement(\"h1\"));\r\n location_headline.innerHTML = SP.Localize(\"sentance_pick_arrival_location\");\r\n this.location_menu.append(this.locations_container);\r\n this.container.appendChild(this.location_menu);\r\n\r\n\r\n\r\n //setup reference\r\n var customer_name_headline = this.customer_name_container.appendChild(document.createElement(\"h1\"));\r\n customer_name_headline.innerHTML = SP.Localize(\"sentance_customer_name\");\r\n this.customer_name_input.type = \"text\";\r\n this.customer_name_input.placeholder = SP.Localize(\"sentance_customer_name\");\r\n this.customer_name_input.autocomplete = \"off\";\r\n this.customer_name_input.tabIndex = 1;\r\n this.customer_name_input.classList.add(\"search_input\", \"form-control\");\r\n this.customer_name_container.append(this.customer_name_input);\r\n this.reference_menu.append(this.customer_name_container);\r\n\r\n var reference_number_headline = this.reference_menu.appendChild(document.createElement(\"h1\"));\r\n reference_number_headline.innerHTML = SP.Localize(\"sentance_reference_number\");\r\n this.reference_number_input.type = \"text\";\r\n this.reference_number_input.placeholder = SP.Localize(\"sentance_reference_number\");\r\n this.reference_number_input.autocomplete = \"off\";\r\n this.reference_number_input.tabIndex = 1;\r\n this.reference_number_input.classList.add(\"search_input\", \"form-control\", \"allow-scan\");\r\n this.reference_menu.append(this.reference_number_input);\r\n this.container.appendChild(this.reference_menu);\r\n\r\n this.sender_reference_number_input.type = \"text\";\r\n this.sender_reference_number_input.placeholder = `${SP.Localize(\"word_sender\")} ${SP.Localize(\"sentance_reference_number\")} (${SP.Localize(\"word_optional\") })`; \r\n this.sender_reference_number_input.autocomplete = \"off\";\r\n this.sender_reference_number_input.tabIndex = 1;\r\n this.sender_reference_number_input.classList.add(\"search_input\", \"form-control\", \"allow-scan\");\r\n this.reference_menu.append(this.sender_reference_number_input);\r\n\r\n\r\n this.error = this.reference_menu.appendChild(document.createElement(\"div\"));\r\n this.error.classList.add(\"error\");\r\n\r\n this.create_button = this.reference_menu.appendChild(document.createElement(\"div\"))\r\n this.create_button.classList.add(\"btn\", \"noselect\", \"grad-green\");\r\n var action = this.create_button.appendChild(document.createElement(\"span\"));\r\n action.classList.add(\"action\");\r\n action.innerHTML = SP.Localize(\"word_create\");\r\n\r\n\r\n\r\n this.create_button.addEventListener(\"click\", async () => {\r\n this.result_reference = this.reference_number_input.value;\r\n this.result_sender_reference = this.sender_reference_number_input.value;\r\n\r\n\r\n //Open if allready exsist\r\n let arrivals = App_Arrival.instance.arrivals_sorted;\r\n console.log(arrivals);\r\n for (let i = 0; i < arrivals.length; i++) {\r\n\r\n var d = arrivals[i].data;\r\n if (d.arrivalReferenceNo == this.result_reference &&\r\n d.arrivalType == this.result_arrival_type &&\r\n d.arrivalSender == this.result_sender &&\r\n d.arrivalFinished == false &&\r\n d.customerId == this.result_customer &&\r\n d.arrivalLocation == this.result_arrival_location &&\r\n this.result_purchase_order?.id == (d.purchaseOrderId ?? null)) {\r\n return GetApp(\"app_arrival_show\").open({ id: d.arrivalId });\r\n }\r\n }\r\n\r\n //take sender from differnt input with RMA\r\n if (this.result_arrival_type == SP.ArrivalType.Return) {\r\n this.result_sender = this.customer_name_input.value;\r\n }\r\n\r\n var result = await SP.post(\"/api/v1/arrival/create\", {\r\n customerId: this.result_customer,\r\n sender: this.result_sender,\r\n referenceNo: this.result_reference,\r\n senderReferenceNo: this.result_sender_reference,\r\n arrivalType: this.result_arrival_type,\r\n arrivalLocation: this.result_arrival_location,\r\n PurchaseOrderId: this.result_purchase_order?.id\r\n })\r\n\r\n if (result.status != 200) {\r\n this.error.innerHTML = result.msg;\r\n SP.Sounds.Error.play();\r\n this.error.style.display = \"block\";\r\n }\r\n else {\r\n SP.Sounds.Success.play();\r\n await SP.setAllHash({ app: \"app_arrival_show\", id: result.arrivalId });\r\n if (this.result_barcode) {\r\n await SP.sleep(300);\r\n await barcodeListener.performScan(this.result_barcode);\r\n }\r\n }\r\n });\r\n\r\n\r\n }\r\n\r\n\r\n async load_senders(customerId: string, keyword: string = \"\") {\r\n var search_result = await SP.Data.Arrival.findSender(customerId, keyword, 20);\r\n this.sender_suggestion_container.innerHTML = \"\";\r\n var perfectMatch = false;\r\n keyword = keyword.trim();\r\n for (let i = 0; i < search_result.length; i++) {\r\n var n = search_result[i];\r\n if (n == keyword)\r\n perfectMatch = true;\r\n this.addSenderButton(n, n);\r\n }\r\n\r\n if (!perfectMatch && keyword.length > 1) {\r\n this.addSenderButton(keyword + \"
\" + SP.Localize(\"sentance_new_sender\") + \"?\", keyword)\r\n }\r\n }\r\n\r\n hide_all_page() {\r\n this.home_menu.style.display = \"none\";\r\n this.stock_menu.style.display = \"none\";\r\n this.po_menu.style.display = \"none\";\r\n this.sender_menu.style.display = \"none\";\r\n this.reference_menu.style.display = \"none\";\r\n this.location_menu.style.display = \"none\";\r\n\r\n }\r\n\r\n open_home_menu() {\r\n this.hide_all_page();\r\n this.container.style.display = \"block\";\r\n this.home_menu.style.display = \"block\";\r\n }\r\n\r\n open_stock_menu() {\r\n if (this.stockButtons.length == 1) {\r\n this.stockButtons[0].click();\r\n return;\r\n }\r\n\r\n this.hide_all_page();\r\n this.container.style.display = \"block\";\r\n this.stock_menu.style.display = \"block\";\r\n }\r\n\r\n async search_purchace_orders(word: string) {\r\n var paType = this.result_arrival_type == SP.ArrivalType.Standard ? SP.PurchaseOrderType.PurchaseOrder : SP.PurchaseOrderType.ReturnOrder;\r\n var purchaseOrders = await SP.Data.PurchaseOrder.getPurchaseOrders(this.result_customer, paType, SP.PurchaseOrderState.Ordered, word);\r\n\r\n this.po_suggestion_container.innerHTML = \"\";\r\n for (let i = 0; i < purchaseOrders.length; i++) {\r\n await this.addPurchaseOrder(purchaseOrders[i], true);\r\n }\r\n }\r\n\r\n async open_po_menu() {\r\n //dont look for arrivals if not Standard/Return\r\n if (this.result_arrival_type != SP.ArrivalType.Return && this.result_arrival_type != SP.ArrivalType.Standard) return this.open_sender_menu();\r\n\r\n\r\n await this.search_purchace_orders(\"\");\r\n if (this.purchaseOrderButtons.length == 0) return this.open_sender_menu();\r\n\r\n //auto click to sender if none\r\n\r\n this.hide_all_page();\r\n this.container.style.display = \"block\";\r\n this.po_menu.style.display = \"block\";\r\n }\r\n\r\n async open_location_menu(locations: SP.purchaeOrderLocationInfo[]) {\r\n\r\n\r\n //clear container\r\n this.locations_container.innerHTML = \"\";\r\n\r\n\r\n\r\n //add buttons\r\n for (var i = 0; i < locations.length; i++) {\r\n var loc = locations[i];\r\n this.addLocationButton(loc.location, loc.location, loc.totalQty, loc.deliveredQty);\r\n }\r\n\r\n this.hide_all_page();\r\n this.container.style.display = \"block\";\r\n this.location_menu.style.display = \"block\";\r\n }\r\n\r\n open_sender_menu() {\r\n this.sender_input.value = \"\";\r\n\r\n //skip sender menu for RMA\r\n if (this.result_arrival_type != SP.ArrivalType.Standard) {\r\n this.open_reference_menu();\r\n return;\r\n }\r\n\r\n this.hide_all_page();\r\n this.container.style.display = \"block\";\r\n this.sender_menu.style.display = \"block\";\r\n this.load_senders(this.result_customer);\r\n }\r\n\r\n open_reference_menu() {\r\n this.customer_name_input.value = \"\";\r\n this.reference_number_input.value = \"\";\r\n this.sender_reference_number_input.value = \"\";\r\n\r\n\r\n\r\n //auto fill the reference if purchase order\r\n if (this.result_purchase_order) {\r\n this.result_reference = this.result_purchase_order.referenceNo;\r\n this.reference_number_input.value = this.result_reference;\r\n this.sender_reference_number_input.focus();\r\n }\r\n\r\n\r\n if (this.result_arrival_type == SP.ArrivalType.Audit) {\r\n var date = new Date();\r\n this.reference_number_input.value = \"Audit \" + date.getDate().toString().padStart(2, \"0\") + \"-\" + (date.getMonth() + 1).toString().padStart(2, \"0\") + \"-\" + date.getFullYear() + \" \" + date.getHours().toString().padStart(2, \"0\") + \":\" + date.getMinutes().toString().padStart(2, \"0\") + \":\" + date.getSeconds().toString().padStart(2, \"0\");\r\n }\r\n\r\n if (this.result_arrival_type == SP.ArrivalType.InternalReturn) {\r\n var date = new Date();\r\n this.reference_number_input.value = \"Internal \" + date.getDate().toString().padStart(2, \"0\") + \"-\" + (date.getMonth() + 1).toString().padStart(2, \"0\") + \"-\" + date.getFullYear() + \" \" + date.getHours().toString().padStart(2, \"0\") + \":\" + date.getMinutes().toString().padStart(2, \"0\") + \":\" + date.getSeconds().toString().padStart(2, \"0\");\r\n }\r\n\r\n if (this.result_arrival_type == SP.ArrivalType.Standard) {\r\n this.reference_number_input.focus();\r\n }\r\n\r\n if (this.result_arrival_type == SP.ArrivalType.Return) {\r\n this.customer_name_input.focus();\r\n }\r\n\r\n this.hide_all_page();\r\n this.container.style.display = \"block\";\r\n this.customer_name_container.style.display = this.result_arrival_type == SP.ArrivalType.Return ? \"block\" : \"none\";\r\n this.reference_menu.style.display = \"block\";\r\n }\r\n\r\n clear() {\r\n //clear home buttons\r\n this.front_po_suggestion_container.innerHTML = \"\";\r\n this.result_barcode = null;\r\n this.result_sender = null;\r\n this.result_reference = null;\r\n this.result_customer = null;\r\n this.result_purchase_order = null;\r\n this.result_arrival_type = null;\r\n this.container.style.display = \"none\";\r\n this.home_menu.style.display = \"none\";\r\n this.error.style.display = \"none\";\r\n this.purchaseOrderButtons = [];\r\n }\r\n\r\n async init() {\r\n if (this.initialized) return;\r\n\r\n var all_customers = await SP.Data.Customer.getCustomerInfos();\r\n\r\n for (let i = 0; i < all_customers.length; i++) {\r\n this.addCustomerButton(all_customers[i]);\r\n }\r\n\r\n this.initialized = true;\r\n }\r\n\r\n async open(barcode: string) {\r\n this.front_po_suggestion_container.innerHTML = \"\";\r\n\r\n await this.init();\r\n\r\n this.clear();\r\n\r\n this.result_barcode = barcode;\r\n if (barcode) {\r\n //var PurchaseOrders = await SP.Data.PurchaseOrder.getPurchaseOrders(this.result_customer, null, SP.PurchaseOrderState.Ordered, barcode);\r\n var PurchaseOrders = await SP.Data.PurchaseOrder.getBarcodeSearch(barcode);\r\n for (let i = 0; i < PurchaseOrders.length; i++) {\r\n await this.addPurchaseOrder(PurchaseOrders[i], false);\r\n }\r\n }\r\n //show suggestion container and home screen\r\n this.open_home_menu();\r\n }\r\n\r\n close() {\r\n this.container.style.display = \"none\";\r\n }\r\n\r\n purchaseOrderButtons: HTMLElement[] = [];\r\n\r\n async addPurchaseOrder(po: SP.purchaseOrderInfo, stock_list: boolean = false) {\r\n console.log(po, stock_list);\r\n var ci = await SP.Data.Customer.getCustomerInfo(po.customerId, true);\r\n\r\n\r\n var c = document.createElement(\"div\");\r\n if (stock_list) this.po_suggestion_container.appendChild(c);\r\n else this.front_po_suggestion_container.appendChild(c)\r\n c.classList.add(\"btn\", \"noselect\");\r\n\r\n\r\n if (!stock_list) {\r\n c.innerHTML = `${po.purchaseOrderType == SP.PurchaseOrderType.PurchaseOrder ? \"Purchase Order Arrival\" : \"Return Order Arrival\"}
`;\r\n }\r\n\r\n c.innerHTML += `\r\n ${ci.customerName} / ${po.supplier.name} / ${po.referenceNo}
\r\n ${SP.Localize(\"sentance_order_lines\")} ${po.lineCount} | ${SP.Localize(\"sentance_items_delivered\")} ${po.deliveredItems}/${po.itemsTotal}
\r\n ${SP.Localize(\"sentance_expected_delivery\")} ${po.expectedDeliveryDate}`;\r\n\r\n if (po.trackingNumbers) c.innerHTML += `
${SP.Localize(\"sentance_tracking_numbers\")} ${po.trackingNumbers}`;\r\n c.innerHTML += \"
\"\r\n\r\n c.addEventListener(\"click\", () => {\r\n this.result_purchase_order = po;\r\n this.result_customer = po.customerId;\r\n this.result_sender = po.supplier.name;\r\n\r\n this.result_arrival_type = po.purchaseOrderType == SP.PurchaseOrderType.ReturnOrder ? SP.ArrivalType.Return : SP.ArrivalType.Standard;\r\n if (po.purchaseOrderType == SP.PurchaseOrderType.ReturnOrder) this.customer_name_input.value = po.supplier.name;\r\n\r\n\r\n //If more locations, open location menu\r\n\r\n\r\n\r\n if (po.locationInfos.length > 1) {\r\n this.open_location_menu(po.locationInfos);\r\n }\r\n else {\r\n this.result_arrival_location = po.locationInfos[0].location;\r\n this.open_reference_menu();\r\n }\r\n\r\n });\r\n\r\n this.purchaseOrderButtons.push(c);\r\n }\r\n\r\n addLocationButton(name: string, key: string, itemCount: number, recievedCount: number) {\r\n var c = this.locations_container.appendChild(document.createElement(\"div\"))\r\n c.classList.add(\"btn\", \"noselect\");\r\n\r\n var locationName = c.appendChild(document.createElement(\"span\"));\r\n locationName.classList.add(\"action\");\r\n locationName.innerHTML = name + \" \";\r\n\r\n var counts = c.appendChild(document.createElement(\"span\"))\r\n counts.classList.add(\"label\");\r\n counts.innerHTML = `(${recievedCount} / ${itemCount})`;\r\n\r\n if (recievedCount < itemCount) {\r\n counts.classList.add(\"label-warning\");\r\n }\r\n\r\n\r\n\r\n c.addEventListener(\"click\", () => {\r\n this.result_arrival_location = key;\r\n this.open_reference_menu();\r\n });\r\n\r\n }\r\n\r\n addSenderButton(name: string, value: string) {\r\n var c = this.sender_suggestion_container.appendChild(document.createElement(\"div\"))\r\n c.classList.add(\"btn\", \"noselect\");\r\n\r\n var action = c.appendChild(document.createElement(\"span\"));\r\n action.classList.add(\"action\");\r\n action.innerHTML = name;\r\n\r\n c.addEventListener(\"click\", () => {\r\n this.result_sender = value;\r\n this.open_reference_menu();\r\n });\r\n\r\n }\r\n\r\n addCustomerButton(info: SP.CustomerInfo) {\r\n var c = this.stock_suggestion_container.appendChild(document.createElement(\"div\"))\r\n c.classList.add(\"btn\", \"noselect\");\r\n\r\n\r\n var action = c.appendChild(document.createElement(\"span\"));\r\n action.classList.add(\"action\");\r\n action.innerHTML = info.customerName;\r\n\r\n c.addEventListener(\"click\", () => {\r\n this.result_customer = info.customerId;\r\n this.open_po_menu();\r\n });\r\n this.stockButtons.push(c);\r\n }\r\n\r\n addArrivalButton() {\r\n var c = this.home_menu.appendChild(document.createElement(\"div\"))\r\n c.classList.add(\"btn\", \"noselect\");\r\n c.style.marginTop = \"30px\";\r\n\r\n var icon = c.appendChild(document.createElement(\"img\"));\r\n icon.src = \"/terminal/img/icon/open-box.png\";\r\n icon.classList.add(\"icon\");\r\n\r\n var action = c.appendChild(document.createElement(\"span\"));\r\n action.classList.add(\"action\");\r\n action.innerHTML = SP.Localize(\"word_arrival\");\r\n\r\n c.appendChild(document.createElement(\"br\"));\r\n\r\n var name = c.appendChild(document.createElement(\"span\"));\r\n name.classList.add(\"name\");\r\n name.innerHTML = SP.Localize(\"sentance_standard_arrival\");\r\n\r\n c.addEventListener(\"click\", () => {\r\n this.result_arrival_type = SP.ArrivalType.Standard;\r\n this.open_stock_menu();\r\n });\r\n }\r\n\r\n addReturnButton() {\r\n var c = this.home_menu.appendChild(document.createElement(\"div\"))\r\n c.classList.add(\"btn\", \"noselect\");\r\n\r\n var icon = c.appendChild(document.createElement(\"img\"));\r\n icon.src = \"/terminal/img/icon/return-box.png\";\r\n icon.classList.add(\"icon\");\r\n\r\n var action = c.appendChild(document.createElement(\"span\"));\r\n action.classList.add(\"action\");\r\n action.innerHTML = SP.Localize(\"word_return\");\r\n\r\n c.appendChild(document.createElement(\"br\"));\r\n\r\n var name = c.appendChild(document.createElement(\"span\"));\r\n name.classList.add(\"name\");\r\n name.innerHTML = SP.Localize(\"sentance_customer_return_delivery\");\r\n\r\n c.addEventListener(\"click\", () => {\r\n this.result_arrival_type = SP.ArrivalType.Return;\r\n this.open_stock_menu();\r\n });\r\n }\r\n\r\n async addAuditButton() {\r\n var c = this.home_menu.appendChild(document.createElement(\"div\"))\r\n c.classList.add(\"btn\", \"noselect\");\r\n\r\n var icon = c.appendChild(document.createElement(\"img\"));\r\n icon.src = \"/terminal/img/icon/audit-box.png\";\r\n icon.classList.add(\"icon\");\r\n\r\n var action = c.appendChild(document.createElement(\"span\"));\r\n action.classList.add(\"action\");\r\n action.innerHTML = SP.Localize(\"word_audit\");\r\n\r\n c.appendChild(document.createElement(\"br\"));\r\n\r\n var name = c.appendChild(document.createElement(\"span\"));\r\n name.classList.add(\"name\");\r\n name.innerHTML = SP.Localize(\"sentance_add_audit_item\");\r\n\r\n c.addEventListener(\"click\", () => {\r\n this.result_arrival_type = SP.ArrivalType.Audit;\r\n this.open_stock_menu();\r\n });\r\n }\r\n\r\n async addInternalReturnButton() {\r\n var c = this.home_menu.appendChild(document.createElement(\"div\"))\r\n c.classList.add(\"btn\", \"noselect\");\r\n\r\n c.style.marginTop = \"30px\";\r\n\r\n var icon = c.appendChild(document.createElement(\"img\"));\r\n icon.src = \"/terminal/img/icon/return-box.png\";\r\n icon.classList.add(\"icon\");\r\n\r\n var action = c.appendChild(document.createElement(\"span\"));\r\n action.classList.add(\"action\");\r\n action.innerHTML = SP.Localize(\"sentance_internal_return\");\r\n\r\n c.appendChild(document.createElement(\"br\"));\r\n\r\n var name = c.appendChild(document.createElement(\"span\"));\r\n name.classList.add(\"name\");\r\n name.innerHTML = SP.Localize(\"sentance_return_items_to_warehouse\");\r\n\r\n c.addEventListener(\"click\", () => {\r\n this.result_arrival_type = SP.ArrivalType.InternalReturn;\r\n this.open_stock_menu();\r\n });\r\n }\r\n\r\n\r\n }\r\n\r\n\r\n class App_Arrival extends AppBase {\r\n arrivals: { [id: string]: ArrivalElement } = {};\r\n arrivals_sorted: ArrivalElement[] = [];\r\n active = document.getElementById(\"active_arrivals\");\r\n finished = document.getElementById(\"finished_arrivals\");\r\n assistant = new ArrivalAssistant();\r\n static instance: App_Arrival;\r\n\r\n constructor() {\r\n super(\"app_arrival\");\r\n hub.on(\"arrivalAdded\", (d) => this.arrivalAdded(d, true));\r\n hub.on(\"arrivalUpdated\", (d) => this.arrivalUpdated(d));\r\n hub.on(\"arrivalDeleted\", (d) => this.arrivalDeleted(d));\r\n App_Arrival.instance = this;\r\n\r\n document.getElementById(\"add_arrival_button\").addEventListener(\"click\", () => {\r\n this.assistant.open(null);\r\n //GetApp(\"app_arrival_create\").open();\r\n });\r\n\r\n document.getElementById(\"return_package_button\").addEventListener(\"click\", () => {\r\n GetApp(\"app_return\").open();\r\n });\r\n\r\n document.getElementById(\"transfer_package_button\").addEventListener(\"click\", () => {\r\n GetApp(\"app_receive_transfer\").open();\r\n });\r\n\r\n container.appendChild(this.assistant.container);\r\n }\r\n\r\n bound = false;\r\n\r\n async onOpen() {\r\n //reset\r\n this.arrivals = {};\r\n this.arrivals_sorted = [];\r\n\r\n //load\r\n var arrivals = await SP.Data.Arrival.getArrivalInfos();\r\n arrivals.forEach((a) => {\r\n this.arrivalAdded(a, false);\r\n });\r\n\r\n this.render();\r\n\r\n if (!this.bound) {\r\n barcodeListener.on(null, this.scanBarcode, this);\r\n this.bound = true;\r\n }\r\n }\r\n\r\n\r\n\r\n async onClose() {\r\n this.assistant.close();\r\n\r\n if (this.bound) {\r\n barcodeListener.off(null, this.scanBarcode);\r\n this.bound = false;\r\n }\r\n }\r\n\r\n async scanBarcode(code: string) {\r\n this.assistant.open(code);\r\n }\r\n\r\n arrivalAdded(data: SP.ArrivalInfo, render: boolean) {\r\n var current = this.arrivals[data.arrivalId];\r\n if (current == null) {\r\n current = this.arrivals[data.arrivalId] = new ArrivalElement(data);\r\n this.arrivals_sorted.push(current);\r\n }\r\n\r\n if (render) this.render();\r\n }\r\n\r\n arrivalDeleted(data: SP.ArrivalInfo) {\r\n var current = this.arrivals[data.arrivalId];\r\n if (current != null) {\r\n this.arrivals_sorted.splice(this.arrivals_sorted.indexOf(current), 1);\r\n delete this.arrivals[data.arrivalId];\r\n current.html.remove();\r\n }\r\n }\r\n\r\n\r\n arrivalUpdated(data: SP.ArrivalInfo) {\r\n this.arrivalDeleted(data);\r\n this.arrivalAdded(data, true);\r\n }\r\n\r\n render() {\r\n //containers\r\n\r\n\r\n //sort\r\n this.arrivals_sorted.sort((a, b) => a.data.arrivalTimestamp < b.data.arrivalTimestamp ? 1 : -1);\r\n\r\n //clear\r\n this.active.innerHTML = \"\";\r\n this.finished.innerHTML = \"\";\r\n\r\n //append\r\n for (let i = 0; i < this.arrivals_sorted.length; i++) {\r\n let current = this.arrivals_sorted[i];\r\n if (current.data.arrivalFinished) this.finished.appendChild(current.html);\r\n else this.active.appendChild(current.html);\r\n }\r\n }\r\n }\r\n\r\n\r\n RegisterApp(\"app_arrival\", App_Arrival);\r\n}","/// \r\n\r\nnamespace TerminalApp {\r\n class App_Arrival_Create extends AppBase {\r\n form: HTMLFormElement;\r\n error: HTMLElement;\r\n create_arrival_id = document.getElementById(\"create_arrival_id\") as HTMLInputElement;\r\n create_arrival_customer = document.getElementById(\"create_arrival_customer\") as HTMLSelectElement;\r\n create_arrival_type = document.getElementById(\"create_arrival_type\") as HTMLSelectElement;\r\n create_arrival_sender = document.getElementById(\"create_arrival_sender\") as HTMLInputElement;\r\n create_arrival_reference_no = document.getElementById(\"create_arrival_reference_no\") as HTMLInputElement;\r\n create_arrival_purchaseorder_id = document.getElementById(\"create_arrival_purchaseorder_id\") as HTMLInputElement;\r\n create_arrival_submit = document.getElementById(\"create_arrival_submit\");\r\n\r\n constructor() {\r\n super(\"app_arrival_create\");\r\n this.form = document.getElementById(\"arrival_form\") as HTMLFormElement;\r\n this.error = document.getElementById(\"arrival_form_error\");\r\n\r\n document.getElementById(\"create_arrival_submit\").addEventListener(\"click\", () => {\r\n this.SubmitForm();\r\n });\r\n }\r\n\r\n\r\n async onOpen() {\r\n var id = SP.getHash(\"id\");\r\n var edit = id && id.length;\r\n //edit\r\n if (edit) {\r\n var data = await SP.Data.Arrival.getArrivalInfo(id);\r\n console.log(\"Arrival Data:\", data);\r\n this.create_arrival_id.value = data.arrivalId;\r\n this.create_arrival_customer.value = data.customerId;\r\n this.create_arrival_type.value = data.arrivalType.toString();\r\n console.log(\"setting type dropdown to:\", data);\r\n this.create_arrival_sender.value = data.arrivalSender;\r\n this.create_arrival_reference_no.value = data.arrivalReferenceNo;\r\n this.create_arrival_purchaseorder_id.value = data.purchaseOrderInfo?.id ?? \"\";\r\n }\r\n else {\r\n this.form.reset();\r\n }\r\n\r\n this.create_arrival_submit.innerHTML = edit ? SP.Localize(\"sentance_save_changes\") : SP.Localize(\"sentance_create_arrival\");\r\n }\r\n\r\n\r\n\r\n\r\n async SubmitForm() {\r\n var result = await SP.postForm(\"/API/FormSubmit/Arrival\", \"#arrival_form\");\r\n\r\n if (result.status == 200) {\r\n SP.Sounds.Success.play();\r\n GetApp(\"app_arrival\").open();\r\n this.form.reset();\r\n this.error.style.display = \"none\";\r\n\r\n }\r\n else {\r\n SP.Sounds.Error.play();\r\n this.error.innerHTML = result.msg;\r\n this.error.style.display = \"block\";\r\n console.log(result);\r\n }\r\n }\r\n }\r\n RegisterApp(\"app_arrival_create\", App_Arrival_Create);\r\n}","/// \r\n\r\n\r\nnamespace TerminalApp {\r\n\r\n\r\n class StockingLotElement {\r\n index: number = 0;\r\n renderedIndex: number = 0;\r\n arrival: SP.ArrivalInfo;\r\n data: SP.StockingLotInfo;\r\n html: HTMLElement;\r\n text_name: HTMLElement;\r\n text_date: HTMLElement;\r\n text_location: HTMLElement;\r\n text_description: HTMLElement;\r\n text_arrival_info: HTMLElement;\r\n text_icon: HTMLImageElement;\r\n POLine: SP.PurchaseOrderLineInfo;\r\n constructor(data: SP.StockingLotInfo, arrival: SP.ArrivalInfo, POLine: SP.PurchaseOrderLineInfo) {\r\n this.arrival = arrival;\r\n this.data = data;\r\n this.POLine = POLine;\r\n this.html = CreateButton(data.item.imageUrl, null);\r\n this.html.classList.add(\"full\");\r\n this.html.style.height = \"88px\";\r\n\r\n\r\n if (!arrival.arrivalFinished) {\r\n\r\n var m = new SP.SwipeMenu(\r\n /*Element*/\r\n this.html,\r\n\r\n /*Click Event*/\r\n null,\r\n\r\n /*buttons*/\r\n [\r\n /*Edit Button */{\r\n icon: \"\", text: SP.Localize(\"word_edit\"), color: \"#359ee8\", confirm: false, action: async () => {\r\n if (await SP.confirmX(\"Confirm Edit\")) {\r\n (GetApp(\"app_arrival_show\") as App_Arrival_Show).editStockingLot(this.data.id);\r\n }\r\n m.return();\r\n }\r\n }\r\n ],\r\n \"app_arrival_show\"\r\n );\r\n }\r\n\r\n this.updateText();\r\n\r\n\r\n }\r\n\r\n\r\n\r\n updatePOInfo(finished:boolean) {\r\n if (!this.POLine) return;\r\n var recieved = this.POLine.beeingDeliveredQty;\r\n var incomming = this.POLine.undeliveredQty;\r\n var total = this.POLine.itemTotalIncommingAllOrders;\r\n\r\n\r\n var color = recieved == incomming ? \"#56b71e\" : recieved > incomming ? \"#ffadad\" : \"#b7b7b7\";\r\n this.text_arrival_info.innerHTML = \"\" + this.POLine.loc + \": \" + (recieved ?? \"0\") + \" / \" + (incomming ?? \"0\") + \" / \" + (total ?? \"0\") + \" \";\r\n }\r\n\r\n updateText() {\r\n //clear\r\n this.html.innerHTML = \"\";\r\n\r\n //icon\r\n this.text_icon = document.createElement(\"img\");\r\n this.text_icon.classList.add(\"icon\");\r\n this.text_icon.src = this.data.item.imageUrl;\r\n this.text_icon.style.pointerEvents = \"auto\";\r\n this.text_icon.addEventListener(\"click\", (e) => {\r\n itemShortcutAssistant.open_with_info(this.data.item);\r\n e.preventDefault();\r\n e.stopPropagation();\r\n });\r\n\r\n this.html.appendChild(this.text_icon);\r\n\r\n //date/user text\r\n this.text_date = document.createElement(\"div\");\r\n this.text_date.classList.add(\"text\", \"bottom\", \"right\", \"small\");\r\n this.text_date.innerHTML = `${this.data.createUser} ${this.data.timestamp}`;\r\n this.html.appendChild(this.text_date);\r\n\r\n //date/user name\r\n this.text_name = document.createElement(\"div\");\r\n this.text_name.classList.add(\"text\", \"top\", \"big\", \"left\");\r\n this.text_name.style.right = \"130px\";\r\n this.text_name.innerHTML = `x ${this.data.initialQuantity}${(this.data.availableQuantity != this.data.initialQuantity ? \" (\" + this.data.availableQuantity + \")\" : \"\")} ${this.data.item.sku}`;\r\n this.html.appendChild(this.text_name);\r\n\r\n //date/user name\r\n this.text_description = document.createElement(\"div\");\r\n this.text_description.classList.add(\"text\", \"left\", \"small\");\r\n this.text_description.style.lineHeight = \"16px\";\r\n this.text_description.innerHTML = `${this.data.item.barcodes.join(\", \")}
${this.data.item.description}`;\r\n this.html.appendChild(this.text_description);\r\n\r\n //date/user name\r\n this.text_arrival_info = document.createElement(\"div\");\r\n this.text_arrival_info.classList.add(\"arrival_info\");\r\n this.text_arrival_info.style.lineHeight = \"16px\";\r\n this.text_arrival_info.innerHTML = ``;\r\n this.html.appendChild(this.text_arrival_info);\r\n\r\n //date/user name\r\n var si = new PlacementInfoBox(this.data.stockPlacementData, false, this.data.item);\r\n this.text_location = document.createElement(\"div\");\r\n this.text_location.classList.add(\"text\", \"top\", \"right\");\r\n this.text_location.style.pointerEvents = \"auto\";\r\n this.text_location.innerHTML = `${si.string_location}`;\r\n this.text_location.querySelector(\".label\").addEventListener(\"click\", (e) => {\r\n placementShortcutAssistant.open_with_data(this.data.stockPlacementData, this.data.item);\r\n e.preventDefault();\r\n e.stopPropagation();\r\n });\r\n this.html.appendChild(this.text_location);\r\n\r\n }\r\n }\r\n\r\n class ArrivalItem {\r\n \r\n input_quantity: HTMLInputElement;\r\n input_production: HTMLInputElement;\r\n input_expiration: HTMLInputElement;\r\n input_batch: HTMLInputElement;\r\n item: SP.ItemInfo;\r\n editLot: SP.StockingLotInfo;\r\n poInfo: SP.PurchaseOrderLineInfo;\r\n newId: string;\r\n get quantity() {\r\n return parseFloat(this.input_quantity.value);\r\n }\r\n addQuantity(qty: number) {\r\n var current_qty = parseFloat(this.input_quantity.value);\r\n this.input_quantity.value = Math.max(0, (isNaN(current_qty) ? qty : (current_qty + qty))).toString();\r\n }\r\n\r\n arrivalId: string = null;\r\n barcodeScan: string = null;\r\n\r\n container = document.createElement(\"div\");\r\n constructor(arrivalId: string, item: SP.ItemInfo, editLot: SP.StockingLotInfo = null, barcodeScan: string = null, poInfo: SP.PurchaseOrderLineInfo = null, isPurchaseOrder: boolean = false) {\r\n this.arrivalId = arrivalId;\r\n this.item = item;\r\n this.editLot = editLot;\r\n this.barcodeScan = barcodeScan;\r\n this.newId = SP.Guid.newGuid();\r\n this.poInfo = poInfo;\r\n this.container.classList.add(\"arrival_item\");\r\n var name = (item.manufacturerName + item.modelNo).length ? (item.manufacturerName + \" \" + item.modelNo).trim() : \"\";\r\n\r\n\r\n var barcodes = [];\r\n for (var key in item.allBarcodes) {\r\n var bc = key;\r\n if (item.allBarcodes[bc] > 1) {\r\n bc += \" COL \" + item.allBarcodes[bc] + \"\";\r\n }\r\n barcodes.push(bc);\r\n }\r\n console.log(\"ITEM:\", item);\r\n this.container.innerHTML = `\r\n
\r\n
X
\r\n
${item.abc_orders}
\r\n
${item.imageUrl ? \"\" : \"\"}
\r\n
\r\n
${item.sku + (name.length ? \" (\" + name + \")\" : \"\")}
\r\n
${barcodes.join('
')}
\r\n
${item.description}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n
\r\n \r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n `;\r\n //
Succes < /div>\r\n\r\n\r\n if (isPurchaseOrder) {\r\n var po_container = this.container.querySelector(\".po_info\") as HTMLElement;\r\n po_container.style.display = \"block\";\r\n\r\n if (poInfo) {\r\n var expected = poInfo.undeliveredQty - poInfo.beeingDeliveredQty;\r\n if (editLot) expected += editLot.initialQuantity;\r\n po_container.innerHTML = \"\" + SP.Localize(\"sentance_expected_quantity\") + \": \" + expected + \" (loc: \" + poInfo.loc + \")\";\r\n }\r\n else {\r\n po_container.innerHTML = \"\" + SP.Localize(\"sentance_expected_quantity\") + \": \" + SP.Localize(\"sentance_not_found\") + \"\";\r\n }\r\n }\r\n\r\n this.container.querySelector(\".image\").addEventListener(\"click\", () => {\r\n itemShortcutAssistant.open_with_id(item.id);\r\n });\r\n\r\n App_Arrival_Show.instance.arrival_item_container.appendChild(this.container);\r\n\r\n\r\n var close_button = this.container.querySelector(\".close\");\r\n close_button.addEventListener(\"click\", () => {\r\n delete App_Arrival_Show.instance.scannedItems[this.item.id];\r\n this.container.remove();\r\n App_Arrival_Show.instance.updateFinishButtonState();\r\n });\r\n\r\n this.input_production = this.container.querySelector(\".production-date\");\r\n this.input_expiration = this.container.querySelector(\".expiration-date\");\r\n this.input_batch = this.container.querySelector(\".batch-number\");\r\n this.input_quantity = this.container.querySelector(\".arrival_item_quantity\");\r\n this.input_quantity.addEventListener(\"keydown\", e => {\r\n if (e.which == 13)\r\n this.input_quantity.blur();\r\n });\r\n\r\n this.input_quantity.addEventListener(\"focus\", e => {\r\n this.input_quantity.select();\r\n });\r\n\r\n var minus_button = this.container.querySelector(\".button.minus\");\r\n minus_button.addEventListener(\"click\", () => {\r\n this.addQuantity(-1);\r\n });\r\n\r\n var plus_button = this.container.querySelector(\".button.plus\");\r\n plus_button.addEventListener(\"click\", () => {\r\n this.addQuantity(1);\r\n });\r\n\r\n if (item.expirable) (this.container.querySelector(\".expiration-group\") as HTMLElement).style.display = \"block\";\r\n if (item.useProductionDate) (this.container.querySelector(\".production-group\") as HTMLElement).style.display = \"block\";\r\n if (item.useBatchNumber) (this.container.querySelector(\".batch-group\") as HTMLElement).style.display = \"block\";\r\n\r\n this.addLocations();\r\n\r\n if (editLot) {\r\n console.log(editLot);\r\n this.input_expiration.value = editLot.expirationDate;\r\n this.input_production.value = editLot.productionDate;\r\n this.input_batch.value = editLot.batchNumber;\r\n this.input_quantity.value = editLot.initialQuantity.toString();\r\n }\r\n }\r\n\r\n posting = false;\r\n posted = false;\r\n\r\n loadGS1Data(gs1Data: SP.GS1Data) {\r\n if (gs1Data?.batchOrLotNumber) {\r\n this.input_batch.value = gs1Data?.batchOrLotNumber;\r\n }\r\n\r\n if (gs1Data?.productionDate) {\r\n this.input_production.value = gs1Data.productionDate;\r\n }\r\n\r\n if (gs1Data?.bestBeforeDate) {\r\n this.input_expiration.value = gs1Data.bestBeforeDate;\r\n }\r\n\r\n }\r\n\r\n async post(placementId: number) {\r\n if (this.posting || this.posted) return false;\r\n this.posting = true;\r\n try {\r\n var result = await SP.post(\"/api/v1/stockinglot/import\", {\r\n id: this.editLot?.id ?? this.newId,\r\n arrivalId: this.arrivalId,\r\n itemId: this.item.id,\r\n stockPlacementId: placementId,\r\n initialQuantity: this.quantity,\r\n expirationDate: this.input_expiration.value ? this.input_expiration.value : null,\r\n productionDate: this.input_production.value ? this.input_production.value : null,\r\n batchNumber: this.input_batch.value,\r\n purchaseOrderLineId: this.poInfo?.id\r\n })\r\n\r\n var message = this.container.querySelector(\".error\") as HTMLElement;\r\n message.style.backgroundColor = \"#86a56f\";\r\n message.innerHTML = \"Success\";\r\n message.style.display = \"block\";\r\n\r\n //Error\r\n if (result.status != 200) {\r\n message.style.backgroundColor = \"\";\r\n message.innerHTML = `${result.status}: ${result.msg}`;\r\n SP.Sounds.Error.play();\r\n return false;\r\n }\r\n\r\n //success\r\n SP.Sounds.Success.play();\r\n this.posted = true;\r\n this.container.querySelector(\".item_info_dialog\").remove();\r\n delete App_Arrival_Show.instance.scannedItems[this.item.id];\r\n setTimeout(() => {\r\n this.container.remove();\r\n }, 2000);\r\n return true;\r\n }\r\n finally {\r\n this.posting = false;\r\n }\r\n }\r\n\r\n async addLocations() {\r\n var lots = await SP.Data.StockingLot.getItemStockingLotInfos(this.item.id, false);\r\n\r\n //clear location info\r\n let loc_container = this.container.querySelector(\".locations\");\r\n var preferred = this.item.preferredStockPlacementData;\r\n\r\n //extract location inofo\r\n let locations = {} as any;\r\n\r\n if (preferred) {\r\n locations[preferred] = 0;\r\n }\r\n\r\n lots.forEach(l => {\r\n if (l.placementQuantity > 0) {\r\n if (!locations[l.stockPlacementData]) locations[l.stockPlacementData] = l.placementQuantity;\r\n else locations[l.stockPlacementData] += l.placementQuantity;\r\n }\r\n });\r\n\r\n\r\n\r\n for (var location in locations) {\r\n let t = new PlacementInfoBox(location, false, this.item);\r\n\r\n\r\n let amt = locations[location];\r\n\r\n let item = document.createElement(\"div\");\r\n let location_span = document.createElement(\"span\");\r\n let count_span = document.createElement(\"span\");\r\n count_span.classList.add(\"label\");\r\n location_span.innerHTML += t.string_location;\r\n\r\n if (preferred == location)\r\n location_span.innerHTML += ' ';\r\n count_span.innerHTML = amt;\r\n\r\n\r\n\r\n\r\n item.appendChild(location_span);\r\n item.appendChild(count_span);\r\n\r\n loc_container.appendChild(item);\r\n }\r\n }\r\n }\r\n\r\n export class App_Arrival_Show extends AppBase {\r\n static instance: App_Arrival_Show;\r\n arrivalInfo: SP.ArrivalInfo;\r\n arrivals: { [id: string]: StockingLotElement } = {};\r\n items: SP.StockingLotInfo[];\r\n item_container = document.getElementById(\"arrival_items\");\r\n aas_search_item = document.getElementById(\"aas_search_item\");\r\n aas_search_ean = document.getElementById(\"aas_search_ean\");\r\n aas_search_placement = document.getElementById(\"aas_search_placement\");\r\n aas_pending_status = document.getElementById(\"ass_pending_status\");\r\n aas_pending_status_value = document.getElementById(\"ass_pending_status\").querySelector(\"span\");\r\n header_container = document.querySelector(\".aas .placement_header\") as HTMLElement;\r\n\r\n aas_current_count = document.getElementById(\"aas_current_count\");\r\n aas_total_count = document.getElementById(\"aas_total_count\");\r\n aas_sender = document.getElementById(\"aas_sender\");\r\n aas_reference = document.getElementById(\"aas_reference\");\r\n aas_finish_button = document.getElementById(\"aas_finish_button\");\r\n aas_configure_po = document.getElementById(\"aas_configure_po\");\r\n\r\n arrival_item_container = document.getElementById(\"arrival_item_container\");\r\n lastScan: number;\r\n add_item_button = document.getElementById(\"add_arrival_item_button\");\r\n arrival_quantity_plus_button = document.getElementById(\"arrival_quantity_plus_button\");\r\n arrival_quantity_minus_button = document.getElementById(\"arrival_quantity_minus_button\");\r\n arrivalId: string;\r\n placementId: number;\r\n edit: boolean;\r\n\r\n\r\n constructor() {\r\n super(\"app_arrival_show\");\r\n App_Arrival_Show.instance = this;\r\n hub.on(\"arrivalItemAdded\", (d) => this.arrivalItemAdded(d));\r\n hub.on(\"arrivalItemUpdated\", (d) => this.arrivalItemUpdated(d));\r\n\r\n this.aas_search_item.addEventListener(\"click\", async e => {\r\n await itemSearchAssistant.open(this.arrivalInfo.customerId, \"\", false, (info, extraData) => {\r\n this.selectItem(info, null, extraData.purchaseOrderLineInfo, null);\r\n });\r\n this.add_purchase_order_to_search_result();\r\n });\r\n\r\n this.aas_search_ean.addEventListener(\"click\", async e => {\r\n await itemSearchAssistant.open(this.arrivalInfo.customerId, \"\", true, (info, extraData) => {\r\n this.selectItem(info, null, extraData.purchaseOrderLineInfo, null);\r\n });\r\n this.add_purchase_order_to_search_result();\r\n });\r\n\r\n this.aas_search_placement.addEventListener(\"click\", e => {\r\n placementPickerAssistant.open(this.arrivalInfo.customerId, null, info => {\r\n this.scanPlacement(info.id.toString());\r\n });\r\n });\r\n\r\n\r\n this.add_item_button.addEventListener(\"click\", () => {\r\n this.postItems();\r\n });\r\n\r\n this.aas_finish_button.addEventListener(\"click\", async () => {\r\n if (await SP.confirmX(\"Confirm\")) {\r\n var result = await SP.get(\"/api/v1/arrival/finish/\" + this.arrivalId);\r\n if (result.status == 200) {\r\n SP.Sounds.Success.play();\r\n SP.setAllHash({ \"app\": \"app_arrival\" });\r\n return;\r\n }\r\n else {\r\n \r\n await SP.alertX(result.msg);\r\n }\r\n }\r\n });\r\n\r\n this.aas_configure_po.addEventListener(\"click\", async () => {\r\n await SP.alertX(\"config\");\r\n });\r\n\r\n }\r\n add_purchase_order_to_search_result() {\r\n this.arrivalInfo?.purchaseOrderInfo?.items?.forEach(i => {\r\n if (i.undeliveredQty <= 0) return;\r\n if (this.arrivalInfo?.arrivalLocation && this.arrivalInfo?.arrivalLocation != i.loc) return;\r\n\r\n var searchData = new ItemSearchExtraData();\r\n searchData.purchaseOrderLineInfo = i;\r\n\r\n let elm = itemSearchAssistant.addItem(i.itemInfo, searchData);\r\n let arrived = i.beeingDeliveredQty;\r\n let incomming = i.undeliveredQty;\r\n let finished = arrived == incomming;\r\n let labels = elm.querySelector(\".labels\");\r\n labels.innerHTML += ` ${SP.Localize(\"word_arrived\")}
${arrived} / ${incomming}
`;\r\n });\r\n }\r\n\r\n showAddButton() {\r\n if (Object.keys(this.scannedItems).length && this.placementId) this.add_item_button.style.display = \"block\";\r\n this.updateFinishButtonState();\r\n }\r\n\r\n async editStockingLot(lotId: string) {\r\n await this.reset();\r\n\r\n ignoreHashChange = true;\r\n SP.setHash(\"editLot\", lotId);\r\n\r\n\r\n var data = await SP.Data.StockingLot.getStockingLotInfo(lotId, false);\r\n var itemData = await SP.Data.Item.getItemInfo(data.item.id, false);\r\n\r\n\r\n //set Item\r\n await this.selectItem(itemData, data, null, null);\r\n this.edit = true;\r\n //set stockpicker\r\n this.setPlacementInfo(data.stockPlacementId, data.stockPlacementData);\r\n\r\n this.add_item_button.innerHTML = SP.Localize(\"sentance_update_item\");\r\n this.arrival_item_container.classList.add(\"edit-form\");\r\n\r\n window.scrollTo(0, 0);\r\n ignoreHashChange = false;\r\n SP.Sounds.Click.play();\r\n\r\n }\r\n\r\n async setPlacementInfo(placementId: number, placementData: string) {\r\n this.placementId = placementId;\r\n if (!placementData) {\r\n var data = await SP.Data.Stock.getPlacementInfo(this.placementId, false);\r\n placementData = data.data;\r\n }\r\n var pi = new PlacementInfoBox(placementData, true, null);\r\n this.header_container.style.display = \"block\";\r\n this.header_container.innerHTML = \"\";\r\n this.header_container.appendChild(pi.container);\r\n }\r\n\r\n async reset(soft: boolean = false) {\r\n this.resetItems();\r\n this.placementId = null;\r\n this.lastScan = 0;\r\n this.arrival_item_container.classList.remove(\"edit-form\");\r\n this.add_item_button.innerHTML = SP.Localize(\"sentance_add_item\");\r\n this.header_container.style.display = \"none\";\r\n this.add_item_button.style.display = \"none\";\r\n this.header_container.innerHTML = \"\";\r\n\r\n if (this.edit) {\r\n ignoreHashChange = true;\r\n SP.setHash(\"editLot\", null);\r\n this.edit = false;\r\n await SP.sleep(1);\r\n ignoreHashChange = false;\r\n }\r\n\r\n this.updateFinishButtonState();\r\n\r\n }\r\n\r\n resetItems() {\r\n\r\n for (var id in this.scannedItems) {\r\n this.scannedItems[id].container.remove();\r\n }\r\n this.scannedItems = {};\r\n }\r\n\r\n scannedItems: { [id: string]: ArrivalItem } = {};\r\n\r\n async selectItem(item: SP.ItemInfo, editLot: SP.StockingLotInfo = null, pol: SP.PurchaseOrderLineInfo, scannedBarode: string, gs1Data: SP.GS1Data = null) {\r\n if (this.edit) this.reset();\r\n\r\n\r\n\r\n\r\n //edit\r\n if (editLot) {\r\n await this.reset();\r\n pol ??= this.arrivalInfo?.purchaseOrderInfo?.items.find(l => l.id == editLot.purchaseOrderLineId);\r\n this.scannedItems[item.id] = new ArrivalItem(this.arrivalId, item, editLot, scannedBarode, pol, this.arrivalInfo.purchaseOrderInfo != null);\r\n this.setPlacementInfo(editLot.stockPlacementId, editLot.stockPlacementData);\r\n this.showAddButton();\r\n return;\r\n }\r\n\r\n\r\n\r\n\r\n //add/update\r\n let current = this.scannedItems[item.id];\r\n if (current == null || (pol != null && current.poInfo.id != pol.id)) {\r\n if (!App_Settings.userSettings.allow_mixed_arrival) this.resetItems();\r\n\r\n //get po items if any\r\n var items = this.arrivalInfo?.purchaseOrderInfo?.items;\r\n\r\n //filter items to current location arrivalLocation\r\n if (this.arrivalInfo?.arrivalLocation) items = items?.filter(i => i.loc == this.arrivalInfo.arrivalLocation);\r\n\r\n //get po with most undelivered\r\n pol ??= items?.filter(l => l.sku == item.sku && l.undeliveredQty - l.beeingDeliveredQty > 0)[0];\r\n\r\n //if no undelivered just pick last line\r\n pol ??= items?.slice().reverse().filter(l => l.sku == item.sku)[0];\r\n\r\n current = this.scannedItems[item.id] = new ArrivalItem(this.arrivalId, item, null, scannedBarode, pol, this.arrivalInfo.purchaseOrderInfo != null);\r\n }\r\n\r\n var qty = GetBarcodeQty(current.item.allBarcodes, scannedBarode);\r\n current.addQuantity(qty ? qty : 1);\r\n current.loadGS1Data(gs1Data);\r\n this.showAddButton();\r\n }\r\n\r\n async scanTote(toteId: string) {\r\n var toteInfo = await SP.Data.Tote.getToteInfo(toteId, true);\r\n await this.scanPlacement(toteInfo.totePlacementId.toString());\r\n }\r\n\r\n updateFinishButtonState() {\r\n var enabled = !this.arrivalInfo.arrivalFinished && Object.keys(this.scannedItems).length == 0;\r\n this.aas_finish_button.classList.toggle(\"disabled\", !enabled);\r\n }\r\n\r\n async scanPlacement(placementId: string) {\r\n await SP.blurActive();\r\n var now = performance.now();\r\n\r\n var intPlacementId = parseInt(placementId);\r\n var post = ((intPlacementId == this.placementId && now - this.lastScan <= 1000) || App_Settings.userSettings.auto_double_scan_stocking);\r\n this.setPlacementInfo(intPlacementId, null);\r\n\r\n //double scan within 2 seconds\r\n if (post) {\r\n if (!Object.keys(this.scannedItems).length) return;\r\n return this.postItems();\r\n }\r\n\r\n this.lastScan = now;\r\n this.showAddButton();\r\n }\r\n\r\n async scanBarcode(barcode: string, gs1Data: SP.GS1Data) {\r\n await SP.blurActive();\r\n\r\n var current = null;\r\n for (var id in this.scannedItems) {\r\n if (this.scannedItems[id].barcodeScan == barcode) {\r\n current = this.scannedItems[id];\r\n }\r\n }\r\n\r\n if (current) {\r\n var qty = GetBarcodeQty(current.item.allBarcodes, barcode);\r\n current.addQuantity(qty ?? 1);\r\n return;\r\n }\r\n\r\n //set current scan code\r\n StartLoading();\r\n await itemSearchAssistant.open(this.arrivalInfo.customerId, barcode, false, (info, extraData) => { this.selectItem(info, null, null, barcode, gs1Data); });\r\n if (itemSearchAssistant.resultCount == 0) {\r\n SP.Sounds.Error.play();\r\n }\r\n StopLoading();\r\n\r\n }\r\n\r\n posting = false;\r\n\r\n async postItems() {\r\n if (this.posting) return;\r\n this.posting = true;\r\n try {\r\n StartLoading();\r\n let finished = true;\r\n let items = 0;\r\n let total = 0;\r\n for (let id in this.scannedItems) {\r\n let item = this.scannedItems[id];\r\n items++;\r\n total += item.quantity;\r\n let success = await item.post(this.placementId);\r\n if (!success) {\r\n finished = false;\r\n }\r\n }\r\n if (finished) {\r\n if (total == 0) {\r\n //??\r\n //SP.Sounds.Error.play();\r\n }\r\n\r\n else if (App_Settings.userSettings.voice_arrival_confirm_quantity) {\r\n let text = total.toString() + (items > 1 ? \" \" + SP.Localize(\"sentance_mixed_items\") : \"\");\r\n Talk(text, App_Settings.userSettings.voice_delay);\r\n }\r\n await this.reset();\r\n }\r\n StopLoading();\r\n }\r\n finally {\r\n this.posting = false;\r\n }\r\n }\r\n\r\n bound = false;\r\n\r\n async onOpen() {\r\n //clear\r\n this.item_container.innerHTML = \"\";\r\n this.arrivals = {};\r\n\r\n //get params\r\n this.arrivalId = SP.getHash(\"id\");\r\n var editLot = SP.getHash(\"editLot\");\r\n\r\n //get server data\r\n this.arrivalInfo = await SP.Data.Arrival.getArrivalInfo(this.arrivalId, false);\r\n this.aas_sender.innerHTML = this.arrivalInfo.arrivalSender;\r\n this.aas_reference.innerHTML = this.arrivalInfo.arrivalReferenceNo + (this.arrivalInfo.arrivalSenderReferenceNo ? \" / \" + this.arrivalInfo.arrivalSenderReferenceNo : \"\");\r\n\r\n this.items = await SP.Data.StockingLot.getArrivalStockingLotInfos(this.arrivalId, false);\r\n\r\n //bind events and groups\r\n if (!this.bound && !this.arrivalInfo.arrivalFinished) {\r\n this.bound = true;\r\n barcodeListener.on(\"sp\", this.scanPlacement, this);\r\n barcodeListener.on(\"t\", this.scanTote, this);\r\n barcodeListener.on(null, this.scanBarcode, this);\r\n await hub.connection.invoke(\"joinGroup\", this.arrivalId);\r\n }\r\n\r\n //clear forms\r\n await this.reset();\r\n this.aas_pending_status.style.display = \"none\";\r\n\r\n //toggle form if edit\r\n document.getElementById(\"aas_arrival_form\").style.display = this.arrivalInfo.arrivalFinished ? \"none\" : \"block\";\r\n\r\n //add pending lines\r\n this.aas_configure_po.style.display = \"none\";\r\n if (this.arrivalInfo.purchaseOrderInfo) {\r\n this.aas_configure_po.style.display = \"block\";\r\n }\r\n\r\n \r\n\r\n //render items\r\n this.items.forEach((i) => {\r\n var po_info = this.arrivalInfo?.purchaseOrderInfo?.items.find(x => x.id == i.purchaseOrderLineId);\r\n\r\n //Revert arrival counts for dislpay as open\r\n if (this.arrivalInfo.arrivalFinished && po_info) {\r\n po_info.undeliveredQty += i.initialQuantity;\r\n po_info.beeingDeliveredQty += i.initialQuantity;\r\n po_info.deliveredQty -= i.initialQuantity;\r\n po_info.itemTotalIncommingAllOrders += i.initialQuantity;\r\n }\r\n\r\n let item = this.arrivals[i.id] = new StockingLotElement(i, this.arrivalInfo, po_info);\r\n this.item_container.appendChild(item.html);\r\n this.updatePoInfos(po_info);\r\n\r\n });\r\n\r\n this.updateArrivalInfos();\r\n\r\n\r\n if (editLot?.length) {\r\n this.editStockingLot(editLot);\r\n }\r\n }\r\n\r\n public updatePoInfos(info: SP.PurchaseOrderLineInfo) {\r\n for (var id in this.arrivals) {\r\n var a = this.arrivals[id];\r\n if (a.POLine == info) a.updatePOInfo(this.arrivalInfo.arrivalFinished);\r\n }\r\n }\r\n\r\n public updateArrivalInfos() {\r\n var arrivalInfos = document.querySelectorAll(\".arrival_items\");\r\n for (var i = 0; i < arrivalInfos.length; i++) {\r\n arrivalInfos[i].innerHTML = \"\";\r\n }\r\n\r\n let totalLines = 0;\r\n let totalFinishedLines = 0;\r\n let totalItemsIncomming = 0;\r\n let totalArrivedItems = 0;\r\n\r\n for (var id in this.arrivals) {\r\n let a = this.arrivals[id];\r\n totalArrivedItems += a.data.initialQuantity;\r\n }\r\n\r\n if (this.arrivalInfo.purchaseOrderInfo) {\r\n this.arrivalInfo.purchaseOrderInfo.items.forEach(i => {\r\n\r\n //skip if different location\r\n if (this.arrivalInfo.arrivalLocation && this.arrivalInfo.arrivalLocation != i.loc) return;\r\n\r\n let arrived = i.beeingDeliveredQty;\r\n let incomming = i.undeliveredQty;\r\n totalItemsIncomming += incomming;\r\n if (incomming) totalLines++;\r\n if (incomming && arrived == incomming) totalFinishedLines++;\r\n });\r\n }\r\n\r\n if (totalLines > 0) {\r\n this.aas_pending_status.style.display = \"block\";\r\n this.aas_pending_status_value.innerHTML = totalFinishedLines + \" / \" + totalLines;\r\n if (totalFinishedLines == totalLines) this.aas_pending_status.classList.remove(\"label-warning\");\r\n else this.aas_pending_status.classList.add(\"label-warning\");\r\n }\r\n\r\n this.aas_total_count.innerHTML = totalItemsIncomming ? totalItemsIncomming.toString() : \"-\";\r\n this.aas_current_count.innerHTML = totalArrivedItems ? totalArrivedItems.toString() : \"-\";\r\n }\r\n\r\n\r\n async onClose() {\r\n //unbind events and groups\r\n if (this.bound) {\r\n this.bound = false;\r\n barcodeListener.off(\"sp\", this.scanPlacement);\r\n barcodeListener.off(\"t\", this.scanTote);\r\n barcodeListener.off(null, this.scanBarcode);\r\n await hub.connection.invoke(\"leaveGroup\", this.arrivalId);\r\n }\r\n itemSearchAssistant.close();\r\n }\r\n\r\n arrivalItemAdded(data: SP.StockingLotInfo) {\r\n var po_info = this.arrivalInfo?.purchaseOrderInfo?.items.find(x => x.id == data.purchaseOrderLineId);\r\n let item = this.arrivals[data.id] = new StockingLotElement(data, this.arrivalInfo, po_info);\r\n this.item_container.prepend(item.html);\r\n this.items.push(data);\r\n //var match = PurchaseOrderLineMatches[data.item.sku];\r\n //match.dirty = true;\r\n if (po_info) {\r\n po_info.beeingDeliveredQty += data.initialQuantity;\r\n this.updatePoInfos(po_info);\r\n }\r\n this.updateArrivalInfos();\r\n }\r\n\r\n arrivalItemUpdated(data: SP.StockingLotInfo) {\r\n var po_info = this.arrivalInfo?.purchaseOrderInfo?.items.find(x => x.id == data.purchaseOrderLineId);\r\n var current = this.arrivals[data.id];\r\n if (current != null) {\r\n var diff = data.initialQuantity - current.data.initialQuantity;\r\n current.data = data;\r\n current.updateText();\r\n //var match = PurchaseOrderLineMatches[data.item.sku];\r\n //match.dirty = true;\r\n if (current.POLine) {\r\n current.POLine.beeingDeliveredQty += diff;\r\n this.updatePoInfos(po_info);\r\n }\r\n this.updateArrivalInfos();\r\n\r\n if (data.initialQuantity == 0) {\r\n current.html.remove();\r\n delete this.arrivals[data.id];\r\n }\r\n }\r\n }\r\n }\r\n\r\n RegisterApp(\"app_arrival_show\", App_Arrival_Show);\r\n}","namespace TerminalApp {\r\n export class PlacementInfoBox {\r\n container: HTMLElement;\r\n raw_data: string;\r\n id: number;\r\n template: number;\r\n hall: string;\r\n toteName: string;\r\n section: string;\r\n unit: string;\r\n row: string;\r\n place: string;\r\n sub: string;\r\n prefix: string;\r\n refill: boolean;\r\n pronounciation: string;\r\n string_location: string;\r\n icon: HTMLImageElement;\r\n itemInfo: SP.ItemInfo;\r\n constructor(string_data: string, createHtml: boolean, iteminfo: SP.ItemInfo, quantity: number = null, distance: number = null) {\r\n this.itemInfo = iteminfo;\r\n this.raw_data = string_data;\r\n let data = string_data.split('|');\r\n this.id = parseInt(data[0]);\r\n this.template = parseInt(data[1]);\r\n this.hall = data[2];\r\n this.section = data[3];\r\n this.unit = data[4];\r\n this.row = data[5];\r\n this.place = data[6];\r\n this.sub = data[7];\r\n this.prefix = data[8];\r\n this.refill = data[9] == \"1\";\r\n console.log(\"template\", this.template);\r\n //Tote\r\n if (this.template == 0) {\r\n this.pronounciation = `Tote ${this.hall}`;\r\n this.string_location = `Tote ${this.hall}`;\r\n this.toteName = data[2];\r\n this.hall = \"Tote\";\r\n }\r\n else if (this.itemInfo != null && this.section == \"import\" && this.itemInfo.importPlacementName) {\r\n this.pronounciation = `${(this.itemInfo.importPlacementName as any).replaceAll('-', ' .. ')}`;\r\n this.string_location = `${this.itemInfo.importPlacementName}`;\r\n }\r\n //seperate unit and no place\r\n else if (this.template == 3 || this.template == 4 || this.template == 7) {\r\n this.pronounciation = `${this.prefix}${this.section} .. ${this.unit} ${this.row}`;\r\n this.string_location = `${SP.Localize(\"word_hall\")} ${this.hall} | ${this.prefix}${this.section.toUpperCase()} | ${this.unit} | ${this.row}`;\r\n }\r\n //seperate unit and no place\r\n else if (this.template == 13) {\r\n this.pronounciation = `${this.prefix}${this.section} .. ${this.row} ${this.unit}`;\r\n this.string_location = `${SP.Localize(\"word_hall\")} ${this.hall} | ${this.prefix}${this.section.toUpperCase()} | ${this.row} | ${this.unit}`;\r\n }\r\n\r\n //9 med bindstreg\r\n else if (this.template == 9) {\r\n this.pronounciation = `${this.prefix}${this.section} ... ${this.unit} .. ${this.row} ${this.place}` + (this.sub != '0' ? ` .. ${SP.Localize(\"word_number\")} ${this.sub}` : \"\");\r\n this.string_location = `${SP.Localize(\"word_hall\")} ${this.hall} | ${this.prefix}${this.section.toUpperCase()}-${this.unit} | ${this.row} | ${this.place}` + (this.sub != '0' ? ` | ${this.sub}` : \"\");\r\n }\r\n\r\n //all seperated\r\n else if (this.template == 8 || this.template == 12) {\r\n this.pronounciation = `${this.prefix}${this.section} ... ${this.unit} .. ${this.row} .. ${this.place}` + (this.sub != '0' ? ` .. ${SP.Localize(\"word_number\")} ${this.sub}` : \"\");\r\n this.string_location = `${SP.Localize(\"word_hall\")} ${this.hall} | ${this.prefix}${this.section.toUpperCase()} | ${this.unit} | ${this.row} | ${this.place}` + (this.sub != '0' ? ` | ${this.sub}` : \"\");\r\n }\r\n\r\n //all seperated no row\r\n else if (this.template == 11) {\r\n this.pronounciation = `${this.prefix}${this.section} ... ${this.unit} .. ${this.place}` + (this.sub != '0' ? ` .. ${SP.Localize(\"word_number\")} ${this.sub}` : \"\");\r\n this.string_location = `${SP.Localize(\"word_hall\")} ${this.hall} | ${this.prefix}${this.section.toUpperCase()} | ${this.unit} | ${this.place}` + (this.sub != '0' ? ` | ${this.sub}` : \"\");\r\n }\r\n\r\n //default (no place, or sub)\r\n else if (this.template == 10) {\r\n this.pronounciation = `${this.prefix}${this.section}${this.unit} .. ${this.row}`;\r\n this.string_location = `${SP.Localize(\"word_hall\")} ${this.hall} | ${this.prefix}${this.section.toUpperCase()}${this.unit} | ${this.row}`;\r\n }\r\n\r\n //default\r\n else {\r\n this.pronounciation = `${this.prefix}${this.section}${this.unit} .. ${this.row} ${this.place}` + (this.sub != '0' ? ` .. ${SP.Localize(\"word_number\")} ${this.sub}` : \"\");\r\n this.string_location = `${SP.Localize(\"word_hall\")} ${this.hall} | ${this.prefix}${this.section.toUpperCase()}${this.unit} | ${this.row} | ${this.place}` + (this.sub != '0' ? ` | ${this.sub}` : \"\");\r\n }\r\n\r\n if (!createHtml) return;\r\n\r\n this.container = document.createElement(\"table\");\r\n this.container.classList.add(\"placement_infobox\");\r\n\r\n //Tote\r\n if (this.template == 0) {\r\n this.container.innerHTML = `\r\n \r\n \r\n ${this.toteName}\r\n `;\r\n }\r\n else if (this.itemInfo != null && this.section == \"import\" && this.itemInfo.importPlacementName) {\r\n this.container.innerHTML = `\r\n \r\n \r\n ${this.itemInfo.importPlacementName}\r\n `;\r\n }\r\n //seperate unit and no place\r\n else if (this.template == 3 || this.template == 4 || this.template == 7) {\r\n let width = \"20%\";\r\n this.container.innerHTML = `\r\n \r\n \r\n ${SP.Localize(\"word_hall\").toUpperCase()}${this.hall}\r\n ${SP.Localize(\"word_section\").toUpperCase()}${this.prefix}${this.section}\r\n ${SP.Localize(\"word_unit\").toUpperCase()}${this.unit}\r\n ${SP.Localize(\"word_shelf\").toUpperCase()}${this.row}\r\n `;\r\n } else if (this.template == 13) {\r\n let width = \"20%\";\r\n this.container.innerHTML = `\r\n \r\n \r\n ${SP.Localize(\"word_hall\").toUpperCase()}${this.hall}\r\n ${SP.Localize(\"word_section\").toUpperCase()}${this.prefix}${this.section}\r\n ${SP.Localize(\"word_shelf\").toUpperCase()}${this.row}\r\n ${SP.Localize(\"word_unit\").toUpperCase()}${this.unit}\r\n `;\r\n }\r\n\r\n\r\n //9 uden nuller\r\n else if (this.template == 9) {\r\n let width = this.sub != '0' ? \"16.666%\" : \"20%\";\r\n this.container.innerHTML = `\r\n \r\n \r\n ${SP.Localize(\"word_hall\").toUpperCase()}${this.hall}\r\n ${SP.Localize(\"word_section\").toUpperCase()}${this.prefix}${this.section}-${this.unit}\r\n ${SP.Localize(\"word_shelf\").toUpperCase()}${this.row}\r\n ${SP.Localize(\"word_place\").toUpperCase()}${this.place}\r\n ${this.sub != '0' ? `${SP.Localize(\"word_number\").toUpperCase()}${this.sub}` : \"\"}\r\n `;\r\n }\r\n\r\n //all seperate\r\n else if (this.template == 8 || this.template == 12) {\r\n let width = this.sub != '0' ? \"16.666%\" : \"20%\";\r\n this.container.innerHTML = `\r\n \r\n \r\n ${SP.Localize(\"word_hall\").toUpperCase()}${this.hall}\r\n ${SP.Localize(\"word_section\").toUpperCase()}${this.prefix}${this.section}\r\n ${SP.Localize(\"word_unit\").toUpperCase()}${this.unit}\r\n ${SP.Localize(\"word_shelf\").toUpperCase()}${this.row}\r\n ${SP.Localize(\"word_place\").toUpperCase()}${this.place}\r\n ${this.sub != '0' ? `${SP.Localize(\"word_number\").toUpperCase()}${this.sub}` : \"\"}\r\n `;\r\n }\r\n\r\n\r\n //all seperate no row\r\n else if (this.template == 11) {\r\n let width = this.sub != '0' ? \"20%\" : \"25%\";\r\n this.container.innerHTML = `\r\n \r\n \r\n ${SP.Localize(\"word_hall\").toUpperCase()}${this.hall}\r\n ${SP.Localize(\"word_section\").toUpperCase()}${this.prefix}${this.section}\r\n ${SP.Localize(\"word_unit\").toUpperCase()}${this.unit}\r\n ${SP.Localize(\"word_place\").toUpperCase()}${this.place}\r\n ${this.sub != '0' ? `${SP.Localize(\"word_number\").toUpperCase()}${this.sub}` : \"\"}\r\n `;\r\n }\r\n\r\n //default (no place, or sub)\r\n else if (this.template == 10) {\r\n let width = \"25%\";\r\n this.container.innerHTML = `\r\n \r\n \r\n ${SP.Localize(\"word_hall\").toUpperCase()}${this.hall}\r\n ${SP.Localize(\"word_section\").toUpperCase()}${this.prefix}${this.section}${this.unit}\r\n ${SP.Localize(\"word_shelf\").toUpperCase()}${this.row}\r\n `;\r\n }\r\n\r\n //default\r\n else {\r\n let width = this.sub != '0' ? \"16.666%\" : \"20%\";\r\n this.container.innerHTML = `\r\n \r\n \r\n ${SP.Localize(\"word_hall\").toUpperCase()}${this.hall}\r\n ${SP.Localize(\"word_section\").toUpperCase()}${this.prefix}${this.section}${this.unit}\r\n ${SP.Localize(\"word_shelf\").toUpperCase()}${this.row}\r\n ${SP.Localize(\"word_place\").toUpperCase()}${this.place}\r\n ${this.sub != '0' ? `${SP.Localize(\"word_number\").toUpperCase()}${this.sub}` : \"\"}\r\n `;\r\n }\r\n\r\n this.container.querySelector(\"img\").addEventListener(\"click\", (e) => {\r\n placementShortcutAssistant.open_with_data(this.raw_data, this.itemInfo);\r\n e.preventDefault();\r\n e.stopPropagation();\r\n });\r\n\r\n\r\n var tr = this.container.querySelector(\"tr\");\r\n\r\n\r\n\r\n if (this.refill) {\r\n var distance_div = document.createElement(\"div\");\r\n distance_div.classList.add(\"label\", \"badge\", \"lot_count_info\", \"refill\");\r\n distance_div.innerHTML = \"Refill\";\r\n\r\n var td = document.createElement(\"td\");\r\n td.appendChild(distance_div);\r\n tr.appendChild(td);\r\n }\r\n\r\n if (quantity != null) {\r\n var remaining_count = document.createElement(\"div\");\r\n remaining_count.classList.add(\"label\", \"badge\", \"lot_count_info\");\r\n remaining_count.innerHTML = \"Qty
\" + quantity.toString();\r\n\r\n var td = document.createElement(\"td\");\r\n td.appendChild(remaining_count);\r\n tr.appendChild(td);\r\n }\r\n\r\n if (distance != null) {\r\n var distance_div = document.createElement(\"div\");\r\n distance_div.classList.add(\"label\", \"badge\", \"lot_count_info\");\r\n distance_div.style.backgroundColor = \"#3a4d75\";\r\n distance_div.innerHTML = \"\" + SP.Localize(\"word_distance\") + \"
\" + distance.toFixed(1) + \"m\";\r\n\r\n var td = document.createElement(\"td\");\r\n td.appendChild(distance_div);\r\n tr.appendChild(td);\r\n }\r\n\r\n \r\n\r\n\r\n }\r\n }\r\n}","/// \r\n\r\nnamespace TerminalApp {\r\n export class LotInfoBox {\r\n placement_info_container = document.createElement(\"div\");\r\n container: HTMLElement;\r\n inner_container: HTMLElement;\r\n text_container: HTMLElement;\r\n placementId: number;\r\n placementInfoBox: PlacementInfoBox;\r\n lot: SP.StockingLotInfo;\r\n constructor(lotInfo: SP.StockingLotInfo) {\r\n this.lot = lotInfo;\r\n this.placementId = lotInfo.stockPlacementId;\r\n this.container = document.createElement(\"div\");\r\n this.inner_container = this.container.appendChild(document.createElement(\"div\"));\r\n this.inner_container.classList.add(\"inner\");\r\n this.container.classList.add(\"item_box1\");\r\n this.inner_container.innerHTML += ``;\r\n this.placement_info_container.style.pointerEvents = \"none\";\r\n this.inner_container.appendChild(this.placement_info_container);\r\n this.addExtraPlacmentInfoBox(lotInfo);\r\n\r\n \r\n\r\n var textContainer = this.text_container = this.inner_container.appendChild(document.createElement(\"div\"));\r\n textContainer.classList.add(\"text\");\r\n\r\n\r\n var barcodes = [];\r\n\r\n for (let code in lotInfo.item.allBarcodes) {\r\n let bc = code;\r\n if (lotInfo.item.allBarcodes[code] > 1) {\r\n bc += \" COL \" + lotInfo.item.allBarcodes[code] + \"\";\r\n }\r\n barcodes.push(bc);\r\n }\r\n\r\n textContainer.innerHTML += `${lotInfo.item.sku}`\r\n textContainer.innerHTML += `${lotInfo.item.description}`\r\n textContainer.innerHTML += `${barcodes.join(\"
\")}
`\r\n var clearFix = this.inner_container.appendChild(document.createElement(\"div\"));\r\n clearFix.style.clear = \"both\";\r\n\r\n\r\n this.inner_container.querySelector(\".image\").addEventListener(\"click\", (e) => {\r\n itemShortcutAssistant.open_with_info(lotInfo.item);\r\n e.preventDefault();\r\n e.stopPropagation();\r\n });\r\n }\r\n\r\n showMoreInitialized = false;\r\n addShowMoreButton() {\r\n if (!this.showMoreInitialized) {\r\n var button = document.createElement(\"div\");\r\n button.classList.add(\"show-more-btn\");\r\n button.innerHTML = SP.Localize(\"sentance_show_more_placements\");\r\n this.showMoreInitialized = true;\r\n this.placement_info_container.appendChild(button);\r\n\r\n button.addEventListener(\"click\", () => {\r\n for (var i = 0; i < this.placement_info_container.children.length; i++) {\r\n (this.placement_info_container.children[i] as HTMLElement).style.display = \"block\";\r\n button.remove();\r\n }\r\n });\r\n }\r\n\r\n }\r\n\r\n count: number = 0;\r\n addExtraPlacmentInfoBox(lot: SP.StockingLotInfo) {\r\n var box = new PlacementInfoBox(lot.stockPlacementData, true, this.lot.item, lot.placementQuantityItemAllLots);\r\n var container = document.createElement(\"div\");\r\n container.style.position = \"relative\";\r\n container.style.whiteSpace = \"nowrap\";\r\n container.appendChild(box.container);\r\n this.count++;\r\n\r\n if (this.count > 5) {\r\n container.style.display = \"none\";\r\n this.addShowMoreButton();\r\n }\r\n\r\n \r\n\r\n //box.container.style.width = \"60%\";\r\n\r\n\r\n this.placement_info_container.appendChild(container);\r\n this.placementInfoBox ??= box; //set first placement\r\n\r\n }\r\n }\r\n\r\n}","/// \r\n/// \r\n\r\nnamespace TerminalApp {\r\n\r\n class Audit_Zone {\r\n static active: Audit_Zone;\r\n container = document.createElement(\"div\");\r\n button_container = document.createElement(\"div\");\r\n list_container = document.createElement(\"div\");\r\n dirty_label: HTMLElement;\r\n button: HTMLElement;\r\n zone: SP.AuditZoneInfo;\r\n constructor(z: SP.AuditZoneInfo) {\r\n this.button_container.innerHTML = `
${z.name}0
`;\r\n this.button = this.button_container.querySelector(\".btn\");\r\n this.dirty_label = this.button.querySelector(\".label\");\r\n\r\n this.button.addEventListener(\"click\", async () => {\r\n var current = Audit_Zone.active;\r\n\r\n if (current) {\r\n Audit_Zone.active = null;\r\n current.button.classList.remove(\"selected\"); //unselect button\r\n current.list_container.innerHTML = \"\";\r\n current.list_container.style.display = \"none\";\r\n current.dirty_label.style.backgroundColor = \"rgb(167 80 80)\";\r\n }\r\n\r\n if (current != this) {\r\n Audit_Zone.active = this;\r\n this.dirty_label.style.backgroundColor = \"#586d4c\";\r\n this.button.classList.add(\"selected\");\r\n this.list_container.style.display = \"block\";\r\n\r\n //move to top:\r\n this.container.parentElement.prepend(this.container);\r\n this.loadDirtyLocations(null);\r\n ignoreHashChange = true;\r\n SP.setHash(\"zoneId\", this.zone.id);\r\n await SP.sleep(1);\r\n ignoreHashChange = false;\r\n }\r\n else {\r\n SP.setHash(\"zoneId\", null);\r\n }\r\n });\r\n\r\n\r\n\r\n this.container.appendChild(this.button_container);\r\n this.container.appendChild(this.list_container);\r\n this.update(z);\r\n }\r\n\r\n async loadDirtyLocations(currentPlacementId: number) {\r\n var z = await SP.Data.Audit.getAuditZonePlacementDatas(this.zone.id, currentPlacementId, 10);\r\n this.update(z);\r\n //show next placements\r\n }\r\n\r\n update(z: SP.AuditZoneInfo) {\r\n if (z.dirtyCount <= 0) {\r\n this.container.remove();\r\n return;\r\n }\r\n\r\n this.zone = z;\r\n this.dirty_label.innerHTML = z.dirtyCount.toString();\r\n\r\n if (z.placementDatas) {\r\n this.list_container.innerHTML = \"\";\r\n z.placementDatas.forEach(data => {\r\n var box = document.createElement(\"div\");\r\n box.classList.add(\"audit_zone_placement\");\r\n var sp = new PlacementInfoBox(data, true, null);\r\n box.appendChild(sp.container);\r\n this.list_container.appendChild(box);\r\n });\r\n\r\n\r\n }\r\n }\r\n }\r\n\r\n class Audit_Zone_List {\r\n container = document.createElement(\"div\");\r\n list_container = document.createElement(\"div\");\r\n zones: { [id: string]: Audit_Zone } = {};\r\n constructor() {\r\n this.container.innerHTML = `

${SP.Localize('sentance_audit_zones')}

`;\r\n this.container.appendChild(this.list_container);\r\n }\r\n\r\n updateZone(z: SP.AuditZoneInfo) {\r\n var zone = this.zones[z.id];\r\n if (!zone) {\r\n this.zones[z.id] = zone = new Audit_Zone(z);\r\n this.list_container.appendChild(zone.container);\r\n }\r\n zone.update(z);\r\n }\r\n\r\n async update() {\r\n //reset zones\r\n for (var z in this.zones) {\r\n var zone = this.zones[z];\r\n zone.zone.dirtyCount = 0;\r\n }\r\n\r\n //update zones\r\n var zones = await SP.Data.Audit.getAuditZoneInfos();\r\n var hashZone = SP.getHash(\"zoneId\");\r\n zones.forEach(z => {\r\n this.updateZone(z);\r\n });\r\n\r\n //remove non updated zones\r\n for (var z in this.zones) {\r\n var zone = this.zones[z];\r\n if (zone.zone.dirtyCount == 0) {\r\n zone.container.remove();\r\n }\r\n\r\n if (zone.zone.id == hashZone && !zone.button.classList.contains(\"selected\")) {\r\n zone.button.click();\r\n }\r\n }\r\n\r\n //toggle audits\r\n this.container.style.display = zones.length ? \"block\" : \"none\";\r\n }\r\n }\r\n\r\n class AuditItem {\r\n container: HTMLElement = document.createElement(\"div\");\r\n count_container: HTMLElement;\r\n diff_container: HTMLElement;\r\n item: SP.ItemInfo;\r\n amt = 0;\r\n max = 0;\r\n amt_input: HTMLInputElement;\r\n constructor(item: SP.ItemInfo, new_item: boolean, qty:number) {\r\n var name = (item.manufacturerName + \" \" + item.modelNo).trim();\r\n this.container.classList.add(\"order_item_new\", \"faded\");\r\n this.container.innerHTML = `\r\n \r\n
\r\n
${item.sku}${name ? \" - \" + name : \"\"}
\r\n
${item.description}
\r\n
${item.barcodes.join(\", \")}
\r\n
\r\n ${new_item ? '
' : ''}\r\n
+3
\r\n
\r\n
\r\n
\r\n
\r\n
`;\r\n\r\n this.count_container = this.container.querySelector(\".label.amt\");\r\n this.diff_container = this.container.querySelector(\".regulation.difference\");\r\n\r\n SP.bindClickHold(this.container.querySelector(\".plus\") as HTMLElement, 500,\r\n () => { this.updateAmount(1, false); SP.Sounds.Click.play(); }, //click\r\n () => { if (this.amt < this.max) this.updateAmount(this.max, true); SP.Sounds.Click.play(); } //hold\r\n );\r\n\r\n SP.bindClickHold(this.container.querySelector(\".minus\") as HTMLElement, 500,\r\n () => { this.updateAmount(-1, false); SP.Sounds.Click.play(); }, //click\r\n () => { this.updateAmount(this.amt > this.max ? this.max : 0, true); SP.Sounds.Click.play(); } //hold\r\n );\r\n\r\n var img = this.container.querySelector(\".image\");\r\n img.addEventListener(\"click\", () => {\r\n itemShortcutAssistant.open_with_info(item);\r\n });\r\n\r\n this.item = item;\r\n\r\n this.count_container.addEventListener(\"click\", () => {\r\n if (!this.amt_input) {\r\n this.count_container.innerHTML = ``;\r\n this.amt_input = this.count_container.querySelector(\".amt_input\");\r\n this.amt_input.addEventListener(\"input\", () => {\r\n this.updateAmount(parseFloat(this.amt_input.value) ?? 0, true);\r\n });\r\n\r\n this.amt_input.addEventListener(\"blur\", () => {\r\n var val = parseFloat(this.amt_input.value) ?? 0;\r\n this.amt_input = null;\r\n this.updateAmount(val, true);\r\n });\r\n }\r\n this.amt_input.focus();\r\n this.amt_input.select();\r\n });\r\n\r\n this.container.addEventListener(\"click\", () => {\r\n this.focus();\r\n });\r\n\r\n if (new_item) this.updateAmount(qty, true);\r\n else this.render();\r\n }\r\n\r\n addLot(lot: SP.StockingLotInfo) {\r\n this.max += lot.placementQuantity;\r\n this.amt += lot.placementQuantity;\r\n this.render();\r\n }\r\n\r\n updateAmount(amt: number, set: boolean) {\r\n\r\n this.amt = Math.max(0, set ? amt : this.amt + amt);\r\n App_audit_placement.instance.updateChangeCount();\r\n this.render();\r\n }\r\n\r\n focus() {\r\n var current = document.querySelector(\".fcs_items .focus\");\r\n if (current) current.classList.remove(\"focus\");\r\n this.container.classList.add(\"focus\");\r\n this.container.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'center',\r\n inline: 'center'\r\n });\r\n }\r\n\r\n render() {\r\n var diff = SP.fixFloatingNumber(this.amt - this.max);\r\n\r\n if (!this.amt_input) {\r\n this.count_container.innerHTML = this.amt + \" / \" + this.max;\r\n this.count_container.style.backgroundColor = (diff == 0 ? \"\" : \"rgb(160, 171, 147)\");\r\n }\r\n\r\n this.diff_container.classList.remove(\"grad-green\");\r\n this.diff_container.classList.remove(\"grad-red\");\r\n this.diff_container.classList.add((diff > 0 ? \"grad-green\" : diff < 0 ? \"grad-red\" : \"white\"));\r\n this.diff_container.innerHTML = diff > 0 ? \"+\" + diff.toString() : diff < 0 ? diff.toString() : '';\r\n }\r\n }\r\n class App_audit_placement extends AppBase {\r\n auditZoneList = new Audit_Zone_List();\r\n bound = false;\r\n currentPlacementId: number;\r\n currentBarcode: string;\r\n placeholder_container = document.getElementById(\"afc_placeholder\");\r\n placeholder_container_image = this.placeholder_container.querySelector(\"img\");\r\n content_container = document.getElementById(\"afc_content\");\r\n button_reset = document.getElementById(\"afc_reset_count\");\r\n button_add_item = document.getElementById(\"afc_additem\");\r\n button_pick_placement = document.getElementById(\"afc_search_placement\");\r\n header_container = document.querySelector(\".fcs .placement_header\");\r\n items_container = document.querySelector(\".fcs .items\");\r\n change_count_container = document.getElementById(\"fcs_change_count\");\r\n button_submit = document.getElementById(\"fcs_submit\");\r\n placement: SP.StockPlacementInfo;\r\n stockCustomers: SP.CustomerInfo[];\r\n items: { [id: string]: AuditItem };\r\n static instance: App_audit_placement;\r\n\r\n constructor() {\r\n super(\"app_audit_placement\");\r\n App_audit_placement.instance = this;\r\n this.button_submit.addEventListener(\"click\", async () => {\r\n StartLoading();\r\n this.button_submit.classList.add(\"disabled\");\r\n await this.commit();\r\n this.button_submit.classList.remove(\"disabled\");\r\n StopLoading();\r\n });\r\n\r\n this.button_add_item.addEventListener(\"click\", () => {\r\n this.scanBarcode(null);\r\n });\r\n\r\n this.button_pick_placement.addEventListener(\"click\", () => {\r\n placementPickerAssistant.open(null, null, (p) => {\r\n this.selectPlacementId(p.id);\r\n });\r\n });\r\n\r\n this.button_reset.addEventListener(\"click\", () => {\r\n this.resetCounts();\r\n });\r\n\r\n this.placeholder_container_image.style.pointerEvents = \"all\";\r\n this.placeholder_container_image.addEventListener(\"click\", () => {\r\n placementPickerAssistant.open(null, null, (p) => {\r\n this.scanPlacement(p.id.toString());\r\n });\r\n });\r\n\r\n this.container.appendChild(this.auditZoneList.container);\r\n }\r\n\r\n resetCounts() {\r\n for (var id in this.items) {\r\n this.items[id].updateAmount(0, true);\r\n }\r\n }\r\n\r\n reset() {\r\n this.button_add_item.classList.add(\"disabled\");\r\n this.button_reset.classList.add(\"disabled\");\r\n this.content_container.style.display = \"none\";\r\n this.placeholder_container.style.display = \"\";\r\n this.header_container.innerHTML = \"\";\r\n this.items_container.innerHTML = \"\";\r\n this.change_count_container.innerHTML = \"0\";\r\n this.placement = null;\r\n this.changes = 0;\r\n this.items = {};\r\n }\r\n\r\n async onOpen() {\r\n this.reset();\r\n if (!this.bound) {\r\n this.bound = true;\r\n barcodeListener.on(\"t\", this.scanTote, this);\r\n barcodeListener.on(\"sp\", this.scanPlacement, this);\r\n barcodeListener.on(null, this.scanBarcode, this);\r\n }\r\n\r\n var placeId = SP.getHash(\"placementId\");\r\n if (placeId) this.selectPlacementId(parseInt(placeId));\r\n\r\n this.auditZoneList.update();\r\n }\r\n\r\n async onClose() {\r\n //unbind events and groups\r\n if (this.bound) {\r\n this.bound = false;\r\n barcodeListener.off(\"t\", this.scanTote);\r\n barcodeListener.off(\"sp\", this.scanPlacement);\r\n barcodeListener.off(null, this.scanBarcode);\r\n }\r\n itemSearchAssistant.close();\r\n placementPickerAssistant.close();\r\n\r\n this.reset();\r\n }\r\n\r\n commiting = false;\r\n async commit() {\r\n if (this.commiting) return;\r\n this.commiting = true;\r\n try {\r\n var regulations = {} as any;\r\n\r\n for (var id in this.items) {\r\n var regulation = this.items[id].amt - this.items[id].max;\r\n if (regulation != 0) regulations[id] = regulation;\r\n }\r\n\r\n var data = {\r\n itemRegulations: regulations,\r\n placementId: this.placement.placement.id,\r\n note: \"\",\r\n reason: SP.AuditReason.StockAudit\r\n };\r\n\r\n\r\n var result = await SP.post(\"/api/v1/audit/commit/\", data);\r\n\r\n if (result.status != 200) {\r\n await SP.alertX(result.status + \": \" + result.msg);\r\n }\r\n else {\r\n for (var id in this.items) {\r\n this.items[id].max = this.items[id].amt;\r\n this.items[id].render();\r\n }\r\n SP.Sounds.Success.play();\r\n this.changes = 0;\r\n }\r\n\r\n Audit_Zone.active?.loadDirtyLocations(this.placement.placement.id);\r\n\r\n }\r\n finally {\r\n this.commiting = false;\r\n }\r\n }\r\n\r\n async selectPlacementId(placementId: number) {\r\n if (this.changes && this.currentPlacementId != placementId && !(await SP.confirmX(\"\" + SP.Localize(\"word_discard_changes\") + \"?\"))) return;\r\n StartLoading();\r\n\r\n Audit_Zone.active?.loadDirtyLocations(placementId);\r\n\r\n this.reset();\r\n this.currentPlacementId = placementId;\r\n this.currentBarcode = null;\r\n ignoreHashChange = true;\r\n SP.setManyHash({ \"placementId\": placementId.toString() });\r\n\r\n this.placement = await SP.Data.Stock.getPlacementInfo(placementId, false);\r\n this.stockCustomers = (await SP.Data.Customer.getCustomerInfos(true)).filter(x => x.stockId == this.placement.stock?.stockId ?? null);\r\n\r\n var placementInfo = new PlacementInfoBox(this.placement.data, true, null);\r\n this.header_container.appendChild(placementInfo.container);\r\n\r\n //get items\r\n var data = await SP.Data.StockingLot.getPlacementStockingLotInfos(placementId);\r\n for (let i = 0; i < data.length; i++) {\r\n let lot = data[i];\r\n let elm = this.items[lot.item.id];\r\n if (elm == null) elm = this.addItem(lot.item, false, 1);\r\n elm.addLot(lot);\r\n }\r\n this.updateChangeCount();\r\n this.content_container.style.display = \"\";\r\n this.placeholder_container.style.display = \"none\";\r\n this.button_add_item.classList.remove(\"disabled\");\r\n this.button_reset.classList.remove(\"disabled\");\r\n StopLoading();\r\n }\r\n\r\n addItem(item: SP.ItemInfo, new_item: boolean, qty: number) {\r\n let elm = this.items[item.id] = new AuditItem(item, new_item, qty);\r\n this.items_container.appendChild(elm.container);\r\n return elm;\r\n }\r\n\r\n changes = 0;\r\n updateChangeCount() {\r\n this.changes = 0;\r\n for (let id in this.items) {\r\n if (this.items[id].amt != this.items[id].max) this.changes++;\r\n }\r\n this.change_count_container.innerHTML = this.changes.toString();\r\n }\r\n\r\n async scanTote(scanId: string) {\r\n var ti = await SP.Data.Tote.getToteInfo(scanId, false);\r\n this.selectPlacementId(ti.totePlacementId);\r\n }\r\n\r\n scanTime: number;\r\n async scanPlacement(scanId: string) {\r\n let pId = parseInt(scanId);\r\n if (this.placement != null && this.placement.placement.id == pId) {\r\n var now = performance.now();\r\n if (now - this.scanTime < 700 || App_Settings.userSettings.auto_double_scan_stocking) {\r\n this.button_submit.click();\r\n }\r\n this.scanTime = now;\r\n return;\r\n }\r\n\r\n this.selectPlacementId(pId);\r\n }\r\n\r\n async scanBarcode(barcode: string) {\r\n if (this.placement == null) {\r\n SP.Sounds.Error.play();\r\n return;\r\n }\r\n\r\n if (barcode != null) {\r\n barcode = barcode.trim().replace(/^0+/, '');\r\n for (let id in this.items) {\r\n let elm = this.items[id];\r\n for (var code in elm.item.allBarcodes) {\r\n if (code.includes(barcode) || barcode.includes(code)) {\r\n elm.focus();\r\n var qty = elm.item.allBarcodes[code];\r\n return elm.updateAmount(qty ? qty : 1, false);\r\n }\r\n }\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n itemSearchAssistant.open(this.stockCustomers?.length == 1 ? this.stockCustomers[0].customerId : null, barcode ?? \"\", false, (info) => {\r\n let current = this.items[info.id];\r\n var qty = GetBarcodeQty(info.allBarcodes, barcode);\r\n\r\n if (current != null) current.updateAmount(qty ?? 1, false);\r\n else current = this.addItem(info, true, qty ?? 1);\r\n current.focus();\r\n });\r\n }\r\n\r\n }\r\n RegisterApp(\"app_audit_placement\", App_audit_placement);\r\n}","\r\n\r\n/// \r\n/// \r\n\r\nnamespace TerminalApp {\r\n class StatusGroupItem extends LotInfoBox {\r\n dataContainer: HTMLElement;\r\n children: LotItem[] = [];\r\n auditForm: HTMLElement;\r\n error: HTMLElement;\r\n radio_name: string;\r\n reasonInput: HTMLInputElement;\r\n\r\n constructor(lotInfo: SP.StockingLotInfo) {\r\n super(lotInfo);\r\n\r\n this.dataContainer = this.inner_container.appendChild(document.createElement(\"div\"));\r\n this.auditForm = this.inner_container.appendChild(document.createElement(\"div\"));\r\n this.auditForm.classList.add(\"audit_form\")\r\n this.radio_name = \"reason_\" + lotInfo.stockPlacementId + lotInfo.item.id;\r\n for (let key in SP.AuditReason) {\r\n if (isNaN(parseInt(key))) continue;\r\n\r\n let reasonRadio = document.createElement(\"input\");\r\n reasonRadio.type = \"radio\";\r\n reasonRadio.value = key;\r\n reasonRadio.name = this.radio_name;\r\n let label = this.auditForm.appendChild(document.createElement(\"label\"));\r\n label.innerHTML = \" \" + SP.AuditReason[key];\r\n label.prepend(reasonRadio);\r\n }\r\n\r\n this.error = this.auditForm.appendChild(document.createElement(\"div\"));\r\n this.error.classList.add(\"error\");\r\n\r\n this.reasonInput = this.auditForm.appendChild(document.createElement(\"input\"));\r\n this.reasonInput.type = \"text\";\r\n this.reasonInput.maxLength = 100;\r\n this.reasonInput.placeholder = SP.Localize(\"word_reason_other\");\r\n\r\n\r\n\r\n let confirmButton = this.auditForm.appendChild(document.createElement(\"button\"));\r\n confirmButton.classList.add(\"grad-green\");\r\n confirmButton.innerText = SP.Localize(\"word_save\");\r\n confirmButton.addEventListener(\"click\", () => this.post());\r\n }\r\n\r\n addChild(child: LotItem) {\r\n child.group = this;\r\n this.children.push(child);\r\n this.dataContainer.appendChild(child.container);\r\n }\r\n\r\n update() {\r\n let allOk = true;\r\n let hasDif = false;\r\n for (let i = 0; i < this.children.length; i++) {\r\n var child = this.children[i];\r\n if (!hasDif && child.diff != 0) hasDif = true;\r\n if (child.diff != 0 || !child.isOk) allOk = false;\r\n }\r\n\r\n if (allOk) {\r\n this.post(SP.AuditReason.StockAudit);\r\n }\r\n\r\n this.auditForm.style.display = hasDif ? \"block\" : \"none\";\r\n }\r\n\r\n async post(reason: number = null) {\r\n this.error.style.display = \"none\";\r\n\r\n let reasonId = reason;\r\n\r\n //get reason from checkbox\r\n if (reason == null) {\r\n var selectedReason = (document.querySelector('input[name=\"' + this.radio_name + '\"]:checked') as HTMLInputElement);\r\n\r\n if (!selectedReason) {\r\n this.error.innerHTML = SP.Localize(\"sentance_please_select_a_reason\") + \"!\";\r\n this.error.style.display = \"block\";\r\n return;\r\n }\r\n reasonId = parseInt(selectedReason.value);\r\n }\r\n\r\n\r\n const reasonNote = this.reasonInput.value;\r\n const lotCounts: any = {};\r\n\r\n for (let i = 0; i < this.children.length; i++) {\r\n let child = this.children[i];\r\n var amount = Math.max(parseFloat(child.amountInput.value), 0);\r\n if (amount != child.data.placementQuantity)\r\n lotCounts[child.data.id] = amount;\r\n }\r\n\r\n var data = {\r\n lotCounts: lotCounts,\r\n placementId: this.placementId,\r\n note: reasonNote,\r\n reason: reasonId\r\n };\r\n\r\n\r\n var result = await SP.post(\"/api/v1/audit/commit/\", data);\r\n\r\n\r\n if (result.status != 200) {\r\n await SP.alertX(result.status + \": \" + result.msg);\r\n }\r\n else {\r\n for (let i = 0; i < this.children.length; i++) {\r\n let child = this.children[i];\r\n child.commit();\r\n }\r\n\r\n console.log(\"value:\", reasonId);\r\n this.auditForm.style.display = \"none\";\r\n }\r\n\r\n\r\n }\r\n }\r\n\r\n\r\n class LotItem {\r\n container: HTMLElement;\r\n group: StatusGroupItem;\r\n amountInput: HTMLInputElement;\r\n isOk: boolean = false;\r\n diff: number = 0;\r\n data: SP.StockingLotInfo;\r\n infoBox: HTMLElement;\r\n constructor(lotInfo: SP.StockingLotInfo) {\r\n this.container = document.createElement(\"div\");\r\n this.container.classList.add(\"lot_status_box\", \"noselect\");\r\n this.data = lotInfo;\r\n\r\n //Headline\r\n var headline = this.container.appendChild(document.createElement(\"div\"));\r\n headline.classList.add(\"lot_headline\");\r\n headline.innerHTML += `${SP.Localize(\"word_arrived\")}: ${lotInfo.arrivalDate} (${lotInfo.createUser})`;\r\n if (lotInfo.expirationDate) headline.innerHTML += `
${SP.Localize(\"word_expiration\")}: ${lotInfo.expirationDate}`\r\n if (lotInfo.batchNumber) headline.innerHTML += `
${SP.Localize(\"word_batch\")}: ${lotInfo.batchNumber}`\r\n\r\n //config\r\n let configButton = this.container.appendChild(document.createElement(\"div\"));\r\n configButton.classList.add(\"button\", \"config\", \"grad-gray\");\r\n configButton.innerHTML = '';\r\n\r\n\r\n configButton.addEventListener(\"click\", () => {\r\n editLotAssistant.open(lotInfo);\r\n });\r\n\r\n\r\n //minus\r\n let minusButton = this.container.appendChild(document.createElement(\"div\"));\r\n minusButton.classList.add(\"button\", \"minus\", \"grad-gray\");\r\n minusButton.innerHTML = '';\r\n\r\n //inputBox\r\n let inputBox = this.container.appendChild(document.createElement(\"div\"));\r\n inputBox.classList.add(\"input_box\");\r\n\r\n //input\r\n this.amountInput = document.createElement(\"input\");\r\n this.amountInput.name = \"lot_count_\" + this.data.id;\r\n this.amountInput.type = \"number\";\r\n this.amountInput.value = this.data.placementQuantity.toString();\r\n inputBox.innerHTML += ` / ${this.data.placementQuantity.toString()}`;\r\n inputBox.prepend(this.amountInput);\r\n\r\n //startcount\r\n let originalCount = inputBox.appendChild(document.createElement(\"span\"));\r\n originalCount.innerHTML = \" / \" + this.data.initialQuantity.toString();\r\n\r\n //plus\r\n let plusButton = this.container.appendChild(document.createElement(\"div\"));\r\n plusButton.classList.add(\"button\", \"plus\", \"grad-gray\");\r\n plusButton.innerHTML = '';\r\n\r\n //info\r\n let infoBox = this.infoBox = this.container.appendChild(document.createElement(\"div\"));\r\n infoBox.classList.add(\"info\");\r\n infoBox.innerHTML = \"OK\";\r\n\r\n infoBox.addEventListener(\"click\", () => {\r\n if (!this.isOk)\r\n this.update(true);\r\n });\r\n\r\n\r\n\r\n this.amountInput.addEventListener(\"input\", () => this.update(false,true,true));\r\n\r\n this.amountInput.addEventListener(\"focus\", e => {\r\n this.amountInput.select();\r\n });\r\n\r\n\r\n\r\n plusButton.addEventListener(\"click\", () => {\r\n this.amountInput.value = (parseFloat(this.amountInput.value) + 1).toString();\r\n this.update();\r\n });\r\n\r\n minusButton.addEventListener(\"click\", () => {\r\n this.amountInput.value = (parseFloat(this.amountInput.value) - 1).toString();\r\n this.update();\r\n });\r\n }\r\n\r\n commit() {\r\n var amount = Math.max(parseFloat(this.amountInput.value), 0);\r\n this.data.placementQuantity = amount;\r\n this.update(true, false);\r\n }\r\n\r\n\r\n update(approve = false, updateGroup = true, fromInput = false) {\r\n var amount = Math.max(parseFloat(this.amountInput.value), 0);\r\n if (isNaN(amount)) amount = 0;\r\n if (!fromInput)\r\n this.amountInput.value = amount.toString();\r\n\r\n this.diff = normalize(amount - this.data.placementQuantity);\r\n this.infoBox.style.backgroundColor = this.diff > 0 ? \"#ecf1ab\" : this.diff < 0 ? \"#efc6c6\" : approve ? \"#bae0ba\" : \"\";\r\n this.infoBox.innerHTML = this.diff == 0 ? \"OK\" : (this.diff > 0 ? \"+\" : \"\") + this.diff.toString();\r\n\r\n\r\n this.isOk = approve && this.diff == 0;\r\n\r\n if (updateGroup) this.group.update();\r\n }\r\n\r\n\r\n }\r\n\r\n class app_audit_stock extends AppBase {\r\n bound = false;\r\n input_stock = document.getElementById(\"audit_stock_stock\") as HTMLSelectElement;\r\n input_popup = new Input_Popup();\r\n\r\n currentCustomerId: string = \"\";\r\n currentItemId: string = \"\";\r\n currentPlacementId: number = -1;\r\n currentBarcode: string = \"\";\r\n\r\n button_search_ean = document.getElementById(\"cs_search_ean\");\r\n button_search_item = document.getElementById(\"cs_search_item\");\r\n button_pick_placement = document.getElementById(\"cs_search_placement\");\r\n header_container = document.querySelector(\".cs .placement_header\");\r\n\r\n audit_stock_data = document.getElementById(\"audit_stock_data\");\r\n audit_stock_info = document.getElementById(\"audit_stock_info\");\r\n audit_stock_info_image = this.audit_stock_info.querySelector(\"img\");\r\n audit_stock_no_items = document.getElementById(\"audit_stock_no_items\");\r\n\r\n constructor() {\r\n super(\"app_audit_stock\");\r\n\r\n\r\n this.button_search_item.addEventListener(\"click\", () => {\r\n itemSearchAssistant.open(this.currentCustomerId, \"\", false, (item) => {\r\n this.selectItem(item.id);\r\n });\r\n });\r\n\r\n this.button_search_ean.addEventListener(\"click\", () => {\r\n itemSearchAssistant.open(this.currentCustomerId, \"\", true, (item) => {\r\n this.selectItem(item.id);\r\n });\r\n });\r\n\r\n this.button_pick_placement.addEventListener(\"click\", () => {\r\n placementPickerAssistant.open(null, null, (p) => {\r\n this.selectPlacementId(p.id, \"\");\r\n });\r\n });\r\n\r\n this.audit_stock_info_image.style.pointerEvents = \"all\";\r\n this.audit_stock_info_image.addEventListener(\"click\", () => {\r\n placementPickerAssistant.open(null, null, (p) => {\r\n this.scanPlacement(p.id.toString());\r\n });\r\n });\r\n\r\n }\r\n\r\n reset() {\r\n this.clearData();\r\n this.currentCustomerId = \"\";\r\n this.currentItemId = \"\";\r\n this.currentPlacementId = -1;\r\n this.currentBarcode = \"\";\r\n this.audit_stock_info.style.display = \"block\";\r\n this.audit_stock_no_items.style.display = \"none\";\r\n this.input_popup.hide();\r\n }\r\n\r\n async onOpen() {\r\n this.reset();\r\n\r\n var filter = SP.getHash(\"filter\") ?? \"\";\r\n await this.selectPlacementId(SP.getHash(\"placementId\") as any, filter);\r\n await this.selectItem(SP.getHash(\"itemId\"));\r\n await this.selectBarcode(SP.getHash(\"barcode\"));\r\n\r\n this.currentCustomerId = SP.getHash(\"customerId\");\r\n \r\n //bind events and groups\r\n if (!this.bound) {\r\n this.bound = true;\r\n barcodeListener.on(\"sp\", this.scanPlacement, this);\r\n barcodeListener.on(\"t\", this.scanTote, this);\r\n barcodeListener.on(null, this.scanBarcode, this);\r\n }\r\n }\r\n\r\n async onClose() {\r\n //unbind events and groups\r\n if (this.bound) {\r\n this.bound = false;\r\n barcodeListener.off(\"sp\", this.scanPlacement);\r\n barcodeListener.off(\"t\", this.scanTote);\r\n barcodeListener.off(null, this.scanBarcode);\r\n }\r\n\r\n itemSearchAssistant.close();\r\n placementPickerAssistant.close();\r\n\r\n this.reset();\r\n }\r\n\r\n\r\n\r\n async selectBarcode(barcode: string) {\r\n if (!barcode) return;\r\n if (this.currentBarcode != barcode) {\r\n StartLoading();\r\n this.currentBarcode = barcode;\r\n this.currentPlacementId = null;\r\n this.currentItemId = null;\r\n\r\n ignoreHashChange = true;\r\n SP.setManyHash({ \"barcode\": barcode, \"placementId\": null, \"itemId\": null });\r\n this.setData(await SP.Data.StockingLot.getBarcodeStockingLotInfos(barcode, false));\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n async selectPlacementId(placementId: number, filter: string) {\r\n if (!placementId) return;\r\n\r\n\r\n StartLoading();\r\n this.currentPlacementId = placementId;\r\n this.currentBarcode = null;\r\n this.currentItemId = null;\r\n\r\n ignoreHashChange = true;\r\n SP.setManyHash({ \"placementId\": placementId.toString(), \"barcode\": null, \"itemId\": null });\r\n\r\n\r\n //get items\r\n var infos: SP.StockingLotInfo[] = [];\r\n\r\n var response = await SP.get(\"/api/v1/info/stockingLotInfos/?maxResults=10000&placementId=\" + placementId + \"&itemFilter=\" + filter);\r\n if (response.status == 200) infos = response.data;\r\n\r\n //Too many Items (must filter)\r\n else if (response.status == 519) {\r\n SP.Sounds.Error.play();\r\n this.input_popup.show(\"Too many items on location, filter or scan item!\", \"Filter\", \"Filter / ean ...\", async () => {\r\n await this.selectPlacementId(placementId, this.input_popup.value);\r\n });\r\n StopLoading();\r\n return;\r\n }\r\n\r\n this.setData(infos);\r\n\r\n }\r\n\r\n async selectItem(itemId: string) {\r\n if (!itemId) return;\r\n\r\n\r\n if (this.currentItemId != itemId) {\r\n StartLoading();\r\n this.currentItemId = itemId;\r\n this.currentBarcode = null;\r\n this.currentPlacementId = null;\r\n\r\n ignoreHashChange = true;\r\n SP.setManyHash({ \"itemId\": itemId, \"barcode\": null, \"placementId\": null });\r\n this.setData(await SP.Data.StockingLot.getItemStockingLotInfos(itemId, false));\r\n }\r\n\r\n }\r\n\r\n clearData() {\r\n //clear previous data\r\n this.groupData = {};\r\n this.audit_stock_data.innerHTML = \"\";\r\n\r\n }\r\n\r\n groupData: { [key: string]: StatusGroupItem };\r\n setData(lots: SP.StockingLotInfo[]) {\r\n console.log(\"got data:\", lots);\r\n\r\n this.clearData();\r\n\r\n for (let i = 0; i < lots.length; i++) {\r\n let lot = lots[i];\r\n let key = lot.item.id + \"-\" + lot.stockPlacementId;\r\n let group = this.groupData[key];\r\n\r\n if (group == null) {\r\n group = this.groupData[key] = new StatusGroupItem(lot);\r\n this.audit_stock_data.appendChild(group.container);\r\n }\r\n\r\n var lotItem = new LotItem(lot);\r\n group.addChild(lotItem);\r\n }\r\n\r\n SP.Sounds.Click.play();\r\n StopLoading();\r\n this.audit_stock_info.style.display = \"none\";\r\n this.audit_stock_no_items.style.display = lots.length ? \"none\" : \"block\";\r\n\r\n\r\n }\r\n\r\n\r\n async scanTote(scanId: string) {\r\n var ti = await SP.Data.Tote.getToteInfo(scanId, false);\r\n this.selectPlacementId(ti.totePlacementId, '');\r\n }\r\n\r\n async scanPlacement(scanId: string) {\r\n this.selectPlacementId(parseInt(scanId), '');\r\n }\r\n\r\n async scanBarcode(barcode: string) {\r\n if (this.input_popup.open) {\r\n this.input_popup.setExecute(barcode);\r\n }\r\n\r\n if (!this.currentCustomerId) {\r\n this.selectBarcode(barcode);\r\n }\r\n\r\n else {\r\n //auto search\r\n itemSearchAssistant.open(this.currentCustomerId, barcode, false, (i) => {\r\n this.selectItem(i.id);\r\n });\r\n }\r\n }\r\n\r\n }\r\n RegisterApp(\"app_audit_stock\", app_audit_stock);\r\n}","/// \r\n\r\n\r\nnamespace TerminalApp {\r\n class LogElement {\r\n constructor(message: string) {\r\n this.time = Date.now();\r\n this.event = message;\r\n }\r\n time: number;\r\n event: string;\r\n }\r\n\r\n export class DeviceLog extends AppBase {\r\n bound = false;\r\n output = document.getElementById(\"adl_output\");\r\n logs: LogElement[] = [];\r\n\r\n static log(message: string) {\r\n (GetApp(\"app_device_log\") as DeviceLog).log(message);\r\n }\r\n\r\n static instance: DeviceLog;\r\n constructor() {\r\n super(\"app_device_log\");\r\n DeviceLog.instance = this;\r\n\r\n var log = localStorage.getItem(\"device_log\");\r\n if (log) this.logs = JSON.parse(log);\r\n\r\n window.addEventListener(\"beforeunload\", (evt) => {\r\n this.trim();\r\n localStorage.setItem(\"device_log\", JSON.stringify(this.logs));\r\n });\r\n }\r\n\r\n log(message: string) {\r\n this.logs.push(new LogElement(message));\r\n if (this.log.length > 400) {\r\n this.trim();\r\n }\r\n }\r\n\r\n trim() {\r\n var remove = this.log.length - 200;\r\n if (remove > 0) this.logs = this.logs.slice(remove);\r\n }\r\n\r\n\r\n padTo2Digits(num: number) {\r\n return num.toString().padStart(2, '0');\r\n }\r\n\r\n formatDate(date: Date) {\r\n return (\r\n [\r\n date.getFullYear(),\r\n this.padTo2Digits(date.getMonth() + 1),\r\n this.padTo2Digits(date.getDate()),\r\n ].join('-') +\r\n ' ' +\r\n [\r\n this.padTo2Digits(date.getHours()),\r\n this.padTo2Digits(date.getMinutes()),\r\n this.padTo2Digits(date.getSeconds()),\r\n ].join(':')\r\n );\r\n }\r\n\r\n async onOpen() {\r\n this.output.innerHTML = \"\";\r\n var out = this.output.appendChild(document.createElement(\"ul\"));\r\n for (let i = this.logs.length - 1; i >= 0; i--) {\r\n let elm = out.appendChild(document.createElement(\"li\"));\r\n var date = this.formatDate(new Date(this.logs[i].time));\r\n elm.innerHTML = `${date} ${this.logs[i].event}`;\r\n }\r\n }\r\n\r\n async onClose() {\r\n this.output.innerHTML = \"\";\r\n }\r\n }\r\n\r\n\r\n\r\n RegisterApp(\"app_device_log\", DeviceLog);\r\n}","/// \r\n\r\nnamespace TerminalApp {\r\n let appId = \"app_empty\";\r\n\r\n export class App_Empty extends AppBase {\r\n constructor() {\r\n super(appId);\r\n }\r\n }\r\n\r\n RegisterApp(appId, App_Empty);\r\n}","/// \r\n\r\nnamespace TerminalApp {\r\n export let Voices: { [lang: string]: SpeechSynthesisVoice } = {};\r\n export async function Talk(text: string, delay: number = 0, cancelFirst: boolean = false) {\r\n\r\n\r\n if (!App_Settings.userSettings.voice_assistance) \r\n return;\r\n \r\n\r\n InitializeVoices();\r\n\r\n if (delay) await SP.sleep(delay);\r\n\r\n let v = new SpeechSynthesisUtterance(text);\r\n var voice = TerminalApp.Voices[App_Settings.userSettings.voice_language];\r\n if (voice) {\r\n v.voice = voice;\r\n v.lang = voice.lang;\r\n v.volume = 1;\r\n }\r\n v.rate = App_Settings.userSettings.voice_speed;\r\n\r\n if (cancelFirst) window.speechSynthesis.cancel();\r\n window.speechSynthesis.speak(v);\r\n }\r\n\r\n export function InitializeVoices(force:boolean = false) {\r\n if (force || (!Voices || Object.keys(Voices).length == 0)) {\r\n //load from browser\r\n var varr = window.speechSynthesis.getVoices();\r\n if (varr && varr.length) {\r\n for (let i = 0; i < varr.length; i++) {\r\n let key = varr[i].lang.replace('_', '-');\r\n Voices[key] = varr[i];\r\n }\r\n }\r\n\r\n document.getElementById(\"s_voice_language\").innerHTML = \"\";\r\n\r\n for (var lang in Voices) {\r\n let v = Voices[lang];\r\n let opt = document.getElementById(\"s_voice_language\").appendChild(document.createElement(\"option\"));\r\n opt.value = lang;\r\n opt.innerHTML = lang + \" - \" + v.name;\r\n }\r\n window.speechSynthesis.cancel();\r\n window.speechSynthesis.resume();\r\n window.speechSynthesis.cancel();\r\n window.speechSynthesis.resume();\r\n window.speechSynthesis.cancel();\r\n window.speechSynthesis.resume();\r\n\r\n if (force) {\r\n Talk(\"ok\");\r\n }\r\n\r\n (document.getElementById(\"s_voice_language\") as HTMLInputElement).value = App_Settings.userSettings.voice_language.toString();\r\n }\r\n }\r\n\r\n export class App_Settings extends AppBase {\r\n static instance: App_Settings;\r\n\r\n static wmsSettings = {\r\n allow_soft_barcode_match: (window as any)._wmsSettings.allow_soft_barcode_match,\r\n autoprint_pallet_label: (window as any)._wmsSettings.autoprint_pallet_label,\r\n use_additional_placement_barcodes: (window as any)._wmsSettings.use_additional_placement_barcodes,\r\n move_all_placement: (window as any)._wmsSettings.move_all_placement,\r\n fulfillment_location: (window as any)._wmsSettings.fulfillment_location,\r\n }\r\n\r\n static userSettings = {\r\n interface_zoom: 0.7,\r\n terminal_langauge: \"DK\",\r\n finish_package_delay: 5,\r\n voice_assistance: true,\r\n voice_index: -1,\r\n voice_language: \"da-DK\",\r\n voice_speed: 1.3,\r\n voice_delay: 300,\r\n voice_arrival_confirm_quantity: true,\r\n voice_picklist_read_placement: true,\r\n voice_picklist_read_quantity: true,\r\n voice_picklist_read_tote: true,\r\n voice_picklist_confirm_tote_finish: true,\r\n auto_double_scan_picking: true,\r\n auto_double_scan_stocking: true,\r\n auto_double_scan_moving: true,\r\n auto_double_scan_print_label: true,\r\n auto_print_shipping_label: true,\r\n autogenerate_production_batch_number: true,\r\n allow_mixed_arrival: false,\r\n allow_split_delivery: true,\r\n allow_autofill_package: true,\r\n hide_empty_pick_profiles: false,\r\n print_delivery_instantly: false\r\n }\r\n\r\n static terminalSettings = {\r\n transport: 0,\r\n barcode_prefix: '{',\r\n barcode_surfix: '}',\r\n etiquette_printer: '',\r\n label_printer: '',\r\n a4_printer: '',\r\n tote_sorting: \"name\"\r\n }\r\n\r\n static userRights = {\r\n refund: true,\r\n }\r\n\r\n userId: string = \"\";\r\n\r\n //inputs\r\n input_interface_zoom = document.getElementById(\"s_interface_zoom\") as HTMLInputElement;\r\n input_terminal_language = document.getElementById(\"s_terminal_language\") as HTMLInputElement;\r\n input_finish_package_delay = document.getElementById(\"s_finish_package_delay\") as HTMLInputElement;\r\n input_tote_sorting = document.getElementById(\"s_tote_sorting\") as HTMLInputElement;\r\n input_auto_double_scan_stocking = new SP.CheckboxDoodle(document.getElementById(\"s_auto_double_scan_stocking\") as HTMLInputElement);\r\n input_auto_double_scan_picking = new SP.CheckboxDoodle(document.getElementById(\"s_auto_double_scan_picking\") as HTMLInputElement);\r\n input_auto_double_scan_moving = new SP.CheckboxDoodle(document.getElementById(\"s_auto_double_scan_moving\") as HTMLInputElement);\r\n input_auto_double_scan_print_label = new SP.CheckboxDoodle(document.getElementById(\"s_auto_double_scan_print_label\") as HTMLInputElement);\r\n input_auto_print_shipping_label = new SP.CheckboxDoodle(document.getElementById(\"s_auto_print_shipping_label\") as HTMLInputElement); \r\n input_print_delivery_instantly = new SP.CheckboxDoodle(document.getElementById(\"s_print_delivery_instantly\") as HTMLInputElement);\r\n input_autogenerate_production_batch_number = new SP.CheckboxDoodle(document.getElementById(\"s_autogenerate_production_batch_number\") as HTMLInputElement);\r\n input_allow_mixed_arrival = new SP.CheckboxDoodle(document.getElementById(\"s_allow_mixed_arrival\") as HTMLInputElement); \r\n input_voice_assistance = new SP.CheckboxDoodle(document.getElementById(\"s_voice_assistance\") as HTMLInputElement);\r\n input_allow_split_delivery = new SP.CheckboxDoodle(document.getElementById(\"s_allow_split_delivery\") as HTMLInputElement);\r\n input_allow_autofill_package = new SP.CheckboxDoodle(document.getElementById(\"s_allow_autofill_package\") as HTMLInputElement);\r\n input_hide_empty_pick_profiles = new SP.CheckboxDoodle(document.getElementById(\"s_hide_empty_pick_profiles\") as HTMLInputElement);\r\n input_voice_language = document.getElementById(\"s_voice_language\") as HTMLInputElement;\r\n input_voice_speed = document.getElementById(\"s_voice_speed\") as HTMLInputElement;\r\n input_voice_delay = document.getElementById(\"s_voice_delay\") as HTMLInputElement;\r\n input_voice_arrival_confrim_quantity = new SP.CheckboxDoodle(document.getElementById(\"s_voice_arrival_confirm_quantity\") as HTMLInputElement);\r\n input_voice_picklist_read_placement = new SP.CheckboxDoodle(document.getElementById(\"s_voice_picklist_read_placement\") as HTMLInputElement);\r\n input_voice_picklist_read_quantity = new SP.CheckboxDoodle(document.getElementById(\"s_voice_picklist_read_quantity\") as HTMLInputElement);\r\n input_voice_picklist_read_tote = new SP.CheckboxDoodle(document.getElementById(\"s_voice_picklist_read_tote\") as HTMLInputElement);\r\n input_voice_picklist_confirm_tote_finished = new SP.CheckboxDoodle(document.getElementById(\"s_voice_picklist_confirm_tote_finished\") as HTMLInputElement);\r\n\r\n \r\n\r\n input_barcode_prefix = document.getElementById(\"s_barcode_prefix\") as HTMLInputElement;\r\n input_barcode_surfix = document.getElementById(\"s_barcode_surfix\") as HTMLInputElement;\r\n\r\n\r\n voice_settings = document.getElementById(\"voice_settings\");\r\n input_etiquette_printer = document.getElementById(\"s_etiquette_printer\") as HTMLSelectElement;\r\n input_label_printer = document.getElementById(\"s_label_printer\") as HTMLSelectElement;\r\n input_a4_printer = document.getElementById(\"s_a4_printer\") as HTMLSelectElement;\r\n s_test_connection = document.getElementById(\"s_test_connection\");\r\n input_transport = document.getElementById(\"s_transport\") as HTMLSelectElement;\r\n s_device_log = document.getElementById(\"s_device_log\");\r\n s_location_mapping = document.getElementById(\"s_location_mapping\");\r\n constructor() {\r\n super(\"app_settings\");\r\n App_Settings.instance = this;\r\n this.userId = (document.getElementById(\"settings_user_id\") as HTMLInputElement).value;\r\n this.initializeInputs();\r\n\r\n this.s_test_connection.addEventListener(\"click\", () => {\r\n GetApp(\"app_status\").open();\r\n });\r\n\r\n this.s_device_log.addEventListener(\"click\", () => {\r\n GetApp(\"app_device_log\").open();\r\n });\r\n\r\n this.s_location_mapping.addEventListener(\"click\", () => {\r\n GetApp(\"app_location_mapping\").open();\r\n });\r\n\r\n this.loadTerminalSettings();\r\n }\r\n\r\n async onOpen() {\r\n InitializeVoices();\r\n }\r\n\r\n initializeInputs() {\r\n InitializeVoices();\r\n this.input_interface_zoom.addEventListener(\"change\", () => {\r\n App_Settings.userSettings.interface_zoom = parseFloat(this.input_interface_zoom.value);\r\n this.saveSettings();\r\n });\r\n\r\n\r\n this.input_terminal_language.addEventListener(\"change\",async () => {\r\n App_Settings.userSettings.terminal_langauge = this.input_terminal_language.value;\r\n this.saveSettings();\r\n });\r\n\r\n this.input_finish_package_delay.addEventListener(\"change\", async () => {\r\n App_Settings.userSettings.finish_package_delay = parseInt(this.input_finish_package_delay.value);\r\n this.saveSettings();\r\n });\r\n\r\n\r\n\r\n this.input_auto_double_scan_stocking.onChange = () => {\r\n App_Settings.userSettings.auto_double_scan_stocking = this.input_auto_double_scan_stocking.checked;\r\n this.saveSettings();\r\n };\r\n\r\n this.input_auto_double_scan_picking.onChange = () => {\r\n App_Settings.userSettings.auto_double_scan_picking = this.input_auto_double_scan_picking.checked;\r\n this.saveSettings();\r\n };\r\n\r\n this.input_auto_double_scan_moving.onChange = () => {\r\n App_Settings.userSettings.auto_double_scan_moving = this.input_auto_double_scan_moving.checked;\r\n this.saveSettings();\r\n };\r\n\r\n this.input_auto_double_scan_print_label.onChange = () => {\r\n App_Settings.userSettings.auto_double_scan_print_label = this.input_auto_double_scan_print_label.checked;\r\n this.saveSettings();\r\n };\r\n\r\n\r\n this.input_auto_print_shipping_label.onChange = () => {\r\n App_Settings.userSettings.auto_print_shipping_label = this.input_auto_print_shipping_label.checked;\r\n this.saveSettings();\r\n };\r\n\r\n this.input_autogenerate_production_batch_number.onChange = () => {\r\n App_Settings.userSettings.autogenerate_production_batch_number = this.input_autogenerate_production_batch_number.checked;\r\n this.saveSettings();\r\n };\r\n\r\n this.input_print_delivery_instantly.onChange = () => {\r\n App_Settings.userSettings.print_delivery_instantly = this.input_print_delivery_instantly.checked;\r\n this.saveSettings();\r\n };\r\n\r\n this.input_allow_mixed_arrival.onChange = () => {\r\n App_Settings.userSettings.allow_mixed_arrival = this.input_allow_mixed_arrival.checked;\r\n this.saveSettings();\r\n };\r\n \r\n\r\n this.input_voice_speed.addEventListener(\"change\", () => {\r\n App_Settings.userSettings.voice_speed = parseFloat(this.input_voice_speed.value);\r\n this.saveSettings();\r\n\r\n Talk(\" \", 0, true);\r\n Talk(\" \");\r\n Talk(\"test 1 2 3 456\");\r\n });\r\n\r\n this.input_voice_delay.addEventListener(\"change\", () => {\r\n App_Settings.userSettings.voice_delay = parseInt(this.input_voice_delay.value);\r\n this.saveSettings();\r\n });\r\n\r\n this.input_voice_assistance.onChange = () => {\r\n App_Settings.userSettings.voice_assistance = this.input_voice_assistance.checked;\r\n\r\n if (App_Settings.userSettings.voice_assistance) {\r\n InitializeVoices(true);\r\n }\r\n\r\n this.saveSettings();\r\n };\r\n\r\n this.input_voice_arrival_confrim_quantity.onChange = () => {\r\n App_Settings.userSettings.voice_arrival_confirm_quantity = this.input_voice_arrival_confrim_quantity.checked;\r\n this.saveSettings();\r\n\r\n if (this.input_voice_arrival_confrim_quantity.checked)\r\n Talk(parseInt((1 + Math.random() * 25).toFixed(0)).toString(), 0, true);\r\n };\r\n\r\n this.input_voice_picklist_read_placement.onChange = () => {\r\n App_Settings.userSettings.voice_picklist_read_placement = this.input_voice_picklist_read_placement.checked;\r\n this.saveSettings();\r\n\r\n if (this.input_voice_picklist_read_placement.checked)\r\n Talk(\"B3, 2 3\", 0, true);\r\n };\r\n\r\n this.input_voice_picklist_read_quantity.onChange = () => {\r\n App_Settings.userSettings.voice_picklist_read_quantity = this.input_voice_picklist_read_quantity.checked;\r\n this.saveSettings();\r\n if (this.input_voice_picklist_read_quantity.checked)\r\n Talk(SP.Localize(\"word_pick\") + \" 10\");\r\n };\r\n\r\n this.input_voice_picklist_read_tote.onChange = () => {\r\n App_Settings.userSettings.voice_picklist_read_tote = this.input_voice_picklist_read_tote.checked;\r\n this.saveSettings();\r\n if (this.input_voice_picklist_read_tote.checked)\r\n Talk(SP.Localize(\"word_tote\") + \" B-5\");\r\n\r\n\r\n };\r\n\r\n this.input_voice_picklist_confirm_tote_finished.onChange = () => {\r\n App_Settings.userSettings.voice_picklist_confirm_tote_finish = this.input_voice_picklist_confirm_tote_finished.checked;\r\n this.saveSettings();\r\n if (this.input_voice_picklist_confirm_tote_finished.checked)\r\n Talk(SP.Localize(\"sentance_tote_finished\"));\r\n\r\n };\r\n\r\n this.input_voice_language.addEventListener(\"change\", () => {\r\n App_Settings.userSettings.voice_language = this.input_voice_language.value;\r\n\r\n this.saveSettings();\r\n Talk(\" \", 0, true);\r\n Talk(\" \");\r\n Talk(\"test 1 2 3 456\");\r\n \r\n });\r\n\r\n this.input_barcode_prefix.addEventListener(\"change\", () => {\r\n App_Settings.terminalSettings.barcode_prefix = this.input_barcode_prefix.value ? this.input_barcode_prefix.value[0] : null;\r\n this.saveSettings();\r\n });\r\n\r\n this.input_barcode_surfix.addEventListener(\"change\", () => {\r\n App_Settings.terminalSettings.barcode_surfix = this.input_barcode_surfix.value ? this.input_barcode_surfix.value[0] : null;\r\n this.saveSettings();\r\n });\r\n\r\n this.input_etiquette_printer.addEventListener(\"change\", () => {\r\n App_Settings.terminalSettings.etiquette_printer = this.input_etiquette_printer.value ? this.input_etiquette_printer.value : '';\r\n this.saveSettings();\r\n });\r\n\r\n this.input_label_printer.addEventListener(\"change\", () => {\r\n App_Settings.terminalSettings.label_printer = this.input_label_printer.value ? this.input_label_printer.value : '';\r\n this.saveSettings();\r\n });\r\n\r\n this.input_a4_printer.addEventListener(\"change\", () => {\r\n App_Settings.terminalSettings.a4_printer = this.input_a4_printer.value ? this.input_a4_printer.value : '';\r\n this.saveSettings();\r\n });\r\n\r\n this.input_tote_sorting.addEventListener(\"change\", async () => {\r\n App_Settings.terminalSettings.tote_sorting = this.input_tote_sorting.value;\r\n this.saveSettings();\r\n });\r\n\r\n this.input_transport.addEventListener(\"change\", async () => {\r\n App_Settings.terminalSettings.transport = parseInt(this.input_transport.value);\r\n this.saveSettings();\r\n await SP.sleep(200);\r\n location.reload();\r\n });\r\n\r\n\r\n\r\n this.input_allow_split_delivery.onChange = () => {\r\n App_Settings.userSettings.allow_split_delivery = this.input_allow_split_delivery.checked;\r\n this.saveSettings();\r\n };\r\n\r\n this.input_hide_empty_pick_profiles.onChange = () => {\r\n App_Settings.userSettings.hide_empty_pick_profiles = this.input_hide_empty_pick_profiles.checked;\r\n this.saveSettings();\r\n };\r\n\r\n this.input_allow_autofill_package.onChange = () => {\r\n App_Settings.userSettings.allow_autofill_package = this.input_allow_autofill_package.checked;\r\n this.saveSettings();\r\n };\r\n }\r\n\r\n async loadTerminalSettings() {\r\n var terminalData = localStorage.getItem(\"terminal_settings_1\");\r\n if (terminalData) {\r\n let td = JSON.parse(terminalData);\r\n for (var key in td) {\r\n (App_Settings.terminalSettings as any)[key] = td[key];\r\n }\r\n }\r\n this.updateTerminalInputs();\r\n }\r\n\r\n\r\n async loadUserSettings() {\r\n InitializeVoices();\r\n \r\n var userData = await TerminalApp.hub.connection.invoke(\"LoadTerminalSettings\");\r\n if (userData) {\r\n let ud = JSON.parse(userData);\r\n for (var key in ud) {\r\n (App_Settings.userSettings as any)[key] = ud[key];\r\n }\r\n }\r\n //force zoom\r\n if (App_Settings.userSettings.interface_zoom > 1) App_Settings.userSettings.interface_zoom = 1;\r\n this.updateUserSettingsInput();\r\n }\r\n\r\n async saveSettings() {\r\n await TerminalApp.hub.connection.invoke(\"SaveTerminalSettings\", JSON.stringify(App_Settings.userSettings));\r\n //localStorage.setItem(\"user_settings_1_\" + this.userId, JSON.stringify(App_Settings.userSettings));\r\n localStorage.setItem(\"terminal_settings_1\", JSON.stringify(App_Settings.terminalSettings));\r\n this.loadUserSettings();\r\n }\r\n\r\n async updateTerminalInputs() {\r\n this.input_barcode_prefix.value = App_Settings.terminalSettings.barcode_prefix;\r\n this.input_barcode_surfix.value = App_Settings.terminalSettings.barcode_surfix;\r\n\r\n this.input_etiquette_printer.value = App_Settings.terminalSettings.etiquette_printer;\r\n this.input_label_printer.value = App_Settings.terminalSettings.label_printer;\r\n this.input_a4_printer.value = App_Settings.terminalSettings.a4_printer;\r\n this.input_tote_sorting.value = App_Settings.terminalSettings.tote_sorting.toString();\r\n this.input_transport.value = App_Settings.terminalSettings.transport.toString();\r\n barcodeListener._startSymbol = App_Settings.terminalSettings.barcode_prefix ?? null;\r\n barcodeListener._endSymbol = App_Settings.terminalSettings.barcode_surfix ?? null;\r\n\r\n }\r\n\r\n async updateUserSettingsInput() {\r\n //update settings inputs\r\n //console.log(\"setting to:\" + SP.zoom().toString());\r\n this.input_interface_zoom.value = App_Settings.userSettings.interface_zoom.toString();\r\n this.input_terminal_language.value = App_Settings.userSettings.terminal_langauge.toString();\r\n this.input_finish_package_delay.value = App_Settings.userSettings.finish_package_delay.toString();\r\n this.input_voice_assistance.checked = App_Settings.userSettings.voice_assistance;\r\n this.input_auto_double_scan_stocking.checked = App_Settings.userSettings.auto_double_scan_stocking;\r\n this.input_auto_double_scan_picking.checked = App_Settings.userSettings.auto_double_scan_picking;\r\n this.input_auto_double_scan_moving.checked = App_Settings.userSettings.auto_double_scan_moving;\r\n this.input_auto_double_scan_print_label.checked = App_Settings.userSettings.auto_double_scan_print_label;\r\n this.input_auto_print_shipping_label.checked = App_Settings.userSettings.auto_print_shipping_label;\r\n this.input_autogenerate_production_batch_number.checked = App_Settings.userSettings.autogenerate_production_batch_number;\r\n this.input_print_delivery_instantly.checked = App_Settings.userSettings.print_delivery_instantly;\r\n this.input_allow_mixed_arrival.checked = App_Settings.userSettings.allow_mixed_arrival;\r\n this.input_voice_language.value = App_Settings.userSettings.voice_language.toString();\r\n this.input_voice_speed.value = App_Settings.userSettings.voice_speed.toString();\r\n this.input_voice_delay.value = App_Settings.userSettings.voice_delay.toString();\r\n this.input_voice_arrival_confrim_quantity.checked = App_Settings.userSettings.voice_arrival_confirm_quantity;\r\n this.input_voice_picklist_read_placement.checked = App_Settings.userSettings.voice_picklist_read_placement;\r\n this.input_voice_picklist_read_quantity.checked = App_Settings.userSettings.voice_picklist_read_quantity;\r\n this.input_voice_picklist_read_tote.checked = App_Settings.userSettings.voice_picklist_read_tote;\r\n this.input_voice_picklist_confirm_tote_finished.checked = App_Settings.userSettings.voice_picklist_confirm_tote_finish;\r\n this.voice_settings.style.display = App_Settings.userSettings.voice_assistance ? \"block\" : \"none\";\r\n this.input_allow_split_delivery.checked = App_Settings.userSettings.allow_split_delivery;\r\n this.input_allow_autofill_package.checked = App_Settings.userSettings.allow_autofill_package;\r\n this.input_hide_empty_pick_profiles.checked = App_Settings.userSettings.hide_empty_pick_profiles;\r\n\r\n //update globals\r\n SP.zoom(App_Settings.userSettings.interface_zoom);\r\n \r\n //change langauge\r\n if ((window as any).Current_Language as any != App_Settings.userSettings.terminal_langauge) {\r\n await SP.get(\"/ChangeCountry?country=\" + App_Settings.userSettings.terminal_langauge);\r\n location.reload();\r\n console.log(\"changing language:\", (window as any).Current_Language, App_Settings.userSettings.terminal_langauge);\r\n }\r\n }\r\n }\r\n RegisterApp(\"app_settings\", App_Settings);\r\n}","/// \r\n/// \r\n\r\n\r\nnamespace TerminalApp {\r\n\r\n\r\n\r\n //packaging cache\r\n let packagings: SP.PackagingInfo[];\r\n\r\n export class WeightController {\r\n outer = document.createElement(\"div\");\r\n container = document.createElement(\"div\");\r\n headline = document.createElement(\"div\");\r\n submit_button = document.createElement(\"div\");\r\n close_button = document.createElement(\"div\");\r\n items: WeighItem[] = [];\r\n constructor() {\r\n container.appendChild(this.outer);\r\n this.outer.classList.add(\"full_forground\", \"weight_controller_wrapper\");\r\n this.outer.appendChild(this.container);\r\n\r\n this.close_button.classList.add(\"close\");\r\n this.close_button.innerHTML = ``;\r\n this.outer.appendChild(this.close_button);\r\n\r\n this.container.append(this.headline);\r\n this.headline.classList.add(\"headline\");\r\n this.headline.innerHTML = SP.Localize(\"sentance_weigh_items\");\r\n this.container.classList.add(\"weight_controller\");\r\n\r\n this.submit_button.classList.add(\"submit\", \"grad-green\");\r\n this.submit_button.innerHTML = SP.Localize(\"word_update\");\r\n\r\n this.submit_button.addEventListener(\"click\", () => {\r\n this.submit();\r\n });\r\n\r\n\r\n this.close_button.addEventListener(\"click\", () => {\r\n this.close();\r\n });\r\n\r\n this.close();\r\n }\r\n\r\n clear() {\r\n this.items.forEach(itm => {\r\n itm.container.remove();\r\n });\r\n this.items = [];\r\n }\r\n\r\n callback: () => void;\r\n\r\n load(shipment: SP.ShipmentInfo, onlyZero: boolean, callback: () => void) {\r\n this.clear();\r\n for (let i = 0; i < shipment.lines.length; i++) {\r\n let info = shipment.lines[i].orderLine.itemInfo;\r\n let w = info.warehouseWeight > 0 ? info.warehouseWeight : info.weight;\r\n if (onlyZero && w > 0) continue;\r\n\r\n let item = new WeighItem(info);\r\n this.container.appendChild(item.container);\r\n this.items.push(item);\r\n }\r\n this.container.appendChild(this.submit_button);\r\n this.container.style.height = (shipment.lines.length * 65 + 130) + \"px\";\r\n this.callback = callback;\r\n if (this.items.length) {\r\n this.outer.style.display = \"block\";\r\n }\r\n }\r\n\r\n async submit() {\r\n let data: any = {};\r\n this.items.forEach(itm => {\r\n let weight = itm.item.weight = itm.item.warehouseWeight = parseInt(itm.input.value);\r\n data[itm.item.id] = itm.item.weight;\r\n });\r\n\r\n let result = await SP.post(\"/api/v1/item/updateweight\", data);\r\n\r\n if (result.status == 200) {\r\n this.close();\r\n if (this.callback) this.callback();\r\n }\r\n else {\r\n SP.alertX(`${result.status}: ${result.msg}`)\r\n console.log(result);\r\n }\r\n }\r\n\r\n close() {\r\n this.outer.style.display = \"none\";\r\n\r\n }\r\n }\r\n\r\n export class App_Pack_Order extends AppBase {\r\n static Instance: App_Pack_Order;\r\n tote: SP.ToteInfo = null;\r\n currentShipment: SP.ShipmentInfo = null;\r\n currentCustomer: SP.CustomerInfo = null;\r\n po_order_info = document.getElementById(\"po_order_info\");\r\n po_tote_info = document.getElementById(\"po_tote_info\");\r\n po_tote_name = document.getElementById(\"po_tote_name\");\r\n po_order_items = document.getElementById(\"po_order_items\");\r\n po_weight_button = document.getElementById(\"po_weight_button\");\r\n po_print_note_button = document.getElementById(\"po_print_note_button\");\r\n po_notification_button = document.getElementById(\"po_notification_button\");\r\n po_packages = document.getElementById(\"po_packages\");\r\n po_order_create_container = document.createElement(\"div\");\r\n po_order_finish_cancel = document.getElementById(\"po_order_finish_cancel\");\r\n po_order_finish = document.getElementById(\"po_order_finish\");\r\n po_order_cancel = document.getElementById(\"po_order_cancel\");\r\n po_status = document.getElementById(\"po_status\");\r\n po_status_value = document.getElementById(\"po_status_value\");\r\n\r\n auto_weight: SP.CheckboxDoodle;\r\n order_items: { [key: string]: OrderItem } = {};\r\n packages: Package[] = [];\r\n activePackage: Package = null;\r\n bound = false;\r\n weight_controller = new WeightController();\r\n\r\n constructor() {\r\n super(\"app_pack_order\");\r\n App_Pack_Order.Instance = this;\r\n this.po_order_create_container.classList.add(\"order_create_container\");\r\n\r\n //add package button\r\n var add_package_button = this.po_order_create_container.appendChild(document.createElement(\"div\"));\r\n add_package_button.addEventListener(\"click\", () => {\r\n\r\n var p = this.addPackage();\r\n p.calculateMetrics();\r\n p.save(true);\r\n });\r\n add_package_button.classList.add(\"add_package_button\");\r\n add_package_button.innerHTML = \"\";\r\n\r\n this.po_packages.appendChild(this.po_order_create_container);\r\n this.auto_weight = new SP.CheckboxDoodle(document.getElementById(\"po_auto_weight\") as HTMLInputElement);\r\n\r\n\r\n this.po_order_finish_cancel.addEventListener(\"click\", () => {\r\n this.cancelAutoFinish();\r\n });\r\n\r\n \r\n this.po_order_cancel.addEventListener(\"click\", async () => {\r\n if (!await SP.confirmX(\"CANCEL PACKING?\")) return;\r\n this.cancelOrder();\r\n\r\n });\r\n\r\n this.po_order_finish.addEventListener(\"click\", () => {\r\n this.finishOrder();\r\n\r\n });\r\n\r\n this.po_print_note_button.addEventListener(\"click\", () => {\r\n this.printDeliveryNote(false);\r\n });\r\n\r\n this.po_notification_button.addEventListener(\"click\", () => {\r\n this.showWarehouseNotification();\r\n });\r\n\r\n new SP.Droppable(this.po_order_items, [\"packageItem\"], async (type, d) => {\r\n if (type == \"packageItem\") {\r\n let item = d as PackageItem;\r\n await item.parent.addItem(item.item, item.order_line_id, -1);\r\n App_Pack_Order.Instance.updateCounts();\r\n }\r\n });\r\n\r\n\r\n new SP.Droppable(this.po_order_create_container, [\"packageItem\", \"orderItem\"], async (type, d) => {\r\n if (type == \"packageItem\") {\r\n let item = d as PackageItem;\r\n let nPackage = this.addPackage();\r\n nPackage.carrier_dropdown.value = item.parent.carrier_dropdown.value;\r\n await item.parent.addItem(item.item, item.order_line_id, - 1);\r\n await nPackage.addItem(item.item, item.order_line_id, 1);\r\n App_Pack_Order.Instance.updateCounts();\r\n }\r\n\r\n\r\n if (type == \"orderItem\") {\r\n let item = d as PackageItem;\r\n let nPackage = this.addPackage();\r\n await nPackage.addItem(item.item, item.order_line_id, 1);\r\n App_Pack_Order.Instance.updateCounts();\r\n }\r\n\r\n });\r\n\r\n\r\n\r\n\r\n\r\n this.po_weight_button.addEventListener(\"click\", () => {\r\n if (this.currentShipment)\r\n this.weight_controller.load(this.currentShipment, false, () => { this.updateMetrics(); });\r\n\r\n });\r\n }\r\n\r\n \r\n readyCheck() {\r\n var ready = true;\r\n this.po_order_finish.style.display = \"none\";\r\n\r\n if (this.currentShipment == null) return false;\r\n\r\n //all items in pack\r\n for (let key in this.order_items) {\r\n var item = this.order_items[key];\r\n if (item.packed_qty != item.max_qty) {\r\n ready = false\r\n break;\r\n }\r\n }\r\n\r\n //all packages printed\r\n for (let i = 0; i < this.packages.length; i++) {\r\n let item = this.packages[i];\r\n if (!item.trackingNumber) {\r\n ready = false;\r\n break;\r\n }\r\n }\r\n\r\n if (ready) {\r\n this.po_order_finish.style.display = \"block\";\r\n this.startFinishCountDown();\r\n }\r\n\r\n return ready;\r\n }\r\n\r\n\r\n autoFinish = false;\r\n async startFinishCountDown() {\r\n if (this.autoFinish) return;\r\n\r\n this.po_order_finish_cancel.style.display = \"block\";\r\n this.autoFinish = true;\r\n\r\n for (var i = 5; i > 0; i--) {\r\n document.getElementById(\"po_cancel_cooldown\").innerHTML = i.toString();\r\n console.log(\"start cooldown\", i);\r\n\r\n\r\n await SP.sleep(1000);\r\n\r\n if (!this.autoFinish || !this.allPacked) break;\r\n\r\n if (i == 1) {\r\n this.finishOrder();\r\n this.autoFinish = false;\r\n }\r\n }\r\n this.po_order_finish_cancel.style.display = \"none\";\r\n\r\n\r\n }\r\n\r\n async printDeliveryNote(save: boolean) {\r\n this.po_print_note_button.classList.add(\"disabled\");\r\n if (!App_Settings.terminalSettings.label_printer) {\r\n return SP.alertX(SP.Localize(\"sentance_please_select_printer\"));\r\n }\r\n\r\n var result = await SP.post(\"/api/v1/shipment/printnote/\" + this.currentShipment.shipmentId,\r\n {\r\n label_printer: App_Settings.terminalSettings.label_printer,\r\n etiquette_printer: App_Settings.terminalSettings.etiquette_printer,\r\n a4_printer: App_Settings.terminalSettings.a4_printer,\r\n saveShipmentTemplate: save\r\n });\r\n console.log(\"print result\", result);\r\n if (result.status != 200) {\r\n await SP.alertX(result.status + \": \" + result.msg + (result.exception ? \" - \" + result.exception : \"\"));\r\n }\r\n this.po_print_note_button.classList.remove(\"disabled\");\r\n }\r\n\r\n cancelAutoFinish() {\r\n this.autoFinish = false;\r\n this.po_order_finish_cancel.style.display = \"none\";\r\n }\r\n\r\n async finishOrder() {\r\n let result = await SP.get(\"/api/v1/shipment/finish/\" + this.currentShipment.shipmentId);\r\n if (result.status == 200) {\r\n SP.Sounds.Success.play();\r\n SP.setAllHash({ \"app\": \"app_pack_tote_list\" });\r\n }\r\n else await SP.alertX(result.status + \": \" + result.msg);\r\n }\r\n\r\n\r\n async cancelOrder() {\r\n\r\n StartLoading();\r\n let data = {\r\n shipmentId: this.currentShipment.shipmentId,\r\n force: true\r\n }\r\n\r\n let result = await SP.post(\"/API/v1/PickList/moveShipment/\", data);\r\n if (result.status == 200) {\r\n SP.Sounds.Success.play();\r\n SP.setAllHash({ \"app\": \"app_pack_tote_list\" });\r\n }\r\n else {\r\n await SP.alertX(\"Error \" + result.status + \": \" + result.msg);\r\n }\r\n StopLoading();\r\n\r\n\r\n\r\n }\r\n\r\n\r\n async onOpen() {\r\n this.reset();\r\n\r\n //preload packagings\r\n if (packagings == null) packagings = await SP.Data.Packaging.getPackagingInfos();\r\n\r\n\r\n //bind events and groups\r\n console.log(\"OPEN\");\r\n if (!this.bound) {\r\n this.bound = true;\r\n barcodeListener.on(null, this.scanBarcode, this);\r\n barcodeListener.on(\"t\", this.scanTote, this);\r\n barcodeListener.on(\"print\", this.scanPrinter, this);\r\n document.addEventListener(\"keydown\", this.inputListener);\r\n }\r\n\r\n var toteId = SP.getHash(\"tote\");\r\n var bc = SP.getHash(\"barcode\");\r\n if (toteId) this.loadTote(toteId, bc);\r\n\r\n\r\n }\r\n\r\n async onClose() {\r\n if (this.bound) {\r\n this.bound = false;\r\n barcodeListener.off(null, this.scanBarcode);\r\n barcodeListener.off(\"t\", this.scanTote);\r\n barcodeListener.off(\"print\", this.scanPrinter);\r\n document.removeEventListener(\"keydown\", this.inputListener);\r\n if (this.tote) {\r\n await hub.connection.invoke(\"releaseTote\", this.tote.toteId);\r\n }\r\n }\r\n this.reset();\r\n }\r\n\r\n spaceTime: number;\r\n spacePrintTime: number;\r\n async inputListener(e: KeyboardEvent) {\r\n var _this = App_Pack_Order.Instance;\r\n if (e.which == 32) {\r\n\r\n if (document.activeElement instanceof HTMLInputElement)\r\n return;\r\n\r\n var now = performance.now();\r\n var dif = now - _this.spaceTime;\r\n\r\n if (dif <= 1000) {\r\n\r\n //prevent spam if space is kept down!\r\n if (performance.now() - _this.spacePrintTime < 1000) {\r\n _this.spacePrintTime = performance.now();\r\n\r\n return;\r\n }\r\n\r\n\r\n _this.spaceTime = 0;\r\n _this.spacePrintTime = performance.now();\r\n _this.printAllLabels();\r\n }\r\n _this.spaceTime = now;\r\n }\r\n }\r\n\r\n async printAllLabels() {\r\n //print all labels\r\n for (let i = 0; i < this.packages.length; i++) {\r\n var pack = this.packages[i];\r\n await pack.printLabel();\r\n\r\n }\r\n }\r\n\r\n reset() {\r\n this.activePackage = null;\r\n this.packages = [];\r\n this.order_items = {};\r\n this.autoFinish = false;\r\n this.currentCustomer = null;\r\n this.currentShipment = null;\r\n this.tote = null;\r\n this.po_packages.innerHTML = \"\";\r\n this.po_order_items.innerHTML = \"\";\r\n this.po_tote_info.style.backgroundColor = \"\";\r\n this.po_tote_name.innerHTML = \"\";\r\n this.po_order_finish.style.display = \"none\";\r\n this.po_order_finish_cancel.style.display = \"none\";\r\n\r\n\r\n }\r\n\r\n async loadTote(id: string, barcodeScan: string = \"\") {\r\n \r\n\r\n //already active tote\r\n if (this.tote != null) return await SP.alertX(\"finish current tote first!\");\r\n var canLockToMe = await hub.connection.invoke(\"lockTote\", parseInt(id));\r\n\r\n //check that tote is locked to us\r\n if (!canLockToMe) {\r\n if (!await SP.confirmX(\"tote is not locked to you! do you want to force open it?\")) {\r\n TerminalApp.GetApp(\"app_pack_tote_list\").open();\r\n return;\r\n }\r\n }\r\n\r\n //get tote info\r\n var tote = await SP.Data.Tote.getToteInfo(id, false);\r\n\r\n //check if ready\r\n if (!tote.readyForPack) {\r\n return SP.alertX(\"tote not ready for packing!\");\r\n }\r\n\r\n this.tote = tote;\r\n\r\n //update customer and customer\r\n this.currentShipment = await SP.Data.Shipment.getShipmentInfo(this.tote.shipmentId);\r\n this.currentCustomer = await SP.Data.Customer.getCustomerInfo(this.currentShipment.order.customerId);\r\n\r\n //remove finished packages\r\n for (let i = this.currentShipment.packages.length - 1; i >= 0; i--) {\r\n if (this.currentShipment.packages[i].state == SP.PackageState.Packed)\r\n this.currentShipment.packages.splice(i, 1);\r\n }\r\n\r\n if (SP.getHash(\"tote\") != id) {\r\n ignoreHashChange = true;\r\n SP.setHash(\"tote\", id);\r\n }\r\n\r\n\r\n\r\n this.updateToteInfo();\r\n this.updateOrderInfo();\r\n\r\n //this.po_order_info.innerHTML = `${this.currentCustomer.customerName}
\r\n // ${this.currentShipment.order.orderNo} ${this.currentShipment.order.recipient.name}
\r\n // ${this.currentShipment.order.deliveryMethodInfo.name}`\r\n\r\n this.po_order_info.innerHTML = `${this.currentCustomer.customerName}
\r\n ${this.currentShipment.order.orderNo} ${this.currentShipment.order.recipient.name}
\r\n ${this.currentShipment.order.deliveryMethodInfo.name}`\r\n\r\n if (this.currentShipment.order.deliveryMethodInfo.warehouseNotificationPacker) {\r\n new SP.DismissInfo(\"Delivery Method Notification\", this.currentShipment.order.deliveryMethodInfo.warehouseNotificationPacker);\r\n }\r\n\r\n //adding a package if none\r\n var autofill = App_Settings.userSettings.allow_autofill_package && (this.tote.pickSettings?.autofillPackageFromTote ?? true);\r\n\r\n\r\n if (!tote.groupPick && !barcodeScan.length && autofill && !this.currentShipment.packages.length) {\r\n var package1 = this.addPackage();\r\n\r\n\r\n let auto_pick_qty: { [key: string]: number } = {};\r\n for (let i = 0; i < this.tote.picks.length; i++) {\r\n let pick = this.tote.picks[i];\r\n auto_pick_qty[pick.orderLineId] = (auto_pick_qty[pick.orderLineId] ?? 0) + pick.qty;\r\n }\r\n\r\n for (let key in auto_pick_qty) {\r\n let item = this.order_items[key];\r\n package1.addItem(item.item, item.order_line_id, auto_pick_qty[key], false);\r\n }\r\n\r\n package1.calculateMetrics();\r\n package1.save(true);\r\n }\r\n \r\n\r\n else {\r\n for (let i = 0; i < this.currentShipment.packages.length; i++) {\r\n let data = this.currentShipment.packages[i];\r\n let p = this.addPackage();\r\n p.load(data, this.currentShipment);\r\n p.calculateMetrics();\r\n }\r\n }\r\n\r\n\r\n if (this.auto_weight.checked)\r\n this.weight_controller.load(this.currentShipment, true, () => { this.updateMetrics(); });\r\n\r\n \r\n \r\n\r\n if (this.currentShipment.order.warehouseNotificationPacker) {\r\n this.showWarehouseNotification();\r\n this.po_notification_button.style.display = \"block\";\r\n }\r\n else {\r\n this.po_notification_button.style.display = \"none\";\r\n }\r\n\r\n\r\n\r\n this.updateCounts();\r\n this.readyCheck();\r\n\r\n //Scan Barcode\r\n if (!this.currentShipment.packages.length && barcodeScan.length) this.scanBarcode(barcodeScan);\r\n\r\n\r\n //Print Deliverynote\r\n if (App_Settings.userSettings.print_delivery_instantly && (\r\n this.currentShipment.order.printDeliveryNote\r\n || (this.tote.pickSettings?.forceDeliveryNote ?? false)\r\n || (this.currentShipment.order.deliveryMethodInfo?.forceDeliveryNote ?? false))) {\r\n this.printDeliveryNote(false)\r\n }\r\n\r\n this.po_packages.appendChild(this.po_order_create_container);\r\n }\r\n\r\n showWarehouseNotification() {\r\n new SP.DismissInfo(\"Warehouse Notification (OrderNo: \" + this.currentShipment.order.orderNo + \")\", this.currentShipment.order.warehouseNotificationPacker);\r\n SP.alertX(\"\");\r\n }\r\n\r\n addPackage() {\r\n var p = new Package(this.currentShipment, this.currentCustomer, this.tote);\r\n this.po_packages.appendChild(p.container);\r\n this.po_packages.appendChild(this.po_order_create_container);\r\n\r\n this.packages.push(p);\r\n this.activePackage = p;\r\n\r\n p.updateParcelTypes(true);\r\n\r\n return p;\r\n }\r\n\r\n async removePackage(p: Package) {\r\n p.container.style.display = \"none\";\r\n let result = await SP.get(\"/api/v1/package/delete/\" + p.id);\r\n if (result.status == 200) {\r\n var index = this.packages.indexOf(p);\r\n if (index != -1) {\r\n p.container.remove();\r\n this.packages.splice(index, 1);\r\n }\r\n if (this.activePackage == p) {\r\n this.activePackage = this.packages[this.packages.length - 1];\r\n }\r\n\r\n this.updateCounts();\r\n console.log(\"package removed\");\r\n\r\n }\r\n else {\r\n p.container.style.display = \"block\";\r\n await SP.alertX(result.status + \": \" + result.msg);\r\n console.log(result);\r\n }\r\n }\r\n\r\n\r\n async scanBarcode(barcode: string) {\r\n\r\n //Add Item\r\n for (let key in this.order_items) {\r\n let item = this.order_items[key];\r\n for (let code in item.item.allBarcodes) {\r\n if (code.includes(barcode) || barcode.includes(code)) {\r\n if (item.packed_qty < item.max_qty) {\r\n var p = this.getLastPackage();\r\n var qty = GetBarcodeQty(item.item.allBarcodes, code);\r\n p.addItem(item.item, item.order_line_id, qty ? qty : 1, true);\r\n this.updateCounts();\r\n SP.Sounds.Success.play();\r\n\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n\r\n var packaging = packagings.filter(p => p.barcode.indexOf(barcode) != -1)[0];\r\n if (packaging != null) {\r\n this.setPackaging(packaging);\r\n return;\r\n }\r\n SP.Sounds.Error.play();\r\n }\r\n\r\n\r\n\r\n lastPrintScan: number = 0;\r\n async scanTote(toteId: string) {\r\n\r\n if (toteId == this.tote.toteId.toString()) {\r\n if (SP.ActiveNotifications.length) return SP.Sounds.Error.play();\r\n var now = performance.now();\r\n if (App_Settings.userSettings.auto_double_scan_print_label || now - this.lastPrintScan < 500) {\r\n return this.printAllLabels();\r\n }\r\n this.lastPrintScan = now;\r\n return;\r\n }\r\n else {\r\n this.lastPrintScan = 0;\r\n if (this.autoFinish) {\r\n Talk(\"word_wait\");\r\n return;\r\n }\r\n\r\n //get tote info\r\n var tote = await SP.Data.Tote.getToteInfo(toteId, false);\r\n\r\n //check if ready\r\n if (!tote.readyForPack) return SP.Sounds.Error.play();\r\n SP.setAllHash({ \"app\": \"app_pack_order\", \"tote\": toteId });\r\n }\r\n }\r\n\r\n async scanPrinter(printerName: string) {\r\n if (SP.ActiveNotifications.length) return SP.Sounds.Error.play();\r\n selectPrinter(printerName);\r\n var now = performance.now();\r\n if (App_Settings.userSettings.auto_double_scan_print_label || now - this.lastPrintScan < 500) return this.printAllLabels();\r\n this.lastPrintScan = now;\r\n }\r\n\r\n getLastPackage() {\r\n var p = this.packages[this.packages.length - 1];\r\n\r\n if (p == null || p.trackingNumber) p = this.addPackage();\r\n return p;\r\n }\r\n\r\n setPackaging(packaging: SP.PackagingInfo) {\r\n if (this.activePackage == null)\r\n this.activePackage = this.addPackage();\r\n this.activePackage.setPackaging(packaging.id, true);\r\n }\r\n\r\n updateMetrics() {\r\n this.packages.forEach(p => {\r\n p.calculateMetrics();\r\n });\r\n }\r\n\r\n\r\n updateToteInfo() {\r\n var t = this.tote;\r\n this.po_tote_info.style.backgroundColor = t.toteColor;\r\n this.po_tote_name.innerHTML = t.toteName;\r\n }\r\n\r\n updateOrderInfo() {\r\n this.po_order_items.innerHTML = \"\";\r\n\r\n for (let i = 0; i < this.currentShipment.lines.length; i++) {\r\n var sl = this.currentShipment.lines[i];\r\n let item = new OrderItem(sl);\r\n this.order_items[sl.orderLine.id] = item;\r\n this.po_order_items.appendChild(item.container);\r\n }\r\n }\r\n\r\n allPacked: boolean = false;\r\n totalItems: number;\r\n packedItems: number;\r\n updateCounts() {\r\n this.totalItems = 0;\r\n this.packedItems = 0;\r\n\r\n for (let key in this.order_items) {\r\n var item = this.order_items[key];\r\n item.packed_qty = 0;\r\n\r\n\r\n for (let s = 0; s < this.packages.length; s++) {\r\n let p = this.packages[s];\r\n\r\n for (let key in p.items) {\r\n let packageItem = p.items[key];\r\n console.log(\"Update Counts\", packageItem, item);\r\n if (packageItem.order_line_id == item.order_line_id) {\r\n item.packed_qty += packageItem.qty;\r\n }\r\n }\r\n }\r\n\r\n this.totalItems += item.max_qty;\r\n this.packedItems += item.packed_qty;\r\n item.update();\r\n }\r\n\r\n let show = this.totalItems != this.packedItems;\r\n this.allPacked = !show;\r\n this.po_status.style.display = show ? \"block\" : \"none\";\r\n this.po_order_items.style.bottom = show ? \"194px\" : \"53px\";\r\n this.po_status_value.innerHTML = this.packedItems + \" / \" + this.totalItems;\r\n this.readyCheck();\r\n }\r\n\r\n\r\n\r\n }\r\n\r\n\r\n export class Messurement {\r\n container = document.createElement(\"div\");\r\n input = document.createElement(\"input\");\r\n\r\n constructor(icon: string, text: string, unit: string) {\r\n this.container.innerHTML += \"\";\r\n this.container.innerHTML += \"\" + text + \"\";\r\n this.container.innerHTML += \"\" + unit + \"\";\r\n this.container.classList.add(\"messurement\");\r\n this.input.type = \"number\";\r\n this.container.appendChild(this.input);\r\n }\r\n }\r\n\r\n export class Package {\r\n container = document.createElement(\"div\");\r\n contents = document.createElement(\"div\");\r\n deliveryInstructions = document.createElement(\"input\");\r\n orderNo = document.createElement(\"input\");\r\n referenceNo = document.createElement(\"input\");\r\n print_button = document.createElement(\"div\");\r\n print_note_button = document.createElement(\"div\");\r\n label_info = document.createElement(\"div\");\r\n remove_button = document.createElement(\"div\");\r\n messurement_length = new Messurement(\"/terminal/img/icon/pack_width.png\", SP.Localize(\"word_length\"), \"mm\");\r\n messurement_height = new Messurement(\"/terminal/img/icon/pack_height.png\", SP.Localize(\"word_height\"), \"mm\");\r\n messurement_width = new Messurement(\"/terminal/img/icon/pack_debth.png\", SP.Localize(\"word_width\"), \"mm\");\r\n messurement_weight = new Messurement(\"/terminal/img/icon/pack_weight.png\", SP.Localize(\"word_weight\"), \"g\");\r\n parcel_type_dropdown: SP.DropDown;\r\n carrier_dropdown: SP.DropDown;\r\n packaging_dropdown: SP.DropDown;\r\n packaging: SP.PackagingInfo = null;\r\n shipment: SP.ShipmentInfo;\r\n customer: SP.CustomerInfo;\r\n toteInfo: SP.ToteInfo;\r\n\r\n items: { [line_id: string]: PackageItem } = {};\r\n\r\n //data\r\n id: string;\r\n deliveryMethodId: string = null;\r\n parcelType: string = null;\r\n trackingNumber: string = null;\r\n width: number = 0;\r\n length: number = 0;\r\n height: number = 0;\r\n weight: number = 0;\r\n before_width: number = 0;\r\n before_length: number = 0;\r\n before_height: number = 0;\r\n before_weight: number = 0;\r\n selectedDeliveryMethod: SP.DeliveryMethod;\r\n\r\n load(pi: SP.PackageInfo, s: SP.ShipmentInfo) {\r\n console.log(\"LOADING\", pi, s);\r\n for (let i = 0; i < pi.lines.length; i++) {\r\n let l = pi.lines[i];\r\n let sl = s.lines.filter(x => x.orderLine.id == l.orderLineId)[0];\r\n try {\r\n this.addItem(sl.orderLine.itemInfo, sl.orderLine.id, l.quantity, false);\r\n } catch (error) {\r\n console.log(error);\r\n }\r\n }\r\n\r\n this.id = pi.id;\r\n this.setPackaging(pi.packagingId, false);\r\n this.setDeliveryMethod(pi.deliveryMethodId, false);\r\n console.log(\"SETTING PARCEL TYPES FOR DM:\" + this.deliveryMethodId + \" to \" + pi.parcelType);\r\n\r\n \r\n if (this.selectedDeliveryMethod.parcelTypes.filter(p => p.code == pi.parcelType))\r\n this.setParcelType(pi.parcelType, false);\r\n else\r\n this.setParcelType(null, false);\r\n\r\n this.deliveryInstructions.value = pi.deliveryInstructions;\r\n this.orderNo.value = pi.orderNo;\r\n this.referenceNo.value = pi.referenceNo;\r\n this.trackingNumber = pi.trackingNumber;\r\n this.before_width = this.width = pi.width;\r\n this.before_height = this.height = pi.height;\r\n this.before_weight = this.weight = pi.weight;\r\n this.before_length = this.length = pi.length;\r\n this.renderInputData();\r\n this.updateDeliveryMethods();\r\n this.updateLabelInfo();\r\n\r\n if (this.trackingNumber) \r\n this.print_button.classList.add(\"btn_disabled_effect\");\r\n \r\n }\r\n\r\n constructor(shipment: SP.ShipmentInfo, customer: SP.CustomerInfo, t: SP.ToteInfo) {\r\n this.shipment = shipment;\r\n this.customer = customer;\r\n this.toteInfo = t;\r\n\r\n this.container.classList.add(\"order\");\r\n\r\n //set deliverymethod from order\r\n this.deliveryMethodId = shipment.order.deliveryMethodInfo.id;\r\n var method = this.customer.deliveryMethods[this.deliveryMethodId];\r\n if (!method) method = this.customer.deliveryMethods[\"none\"];\r\n\r\n //set default parceltype if none\r\n console.log(\"Method\", method, this.deliveryMethodId, this.customer.deliveryMethods);\r\n\r\n\r\n\r\n this.parcelType = method == null ? \"\" : method.parcelTypes.filter(pt => pt.enabled)[0]?.code ?? null;\r\n this.remove_button.innerHTML = \"\";\r\n this.remove_button.classList.add(\"cancel-button\");\r\n\r\n this.remove_button.addEventListener(\"click\", async () => {\r\n await App_Pack_Order.Instance.removePackage(this)\r\n });\r\n\r\n this.container.appendChild(this.remove_button);\r\n this.container.appendChild(this.messurement_length.container);\r\n this.container.appendChild(this.messurement_height.container);\r\n this.container.appendChild(this.messurement_width.container);\r\n this.container.appendChild(this.messurement_weight.container);\r\n\r\n\r\n var enterSubmit = (e: KeyboardEvent) => {\r\n if (e.keyCode == 13) {\r\n SP.blurActive();\r\n }\r\n };\r\n\r\n var saveMetrics = () => {\r\n this.saveMetricsFromInputs();\r\n this.updateDeliveryMethods();\r\n this.save(false);\r\n };\r\n\r\n this.messurement_length.input.addEventListener(\"keydown\", (e) => { enterSubmit(e); });\r\n this.messurement_height.input.addEventListener(\"keydown\", (e) => { enterSubmit(e); });\r\n this.messurement_width.input.addEventListener(\"keydown\", (e) => { enterSubmit(e); });\r\n this.messurement_weight.input.addEventListener(\"keydown\", (e) => { enterSubmit(e); });\r\n this.messurement_length.input.addEventListener(\"change\", () => { saveMetrics(); });\r\n this.messurement_height.input.addEventListener(\"change\", () => { saveMetrics(); });\r\n this.messurement_width.input.addEventListener(\"change\", () => { saveMetrics(); });\r\n this.messurement_weight.input.addEventListener(\"change\", () => { saveMetrics(); });\r\n\r\n\r\n this.deliveryInstructions.addEventListener(\"keydown\", (e) => { enterSubmit(e); });\r\n this.deliveryInstructions.addEventListener(\"change\", () => { this.save(false); });\r\n this.orderNo.addEventListener(\"keydown\", (e) => { enterSubmit(e); });\r\n this.orderNo.addEventListener(\"change\", () => { this.save(false); });\r\n this.referenceNo.addEventListener(\"keydown\", (e) => { enterSubmit(e); });\r\n this.referenceNo.addEventListener(\"change\", () => { this.save(false); });\r\n\r\n var packagingContainer = this.container.appendChild(document.createElement(\"div\"));\r\n var carrierContainer = this.container.appendChild(document.createElement(\"div\"));\r\n var parcelTypeContainer = this.container.appendChild(document.createElement(\"div\"));\r\n carrierContainer.setAttribute(\"style\", \"position:absolute; left:20px; width:69%\");\r\n parcelTypeContainer.setAttribute(\"style\", \"position:absolute; right:20px; width:20%\");\r\n\r\n\r\n this.packaging_dropdown = new SP.DropDown(packagingContainer, \"/terminal/img/icon/open-box.png\");\r\n this.carrier_dropdown = new SP.DropDown(carrierContainer, \"/terminal/img/icon/truck.png\");\r\n this.parcel_type_dropdown = new SP.DropDown(parcelTypeContainer, null);\r\n\r\n\r\n this.packaging_dropdown.add(\"\", \"none\", true);\r\n for (let i = 0; i < packagings.length; i++) {\r\n let p = packagings[i];\r\n this.packaging_dropdown.add(p.id, p.name, p.active);\r\n }\r\n\r\n for (let key in customer.deliveryMethods) {\r\n let m = customer.deliveryMethods[key];\r\n if (m.isReturn) continue;\r\n if (m.orderSources.length && !m.orderSources.includes(shipment.order.orderSource)) continue;\r\n\r\n this.carrier_dropdown.add(m.id, m.name, true);\r\n }\r\n\r\n this.packaging_dropdown.onChange((val: string) => {\r\n this.setPackaging(val, true);\r\n });\r\n\r\n this.updateParcelTypes(false);\r\n\r\n this.parcel_type_dropdown.onChange((key: string) => {\r\n this.setParcelType(key, true);\r\n });\r\n\r\n this.carrier_dropdown.onChange((key: string) => {\r\n this.setDeliveryMethod(key, true);\r\n });\r\n\r\n this.contents.classList.add(\"contents\");\r\n this.contents.innerHTML = \"\" + SP.Localize(\"word_contents\") + \"\";\r\n this.container.appendChild(this.contents);\r\n\r\n var instructionContainer = this.container.appendChild(document.createElement(\"div\"));\r\n instructionContainer.classList.add(\"package_text_input\", \"pi_delivery_instructions\");\r\n instructionContainer.appendChild(this.deliveryInstructions);\r\n this.deliveryInstructions.value = this.shipment.order.deliveryInstructions;\r\n var instructionsText = instructionContainer.appendChild(document.createElement(\"span\"));\r\n instructionsText.textContent = \"Delivery instructions\";\r\n\r\n var orderNoContainer = this.container.appendChild(document.createElement(\"div\"));\r\n orderNoContainer.classList.add(\"package_text_input\",\"pi_order_no\");\r\n orderNoContainer.appendChild(this.orderNo);\r\n this.orderNo.value = this.shipment.order.orderNo;\r\n if (this.toteInfo.pickSettings?.appendToteNameToOrderNo ?? false) this.orderNo.value += \" (\" + this.toteInfo.toteName + \")\";\r\n var orderNoText = orderNoContainer.appendChild(document.createElement(\"span\"));\r\n orderNoText.textContent = \"Order\";\r\n\r\n\r\n\r\n var referenceNoContainer = this.container.appendChild(document.createElement(\"div\"));\r\n referenceNoContainer.classList.add(\"package_text_input\",\"pi_reference_no\");\r\n referenceNoContainer.appendChild(this.referenceNo);\r\n this.referenceNo.value = this.shipment.order.referenceNo;\r\n if (this.toteInfo.pickSettings?.appendToteNameToReference ?? false) this.referenceNo.value += \" (\" + this.toteInfo.toteName + \")\";\r\n var referenceNoText = referenceNoContainer.appendChild(document.createElement(\"span\"));\r\n referenceNoText.textContent = \"Reference\";\r\n\r\n this.print_button.classList.add(\"grad-green\", \"button\", \"print_button\");\r\n this.print_button.innerHTML = SP.Localize(\"sentance_print_label\");\r\n this.container.appendChild(this.print_button);\r\n\r\n this.print_note_button.classList.add(\"button\", \"label\", \"note\");\r\n this.print_note_button.innerHTML = \"🧾\";\r\n this.container.appendChild(this.print_note_button);\r\n\r\n this.label_info.classList.add(\"label_info\");\r\n this.container.appendChild(this.label_info);\r\n\r\n this.print_button.addEventListener(\"click\", () => {\r\n this.save(false);\r\n this.printLabel();\r\n });\r\n\r\n this.print_note_button.addEventListener(\"click\", async () => {\r\n this.save(false);\r\n this.printDeliveryNote();\r\n });\r\n\r\n new SP.Droppable(this.contents, [\"packageItem\", \"orderItem\"], async (type, d) => {\r\n if (type == \"packageItem\") {\r\n let item = d as PackageItem;\r\n if (item.parent == this) return;\r\n item.parent.addItem(item.item, item.order_line_id, -1);\r\n this.addItem(item.item, item.order_line_id, 1);\r\n App_Pack_Order.Instance.updateCounts();\r\n }\r\n\r\n if (type == \"orderItem\") {\r\n let item = d as OrderItem;\r\n this.addItem(item.item, item.order_line_id, 1);\r\n App_Pack_Order.Instance.updateCounts();\r\n }\r\n });\r\n\r\n this.updateLabelInfo();\r\n\r\n\r\n }\r\n\r\n\r\n async addItem(item: SP.ItemInfo, order_line_id: string, qty: number, save: boolean = true) {\r\n if (qty == 0) return;\r\n var current = this.items[order_line_id];\r\n if (!current) {\r\n current = this.items[order_line_id] = new PackageItem(item, 0, order_line_id, this);\r\n this.contents.appendChild(current.container);\r\n }\r\n\r\n current.qty += qty;\r\n\r\n if (current.qty <= 0) {\r\n current.container.remove();\r\n delete this.items[order_line_id];\r\n\r\n }\r\n else {\r\n current.update();\r\n }\r\n\r\n\r\n if (Object.keys(this.items).length === 0) {\r\n await App_Pack_Order.Instance.removePackage(this);\r\n return;\r\n }\r\n\r\n if (save) {\r\n this.calculateMetrics();\r\n }\r\n\r\n //rollback if not save\r\n if (save && !await this.save(true)) {\r\n await this.addItem(item, order_line_id, -qty, false);\r\n this.calculateMetrics();\r\n }\r\n }\r\n\r\n async save(saveLines: boolean) {\r\n\r\n let lines: { [line_id: string]: number } = null;\r\n let postData = {\r\n id: this.id,\r\n orderId: this.shipment.order.orderId,\r\n shipmentId: this.shipment.shipmentId,\r\n fulfillmentLocation: this.toteInfo.pickSettings.fulfillmentLocation,\r\n width: this.width,\r\n length: this.length,\r\n height: this.height,\r\n weight: this.weight,\r\n deliveryMethodId: this.deliveryMethodId,\r\n parcelType: this.parcelType,\r\n packagingId: this.packaging?.id ?? SP.Guid.Empty,\r\n deliveryInstructions: this.deliveryInstructions.value,\r\n orderNo: this.orderNo.value,\r\n referenceNo: this.referenceNo.value,\r\n lines: lines\r\n }\r\n console.log(postData);\r\n\r\n\r\n\r\n if (saveLines) {\r\n postData.lines = {};\r\n for (let l_id in this.items) {\r\n let item = this.items[l_id];\r\n postData.lines[l_id] = item.qty;\r\n }\r\n }\r\n\r\n var result: any = null;\r\n if (!this.id) result = await SP.post(\"/api/v1/package/create\", postData);\r\n else result = await SP.post(\"/api/v1/package/update\", postData);\r\n\r\n if (result.status == 200) {\r\n if (result.packageId) this.id = result.packageId;\r\n App_Pack_Order.Instance.readyCheck();\r\n }\r\n else {\r\n await SP.alertX(result.status + \": \" + result.msg);\r\n }\r\n\r\n\r\n return true;\r\n }\r\n\r\n\r\n async printLabel() {\r\n console.log(\"ParcelType:\", this.parcelType);\r\n if (this.parcelType == null) {\r\n SP.alertX(SP.Localize(\"text_please_select_parcel_type\"));\r\n return;\r\n\r\n }\r\n\r\n\r\n if (this.trackingNumber) {\r\n if (!await SP.confirmX(SP.Localize(\"text_confirm_double_label_print\"))) return;\r\n }\r\n\r\n if (!App_Pack_Order.Instance.allPacked) {\r\n if (App_Pack_Order.Instance.packedItems > App_Pack_Order.Instance.totalItems && !await SP.confirmX(SP.Localize(\"text_to_many_items_packed\"))) return;\r\n if (!await SP.confirmX(SP.Localize(\"text_not_all_items_packed\"))) return;\r\n }\r\n\r\n this.print_button.classList.add(\"btn_disabled\");\r\n this.print_button.classList.add(\"btn_disabled_effect\");\r\n if (!App_Settings.terminalSettings.label_printer) {\r\n SP.alertX(SP.Localize(\"sentance_please_select_printer\"));\r\n return;\r\n }\r\n\r\n\r\n var result = await SP.get(\"/api/v1/package/print/\" + this.id + \"?label_printer=\" + App_Settings.terminalSettings.label_printer + \"&etiquette_printer=\" + App_Settings.terminalSettings.etiquette_printer + \"&a4_printer=\" + App_Settings.terminalSettings.a4_printer);\r\n console.log(\"print result\", result);\r\n if (result.status == 200) {\r\n this.trackingNumber = result.trackingNumber;\r\n this.updateLabelInfo();\r\n var last = App_Pack_Order.Instance.readyCheck();\r\n console.log(\"updating label with\", result.trackingNumber);\r\n\r\n\r\n //Print documents\r\n var result: any = await SP.post(\"/api/v1/package/printDocuments/\" + this.id, {\r\n label_printer: App_Settings.terminalSettings.label_printer,\r\n etiquette_printer: App_Settings.terminalSettings.etiquette_printer,\r\n a4_printer: App_Settings.terminalSettings.a4_printer,\r\n print_order_documents: last\r\n });\r\n\r\n //Print Deliverynote\r\n if (last && !App_Settings.userSettings.print_delivery_instantly && (App_Pack_Order.Instance.currentShipment.order.printDeliveryNote\r\n || (App_Pack_Order.Instance.tote.pickSettings?.forceDeliveryNote ?? false)\r\n || (App_Pack_Order.Instance.currentShipment.order.deliveryMethodInfo?.forceDeliveryNote ?? false))) {\r\n App_Pack_Order.Instance.printDeliveryNote(true)\r\n }\r\n }\r\n else {\r\n await SP.alertX(result.status + \": \" + result.msg + (result.exception ? \" - \" + result.exception : \"\"));\r\n }\r\n this.print_button.classList.remove(\"btn_disabled\");\r\n }\r\n\r\n async printDeliveryNote() {\r\n this.print_note_button.classList.add(\"disabled\");\r\n if (!App_Settings.terminalSettings.label_printer) {\r\n SP.alertX(SP.Localize(\"sentance_please_select_printer\"));\r\n return;\r\n }\r\n\r\n var result = await SP.get(\"/api/v1/package/printnote/\" + this.id + \"?label_printer=\" + App_Settings.terminalSettings.label_printer + \"&etiquette_printer=\" + App_Settings.terminalSettings.etiquette_printer + \"&a4_printer=\" + App_Settings.terminalSettings.a4_printer);\r\n console.log(\"print result\", result);\r\n if (result.status != 200) {\r\n SP.alertX(result.status + \": \" + result.msg + (result.exception ? \" - \" + result.exception : \"\"));\r\n }\r\n this.print_note_button.classList.remove(\"disabled\"); \r\n }\r\n\r\n\r\n setParcelType(key: string, save: boolean) {\r\n console.log(\"setparceltype:\" + key);\r\n this.parcelType = key;\r\n this.parcel_type_dropdown.value = key;\r\n if (save) this.save(false);\r\n }\r\n\r\n setDeliveryMethod(id: string, save: boolean) {\r\n let dm = this.customer.deliveryMethods[id];\r\n console.log(\"setting deliverymethod to\", dm);\r\n this.selectedDeliveryMethod = dm;\r\n this.deliveryMethodId = id;\r\n this.carrier_dropdown.value = id;\r\n\r\n\r\n this.updateParcelTypes(true);\r\n\r\n if (save) this.save(false);\r\n }\r\n\r\n updateParcelTypes(reset_to_first:boolean) {\r\n console.log(\"Updating parcel types with method: \" + this.deliveryMethodId);\r\n this.parcel_type_dropdown.clear();\r\n var method = this.customer.deliveryMethods[this.deliveryMethodId];\r\n var d\r\n\r\n var parcelTypes = method != null ? method.parcelTypes.filter(pt => pt.enabled) : [];\r\n\r\n console.log(\"SETTINGS PARCELTYPES\", parcelTypes);\r\n\r\n var def = parcelTypes[0]?.code ?? null;\r\n\r\n if (parcelTypes.length > 1) {\r\n this.parcel_type_dropdown.add(null, \"Select Type\".toString(), true);\r\n def = null;\r\n \r\n }\r\n parcelTypes.forEach(pt => { this.parcel_type_dropdown.add(pt.code, pt.name, true); });\r\n\r\n if (reset_to_first) this.setParcelType(def, false);\r\n console.log(\"Updating Parcel Types\");\r\n };\r\n\r\n\r\n setPackaging(val: string, save: boolean) {\r\n\r\n var id = val ?? SP.Guid.Empty;\r\n let p = packagings.filter(p => p.id == id)[0];\r\n console.log(\"setting packaging to\", p);\r\n\r\n this.packaging = p;\r\n this.packaging_dropdown.value = id;\r\n this.calculateMetrics();\r\n\r\n if (save) this.save(false);\r\n }\r\n\r\n calculateMetrics() {\r\n this.before_height = this.height;\r\n this.before_length = this.length;\r\n this.before_weight = this.weight;\r\n this.before_width = this.width;\r\n\r\n let weight = 0;\r\n let height = 0;\r\n let length = 0;\r\n let width = 0;\r\n\r\n if (this.packaging != null) {\r\n weight += this.packaging.weight;\r\n height = this.packaging.height;\r\n length = this.packaging.width;\r\n width = this.packaging.debth;\r\n }\r\n\r\n for (let line_id in this.items) {\r\n let item = this.items[line_id];\r\n let w = item.item.warehouseWeight ? item.item.warehouseWeight : item.item.weight;\r\n weight += w * item.qty;\r\n }\r\n\r\n this.width = width;\r\n this.length = length;\r\n this.height = height;\r\n this.weight = weight;\r\n\r\n this.updateDeliveryMethods();\r\n this.renderInputData();\r\n }\r\n\r\n\r\n renderInputData() {\r\n this.messurement_weight.input.value = this.weight.toString();\r\n this.messurement_height.input.value = this.height.toString();\r\n this.messurement_length.input.value = this.length.toString();\r\n this.messurement_width.input.value = this.width.toString();\r\n this.carrier_dropdown.value = this.deliveryMethodId;\r\n this.packaging_dropdown.value = this.packaging?.id ?? \"\";\r\n }\r\n\r\n saveMetricsFromInputs() {\r\n this.length = parseInt(this.messurement_length.input.value);\r\n this.height = parseInt(this.messurement_height.input.value);\r\n this.width = parseInt(this.messurement_width.input.value);\r\n this.weight = parseInt(this.messurement_weight.input.value);\r\n }\r\n\r\n \r\n updateDeliveryMethods() {\r\n var dimensions = [this.length, this.height, this.width].sort((a, b) => (a < b ? -1 : a > b ? 1 : 0));\r\n var length = dimensions[2];\r\n var circumferenceLength = dimensions[0] * 2 + dimensions[1] * 2 + dimensions[2];\r\n\r\n\r\n\r\n var weight = this.weight;\r\n\r\n\r\n\r\n for (let key in this.customer.deliveryMethods) {\r\n let m = this.customer.deliveryMethods[key];\r\n let dd = this.carrier_dropdown.item_dictionary[m.id];\r\n\r\n if (!dd) continue;\r\n\r\n\r\n var destinationCountry = this.shipment.order.recipient.country.toUpperCase();\r\n var localPrices = m.prices[destinationCountry]\r\n\r\n if (!localPrices) {\r\n dd.enabled = false;\r\n continue;\r\n }\r\n\r\n\r\n \r\n\r\n let remaining = localPrices.filter(l =>\r\n (l.maxCircumferenceLength == 0 || l.maxCircumferenceLength >= circumferenceLength) &&\r\n (l.maxLength == 0 || l.maxLength >= length) &&\r\n (l.maxWeight == 0 || l.maxWeight >= weight)\r\n );\r\n\r\n\r\n if (!remaining.length) {\r\n dd.enabled = false;\r\n continue;\r\n }\r\n\r\n dd.enabled = true;\r\n\r\n }\r\n\r\n }\r\n\r\n updateLabelInfo() {\r\n if (!this.trackingNumber) {\r\n this.label_info.innerHTML = SP.Localize(\"sentance_no_label_generated\") + \"!\";\r\n }\r\n else {\r\n this.label_info.innerHTML = this.trackingNumber;\r\n }\r\n\r\n }\r\n\r\n }\r\n\r\n export class ItemBase {\r\n container = document.createElement(\"div\");\r\n\r\n\r\n item: SP.ItemInfo;\r\n\r\n constructor(item: SP.ItemInfo) {\r\n this.item = item;\r\n\r\n this.container.classList.add(\"order_item\");\r\n this.container.innerHTML += `
`;\r\n this.container.innerHTML += `
${item.sku} - ${(item.manufacturerName + item.modelNo).trim()}`;\r\n this.container.innerHTML += `
${item.description}
`;\r\n this.container.innerHTML += `
${item.barcodes.join(\", \")}
`;\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n export class OrderItem extends ItemBase {\r\n label = document.createElement(\"div\");\r\n label_current = document.createElement(\"span\");\r\n label_max = document.createElement(\"span\");\r\n order_line_id = \"\";\r\n packed_qty = 0;\r\n max_qty = 0;\r\n\r\n constructor(sl: SP.ShipmentLineInfo) {\r\n super(sl.orderLine.itemInfo);\r\n this.max_qty = sl.qty;\r\n this.order_line_id = sl.orderLine.id;\r\n this.packed_qty = 0;\r\n\r\n this.container.appendChild(this.label);\r\n this.label.classList.add(\"label\", \"label-warning\");\r\n\r\n this.label.appendChild(this.label_current);\r\n this.label_current.classList.add(\"current\");\r\n this.label.appendChild(this.label_max);\r\n\r\n this.label_current.innerHTML = \"0\";\r\n this.label_max.innerHTML = \" / \" + this.max_qty;\r\n \r\n\r\n let dblClick = async () => {\r\n console.log(\"dbl\");\r\n if (!App_Pack_Order.Instance.activePackage)\r\n App_Pack_Order.Instance.addPackage();\r\n await App_Pack_Order.Instance.activePackage.addItem(this.item, this.order_line_id, this.max_qty - this.packed_qty, true);\r\n App_Pack_Order.Instance.updateCounts();\r\n };\r\n \r\n\r\n if (sl.orderLine.itemInfo.warehouseNotificationPacker) {\r\n var button = document.createElement(\"div\");\r\n button.innerHTML = \"ℹ️\";\r\n button.classList.add(\"notification-button\");\r\n button.addEventListener(\"click\", () => {\r\n new SP.DismissInfo(\"Warehouse Notification (Item:\" + sl.orderLine.itemInfo.sku + \")\", sl.orderLine.itemInfo.warehouseNotificationPacker);\r\n });\r\n button.click();\r\n this.container.appendChild(button);\r\n }\r\n\r\n\r\n this.container.addEventListener(\"dblclick\", dblClick);\r\n\r\n\r\n //let touched: number = 0;\r\n //this.container.addEventListener(\"touchstart\", async() => {\r\n // let now = performance.now();\r\n // if (now - touched < 400) {\r\n // touched = 0;\r\n // console.log(\"DoucbleClick touch\");\r\n // await dblClick();\r\n // }\r\n // else\r\n // touched = now;\r\n\r\n //});\r\n\r\n new SP.Draggable(this.container, \"orderItem\", this);\r\n\r\n }\r\n\r\n update() {\r\n\r\n\r\n this.label_current.innerHTML = this.packed_qty.toString();\r\n\r\n if (this.packed_qty == this.max_qty) {\r\n this.label.classList.remove(\"label-warning\");\r\n }\r\n else {\r\n this.label.classList.add(\"label-warning\");\r\n\r\n }\r\n }\r\n }\r\n\r\n export class PackageItem extends ItemBase {\r\n label = document.createElement(\"div\");\r\n qty = 0;\r\n parent: Package;\r\n order_line_id: string;\r\n\r\n constructor(item: SP.ItemInfo, qty: number, order_line_id: string, parent: Package) {\r\n super(item);\r\n this.qty = qty;\r\n this.order_line_id = order_line_id;\r\n this.parent = parent;\r\n this.container.appendChild(this.label);\r\n this.label.classList.add(\"label\");\r\n this.label.innerHTML = this.qty.toString();\r\n\r\n let deleteButton = this.container.appendChild(document.createElement(\"div\"));\r\n deleteButton.innerHTML = '';\r\n deleteButton.classList.add(\"delete\");\r\n\r\n let deleteFn = async () => {\r\n await this.parent.addItem(this.item, this.order_line_id, - this.qty, true);\r\n App_Pack_Order.Instance.updateCounts();\r\n };\r\n\r\n deleteButton.addEventListener(\"click\", deleteFn);\r\n new SP.Draggable(this.container, \"packageItem\", this);\r\n\r\n }\r\n\r\n update() {\r\n this.label.innerHTML = this.qty.toString();\r\n }\r\n }\r\n\r\n export class WeighItem extends ItemBase {\r\n input = document.createElement(\"input\");\r\n unit = document.createElement(\"span\");\r\n constructor(item: SP.ItemInfo) {\r\n super(item);\r\n let weight = item.warehouseWeight ? item.warehouseWeight : item.weight;\r\n this.input.type = \"number\";\r\n this.input.classList.add(\"weight_input\");\r\n this.unit.classList.add(\"weight_unit\");\r\n this.unit.innerHTML = \"g\";\r\n this.input.value = weight.toString();\r\n this.container.appendChild(this.input);\r\n this.container.appendChild(this.unit);\r\n this.input.onfocus = () => {\r\n this.input.select();\r\n };\r\n\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n RegisterApp(\"app_pack_order\", App_Pack_Order);\r\n\r\n}","/// \r\n/// \r\n/// \r\n\r\nnamespace TerminalApp {\r\n //packaging cache\r\n let packagings: SP.PackagingInfo[];\r\n\r\n\r\n interface IOrderPackLineInfo {\r\n totes: SP.ToteInfo[];\r\n orderLineId: string;\r\n shipmentLineData: SP.ShipmentLineData[];\r\n itemInfo: SP.ItemInfo;\r\n quantity: number;\r\n max: number;\r\n updateAmount: (value: number, set: boolean) => void;\r\n\r\n }\r\n\r\n class SerialNumberModel {\r\n Id: string;\r\n itemInfo: SP.ItemInfo;\r\n ShipmentLineData: SP.ShipmentLineData;\r\n }\r\n \r\n export class App_Fast_Pack_Order extends AppBase {\r\n static Instance: App_Fast_Pack_Order;\r\n tote: SP.ToteInfo = null;\r\n shipment: SP.ShipmentInfo = null;\r\n customer: SP.CustomerInfo = null;\r\n editPackage: SP.PackageInfo = null;\r\n weight_controller = new WeightController();\r\n delivery_method_picker = new PickAssistant(SP.Localize(\"sentance_select_delivery_method\"));\r\n parcel_type_picker = new KeyValuePickAssistant(SP.Localize(\"sentance_select_parcel_type\"));\r\n kvp_picker = new KeyValuePickAssistant(\"\");\r\n packaging_picker = new PickAssistant(SP.Localize(\"sentance_select_packaging\"));\r\n fpo_tote_info = document.getElementById(\"fpo_tote_info\");\r\n fpo_tote_name = document.getElementById(\"fpo_tote_name\");\r\n fpo_print_note_button = document.getElementById(\"fpo_print_note_button\");\r\n fpo_serialnumber_button = document.getElementById(\"fpo_serialnumber_button\");\r\n fpo_weight_icon = document.getElementById(\"fpo_weight_icon\");\r\n fpo_order_info = document.getElementById(\"fpo_order_info\");\r\n fpo_label_form = document.getElementById(\"fpo_label_form\");\r\n fpo_finish = document.getElementById(\"fpo_finish\");\r\n fpo_sorting = document.getElementById(\"fpo_sorting\");\r\n fpo_sorting_list = document.getElementById(\"fpo_sorting_list\");\r\n fpo_finish_order = document.getElementById(\"fpo_finish_order\");\r\n fpo_cancel_countdown = document.getElementById(\"fpo_cancel_countdown\");\r\n fpo_countdown = document.getElementById(\"fpo_countdown\");\r\n fpo_warehousenotification_button = document.getElementById(\"fpo_warehousenotification_button\");\r\n fpo_items = document.getElementById(\"fpo_items\");\r\n fpo_labels = document.getElementById(\"fpo_labels\");\r\n fpo_delivery_method = document.getElementById(\"fpo_delivery_method\") as HTMLInputElement;\r\n fpo_packaging = document.getElementById(\"fpo_packaging\") as HTMLInputElement;\r\n fpo_parcel_type = document.getElementById(\"fpo_parcel_type\") as HTMLInputElement;\r\n fpo_reference = document.getElementById(\"fpo_reference\") as HTMLInputElement;\r\n fpo_order = document.getElementById(\"fpo_order\") as HTMLInputElement;\r\n fpo_delivery_instructions = document.getElementById(\"fpo_delivery_instructions\") as HTMLInputElement;\r\n fpo_length = document.getElementById(\"fpo_length\") as HTMLInputElement;\r\n fpo_height = document.getElementById(\"fpo_height\") as HTMLInputElement;\r\n fpo_width = document.getElementById(\"fpo_width\") as HTMLInputElement;\r\n fpo_weight = document.getElementById(\"fpo_weight\") as HTMLInputElement;\r\n fpo_create_label = document.getElementById(\"fpo_create_label\");\r\n fpo_order_cancel = document.getElementById(\"fpo_order_cancel\");\r\n fpo_addons = document.getElementById(\"fpo_addons\");\r\n fpo_reset_all = document.getElementById(\"fpo_reset_all\");\r\n fpo_select_all = document.getElementById(\"fpo_select_all\");\r\n fpo_reset_select_buttons = document.getElementById(\"fpo_reset_select_buttons\");\r\n fpo_parameters = document.getElementById(\"fpo_parameters\");\r\n selected_delivery_method: string = null;\r\n selected_parcel_type: string = \"\";\r\n selected_packaging: SP.PackagingInfo;\r\n autofill: boolean;\r\n height: number;\r\n width: number;\r\n length: number;\r\n weight: number;\r\n bound = false;\r\n allPacked: boolean;\r\n allSorted: boolean;\r\n\r\n\r\n timeleft: number;\r\n\r\n serialNumberForm: SerialNumberAssistant;\r\n\r\n serialNumberArray: SerialNumberModel[] = [];\r\n\r\n items: { [orderLineId: string]: IOrderPackLineInfo } = {};\r\n\r\n constructor() {\r\n super(\"app_fast_pack_order\");\r\n\r\n this.serialNumberForm = new SerialNumberAssistant();\r\n this.container.appendChild(this.serialNumberForm.container);\r\n\r\n App_Fast_Pack_Order.Instance = this;\r\n this.fpo_warehousenotification_button.addEventListener(\"click\", () => {\r\n this.fpo_warehousenotification_button.style.display = \"block\";\r\n new SP.DismissInfo(\"Warehouse Notification (OrderNo: \" + this.shipment.order.orderNo + \")\", this.shipment.order.warehouseNotificationPacker);\r\n });\r\n this.fpo_print_note_button.addEventListener(\"click\", () => { this.printDeliveryNote(false); });\r\n\r\n this.fpo_serialnumber_button.addEventListener(\"click\", () => {\r\n this.serialNumberForm.open(this.serialNumberArray, this.shipment.shipmentId, () => {\r\n this.reloadView();\r\n });\r\n });\r\n\r\n this.fpo_weight_icon.style.pointerEvents = \"all\";\r\n this.fpo_weight_icon.addEventListener(\"click\", () => {\r\n this.weight_controller.load(this.shipment, false, () => {\r\n this.reloadView();\r\n });\r\n });\r\n this.container.appendChild(this.delivery_method_picker.container);\r\n this.container.appendChild(this.parcel_type_picker.container);\r\n this.container.appendChild(this.kvp_picker.container);\r\n this.container.appendChild(this.packaging_picker.container);\r\n\r\n this.fpo_delivery_method.addEventListener(\"focus\", () => {\r\n this.delivery_method_picker.open(dm => { this.setDeliveryMethod(dm); SP.Sounds.Click.play(); });\r\n this.fpo_delivery_method.blur();\r\n });\r\n\r\n this.fpo_parcel_type.addEventListener(\"focus\", () => {\r\n this.parcel_type_picker.open(pt => { this.setParcelType(pt.key, pt.value); SP.Sounds.Click.play(); });\r\n this.fpo_parcel_type.blur();\r\n });\r\n\r\n this.fpo_packaging.addEventListener(\"focus\", () => {\r\n this.packaging_picker.open(pt => { this.setPackaging(pt); SP.Sounds.Click.play(); });\r\n this.fpo_packaging.blur();\r\n });\r\n\r\n this.container.querySelectorAll(\"input:not(.noselect)\").forEach(elm => {\r\n elm.addEventListener(\"focus\", () => { (elm as HTMLInputElement).select() });\r\n });\r\n\r\n this.fpo_weight.addEventListener(\"change\", () => {\r\n this.weight = parseInt(this.fpo_weight.value);\r\n this.updateDeliveryMethods()\r\n });\r\n\r\n this.fpo_width.addEventListener(\"change\", () => {\r\n this.width = parseInt(this.fpo_width.value);\r\n this.updateDeliveryMethods()\r\n });\r\n\r\n this.fpo_height.addEventListener(\"change\", () => {\r\n this.height = parseInt(this.fpo_height.value);\r\n this.updateDeliveryMethods()\r\n });\r\n\r\n this.fpo_length.addEventListener(\"change\", () => {\r\n this.length = parseInt(this.fpo_length.value);\r\n this.updateDeliveryMethods()\r\n });\r\n\r\n var printing = false; //prevent double click\r\n\r\n this.fpo_create_label.addEventListener(\"click\", async () => {\r\n if (printing) return;\r\n printing = true;\r\n StartLoading();\r\n this.fpo_create_label.classList.add(\"btn_disabled\");\r\n await this.printShippingLabel();\r\n SP.Sounds.Click.play();\r\n this.fpo_create_label.classList.remove(\"btn_disabled\");\r\n StopLoading();\r\n printing = false;\r\n });\r\n\r\n this.fpo_cancel_countdown.addEventListener(\"click\", () => {\r\n this.fpo_countdown.innerHTML = ``\r\n this.fpo_cancel_countdown.style.display = \"none\";\r\n this.timeleft = 1000;\r\n SP.Sounds.Click.play();\r\n });\r\n\r\n this.fpo_finish_order.addEventListener(\"click\", async () => {\r\n StartLoading();\r\n this.fpo_finish_order.classList.add(\"btn_disabled\");\r\n this.timeleft = 1000;\r\n await this.finishOrder();\r\n this.fpo_finish_order.classList.remove(\"btn_disabled\");\r\n StopLoading();\r\n });\r\n\r\n this.fpo_order_cancel.addEventListener(\"click\", async () => {\r\n if (!await SP.confirmX(SP.Localize(\"text_cancel_packing\"))) return;\r\n StartLoading();\r\n this.timeleft = 1000;\r\n await this.cancelShipment();\r\n StopLoading();\r\n });\r\n\r\n this.fpo_reset_all.addEventListener(\"click\", () => {\r\n for (var key in this.items) {\r\n console.log(this.items[key]);\r\n if (this.items[key]?.updateAmount)\r\n this.items[key]?.updateAmount(0, true);\r\n }\r\n SP.Sounds.Click.play();\r\n\r\n });\r\n\r\n this.fpo_select_all.addEventListener(\"click\", () => {\r\n for (var key in this.items) {\r\n console.log(this.items[key]);\r\n if (this.items[key]?.updateAmount)\r\n this.items[key]?.updateAmount(this.items[key].max, true);\r\n }\r\n SP.Sounds.Click.play();\r\n\r\n });\r\n }\r\n\r\n async finishOrder() {\r\n let result = await SP.get(\"/api/v1/shipment/finish/\" + this.shipment.shipmentId);\r\n if (result.status == 200) {\r\n SP.Sounds.Success.play();\r\n SP.setAllHash({ \"app\": \"app_pack_tote_list\" });\r\n }\r\n else await SP.alertX(result.status + \": \" + result.msg);\r\n }\r\n\r\n async cancelShipment() {\r\n StartLoading();\r\n let data = {\r\n shipmentId: this.shipment.shipmentId,\r\n force: true\r\n }\r\n\r\n let result = await SP.post(\"/API/v1/PickList/moveShipment/\", data);\r\n if (result.status == 200) {\r\n SP.Sounds.Success.play();\r\n SP.setAllHash({ \"app\": \"app_pack_tote_list\" });\r\n }\r\n else {\r\n SP.alertX(\"Error \" + result.status + \": \" + result.msg);\r\n }\r\n StopLoading();\r\n }\r\n\r\n async onOpen() {\r\n this.reset();\r\n\r\n if (packagings == null) {\r\n this.packaging_picker.addItem(null, true, SP.Localize(\"word_none\"), \"\");\r\n packagings = await SP.Data.Packaging.getPackagingInfos();\r\n for (let i = 0; i < packagings.length; i++) {\r\n let p = packagings[i];\r\n this.packaging_picker.addItem(p, true, p.name, p.barcode);\r\n }\r\n }\r\n\r\n //bind events and groups\r\n if (!this.bound) {\r\n this.bound = true;\r\n barcodeListener.on(null, this.scanBarcode, this);\r\n barcodeListener.on(\"t\", this.scanTote, this);\r\n barcodeListener.on(\"print\", this.scanPrinter, this);\r\n barcodeListener.on(\"pc\", this.scanPallet, this);\r\n barcodeListener.on(\"sz\", this.scanZone, this);\r\n document.addEventListener(\"keydown\", this.inputListener);\r\n\r\n }\r\n\r\n var toteId = SP.getHash(\"tote\");\r\n var bc = SP.getHash(\"barcode\");\r\n if (toteId) this.loadTote(toteId, bc);\r\n\r\n }\r\n\r\n async onClose() {\r\n if (this.bound) {\r\n this.bound = false;\r\n barcodeListener.off(null, this.scanBarcode);\r\n barcodeListener.off(\"t\", this.scanTote);\r\n barcodeListener.off(\"print\", this.scanPrinter);\r\n barcodeListener.off(\"pc\", this.scanPallet);\r\n barcodeListener.off(\"sz\", this.scanZone);\r\n document.removeEventListener(\"keydown\", this.inputListener);\r\n\r\n if (this.tote) {\r\n await hub.connection.invoke(\"releaseTote\", this.tote.toteId);\r\n }\r\n }\r\n this.reset();\r\n }\r\n\r\n\r\n spaceTime: number;\r\n spacePrintTime: number;\r\n async inputListener(e: KeyboardEvent) {\r\n var _this = App_Fast_Pack_Order.Instance;\r\n if (e.which == 32) {\r\n\r\n if (document.activeElement instanceof HTMLInputElement)\r\n return;\r\n\r\n var now = performance.now();\r\n var dif = now - _this.spaceTime;\r\n\r\n if (dif <= 1000) {\r\n\r\n //prevent spam if space is kept down!\r\n if (performance.now() - _this.spacePrintTime < 1000) {\r\n _this.spacePrintTime = performance.now();\r\n\r\n return;\r\n }\r\n\r\n\r\n _this.spaceTime = 0;\r\n _this.spacePrintTime = performance.now();\r\n _this.fpo_create_label.click();\r\n }\r\n _this.spaceTime = now;\r\n }\r\n }\r\n\r\n reset() {\r\n this.fpo_warehousenotification_button.style.display = \"none\";\r\n this.customer = null;\r\n this.tote = null;\r\n this.shipment = null;\r\n this.selected_delivery_method = null;\r\n this.selected_packaging = null;\r\n this.selected_parcel_type = null;\r\n this.timeleft = 1000;\r\n this.fpo_reset_all.style.display = \"none\";\r\n this.fpo_select_all.style.display = \"none\";\r\n\r\n this.serialNumberArray = [];\r\n this.fpo_serialnumber_button.classList.remove(\"serialNumber-btn-active\");\r\n }\r\n\r\n async loadTote(id: string, barcodeScan: string = \"\") {\r\n this.reset();\r\n\r\n //check that tote is locked to us\r\n if (!(await hub.connection.invoke(\"lockTote\", parseInt(id)))) {\r\n if (!await SP.confirmX(\"tote is not locked to you! do you want to force open it?\")) {\r\n await TerminalApp.GetApp(\"app_pack_tote_list\").open();\r\n return;\r\n }\r\n }\r\n\r\n //get tote info\r\n var tote = this.tote = await SP.Data.Tote.getToteInfo(id, false);\r\n\r\n console.log(\"LoadTote\", tote);\r\n\r\n \r\n\r\n if (!tote.readyForPack) return SP.alertX(\"tote not ready for packing!\");\r\n\r\n this.fpo_tote_info.style.backgroundColor = tote.toteColor;\r\n this.fpo_tote_name.innerHTML = tote.toteName;\r\n this.autofill = !this.tote.groupPick && !barcodeScan.length;\r\n\r\n await this.reloadView();\r\n\r\n //check that tote is locked to us\r\n if (tote.blockPacker) {\r\n SP.alertX(\"Shipment for (OrderNo: \" + this.shipment.order.orderNo + \", RefNo: \" + this.shipment.order.referenceNo + \") is BLOCKED! remove 'BlockPacker' to bypass this!\");\r\n await TerminalApp.GetApp(\"app_pack_tote_list\").open();\r\n // if (!await SP.confirmX(\"Shipment is BLOCKED! do you want to force open it?\")) {\r\n // return;\r\n // }\r\n }\r\n\r\n if (barcodeScan.length) await this.scanBarcode(barcodeScan);\r\n if (this.shipment.order.warehouseNotificationPacker) this.fpo_warehousenotification_button.click();\r\n if (this.shipment.order.deliveryMethodInfo.warehouseNotificationPacker) new SP.DismissInfo(\"Delivery Method Notification\", this.shipment.order.deliveryMethodInfo.warehouseNotificationPacker);\r\n\r\n this.fpo_reset_select_buttons.style.display = tote.pickSettings.forceItemBarcodeScanning ? \"none\" : \"block\";\r\n\r\n\r\n this.fpo_items.querySelectorAll(\".info\").forEach((e) => { (e as HTMLElement).click(); });\r\n\r\n\r\n //this.fpo_order_info.innerHTML = `${this.customer.customerName}
\r\n // ${this.shipment.order.orderNo} ${this.shipment.order.recipient.name}
\r\n // ${this.shipment.order.deliveryMethodInfo.name}`\r\n\r\n this.fpo_order_info.innerHTML = `${this.customer.customerName}
\r\n ${this.shipment.order.orderNo} ${this.shipment.order.recipient.name}
\r\n ${this.shipment.order.deliveryMethodInfo.name}`\r\n\r\n \r\n\r\n\r\n /* if (App_Settings.userSettings.print_delivery_instantly && (this.shipment.order.printDeliveryNote || (this.tote.pickSettings?.forceDeliveryNote ?? false) || (this.selectedDeliveryMethod?.forceDeliveryNote ?? false))) this.printDeliveryNote(false);*/\r\n\r\n \r\n\r\n if (this.needSerialNumber) {\r\n this.serialNumberForm.open(this.serialNumberArray, this.shipment.shipmentId, () => {\r\n this.reloadView();\r\n });\r\n }\r\n else {\r\n var manual_click = SP.getHash(\"clicked\") == \"true\";\r\n if (!manual_click) this.autoPrintLabel();\r\n }\r\n }\r\n\r\n needSerialNumber: boolean;\r\n\r\n async reloadView() {\r\n this.timeleft = 1000;\r\n this.shipment = await SP.Data.Shipment.getShipmentInfo(this.tote.shipmentId);\r\n this.customer = await SP.Data.Customer.getCustomerInfo(this.shipment.order.customerId);\r\n this.autofill = App_Settings.userSettings.allow_autofill_package && this.autofill && (this.tote.pickSettings?.autofillPackageFromTote ?? true);\r\n\r\n this.prepareItems(this.autofill);\r\n this.renderItems();\r\n this.renderLabels();\r\n this.setPackageInfo();\r\n this.updateMetrics();\r\n\r\n\r\n if (!this.tote.pickSettings.scanPackageCollection && (this.selectedDeliveryMethod && !this.selectedDeliveryMethod.forceScanPackageCollection)) this.allSorted = true;\r\n\r\n this.waitingSorting = this.allPacked && !this.allSorted;\r\n this.fpo_label_form.style.display = this.allPacked ? \"none\" : \"block\";\r\n this.fpo_finish.style.display = (this.allPacked && this.allSorted) ? \"block\" : \"none\";\r\n this.fpo_sorting.style.display = this.waitingSorting ? \"block\" : \"none\";\r\n if (this.allPacked && this.allSorted) this.startCountdown();\r\n if (this.waitingSorting) this.setSortingInfo();\r\n this.checkForSerialNumber();\r\n }\r\n\r\n waitingSorting = false;\r\n\r\n async setSortingInfo() {\r\n SP.Sounds.Notification.play();\r\n this.fpo_sorting_list.innerHTML = \"\";\r\n for (let i = 0; i < this.shipment.packages.length; i++) {\r\n let p = this.shipment.packages[i];\r\n if (!p.packageCollectionId) {\r\n var zone: any = await SP.get(`/api/v1/sortingzone/find?packageId=${p.id}`);\r\n\r\n let bc = document.createElement(\"div\");\r\n bc.innerHTML = `
${zone.data.name}
`;\r\n bc.addEventListener(\"click\", async () => {\r\n if (await SP.confirmX(\"force zone?\")) {\r\n this.scanZone(zone.data.id);\r\n }\r\n });\r\n this.fpo_sorting_list.appendChild(bc);\r\n }\r\n }\r\n }\r\n\r\n scanPallet(pcId: string) {\r\n this.addToPackageCollection(pcId, null);\r\n }\r\n\r\n scanZone(szId: string) {\r\n this.addToPackageCollection(null, szId);\r\n }\r\n\r\n async addToPackageCollection(pcId:string, szId:string) {\r\n var success = false;\r\n\r\n for (let i = 0; i < this.shipment.packages.length; i++) {\r\n let p = this.shipment.packages[i];\r\n if (!p.packageCollectionId) {\r\n let result = await SP.post(\"/api/v1/packageCollection/addPackage\", {\r\n packageCollectionId: pcId ? parseInt(pcId) : null,\r\n sortingZoneId: szId,\r\n packageId: p.id\r\n });\r\n if (result.status == 200) {\r\n success = true;\r\n }\r\n }\r\n }\r\n\r\n if (!success) {\r\n SP.Sounds.Error.play();\r\n }\r\n else {\r\n SP.Sounds.Success.play();\r\n this.reloadView();\r\n }\r\n }\r\n\r\n\r\n checkForSerialNumber() {\r\n this.needSerialNumber = false;\r\n let hasSerialNumbers = false;\r\n this.serialNumberArray = [];\r\n\r\n for (var i = 0; i < this.shipment.lines.length; i++) {\r\n\r\n if (!this.shipment.lines[i].orderLine.itemInfo.registerSerialNumber) {\r\n continue;\r\n }\r\n\r\n hasSerialNumbers = true;\r\n\r\n let serialNumberDataArray = [];\r\n\r\n for (var u = 0; u < this.shipment.lines[i].data.length; u++) {\r\n if (this.shipment.lines[i].data[u].type == SP.ShipmentLineDataType.SerialNumber) {\r\n serialNumberDataArray.push(this.shipment.lines[i].data[u]);\r\n }\r\n }\r\n\r\n for (var u = 0; u < this.shipment.lines[i].qty; u++) {\r\n\r\n var serialModel = new SerialNumberModel();\r\n serialModel.Id = this.shipment.lines[i].id;\r\n serialModel.itemInfo = this.shipment.lines[i].orderLine.itemInfo;\r\n serialModel.ShipmentLineData = null;\r\n\r\n if (serialNumberDataArray[u] != null) {\r\n serialModel.ShipmentLineData = serialNumberDataArray[u];\r\n }\r\n\r\n if (serialModel.ShipmentLineData == null || serialNumberDataArray[u].value.length === 0) {\r\n this.needSerialNumber = true;\r\n }\r\n\r\n this.serialNumberArray.push(serialModel);\r\n }\r\n }\r\n\r\n if (hasSerialNumbers) {\r\n this.fpo_serialnumber_button.classList.add(\"serialNumber-btn-active\");\r\n }\r\n }\r\n\r\n async startCountdown() {\r\n this.fpo_cancel_countdown.style.display = \"block\";\r\n this.timeleft = App_Settings.userSettings.finish_package_delay;\r\n if (this.timeleft) {\r\n while (true) {\r\n if (this.timeleft >= 100) return;\r\n if (this.timeleft <= 0) break;\r\n this.fpo_countdown.innerHTML = `( ${this.timeleft} )`;\r\n this.timeleft--;\r\n await SP.sleep(1000);\r\n }\r\n }\r\n this.fpo_countdown.innerHTML = ``;\r\n this.fpo_cancel_countdown.style.display = \"none\";\r\n this.fpo_finish_order.click();\r\n }\r\n\r\n renderLabels() {\r\n this.fpo_labels.style.display = this.shipment.packages.length ? \"block\" : \"none\";\r\n this.fpo_labels.innerHTML = \"\";\r\n this.allSorted = true;\r\n\r\n for (let i = 0; i < this.shipment.packages.length; i++) {\r\n let label = this.shipment.packages[i];\r\n\r\n \r\n\r\n console.log(\"LABEL: \", label);\r\n if (!label.isColli && !label.trackingNumber) continue;\r\n\r\n let elm = this.fpo_labels.appendChild(document.createElement(\"div\"));\r\n elm.className = \"shipping_label\";\r\n\r\n let itemCount = 0;\r\n for (let i = 0; i < label.lines.length; i++) {\r\n itemCount += label.lines[i].quantity;\r\n }\r\n\r\n var colliText = \"\";\r\n if (label.isColli && !label.trackingNumber) colliText += SP.Localize(\"sentance_pending_colli\") + \" (\" + itemCount + \" \" + SP.Localize(\"word_items\") + \")\";\r\n\r\n var messurementsText = (label.width * 0.1) + \"x\" + (label.height * 0.1) + \"x\" + (label.length * 0.1) + \"cm - \" + (label.weight * 0.001) + \"kg\";\r\n\r\n elm.innerHTML = `\r\n \r\n ${label.deliveryMethodName}
\r\n ${label.trackingNumber} ${colliText} ${messurementsText}\r\n `;\r\n\r\n //reprint button\r\n if (!label.isColli || label.id == label.parentPackageId) {\r\n elm.innerHTML += `\r\n \r\n ${SP.Localize(\"word_reprint\")}\r\n `;\r\n\r\n let print_label = elm.querySelector(\".print\");\r\n let print_note = elm.querySelector(\".note\");\r\n\r\n print_label.addEventListener(\"click\", async () => {\r\n if (!await SP.confirmX(SP.Localize(\"text_confirm_double_label_print\"))) return;\r\n\r\n if (!App_Settings.terminalSettings.label_printer)\r\n return await SP.alertX(SP.Localize(\"sentance_please_select_printer\"));\r\n\r\n SP.Sounds.Click.play();\r\n print_label.classList.add(\"btn_disabled\");\r\n var result = await SP.get(\"/api/v1/package/print/\" + label.id + \"?label_printer=\" + App_Settings.terminalSettings.label_printer + \"&etiquette_printer=\" + App_Settings.terminalSettings.etiquette_printer + \"&a4_printer=\" + App_Settings.terminalSettings.a4_printer);\r\n if (result.status != 200) await SP.alertX(result.status + \": \" + result.msg + (result.exception ? \" - \" + result.exception : \"\"));\r\n print_label.classList.remove(\"btn_disabled\");\r\n });\r\n\r\n print_note.addEventListener(\"click\", async () => {\r\n if (!App_Settings.terminalSettings.label_printer)\r\n return await SP.alertX(SP.Localize(\"sentance_please_select_printer\"));\r\n SP.Sounds.Click.play();\r\n\r\n print_note.classList.add(\"btn_disabled\");\r\n var result = await SP.get(\"/api/v1/package/printnote/\" + label.id + \"?label_printer=\" + App_Settings.terminalSettings.label_printer + \"&etiquette_printer=\" + App_Settings.terminalSettings.etiquette_printer + \"&a4_printer=\" + App_Settings.terminalSettings.a4_printer);\r\n if (result.status != 200) await SP.alertX(result.status + \": \" + result.msg + (result.exception ? \" - \" + result.exception : \"\"));\r\n print_note.classList.remove(\"btn_disabled\");\r\n });\r\n };\r\n \r\n let remove = elm.querySelector(\".remove\");\r\n\r\n remove.addEventListener(\"click\", async () => {\r\n if (!await SP.confirmX(SP.Localize(\"text_confirm_delete_package\"))) return;\r\n SP.Sounds.Click.play();\r\n var result: any = await SP.get(\"/api/v1/package/delete/\" + label.id);\r\n if (result.status != 200) await SP.alertX(result.msg);\r\n else await this.reloadView();\r\n });\r\n\r\n if (label.packageCollectionId == null) {\r\n this.allSorted = false;\r\n }\r\n else {\r\n //set checkmark as scanned\r\n }\r\n\r\n \r\n }\r\n }\r\n\r\n prepareItems(autofill: boolean) {\r\n this.items = {};\r\n this.fpo_items.innerHTML = \"\";\r\n\r\n //sort by sku\r\n this.shipment.lines.sort((a, b) => a.orderLine.itemInfo.sku.localeCompare(b.orderLine.itemInfo.sku));\r\n\r\n for (let i in this.shipment.lines) {\r\n let sl = this.shipment.lines[i];\r\n\r\n let current = this.items[sl.orderLine.id];\r\n if (!current) {\r\n current = this.items[sl.orderLine.id] = {\r\n orderLineId: sl.orderLine.id,\r\n itemInfo: sl.orderLine.itemInfo,\r\n shipmentLineData: sl.data,\r\n max: sl.qty,\r\n quantity: 0,\r\n updateAmount: null,\r\n totes: []\r\n };\r\n }\r\n else {\r\n current.max += sl.qty;\r\n }\r\n }\r\n\r\n this.shipment.packages.forEach(p => p.lines.forEach(l => {\r\n if (!p.isColli && !p.trackingNumber) return; //dont count unpacked and finished\r\n let current = this.items[l.orderLineId];\r\n if (current) {\r\n if (p != this.editPackage) current.max -= l.quantity;\r\n }\r\n }));\r\n\r\n if (autofill) {\r\n for (let i = 0; i < this.tote.picks.length; i++) {\r\n let pick = this.tote.picks[i];\r\n let item = this.items[pick.orderLineId];\r\n item.quantity += pick.qty;\r\n item.quantity = Math.min(item.quantity, item.max);\r\n }\r\n }\r\n\r\n if (this.tote.additionalShipmentTotes && this.tote.additionalShipmentTotes.length) {\r\n for (let t = 0; t < this.tote.additionalShipmentTotes.length; t++) {\r\n let additionalTote = this.tote.additionalShipmentTotes[t];\r\n additionalTote.picks\r\n for (let i = 0; i < additionalTote.picks.length; i++) {\r\n let pick = additionalTote.picks[i];\r\n let item = this.items[pick.orderLineId];\r\n item.totes.push(additionalTote);\r\n }\r\n }\r\n for (let i = 0; i < this.tote.picks.length; i++) {\r\n let pick = this.tote.picks[i];\r\n let item = this.items[pick.orderLineId];\r\n item.totes.push(this.tote);\r\n }\r\n }\r\n\r\n }\r\n\r\n renderItems() {\r\n this.allPacked = true;\r\n var forceScanBarcode = this.tote?.pickSettings?.forceItemBarcodeScanning ?? false;\r\n console.log(\"shipment\", this.shipment);\r\n console.log(\"items\", this.items);\r\n for (let orderLineId in this.items) {\r\n let item = this.items[orderLineId];\r\n\r\n if (item.max > 0) {\r\n this.allPacked = false;\r\n let elm = this.fpo_items.appendChild(document.createElement(\"div\"));\r\n elm.className = \"order_item_new\";\r\n\r\n let model = (item.itemInfo.manufacturerName + \" \" + item.itemInfo.modelNo).trim();\r\n\r\n\r\n elm.innerHTML = `\r\n \r\n
\r\n \r\n
${item.itemInfo.sku}${model ? ' - ' + model : ''}
\r\n
${item.itemInfo.description}
\r\n
${item.itemInfo.barcodes.join(', ')}
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
`;\r\n\r\n if (item.shipmentLineData.length > 0 || item.itemInfo.registerSerialNumber) {\r\n elm.querySelector(\".serialNumbers\").innerHTML += \"SN: \";\r\n\r\n for (var i = 0; i < item.shipmentLineData.length; i++) {\r\n if (item.shipmentLineData[i].type === SP.ShipmentLineDataType.SerialNumber && item.shipmentLineData[i].value.length != 0) {\r\n elm.querySelector(\".serialNumbers\").innerHTML += \"\" + item.shipmentLineData[i].value + \", \";\r\n }\r\n }\r\n }\r\n\r\n let toteContainer = elm.querySelector(\".totes\");\r\n for (var i = 0; i < item.totes.length; i++) {\r\n let tote = item.totes[i];\r\n let toteElm = document.createElement(\"span\");\r\n toteElm.classList.add(\"label\");\r\n toteElm.style.backgroundColor = tote.toteColor;\r\n toteElm.innerHTML = tote.toteName;\r\n toteContainer.appendChild(toteElm);\r\n }\r\n\r\n\r\n elm.querySelector(\".image\").addEventListener(\"click\", (e) => {\r\n itemShortcutAssistant.open_with_info(item.itemInfo);\r\n e.preventDefault();\r\n e.stopPropagation();\r\n });\r\n\r\n //warehouse notification\r\n if (item.itemInfo.warehouseNotificationPacker) {\r\n let info_btn = elm.querySelector(\".info\") as HTMLElement;\r\n info_btn.style.display = \"\";\r\n info_btn.addEventListener(\"click\", () => {\r\n new SP.DismissInfo(\"Warehouse Notification (Item: \" + item.itemInfo.sku + \")\", item.itemInfo.warehouseNotificationPacker);\r\n });\r\n }\r\n\r\n let amt = elm.querySelector(\".amt\") as HTMLElement;\r\n item.updateAmount = (value: number, set: boolean) => {\r\n let newA = this.items[item.orderLineId].quantity = Math.max(0, set ? value : this.items[item.orderLineId].quantity + value);\r\n amt.innerHTML = `${newA} / ${item.max}`;\r\n amt.style.backgroundColor = newA < item.max ? \"#a0ab93\" : newA > item.max ? \"#d94646\" : \"\";\r\n this.updateMetrics();\r\n }\r\n item.updateAmount(item.quantity, true);\r\n\r\n\r\n if (!forceScanBarcode) {\r\n let count_container = elm.querySelector(\".label.amt\");\r\n let amt_input: HTMLInputElement;\r\n count_container.addEventListener(\"click\", () => {\r\n if (!amt_input) {\r\n count_container.innerHTML = ``;\r\n amt_input = count_container.querySelector(\".amt_input\");\r\n \r\n amt_input.addEventListener(\"blur\", () => {\r\n var val = parseFloat(amt_input.value) ?? 0;\r\n amt_input = null;\r\n item.updateAmount(val, true);\r\n });\r\n }\r\n \r\n amt_input.focus();\r\n amt_input.select();\r\n });\r\n }\r\n\r\n //if (App_Settings.userSettings.allow_split_delivery) {\r\n SP.bindClickHold(elm.querySelector(\".plus\") as HTMLElement, 500,\r\n () => { item.updateAmount(1, false); SP.Sounds.Click.play(); }, //click\r\n () => { item.updateAmount(item.max, true); SP.Sounds.Click.play(); } //hold\r\n );\r\n\r\n SP.bindClickHold(elm.querySelector(\".minus\") as HTMLElement, 500,\r\n () => { item.updateAmount(-1, false); SP.Sounds.Click.play(); }, //click\r\n () => { item.updateAmount(0, true); SP.Sounds.Click.play(); } //hold\r\n );\r\n //}\r\n //else {\r\n // elm.querySelector(\".plus\").remove();\r\n // elm.querySelector(\".minus\").remove();\r\n //}\r\n }\r\n }\r\n\r\n \r\n }\r\n\r\n updateDeliveryMethods() {\r\n this.delivery_method_picker.clear();\r\n var dimensions = [this.length, this.height, this.width].sort((a, b) => (a < b ? -1 : a > b ? 1 : 0));\r\n var length = dimensions[2];\r\n var circumferenceLength = dimensions[0] * 2 + dimensions[1] * 2 + dimensions[2];\r\n var weight = this.weight;\r\n\r\n var defaultId = this.editPackage?.deliveryMethodId ?? this.shipment.order.deliveryMethodInfo.id;\r\n var noneMethod: SP.DeliveryMethod = null;\r\n\r\n for (let key in this.customer.deliveryMethods) {\r\n let m = this.customer.deliveryMethods[key];\r\n\r\n if (m.orderSources.length && !m.orderSources.includes(this.shipment.order.orderSource)) continue;\r\n if (m.isReturn) continue;\r\n var error = \"\";\r\n\r\n let available = false;\r\n\r\n var destinationCountry = this.shipment.order.recipient.country.toUpperCase();\r\n var localPrices = m.prices[destinationCountry];\r\n\r\n if (localPrices) {\r\n let remaining = localPrices.filter(l =>\r\n (l.maxCircumferenceLength == 0 || l.maxCircumferenceLength >= circumferenceLength) &&\r\n (l.maxLength == 0 || l.maxLength >= length) &&\r\n (l.maxWeight == 0 || l.maxWeight >= weight)\r\n );\r\n if (remaining.length) available = true;\r\n else error = SP.Localize(\"sentance_no_shipping_rate_found_for_weight_or_dimensions\");\r\n }\r\n else {\r\n error = SP.Localize(\"sentance_no_delivery_country_match\");\r\n }\r\n\r\n (m as any).available = available;\r\n this.delivery_method_picker.addItem(m, available, m.name, error);\r\n\r\n if (m.name == \"None\") noneMethod = m;\r\n if (m.id == this.selected_delivery_method) this.setDeliveryMethod(m);\r\n if (this.selected_delivery_method == null && defaultId == m.id) this.setDeliveryMethod(m);\r\n }\r\n if (this.selected_delivery_method == null && noneMethod != null) this.setDeliveryMethod(noneMethod);\r\n\r\n\r\n if (this.selectedDeliveryMethod) {\r\n this.refreshColliBookingView();\r\n }\r\n }\r\n\r\n refreshColliBookingView() {\r\n var allPacked = true;\r\n for (var id in this.items) {\r\n var l = this.items[id];\r\n if (l.quantity < l.max) {\r\n allPacked = false;\r\n break;\r\n }\r\n }\r\n\r\n var colli = this.selectedDeliveryMethod.useColliBooking;\r\n var shipment = !this.selectedDeliveryMethod.useColliBooking || allPacked;\r\n\r\n container.querySelectorAll(\".colli_exclusive\").forEach(elm => { (elm as HTMLElement).style.display = colli ? \"\" : \"none\" });\r\n container.querySelectorAll(\".shipment_exclusive\").forEach(elm => { (elm as HTMLElement).style.display = shipment ? \"\" : \"none\" });\r\n container.querySelectorAll(\".colli_shipment_exclusive\").forEach(elm => { (elm as HTMLElement).style.display = shipment && colli ? \"\" : \"none\" });\r\n\r\n\r\n if (colli && !shipment) {\r\n container.querySelectorAll(\".disable_for_colli_only\").forEach(elm => {\r\n (elm as HTMLElement).style.opacity = \"0.4\";\r\n (elm as HTMLElement).style.pointerEvents = \"none\";\r\n });\r\n\r\n container.querySelectorAll(\".hide_for_colli_only\").forEach(elm => {\r\n (elm as HTMLElement).style.display = \"none\";\r\n });\r\n }\r\n else {\r\n container.querySelectorAll(\".disable_for_colli_only\").forEach(elm => {\r\n (elm as HTMLElement).style.opacity = \"\";\r\n (elm as HTMLElement).style.pointerEvents = \"\";\r\n });\r\n\r\n container.querySelectorAll(\".hide_for_colli_only\").forEach(elm => {\r\n (elm as HTMLElement).style.display = \"\";\r\n });\r\n }\r\n\r\n \r\n\r\n //this.refreshParameters();\r\n console.log(\"refreshing booking \", colli, shipment);\r\n }\r\n\r\n addons: SP.ShippingMethodAddon[] = [];\r\n parameters: SP.ShippingMethodParameter[] = [];\r\n _parametersUpdateFunctions: { (): void; }[] = [];\r\n\r\n refreshParameters() {\r\n for (let i = 0; i < this._parametersUpdateFunctions.length; i++) {\r\n this._parametersUpdateFunctions[i]();\r\n }\r\n console.log(\"refreshing?\");\r\n\r\n\r\n }\r\n\r\n setAddons(m: SP.DeliveryMethod) {\r\n //clear addons\r\n this.addons = [];\r\n let hasAddons = m.addons && m.addons.length;\r\n this.fpo_addons.innerHTML = \"\";\r\n var show = false;\r\n\r\n if (hasAddons) {\r\n //copy to break reference\r\n var addons = SP.clone(m.addons);\r\n\r\n //set headline\r\n for (let i = 0; i < addons.length; i++) {\r\n let addon = addons[i];\r\n if (!addon.include) continue;\r\n\r\n //add container\r\n let cont = document.createElement(\"div\");\r\n cont.classList.add(\"addon\");\r\n this.fpo_addons.appendChild(cont);\r\n\r\n if (addon.visible && addon.scope != \"colli\") cont.classList.add(\"hide_for_colli_only\");\r\n\r\n //checkbox\r\n let cb = cont.appendChild(document.createElement(\"input\"));\r\n cb.name = \"addon\";\r\n cb.value = addon.code;\r\n cb.type = \"checkbox\";\r\n let doodle = new SP.CheckboxDoodle(cb);\r\n let children = document.createElement(\"div\");\r\n\r\n doodle.onChange = () => {\r\n if (doodle.checked) {\r\n if (this.addons.indexOf(addon) == -1) {\r\n this.addons.push(addon);\r\n }\r\n }\r\n else {\r\n this.addons.splice(this.addons.indexOf(addon), 1);\r\n }\r\n text.style.color = doodle.checked ? \"#fff\" : \"\";\r\n children.style.display = doodle.checked ? \"block\" : \"none\";\r\n this.refreshParameters();\r\n }\r\n\r\n\r\n //set text\r\n let text = cont.appendChild(document.createElement(\"span\"));\r\n text.innerHTML = addon.name;\r\n cont.style.display = addon.visible ? \"block\" : \"none\";\r\n\r\n //select if default enabled\r\n if (addon.defaultEnabled) this.addons.push(addon);\r\n doodle.checked = addon.defaultEnabled;\r\n text.style.color = doodle.checked ? \"#fff\" : \"\";\r\n\r\n //add container for child properties (if visible)\r\n if (addon.visible) {\r\n show = true;\r\n children.classList.add(\"addon_\" + addon.code)\r\n children.style.display = doodle.checked ? \"block\" : \"none\";\r\n this.fpo_addons.appendChild(children);\r\n }\r\n }\r\n }\r\n\r\n this.fpo_addons.style.display = show ? \"block\" : \"none\";\r\n\r\n\r\n }\r\n\r\n setParameters(m: SP.DeliveryMethod) {\r\n //clear parameters\r\n this.parameters = [];\r\n this._parametersUpdateFunctions = [];\r\n\r\n let hasParameters = m.parameters && m.parameters.length;\r\n this.fpo_parameters.innerHTML = \"\";\r\n var show = false;\r\n\r\n if (hasParameters) {\r\n //copy to break reference\r\n var params = SP.clone(m.parameters);\r\n\r\n //set headline\r\n for (let i = 0; i < params.length; i++) {\r\n let param = params[i];\r\n if (!param.include) continue;\r\n\r\n this.parameters.push(param);\r\n\r\n let default_value = param.value;\r\n\r\n //append container\r\n let cont = document.createElement(\"div\");\r\n cont.classList.add(\"param\", \"type_\" + param.type);\r\n cont.style.display = param.visible ? \"block\" : \"none\";\r\n\r\n if (param.visible && param.scope != \"colli\") cont.classList.add(\"hide_for_colli_only\");\r\n \r\n\r\n //append to parrent (general or addon parameter)\r\n let parent = this.fpo_addons.querySelector(\".addon_\" + param.addonDependency);\r\n if (!parent) {\r\n if (param.visible) show = true;\r\n parent = this.fpo_parameters;\r\n }\r\n parent.appendChild(cont);\r\n\r\n //set text\r\n var text = cont.appendChild(document.createElement(\"span\"));\r\n text.classList.add(\"text\");\r\n if (param.scope) text.innerHTML += \"\" + param.scope + \" \";\r\n text.innerHTML += param.name;\r\n\r\n //create inputs\r\n let input = document.createElement(\"input\");\r\n input.placeholder = param.name;\r\n cont.appendChild(input);\r\n let doodle: SP.CheckboxDoodle;\r\n let numberDoodle: SP.NumberDoodle;\r\n\r\n\r\n //boolean/checkbox\r\n if (param.type == SP.ShippingMethodParameterType.boolean) {\r\n input.type = \"checkbox\";\r\n input.name = \"param\";\r\n doodle = new SP.CheckboxDoodle(input);\r\n param.value = default_value;\r\n doodle.checked = default_value == \"true\";\r\n\r\n doodle.onChange = () => {\r\n param.value = doodle.checked.toString();\r\n }\r\n }\r\n else if (param.type == SP.ShippingMethodParameterType.integer) {\r\n input.type = \"number\";\r\n numberDoodle = new SP.NumberDoodle(input);\r\n param.value = default_value;\r\n numberDoodle.value = default_value;\r\n\r\n numberDoodle.onChange = () => {\r\n param.value = numberDoodle.value.toString();\r\n }\r\n }\r\n\r\n //text / date / password / dictionary\r\n else {\r\n\r\n //add textinput class\r\n cont.classList.add(\"messurement\");\r\n\r\n //set type\r\n if (param.type == SP.ShippingMethodParameterType.datetime) {\r\n input.type = \"datetime-local\";\r\n input.placeholder = \"dd-MM-yyyy HH:mm\";\r\n }\r\n else if (param.type == SP.ShippingMethodParameterType.date) {\r\n input.type = \"date\";\r\n input.placeholder = \"dd-MM-yyyy\";\r\n }\r\n else if (param.type == SP.ShippingMethodParameterType.timeofday) {\r\n input.type = \"time\";\r\n input.placeholder = \"HH:mm\";\r\n }\r\n else if (param.type == SP.ShippingMethodParameterType.integer) input.type = \"number\";\r\n else if (param.type == SP.ShippingMethodParameterType.password) input.type = \"password\";\r\n else input.type = \"text\";\r\n\r\n //set default value\r\n if (default_value != null) {\r\n if (param.type == SP.ShippingMethodParameterType.options) {\r\n console.log(\"PARAM:\", param);\r\n var selected = param.options.find(p => p.key == default_value);\r\n if (selected) input.value = selected.value;\r\n }\r\n else {\r\n input.value = default_value;\r\n }\r\n param.value = default_value;\r\n }\r\n else {\r\n input.value = \"\";\r\n param.value = null;\r\n }\r\n\r\n //dictionary menu / picker\r\n if (param.type == SP.ShippingMethodParameterType.options) {\r\n input.addEventListener(\"focus\", () => {\r\n\r\n this.kvp_picker.setAllFromArray(param.options, param.name, SP.Localize(\"word_none\"), \"\");\r\n this.kvp_picker.open(result => {\r\n param.value = result.key;\r\n input.value = result.value;\r\n });\r\n this.fpo_parcel_type.blur();\r\n });\r\n\r\n }\r\n else {\r\n input.addEventListener(\"input\", () => {\r\n param.value = input.value;\r\n });\r\n }\r\n }\r\n\r\n //update function (show or not)\r\n this._parametersUpdateFunctions.push(() => {\r\n let show = true;\r\n let visible = cont.style.display == \"block\";\r\n if (param.addonDependency) {\r\n if (!this.addons.find(x => x.code == param.addonDependency)) {\r\n param.value = null;\r\n show = false;\r\n }\r\n }\r\n cont.style.display = show && param.visible ? \"block\" : \"none\";\r\n if (!visible && show) {\r\n if (default_value != null) {\r\n if (param.type == SP.ShippingMethodParameterType.options) {\r\n var selected = param.options.find(p => p.key == default_value);\r\n if (selected) input.value = selected.value;\r\n }\r\n else input.value = default_value;\r\n param.value = default_value;\r\n }\r\n if (doodle && param.value == \"true\") {\r\n doodle.checked = true;\r\n doodle.onChange();\r\n }\r\n else {\r\n input.value = param.value;\r\n }\r\n }\r\n });\r\n }\r\n }\r\n\r\n //refresh view\r\n\r\n this.refreshParameters();\r\n \r\n\r\n this.fpo_parameters.style.display = show ? \"block\" : \"none\";\r\n }\r\n\r\n selectedDeliveryMethod: SP.DeliveryMethod;\r\n setDeliveryMethod(m: SP.DeliveryMethod) {\r\n console.log(\"setDeliveryMethod\", m);\r\n //set red background if not available\r\n let available = (m as any).available;\r\n this.fpo_delivery_method.style.backgroundColor = available ? '' : '#eb7575';\r\n\r\n\r\n if (this.selected_delivery_method != m.id) {\r\n \r\n\r\n //update selected method and input\r\n this.selected_delivery_method = m.id;\r\n this.fpo_delivery_method.value = m.name;\r\n\r\n\r\n\r\n //update parceltype and pick if selected is availabe\r\n var parcelTypeDictionary = {} as any;\r\n m.parcelTypes.forEach(pt => { if (pt.enabled) parcelTypeDictionary[pt.code] = pt.name; });\r\n\r\n this.parcel_type_picker.setAll(parcelTypeDictionary, SP.Localize(\"sentance_select_parcel_type\"), null, null)\r\n let pt_picked = false;\r\n for (var key in parcelTypeDictionary) {\r\n var name = parcelTypeDictionary[key];\r\n if (name == this.selected_parcel_type) {\r\n pt_picked = true;\r\n this.setParcelType(key, name);\r\n }\r\n }\r\n\r\n //update addons and parameters\r\n this.setAddons(m);\r\n this.setParameters(m);\r\n\r\n //Autopick parcel-type if only 1 option, or clear selection if many\r\n if (!pt_picked) {\r\n if (Object.keys(parcelTypeDictionary).length == 1) {\r\n this.setParcelType(Object.keys(parcelTypeDictionary)[0], parcelTypeDictionary[Object.keys(parcelTypeDictionary)[0]]);\r\n }\r\n else this.setParcelType(null, null);\r\n }\r\n\r\n\r\n this.selectedDeliveryMethod = m;\r\n this.updateMetrics();\r\n }\r\n }\r\n\r\n setParcelType(key: string, name: string) {\r\n this.selected_parcel_type = key;\r\n this.fpo_parcel_type.value = key != null ? name : SP.Localize(\"sentance_select_parcel_type\");\r\n this.fpo_parcel_type.style.backgroundColor = key != null ? '' : '#eb7575';\r\n }\r\n\r\n setPackageInfo() {\r\n this.fpo_packaging.value = \"None\";\r\n this.fpo_reference.value = this.editPackage?.referenceNo ?? this.shipment.order.referenceNo;\r\n if (this.tote.pickSettings?.appendToteNameToReference ?? false) this.fpo_reference.value += \" (\" + this.tote.toteName + \")\";\r\n\r\n\r\n this.fpo_order.value = this.editPackage?.orderNo ?? this.shipment.order.orderNo;\r\n if (this.tote.pickSettings?.appendToteNameToOrderNo ?? false) this.fpo_order.value += \" (\" + this.tote.toteName + \")\";\r\n\r\n this.fpo_delivery_instructions.value = this.editPackage?.deliveryInstructions ?? this.shipment.order.deliveryInstructions;\r\n this.fpo_length.value = (this.editPackage?.length ?? 0).toString();\r\n this.fpo_height.value = (this.editPackage?.height ?? 0).toString();\r\n this.fpo_width.value = (this.editPackage?.width ?? 0).toString();\r\n this.fpo_weight.value = (this.editPackage?.weight ?? 0).toString();\r\n\r\n }\r\n\r\n lastPrintScan: number = 0;\r\n async scanTote(toteId: string) {\r\n if (this.waitingSorting) {\r\n SP.Sounds.Error.play();\r\n return;\r\n }\r\n\r\n clearTimeout(this.printTimeout);\r\n\r\n if (toteId == this.tote.toteId.toString()) {\r\n if (SP.ActiveNotifications.length) return SP.Sounds.Error.play();\r\n var now = performance.now();\r\n if (now - this.lastPrintScan < 500) {\r\n return this.fpo_create_label.click();\r\n }\r\n this.lastPrintScan = now;\r\n return;\r\n }\r\n else {\r\n this.lastPrintScan = 0;\r\n if (this.timeleft < 100) {\r\n Talk(\"word_wait\");\r\n return;\r\n }\r\n\r\n //get tote info\r\n var tote = await SP.Data.Tote.getToteInfo(toteId, false);\r\n\r\n //check if ready\r\n if (!tote.readyForPack) return SP.Sounds.Error.play();\r\n SP.setAllHash({ \"app\": \"app_fast_pack_order\", \"tote\": toteId });\r\n }\r\n }\r\n\r\n\r\n async scanPrinter(printerName: string) {\r\n if (SP.ActiveNotifications.length) return SP.Sounds.Error.play();\r\n\r\n var now = performance.now();\r\n if (App_Settings.userSettings.auto_double_scan_print_label || now - this.lastPrintScan < 500) {\r\n selectPrinter(printerName);\r\n return this.fpo_create_label.click();\r\n }\r\n this.lastPrintScan = now;\r\n }\r\n\r\n printTimeout: any;\r\n\r\n async scanBarcode(barcode: string) {\r\n if (this.waitingSorting) {\r\n SP.Sounds.Error.play();\r\n return;\r\n }\r\n\r\n clearTimeout(this.printTimeout);\r\n if (SP.ActiveNotifications.length) return SP.Sounds.Error.play();\r\n\r\n let current: IOrderPackLineInfo = null;\r\n var qty: number = null;\r\n\r\n //hard match\r\n for (let lineId in this.items) {\r\n let item = this.items[lineId];\r\n var m_qty = GetBarcodeQty(item.itemInfo.allBarcodes, barcode);\r\n if (m_qty !== null) {\r\n current = item;\r\n qty = m_qty;\r\n if (current.quantity < current.max) break;\r\n }\r\n }\r\n\r\n if (current != null) {\r\n current.updateAmount(qty ? qty : 1, false);\r\n if (current.quantity > current.max) return await SP.Sounds.Error.play();\r\n else {\r\n this.autoPrintLabel();\r\n return SP.Sounds.Click.play();\r\n }\r\n }\r\n\r\n var packaging = packagings.filter(p => p.barcode.includes(barcode))[0];\r\n if (packaging != null) {\r\n SP.Sounds.Click.play();\r\n return this.setPackaging(packaging);\r\n }\r\n SP.Sounds.Error.play();\r\n }\r\n\r\n autoPrintLabel() {\r\n clearTimeout(this.printTimeout);\r\n let _this = this;\r\n this.printTimeout = setTimeout(() => {\r\n if (!App_Settings.userSettings.auto_print_shipping_label || !(this.tote.pickSettings?.autoPrintLabel ?? false)) return;\r\n if (SP.ActiveNotifications.length) return;\r\n for (let lineId in _this.items) {\r\n let item = _this.items[lineId];\r\n if (item.quantity != item.max) return;\r\n }\r\n _this.fpo_create_label.click();\r\n }, 500);\r\n }\r\n\r\n setPackaging(packaging: SP.PackagingInfo) {\r\n this.selected_packaging = packaging;\r\n this.fpo_packaging.value = packaging?.name ?? SP.Localize(\"word_none\");\r\n this.updateMetrics();\r\n\r\n \r\n }\r\n\r\n updateMetrics() {\r\n this.length = 0;\r\n this.height = 0;\r\n this.width = 0;\r\n this.weight = 0;\r\n var selectedCount = 0;\r\n\r\n if (this.selected_packaging) {\r\n this.weight = this.selected_packaging.weight;\r\n this.height = this.selected_packaging.height;\r\n this.width = this.selected_packaging.width;\r\n this.length = this.selected_packaging.debth;\r\n }\r\n for (var id in this.items) {\r\n var item = this.items[id];\r\n\r\n if (item.max == 0 || item.quantity == 0) continue;\r\n\r\n selectedCount += item.quantity;\r\n\r\n this.weight += (item.itemInfo.warehouseWeight > 0 ? item.itemInfo.warehouseWeight : item.itemInfo.weight) * item.quantity;\r\n this.width = Math.max(this.width, item.itemInfo.width);\r\n this.height = Math.max(this.height, item.itemInfo.height);\r\n this.length = Math.max(this.length, item.itemInfo.debth);\r\n }\r\n\r\n this.fpo_length.value = this.length.toString();\r\n this.fpo_height.value = this.height.toString();\r\n this.fpo_width.value = this.width.toString();\r\n this.fpo_weight.value = this.weight.toString();\r\n this.updateDeliveryMethods();\r\n\r\n this.fpo_reset_all.style.display = selectedCount > 0 ? \"block\" : \"none\";\r\n this.fpo_select_all.style.display = selectedCount <= 0 ? \"block\" : \"none\";\r\n }\r\n\r\n async printShippingLabel() {\r\n //validate stuff\r\n //if (!printer)\r\n // return await SP.alertX(SP.Localize(\"sentance_please_select_printer\"));\r\n\r\n if (this.selected_parcel_type == null)\r\n return SP.alertX(SP.Localize(\"text_please_select_parcel_type\"));\r\n\r\n let lines: { [line_id: string]: number } = null;\r\n\r\n\r\n let postData: any = {\r\n orderId: this.shipment.order.orderId,\r\n shipmentId: this.shipment.shipmentId,\r\n width: this.width,\r\n length: this.length,\r\n height: this.height,\r\n weight: this.weight,\r\n fulfillmentLocation: this.tote.pickSettings.fulfillmentLocation,\r\n deliveryMethodId: this.selected_delivery_method,\r\n parcelType: this.selected_parcel_type,\r\n packagingId: this.selected_packaging?.id ?? SP.Guid.Empty,\r\n deliveryInstructions: this.fpo_delivery_instructions.value,\r\n orderNo: this.fpo_order.value,\r\n referenceNo: this.fpo_reference.value,\r\n addons: this.addons,\r\n parameters: this.parameters,\r\n isColli: this.selectedDeliveryMethod.useColliBooking,\r\n lines: lines\r\n }\r\n\r\n postData.lines = {};\r\n let total_send = 0;\r\n let total = 0;\r\n\r\n for (let l_id in this.items) {\r\n let item = this.items[l_id];\r\n if (item.max == 0) continue;\r\n postData.lines[l_id] = item.quantity;\r\n total_send += item.quantity;\r\n total += item.max;\r\n if (item.quantity > item.max) return SP.alertX(SP.Localize(\"text_packing_to_many_items\"));\r\n }\r\n\r\n if (total_send == 0) return SP.alertX(SP.Localize(\"sentance_no_items_packed\"));\r\n\r\n var last = total == total_send;\r\n\r\n if (!last && !App_Settings.userSettings.allow_split_delivery) return SP.alertX(SP.Localize(\"sentance_split_delivery_not_allowed\"));\r\n\r\n if (!last && !this.selectedDeliveryMethod.useColliBooking && !await SP.confirmX(SP.Localize(\"text_split_delivery\"))) return;\r\n\r\n \r\n\r\n DeviceLog.log(`Printing label for order ${this.shipment.order.orderNo}`)\r\n var result: any = await SP.post(\"/api/v1/package/create?autoprint=true&a4_printer=\" + App_Settings.terminalSettings.a4_printer + \"&label_printer=\" + App_Settings.terminalSettings.label_printer + \"&etiquette_printer=\" + App_Settings.terminalSettings.etiquette_printer + \"&last=\" + last, postData);\r\n\r\n\r\n if (last && (this.shipment.order.printDeliveryNote\r\n || (this.tote.pickSettings?.forceDeliveryNote ?? false)\r\n || (this.selectedDeliveryMethod?.forceDeliveryNote ?? false))) this.printDeliveryNote(true);\r\n\r\n\r\n //success\r\n if (result.status == 200) {\r\n SP.Sounds.Click.play();\r\n\r\n //Print documents\r\n var result: any = await SP.post(\"/api/v1/package/printDocuments/\" + result.packageId, {\r\n label_printer: App_Settings.terminalSettings.label_printer,\r\n etiquette_printer: App_Settings.terminalSettings.etiquette_printer,\r\n a4_printer: App_Settings.terminalSettings.a4_printer,\r\n print_order_documents: last\r\n });\r\n\r\n return await this.reloadView();\r\n\r\n }\r\n\r\n //success, no print only\r\n if (result.status == 1002) {\r\n SP.Sounds.Click.play();\r\n await this.reloadView();\r\n let msg = `${result.status}: ${result.msg + (result.exception ? \" - \" + result.exception : \"\")}`;\r\n DeviceLog.log(msg);\r\n console.log(\"ERROR\");\r\n return await SP.alertX(msg);\r\n }\r\n\r\n //fail\r\n else {\r\n SP.Sounds.Error.play();\r\n let msg = `${result.status}: ${result.msg + (result.exception ? \" - \" + result.exception : \"\")}`;\r\n DeviceLog.log(msg);\r\n return await SP.alertX(msg);\r\n }\r\n\r\n }\r\n\r\n async printDeliveryNote(save:boolean) {\r\n this.fpo_print_note_button.classList.add(\"btn_disabled\");\r\n if (!App_Settings.terminalSettings.label_printer)\r\n return await SP.alertX(SP.Localize(\"sentance_please_select_printer\"));\r\n\r\n var result = await SP.post(\"/api/v1/shipment/printnote/\" + this.shipment.shipmentId,\r\n {\r\n label_printer: App_Settings.terminalSettings.label_printer,\r\n etiquette_printer: App_Settings.terminalSettings.etiquette_printer,\r\n a4_printer: App_Settings.terminalSettings.a4_printer,\r\n saveShipmentTemplate: save\r\n }\r\n );\r\n DeviceLog.log(`Printing deliverynote for order ${this.shipment.order.orderNo} (printer:${App_Settings.terminalSettings.label_printer})`)\r\n\r\n if (result.status != 200) {\r\n let msg = `${result.status}: ${result.msg + (result.exception ? \" - \" + result.exception : \"\")}`;\r\n DeviceLog.log(msg);\r\n await SP.alertX(msg);\r\n }\r\n this.fpo_print_note_button.classList.remove(\"btn_disabled\");\r\n }\r\n }\r\n RegisterApp(\"app_fast_pack_order\", App_Fast_Pack_Order);\r\n}","/// \r\n\r\nnamespace TerminalApp {\r\n class OrderData {\r\n btn: HTMLElement;\r\n cb: SP.CheckboxDoodle;\r\n data: SP.PickProfileOrderInfo;\r\n searchstring: string;\r\n constructor(btn: HTMLElement, cb: SP.CheckboxDoodle, data: SP.PickProfileOrderInfo) {\r\n this.btn = btn;\r\n this.cb = cb;\r\n this.data = data;\r\n this.searchstring = [this.data.orderNo, this.data.referenceNo, this.data.recipient.name, this.data.recipient.attention, this.data.recipient.street1, this.data.recipient.street2, this.data.recipient.city, this.data.recipient.country, this.data.recipient.email, this.data.recipient.phone, this.data.recipient.zipcode].join(\" \").toLowerCase();\r\n\r\n if (this.data.productionItemInfo) {\r\n this.searchstring += \" \" + this.data.productionItemInfo.description.toLowerCase() + \" \" + this.data.productionItemInfo.sku.toLowerCase();\r\n }\r\n }\r\n\r\n isMatch(keyword: string) {\r\n var words = keyword.toLowerCase().split(' ');\r\n for (let i = 0; i < words.length; i++) { if (this.searchstring.indexOf(words[i]) == -1) return false; }\r\n return true;\r\n }\r\n }\r\n\r\n class PickAssistant {\r\n container = document.createElement(\"div\");\r\n inner = document.createElement(\"div\");\r\n order_result_container = document.createElement(\"div\");\r\n select_filtered_cb = document.createElement(\"input\");\r\n select_filtered_doodle: SP.CheckboxDoodle;\r\n filter_input = document.createElement(\"input\");\r\n headline = document.createElement(\"h1\");\r\n finish_button: HTMLElement;\r\n clear_button: HTMLElement;\r\n initialized = false;\r\n items: OrderData[] = [];\r\n picks: number[] = [];\r\n onClose: () => void;\r\n\r\n constructor() {\r\n\r\n this.container.classList.add(\"assistant\");\r\n\r\n //close button\r\n var close_button = this.container.appendChild(document.createElement(\"div\"))\r\n close_button.classList.add(\"close\");\r\n close_button.innerHTML = \"X\";\r\n close_button.addEventListener(\"click\", () => {\r\n this.close();\r\n });\r\n\r\n //setup sender screen\r\n this.inner.appendChild(this.headline);\r\n this.filter_input.type = \"text\";\r\n this.filter_input.placeholder = SP.Localize(\"sentance_filter_orders\") + \" ...\";\r\n this.filter_input.autocomplete = \"off\";\r\n this.filter_input.tabIndex = 1;\r\n this.filter_input.classList.add(\"search_input\", \"form-control\");\r\n this.filter_input.addEventListener(\"keyup\", () => {\r\n this.filter_orders(this.filter_input.value);\r\n });\r\n\r\n this.inner.append(this.select_filtered_cb);\r\n this.inner.append(this.filter_input);\r\n\r\n this.select_filtered_doodle = new SP.CheckboxDoodle(this.select_filtered_cb);\r\n var s = this.select_filtered_doodle.track.style;\r\n s.position = \"absolute\";\r\n s.zIndex = \"100\";\r\n s.right = \"30px\";\r\n s.bottom = \"initial\";\r\n s.top = \"110px\";\r\n\r\n this.select_filtered_doodle.onChange = () => {\r\n for (let i = 0; i < this.items.length; i++) {\r\n let itm = this.items[i];\r\n itm.cb.checked = itm.btn.style.display == \"block\" && this.select_filtered_doodle.checked;\r\n }\r\n }\r\n\r\n this.order_result_container.style.position = \"absolute\";\r\n this.order_result_container.style.width = \"100%\";\r\n this.order_result_container.style.bottom = \"100px\";\r\n this.order_result_container.style.top = \"180px\";\r\n this.order_result_container.style.overflowY = \"scroll\";\r\n this.order_result_container.classList.add(\"simple-scroll\");\r\n\r\n this.inner.append(this.order_result_container);\r\n this.container.appendChild(this.inner);\r\n\r\n this.finish_button = this.inner.appendChild(document.createElement(\"div\"))\r\n this.finish_button.classList.add(\"btn\", \"noselect\", \"grad-green\", \"fixed-btm\");\r\n this.finish_button.style.left = \"145px\";\r\n this.finish_button.style.width = \"auto\";\r\n this.finish_button.style.right = \"18px\";\r\n var action = this.finish_button.appendChild(document.createElement(\"span\"));\r\n action.classList.add(\"action\");\r\n action.innerHTML = SP.Localize(\"word_finish\");\r\n\r\n this.finish_button.addEventListener(\"click\", async () => {\r\n this.close();\r\n });\r\n\r\n\r\n this.clear_button = this.inner.appendChild(document.createElement(\"div\"))\r\n this.clear_button.classList.add(\"btn\", \"noselect\", \"grad-red\", \"fixed-btm\");\r\n this.clear_button.style.width = \"120px\";\r\n this.clear_button.style.left = \"17px\";\r\n this.clear_button.style.right = \"initial\";\r\n var action = this.clear_button.appendChild(document.createElement(\"span\"));\r\n action.classList.add(\"action\");\r\n action.innerHTML = SP.Localize(\"word_reset\");\r\n\r\n this.clear_button.addEventListener(\"click\", async () => {\r\n for (let i = 0; i < this.items.length; i++) {\r\n if (this.items[i].cb.checked) {\r\n this.items[i].cb.checked = false;\r\n }\r\n }\r\n this.select_filtered_doodle.checked = false;\r\n this.filter_orders('');\r\n });\r\n }\r\n\r\n\r\n async filter_orders(keyword: string) {\r\n var allSelected = true;\r\n for (let i = 0; i < this.items.length; i++) {\r\n let itm = this.items[i];\r\n var show = !keyword || itm.isMatch(keyword);\r\n itm.btn.style.display = show ? \"block\" : \"none\";\r\n if (show && !itm.cb.checked) allSelected = false;\r\n }\r\n\r\n //unbinde event while changing, dont want callback now\r\n var _tmp = this.select_filtered_doodle.onChange;\r\n this.select_filtered_doodle.onChange = null;\r\n this.select_filtered_doodle.checked = allSelected;\r\n this.select_filtered_doodle.onChange = _tmp;\r\n\r\n }\r\n\r\n clear() {\r\n this.currentList = \"\";\r\n this.items = [];\r\n this.picks = [];\r\n }\r\n\r\n currentList: string;\r\n\r\n async setList(profileId: string) {\r\n if (this.currentList != profileId) {\r\n this.currentList = profileId;\r\n this.order_result_container.innerHTML = \"\";\r\n var data = await SP.Data.PickProfile.getPickProfileInfo(profileId);\r\n\r\n for (let i = 0; i < data.orders.length; i++) {\r\n let order = data.orders[i];\r\n this.addSenderButton(order);\r\n\r\n }\r\n }\r\n\r\n }\r\n\r\n async init() {\r\n if (this.initialized) return;\r\n this.initialized = true;\r\n }\r\n\r\n async open(profileId: string, name: string) {\r\n this.headline.innerHTML = name;\r\n await this.init();\r\n await this.setList(profileId);\r\n this.filter_input.value = \"\";\r\n this.container.style.display = \"block\";\r\n }\r\n\r\n\r\n\r\n close() {\r\n this.picks = [];\r\n for (let i = 0; i < this.items.length; i++) {\r\n if (this.items[i].cb.checked) {\r\n this.picks.push(this.items[i].data.id);\r\n }\r\n }\r\n\r\n\r\n this.container.style.display = \"none\";\r\n if (this.onClose) this.onClose();\r\n }\r\n\r\n\r\n\r\n\r\n addSenderButton(data: SP.PickProfileOrderInfo) {\r\n var c = this.order_result_container.appendChild(document.createElement(\"div\"))\r\n c.classList.add(\"btn\", \"noselect\");\r\n c.style.height = \"80px\";\r\n c.style.color = \"#9f9f9f\";\r\n var action = c.appendChild(document.createElement(\"span\"));\r\n action.classList.add(\"orderno\");\r\n action.innerHTML = \"\" + data.orderNo + \"
\" + data.referenceNo + \", \" + data.lineCount + \" \" + SP.Localize(\"word_lines\") + \", \" + data.itemCount + \" \" + SP.Localize(\"word_items\") + \"
\" + data.preferredDeliveryDate + \"\";\r\n\r\n\r\n var info = c.appendChild(document.createElement(\"span\"));\r\n info.classList.add(\"orderinfo\");\r\n\r\n console.log(data);\r\n\r\n if (data.productionItemInfo) {\r\n info.innerHTML = `${data.productionItemInfo.sku}
${data.productionItemInfo.description}
Qty: ${data.productionQuantity} - ${data.preferredDeliveryDate}`; \r\n if (data.priority != 0) {\r\n info.innerHTML += \" - Priority: \" + data.priority + \"\";\r\n }\r\n\r\n }\r\n else {\r\n var name = data.recipient.name;\r\n if (data.recipient.attention) name += \" (Att: \" + data.recipient.attention + \")\";\r\n var street = data.recipient.street1;\r\n if (data.recipient.street2) street += \", \" + data.recipient.street2;\r\n info.innerHTML = \"\" + name + \"
\" + street + \"
\" + data.recipient.country + \"-\" + data.recipient.zipcode + \" \" + data.recipient.city;\r\n }\r\n\r\n \r\n\r\n\r\n var cb = c.appendChild(document.createElement(\"input\"));\r\n cb.type = \"checkbox\";\r\n\r\n var cbd = new SP.CheckboxDoodle(cb);\r\n this.items.push(new OrderData(c, cbd, data));\r\n\r\n cbd.onChange = () => {\r\n c.style.color = cbd.checked ? \"\" : \"#9f9f9f\";\r\n }\r\n\r\n\r\n }\r\n\r\n }\r\n\r\n\r\n export class App_Generate_Picklist extends AppBase {\r\n //gpl_prioritize_deadline = new SP.CheckboxDoodle(document.getElementById(\"gpl_prioritize_deadline\") as HTMLInputElement);\r\n //gpl_prioritize_old = new SP.CheckboxDoodle(document.getElementById(\"gpl_prioritize_old\") as HTMLInputElement);\r\n gpl_prime_picklist = new SP.CheckboxDoodle(document.getElementById(\"gpl_prime_picklist\") as HTMLInputElement);\r\n gpl_allow_refill_picks = new SP.CheckboxDoodle(document.getElementById(\"gpl_allow_refill_picks\") as HTMLInputElement);\r\n //gpl_size_preference = document.getElementById(\"gpl_size_preference\") as HTMLSelectElement;\r\n gpl_max_orders = new SP.NumberDoodle(document.getElementById(\"gpl_max_orders\") as HTMLInputElement);\r\n //gpl_max_locations = new SP.NumberDoodle(document.getElementById(\"gpl_max_locations\") as HTMLInputElement);\r\n //gpl_max_items = new SP.NumberDoodle(document.getElementById(\"gpl_max_items\") as HTMLInputElement);\r\n //gpl_max_weight_gram_list = new SP.NumberDoodle(document.getElementById(\"gpl_max_weight_gram_list\") as HTMLInputElement);\r\n //gpl_max_weight_gram_item = new SP.NumberDoodle(document.getElementById(\"gpl_max_weight_gram_item\") as HTMLInputElement);\r\n //gpl_min_weight_gram_item = new SP.NumberDoodle(document.getElementById(\"gpl_min_weight_gram_item\") as HTMLInputElement);\r\n //gpl_item_priority = new SP.SortableList(document.getElementById(\"gpl_item_priority\"));\r\n //settings_group = document.getElementById(\"generate_picklist_settings\");\r\n //settings_button = document.getElementById(\"generate_picklist_settings_button\");\r\n generate_button = document.getElementById(\"generate_picklist_generate_button\");\r\n gpl_filter_button = document.getElementById(\"gpl_filter_button\");\r\n profile_buttons = document.getElementById(\"generate_picklist_profile_buttons\");\r\n focus_buttons = document.getElementById(\"gpl_focus_buttons\");\r\n customer_buttons = document.getElementById(\"generate_customer_buttons\");\r\n gpl_pick_count = document.querySelector(\"#gpl_pick_count\");\r\n settings: { [customerId: string]: SP.PickSettingInfo } = {};\r\n currentSettings: SP.PickSettingInfo;\r\n currentplacementId: number;\r\n bound = false;\r\n generating = false;\r\n placementId: number = null;\r\n customerId: string = null;\r\n assistant = new PickAssistant();\r\n static instance: App_Generate_Picklist;\r\n\r\n constructor() {\r\n super(\"app_generate_picklist\");\r\n\r\n App_Generate_Picklist.instance = this;\r\n\r\n this.assistant.onClose = () => {\r\n this.gpl_pick_count.innerHTML = this.assistant.picks.length == 0 ? \"Auto\" : this.assistant.picks.length + \" \" + SP.Localize(\"word_picked\");\r\n }\r\n\r\n\r\n this.gpl_filter_button.addEventListener(\"click\", () => {\r\n if (this.currentSettings != null)\r\n this.assistant.open(this.currentSettings.id, this.currentSettings.name);\r\n });\r\n\r\n this.generate_button.addEventListener(\"click\", async () => {\r\n //prevent double generation\r\n if (this.generating) return;\r\n this.generating = true;\r\n\r\n //start loading\r\n StartLoading();\r\n\r\n\r\n //Post config (generate list)\r\n console.log(this.currentSettings);\r\n var result: any = await SP.post(\"/API/V1/PickList/Create\", {\r\n startLocationId: this.placementId,\r\n customerId: this.customerId,\r\n pickSettings: this.currentSettings,\r\n orderIds: this.assistant.picks\r\n });\r\n\r\n //stop loading\r\n StopLoading();\r\n\r\n //clear generating\r\n this.generating = false;\r\n\r\n if (result.status == 200) {\r\n //open list\r\n await SP.setAllHash({ \"app\": \"app_picklist\", \"id\": result.listId });\r\n }\r\n else {\r\n await SP.alertX(result.status + \": \" + result.msg);\r\n }\r\n });\r\n\r\n\r\n this.gpl_prime_picklist.onChange = () => {\r\n this.currentSettings.primePicklist = this.gpl_prime_picklist.checked;\r\n }\r\n\r\n\r\n this.gpl_allow_refill_picks.onChange = () => {\r\n this.currentSettings.allowRefillPicks = this.gpl_allow_refill_picks.checked;\r\n }\r\n\r\n this.gpl_max_orders.onChange = () => {\r\n this.currentSettings.maxOrders = this.gpl_max_orders.intValue;\r\n }\r\n\r\n \r\n\r\n container.appendChild(this.assistant.container);\r\n }\r\n\r\n async setStockSettings() {\r\n var settings = this.currentSettings;\r\n this.gpl_prime_picklist.checked = settings.primePicklist;\r\n this.gpl_max_orders.value = settings.maxOrders.toString();\r\n\r\n\r\n }\r\n initialized: boolean = false;\r\n\r\n customerCountLabels: { [id: string]: HTMLElement } = {};\r\n deadlineCountLabels: { [id: string]: HTMLElement } = {};\r\n\r\n async Init() {\r\n if (!this.initialized) {\r\n\r\n\r\n var customers = await SP.Data.Customer.getCustomerInfos(true);\r\n\r\n\r\n var selectedCustomerId = localStorage.getItem(\"generate_selected_customer\");\r\n if (!selectedCustomerId) {\r\n selectedCustomerId = customers[0].customerId;\r\n }\r\n\r\n this.initialized = true;\r\n this.customer_buttons.innerHTML = \"\";\r\n for (let i = 0; i < customers.length; i++) {\r\n let c = customers[i];\r\n let btn = this.customer_buttons.appendChild(createListButton(\"stock_list_button\", c.customerName, () => {\r\n this.selectCustomer(c.customerId);\r\n localStorage.setItem(\"generate_selected_customer\", c.customerId);\r\n var current = document.querySelector(\".stock_list_button.selected\");\r\n if (current) current.classList.remove(\"selected\");\r\n btn.classList.add(\"selected\");\r\n }));\r\n\r\n let label = this.customerCountLabels[c.customerId] = btn.appendChild(document.createElement(\"span\"));\r\n label.classList.add(\"label\", \"stock_count_\" + c.customerId);\r\n label.innerHTML = \"0\";\r\n label.style.backgroundColor = \"rgb(197, 197, 197)\";\r\n if (selectedCustomerId == c.customerId)\r\n btn.click();\r\n\r\n\r\n }\r\n }\r\n\r\n\r\n }\r\n\r\n updateFocussedState() {\r\n var hasFocus = this.focus_buttons.querySelector(\".selected\") != null;\r\n this.focus_buttons.classList.toggle(\"has_focus\", hasFocus);\r\n\r\n }\r\n\r\n async onOpen() {\r\n if (!this.initialized)\r\n await this.Init();\r\n\r\n else if (this.customerId) {\r\n //force reload counts on open\r\n var customer = this.customerId;\r\n this.customerId = null;\r\n this.selectCustomer(customer);\r\n }\r\n\r\n\r\n\r\n\r\n var deadlines = await SP.Data.Deadline.getDeadlineInfos();\r\n console.log(\"DEADLINSE\", deadlines);\r\n this.focus_buttons.innerHTML = \"\";\r\n for (let i = 0; i < deadlines.length; i++) {\r\n let d = deadlines[i];\r\n let btn = this.focus_buttons.appendChild(createListButton(\"deadline_list_button\", d.name, async () => {\r\n var result = await SP.get(\"/api/v1/sortingzone/toggleFocus/\" + d.sortingZoneId);\r\n btn.classList.toggle(\"selected\", result.data);\r\n this.updateFocussedState();\r\n }));\r\n\r\n\r\n let dl = this.deadlineCountLabels[d.sortingZoneId] = btn.appendChild(document.createElement(\"span\"));\r\n dl.classList.add(\"deadline_label\", \"label\");\r\n dl.innerHTML = d.deadline;\r\n\r\n\r\n\r\n let label = this.deadlineCountLabels[d.sortingZoneId] = btn.appendChild(document.createElement(\"span\"));\r\n label.classList.add(\"label\");\r\n label.innerHTML = \"\" + d.orderCount +\"\";\r\n label.style.backgroundColor = \"rgb(197, 197, 197)\";\r\n\r\n if (d.passed) {\r\n btn.classList.add(\"passed_deadline\");\r\n }\r\n\r\n if (d.prioritized) {\r\n let il = label.appendChild(document.createElement(\"span\"));\r\n il.classList.add(\"inner-label\", \"prioritize-label\");\r\n il.innerHTML = SP.Localize(\"word_prioritized\");\r\n }\r\n\r\n let il2 = label.appendChild(document.createElement(\"span\"));\r\n il2.classList.add(\"inner-label\", \"focus-label\");\r\n il2.style.display = \"none\";\r\n il2.innerHTML = SP.Localize(\"word_focussed\");\r\n\r\n\r\n if (d.focussed) btn.classList.add(\"selected\");\r\n\r\n this.updateFocussedState();\r\n\r\n }\r\n\r\n\r\n\r\n\r\n var readyCounts = await hub.connection.invoke<{ [id: string]: number }>(\"GetReadyCounts\") as any;\r\n var stockCounts = readyCounts.stock;\r\n var deadlineCounts = readyCounts.deadline;\r\n this.updateStockCounts(stockCounts);\r\n this.updateDeadlineCounts(deadlineCounts);\r\n\r\n //bind events and groups\r\n if (!this.bound) {\r\n this.bound = true;\r\n barcodeListener.on(\"sp\", this.scanPlacementId, this);\r\n }\r\n\r\n }\r\n\r\n async onClose() {\r\n //unbind events and groups\r\n if (this.bound) {\r\n this.bound = false;\r\n barcodeListener.off(\"sp\", this.scanPlacementId);\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n \r\n async selectCustomer(customerId: string) {\r\n if (customerId == null || !customerId.length || customerId == this.customerId) return;\r\n\r\n this.customerId = customerId;\r\n this.currentplacementId = null;\r\n var profiles = (await SP.Data.PickProfile.getPickProfileInfos(customerId));\r\n\r\n var selectedProfileId = localStorage.getItem(\"profile_\" + customerId);\r\n if (!selectedProfileId) {\r\n selectedProfileId = profiles[0].id;\r\n }\r\n\r\n //Load profile buttons\r\n this.profile_buttons.innerHTML = \"\";\r\n\r\n var additionalCount = 0;\r\n var additionalRefilCount = 0;\r\n var additionalBtns = [] as HTMLElement[];\r\n\r\n for (let i = 0; i < profiles.length; i++) {\r\n let p = profiles[i];\r\n\r\n var name = p.name;\r\n\r\n if (p.orderFifoMode > 0 && p.oldestOrderDate) {\r\n name += `
${p.oldestOrderDate}
`;\r\n }\r\n\r\n let btn = this.profile_buttons.appendChild(createListButton(\"profile_list_button\", name, () => {\r\n this.currentSettings = p;\r\n this.setStockSettings();\r\n localStorage.setItem(\"profile_\" + customerId, p.id);\r\n var current = document.querySelector(\".profile_list_button.selected\");\r\n if (current) current.classList.remove(\"selected\");\r\n btn.classList.add(\"selected\");\r\n this.assistant.clear();\r\n this.assistant.onClose(); //update text\r\n }));\r\n console.log(\"PROFILE:\", p);\r\n var label = btn.appendChild(document.createElement(\"span\"));\r\n label.classList.add(\"label\");\r\n\r\n if (p.orderCountIfRefill) {\r\n label.innerHTML = '' + p.orderCountIfRefill + ' Refill ' + p.orderCount.toString();\r\n }\r\n else label.innerHTML = p.orderCount.toString();\r\n\r\n\r\n //hide if other fulfillmentlocation\r\n if (App_Settings.wmsSettings.fulfillment_location != 'global' && p.fulfillmentLocation != App_Settings.wmsSettings.fulfillment_location) {\r\n btn.style.display = \"none\";\r\n additionalBtns.push(btn);\r\n additionalRefilCount += p.orderCountIfRefill;\r\n additionalCount += p.orderCount;\r\n }\r\n\r\n\r\n\r\n label.style.backgroundColor = p.orderCount == 0 ? \"#c5c5c5\" : \"\";\r\n\r\n if (selectedProfileId == p.id)\r\n btn.click();\r\n\r\n if (App_Settings.userSettings.hide_empty_pick_profiles) btn.style.display = p.orderCount == 0 ? \"none\" : \"flex\";\r\n }\r\n\r\n\r\n if (additionalBtns.length > 0 && additionalCount + additionalRefilCount > 0) {\r\n var btn = this.profile_buttons.appendChild(createListButton(\"profile_list_button\", SP.Localize(\"sentance_other_fulfillment_locations\"), async () => {\r\n if (await SP.confirmX(SP.Localize(\"word_show\") + ' ' +SP.Localize(\"sentance_other_fulfillment_locations\") + '?')) {\r\n //show all hidden buttons and hide this\r\n additionalBtns.forEach(b => b.style.display = \"flex\");\r\n btn.style.display = \"none\";\r\n }\r\n\r\n }));\r\n\r\n btn.style.backgroundColor = \"#cfcfcf\";\r\n\r\n var label = btn.appendChild(document.createElement(\"span\"));\r\n label.classList.add(\"label\");\r\n\r\n if (additionalRefilCount > 0) label.innerHTML = '' + additionalRefilCount + ' Refill ' + additionalCount;\r\n else label.innerHTML = additionalCount.toString();\r\n\r\n label.style.backgroundColor = additionalCount == 0 ? \"#c5c5c5\" : \"\";\r\n };\r\n }\r\n\r\n\r\n\r\n\r\n updateStockCounts(data: { [id: string]: number }) {\r\n //hide all \r\n if (App_Settings.userSettings.hide_empty_pick_profiles) {\r\n this.customer_buttons.childNodes.forEach(c => { (c as HTMLElement).style.display = App_Settings.userSettings.hide_empty_pick_profiles ? \"none\" : \"flex\"; });\r\n }\r\n\r\n for (let id in data) {\r\n var v = data[id].toString()\r\n let label = this.customerCountLabels[id];\r\n if (label) {\r\n label.innerHTML = v;\r\n label.style.backgroundColor = data[id] == 0 ? \"#c5c5c5\" : \"\";\r\n if (v != \"0\") label.parentElement.style.display = \"flex\";\r\n }\r\n else {\r\n console.log(\"Error customer not found: \" + id);\r\n }\r\n }\r\n }\r\n\r\n\r\n updateDeadlineCounts(data: { [id: string]: number }) {\r\n //hide all \r\n if (App_Settings.userSettings.hide_empty_pick_profiles) {\r\n this.focus_buttons.childNodes.forEach(c => { (c as HTMLElement).style.display = App_Settings.userSettings.hide_empty_pick_profiles ? \"none\" : \"flex\"; });\r\n }\r\n\r\n for (let id in data) {\r\n console.log(data, \"Value:\" + v);\r\n var v = data[id].toString()\r\n let label = this.deadlineCountLabels[id];\r\n if (!label) continue;\r\n label.querySelector(\"span\").innerHTML = data[id].toString();\r\n label.style.backgroundColor = data[id] == 0 ? \"#c5c5c5\" : \"\";\r\n if (v != \"0\") label.parentElement.style.display = \"flex\";\r\n }\r\n }\r\n\r\n async scanPlacementId(placementId: string) {\r\n\r\n this.placementId = parseInt(placementId);\r\n var data = await SP.Data.Stock.getPlacementInfo(this.placementId);\r\n var c = await SP.Data.Customer.getCustomerInfo(this.customerId, true);\r\n\r\n\r\n if (c.stockId != data.stock.stockId)\r\n return await SP.alertX(\"Wrong stock! scan customer stock!\");\r\n\r\n\r\n this.currentplacementId = this.placementId;\r\n this.generate_button.click();\r\n }\r\n\r\n\r\n }\r\n\r\n\r\n\r\n RegisterApp(\"app_generate_picklist\", App_Generate_Picklist);\r\n}","/// \r\n/// \r\n\r\nnamespace TerminalApp {\r\n\r\n class App_Item_Info extends AppBase {\r\n bound = false;\r\n currentItemId: string = \"\";\r\n\r\n button_add_barcode = document.getElementById(\"pi_add_barcode\");\r\n button_add_additional_barcode = document.getElementById(\"pi_add_additional_barcode\");\r\n button_search_ean = document.getElementById(\"pi_search_ean\");\r\n button_search_item = document.getElementById(\"pi_search_item\");\r\n button_add_item = document.getElementById(\"pi_add_item\");\r\n pi_scan_placeholder = document.getElementById(\"pi_scan_placeholder\");\r\n pi_item_info = document.getElementById(\"pi_item_info\");\r\n pi_weight = document.getElementById(\"pi_weight\") as HTMLInputElement;\r\n pi_length = document.getElementById(\"pi_length\") as HTMLInputElement;\r\n pi_height = document.getElementById(\"pi_height\") as HTMLInputElement;\r\n pi_width = document.getElementById(\"pi_width\") as HTMLInputElement;\r\n\r\n bcAssistant: BarcodeInputAssistant;\r\n currentItem: SP.ItemInfo;\r\n lots: SP.StockingLotInfo[];\r\n info_container: HTMLElement;\r\n item_container: HTMLElement;\r\n placement_container: HTMLElement;\r\n barcode_container: HTMLElement;\r\n additional_barcode_container: HTMLElement;\r\n constructor() {\r\n super(\"app_item_info\");\r\n this.bcAssistant = new BarcodeInputAssistant();\r\n this.container.appendChild(this.bcAssistant.container);\r\n\r\n this.button_add_barcode.addEventListener(\"click\", () => {\r\n this.bcAssistant.open(false, async (bc, colli_qty) => {\r\n if (this.currentItem != null) {\r\n if (this.currentItem.barcodes.indexOf(bc) == -1) {\r\n this.currentItem.barcodes.push(bc);\r\n await SP.post(\"/api/v1/item/import\", [{\r\n id: this.currentItem.id,\r\n barcodes: this.currentItem.barcodes\r\n }]);\r\n this.addBarcode(bc, false, colli_qty);\r\n }\r\n }\r\n\r\n });\r\n });\r\n\r\n\r\n this.button_add_additional_barcode.addEventListener(\"click\", () => {\r\n this.bcAssistant.open(true, async (bc, colli_qty) => {\r\n if (this.currentItem != null) {\r\n this.currentItem.additionalBarcodes[bc] = colli_qty;\r\n await SP.post(\"/api/v1/item/import\", [{\r\n id: this.currentItem.id,\r\n additionalBarcodes: this.currentItem.additionalBarcodes\r\n }]);\r\n this.addBarcode(bc, true, colli_qty);\r\n }\r\n\r\n });\r\n });\r\n\r\n this.info_container = document.getElementById(\"pi_item_info\");\r\n this.item_container = this.info_container.querySelector(\".item_container\");\r\n this.placement_container = this.info_container.querySelector(\".placement_container\");\r\n this.barcode_container = this.info_container.querySelector(\"#pi_barcode_container\");\r\n this.additional_barcode_container = this.info_container.querySelector(\"#pi_additional_barcode_container\");\r\n\r\n this.pi_weight.addEventListener(\"change\", async () => {\r\n await SP.post(\"/api/v1/item/import\", [\r\n {\r\n \"id\": this.currentItem.id,\r\n \"weight\": parseInt(this.pi_weight.value)\r\n }\r\n ]);\r\n });\r\n\r\n this.pi_length.addEventListener(\"change\", async () => {\r\n await SP.post(\"/api/v1/item/import\", [\r\n {\r\n \"id\": this.currentItem.id,\r\n \"debth\": parseInt(this.pi_length.value)\r\n }\r\n ]);\r\n });\r\n\r\n this.pi_height.addEventListener(\"change\", async () => {\r\n await SP.post(\"/api/v1/item/import\", [\r\n {\r\n \"id\": this.currentItem.id,\r\n \"height\": parseInt(this.pi_height.value)\r\n }\r\n ]);\r\n });\r\n\r\n this.pi_width.addEventListener(\"change\", async () => {\r\n await SP.post(\"/api/v1/item/import\", [\r\n {\r\n \"id\": this.currentItem.id,\r\n \"width\": parseInt(this.pi_width.value)\r\n }\r\n ]);\r\n });\r\n\r\n this.button_search_item.addEventListener(\"click\", () => {\r\n itemSearchAssistant.open(null, \"\", false, (item) => {\r\n this.selectItem(item);\r\n });\r\n });\r\n\r\n this.button_search_ean.addEventListener(\"click\", () => {\r\n itemSearchAssistant.open(null, \"\", true, (item) => {\r\n this.selectItem(item);\r\n });\r\n });\r\n\r\n this.button_add_item.addEventListener(\"click\", () => {\r\n addItemAssistant.open((itemId) => {\r\n this.selectItemId(itemId);\r\n });\r\n });\r\n }\r\n\r\n reset() {\r\n this.clearData();\r\n this.currentItemId = \"\";\r\n this.pi_scan_placeholder.style.display = \"block\";\r\n this.pi_item_info.style.display = \"none\";\r\n }\r\n\r\n async onOpen() {\r\n this.reset();\r\n\r\n await this.selectItemId(SP.getHash(\"itemId\"));\r\n //bind events and groups\r\n if (!this.bound) {\r\n this.bound = true;\r\n barcodeListener.on(\"sp\", this.scanPlacement, this);\r\n barcodeListener.on(null, this.scanBarcode, this);\r\n }\r\n }\r\n scanPlacement(placementId: string) {\r\n throw new Error(\"Method not implemented.\");\r\n }\r\n\r\n async setPreferredPlacement(placementId: number) {\r\n if (this.currentItem) {\r\n var newId = this.currentItem.preferredStockPlacementId == placementId ? 0 : placementId;\r\n StartLoading();\r\n var result = await SP.post(\"/api/v1/item/import\", [{\r\n id: this.currentItem.id,\r\n preferredStockPlacementId: newId\r\n }]);\r\n StopLoading();\r\n //this.reload();\r\n this.currentItem.preferredStockPlacementId = newId;\r\n return newId != 0;\r\n\r\n }\r\n return null;\r\n }\r\n\r\n async onClose() {\r\n //unbind events and groups\r\n if (this.bound) {\r\n this.bound = false;\r\n barcodeListener.off(\"sp\", this.scanPlacement);\r\n barcodeListener.off(null, this.scanBarcode);\r\n }\r\n\r\n itemSearchAssistant.close();\r\n this.bcAssistant.clear();\r\n addItemAssistant.close();\r\n this.reset();\r\n }\r\n\r\n async selectItemId(itemId: string) {\r\n if (!itemId) return;\r\n StartLoading();\r\n var data = (await SP.Data.Item.getWarehouseItemInfo(itemId)) as SP.ItemInfo;\r\n await this.selectItem(data);\r\n StopLoading();\r\n }\r\n\r\n async selectItem(item: SP.ItemInfo) {\r\n\r\n if (this.currentItemId != item.id) {\r\n StartLoading();\r\n this.currentItem = item;\r\n this.currentItemId = item.id;\r\n ignoreHashChange = true;\r\n SP.setManyHash({ \"itemId\": item.id });\r\n this.lots = await SP.Data.StockingLot.getItemStockingLotInfos(item.id, false);\r\n this.render();\r\n this.pi_scan_placeholder.style.display = \"none\";\r\n this.pi_item_info.style.display = \"block\";\r\n\r\n this.pi_weight.value = item.weight.toString();\r\n this.pi_length.value = item.debth.toString();\r\n this.pi_height.value = item.height.toString();\r\n this.pi_width.value = item.width.toString();\r\n\r\n await StopLoading();\r\n ignoreHashChange = false;\r\n }\r\n }\r\n\r\n reload() {\r\n let id = this.currentItemId;\r\n this.currentItemId = \"\";\r\n this.selectItemId(id);\r\n }\r\n\r\n render() {\r\n let item = this.currentItem;\r\n\r\n this.placement_container.innerHTML = \"\";\r\n this.barcode_container.innerHTML = \"\";\r\n this.additional_barcode_container.innerHTML = \"\";\r\n\r\n //render item\r\n this.item_container.innerHTML = `\r\n
\r\n
\r\n \r\n
\r\n ${item.sku}\r\n ${item.description}\r\n ${item.barcodes.join(\", \")}\r\n \r\n Stock
${item.totalCombined}
\r\n Incomming
${item.incommingCombined}
\r\n Sold
${item.reservedCombined}
\r\n
\r\n
\r\n
\r\n
\r\n `;\r\n\r\n\r\n this.item_container.querySelector(\".image\").addEventListener(\"click\", (e) => {\r\n itemShortcutAssistant.open_with_info(item);\r\n e.preventDefault();\r\n e.stopPropagation();\r\n });\r\n\r\n //render locations\r\n let locations = {} as any;\r\n\r\n console.log(\"item\", item);\r\n if (item.preferredStockPlacementData) {\r\n locations[item.preferredStockPlacementData] = { id: item.preferredStockPlacementId, amt: 0 };\r\n }\r\n\r\n this.lots.forEach(l => {\r\n if (l.placementQuantity > 0) {\r\n if (!locations[l.stockPlacementData]) locations[l.stockPlacementData] = { id: l.stockPlacementId, amt: l.placementQuantity };\r\n else locations[l.stockPlacementData].amt += l.placementQuantity;\r\n }\r\n });\r\n\r\n for (let location in locations) {\r\n let t = new PlacementInfoBox(location, true, this.currentItem);\r\n let placement_id = locations[location].id;\r\n let amt = locations[location].amt;\r\n let loc = document.createElement(\"div\");\r\n let preferred = location == item.preferredStockPlacementData;\r\n loc.classList.add(\"placement_header\");\r\n loc.appendChild(t.container);\r\n\r\n let star = document.createElement(\"span\");\r\n star.classList.add(\"preferred\");\r\n if (preferred) star.classList.add(\"selected\");\r\n star.innerHTML = preferred ? `` : ``;\r\n loc.appendChild(star);\r\n\r\n star.addEventListener(\"click\", async () => {\r\n let pref = await this.setPreferredPlacement(placement_id);\r\n let curr = this.placement_container.querySelector(\".preferred.selected\");\r\n if (curr) {\r\n curr.innerHTML = ``;\r\n curr.classList.remove(\"selected\");\r\n\r\n }\r\n if (pref) {\r\n star.innerHTML = pref ? `` : ``;\r\n star.classList.add(\"selected\");\r\n }\r\n\r\n });\r\n\r\n let amt_label = document.createElement(\"span\");\r\n amt_label.classList.add(\"label\");\r\n amt_label.innerHTML = amt;\r\n loc.appendChild(amt_label);\r\n\r\n this.placement_container.appendChild(loc);\r\n }\r\n\r\n //5711614905500\r\n //https://localhost:5001/terminal/#app=app_item_info&itemId=2bc76902-5f6d-43b7-816e-0002325442e3\r\n\r\n item.barcodes.forEach(b => {\r\n this.addBarcode(b, false, 1);\r\n });\r\n\r\n for (var bc in item.additionalBarcodes) {\r\n this.addBarcode(bc, true, item.additionalBarcodes[bc]);\r\n }\r\n\r\n }\r\n\r\n clearData() {\r\n //clear previous data\r\n // this.pi_item_info.innerHTML = \"\";\r\n }\r\n\r\n addBarcode(bc: string, additional: boolean, colli_qty:number) {\r\n\r\n let bar = document.createElement(\"div\");\r\n bar.classList.add(\"barcode\");\r\n bar.innerHTML = bc;\r\n\r\n if (additional) {\r\n var delete_btn = document.createElement(\"span\");\r\n delete_btn.classList.add(\"colli\");\r\n delete_btn.innerHTML = \"Colli \" + colli_qty.toString();\r\n bar.appendChild(delete_btn);\r\n }\r\n\r\n\r\n var delete_btn = document.createElement(\"span\");\r\n delete_btn.classList.add(\"delete\");\r\n delete_btn.innerHTML = ``;\r\n bar.appendChild(delete_btn);\r\n\r\n delete_btn.addEventListener(\"click\", async () => {\r\n if (await SP.confirmX(\"Delete Barcode\")) {\r\n if (additional) {\r\n\r\n console.log(\"delete additional: \" + bc);\r\n delete this.currentItem.additionalBarcodes[bc];\r\n await SP.post(\"/api/v1/item/import\", [{\r\n id: this.currentItem.id,\r\n additionalBarcodes: this.currentItem.additionalBarcodes\r\n }]);\r\n }\r\n else {\r\n console.log(\"delete additional: \" + bc);\r\n this.currentItem.barcodes.splice(this.currentItem.barcodes.indexOf(bc), 1);\r\n await SP.post(\"/api/v1/item/import\", [{\r\n id: this.currentItem.id,\r\n barcodes: this.currentItem.barcodes\r\n }]);\r\n }\r\n bar.remove();\r\n }\r\n });\r\n\r\n var print_btn = document.createElement(\"span\");\r\n print_btn.classList.add(\"print\");\r\n print_btn.innerHTML = ``;\r\n bar.appendChild(print_btn);\r\n\r\n print_btn.addEventListener(\"click\", async () => {\r\n var amt = parseInt(prompt(SP.Localize(\"sentance_enter_amount\"), \"1\"));\r\n if (amt) {\r\n var result = await SP.get(`/api/v1/item/printbarcode?printer=${App_Settings.terminalSettings.etiquette_printer}&id=${this.currentItemId}&barcode=${encodeURIComponent(bc)}&colli=${colli_qty}&copies=${amt}`);\r\n if (result.status != 200) await SP.alertX(result.msg);\r\n }\r\n });\r\n\r\n if (additional) {\r\n this.additional_barcode_container.appendChild(bar);\r\n\r\n }\r\n else {\r\n this.barcode_container.appendChild(bar);\r\n }\r\n }\r\n\r\n async scanBarcode(barcode: string) {\r\n //if (this.bcAssistant.bound) return;\r\n //auto search\r\n itemSearchAssistant.open(null, barcode, false, (i) => {\r\n this.selectItem(i);\r\n });\r\n }\r\n\r\n }\r\n RegisterApp(\"app_item_info\", App_Item_Info);\r\n}\r\n","/// \r\n\r\n\r\nnamespace TerminalApp {\r\n\r\n export class LocationMapping extends AppBase {\r\n bound = false;\r\n\r\n static instance: LocationMapping;\r\n constructor() {\r\n super(\"app_location_mapping\");\r\n LocationMapping.instance = this;\r\n\r\n }\r\n\r\n\r\n\r\n async onOpen() {\r\n\r\n }\r\n\r\n async onClose() {\r\n }\r\n }\r\n\r\n\r\n\r\n RegisterApp(\"app_location_mapping\", LocationMapping);\r\n}","/// \r\n\r\n\r\nnamespace TerminalApp {\r\n let appId = \"app_move_stock\";\r\n\r\n\r\n\r\n class RestockListElement {\r\n index: number = 0;\r\n data: SP.RestockListInfo;\r\n html: HTMLElement;\r\n menu: SP.SwipeMenu;\r\n\r\n text_name: HTMLElement;\r\n text_date: HTMLElement;\r\n text_location: HTMLElement;\r\n text_description: HTMLElement;\r\n text_icon: HTMLImageElement;\r\n\r\n occupant_info: HTMLElement;\r\n\r\n\r\n constructor(data: SP.RestockListInfo) {\r\n this.data = data;\r\n\r\n this.html = CreateButton(\"/terminal/img/icon/list2.png\", null);\r\n this.html.classList.add(\"full\");\r\n this.html.style.height = \"88px\";\r\n\r\n this.menu = new SP.SwipeMenu(\r\n /*Element*/\r\n this.html,\r\n\r\n /*Click Event*/\r\n () => {\r\n GetApp(\"app_move_stock\").open({ restocklist: this.data.id });\r\n },\r\n\r\n /*buttons*/\r\n [\r\n\r\n /*Cancel Button*/{\r\n icon: \"\", text: SP.Localize(\"word_cancel\"), color: \"#e83535\", confirm: true, action: async () => {\r\n StartLoading();\r\n var result = await SP.get(\"/api/v1/restock/cancel/\" + this.data.id);\r\n console.log(result);\r\n if (result.status == 200) {\r\n SP.Sounds.Success.play();\r\n this.menu.return();\r\n this.html.remove();\r\n this.menu.remove();\r\n App_Move_Stock.instance.loadToteList();\r\n }\r\n else {\r\n this.menu.return();\r\n SP.alertX(`${result.status}: ${result.msg}`);\r\n if (result.exception) { console.log(result.exception); }\r\n }\r\n StopLoading();\r\n }\r\n },\r\n\r\n ],\r\n /*group*/\r\n \"app_restock_totes\"\r\n );\r\n\r\n\r\n this.updateText();\r\n\r\n\r\n\r\n }\r\n\r\n\r\n\r\n updateText() {\r\n //clear\r\n this.html.innerHTML = \"\";\r\n\r\n var inner = this.html.appendChild(document.createElement(\"div\"));\r\n\r\n //icon\r\n this.text_icon = inner.appendChild(document.createElement(\"img\"));\r\n this.text_icon.classList.add(\"icon\");\r\n this.text_icon.src = \"/terminal/img/icon/list2.png\";\r\n\r\n //date/user text\r\n this.text_date = inner.appendChild(document.createElement(\"div\"));\r\n this.text_date.classList.add(\"text\", \"bottom\", \"right\", \"small\");\r\n this.text_date.innerHTML = `${this.data.user} ${this.data.time}`;\r\n\r\n //name\r\n this.text_name = inner.appendChild(document.createElement(\"div\"));\r\n this.text_name.classList.add(\"text\", \"top\", \"big\", \"left\");\r\n this.text_name.style.right = \"130px\";\r\n //this.text_name.innerHTML = `${this.data.lines.length} Totes ${this.data.stockName} #${this.data.id}`;\r\n this.text_name.innerHTML = `${this.data.stockName} #${this.data.id}`;\r\n\r\n //date/user name\r\n this.text_description = inner.appendChild(document.createElement(\"div\"));\r\n this.text_description.classList.add(\"text\", \"left\", \"small\");\r\n this.text_description.style.lineHeight = \"16px\";\r\n this.text_description.innerHTML = `${this.data.lines.length + \" \" + SP.Localize(\"word_locations\")}`;\r\n\r\n //date/user name\r\n this.text_location = inner.appendChild(document.createElement(\"div\"));\r\n this.text_location.classList.add(\"text\", \"top\", \"right\");\r\n this.text_location.innerHTML = `${Math.round(this.data.routeLength)} m`;\r\n\r\n\r\n //inner.style.opacity = this.data.occupantUserName ? \"0.5\" : \"1\";\r\n //this.html.style.pointerEvents = this.data.occupantUserName ? \"none\" : \"all\";\r\n //this.html.style.backgroundColor = this.data.occupantUserName ? \"rgba(255,255,255,0.3)\" : \"#fff\";\r\n\r\n //if (this.data.occupantUserName) {\r\n\r\n // if (!this.occupant_info) {\r\n // this.occupant_info = document.createElement(\"div\");\r\n // this.occupant_info.classList.add(\"occupant_info\");\r\n // }\r\n // this.occupant_info.innerHTML = this.data.occupantUserName;\r\n // this.html.appendChild(this.occupant_info);\r\n //}\r\n }\r\n }\r\n\r\n class RestockListLineElement {\r\n index: number = 0;\r\n data: SP.RestockListLineInfo;\r\n html: HTMLElement;\r\n menu: SP.SwipeMenu;\r\n\r\n text_name: HTMLElement;\r\n text_date: HTMLElement;\r\n text_location: HTMLElement;\r\n text_description: HTMLElement;\r\n text_icon: HTMLImageElement;\r\n\r\n occupant_info: HTMLElement;\r\n static activeElement: RestockListLineElement = null;\r\n\r\n setActive() {\r\n this.html.style.opacity = \"1\";\r\n RestockListLineElement.activeElement = this;\r\n for (var i = 0; i < App_Move_Stock.instance.infos.length; i++) {\r\n let elm = App_Move_Stock.instance.infos[i];\r\n var moveQty = this.data.moveLots[elm.id] ?? 0;\r\n\r\n\r\n //move to top\r\n if (moveQty) {\r\n let elm_container = (elm as any).dood.track.parentElement as HTMLElement;\r\n elm_container.parentElement.prepend(elm_container);\r\n\r\n //set new max move from refill qty\r\n if (moveQty != elm.placementQuantity) {\r\n elm.placementQuantity = moveQty;\r\n var val1 = elm_container.querySelector(\".move_max_value\") as HTMLElement;\r\n var val2 = elm_container.querySelector(\".move_max_value2\") as HTMLElement;\r\n val2.style.color = \"#809b4d\";\r\n val2.innerHTML = \" / \" + val1.innerHTML;\r\n val1.innerHTML = moveQty.toString();\r\n }\r\n\r\n }\r\n\r\n (elm as any).dood.checked = moveQty > 0;\r\n (elm as any).dood.onChange();\r\n }\r\n }\r\n\r\n constructor(data: SP.RestockListLineInfo) {\r\n\r\n this.data = data;\r\n let currentLine = SP.getHash(\"restocklistline\");\r\n\r\n this.html = CreateButton(null, null);\r\n this.html.classList.add(\"full\");\r\n this.html.style.height = \"88px\";\r\n this.html.style.opacity = \"0.6\";\r\n\r\n if (currentLine == this.data.id) {\r\n this.setActive();\r\n }\r\n var pi2: PlacementInfoBox;\r\n if (data.fromPlacementData) {\r\n var pi1 = new PlacementInfoBox(data.fromPlacementData, true, null);\r\n pi1.container.setAttribute(\"style\", \"position:absolute; width:30%; left:0; pointer-events:none !important\")\r\n pi1.container.querySelector(\"img\").setAttribute(\"style\", \"pointer-events:none !important\")\r\n this.html.appendChild(pi1.container);\r\n }\r\n if (data.toPlacementData) {\r\n pi2 = new PlacementInfoBox(data.toPlacementData, true, null);\r\n pi2.container.setAttribute(\"style\", \"position:absolute; width:50%; right:0; pointer-events:none !important\")\r\n pi2.container.querySelector(\"img\").setAttribute(\"style\", \"pointer-events:none !important\")\r\n this.html.appendChild(pi2.container);\r\n }\r\n\r\n var clickFn = () => {\r\n SP.setManyHash({ toPlacementId: this.data.toPlacementId?.toString(), placementId: this.data.fromPlacementId?.toString(), restocklistline: this.data.id });\r\n };\r\n\r\n this.menu = new SP.SwipeMenu(\r\n /*Element*/\r\n this.html,\r\n\r\n /*Click Event*/\r\n () => {\r\n clickFn();\r\n },\r\n\r\n /*buttons*/\r\n [\r\n\r\n /*Cancel Button*/{\r\n icon: \"\", text: SP.Localize(\"word_remove\"), color: \"#e83535\", confirm: true, action: async () => {\r\n StartLoading();\r\n var result = await SP.get(\"/api/v1/restock/removeLine/\" + this.data.id);\r\n if (result.status == 200) {\r\n SP.Sounds.Success.play();\r\n this.menu.return();\r\n this.html.remove();\r\n this.menu.remove();\r\n App_Move_Stock.instance.loadToteList();\r\n }\r\n else {\r\n this.menu.return();\r\n SP.alertX(`${result.status}: ${result.msg}`);\r\n if (result.exception) { console.log(result.exception); }\r\n }\r\n StopLoading();\r\n }\r\n },\r\n /*Change Button*/{\r\n icon: \"\", text: SP.Localize(\"word_change\"), color: \"blue\", confirm: false, action: async () => {\r\n\r\n TerminalApp.placementFinderAssistant.open(async (placementId, placementData) => {\r\n if (placementData) {\r\n\r\n await SP.get(\"/api/v1/restock/changeLine/\" + this.data.id + \"?placementId=\" + placementId);\r\n\r\n pi2.container.remove();\r\n pi2 = new PlacementInfoBox(placementData, true, null);\r\n pi2.container.setAttribute(\"style\", \"position:absolute; width:50%; right:0; pointer-events:none !important\")\r\n pi2.container.querySelector(\"img\").setAttribute(\"style\", \"pointer-events:none !important\")\r\n this.html.appendChild(pi2.container);\r\n this.data.toPlacementId = placementId;\r\n\r\n //reload\r\n if (RestockListLineElement.activeElement == this) {\r\n TerminalApp.hashChanged();\r\n }\r\n }\r\n });\r\n\r\n this.menu.return();\r\n\r\n }\r\n },\r\n ],\r\n\r\n /*group*/\r\n \"app_restock_totes\"\r\n );\r\n }\r\n }\r\n\r\n export class App_Move_Stock extends AppBase {\r\n msq_sticky_footer = document.getElementById(\"msq_sticky_footer\");\r\n msq_filter_toggle = new SP.CheckboxDoodle(document.getElementById(\"msq_filter_toggle\") as HTMLInputElement);\r\n msq_filter = document.getElementById(\"msq_filter\") as HTMLInputElement;\r\n\r\n msq_info = document.getElementById(\"msq_info\");\r\n msq_info_image = this.msq_info.querySelector(\"img\");\r\n msq_data = document.getElementById(\"msq_data\");\r\n msq_from_location = document.getElementById(\"msq_from_location\");\r\n msq_to_location = document.getElementById(\"msq_to_location\");\r\n msq_to_location_info = document.getElementById(\"msq_to_location_info\");\r\n msq_to_location_info_image = this.msq_to_location_info.querySelector(\"img\");;\r\n msq_items = document.getElementById(\"msq_items\");\r\n msq_error = document.getElementById(\"msq_error\");\r\n msq_confirm = document.getElementById(\"msq_confirm\");\r\n msq_parked_count = document.getElementById(\"msq_parked_count\");\r\n msq_parked_list = document.getElementById(\"msq_parked_list\");\r\n msq_parked_button = document.getElementById(\"msq_parked_button\");\r\n msq_refill_list = document.getElementById(\"msq_refill_list\");\r\n msq_refill_area = document.getElementById(\"msq_refill_area\");\r\n msq_tote_list = document.getElementById(\"msq_tote_list\");\r\n msq_tote_area = document.getElementById(\"msq_tote_area\");\r\n msq_restock_list = document.getElementById(\"msq_restock_list\");\r\n msq_restock_area = document.getElementById(\"msq_restock_area\");\r\n msq_restocklist_list = document.getElementById(\"msq_restocklist_list\");\r\n msq_restocklist_area = document.getElementById(\"msq_restocklist_area\");\r\n\r\n msq_create_restocking_list_button = document.getElementById(\"msq_create_restocking_list_button\");\r\n\r\n cb_all_totes: SP.CheckboxDoodle;\r\n\r\n //input_popup = new Input_Popup();\r\n hasItems = false;\r\n bound = false;\r\n fromPlacementId: string = null;\r\n toPlacementId: string = null;\r\n showParked: boolean;\r\n toScanTime: number = 0;\r\n static instance: App_Move_Stock;\r\n\r\n stickyWrapper: HTMLElement;\r\n stickyFooter: HTMLElement;\r\n stickyObserver: IntersectionObserver;\r\n constructor() {\r\n\r\n\r\n\r\n super(appId);\r\n\r\n //Make it stick\r\n this.stickyWrapper = document.getElementById('msq_sticky_footer_wrapper');\r\n this.stickyFooter = document.getElementById('msq_sticky_footer');\r\n this.stickyObserver = new IntersectionObserver((entries, observer) => {\r\n entries.forEach(entry => {\r\n // check if the element is exiting from the bottom\r\n if (!entry.isIntersecting && entry.boundingClientRect.top >= 0) {\r\n this.stickyFooter.style.position = 'fixed';\r\n this.stickyFooter.style.bottom = '0';\r\n } else if (entry.isIntersecting || entry.boundingClientRect.top < 0) {\r\n this.stickyFooter.style.position = 'static';\r\n }\r\n });\r\n }, { root: null, rootMargin: '0px', threshold: 1 });\r\n\r\n\r\n this.showParked = SP.getHash(\"parked\") == \"true\";\r\n\r\n this.msq_parked_button.addEventListener(\"click\", () => {\r\n this.showParked = !this.showParked;\r\n SP.setHash(\"parked\", this.showParked.toString())\r\n });\r\n\r\n\r\n this.msq_create_restocking_list_button.addEventListener(\"click\", () => {\r\n this.createRestockList();\r\n })\r\n\r\n\r\n let to: any = -1;\r\n this.msq_filter.addEventListener(\"keyup\", () => {\r\n clearTimeout(to);\r\n\r\n to = setTimeout(() => {\r\n this.loadPlacementItems(this.fromPlacementId, this.msq_filter.value);\r\n }, 500);\r\n });\r\n\r\n this.msq_filter_toggle.onChange = () => {\r\n for (let i = 0; i < this.infos.length; i++) {\r\n (this.infos[i] as any).dood.checked = this.msq_filter_toggle.checked;\r\n (this.infos[i] as any).dood.onChange();\r\n }\r\n };\r\n\r\n this.msq_filter_toggle.track.style.position = \"absolute\";\r\n this.msq_filter_toggle.track.style.zIndex = \"1000\";\r\n this.msq_filter_toggle.track.style.top = \"168px\";\r\n this.msq_filter_toggle.track.style.right = \"10px\";\r\n this.msq_filter_toggle.track.style.setProperty(\"margin-top\", \"0px\", \"important\");\r\n\r\n this.msq_confirm.addEventListener(\"click\", () => {\r\n this.performMove();\r\n });\r\n App_Move_Stock.instance = this;\r\n\r\n\r\n\r\n //select all checkbox\r\n var cb = this.msq_tote_area.appendChild(document.createElement(\"input\"));\r\n cb.type = \"checkbox\";\r\n var cd = this.cb_all_totes = new SP.CheckboxDoodle(cb);\r\n cd.track.setAttribute(\"style\", \"position:absolute; left:9px; top:-5px; margin:0px !important;\");\r\n cd.onChange = () => {\r\n for (var i = 0; i < this.totes.length; i++) {\r\n this.totes[i].checkbox.checked = cd.checked;\r\n }\r\n }\r\n this.msq_info_image.style.pointerEvents = \"all\";\r\n this.msq_info_image.addEventListener(\"click\", () => {\r\n placementPickerAssistant.open(this.currentCustomerId, null, (p) => {\r\n this.scanPlacement(p.id.toString());\r\n });\r\n });\r\n\r\n\r\n this.msq_to_location_info_image.style.pointerEvents = \"all\";\r\n this.msq_to_location_info_image.addEventListener(\"click\", () => {\r\n placementPickerAssistant.open(this.currentCustomerId, null, (p) => {\r\n this.scanPlacement(p.id.toString());\r\n });\r\n });\r\n }\r\n\r\n resetError() {\r\n this.msq_error.style.display = \"none\";\r\n this.msq_error.innerHTML = \"\";\r\n }\r\n\r\n reset() {\r\n this.cb_all_totes.checked = false;\r\n this.msq_filter.value = \"\";\r\n this.msq_confirm.style.display = \"none\";\r\n this.msq_info.style.display = \"block\";\r\n this.msq_data.style.display = \"none\";\r\n this.msq_to_location_info.style.display = \"block\";\r\n this.msq_to_location.style.display = \"none\";\r\n this.msq_from_location.innerHTML = \"\";\r\n this.msq_to_location.innerHTML = \"\";\r\n this.currentCustomerId = null;\r\n this.msq_items.innerHTML = \"\";\r\n this.msq_filter_toggle.checked = true;\r\n this.fromPlacementId = null;\r\n this.toPlacementId = null;\r\n this.toScanTime = 0;\r\n this.stickyObserver.unobserve(this.stickyWrapper);\r\n this.msq_sticky_footer.style.position = 'static';\r\n\r\n\r\n this.resetError();\r\n //this.input_popup.hide();\r\n\r\n\r\n this.msq_refill_area.style.display = \"none\";\r\n this.msq_restocklist_area.style.display = \"none\";\r\n this.msq_restock_area.style.display = \"none\";\r\n this.msq_tote_area.style.display = \"none\";\r\n }\r\n\r\n\r\n\r\n showError(message: string) {\r\n this.msq_error.innerHTML = message;\r\n this.msq_error.style.display = \"block\";\r\n SP.Sounds.Error.play();\r\n }\r\n\r\n infos: SP.StockingLotInfo[] = [];\r\n\r\n currentCustomerId: string;\r\n async loadPlacementItems(placementId: string, itemsearch: string) {\r\n this.currentCustomerId = null;\r\n this.msq_items.innerHTML = \"\";\r\n\r\n var response = await SP.get(\"/api/v1/info/stockingLotInfos/?maxResults=100&placementId=\" + placementId + \"&itemFilter=\" + (itemsearch ?? ''));\r\n\r\n if (response.status == 200) {\r\n this.infos = (response.data as SP.StockingLotInfo[]).filter(info => info.placementQuantity > 0);\r\n\r\n if (!itemsearch) document.documentElement.scrollTop = 0;\r\n\r\n var default_checked = this.infos.length <= 1;\r\n this.msq_filter_toggle.checked = default_checked;\r\n\r\n this.infos.forEach(i => {\r\n this.currentCustomerId = i.item.customerId;\r\n let name = `${i.item.manufacturerName} ${i.item.modelNo}`.trim();\r\n\r\n //elm\r\n let item = document.createElement(\"div\");\r\n item.classList.add(\"item\");\r\n item.style.opacity = default_checked ? \"1\" : \"0.5\";\r\n\r\n //tempalte\r\n item.innerHTML = `\r\n \r\n \r\n \r\n \r\n \r\n
\r\n ${i.item.sku} ${((name ? ` (${name})` : \"\"))}${(i.item.barcodes?.length > 0 ? ' ' + i.item.barcodes.join(',') + '' : '')}
${i.item.description}
\r\n ${this.GetLotBadges(i, true).outerHTML}\r\n
\r\n
\r\n \r\n \r\n
Max
${i.placementQuantity}
\r\n
`;\r\n\r\n //show other placements\r\n if (i.item.totalCombined > i.availableQuantity || i.item.preferredStockPlacementId) {\r\n item.innerHTML += `\r\n \r\n \r\n \r\n
`;\r\n\r\n let infoBox = item.querySelector(\".info-box\") as HTMLElement;\r\n let info = item.querySelector(\".info-button\") as HTMLElement;\r\n let loaded = false;\r\n\r\n let up = () => { infoBox.style.display = \"none\"; window.removeEventListener(\"pointerup\", up); }\r\n info.addEventListener(\"pointerdown\", async () => {\r\n window.addEventListener(\"pointerup\", up);\r\n if (!loaded) {\r\n loaded = true;\r\n let data = await SP.Data.StockingLot.getItemStockingLotInfos(i.item.id);\r\n\r\n if (i.item.preferredStockPlacementData && data.filter(lot => lot.stockPlacementData == i.item.preferredStockPlacementData).length == 0) {\r\n infoBox.innerHTML += ``;\r\n infoBox.appendChild(new PlacementInfoBox(i.item.preferredStockPlacementData, true, null).container);\r\n }\r\n\r\n data.filter(lot => lot.id != i.id).forEach(lot => {\r\n infoBox.innerHTML += `${lot.placementQuantity}`;\r\n infoBox.appendChild(new PlacementInfoBox(lot.stockPlacementData, true, null).container);\r\n });\r\n }\r\n infoBox.style.display = \"block\";\r\n });\r\n }\r\n\r\n //blur on enter\r\n let count_input = item.querySelector(\".count_input\") as HTMLInputElement;\r\n console.log(\"input:\", count_input);\r\n count_input.addEventListener(\"keydown\", (e: KeyboardEvent) => { if (e.keyCode == 13) { count_input.blur(); return false; } return true; });\r\n\r\n //select all on focus\r\n count_input.addEventListener(\"focus\", () => { count_input.select(); });\r\n\r\n //click to autofill max\r\n let total_span = item.querySelector(\".move_max\");\r\n total_span.addEventListener(\"click\", () => {\r\n var newVal = i.placementQuantity.toString();\r\n count_input.value = count_input.value == newVal ? \"0\" : newVal;\r\n });\r\n count_input.focus();\r\n\r\n //click for item info\r\n let image_span = item.querySelector(\".image\");\r\n image_span.addEventListener(\"click\", (e) => {\r\n itemShortcutAssistant.open_with_info(i.item);\r\n e.preventDefault(); e.stopPropagation();\r\n });\r\n\r\n //Create checkbox doodle\r\n let checkbox = item.querySelector(\".msq_sku_checkbox\") as HTMLInputElement;\r\n (i as any).dood = new SP.CheckboxDoodle(checkbox);\r\n (i as any).dood.onChange = () => { item.style.opacity = checkbox.checked ? \"1\" : \"0.5\"; };\r\n\r\n this.msq_items.appendChild(item);\r\n\r\n });\r\n }\r\n }\r\n\r\n async createRestockList() {\r\n var toteIds: number[] = [];\r\n for (let i = 0; i < this.totes.length; i++) {\r\n let box = this.totes[i];\r\n if (box.checkbox.checked) {\r\n toteIds.push(box.toteId);\r\n }\r\n }\r\n\r\n toteAndPlacementPickerAssistant.openWithTotes(toteIds, null, async (info) => {\r\n this.msq_create_restocking_list_button.classList.add(\"disabled\");\r\n StartLoading();\r\n\r\n var result = await SP.post(\"/api/v1/restock/create/\", {\r\n startLocationId: info.id,\r\n ToteIds: toteAndPlacementPickerAssistant.tote_ids\r\n });\r\n\r\n if (result.status != 200) {\r\n this.showError(result.msg);\r\n }\r\n else {\r\n SP.Sounds.Success.play();\r\n }\r\n\r\n StopLoading();\r\n this.msq_create_restocking_list_button.classList.remove(\"disabled\");\r\n SP.setAllHash({ \"app\": \"app_move_stock\", \"restocklist\": result.listId });\r\n\r\n });\r\n }\r\n\r\n async selectPlacementId(placementId: string, itemsearch: string) {\r\n\r\n\r\n if (!placementId) return;\r\n //if (placementId != this.fromPlacementId || itemsearch) {\r\n //this.reset();\r\n this.resetError()\r\n\r\n var samePlacement = this.fromPlacementId == placementId;\r\n\r\n\r\n //plus count instead of reload\r\n if (samePlacement && !App_Settings.wmsSettings.move_all_placement) {\r\n\r\n\r\n\r\n for (var i = 0; i < App_Move_Stock.instance.infos.length; i++) {\r\n let elm = App_Move_Stock.instance.infos[i];\r\n let elm_container = (elm as any).dood.track.parentElement;\r\n\r\n\r\n\r\n if (elm_container.outerHTML.includes(itemsearch)) {\r\n\r\n var isChecked = (elm as any).dood.checked;\r\n if (this.isRestockListOpen) {\r\n //wrong item scan\r\n if (!isChecked) {\r\n SP.Sounds.Error.play();\r\n this.showError(SP.Localize(\"sentance_scanning_wrong_item\"));\r\n return\r\n }\r\n }\r\n\r\n\r\n (elm as any).dood.checked = true;\r\n (elm as any).dood.onChange();\r\n var inp = elm_container.querySelector(\".count_input\") as HTMLInputElement;\r\n inp.value = (parseFloat(inp.value) + 1).toString();\r\n elm_container.parentElement.prepend(elm_container);\r\n return;\r\n }\r\n }\r\n\r\n if (this.isRestockListOpen) {\r\n SP.Sounds.Error.play();\r\n this.showError(SP.Localize(\"sentance_scanning_wrong_item\")!);\r\n return;\r\n }\r\n }\r\n\r\n\r\n\r\n this.fromPlacementId = placementId;\r\n\r\n\r\n ignoreHashChange = true;\r\n SP.setHash(\"placementId\", placementId);\r\n\r\n\r\n\r\n //get items\r\n\r\n ////Too many Items (must filter)\r\n //else if (response.status == 519) {\r\n // SP.Sounds.Error.play();\r\n // this.input_popup.show(\"Too many items on location, filter or scan item!\", \"Filter\", \"Filter / ean ...\", () => {\r\n // this.selectPlacementId(placementId, this.input_popup.value);\r\n // });\r\n //}\r\n\r\n await this.loadPlacementItems(placementId, itemsearch);\r\n //var fromplacementInfo = await SP.Data.Stock.getPlacementInfo(parseInt(placementId));\r\n\r\n\r\n\r\n this.hasItems = this.infos.length > 0;\r\n if (!this.hasItems) return this.showError(SP.Localize(\"sentance_no_items_found\") + \"!\");\r\n\r\n if (this.hasItems && !samePlacement) {\r\n const placement_box = new PlacementInfoBox(this.infos[0].stockPlacementData, true, null);\r\n this.msq_from_location.appendChild(placement_box.container);\r\n }\r\n\r\n this.msq_filter.style.display = this.msq_filter_toggle.track.style.display = this.infos.length > 1 ? \"block\" : \"none\";\r\n\r\n this.msq_info.style.display = \"none\";\r\n this.msq_data.style.display = \"block\";\r\n this.fromPlacementId = placementId;\r\n //}\r\n }\r\n\r\n async scanTote(toteId: string) {\r\n if (this.isRestockListOpen) {\r\n for (var lineId in this.restocklistLines) {\r\n let rll = this.restocklistLines[lineId];\r\n if (toteId == rll.data.fromToteId.toString()) {\r\n rll.menu.click();\r\n return;\r\n }\r\n }\r\n }\r\n\r\n\r\n\r\n var toteInfo = await SP.Data.Tote.getToteInfo(toteId, true);\r\n await this.scanPlacement(toteInfo.totePlacementId.toString());\r\n }\r\n\r\n async scanBarcode(bc: string) {\r\n //if (this.input_popup.open) {\r\n // this.input_popup.setExecute(bc);\r\n //}\r\n //else {\r\n console.log(\"from\", this.fromPlacementId);\r\n if (this.fromPlacementId) {\r\n this.selectPlacementId(this.fromPlacementId, bc);\r\n }\r\n else {\r\n itemSearchAssistant.open(null, bc, false, (iteminfo) => {\r\n if (iteminfo != null) {\r\n itemShortcutAssistant.open_with_info(iteminfo);\r\n }\r\n });\r\n }\r\n //}\r\n\r\n }\r\n\r\n scanning = false;\r\n async scanPlacement(placementId: string) {\r\n if (this.scanning) return;\r\n this.scanning = true;\r\n try {\r\n if (!placementId) return;\r\n\r\n if (this.fromPlacementId == null || this.fromPlacementId == placementId || !this.hasItems) {\r\n return await this.selectPlacementId(placementId, '');\r\n }\r\n\r\n var now = performance.now();\r\n\r\n //double scan\r\n if (placementId == this.toPlacementId && now - this.toScanTime <= 1000) {\r\n return await this.performMove();\r\n }\r\n else {\r\n //change location from restock list?\r\n if (this.isRestockListOpen && this.toPlacementId && this.toPlacementId != placementId && !await SP.confirmX(SP.Localize(\"text_move_change_location\") + \"?\")) return;\r\n\r\n this.toScanTime = now;\r\n if (this.toPlacementId != placementId)\r\n await this.selectToPlacement(placementId);\r\n if (App_Settings.userSettings.auto_double_scan_moving) return await this.performMove();\r\n\r\n }\r\n }\r\n finally {\r\n this.scanning = false;\r\n }\r\n }\r\n\r\n async selectToPlacement(placementId: string) {\r\n\r\n\r\n\r\n this.toPlacementId = placementId;\r\n var toLocation = await SP.Data.Stock.getPlacementInfo(placementId as any, true);\r\n const to_placement_box = new PlacementInfoBox(toLocation.data, true, null);\r\n this.msq_to_location.innerHTML = \"\";\r\n this.msq_to_location.appendChild(to_placement_box.container);\r\n this.msq_to_location_info.style.display = \"none\";\r\n this.msq_to_location.style.display = \"block\";\r\n ignoreHashChange = true;\r\n SP.setHash(\"toPlacementId\", placementId);\r\n this.msq_confirm.style.display = \"block\";\r\n\r\n\r\n\r\n setTimeout(() => {\r\n this.stickyWrapper.style.minHeight = `${this.stickyFooter.offsetHeight}px`;\r\n this.stickyFooter.style.position = 'static';\r\n this.stickyFooter.style.width = `${this.container.offsetWidth}px`;\r\n this.stickyObserver.observe(this.stickyWrapper);\r\n }, 10);\r\n }\r\n\r\n async performMove() {\r\n var markedCheckbox = document.querySelectorAll('.msq_sku_checkbox:checked') as any;\r\n var ids: any = {};\r\n\r\n for (var checkbox of markedCheckbox) {\r\n var id = checkbox.value;\r\n var qty = parseFloat((document.getElementById(\"msq_count_\" + id) as HTMLInputElement).value);\r\n if (qty > 0) {\r\n ids[id] = qty;\r\n }\r\n }\r\n let currentRestockListLine = SP.getHash(\"restocklistline\");\r\n var postData = { from: this.fromPlacementId, to: this.toPlacementId, ids: ids, restockListLineId: currentRestockListLine };\r\n console.log(\"postData:\", postData);\r\n\r\n if (Object.keys(ids).length == 0) {\r\n this.showError(\"NoItemsMoved\");\r\n return;\r\n }\r\n\r\n var result = await SP.post(\"/api/v1/stockinglot/move\", postData);\r\n\r\n var restocklistId = SP.getHash(\"restocklist\") ?? undefined;\r\n\r\n if (result.status == 200) {\r\n this.reset();\r\n SP.setAllHash({ \"app\": \"app_move_stock\", \"restocklist\": restocklistId });\r\n SP.Sounds.Success.play();\r\n }\r\n else {\r\n this.showError(result.msg);\r\n }\r\n console.log(result);\r\n }\r\n\r\n\r\n GetLotBadges(lot: SP.StockingLotInfo, soloView: boolean) {\r\n let info = document.createElement(\"span\");\r\n\r\n //Show expiration\r\n if (soloView && lot.isReturn) {\r\n let label = document.createElement(\"span\");\r\n label.classList.add(\"label\");\r\n label.innerHTML = SP.Localize(\"word_return\");\r\n label.style.backgroundColor = \"#c63636\";\r\n info.appendChild(label);\r\n info.innerHTML += \" \";\r\n }\r\n\r\n //Show expiration\r\n if (soloView && lot.item.expirable) {\r\n let label = document.createElement(\"span\");\r\n label.classList.add(\"label\");\r\n label.innerHTML = lot.expirationDate;\r\n label.style.backgroundColor = \"#636363\";\r\n info.appendChild(label);\r\n info.innerHTML += \" \";\r\n }\r\n\r\n //show arrival date\r\n else if (soloView && lot.item.useFifo) {\r\n let label = document.createElement(\"span\");\r\n label.classList.add(\"label\");\r\n label.innerHTML = lot.arrivalDate;\r\n label.style.backgroundColor = \"#636363\";\r\n info.appendChild(label);\r\n info.innerHTML += \" \";\r\n }\r\n\r\n //batch number\r\n if (soloView && lot.batchNumber) {\r\n let label = document.createElement(\"span\");\r\n label.classList.add(\"label\");\r\n label.innerHTML = lot.batchNumber;\r\n label.style.backgroundColor = \"#636363\";\r\n info.appendChild(label);\r\n info.innerHTML += \" \";\r\n }\r\n\r\n if (lot.itemReservedQuantity > 0) {\r\n let label = document.createElement(\"span\");\r\n label.classList.add(\"label\");\r\n label.innerHTML = \"\" + lot.itemReservedQuantity + \" \" + SP.Localize(\"sentance_in_order\") + \" (\" + lot.itemReservedToCountries + \")\";\r\n info.appendChild(label);\r\n info.innerHTML += \" \";\r\n }\r\n\r\n if (lot.itemRefillRequired) {\r\n let label = document.createElement(\"span\");\r\n label.classList.add(\"label\");\r\n label.innerHTML = '';\r\n label.style.backgroundColor = \"#ff771e\";\r\n info.appendChild(label);\r\n info.innerHTML += \" \";\r\n }\r\n\r\n if (lot.item.refillLimit) {\r\n let lable = document.createElement(\"span\");\r\n lable.classList.add(\"label\");\r\n lable.style.backgroundColor = \"#4b7fe9\";\r\n lable.innerHTML = SP.Localize(\"sentance_refill_limit\") + \": \" + lot.item.refillLimit;\r\n info.appendChild(lable);\r\n info.innerHTML += \" \";\r\n }\r\n\r\n if (lot.item.refillMax) {\r\n var max = document.createElement(\"span\");\r\n max.classList.add(\"label\");\r\n max.style.backgroundColor = \"#454545\";\r\n max.innerHTML = SP.Localize(\"sentance_refill_max\") + \": \" + lot.item.refillMax;\r\n info.appendChild(max);\r\n info.innerHTML += \" \";\r\n }\r\n return info;\r\n }\r\n\r\n async loadRefillList() {\r\n var locationRefillData = await SP.Data.StockingLot.getRefillStockingLotInfos();\r\n //console.log(\"her:\", locationRefillData);\r\n //console.log(data);\r\n this.msq_refill_list.innerHTML = \"\";\r\n this.msq_parked_list.innerHTML = \"\";\r\n\r\n\r\n\r\n for (let i = 0; i < locationRefillData.length; i++) {\r\n var locationData = locationRefillData[i];\r\n var locationKey = locationData.key;\r\n\r\n\r\n //add location headers if multiple locations\r\n if (true/*locationRefillData.length > 1*/) {\r\n var header1 = document.createElement(\"h1\");\r\n header1.innerHTML = locationKey += \" (\" + locationData.value.length + \")\";\r\n\r\n var header2 = document.createElement(\"h1\");\r\n header2.innerHTML = locationKey += \" (\" + locationData.value.length + \")\";\r\n\r\n header1.addEventListener(\"click\", (ev) => {\r\n var elms = document.querySelectorAll(\".loc_\" + i);\r\n elms.forEach(e => {\r\n if ((e as HTMLElement).style.display == \"none\")\r\n (e as HTMLElement).style.display = \"\";\r\n else\r\n (e as HTMLElement).style.display = \"none\";\r\n });\r\n })\r\n\r\n header2.addEventListener(\"click\", (ev) => {\r\n var elms = document.querySelectorAll(\".loc_\" + i);\r\n elms.forEach(e => {\r\n if ((e as HTMLElement).style.display == \"none\")\r\n (e as HTMLElement).style.display = \"\";\r\n else\r\n (e as HTMLElement).style.display = \"none\";\r\n });\r\n })\r\n\r\n this.msq_refill_list.appendChild(header1);\r\n this.msq_parked_list.appendChild(header2);\r\n }\r\n\r\n // this.msq_parked_list.appendChild(box_container);\r\n // this.msq_refill_list.appendChild(box_container);\r\n\r\n for (let x = 0; x < locationData.value.length; x++) {\r\n let itemRefillData = locationData.value[x];\r\n let lot = itemRefillData.lots[0];\r\n\r\n var box = new LotInfoBox(lot);\r\n box.text_container.appendChild(this.GetLotBadges(lot, false));\r\n let box_container = document.createElement(\"div\");\r\n\r\n\r\n var menu = new SP.SwipeMenu(\r\n /*Element*/\r\n box.container,\r\n\r\n /*Click Event*/\r\n null,\r\n\r\n /*buttons*/\r\n [\r\n\r\n /*park Button*/\r\n {\r\n icon: \"\", text: SP.Localize(\"sentance_park_unpark_refill\"), color: \"#3e7faf\", confirm: false, action: async () => {\r\n itemParkingAssistant.open(lot.item, (parked) => {\r\n if (parked) {\r\n this.msq_parked_list.appendChild(box_container);\r\n }\r\n else {\r\n this.msq_refill_list.appendChild(box_container);\r\n }\r\n this.updateParkedAndRefillInfo();\r\n });\r\n menu.return();\r\n\r\n }\r\n },\r\n\r\n ],\r\n /*group*/\r\n \"app_restock_totes\"\r\n );\r\n\r\n\r\n\r\n box_container.appendChild(box.container);\r\n\r\n if (lot.item.refillParked)\r\n this.msq_parked_list.appendChild(box_container);\r\n else\r\n this.msq_refill_list.appendChild(box_container);\r\n\r\n\r\n\r\n box_container.classList.add(\"loc_\" + i);\r\n\r\n //add extra locations\r\n for (let i = 1; i < itemRefillData.lots.length; i++) {\r\n box.addExtraPlacmentInfoBox(itemRefillData.lots[i]);\r\n }\r\n }\r\n }\r\n\r\n this.updateParkedAndRefillInfo();\r\n\r\n }\r\n\r\n updateParkedAndRefillInfo() {\r\n this.msq_parked_button.style.display = \"none\";\r\n let parkedCount = this.msq_parked_list.querySelectorAll(\".item_box1\").length;\r\n let refillCount = this.msq_refill_list.querySelectorAll(\".item_box1\").length;\r\n let hasRefill = parkedCount + refillCount > 0;\r\n this.msq_parked_count.innerHTML = `${this.showParked ? refillCount : parkedCount} ${this.showParked ? SP.Localize(\"word_normal\") : SP.Localize(\"word_parked\")}`\r\n this.msq_parked_button.style.display = this.showParked && refillCount || parkedCount ? \"flex\" : \"none\";\r\n this.msq_refill_area.style.display = hasRefill ? \"block\" : \"none\";\r\n this.msq_parked_list.style.display = hasRefill && this.showParked ? \"block\" : \"none\";\r\n this.msq_refill_list.style.display = hasRefill && !this.showParked ? \"block\" : \"none\";\r\n\r\n\r\n if (hasRefill) {\r\n }\r\n\r\n }\r\n\r\n totes: ToteContentInfoBox[];\r\n\r\n async loadToteList() {\r\n this.totes = [];\r\n var data = await SP.Data.Tote.getMoveToteInfos();\r\n //console.log(data);\r\n\r\n this.msq_tote_list.innerHTML = \"\";\r\n this.msq_tote_area.style.display = data.length ? \"block\" : \"none\";\r\n\r\n for (let i = 0; i < data.length; i++) {\r\n let ti = data[i];\r\n let box = new ToteContentInfoBox(ti);\r\n this.msq_tote_list.appendChild(box.container);\r\n box.inner_container.addEventListener(\"click\", () => {\r\n SP.setAllHash({ \"app\": \"app_move_stock\", \"placementId\": box.placementId.toString() });\r\n });\r\n this.totes.push(box);\r\n }\r\n }\r\n\r\n restocklists: { [id: number]: RestockListElement } = {};\r\n async loadRestockLists() {\r\n this.restocklists = {};\r\n var data = await SP.Data.RestockList.getRestockListInfos();\r\n //console.log(\"restock lists:\", data);\r\n\r\n this.msq_restock_list.innerHTML = \"\";\r\n this.msq_restock_area.style.display = data.length ? \"block\" : \"none\";\r\n\r\n for (let i = 0; i < data.length; i++) {\r\n let ri = data[i];\r\n this.RestockListAdded(ri);\r\n }\r\n }\r\n\r\n\r\n restocklistLines: { [id: string]: RestockListLineElement } = {};\r\n async loadRestockListLines(id: number) {\r\n this.restocklistLines = {};\r\n var data = await SP.Data.RestockList.getRestockListInfo(id);\r\n\r\n //list finishied \r\n if (!data) {\r\n await this.close();\r\n this.open();\r\n return;\r\n }\r\n this.msq_restocklist_list.innerHTML = \"\";\r\n this.msq_restocklist_area.style.display = data != null ? \"block\" : \"none\";\r\n\r\n for (let i = 0; i < data.lines.length; i++) {\r\n let ri = data.lines[i];\r\n this.RestockListLineAdded(ri);\r\n }\r\n }\r\n\r\n RestockListLineAdded(data: SP.RestockListLineInfo) {\r\n var current = this.restocklistLines[data.id];\r\n if (current == null) {\r\n current = this.restocklistLines[data.id] = new RestockListLineElement(data);\r\n this.msq_restocklist_list.appendChild(current.html);\r\n }\r\n }\r\n\r\n RestockListAdded(data: SP.RestockListInfo) {\r\n var current = this.restocklists[data.id];\r\n if (current == null) {\r\n current = this.restocklists[data.id] = new RestockListElement(data);\r\n this.msq_restock_list.appendChild(current.html);\r\n }\r\n }\r\n\r\n RestockListUpdated(data: SP.RestockListInfo) {\r\n var current = this.restocklists[data.id];\r\n\r\n if (data.finished) {\r\n current.menu.remove();\r\n current.html.remove();\r\n delete this.restocklists[data.id];\r\n return;\r\n }\r\n\r\n current.data = data;\r\n current.updateText();\r\n }\r\n\r\n RestocklistDeleted(data: SP.RestockListInfo) {\r\n var current = this.restocklists[data.id];\r\n if (current != null) {\r\n current.menu.remove();\r\n current.html.remove();\r\n }\r\n }\r\n\r\n isRestockListOpen: boolean;\r\n\r\n async onOpen() {\r\n this.reset();\r\n await this.selectPlacementId(SP.getHash(\"placementId\"), '');\r\n if (SP.getHash(\"toPlacementId\")) await this.selectToPlacement(SP.getHash(\"toPlacementId\"));\r\n\r\n\r\n\r\n var restocklistId = SP.getHash(\"restocklist\");\r\n console.log(\"restocklistid:\", restocklistId);\r\n if (restocklistId) {\r\n this.isRestockListOpen = true;\r\n await this.loadRestockListLines(parseInt(restocklistId));\r\n }\r\n else {\r\n this.isRestockListOpen = false;\r\n await this.loadRefillList();\r\n await this.loadToteList();\r\n await this.loadRestockLists();\r\n }\r\n //bind events and groups\r\n if (!this.bound) {\r\n this.bound = true;\r\n barcodeListener.on(\"sp\", this.scanPlacement, this);\r\n barcodeListener.on(\"t\", this.scanTote, this);\r\n barcodeListener.on(null, this.scanBarcode, this);\r\n }\r\n\r\n var filter = SP.getHash(\"filter\");\r\n if (filter) {\r\n this.msq_filter.value = filter;\r\n this.loadPlacementItems(this.fromPlacementId, filter);\r\n }\r\n }\r\n\r\n async onClose() {\r\n\r\n\r\n //unbind events and groups\r\n if (this.bound) {\r\n this.bound = false;\r\n barcodeListener.off(\"sp\", this.scanPlacement);\r\n barcodeListener.off(\"t\", this.scanTote);\r\n barcodeListener.off(null, this.scanBarcode);\r\n }\r\n this.reset();\r\n }\r\n\r\n\r\n\r\n }\r\n\r\n RegisterApp(appId, App_Move_Stock);\r\n}","/// \r\n\r\nnamespace TerminalApp {\r\n let appId = \"app_order_info\";\r\n\r\n export class App_Order_Info extends AppBase {\r\n bound = false;\r\n\r\n // Btns\r\n button_search_item = document.getElementById(\"order_info_search_order\");\r\n button_search_ean = document.getElementById(\"order_info_search_tote\");\r\n\r\n orderInfo_btn_address = document.querySelector(\".order-info-btn-address\");\r\n orderInfo_btn_delivery = document.querySelector(\".order-info-btn-delivery\");\r\n orderInfo_btn_droppoint = document.querySelector(\".order-info-btn-droppoint\");\r\n\r\n // Scanner Logo\r\n orderInfo_scan_logo = document.getElementById(\"orderInfo-scan-logo\") as HTMLElement;\r\n\r\n // Scanned Tote\r\n orderInfo_showTote_overall_container = document.querySelector(\".orderInfo-showTote-overall-container\") as HTMLElement;\r\n orderInfo_showTote_container = document.querySelector(\".orderInfo-showTote-container\") as HTMLElement;\r\n orderInfo_ErrorMsg_text = document.querySelector(\".orderInfo-scan-emptyScannedTote\") as HTMLElement;\r\n\r\n // Order\r\n orderInfo_shopName_input = document.getElementById(\"orderInfo-shopName\") as HTMLElement;\r\n orderInfo_referenceNo_input = document.getElementById(\"orderInfo-ReferenceNo\") as HTMLElement;\r\n orderInfo_orderNo_input = document.getElementById(\"orderInfo-OrderNo\") as HTMLElement;\r\n orderInfo_status_input = document.getElementById(\"orderInfo-status\") as HTMLElement;\r\n\r\n order_info_orderLines_holder = document.querySelector(\".order-info-orderLines\") as HTMLElement;\r\n\r\n orderInfo_customerNote_overall_container = document.querySelector(\".order-info-customerNote-overall-container\") as HTMLElement;\r\n orderInfo_customerNote_textarea = document.querySelector(\".order-info-customerNote-textarea\") as HTMLTextAreaElement;\r\n\r\n orderInfo_orderNote_overall_container = document.querySelector(\".order-info-orderNote-overall-container\") as HTMLElement;\r\n orderInfo_orderNote_click_container = document.querySelector(\".order-info-textarea-btn\") as HTMLElement;\r\n orderInfo_orderNote_textarea = document.querySelector(\".order-info-orderNote-textarea\") as HTMLTextAreaElement;\r\n\r\n orderInfo_deliveryMethod = document.getElementById(\"orderInfo-deliveryMethod\") as HTMLElement;\r\n orderInfo_droppoint = document.getElementById(\"orderInfo-droppoint\") as HTMLElement;\r\n\r\n order_info_container: HTMLElement;\r\n order_info_overall_container: HTMLElement;\r\n\r\n addressForm: AddressFormAssistant;\r\n delivery_method_picker = new PickAssistant(SP.Localize(\"sentance_select_delivery_method\"));\r\n droppoint_picker = new PickAssistant(SP.Localize(\"sentance_select_droppoint\"));\r\n orderAssistant: OrderSearcherAssistant;\r\n orderNoteForm: OrderNoteForm;\r\n\r\n currentOrder: SP.OrderInfo;\r\n currentCustomer: SP.CustomerInfo;\r\n\r\n isDropPoint = false;\r\n\r\n constructor() {\r\n super(appId);\r\n\r\n this.addressForm = new AddressFormAssistant();\r\n this.orderAssistant = new OrderSearcherAssistant();\r\n this.orderNoteForm = new OrderNoteForm();\r\n this.container.appendChild(this.addressForm.container);\r\n this.container.appendChild(this.delivery_method_picker.container);\r\n this.container.appendChild(this.droppoint_picker.container);\r\n this.container.appendChild(this.orderAssistant.container);\r\n this.container.appendChild(this.orderNoteForm.container);\r\n\r\n // Search Order Btn\r\n this.button_search_item.addEventListener(\"click\", () => {\r\n SP.Sounds.Click.play();\r\n this.orderAssistant.open((order, customer) => {\r\n this.showOrderDetails(order, customer);\r\n });\r\n });\r\n\r\n // Search Tote Btn\r\n this.button_search_ean.addEventListener(\"click\", () => {\r\n SP.Sounds.Click.play();\r\n toteAssistant.open(false, (toteId) => {\r\n this.scanTote(toteId.toString());\r\n });\r\n });\r\n\r\n // Edit address btn\r\n this.orderInfo_btn_address.addEventListener(\"click\", () => {\r\n SP.Sounds.Click.play();\r\n this.addressForm.open(this.currentOrder);\r\n })\r\n\r\n // Edit delivery btn\r\n this.orderInfo_btn_delivery.addEventListener(\"click\", async () => {\r\n SP.Sounds.Click.play();\r\n await this.delivery_method_picker.open(dm => {\r\n this.setDeliveryMethod(dm);\r\n });\r\n });\r\n\r\n // Edit droppoint btn\r\n this.orderInfo_btn_droppoint.addEventListener(\"click\", async () => {\r\n if (!this.isDropPoint) {\r\n return;\r\n }\r\n\r\n SP.Sounds.Click.play();\r\n this.updateDroppoints();\r\n\r\n await this.droppoint_picker.open(dropPoint => {\r\n this.setDroppoint(dropPoint);\r\n })\r\n });\r\n\r\n // Edit order note btn\r\n this.orderInfo_orderNote_click_container.addEventListener(\"click\", () => {\r\n SP.Sounds.Click.play();\r\n this.orderNoteForm.open(this.currentOrder, (note) => {\r\n this.setOrderNote(note);\r\n });\r\n });\r\n\r\n this.order_info_overall_container = document.querySelector(\".order-info-overall-container\");\r\n this.order_info_container = this.order_info_overall_container.querySelector(\".order-info-container\");\r\n }\r\n\r\n async onOpen() {\r\n this.reset();\r\n\r\n if (!this.bound) {\r\n this.bound = true;\r\n barcodeListener.on(\"t\", this.scanTote, this); // t står for tote, stregkoden starter med t_\r\n }\r\n\r\n var orderid = SP.getHash(\"orderId\");\r\n if (orderid) {\r\n this.showOrderDetailsById(parseInt(orderid));\r\n }\r\n }\r\n\r\n async onClose() {\r\n if (this.bound) {\r\n this.bound = false;\r\n barcodeListener.off(\"t\", this.scanTote);\r\n }\r\n\r\n this.reset();\r\n }\r\n\r\n\r\n reset() {\r\n this.currentOrder = null;\r\n this.currentCustomer = null;\r\n\r\n\r\n this.orderInfo_scan_logo.style.display = \"block\";\r\n this.orderInfo_ErrorMsg_text.style.display = \"none\";\r\n\r\n this.orderInfo_showTote_overall_container.style.display = \"none\";\r\n this.order_info_container.style.display = \"none\";\r\n\r\n this.orderInfo_customerNote_overall_container.style.display = \"none\";\r\n\r\n this.resetInput();\r\n\r\n this.orderInfo_showTote_container.innerHTML = \"\";\r\n this.order_info_orderLines_holder.innerHTML = \"\";\r\n\r\n this.isDropPoint = false;\r\n }\r\n\r\n resetInput() {\r\n this.orderInfo_btn_delivery.setAttribute(\"data-deliverymethodid\", \"\");\r\n\r\n this.orderInfo_shopName_input.innerText = \"\";\r\n this.orderInfo_referenceNo_input.innerText = \"\";\r\n this.orderInfo_orderNo_input.innerText = \"\";\r\n this.orderInfo_status_input.innerHTML = \"\";\r\n\r\n this.orderInfo_deliveryMethod.innerText = \"\";\r\n this.orderInfo_droppoint.innerText = \"\";\r\n\r\n this.orderInfo_customerNote_textarea.value = \"\";\r\n this.orderInfo_orderNote_textarea.value = \"\";\r\n }\r\n\r\n async scanTote(toteId: string) {\r\n this.reset();\r\n\r\n var toteInfo = await SP.Data.Tote.getToteInfo(toteId);\r\n\r\n if (toteInfo == null || toteInfo.picks.length == 0) {\r\n SP.Sounds.Error.play();\r\n SP.Sounds.Vibrate;\r\n this.orderInfo_ErrorMsg_text.style.display = \"block\";\r\n return;\r\n }\r\n\r\n if (toteInfo.shipmentId) {\r\n var shipment = await SP.Data.Shipment.getShipmentInfo(toteInfo.shipmentId);\r\n\r\n this.showOrderDetailsById(shipment.order.orderId);\r\n }\r\n }\r\n\r\n async showOrderDetailsById(orderId: number) {\r\n if (!orderId) {\r\n return;\r\n }\r\n\r\n StartLoading();\r\n try {\r\n let order = await SP.Data.Order.getOrderInfo(orderId);\r\n\r\n const customer = await SP.Data.Customer.getCustomerInfo(order.customerId.toString(), true);\r\n this.showOrderDetails(order, customer);\r\n }\r\n finally {\r\n StopLoading();\r\n }\r\n }\r\n\r\n async showOrderDetails(order: SP.OrderInfo, customer: SP.CustomerInfo) {\r\n if (this.currentOrder != order) {\r\n this.reset();\r\n ignoreHashChange = true;\r\n SP.setHash(\"orderId\", order.orderId.toString());\r\n await SP.sleep(1);\r\n ignoreHashChange = false;\r\n\r\n this.currentOrder = order;\r\n this.currentCustomer = customer;\r\n\r\n // Outputs all totes the order is in as html elements\r\n await this.addTotes(order.orderId);\r\n\r\n // Reference\r\n this.orderInfo_shopName_input.innerText = customer.customerName.toString();\r\n this.orderInfo_referenceNo_input.innerText = order.referenceNo.toString();\r\n this.orderInfo_orderNo_input.innerText = order.orderNo.toString();\r\n this.setState(order.state.toString());\r\n\r\n // Delivery Method\r\n this.isDropPoint = order.deliveryMethodInfo.isDropPoint;\r\n this.orderInfo_btn_delivery.setAttribute(\"data-deliverymethodid\", order.deliveryMethodInfo.id);\r\n\r\n this.orderInfo_deliveryMethod.innerText = order.deliveryMethodInfo.name.toString();\r\n\r\n if (order.deliveryMethodInfo.isDropPoint) {\r\n this.orderInfo_droppoint.innerText = order.droppointId.toString();\r\n }\r\n else {\r\n this.orderInfo_droppoint.innerText = SP.Localize(\"sentance_not_applicable\");\r\n }\r\n\r\n if (order.customerComment.length != 0) {\r\n this.orderInfo_customerNote_overall_container.style.display = \"block\";\r\n this.orderInfo_customerNote_textarea.value = order.customerComment;\r\n }\r\n\r\n if (order.note.length != 0) {\r\n this.orderInfo_orderNote_textarea.value = order.note;\r\n }\r\n\r\n // OrderLines\r\n this.addOrderLines(order);\r\n\r\n // Hide scan logo and text\r\n this.orderInfo_scan_logo.style.display = \"none\";\r\n\r\n // Show info container\r\n this.order_info_container.style.display = \"block\";\r\n }\r\n\r\n this.updateDeliveryMethods();\r\n }\r\n\r\n\r\n setState(state: string) {\r\n if (state == SP.OrderState.ReadyForPacking.toString()) {\r\n this.orderInfo_status_input.innerHTML = `\r\n ${SP.Localize(\"sentance_ready_for_packing\")}\r\n `;\r\n }\r\n else if (state == SP.OrderState.Packing.toString()) {\r\n this.orderInfo_status_input.innerHTML = `\r\n ${SP.Localize(\"sentance_being_packed\")}\r\n `;\r\n }\r\n else if (state == SP.OrderState.Packed.toString()) {\r\n this.orderInfo_status_input.innerHTML = `\r\n ${SP.Localize(\"word_packed\")}\r\n `;\r\n }\r\n else if (state == SP.OrderState.ItemsMissing.toString()) {\r\n this.orderInfo_status_input.innerHTML = `\r\n ${SP.Localize(\"sentance_missing_items\")}\r\n `;\r\n }\r\n else if (state == SP.OrderState.Error.toString()) {\r\n this.orderInfo_status_input.innerHTML = `\r\n ${SP.Localize(\"word_error\")}\r\n `;\r\n }\r\n else if (state == SP.OrderState.Cancelled.toString()) {\r\n this.orderInfo_status_input.innerHTML = `\r\n ${SP.Localize(\"word_canceled\")}\r\n `;\r\n }\r\n }\r\n\r\n setOrderNote(note: string) {\r\n this.orderInfo_orderNote_textarea.value = note;\r\n }\r\n\r\n async setDeliveryMethod(deliveryMethod: SP.DeliveryMethod) {\r\n SP.Sounds.Click.play();\r\n\r\n this.orderInfo_btn_delivery.setAttribute(\"data-deliverymethodid\", deliveryMethod.id);\r\n this.orderInfo_deliveryMethod.innerText = deliveryMethod.name;\r\n\r\n this.isDropPoint = deliveryMethod.isDropPoint;\r\n\r\n if (deliveryMethod.isDropPoint) {\r\n this.orderInfo_droppoint.innerText = SP.Localize(\"sentance_select_droppoint\");\r\n }\r\n else {\r\n this.orderInfo_droppoint.innerText = SP.Localize(\"sentance_not_applicable\");\r\n }\r\n\r\n var postData = {\r\n id: this.currentOrder.orderId,\r\n CustomerId: this.currentOrder.customerId,\r\n deliveryMethod: deliveryMethod.methodKeys.split(\",\")[0]\r\n };\r\n\r\n/* StartLoading();*/\r\n\r\n try {\r\n let result = await SP.post(\"/api/v1/order/update\", postData);\r\n } catch {\r\n/* StopLoading();*/\r\n SP.alertX(\"Error trying to save deliverymethod\");\r\n }\r\n finally {\r\n/* StopLoading();*/\r\n }\r\n }\r\n\r\n async setDroppoint(droppoint: SP.DropPointInfo) {\r\n console.log(droppoint);\r\n this.orderInfo_droppoint.innerText = droppoint.id;\r\n\r\n let postData = {\r\n Id: this.currentOrder.orderId,\r\n CustomerId: this.currentOrder.customerId,\r\n DroppointId: droppoint.id,\r\n }\r\n\r\n //StartLoading();\r\n\r\n try {\r\n let result = await SP.post(\"/api/v1/order/update\", postData);\r\n } catch {\r\n //StopLoading();\r\n SP.alertX(\"Error trying to save droppoint\");\r\n }\r\n finally {\r\n //StopLoading();\r\n }\r\n }\r\n\r\n addOrderLine(o: SP.OrderLineInfo) {\r\n let description = o.itemInfo?.description;\r\n if (description == null || description == \"\") {\r\n description = o.description ?? \"\";\r\n }\r\n\r\n var elm = document.createElement(\"div\");\r\n elm.innerHTML = `\r\n
\r\n
\r\n
\r\n \r\n \r\n\r\n
\r\n \r\n
\r\n \r\n
\r\n
\r\n

${description}

\r\n ${o.itemInfo?.sku ?? \"\"}\r\n
\r\n\r\n
\r\n

${o.qty}

\r\n
\r\n
\r\n\r\n
\r\n
\r\n
\r\n `;\r\n\r\n var img = elm.querySelector(\".order-info-orderLine-image\") as HTMLElement;\r\n img.style.pointerEvents = \"all\";\r\n\r\n if (o.itemInfo) {\r\n img.addEventListener(\"click\", () => {\r\n SP.Sounds.Click.play();\r\n itemShortcutAssistant.open_with_info(o.itemInfo);\r\n });\r\n }\r\n\r\n this.order_info_orderLines_holder.appendChild(elm);\r\n }\r\n\r\n // Output all order lines\r\n addOrderLines(order: SP.OrderInfo) {\r\n\r\n order.items.forEach(o => {\r\n if (o.bundleParent != null) return;\r\n\r\n this.addOrderLine(o);\r\n order.items.forEach(c => {\r\n if (c.bundleParent == o.id)\r\n this.addOrderLine(c);\r\n });\r\n\r\n });\r\n }\r\n\r\n updateDeliveryMethods() {\r\n this.delivery_method_picker.clear();\r\n for (let key in this.currentCustomer.deliveryMethods) {\r\n let m = this.currentCustomer.deliveryMethods[key];\r\n if (m.isReturn) continue;\r\n if (m.orderSources.length && !m.orderSources.includes(this.currentOrder.orderSource)) continue;\r\n\r\n var localPrices = m.prices[this.currentOrder.recipient.country.toUpperCase()];\r\n let available = localPrices != null;\r\n\r\n (m as any).available = available;\r\n this.delivery_method_picker.addItem(m, available, m.name, \"\");\r\n }\r\n }\r\n\r\n async updateDroppoints() {\r\n this.droppoint_picker.clear();\r\n\r\n try {\r\n let order = this.currentOrder;\r\n let currentDeliveryMethodId = this.orderInfo_btn_delivery.getAttribute(\"data-deliverymethodid\");\r\n\r\n var droppoints = await SP.Data.DeliveryMethod.getDroppoints(currentDeliveryMethodId, order.customerId, order.recipient.country, order.recipient.zipcode, order.recipient.city, order.recipient.street1);\r\n if (!droppoints || droppoints == null) {\r\n await SP.alertX(\"No droppoints found\");\r\n }\r\n\r\n for (let key in droppoints) {\r\n let droppoint = droppoints[key];\r\n\r\n let dpName = `${droppoint.name} (${droppoint.distance})`;\r\n\r\n this.droppoint_picker.addItem(droppoint, true, dpName, \"\");\r\n }\r\n } catch {\r\n SP.alertX(\"Error\");\r\n }\r\n }\r\n\r\n // Output all tote as html elements\r\n async addTotes(orderId: number) {\r\n var totes = await SP.Data.Tote.getOrderToteInfos(orderId.toString());\r\n\r\n if (totes.length == 0) {\r\n return;\r\n }\r\n\r\n // Show scanned totes\r\n this.orderInfo_showTote_overall_container.style.display = \"block\";\r\n\r\n totes.forEach(t => {\r\n var piBox = new PlacementInfoBox(t.totePlacementData, true, null);\r\n\r\n let toteHtml = `\r\n
\r\n
\r\n \r\n
\r\n
\r\n `;\r\n\r\n // Append as last child\r\n this.orderInfo_showTote_container.insertAdjacentHTML(\"beforeend\", toteHtml);\r\n this.orderInfo_showTote_container.lastElementChild.querySelector(\".setting\").appendChild(piBox.container);\r\n });\r\n }\r\n\r\n }\r\n\r\n\r\n RegisterApp(appId, App_Order_Info);\r\n}","/// \r\n/// \r\n\r\nnamespace TerminalApp {\r\n\r\n export class ShipmentInfoDialog {\r\n container = document.getElementById(\"oid\");\r\n oid_order_data = document.getElementById(\"oid_order_data\");\r\n oid_recipient = document.getElementById(\"oid_recipient\");\r\n oid_sender = document.getElementById(\"oid_sender\");\r\n oid_items = document.getElementById(\"oid_items\");\r\n oid_labels = document.getElementById(\"oid_labels\");\r\n oid_close = document.getElementById(\"oid_close\");\r\n oid_delivery_methods = document.getElementById(\"oid_delivery_methods\") as HTMLSelectElement;\r\n oid_parcel_type = document.getElementById(\"oid_parcel_type\") as HTMLSelectElement;\r\n oid_print_extra_button = document.getElementById(\"oid_print_extra_button\");\r\n oid_print_note_button = document.getElementById(\"oid_print_note_button\");\r\n oid_extra_width = document.getElementById(\"oid_extra_width\") as HTMLInputElement;\r\n oid_extra_length = document.getElementById(\"oid_extra_length\") as HTMLInputElement;\r\n oid_extra_height = document.getElementById(\"oid_extra_height\") as HTMLInputElement;\r\n oid_extra_weight = document.getElementById(\"oid_extra_weight\") as HTMLInputElement;\r\n customer: SP.CustomerInfo;\r\n shipment: SP.ShipmentInfo;\r\n constructor() {\r\n this.oid_close.addEventListener(\"click\", () => {\r\n this.close();\r\n });\r\n\r\n\r\n this.oid_print_extra_button.addEventListener(\"click\", () => {\r\n this.printExtra();\r\n\r\n });\r\n\r\n this.oid_print_note_button.addEventListener(\"click\", () => {\r\n this.printDeliveryNote();\r\n });\r\n\r\n this.oid_delivery_methods.addEventListener(\"change\", () => {\r\n this.updateParcelTypes();\r\n });\r\n }\r\n\r\n updateParcelTypes() {\r\n var method = this.customer.deliveryMethods[this.oid_delivery_methods.value];\r\n var parcelTypes = method != null ? method.parcelTypes.filter(pt => pt.enabled) : [];\r\n this.oid_parcel_type.innerHTML = \"\";\r\n\r\n\r\n parcelTypes.forEach(pt => {\r\n var opt = document.createElement(\"option\");\r\n opt.text = pt.name;\r\n opt.value = pt.code;\r\n this.oid_parcel_type.appendChild(opt);\r\n });\r\n }\r\n\r\n async load(shipmentId: string) {\r\n this.container.style.display = \"block\";\r\n var shipment = this.shipment = await SP.Data.Shipment.getShipmentInfo(shipmentId);\r\n var customer = this.customer = await SP.Data.Customer.getCustomerInfo(shipment.order.customerId, true);\r\n\r\n this.oid_order_data.innerHTML =\r\n \"OrderId: \" + shipment.order.orderId + \"
\" +\r\n \"OrderNo: \" + shipment.order.orderNo + \"
\" +\r\n \"DeliveryMethod: \" + shipment.order.deliveryMethodInfo.name + \" (\" + shipment.order.deliveryMethodInfo.shortName + \")
\";\r\n\r\n this.oid_recipient.innerHTML =\r\n shipment.order.recipient.name + \"
\" +\r\n (shipment.order.recipient.attention ? shipment.order.recipient.attention + \"
\" : \"\") +\r\n shipment.order.recipient.street1 + \"
\" +\r\n (shipment.order.recipient.street2 ? shipment.order.recipient.street2 + \"
\" : \"\") +\r\n shipment.order.recipient.zipcode + \" \" + shipment.order.recipient.city + \", \" + shipment.order.recipient.country + \"
\" +\r\n shipment.order.recipient.email + \" / \" + shipment.order.recipient.phone;\r\n\r\n this.oid_sender.innerHTML =\r\n shipment.order.sender.name + \"
\" +\r\n (shipment.order.sender.attention ? shipment.order.sender.attention + \"
\" : \"\") +\r\n shipment.order.sender.street1 + \"
\" +\r\n (shipment.order.sender.street2 ? shipment.order.sender.street2 + \"
\" : \"\") +\r\n shipment.order.sender.zipcode + \" \" + shipment.order.sender.city + \", \" + shipment.order.sender.country + \"
\" +\r\n shipment.order.sender.email + \" / \" + shipment.order.sender.phone;\r\n\r\n\r\n //clear\r\n this.oid_items.innerHTML = \"\";\r\n\r\n for (let i = 0; i < shipment.lines.length; i++) {\r\n let line = shipment.lines[i];\r\n let name = line.orderLine.itemInfo.sku + \" - \" + line.orderLine.itemInfo.manufacturerName + \" \" + line.orderLine.itemInfo.modelNo;\r\n this.oid_items.innerHTML +=\r\n \"
\" +\r\n \" \" +\r\n \" \" + name + \"
\" + line.orderLine.itemInfo.description + \"
\" + line.orderLine.itemInfo.barcodes.join(\", \") + \"
\" +\r\n \"\" + line.qty + \" \" + SP.UnitType[line.orderLine.itemInfo.unitType] + \"\"\r\n \"
\";\r\n }\r\n\r\n //clear\r\n this.oid_labels.innerHTML = \"\";\r\n var lastMethod = \"none\";\r\n for (let i = 0; i < shipment.packages.length; i++) {\r\n\r\n let pi = shipment.packages[i];\r\n\r\n let packageBox = document.createElement(\"div\");\r\n packageBox.classList.add(\"box\", \"shipping_label\");\r\n packageBox.innerHTML = \"
\" + pi.deliveryMethodName + \"
\" + pi.trackingNumber + \"
\";\r\n\r\n let printBtn = document.createElement(\"div\");\r\n printBtn.classList.add(\"button\", \"label\");\r\n printBtn.innerHTML = SP.Localize(\"word_reprint\");\r\n\r\n printBtn.addEventListener(\"click\", async () => {\r\n\r\n if (!await SP.confirmX(SP.Localize(\"text_confirm_double_label_print\")!!!)) return;\r\n\r\n\r\n\r\n printBtn.classList.add(\"disabled\");\r\n\r\n if (!App_Settings.terminalSettings.label_printer) {\r\n SP.alertX(SP.Localize(\"sentance_please_select_printer\"));\r\n return;\r\n }\r\n\r\n var result = await SP.get(\"/api/v1/package/print/\" + pi.id + \"?label_printer=\" + App_Settings.terminalSettings.label_printer + \"&etiquette_printer=\" + App_Settings.terminalSettings.etiquette_printer + \"&a4_printer=\" + App_Settings.terminalSettings.a4_printer);\r\n console.log(\"print result\", result);\r\n if (result.status != 200) {\r\n await SP.alertX(result.status + \": \" + result.msg + (result.exception ? \" - \" + result.exception : \"\"));\r\n }\r\n printBtn.classList.remove(\"disabled\");\r\n });\r\n\r\n\r\n let printNoteBtn = document.createElement(\"div\");\r\n printNoteBtn.classList.add(\"button\", \"label\", \"note\");\r\n printNoteBtn.innerHTML = \"🧾\";\r\n\r\n printNoteBtn.addEventListener(\"click\", async () => {\r\n printNoteBtn.classList.add(\"disabled\");\r\n\r\n if (!App_Settings.terminalSettings.label_printer) {\r\n SP.alertX(SP.Localize(\"sentance_please_select_printer\"));\r\n return;\r\n }\r\n\r\n var result = await SP.get(\"/api/v1/package/printnote/\" + pi.id + \"?label_printer=\" + App_Settings.terminalSettings.label_printer + \"&etiquette_printer=\" + App_Settings.terminalSettings.etiquette_printer + \"&a4_printer=\" + App_Settings.terminalSettings.a4_printer);\r\n console.log(\"print result\", result);\r\n if (result.status != 200) {\r\n await SP.alertX(result.status + \": \" + result.msg + (result.exception ? \" - \" + result.exception : \"\"));\r\n }\r\n printNoteBtn.classList.remove(\"disabled\");\r\n });\r\n packageBox.appendChild(printNoteBtn);\r\n\r\n\r\n packageBox.appendChild(printBtn);\r\n lastMethod = pi.deliveryMethodId;\r\n this.oid_labels.appendChild(packageBox);\r\n }\r\n\r\n\r\n //clear deliverymethods\r\n this.oid_delivery_methods.innerHTML = \"\";\r\n\r\n for (let key in customer.deliveryMethods) {\r\n let m = customer.deliveryMethods[key];\r\n let disabled = false;\r\n\r\n if (m.orderSources.length && !m.orderSources.includes(shipment.order.orderSource)) continue;\r\n\r\n\r\n var destinationCountry = shipment.order.recipient.country.toUpperCase();\r\n var localPrices = m.prices[destinationCountry]\r\n\r\n if (!localPrices) {\r\n disabled = true;\r\n }\r\n\r\n var opt = document.createElement(\"option\");\r\n opt.text = m.name;\r\n opt.value = m.id;\r\n opt.disabled = disabled;\r\n opt.selected = m.id == lastMethod;\r\n\r\n console.log(\"ADDING:\", opt);\r\n this.oid_delivery_methods.appendChild(opt);\r\n }\r\n\r\n this.updateParcelTypes();\r\n }\r\n\r\n async printDeliveryNote() {\r\n this.oid_print_note_button.classList.add(\"disabled\");\r\n if (!App_Settings.terminalSettings.label_printer) {\r\n SP.alertX(SP.Localize(\"sentance_please_select_printer\"));\r\n return;\r\n }\r\n\r\n var result = await SP.post(\"/api/v1/shipment/printnote/\" + this.shipment.shipmentId,\r\n {\r\n label_printer: App_Settings.terminalSettings.label_printer,\r\n etiquette_printer: App_Settings.terminalSettings.etiquette_printer,\r\n a4_printer: App_Settings.terminalSettings.a4_printer,\r\n }\r\n );\r\n\r\n\r\n this.oid_print_note_button.classList.remove(\"disabled\");\r\n }\r\n\r\n async printExtra() {\r\n this.oid_print_extra_button.classList.add(\"disabled\");\r\n if (!App_Settings.terminalSettings.label_printer) {\r\n SP.alertX(SP.Localize(\"sentance_please_select_printer\"));\r\n return;\r\n }\r\n\r\n\r\n let postData = {\r\n orderId: this.shipment.order.orderId,\r\n shipmentId: this.shipment.shipmentId,\r\n width: parseInt(this.oid_extra_width.value),\r\n length: parseInt(this.oid_extra_length.value),\r\n height: parseInt(this.oid_extra_height.value),\r\n weight: parseInt(this.oid_extra_weight.value),\r\n deliveryMethodId: this.oid_delivery_methods.value,\r\n parcelType: this.oid_parcel_type.value,\r\n packagingId: SP.Guid.Empty,\r\n referenceNo: this.shipment.order.referenceNo,\r\n orderNo: this.shipment.order.orderNo,\r\n deliveryInstructions: this.shipment.order.deliveryInstructions,\r\n fulfillmentLocation: this.shipment.fulfillmentLocation,\r\n initialize: true,\r\n preCommit: true,\r\n lines: {}\r\n }\r\n\r\n var createResult = await SP.post(\"/api/v1/package/create\", postData);\r\n console.log(\"create result:\", createResult);\r\n\r\n\r\n\r\n if (createResult.status == 200) {\r\n var result = await SP.get(\"/api/v1/package/print/\" + createResult.packageId + \"?label_printer=\" + App_Settings.terminalSettings.label_printer + \"&etiquette_printer=\" + App_Settings.terminalSettings.etiquette_printer + \"&a4_printer=\" + App_Settings.terminalSettings.a4_printer);\r\n console.log(\"print result\", result);\r\n if (result.status == 200) {\r\n await this.load(this.shipment.shipmentId);\r\n }\r\n else {\r\n await SP.alertX(result.status + \": \" + result.msg + (result.exception ? \" - \" + result.exception : \"\"));\r\n }\r\n }\r\n else {\r\n\r\n await SP.alertX(createResult.status + \": \" + createResult.msg + (createResult.exception ? \" - \" + createResult.exception : \"\"));\r\n }\r\n\r\n\r\n\r\n\r\n\r\n this.oid_print_extra_button.classList.remove(\"disabled\");\r\n }\r\n\r\n close() {\r\n this.container.style.display = \"none\";\r\n\r\n }\r\n\r\n }\r\n\r\n let OID = new ShipmentInfoDialog();\r\n\r\n let ColorArray = ['#e6194B', '#3cb44b', '#4363d8', '#f58231', '#911eb4', '#f032e6', '#469990', '#9A6324', '#800000', '#808000', '#000075', '#000000'];\r\n export class ToteBox {\r\n container = document.createElement(\"div\");\r\n info: SP.ToteInfo;\r\n parent: HTMLElement;\r\n constructor(info: SP.ToteInfo) {\r\n this.container.classList.add(\"tote_box\");\r\n this.info = info;\r\n\r\n if (info?.pickSettings) {\r\n var color = ColorArray[info.pickListId % ColorArray.length];\r\n this.container.innerHTML += \"
\" + info.pickSettings?.name + \"
\";\r\n }\r\n this.container.innerHTML += \"\" + info.toteName;\r\n this.container.style.backgroundColor = info.toteColor;\r\n\r\n var now = new Date();\r\n var triggerDate = new Date((info.orderDeadline * 1000) - (1000 * 60 * 60 * 3));\r\n var endTriggerDate = new Date((info.orderDeadline * 1000) + (1000 * 60 * 60 * 1));\r\n var show = triggerDate < now && now < endTriggerDate;\r\n // Hours part from the timestamp\r\n\r\n\r\n if (info?.blockPacker) {\r\n var dl_container = this.container.appendChild(document.createElement(\"span\"));\r\n dl_container.classList.add(\"deadline\");\r\n dl_container.innerHTML = SP.Localize(\"word_blocked\");\r\n }\r\n\r\n if (info?.warningInfo) {\r\n var dl_container = this.container.appendChild(document.createElement(\"span\"));\r\n dl_container.classList.add(\"deadline\");\r\n dl_container.innerHTML = info.warningInfo;\r\n }\r\n else if (show) {\r\n if (info) {\r\n var deadline = new Date(info.orderDeadline * 1000);\r\n var hours = deadline.getHours();\r\n var minutes = \"0\" + deadline.getMinutes();\r\n var formattedTime = hours + ':' + minutes.substr(-2);\r\n var dl_container = this.container.appendChild(document.createElement(\"span\"));\r\n dl_container.classList.add(\"deadline\");\r\n dl_container.innerHTML = formattedTime;\r\n }\r\n }\r\n\r\n \r\n\r\n\r\n\r\n\r\n }\r\n\r\n load(info: SP.ToteInfo) {\r\n //order details?\r\n\r\n //this.info = info;\r\n //container.innerHTML = info.toteName;\r\n //container.style.backgroundColor = info.toteColor;\r\n }\r\n\r\n\r\n setParent(elm: HTMLElement) {\r\n if (this.parent == elm) return;\r\n if (this.parent) container.remove();\r\n this.parent = elm;\r\n this.parent.appendChild(this.container);\r\n }\r\n }\r\n\r\n export class OrderHistoryItem {\r\n container = document.createElement(\"div\");\r\n tote = document.createElement(\"div\");\r\n info: SP.HistoryShipmentInfo;\r\n parent: HTMLElement;\r\n constructor(info: SP.HistoryShipmentInfo) {\r\n this.info = info;\r\n this.container.innerHTML = \"\" + info.customer + \"
\" + info.orderNo + \" \" + info.recipientName + \"
\" + info.time + \"
\";\r\n this.container.classList.add(\"history_box\");\r\n\r\n\r\n this.tote.innerHTML = \"\" + info.toteName;\r\n this.tote.style.backgroundColor = info.toteColor;\r\n this.tote.style.float = \"left\";\r\n this.tote.classList.add(\"tote_box\");\r\n this.container.prepend(this.tote);\r\n\r\n\r\n this.container.addEventListener(\"click\", () => {\r\n OID.load(this.info.id);\r\n })\r\n }\r\n\r\n }\r\n\r\n export class App_Pack_Tote_List extends AppBase {\r\n static Instance: App_Pack_Tote_List;\r\n ptl_info = document.getElementById(\"ptl_info\");\r\n ptl_headline = document.getElementById(\"ptl_headline\");\r\n ptl_error = document.getElementById(\"ptl_error\");\r\n ptl_totes = document.getElementById(\"ptl_totes\");\r\n ptl_pending = document.getElementById(\"ptl_pending\");\r\n ptl_history = document.getElementById(\"ptl_history\");\r\n ptl_history_button = document.getElementById(\"ptl_history_button\");\r\n ptl_totes_content = document.getElementById(\"ptl_totes_content\");\r\n ptl_trolly_content = document.getElementById(\"ptl_trolly_content\");\r\n ptl_pending_content = document.getElementById(\"ptl_pending_content\");\r\n ptl_history_content = document.getElementById(\"ptl_history_content\");\r\n ptl_search = document.getElementById(\"ptl_search\") as HTMLInputElement;\r\n totes: { [id: number]: ToteBox } = {};\r\n bound = false;\r\n\r\n constructor() {\r\n super(\"app_pack_tote_list\");\r\n App_Pack_Tote_List.Instance = this;\r\n\r\n\r\n this.ptl_history_button.addEventListener(\"click\", () => {\r\n var visible = this.ptl_history.style.display == \"block\";\r\n this.ptl_history.style.display = visible ? \"none\" : \"block\";\r\n this.ptl_totes.style.display = visible ? \"block\" : \"none\";\r\n\r\n if (visible)\r\n this.ptl_history_button.querySelector(\".fa-solid\").setAttribute(\"class\", \"fa-solid fa-clock-rotate-left\");\r\n else\r\n this.ptl_history_button.querySelector(\".fa-solid\").setAttribute(\"class\", \"fa-solid fa-inbox\");\r\n });\r\n\r\n let to: any = null;\r\n this.ptl_search.addEventListener(\"keyup\", () => {\r\n clearTimeout(to);\r\n to = setTimeout(() => {\r\n this.load(this.ptl_search.value);\r\n }, 500);\r\n });\r\n }\r\n\r\n async onOpen() {\r\n this.ptl_search.value = \"\";\r\n\r\n //bind events and groups\r\n if (!this.bound) {\r\n this.bound = true;\r\n barcodeListener.on(\"t\", this.scanTote, this);\r\n barcodeListener.on(\"tr\", this.setTrolley, this);\r\n barcodeListener.on(null, this.scanBarcode, this);\r\n }\r\n\r\n await this.load('');\r\n\r\n }\r\n\r\n async onClose() {\r\n if (this.bound) {\r\n this.bound = false;\r\n barcodeListener.off(\"t\", this.scanTote);\r\n barcodeListener.off(\"tr\", this.setTrolley);\r\n barcodeListener.off(null, this.scanBarcode);\r\n }\r\n this.reset();\r\n }\r\n\r\n async load(keyword: string) {\r\n this.reset();\r\n let active = await SP.Data.Tote.getActiveToteInfos(keyword);\r\n\r\n active.sort((a, b) => {\r\n\r\n if (App_Settings.terminalSettings.tote_sorting == \"picklist\") {\r\n let listSort = a.pickListId > b.pickListId ? 1 : a.pickListId < b.pickListId ? -1 : 0;\r\n if (listSort != 0) return listSort;\r\n }\r\n\r\n let groupSort = a.toteGroupName.localeCompare(b.toteGroupName);\r\n if (groupSort != 0) return groupSort;\r\n\r\n return a.toteId - b.toteId;\r\n });\r\n\r\n\r\n let history = await SP.Data.Shipment.getHistoryShipmentInfo(\"\", keyword);\r\n active.forEach(t => this.updateInfo(t));\r\n history.forEach(t => this.addHistory(t));\r\n\r\n this.setTrolley(this.trolleyId);\r\n }\r\n\r\n historyDictionary: { [id: string]: OrderHistoryItem } = {};\r\n\r\n addHistory(info: SP.HistoryShipmentInfo) {\r\n let current = new OrderHistoryItem(info);\r\n this.ptl_history_content.appendChild(current.container);\r\n this.historyDictionary[current.info.id] = current;\r\n }\r\n\r\n showAllButton: HTMLElement;\r\n showAllButtonLabel: HTMLElement;\r\n\r\n updateInfo(info: SP.ToteInfo) {\r\n var current = this.totes[info.toteId];\r\n\r\n if (!current) {\r\n current = new ToteBox(info);\r\n current.container.addEventListener(\"click\", () => {\r\n App_Pack_Tote_List.Instance.scanTote(info.toteId.toString(), true);\r\n })\r\n this.totes[info.toteId] = current;\r\n }\r\n\r\n current.load(info);\r\n var parent = this.ptl_totes_content;\r\n\r\n\r\n if (info.trolleyId) {\r\n parent = this.trolleyContainers[info.trolleyId];\r\n if (parent == null) {\r\n var elm = document.createElement(\"div\");\r\n elm.innerHTML = `

${info.trolleyName}

\"`;\r\n this.trolleyContainers[info.trolleyId] = parent = elm.querySelector(\".trolley_content\");\r\n\r\n elm.querySelector(\"h1\").addEventListener(\"click\", () => {\r\n this.setTrolley(info.trolleyId);\r\n\r\n });\r\n this.ptl_trolly_content.appendChild(elm);\r\n }\r\n }\r\n\r\n if (!info.readyForPack) parent = this.ptl_pending_content;\r\n\r\n current.setParent(parent);\r\n\r\n\r\n if (App_Settings.wmsSettings.fulfillment_location != 'global' && info.pickSettings?.fulfillmentLocation != App_Settings.wmsSettings.fulfillment_location) {\r\n current.container.style.display = \"none\";\r\n \r\n }\r\n\r\n //check if any has display none\r\n var hiddenCount = 0;\r\n for (let id in this.totes) {\r\n if (this.totes[id].info.readyForPack && this.totes[id].container.style.display == \"none\") {\r\n hiddenCount++;\r\n }\r\n }\r\n\r\n if (hiddenCount > 0) {\r\n if (!this.showAllButton) {\r\n this.showAllButton = this.ptl_totes.appendChild(createListButton(\"profile_list_button\", SP.Localize(\"sentance_other_fulfillment_locations\"), async () => {\r\n if (await SP.confirmX(SP.Localize(\"word_show\") + ' ' + SP.Localize(\"sentance_other_fulfillment_locations\") + '?')) {\r\n //show all hidden buttons and hide this\r\n for (var id in this.totes) {\r\n this.totes[id].container.style.display = \"inline-block\";\r\n }\r\n this.showAllButton.style.display = \"none\";\r\n }\r\n }));\r\n this.showAllButton.style.backgroundColor = \"#cfcfcf\";\r\n var label = this.showAllButtonLabel = this.showAllButton.appendChild(document.createElement(\"span\"));\r\n label.classList.add(\"label\");\r\n }\r\n this.ptl_totes.appendChild(this.showAllButton);\r\n this.showAllButton.style.display = \"flex\";\r\n this.showAllButtonLabel.innerHTML = hiddenCount.toString();\r\n\r\n }\r\n }\r\n\r\n trolleyContainers: { [key: number]: HTMLElement } = {};\r\n trolleyId: number = null;\r\n\r\n\r\n async setTrolley(trolleyId: number) {\r\n if (trolleyId != this.trolleyId) { \r\n this.trolleyId = trolleyId;\r\n\r\n if (trolleyId) {\r\n var trolley = await SP.Data.Trolley.getTrolleyInfo(trolleyId);\r\n Talk(trolley.name);\r\n }\r\n }\r\n\r\n for (let id in this.trolleyContainers) {\r\n let child = this.trolleyContainers[id];\r\n child.classList.add(\"inactive\");\r\n if (trolleyId && id == trolleyId.toString()) {\r\n child.classList.remove(\"inactive\");\r\n child.parentElement.parentElement.insertBefore(child.parentElement, child.parentElement.parentElement.firstChild); //move to top\r\n }\r\n }\r\n\r\n if (!this.trolleyContainers[this.trolleyId]) this.trolleyId = null;\r\n }\r\n\r\n reset() {\r\n this.totes = {};\r\n this.ptl_totes_content.innerHTML = \"\";\r\n this.ptl_trolly_content.innerHTML = \"\";\r\n this.trolleyContainers = {};\r\n this.ptl_pending_content.innerHTML = \"\";\r\n this.ptl_history_content.innerHTML = \"\";\r\n }\r\n\r\n async scanTote(id: string, manual_click: boolean = false) {\r\n\r\n //get tote info\r\n var tote = await SP.Data.Tote.getToteInfo(id, false);\r\n\r\n if (tote.trolleyId && tote.trolleyId != this.trolleyId) {\r\n this.showError(\"Wrong Trolley\");\r\n return;\r\n }\r\n\r\n //check if ready\r\n if (!tote.readyForPack) return this.showError(\"tote not ready for packing!\");\r\n\r\n\r\n if (document.querySelector(\".phone\"))\r\n SP.setAllHash({ \"app\": \"app_fast_pack_order\", \"tote\": id, \"clicked\": manual_click.toString() });\r\n else\r\n SP.setAllHash({ \"app\": \"app_pack_order\", \"tote\": id, \"clicked\": manual_click.toString() });\r\n\r\n }\r\n\r\n\r\n\r\n async scanBarcode(barcode: string, gs1Data: SP.GS1Data) {\r\n\r\n //get tote info\r\n let grouppickTote = await SP.Data.Tote.getToteInfoGroupedPick(encodeURIComponent(barcode), this.trolleyId);\r\n\r\n\r\n //pick tote\r\n if (grouppickTote != null) {\r\n\r\n if (grouppickTote.trolleyId && grouppickTote.trolleyId != this.trolleyId) {\r\n this.showError(\"Wrong Trolley\");\r\n return;\r\n }\r\n\r\n\r\n if (document.querySelector(\".phone\")) {\r\n SP.setAllHash({ \"app\": \"app_fast_pack_order\", \"tote\": grouppickTote.toteId.toString(), \"barcode\": barcode });\r\n }\r\n else {\r\n SP.setAllHash({ \"app\": \"app_pack_order\", \"tote\": grouppickTote.toteId.toString(), \"barcode\": barcode });\r\n }\r\n\r\n return;\r\n }\r\n\r\n\r\n\r\n let historyMatches = await SP.Data.Shipment.getHistoryShipmentInfo(barcode);\r\n let toteMatches = await SP.Data.Tote.getToteInfosBarcode(barcode ?? \"\", gs1Data?.orderNumber ?? gs1Data?.batchOrLotNumber ?? \"\");\r\n\r\n var matchCount = historyMatches.length + toteMatches.length;\r\n\r\n //blink history matches\r\n for (let i = 0; i < historyMatches.length; i++) {\r\n let match = this.historyDictionary[historyMatches[i].id];\r\n if (match) {\r\n match.container.parentElement.prepend(match.container);\r\n match.container.classList.add(\"blink_effect\");\r\n setTimeout(() => {\r\n match.container.classList.remove(\"blink_effect\");\r\n }, 10000);\r\n }\r\n\r\n }\r\n\r\n\r\n //blink tote matches\r\n for (let i = 0; i < toteMatches.length; i++) {\r\n var tote = toteMatches[i];\r\n let match = this.totes[tote.toteId];\r\n if (match) {\r\n match.container.parentElement.prepend(match.container);\r\n match.container.classList.add(\"blink_effect\");\r\n setTimeout(() => {\r\n match.container.classList.remove(\"blink_effect\");\r\n }, 10000);\r\n }\r\n if (matchCount == 1) Talk(\"Tote \" + tote.toteName);\r\n\r\n }\r\n\r\n\r\n if (toteMatches.length == 0 && historyMatches.length == 0) SP.Sounds.Error.play();\r\n }\r\n\r\n\r\n\r\n //error handling\r\n errorN: number = 0;\r\n async showError(message: string) {\r\n this.errorN++;\r\n let en = this.errorN;\r\n\r\n this.ptl_error.textContent = message;\r\n this.ptl_error.style.display = \"block\";\r\n this.ptl_headline.style.display = \"none\";\r\n SP.Sounds.Error.play();\r\n await SP.sleep(3000);\r\n if (en == this.errorN) {\r\n this.ptl_error.style.display = \"none\";\r\n this.ptl_headline.style.display = \"block\";\r\n }\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n RegisterApp(\"app_pack_tote_list\", App_Pack_Tote_List);\r\n\r\n}","/// \r\n\r\nnamespace TerminalApp {\r\n class PickListElement {\r\n index: number = 0;\r\n data: SP.PickListInfo;\r\n html: HTMLElement;\r\n menu: SP.SwipeMenu;\r\n\r\n text_name: HTMLElement;\r\n text_date: HTMLElement;\r\n text_location: HTMLElement;\r\n text_description: HTMLElement;\r\n text_icon: HTMLImageElement;\r\n\r\n occupant_info: HTMLElement;\r\n\r\n\r\n constructor(data: SP.PickListInfo) {\r\n this.data = data;\r\n\r\n this.html = CreateButton(\"/terminal/img/icon/list2.png\", null);\r\n this.html.classList.add(\"full\");\r\n this.html.style.height = \"88px\";\r\n\r\n\r\n if (!data.pickListActive) {\r\n this.html.classList.add(\"disabled\");\r\n this.html.addEventListener(\"click\", () => { GetApp(\"app_picklist\").open({ id: this.data.pickListId }) });\r\n }\r\n else {\r\n this.menu = new SP.SwipeMenu(\r\n /*Element*/\r\n this.html,\r\n\r\n /*Click Event*/\r\n async () => {\r\n if (this.data.occupantUserName && !(await SP.confirmX(\"Overtake control from \" + this.data.occupantUserName))) return;\r\n\r\n GetApp(\"app_picklist\").open({ id: this.data.pickListId });\r\n },\r\n\r\n /*buttons*/\r\n [\r\n /*Cancel Button*/{\r\n icon: \"\", text: SP.Localize(\"word_cancel\"), color: \"#e83535\", confirm: true, action: async () => {\r\n StartLoading();\r\n var result = await SP.get(\"/api/v1/picklist/cancel/\" + this.data.pickListId);\r\n console.log(result);\r\n if (result.status == 200) {\r\n SP.Sounds.Success.play();\r\n this.menu.return();\r\n this.html.remove();\r\n this.menu.remove();\r\n }\r\n else {\r\n SP.Sounds.Error.play();\r\n this.menu.return();\r\n await SP.alertX(`${result.status}: ${result.msg}`);\r\n if (result.exception) { console.log(result.exception); }\r\n }\r\n StopLoading();\r\n }\r\n }\r\n ],\r\n /*group*/\r\n \"app_pick_orders\"\r\n );\r\n }\r\n\r\n this.updateText();\r\n\r\n\r\n\r\n }\r\n\r\n\r\n\r\n updateText() {\r\n //clear\r\n this.html.innerHTML = \"\";\r\n\r\n var inner = this.html.appendChild(document.createElement(\"div\"));\r\n\r\n //icon\r\n this.text_icon = inner.appendChild(document.createElement(\"img\"));\r\n this.text_icon.classList.add(\"icon\");\r\n this.text_icon.src = \"/terminal/img/icon/list2.png\";\r\n\r\n //date/user text\r\n this.text_date = inner.appendChild(document.createElement(\"div\"));\r\n this.text_date.classList.add(\"text\", \"bottom\", \"right\", \"small\");\r\n this.text_date.innerHTML = `${this.data.createUserName} ${this.data.pickListDate} ${this.data.pickListTime}`;\r\n\r\n //name\r\n this.text_name = inner.appendChild(document.createElement(\"div\"));\r\n this.text_name.classList.add(\"text\", \"top\", \"big\", \"left\");\r\n this.text_name.style.right = \"55px\";\r\n this.text_name.innerHTML = `${this.data.pickedCount} / ${this.data.pickCount} ${this.data.stockName} #${this.data.pickListId}
${this.data.pickSettings?.name ?? \"\"}`;\r\n\r\n //date/user name\r\n this.text_description = inner.appendChild(document.createElement(\"div\"));\r\n this.text_description.classList.add(\"text\", \"left\", \"small\");\r\n this.text_description.style.lineHeight = \"16px\";\r\n this.text_description.innerHTML = `${this.data.pickLinesCount + \" \" + SP.Localize(\"word_locations\")}`;\r\n\r\n //date/user name\r\n this.text_location = inner.appendChild(document.createElement(\"div\"));\r\n this.text_location.classList.add(\"text\", \"top\", \"right\");\r\n this.text_location.innerHTML = `${Math.round(this.data.pickListRouteLength)} m`;\r\n\r\n if (this.data.pickListAttention) {\r\n var icon = inner.appendChild(document.createElement(\"div\"));\r\n icon.classList.add(\"attention\");\r\n icon.innerHTML = '';\r\n }\r\n\r\n\r\n\r\n inner.style.opacity = this.data.occupantUserName ? \"0.5\" : \"1\";\r\n //this.html.style.pointerEvents = this.data.occupantUserName ? \"none\" : \"all\";\r\n this.html.style.backgroundColor = this.data.occupantUserName ? \"rgba(255,255,255,0.3)\" : \"#fff\";\r\n\r\n if (this.data.occupantUserName) {\r\n\r\n if (!this.occupant_info) {\r\n this.occupant_info = document.createElement(\"div\");\r\n this.occupant_info.classList.add(\"occupant_info\");\r\n }\r\n this.occupant_info.innerHTML = this.data.occupantUserName;\r\n this.html.appendChild(this.occupant_info);\r\n }\r\n }\r\n }\r\n\r\n\r\n export class App_Pick_Orders extends AppBase {\r\n pickLists: { [id: string]: PickListElement } = {};\r\n finished_pickLists: SP.PickListInfo[] = [];\r\n active = document.getElementById(\"pick_orders_active_lists\");\r\n finished = document.getElementById(\"pick_orders_finished_lists\");\r\n pick_orders_generate_button = document.getElementById(\"pick_orders_generate_button\");\r\n\r\n constructor() {\r\n super(\"app_pick_orders\");\r\n hub.on(\"pickListAdded\", (d) => this.pickListAdded(d));\r\n hub.on(\"pickListUpdated\", (d) => this.pickListUpdated(d));\r\n\r\n\r\n this.pick_orders_generate_button.addEventListener(\"click\", () => {\r\n GetApp(\"app_generate_picklist\").open();\r\n });\r\n\r\n\r\n hub.on(\"picklistUpdated\", (d) => this.pickListUpdated(d));\r\n hub.on(\"picklistAdded\", (d) => this.pickListAdded(d));\r\n hub.on(\"picklistDeleted\", (d) => this.picklistDeleted(d));\r\n }\r\n\r\n\r\n\r\n PicklistDelete(data: SP.PickListInfo) {\r\n\r\n }\r\n\r\n bound = false;\r\n async onOpen() {\r\n //reset\r\n this.pickLists = {};\r\n this.active.innerHTML = \"\";\r\n this.additionalCount = 0;\r\n if (this.showAllButton) this.showAllButton.style.display = \"none\";\r\n\r\n //load\r\n var activePickLists = await SP.Data.PickList.getPickListInfos();\r\n activePickLists.forEach((a) => {\r\n this.pickListAdded(a);\r\n });\r\n\r\n //load finished data\r\n this.finished_pickLists = await SP.Data.PickList.getFinishedPickListInfos();\r\n\r\n\r\n //bind events and groups\r\n if (!this.bound) {\r\n this.bound = true;\r\n barcodeListener.on(\"t\", this.scanTote, this);\r\n }\r\n }\r\n\r\n\r\n \r\n\r\n async onClose() {\r\n\r\n\r\n //unbind events and groups\r\n if (this.bound) {\r\n this.bound = false;\r\n barcodeListener.off(\"t\", this.scanTote);\r\n }\r\n \r\n }\r\n\r\n async scanTote(toteid: string) {\r\n var result = await SP.Data.PickList.getPickListInfoFromTote(parseInt(toteid));\r\n if (result != null) {\r\n SP.setAllHash({ \"app\": \"app_picklist\", \"id\": result.pickListId.toString() });\r\n }\r\n else {\r\n SP.Sounds.Error.play();\r\n }\r\n console.log(toteid, result);\r\n }\r\n\r\n showAllButton: HTMLElement;\r\n showAllButtonLabel: HTMLElement;\r\n additionalCount = 0;\r\n\r\n pickListAdded(data: SP.PickListInfo) {\r\n var current = this.pickLists[data.pickListId];\r\n if (current == null) {\r\n current = this.pickLists[data.pickListId] = new PickListElement(data);\r\n this.active.appendChild(current.html);\r\n\r\n if (App_Settings.wmsSettings.fulfillment_location != 'global' && data.pickSettings?.fulfillmentLocation != App_Settings.wmsSettings.fulfillment_location) {\r\n current.html.style.display = \"none\";\r\n\r\n if (!this.showAllButton) {\r\n this.showAllButton = this.active.appendChild(createListButton(\"profile_list_button\", SP.Localize(\"sentance_other_fulfillment_locations\"), async () => {\r\n if (await SP.confirmX(SP.Localize(\"word_show\") + ' ' + SP.Localize(\"sentance_other_fulfillment_locations\") + '?')) {\r\n //show all hidden buttons and hide this\r\n for (var id in this.pickLists) {\r\n this.pickLists[id].html.style.display = \"flex\";\r\n }\r\n this.showAllButton.style.display = \"none\";\r\n }\r\n }));\r\n this.showAllButton.style.display = \"none\";\r\n this.showAllButton.style.backgroundColor = \"#cfcfcf\";\r\n var label = this.showAllButtonLabel = this.showAllButton.appendChild(document.createElement(\"span\"));\r\n label.classList.add(\"label\");\r\n }\r\n this.active.appendChild(this.showAllButton);\r\n this.additionalCount++;\r\n\r\n this.showAllButtonLabel.innerHTML = this.additionalCount.toString();\r\n this.showAllButton.style.display = \"flex\";\r\n\r\n\r\n }\r\n }\r\n }\r\n\r\n pickListUpdated(data: SP.PickListInfo) {\r\n if (!data.pickListActive) {\r\n this.finished_pickLists.push(data);\r\n this.picklistDeleted(data);\r\n return;\r\n }\r\n\r\n var current = this.pickLists[data.pickListId];\r\n if (current != null) {\r\n current.data = data;\r\n current.updateText();\r\n }\r\n }\r\n\r\n picklistDeleted(data: SP.PickListInfo) {\r\n var current = this.pickLists[data.pickListId];\r\n if (current != null) {\r\n current.menu.remove();\r\n current.html.remove();\r\n }\r\n }\r\n\r\n\r\n }\r\n RegisterApp(\"app_pick_orders\", App_Pick_Orders);\r\n}","/// \r\n\r\n\r\nnamespace TerminalApp {\r\n export class PicklistProblemAssistant extends Assistant {\r\n action_menu = document.createElement(\"div\");\r\n order_info_container = document.createElement(\"div\");\r\n action_container = document.createElement(\"div\");\r\n quantity_menu = document.createElement(\"div\");\r\n quantity_container = document.createElement(\"div\");\r\n finish_menu = document.createElement(\"div\");\r\n finish_container = document.createElement(\"div\");\r\n\r\n placement_menu = document.createElement(\"div\");\r\n placement_container = document.createElement(\"div\");\r\n\r\n attention_list_button: HTMLElement;\r\n remove_item_button: HTMLElement;\r\n audit_item_button: HTMLElement;\r\n change_pick_placement_button: HTMLElement;\r\n line: SP.PickListLineData;\r\n list: SP.PickListInfo;\r\n location: string;\r\n remove_item_quantity = 0;\r\n remove_item_quantity_input: HTMLInputElement;\r\n\r\n change_quantity = 0;\r\n change_quantity_input: HTMLInputElement;\r\n callback: () => void;\r\n constructor() {\r\n super();\r\n\r\n this.finish_menu.innerHTML = `

${SP.Localize(\"sentance_item_has_been_removed\")}

\r\n
\r\n ${SP.Localize(\"description_return_or_audit_1\")}

\r\n ${SP.Localize(\"description_return_or_audit_2\")}\r\n
\r\n\r\n `;\r\n this.finish_menu.append(this.finish_container);\r\n\r\n this.action_menu.innerHTML = `

${SP.Localize(\"word_problem\")}

`; \r\n this.action_menu.append(this.action_container);\r\n this.action_menu.append(this.order_info_container);\r\n\r\n this.order_info_container.classList.add(\"oid\");\r\n this.order_info_container.innerHTML = `\r\n \r\n
\r\n

${SP.Localize(\"sentance_order_info\")}

\r\n
\r\n
\r\n ${SP.Localize(\"word_recipient\")}:\r\n
\r\n
\r\n

${SP.Localize(\"word_items\")}

\r\n
...
\r\n
\r\n `;\r\n\r\n \r\n this.attention_list_button = this.addItem(this.action_container, SP.Localize(\"sentance_move_to_attention_list\"), SP.Localize(\"sentance_the_problem_will_be_resloved_later\"), \"fa-solid fa-calendar-clock\", \"black\", async () => {\r\n //Move action!\r\n await App_Picklist.instance.removeShipment(this.line.pickLineInfo.shipmentId);\r\n this.close();\r\n });\r\n\r\n this.remove_item_button = this.addItem(this.action_container, SP.Localize(\"sentance_remove_item\"), SP.Localize(\"description_remove_item\"), \"fa-solid fa-trash-list\", \"black\", async () => {\r\n //Move action!\r\n this.open_quantity_picker();\r\n });\r\n this.audit_item_button = this.addItem(this.action_container, SP.Localize(\"sentance_audit_item\"), SP.Localize(\"description_audit_item\"), \"fa-solid fa-calculator\", \"black\", async () => {\r\n //setTimeout(() => {\r\n SP.setAllHash({ \"app\": \"app_audit_stock\", \"customerId\": this.line.stockingLotInfo.item.customerId, \"itemId\": this.line.stockingLotInfo.item.id });\r\n //}, 300);\r\n this.close();\r\n });\r\n\r\n this.change_pick_placement_button = this.addItem(this.action_container, SP.Localize(\"sentance_change_pick_placement\"), SP.Localize(\"description_change_pick_placement\"), \"fa-solid fa-shelves\", \"black\", async () => {\r\n //Open pick placement changer\r\n this.open_placement_picker();\r\n });\r\n\r\n\r\n var audit_item_button2 = this.addItem(this.finish_container, SP.Localize(\"sentance_audit_item\"), \"\", \"fa-solid fa-calculator\", \"black\", async () => {\r\n setTimeout(() => {\r\n SP.setAllHash({ \"app\": \"app_audit_stock\", \"customerId\": this.line.stockingLotInfo.item.customerId, \"itemId\": this.line.stockingLotInfo.item.id });\r\n }, 300);\r\n this.close();\r\n });\r\n\r\n var finish_button = this.addItem(this.finish_container, SP.Localize(\"word_finish\"), \"\", \"fa-solid fa-check\", \"black\", async () => {\r\n this.close();\r\n });\r\n\r\n\r\n\r\n this.placement_menu.innerHTML = `\r\n

${SP.Localize(\"sentance_select_quantity\")}

\r\n
\r\n
\r\n
/ 0
\r\n
\r\n
\r\n

${SP.Localize(\"sentance_select_new_placement\")}

\r\n
\r\n
\r\n `;\r\n\r\n this.placement_container = this.placement_menu.querySelector(\".setting_group\");\r\n\r\n var change_qty_input = this.change_quantity_input = this.placement_menu.querySelector(\"input\");\r\n change_qty_input.addEventListener(\"focus\", () => { change_qty_input.select() });\r\n change_qty_input.addEventListener(\"change\", () => {\r\n var old = this.change_quantity;\r\n this.change_quantity = Math.max(1, Math.min(this.line.pickLineInfo.quantity, parseInt(change_qty_input.value)));\r\n if (isNaN(this.change_quantity)) this.change_quantity = old;\r\n\r\n change_qty_input.value = this.change_quantity.toString();\r\n });\r\n\r\n this.placement_menu.querySelector(\".button.plus\").addEventListener(\"click\", () => {\r\n this.change_quantity = Math.min(this.line.pickLineInfo.quantity, parseInt(change_qty_input.value) + 1);\r\n change_qty_input.value = this.change_quantity.toString();\r\n });\r\n\r\n this.placement_menu.querySelector(\".button.minus\").addEventListener(\"click\", () => {\r\n this.change_quantity = Math.max(1, parseInt(change_qty_input.value) - 1);\r\n change_qty_input.value = this.change_quantity.toString();\r\n });\r\n\r\n\r\n\r\n\r\n\r\n this.quantity_menu.innerHTML = `\r\n

${SP.Localize(\"sentance_remove_quantity\")}

\r\n
\r\n
\r\n
/ 0
\r\n
\r\n
\r\n `;\r\n\r\n var remove_qty_input = this.remove_item_quantity_input = this.quantity_menu.querySelector(\"input\");\r\n remove_qty_input.addEventListener(\"focus\", () => { remove_qty_input.select() });\r\n remove_qty_input.addEventListener(\"change\", () => {\r\n var old = this.remove_item_quantity;\r\n this.remove_item_quantity = Math.max(1, Math.min(this.line.pickLineInfo.quantity, parseInt(remove_qty_input.value)));\r\n if (isNaN(this.remove_item_quantity)) this.remove_item_quantity = old;\r\n\r\n remove_qty_input.value = this.remove_item_quantity.toString();\r\n });\r\n\r\n this.quantity_menu.querySelector(\".button.plus\").addEventListener(\"click\", () => {\r\n this.remove_item_quantity = Math.min(this.line.pickLineInfo.quantity, parseInt(remove_qty_input.value) + 1);\r\n remove_qty_input.value = this.remove_item_quantity.toString();\r\n });\r\n\r\n this.quantity_menu.querySelector(\".button.minus\").addEventListener(\"click\", () => {\r\n this.remove_item_quantity = Math.max(1, parseInt(remove_qty_input.value) - 1);\r\n remove_qty_input.value = this.remove_item_quantity.toString();\r\n });\r\n\r\n\r\n this.quantity_menu.append(this.quantity_container);\r\n\r\n\r\n this.container.appendChild(this.action_menu);\r\n this.container.appendChild(this.placement_menu);\r\n this.container.appendChild(this.quantity_menu);\r\n this.container.appendChild(this.finish_menu);\r\n\r\n\r\n\r\n\r\n this.addItem(this.quantity_container, SP.Localize(\"sentance_dont_send_later\"), SP.Localize(\"description_dont_send_later\"), \"fa-solid fa-trash-can\", \"black\", async () => {\r\n var success = await App_Picklist.instance.removeLine(this.line.pickLineInfo.id, this.remove_item_quantity, true);\r\n if (success) { \r\n this.open_finish();\r\n }\r\n });\r\n\r\n this.addItem(this.quantity_container, SP.Localize(\"sentance_send_later\"), SP.Localize(\"description_send_later\"), \"fa-solid fa-truck-clock\", \"black\", async () => {\r\n var success = await App_Picklist.instance.removeLine(this.line.pickLineInfo.id, this.remove_item_quantity, false);\r\n if (success) {\r\n this.open_finish();\r\n }\r\n });\r\n\r\n\r\n }\r\n\r\n close() {\r\n super.close();\r\n if (this.callback != null) {\r\n this.callback();\r\n this.callback = null;\r\n }\r\n }\r\n\r\n hide() {\r\n this.action_menu.style.display = \"none\";\r\n this.quantity_menu.style.display = \"none\";\r\n this.finish_menu.style.display = \"none\";\r\n this.placement_menu.style.display = \"none\";\r\n }\r\n\r\n open_action() {\r\n this.hide();\r\n this.container.style.display = \"block\";\r\n this.action_menu.style.display = \"block\";\r\n }\r\n\r\n open_quantity_picker() {\r\n this.hide();\r\n this.container.style.display = \"block\";\r\n this.quantity_menu.style.display = \"block\";\r\n\r\n this.remove_item_quantity = this.line.pickLineInfo.quantity - this.line.pickLineInfo.pickedQuantity;\r\n this.remove_item_quantity_input.value = this.remove_item_quantity.toString();\r\n this.quantity_menu.querySelector(\".max_quantity\").innerHTML = this.line.pickLineInfo.quantity.toString();\r\n\r\n }\r\n\r\n async open_placement_picker() {\r\n this.hide();\r\n this.container.style.display = \"block\";\r\n this.placement_menu.style.display = \"block\";\r\n this.placement_container.innerHTML = \"\";\r\n\r\n this.change_quantity = this.line.pickLineInfo.quantity;\r\n this.change_quantity_input.value = this.change_quantity.toString();\r\n this.placement_menu.querySelector(\".max_quantity\").innerHTML = this.line.pickLineInfo.quantity.toString();\r\n var lots = await SP.Data.StockingLot.getItemStockingLotInfos(this.line.stockingLotInfo.item.id);\r\n\r\n\r\n \r\n let c = 0;\r\n //console.log(lots);\r\n lots.forEach(l => {\r\n if (l.id != this.line.stockingLotInfo.id) {\r\n c++;\r\n var pi = new PlacementInfoBox(l.stockPlacementData, true, l.item, l.placementQuantity);\r\n let cont = document.createElement(\"div\");\r\n cont.classList.add(\"audit_zone_placement\");\r\n cont.appendChild(pi.container);\r\n this.placement_container.appendChild(cont);\r\n\r\n if (l.batchNumber) {\r\n var batch = document.createElement(\"div\");\r\n batch.classList.add(\"batchNumber\");\r\n batch.innerHTML = \"BATCH: \" + l.batchNumber;\r\n cont.appendChild(batch);\r\n }\r\n\r\n cont.addEventListener(\"click\", async () => {\r\n StartLoading();\r\n try {\r\n var success = await App_Picklist.instance.changeLine(this.line.pickLineInfo.id, this.change_quantity, l.id);\r\n if (success) {\r\n this.close();\r\n await SP.sleep(200);\r\n location.reload(); //reload to update list\r\n }\r\n } finally {\r\n StopLoading();\r\n }\r\n\r\n });\r\n\r\n }\r\n });\r\n\r\n if (c == 0) {\r\n let cont = document.createElement(\"div\");\r\n cont.classList.add(\"audit_zone_placement\");\r\n cont.innerHTML = \"No placements found!\";\r\n this.placement_container.appendChild(cont);\r\n }\r\n\r\n }\r\n\r\n open_finish() {\r\n this.hide();\r\n this.container.style.display = \"block\";\r\n this.finish_menu.style.display = \"block\";\r\n }\r\n\r\n clear() {\r\n //clear home buttons\r\n this.action_container.innerHTML = \"\";\r\n this.container.style.display = \"none\";\r\n }\r\n\r\n async open(line: SP.PickListLineData, list: SP.PickListInfo, location:string, callback: () => void) {\r\n this.line = line;\r\n this.list = list;\r\n this.location = location;\r\n this.callback = callback;\r\n this.open_action();\r\n \r\n\r\n\r\n \r\n\r\n this.finish_menu.querySelector(\".return_location\").innerHTML = location;\r\n\r\n var shipment = await SP.Data.Shipment.getShipmentInfo(line.pickLineInfo.shipmentId);\r\n\r\n this.order_info_container.querySelector(\".oid_order_data\").innerHTML =\r\n \"OrderNo: \" + shipment.order.orderNo + \"
\" +\r\n \"ReferenceNo: \" + shipment.order.referenceNo + \"
\" +\r\n \"DeliveryMethod: \" + shipment.order.deliveryMethodInfo.name + \" (\" + shipment.order.deliveryMethodInfo.shortName + \")
\";\r\n\r\n this.order_info_container.querySelector(\".oid_recipient\").innerHTML =\r\n shipment.order.recipient.name + \"
\" +\r\n (shipment.order.recipient.attention ? shipment.order.recipient.attention + \"
\" : \"\") +\r\n shipment.order.recipient.street1 + \"
\" +\r\n (shipment.order.recipient.street2 ? shipment.order.recipient.street2 + \"
\" : \"\") +\r\n shipment.order.recipient.zipcode + \" \" + shipment.order.recipient.city + \", \" + shipment.order.recipient.country + \"
\" +\r\n shipment.order.recipient.email + \" / \" + shipment.order.recipient.phone;\r\n\r\n var items = this.order_info_container.querySelector(\".oid_items\");\r\n\r\n //clear\r\n items.innerHTML = \"\";\r\n\r\n for (let i = 0; i < shipment.lines.length; i++) {\r\n let line = shipment.lines[i];\r\n let name = line.orderLine.itemInfo.sku + \" - \" + line.orderLine.itemInfo.manufacturerName + \" \" + line.orderLine.itemInfo.modelNo;\r\n items.innerHTML +=\r\n \"
\" +\r\n (line.id == this.line.pickLineInfo.orderLineId ? \"\" : \"\") +\r\n \" \" +\r\n \" \" + name + \"
\" + line.orderLine.itemInfo.description + \"
\" + line.orderLine.itemInfo.barcodes.join(\", \") + \"
\" +\r\n \"\" + line.qty + \" \" + line.orderLine.itemInfo.unitType + \"\"\r\n \"
\";\r\n }\r\n\r\n this.attention_list_button.style.display = list.pickListAttention ? \"none\" : \"block\";\r\n }\r\n\r\n addItem(container: HTMLElement, title: string, descrpition: string, icon:string, color:string, action: () => void) {\r\n var c = document.createElement(\"div\");\r\n c.classList.add(\"btn\", \"noselect\");\r\n if (icon) {\r\n c.innerHTML = `
`;\r\n }\r\n c.innerHTML += `
${title}
${descrpition}`;\r\n c.addEventListener(\"click\", () => {\r\n action();\r\n });\r\n container.appendChild(c);\r\n return c;\r\n }\r\n }\r\n}","/// \r\n/// \r\n\r\n\r\nnamespace TerminalApp {\r\n export class App_Picklist extends AppBase {\r\n listId: number;\r\n bound = false;\r\n pl_tote_info = document.getElementById(\"pl_tote_info\");\r\n pl_tote_info_data = document.getElementById(\"pl_tote_info_data\");\r\n pl_tote_info_close = document.getElementById(\"pl_tote_info_close\");\r\n data_container = document.getElementById(\"pl_data\");\r\n status_container = document.getElementById(\"pl_status\");\r\n finish_button = document.getElementById(\"pl_finish_button\");\r\n terminate_button = document.getElementById(\"pl_terminate_button\");\r\n picked_count = document.getElementById(\"pl_picked_count\");\r\n pick_count = document.getElementById(\"pl_pick_count\");\r\n route = document.getElementById(\"pl_route\");\r\n listname = document.getElementById(\"pl_name\");\r\n pl_trolley = document.getElementById(\"pl_trolley\");\r\n current: PickItem;\r\n current_group: PickGroup;\r\n current_hall: string;\r\n items: { [id: string]: PickItem } = {};\r\n sorted_items: PickItem[] = [];\r\n sorted_groups: PickGroup[] = [];\r\n orderTote: { [orderId: number]: ToteInfo } = {};\r\n data: SP.PickListInfo;\r\n\r\n ProblemAssistant: PicklistProblemAssistant;\r\n ProductionAssistant: FinishProductionAssistant;\r\n\r\n static instance: App_Picklist;\r\n TriggeredAudits: { [placementId: string]: SP.StockingLotInfo } = {};\r\n\r\n constructor() {\r\n super(\"app_picklist\");\r\n\r\n this.ProblemAssistant = new PicklistProblemAssistant();\r\n this.ProductionAssistant = new FinishProductionAssistant();\r\n\r\n this.container.append(this.ProblemAssistant.container);\r\n this.container.append(this.ProductionAssistant.container);\r\n\r\n if (App_Picklist.instance != null) SP.alertX(\"already initialized app\");\r\n App_Picklist.instance = this;\r\n\r\n this.terminate_button.addEventListener(\"click\", async () => {\r\n if (!this.isAnyPicked()) {\r\n this.terminatePickList(null);\r\n return;\r\n }\r\n\r\n var info = `\r\n
${SP.Localize(\"sentance_select_destination_placement_for_tote_items\")}
\r\n
${SP.Localize(\"sentance_keep_current_totes\")}

\r\n `;\r\n\r\n placementPickerAssistant.open(this.data.customerId, info, (placement) => {\r\n this.terminatePickList(placement.id);\r\n });\r\n\r\n placementPickerAssistant.container.querySelector(\".keep_button\").addEventListener(\"click\", () => {\r\n this.terminatePickList(-1);\r\n placementPickerAssistant.close();\r\n });\r\n \r\n });\r\n\r\n\r\n this.finish_button.addEventListener(\"click\", async () => {\r\n\r\n if (!this.isAllPicked()) {\r\n if (await SP.confirmX(SP.Localize(\"sentance_remove_all_unpicked_orders\") + \"?\")) {\r\n let result = await SP.get(`/API/v1/PickList/clean/${this.listId}`);\r\n if (result.status == 200) {\r\n SP.Sounds.Success.play();\r\n location.reload();\r\n //TerminalApp.GetApp(\"app_picklist\").open({ \"id\": this.listId.toString() });\r\n }\r\n else {\r\n SP.Sounds.Error.play();\r\n await SP.alertX(\"Error \" + result.status + \": \" + result.msg);\r\n }\r\n }\r\n return;\r\n }\r\n\r\n\r\n if (this.data.pickSettings?.orderType == SP.OrderType.CollectionAssembly || this.data.pickSettings?.orderType == SP.OrderType.CollectionDisassembly) {\r\n //console.log(this.data);\r\n ///todo: Assistant to select finished quantity and prodctiontime\r\n //result needs to get passed to finishPicklist to set the finished quantity and production time on orders\r\n //for (var i = 0; i < this.data.productionOrders.length; i++) {\r\n //}\r\n\r\n var data : any = null;\r\n \r\n //Get item production data, and return if not filled\r\n if (this.data.pickSettings?.orderType == SP.OrderType.CollectionAssembly) { \r\n var OrderInfo = await SP.Data.PickList.getPickListProductionData(this.listId);\r\n data = await this.ProductionAssistant.open(OrderInfo);\r\n if (data == null) return;\r\n }\r\n\r\n var info = `\r\n\r\n
${SP.Localize(\"sentance_select_destination_placement_for_collection_items\")}
\r\n
${SP.Localize(\"sentance_keep_current_totes\")}

\r\n `;\r\n\r\n if (this.data.pickSettings?.orderType == SP.OrderType.CollectionAssembly) {\r\n info += (await this.getDestinations())?.outerHTML ?? \"\";\r\n }\r\n\r\n placementPickerAssistant.open(this.data.customerId, info, (placement) => {\r\n this.finishPickList(null, placement.id, data);\r\n });\r\n\r\n placementPickerAssistant.container.querySelector(\".keep_button\").addEventListener(\"click\", () => {\r\n this.finishPickList(null, null, data);\r\n placementPickerAssistant.close();\r\n });\r\n\r\n return;\r\n }\r\n\r\n\r\n if (this.data.pickSettings && this.data.pickSettings.printAllLabelOnFinishPickList) {\r\n printerPickAssistant.open(SP.Localize(\"sentance_use_current_printer\"), () => {\r\n this.finishPickList(true, null, null);\r\n });\r\n }\r\n else {\r\n this.finishPickList(null, null, null);\r\n }\r\n });\r\n\r\n\r\n this.pl_tote_info_close.addEventListener(\"click\", () => {\r\n this.pl_tote_info.style.display = \"none\";\r\n });\r\n }\r\n\r\n async getDestinations() {\r\n var orderInfo: SP.OrderInfo;\r\n\r\n var currentOrderId = null;\r\n\r\n for (var id in this.items) {\r\n var item = this.items[id];\r\n if (currentOrderId == null) {\r\n currentOrderId = item.data.pickLineInfo.orderId;\r\n orderInfo = await SP.Data.Order.getOrderInfo(item.data.pickLineInfo.orderId);\r\n }\r\n if (item.data.pickLineInfo.orderId != currentOrderId) return null; //dont suggest for multiple orders\r\n }\r\n\r\n var itemInfo = await SP.Data.Item.getItemInfo(orderInfo.collectionOrderItemId);\r\n\r\n var lots = await SP.Data.StockingLot.getItemStockingLotInfos(orderInfo.collectionOrderItemId, false);\r\n\r\n if (lots.length == 0) return null;\r\n\r\n //clear location info\r\n let loc_container = document.createElement(\"div\");\r\n\r\n loc_container.style.backgroundColor = \"#fff\";\r\n loc_container.style.fontSize = \"20px\";\r\n loc_container.style.lineHeight = \"40px\";\r\n loc_container.style.textAlign = \"center\";\r\n loc_container.style.padding = \"10px\";\r\n\r\n var preferred = itemInfo.preferredStockPlacementData;\r\n\r\n //extract location inofo\r\n let locations = {} as any;\r\n\r\n if (preferred) {\r\n locations[preferred] = 0;\r\n }\r\n\r\n lots.forEach(l => {\r\n if (l.placementQuantity > 0) {\r\n if (!locations[l.stockPlacementData]) locations[l.stockPlacementData] = l.placementQuantity;\r\n else locations[l.stockPlacementData] += l.placementQuantity;\r\n }\r\n });\r\n\r\n\r\n\r\n for (var location in locations) {\r\n let t = new PlacementInfoBox(location, false, itemInfo);\r\n let amt = locations[location];\r\n\r\n let item = document.createElement(\"div\");\r\n let location_span = document.createElement(\"span\");\r\n let count_span = document.createElement(\"span\");\r\n count_span.classList.add(\"label\");\r\n location_span.innerHTML += t.string_location;\r\n\r\n if (preferred == location)\r\n location_span.innerHTML += ' ';\r\n count_span.innerHTML = amt;\r\n\r\n\r\n\r\n\r\n item.appendChild(location_span);\r\n item.appendChild(count_span);\r\n\r\n loc_container.appendChild(item);\r\n }\r\n\r\n return loc_container;\r\n }\r\n\r\n async terminatePickList(destinationPlacementId: number) {\r\n StartLoading();\r\n try {\r\n let url = `/API/v1/PickList/cancel/${this.listId}`;\r\n if (destinationPlacementId) url += `?destinationPlacementId=${destinationPlacementId}`;\r\n\r\n let result = await SP.get(url);\r\n\r\n if (result.status == 200) {\r\n SP.Sounds.Success.play();\r\n TerminalApp.GetApp(\"app_pick_orders\").open();\r\n }\r\n else {\r\n SP.Sounds.Error.play();\r\n await SP.alertX(\"Error \" + result.status + \": \" + result.msg);\r\n }\r\n }\r\n finally {\r\n StopLoading();\r\n }\r\n }\r\n\r\n\r\n async finishPickList(autoPrint: boolean, destinationPlacementId: number, productionData: any) {\r\n StartLoading();\r\n try {\r\n let url = `/API/v1/PickList/finish/${this.listId}?autoPrint=${(autoPrint ? \"true\" : \"false\")}&label_printer=${App_Settings.terminalSettings.label_printer}&etiquette_printer=${App_Settings.terminalSettings.etiquette_printer}&a4_printer=${App_Settings.terminalSettings.a4_printer}`;\r\n\r\n if (destinationPlacementId) url += `&destinationPlacementId=${destinationPlacementId}`;\r\n\r\n let result = await SP.post(url, productionData);\r\n\r\n if (result.status == 200) {\r\n if (result.errors && result.errors.length) await SP.alertX(\"Error printing orders:\\r\\n\\r\\n\" + result.errors.join(\"\\r\\n\"));\r\n SP.Sounds.Success.play();\r\n\r\n\r\n if (this.data.pickSettings.quickPack) {\r\n var toteId = 0;\r\n for (var id in this.items) {\r\n var item = this.items[id];\r\n if (toteId && item.data.pickLineInfo.toteId != toteId) {\r\n toteId = 0;\r\n break;\r\n }\r\n toteId = item.data.pickLineInfo.toteId;\r\n }\r\n if (toteId) {\r\n TerminalApp.GetApp(\"app_fast_pack_order\").open({ tote: toteId });\r\n }\r\n else {\r\n TerminalApp.GetApp(\"app_pick_orders\").open();\r\n }\r\n }\r\n else {\r\n TerminalApp.GetApp(\"app_pick_orders\").open();\r\n }\r\n\r\n }\r\n else {\r\n SP.Sounds.Error.play();\r\n await SP.alertX(\"Error \" + result.status + \": \" + result.msg);\r\n }\r\n }\r\n finally {\r\n StopLoading();\r\n }\r\n }\r\n\r\n async onOpen() {\r\n this.listId = parseInt(SP.getHash(\"id\"));\r\n\r\n\r\n\r\n this.reset();\r\n //bind events and groups\r\n if (!this.bound) {\r\n if (!await hub.connection.invoke(\"controlPicklist\", this.listId))\r\n history.back();\r\n\r\n this.bound = true;\r\n barcodeListener.on(\"sp\", this.scanPlacement, this);\r\n barcodeListener.on(\"t\", this.scanToteEvent, this);\r\n barcodeListener.on(\"tr\", this.setTrolley, this);\r\n barcodeListener.on(null, this.scanBarcode, this);\r\n }\r\n\r\n await this.loadData();\r\n\r\n\r\n\r\n\r\n //exit \"onopen\" before starting\r\n setTimeout(() => { this.start() }, 1);\r\n\r\n }\r\n\r\n async start() {\r\n if (this.data.pickSettings?.scanPickingTrolley && !this.data.trolley) {\r\n var trolleyId = await trolleyAssistant.open(false);\r\n if (!trolleyId) GetApp(\"app_pick_orders\").open();\r\n await this.setTrolley(trolleyId);\r\n }\r\n else if (this.data.trolley) {\r\n await this.setTrolley(this.data.trolley.id);\r\n }\r\n\r\n if (this.sorted_groups.length)\r\n this.setNextGroup(true);\r\n else\r\n this.setNext(true);\r\n\r\n\r\n }\r\n\r\n async setTrolley(id: number | string) {\r\n var t = await SP.Data.Trolley.getTrolleyInfo(id as number);\r\n\r\n\r\n if (t.id != this.data.trolley?.id) {\r\n let result = await SP.get(`/API/v1/PickList/setTrolley/${this.listId}?trolleyId=${t.id}`);\r\n if (result.status == 200) {\r\n await Talk(t.name);\r\n }\r\n }\r\n this.data.trolley = t;\r\n\r\n this.pl_trolley.innerHTML = ` (${t.name})`;\r\n }\r\n\r\n\r\n async onClose() {\r\n if (this.bound) {\r\n toteAssistant.close();\r\n this.ProblemAssistant.close();\r\n await hub.connection.invoke(\"releasePicklist\");\r\n this.bound = false;\r\n barcodeListener.off(\"sp\", this.scanPlacement);\r\n barcodeListener.off(\"t\", this.scanToteEvent);\r\n barcodeListener.off(\"tr\", this.setTrolley);\r\n barcodeListener.off(null, this.scanBarcode);\r\n }\r\n this.reset();\r\n }\r\n\r\n reset() {\r\n this.current = null;\r\n this.current_group = null;\r\n this.data_container.innerHTML = \"\";\r\n this.pl_trolley.innerHTML = \"\";\r\n this.items = {};\r\n this.sorted_items = [];\r\n this.current_hall = null;\r\n }\r\n\r\n async ItemPickButtonClick(item: PickItem, confirm_finished: boolean = true) {\r\n if (await item.post(null, !confirm_finished)) {\r\n this.setOrderTote(item, confirm_finished);\r\n if (item.allPicked) this.setNext();\r\n this.updateStatus();\r\n }\r\n\r\n }\r\n\r\n async loadData() {\r\n this.data = await SP.Data.PickList.getPickListInfo(this.listId, true);\r\n\r\n this.terminate_button.style.display = this.data.pickListAttention ? \"block\" : \"none\";\r\n\r\n //don\r\n if (this.data.picked)\r\n return history.back();\r\n\r\n let data = await SP.Data.PickList.getPickListLinesData(this.listId);\r\n this.sorted_groups = [];\r\n let currentGroupKey = \"\";\r\n let currentGroup: PickItem[] = null;\r\n let groupContainer = this.data_container;\r\n let groups: PickItem[][] = [];\r\n\r\n\r\n\r\n for (let i = 0; i < data.length; i++) {\r\n let itemdata = data[i];\r\n\r\n\r\n if (this.data.pickListGrouped) {\r\n var groupKey = itemdata.stockingLotInfo.stockPlacementId + \"-\" + itemdata.stockingLotInfo.item.id;\r\n if (groupKey != currentGroupKey) {\r\n currentGroup = [];\r\n groupContainer = document.createElement(\"div\");\r\n groupContainer.classList.add(\"picking_group\", groupKey);\r\n groups.push(currentGroup);\r\n this.data_container.appendChild(groupContainer);\r\n currentGroupKey = groupKey;\r\n }\r\n }\r\n\r\n let item = new PickItem(itemdata, this.listId);\r\n if (this.data.pickListGrouped) currentGroup.push(item);\r\n\r\n this.sorted_items[i] = item;\r\n this.items[itemdata.pickLineInfo.id] = item;\r\n item.container.classList.add(\"noselect\");\r\n item.index = i;\r\n item.container.addEventListener(\"click\", () => {\r\n if (item != this.current) {\r\n this.setActiveLine(item.data.pickLineInfo.id);\r\n SP.Sounds.Click.play();\r\n }\r\n });\r\n item.menu = new SP.SwipeMenu(\r\n /*Element*/\r\n item.container,\r\n\r\n /*Click Event*/\r\n null,\r\n\r\n /*buttons*/\r\n [\r\n /*Move Button */{\r\n icon: \"\", text: SP.Localize(\"word_problem\"), color: \"#e83535\", confirm: false, action: async () => {\r\n this.ProblemAssistant.open(itemdata, this.data, item.placementInfoBox.string_location, () => {\r\n if (this.sorted_items.length == 0) {\r\n this.finish_button.click();\r\n }\r\n });\r\n item.menu.return();\r\n }\r\n }\r\n ],\r\n\r\n \"app_picklist\"\r\n );\r\n\r\n\r\n groupContainer.appendChild(item.container);\r\n this.setOrderTote(item, false);\r\n }\r\n\r\n\r\n if (this.data.pickListGrouped) {\r\n\r\n for (let i = groups.length - 1; i >= 0; i--) {\r\n let group = new PickGroup(groups[i], groups[i][0].container.parentElement as HTMLDivElement);\r\n group.container.addEventListener(\"click\", e => {\r\n if (!group.container.classList.contains(\"focus\")) {\r\n this.setActiveGroup(group);\r\n }\r\n });\r\n this.sorted_groups.push(group);\r\n this.data_container.insertBefore(group.container, group.child_contianer);\r\n }\r\n\r\n this.sorted_groups.reverse();\r\n }\r\n\r\n this.listname.innerHTML = this.data.stockName + \" #\" + this.data.pickListId;\r\n this.route.innerHTML = Math.round(this.data.pickListRouteLength) + \"m\";\r\n\r\n this.updateStatus();\r\n }\r\n\r\n async removeLine(lineId: string, qty: number, removeFromOrder: boolean) {\r\n StartLoading();\r\n try {\r\n let data = {\r\n listId: this.listId,\r\n lineId: lineId,\r\n qty: qty,\r\n removeFromOrder: removeFromOrder\r\n };\r\n\r\n let result = await SP.post(\"/API/v1/PickList/removeLine/\", data);\r\n if (result.status == 200) {\r\n SP.Sounds.Success.play();\r\n\r\n //remove items and html\r\n for (let i = this.sorted_items.length - 1; i >= 0; i--) {\r\n let item = this.sorted_items[i];\r\n if (item.data.pickLineInfo.id == lineId) {\r\n item.data.pickLineInfo.quantity -= qty;\r\n item.data.pickLineInfo.pickedQuantity = Math.min(item.data.pickLineInfo.quantity, item.data.pickLineInfo.pickedQuantity);\r\n if (item.data.pickLineInfo.quantity <= 0) {\r\n item.menu.remove();\r\n item.container.remove();\r\n item.update();\r\n this.sorted_items.splice(i, 1);\r\n delete this.items[item.data.pickLineInfo.id];\r\n item.parent_group?.removeItem(item);\r\n }\r\n else {\r\n item.amount_input.value = item.data.pickLineInfo.pickedQuantity.toString();\r\n item.input_box.querySelector(\".max_qty\").innerHTML = item.data.pickLineInfo.quantity.toString();\r\n }\r\n break;\r\n }\r\n }\r\n\r\n //update index for remaining\r\n for (let i = 0; i < this.sorted_items.length; i++) {\r\n this.sorted_items[i].index = i;\r\n }\r\n\r\n\r\n }\r\n else {\r\n await SP.alertX(\"Error \" + result.status + \": \" + result.msg);\r\n return false;\r\n }\r\n\r\n this.updateStatus();\r\n return true;\r\n }\r\n finally {\r\n StopLoading();\r\n }\r\n }\r\n\r\n\r\n async changeLine(lineId: string, qty: number, newLotId: string) {\r\n StartLoading();\r\n try {\r\n let data = {\r\n listId: this.listId,\r\n lineId: lineId,\r\n quantity: qty,\r\n newLotId: newLotId\r\n };\r\n\r\n let result = await SP.post(\"/API/v1/PickList/changePlacement/\", data);\r\n if (result.status == 200) {\r\n SP.Sounds.Success.play();\r\n }\r\n else {\r\n await SP.alertX(\"Error \" + result.status + \": \" + result.msg);\r\n return false;\r\n }\r\n\r\n this.updateStatus();\r\n return true;\r\n }\r\n finally {\r\n StopLoading();\r\n }\r\n }\r\n\r\n\r\n\r\n removeGroup(g: PickGroup) {\r\n this.sorted_groups.splice(this.sorted_groups.indexOf(g), 1);\r\n if (g == this.current_group) this.setNextGroup();\r\n g.container.remove();\r\n\r\n }\r\n\r\n\r\n async removeShipment(shipmentId: string) {\r\n StartLoading();\r\n let data = {\r\n listId: this.listId,\r\n shipmentId: shipmentId,\r\n }\r\n\r\n let result = await SP.post(\"/API/v1/PickList/moveShipment/\", data);\r\n if (result.status == 200) {\r\n SP.Sounds.Success.play();\r\n\r\n //remove items and html\r\n for (let i = this.sorted_items.length - 1; i >= 0; i--) {\r\n let item = this.sorted_items[i];\r\n\r\n if (item.data.pickLineInfo.shipmentId == shipmentId) {\r\n item.menu.remove();\r\n item.container.remove();\r\n this.sorted_items.splice(i, 1);\r\n delete this.items[item.data.pickLineInfo.id];\r\n\r\n //reomve from group\r\n item.parent_group?.removeItem(item);\r\n }\r\n }\r\n\r\n //update index for remaining\r\n for (let i = 0; i < this.sorted_items.length; i++) {\r\n this.sorted_items[i].index = i;\r\n }\r\n\r\n this.setNext(true);\r\n\r\n }\r\n else {\r\n await SP.alertX(\"Error \" + result.status + \": \" + result.msg);\r\n }\r\n\r\n this.updateStatus();\r\n\r\n StopLoading();\r\n }\r\n\r\n setOrderTote(item: PickItem, confirm_finish: boolean) {\r\n let orderId = item.data.pickLineInfo.orderId;\r\n let toteInfo = new ToteInfo(item.data.pickLineInfo.toteId, item.data.pickLineInfo.toteName, item.data.pickLineInfo.toteColor);\r\n var currentToteInfo = this.orderTote[item.data.pickLineInfo.orderId];\r\n var siblings = this.sorted_items.filter(i => i.data.pickLineInfo.orderId == item.data.pickLineInfo.orderId && i != item);\r\n\r\n //Update sibling locations\r\n var all_finish = item.allPicked;\r\n if (toteInfo.id != -1) {\r\n this.orderTote[orderId] = toteInfo;\r\n siblings.forEach(s => {\r\n if (s.Picked) return;\r\n s.data.pickLineInfo.toteId = toteInfo.id;\r\n s.data.pickLineInfo.toteColor = toteInfo.color;\r\n s.data.pickLineInfo.toteName = toteInfo.name;\r\n s.update();\r\n\r\n if (!s.allPicked) all_finish = false;\r\n });\r\n }\r\n\r\n //update self location\r\n else if (currentToteInfo != null && siblings.some(s => s.hasActualTote)) {\r\n item.data.pickLineInfo.toteId = currentToteInfo.id;\r\n item.data.pickLineInfo.toteColor = currentToteInfo.color;\r\n item.data.pickLineInfo.toteName = currentToteInfo.name;\r\n item.update();\r\n }\r\n\r\n //clear locations\r\n else {\r\n delete this.orderTote[orderId];\r\n siblings.forEach(s => {\r\n s.data.pickLineInfo.toteId = toteInfo.id;\r\n s.data.pickLineInfo.toteColor = toteInfo.color;\r\n s.data.pickLineInfo.toteName = toteInfo.name;\r\n s.update();\r\n });\r\n }\r\n\r\n if (confirm_finish && all_finish && App_Settings.userSettings.voice_picklist_read_tote) {\r\n Talk(SP.Localize(\"sentance_tote_finished\"), App_Settings.userSettings.voice_delay);\r\n }\r\n\r\n }\r\n async setNextGroup(first: boolean = false) {\r\n await this.checkForAudits();\r\n\r\n if (!this.current_group && !first) return;\r\n console.log(\"setNextGroup\");\r\n let currentIndex = first ? -1 : this.sorted_groups.indexOf(this.current_group);\r\n\r\n\r\n\r\n for (let x = currentIndex + 1; x < this.sorted_groups.length; x++) {\r\n let item2 = this.sorted_groups[x];\r\n if (!item2.allPicked) {\r\n this.setActiveGroup(item2);\r\n break;\r\n }\r\n }\r\n\r\n\r\n }\r\n\r\n\r\n async setNext(first: boolean = false) {\r\n\r\n if (!this.current && !first) return;\r\n let currentIndex = first ? -1 : this.current.index;\r\n\r\n if (this.current != null) {\r\n this.current.container.classList.add(\"small\");\r\n this.current.container.classList.remove(\"focus\");\r\n this.current = null;\r\n }\r\n\r\n //dont open next for grouped\r\n if (this.data.pickListGrouped) return;\r\n\r\n await this.checkForAudits();\r\n\r\n\r\n for (let x = currentIndex + 1; x < this.sorted_items.length; x++) {\r\n let item2 = this.sorted_items[x];\r\n if (item2.data.pickLineInfo.pickedQuantity != item2.data.pickLineInfo.quantity) {\r\n this.setActiveLine(item2.data.pickLineInfo.id);\r\n break;\r\n }\r\n }\r\n }\r\n\r\n async changeHall(hallName: string) {\r\n if (hallName != this.current_hall) {\r\n var change = this.current_hall;\r\n this.current_hall = hallName;\r\n if (change) {\r\n\r\n document.getElementById(\"pl_hall_name\").innerHTML = SP.Localize(\"word_hall\") + \" \" + hallName;\r\n document.getElementById(\"pl_hall_info\").style.opacity = \"0.8\";\r\n if (App_Settings.userSettings.voice_picklist_read_placement) {\r\n Talk(SP.Localize(\"sentance_move_to\") + \" \" + SP.Localize(\"word_hall\") + \" \" + hallName, App_Settings.userSettings.voice_delay);\r\n }\r\n await SP.sleep(5000);\r\n document.getElementById(\"pl_hall_info\").style.opacity = \"0\";\r\n }\r\n }\r\n }\r\n\r\n\r\n async setActiveGroup(g: PickGroup) {\r\n if (this.current_group != null) {\r\n this.current_group.pick_box.style.pointerEvents = \"none\";\r\n this.current_group.container.classList.remove(\"focus\");\r\n this.current_group.container.classList.add(\"small\");\r\n if (this.current_group.isOpen) this.current_group.showPicks();\r\n }\r\n this.current_group = g;\r\n\r\n if (this.current_group) {\r\n this.current_group.container.classList.add(\"focus\");\r\n this.current_group.container.classList.remove(\"small\");\r\n this.current_group.pick_box.style.pointerEvents = \"all\";\r\n await this.centerToCurrent(true);\r\n }\r\n await SP.sleep(0);\r\n\r\n //read location\r\n if (this.current_group) {\r\n this.changeHall(this.current_group.placementInfoBox.hall);\r\n\r\n await SP.sleep(400);\r\n if (this.current_group) {\r\n\r\n if (!this.current_group.allPicked) {\r\n\r\n if (App_Settings.userSettings.voice_picklist_read_placement)\r\n Talk(this.current_group.placementInfoBox.pronounciation, App_Settings.userSettings.voice_delay);\r\n\r\n if (App_Settings.userSettings.voice_picklist_read_quantity)\r\n Talk(SP.Localize(\"word_pick\") + \" \" + this.current_group.totalCount.toString(), App_Settings.userSettings.voice_delay);\r\n }\r\n }\r\n }\r\n }\r\n\r\n\r\n async setActiveLine(lineId: string) {\r\n if (this.current != null) {\r\n this.current.container.classList.add(\"small\");\r\n this.current.container.classList.remove(\"focus\");\r\n }\r\n //set hash\r\n ignoreHashChange = true;\r\n //SP.setHash(\"line\", lineId);\r\n\r\n\r\n this.current = this.items[lineId];\r\n\r\n\r\n if (this.current) {\r\n this.changeHall(this.current.placementInfoBox.hall);\r\n this.current.container.classList.remove(\"small\");\r\n this.current.container.classList.add(\"focus\");\r\n\r\n await this.centerToCurrent();\r\n\r\n if (this.current.data.orderWarehouseNotificationPicker) {\r\n new SP.DismissInfo(\"Warehouse Notification (Order)\", this.current.data.orderWarehouseNotificationPicker);\r\n }\r\n\r\n if (this.current.data.stockingLotInfo.item.warehouseNotificationPicker) {\r\n new SP.DismissInfo(\"Warehouse Notification (Item:\" + this.current.data.stockingLotInfo.item.sku + \")\", this.current.data.stockingLotInfo.item.warehouseNotificationPicker);\r\n }\r\n }\r\n await SP.sleep(0);\r\n ignoreHashChange = false;\r\n\r\n //read location\r\n if (this.current) {\r\n await SP.sleep(400);\r\n if (this.current) {\r\n if (App_Settings.userSettings.voice_picklist_read_placement)\r\n Talk(this.current.placementInfoBox.pronounciation, App_Settings.userSettings.voice_delay);\r\n\r\n if (App_Settings.userSettings.voice_picklist_read_quantity)\r\n Talk(SP.Localize(\"word_pick\") + \" \" + this.current.data.pickLineInfo.quantity.toString(), App_Settings.userSettings.voice_delay);\r\n }\r\n }\r\n }\r\n\r\n async centerToCurrent(groupPick: boolean = false) {\r\n await SP.sleep(1);\r\n var elm = groupPick ? this.current_group : this.current;\r\n if (elm != null) {\r\n if (elm) {\r\n elm.container.scrollIntoView({\r\n behavior: 'smooth',\r\n block: 'center',\r\n inline: 'center'\r\n });\r\n }\r\n }\r\n }\r\n\r\n async scanPlacement(placementId: string) {\r\n console.log(\"Settings:\", this.data.pickSettings?.allowLocationScanPicking);\r\n if (this.data.pickSettings?.allowLocationScanPicking === 0) {\r\n this.current.showError(SP.Localize(\"sentance_location_scanning_disabled\") + \"!\");\r\n return;\r\n }\r\n\r\n //group scanning\r\n if (this.current_group != null) {\r\n\r\n //multiple skus check\r\n if (!this.current_group.childen[0].data.pickLineInfo.allowLocationScanPicking) {\r\n return this.current.showError(SP.Localize(\"sentance_location_scanning_disabled\") + \"!\");\r\n }\r\n\r\n if (this.current_group.data.stockingLotInfo.stockPlacementId.toString() == placementId) {\r\n if (this.data.pickSettings?.groupPickSingleScan ?? true)\r\n this.current_group.pickAll();\r\n else\r\n this.current_group.scanOne(1);\r\n }\r\n else {\r\n SP.Sounds.Error.play();\r\n }\r\n return;\r\n }\r\n\r\n\r\n if (this.current.data.stockingLotInfo.stockPlacementId.toString() == placementId) {\r\n\r\n //multiple skus check\r\n console.log(\"Settings:\", this.current.data);\r\n if (!this.current.data.pickLineInfo.allowLocationScanPicking) {\r\n return this.current.showError(SP.Localize(\"sentance_location_scanning_disabled\") + \"!\");\r\n }\r\n\r\n this.current.plus_click(false, 1);\r\n }\r\n else {\r\n this.current.showError(SP.Localize(\"sentance_scanning_wrong_location\") + \"!\");\r\n }\r\n }\r\n\r\n async scanBarcode(barcode: string) {\r\n //get scanned barcode without leading zeroes\r\n var code = barcode.replace(/^0+/, '');\r\n\r\n //group scanning\r\n if (this.current_group != null) {\r\n var qty = GetBarcodeQty(this.current_group.data.stockingLotInfo.item.allBarcodes, code);\r\n var soft_match = App_Settings.wmsSettings.allow_soft_barcode_match && this.current_group.matchKeyword(code);\r\n\r\n if (qty != null || soft_match) {\r\n if (this.data.pickSettings?.groupPickSingleScan ?? true)\r\n this.current_group.pickAll();\r\n else {\r\n this.current_group.scanOne(qty);\r\n }\r\n }\r\n else {\r\n SP.Sounds.Error.play();\r\n }\r\n return;\r\n }\r\n\r\n\r\n if (this.current != null) {\r\n //click the plus button if match\r\n var qty = GetBarcodeQty(this.current.data.stockingLotInfo.item.allBarcodes, code);\r\n var soft_match = App_Settings.wmsSettings.allow_soft_barcode_match && this.current.matchKeyword(code);\r\n if (qty != null || soft_match) {\r\n this.current.clearError();\r\n this.current.plus_click(true, qty);\r\n }\r\n else {\r\n this.current.showError(SP.Localize(\"sentance_no_barcode_match\") + \"!\");\r\n }\r\n }\r\n }\r\n\r\n isAllPicked() {\r\n var picked = this.sorted_items.reduce((a, b) => a + b.data.pickLineInfo.pickedQuantity, 0);\r\n var pick = this.sorted_items.reduce((a, b) => a + b.data.pickLineInfo.quantity, 0);\r\n return picked == pick;\r\n }\r\n\r\n isAnyPicked() {\r\n var picked = this.sorted_items.reduce((a, b) => a + b.data.pickLineInfo.pickedQuantity, 0);\r\n return picked > 0;\r\n }\r\n\r\n updateStatus() {\r\n var picked = this.sorted_items.reduce((a, b) => a + b.data.pickLineInfo.pickedQuantity, 0);\r\n var pick = this.sorted_items.reduce((a, b) => a + b.data.pickLineInfo.quantity, 0);\r\n this.picked_count.innerHTML = picked.toString();\r\n this.pick_count.innerHTML = pick.toString();\r\n this.finish_button.style.pointerEvents = \"all\";\r\n if (picked == pick)\r\n this.finish_button.classList.remove(\"disabled\");\r\n else\r\n this.finish_button.classList.add(\"disabled\");\r\n\r\n }\r\n\r\n lastToteScan: string = \"\";\r\n lastScanTime: number = 0;\r\n\r\n scanToteEvent(toteId: string) {\r\n this.scanTote(toteId);\r\n if (App_Settings.userSettings.auto_double_scan_picking) this.scanTote(toteId);\r\n return false;\r\n }\r\n\r\n\r\n async scanTote(toteId: string) {\r\n\r\n var now = performance.now();\r\n\r\n //double scan\r\n if (this.lastToteScan != toteId || this.lastScanTime + 1000 < now) {\r\n this.lastToteScan = toteId;\r\n this.lastScanTime = performance.now();\r\n return;\r\n }\r\n\r\n\r\n if (this.current != null) {\r\n await this.PickOrderWithToteScan(this.current, toteId);\r\n }\r\n this.pl_tote_info.style.display = \"none\";\r\n this.lastToteScan = \"\";\r\n }\r\n\r\n async PickOrderWithToteScan(item: PickItem, toteId: string) {\r\n if (await this.current.post(parseInt(toteId))) {\r\n this.setOrderTote(item, true);\r\n if (item.allPicked) this.setNext();\r\n this.updateStatus();\r\n }\r\n // await this.checkForAudits();\r\n }\r\n\r\n async checkForAudits() {\r\n console.log(\"Check for audits!\", this.TriggeredAudits);\r\n\r\n for (var placementId in this.TriggeredAudits) {\r\n var lotInfo = this.TriggeredAudits[placementId];\r\n await quickAuditAssistant.open(lotInfo);\r\n }\r\n this.TriggeredAudits = {};\r\n }\r\n\r\n\r\n showToteContent(orderId: number) {\r\n\r\n var items = this.sorted_items.filter(i => i.data.pickLineInfo.orderId == orderId);\r\n\r\n if (items.length <= 1) return;\r\n\r\n this.pl_tote_info_data.innerHTML = \"\";\r\n\r\n for (let i = 0; i < items.length; i++) {\r\n let item = items[i];\r\n let qty = item.data.pickLineInfo.quantity;\r\n let sku = item.data.stockingLotInfo.item.sku;\r\n let man = item.data.stockingLotInfo.item.manufacturerName;\r\n let model = item.data.stockingLotInfo.item.modelNo;\r\n let desc = item.data.stockingLotInfo.item.description;\r\n let img = item.data.imageUrl;\r\n\r\n var container = this.pl_tote_info_data.appendChild(document.createElement(\"div\"));\r\n\r\n container.innerHTML = ``;\r\n container.innerHTML += ` ${qty}`;\r\n container.innerHTML += ` ${sku}`;\r\n if ((man + model).length)\r\n container.innerHTML += ` ${man + \" \" + model}`;\r\n container.innerHTML += `
${desc}`;\r\n\r\n\r\n }\r\n\r\n\r\n this.pl_tote_info.style.display = \"block\";\r\n\r\n }\r\n }\r\n RegisterApp(\"app_picklist\", App_Picklist);\r\n\r\n\r\n\r\n\r\n\r\n\r\n export class PickGroup extends LotInfoBox {\r\n\r\n toggle_button: HTMLElement;\r\n pick_button: HTMLElement;\r\n pick_box: HTMLElement;\r\n input_box: HTMLElement;\r\n error: HTMLElement;\r\n data: SP.PickListLineData;\r\n status_icon: HTMLElement;\r\n scanCount: number = 0;\r\n totalCount: number = 0;\r\n child_contianer: HTMLDivElement;\r\n childen: PickItem[];\r\n searchString: string;\r\n\r\n constructor(list: PickItem[], childContainer: HTMLDivElement) {\r\n super(list[0].data.stockingLotInfo);\r\n this.child_contianer = childContainer;\r\n let data = list[0].data;\r\n this.data = data;\r\n this.childen = list;\r\n\r\n\r\n for (let i = 0; i < list.length; i++) {\r\n let item = list[i];\r\n item.parent_group = this;\r\n }\r\n\r\n this.container.classList.add(\"group_pick\", \"small\");\r\n\r\n this.status_icon = this.container.appendChild(document.createElement(\"div\"));\r\n this.status_icon.classList.add(\"pick_status\");\r\n\r\n\r\n this.error = this.inner_container.appendChild(document.createElement(\"div\"));\r\n this.error.classList.add(\"error\");\r\n\r\n\r\n\r\n this.pick_box = this.inner_container.appendChild(document.createElement(\"div\"));\r\n this.pick_box.classList.add(\"pick_status_box\", \"noselect\");\r\n this.pick_box.style.pointerEvents = \"none\";\r\n this.toggle_button = this.pick_box.appendChild(document.createElement(\"div\"));\r\n this.toggle_button.innerHTML = SP.Localize(\"sentance_show_picks\");\r\n this.toggle_button.classList.add(\"button\", \"plus\", \"grad-gray\");\r\n this.toggle_button.addEventListener(\"click\", () => {\r\n this.showPicks();\r\n });\r\n\r\n this.input_box = this.pick_box.appendChild(document.createElement(\"div\"));\r\n this.input_box.classList.add(\"input_box\");\r\n\r\n\r\n this.pick_button = this.pick_box.appendChild(document.createElement(\"div\"));\r\n this.pick_button.innerHTML = SP.Localize(\"sentance_pick_all\").toUpperCase();\r\n this.pick_button.classList.add(\"button\", \"pick\", \"grad-green\");\r\n this.pick_button.addEventListener(\"click\", async () => {\r\n if (this.allPicked) this.unpickAll();\r\n else {\r\n this.pickAll();\r\n }\r\n\r\n });\r\n\r\n this.child_contianer.style.display = \"none\";\r\n this.updatePickCounts();\r\n this.update();\r\n\r\n if (this.allPicked) this.container.classList.add(\"finished\");\r\n\r\n var barcodes = [];\r\n\r\n for (var bc in this.data.stockingLotInfo.item.allBarcodes) {\r\n barcodes.push(bc);\r\n }\r\n\r\n var barcodeStringNoZero = \"\";\r\n for (var barcode in barcodes) {\r\n barcodeStringNoZero += barcode.trim().replace(/^0+/, '');\r\n }\r\n\r\n this.searchString = (barcodeStringNoZero + \" \" + barcodes.join(\" \") + \" \" + this.data.stockingLotInfo.item.sku + \" \" + this.data.stockingLotInfo.item.manufacturerName + \" \" + this.data.stockingLotInfo.item.modelNo).toLocaleLowerCase();\r\n\r\n }\r\n\r\n updatePickCounts() {\r\n this.totalCount = 0;\r\n this.scanCount = 0;\r\n for (let i = 0; i < this.childen.length; i++) {\r\n let item = this.childen[i];\r\n this.totalCount += item.data.pickLineInfo.quantity;\r\n\r\n }\r\n this.input_box.innerHTML = \"\" + this.pickedQuantity + \" / \" + this.totalCount;\r\n }\r\n\r\n removeItem(item: PickItem) {\r\n this.childen.splice(this.childen.indexOf(item), 1);\r\n if (this.childen.length) this.updatePickCounts();\r\n else App_Picklist.instance.removeGroup(this);\r\n }\r\n\r\n async scanOne(qty: number) {\r\n this.scanCount += (qty ? qty : 1);\r\n this.input_box.querySelector(\".scanCount\").innerHTML = `( ${this.scanCount} ) `;\r\n if (this.scanCount == this.totalCount) this.pickAll();\r\n }\r\n\r\n async pickAll() {\r\n if (this.allPicked) return;\r\n for (let i = 0; i < this.childen.length; i++) {\r\n let c = this.childen[i];\r\n c.amount_input.value = c.data.pickLineInfo.quantity.toString();\r\n if (c.data.pickLineInfo.toteId <= 0) {\r\n var tote = await SP.Data.Tote.getTempToteInfo();\r\n c.data.pickLineInfo.toteId = tote.toteId;\r\n }\r\n await App_Picklist.instance.ItemPickButtonClick(c, false);\r\n this.update();\r\n }\r\n\r\n // await App_Picklist.instance.checkForAudits();\r\n\r\n\r\n if (this.allPicked) {\r\n if (App_Settings.userSettings.voice_picklist_read_quantity) Talk(this.totalCount.toString(), App_Settings.userSettings.voice_delay);\r\n App_Picklist.instance.setNextGroup();\r\n this.container.classList.add(\"finished\");\r\n SP.Sounds.Success.play();\r\n } else {\r\n SP.Sounds.Error.play();\r\n }\r\n }\r\n\r\n async unpickAll() {\r\n for (let i = 0; i < this.childen.length; i++) {\r\n let c = this.childen[i];\r\n c.amount_input.value = \"0\";\r\n await App_Picklist.instance.ItemPickButtonClick(c, false);\r\n this.update();\r\n if (!this.allPicked) {\r\n this.container.classList.remove(\"finished\");\r\n }\r\n\r\n if (this.pickedQuantity > 0) SP.Sounds.Error.play();\r\n else SP.Sounds.Success.play();\r\n }\r\n //await App_Picklist.instance.checkForAudits();\r\n\r\n\r\n }\r\n\r\n\r\n get pickedQuantity() {\r\n let totalPicked = 0;\r\n for (let i = 0; i < this.childen.length; i++) {\r\n totalPicked += this.childen[i].data.pickLineInfo.pickedQuantity;\r\n }\r\n return totalPicked;\r\n }\r\n\r\n get Picked() {\r\n return this.pickedQuantity > 0;\r\n }\r\n\r\n get allPicked() {\r\n return this.pickedQuantity == this.totalCount;\r\n }\r\n\r\n isOpen = false;\r\n\r\n showPicks() {\r\n var hidden = this.child_contianer.style.display == \"none\";\r\n this.toggle_button.innerHTML = hidden ? SP.Localize(\"sentance_hide_picks\") : SP.Localize(\"sentance_show_picks\");\r\n this.child_contianer.style.display = hidden ? \"block\" : \"none\";\r\n this.isOpen = hidden;\r\n\r\n }\r\n\r\n update() {\r\n if (this.Picked) {\r\n this.pick_button.innerHTML = SP.Localize(\"word_unpick\").toUpperCase();\r\n this.pick_button.classList.add(\"grad-red\");\r\n this.status_icon.innerHTML = this.allPicked ? '' : '';\r\n this.status_icon.style.color = this.allPicked ? '#81da78' : '#ff8f8f';\r\n }\r\n else {\r\n this.pick_button.classList.remove(\"grad-red\");\r\n this.pick_button.innerHTML = SP.Localize(\"word_pick\").toUpperCase();\r\n this.status_icon.innerHTML = \"\";\r\n }\r\n this.input_box.innerHTML = \"\" + this.pickedQuantity + \" / \" + this.totalCount;\r\n this.scanCount = 0;\r\n }\r\n\r\n showError(msg: string) {\r\n SP.Sounds.Error.play();\r\n this.error.style.display = \"block\";\r\n this.error.innerHTML = msg;\r\n App_Picklist.instance.centerToCurrent();\r\n }\r\n\r\n clearError() {\r\n this.error.style.display = \"none\";\r\n App_Picklist.instance.centerToCurrent();\r\n }\r\n\r\n\r\n matchKeyword(keywords: string) {\r\n return !keywords.toLowerCase().split(' ').some(kw => this.searchString.indexOf(kw) == -1);\r\n }\r\n }\r\n\r\n export class PickItem extends LotInfoBox {\r\n minus_button: HTMLElement;\r\n plus_button: HTMLElement;\r\n pick_button: HTMLElement;\r\n pick_box: HTMLElement;\r\n input_box: HTMLElement;\r\n tote_box: HTMLElement;\r\n error: HTMLElement;\r\n amount_input: HTMLInputElement;\r\n data: SP.PickListLineData;\r\n parent_group: PickGroup;\r\n index = 0;\r\n menu: SP.SwipeMenu;\r\n scanCount = 0;\r\n listId = 0;\r\n status_icon: HTMLElement;\r\n searchString: string;\r\n\r\n constructor(data: SP.PickListLineData, listId: number) {\r\n super(data.stockingLotInfo);\r\n this.listId = listId;\r\n this.data = data;\r\n this.container.classList.add(\"small\");\r\n this.status_icon = this.container.appendChild(document.createElement(\"div\"));\r\n this.status_icon.classList.add(\"pick_status\");\r\n this.error = this.inner_container.appendChild(document.createElement(\"div\"));\r\n this.error.classList.add(\"error\");\r\n this.pick_box = this.inner_container.appendChild(document.createElement(\"div\"));\r\n this.pick_box.classList.add(\"pick_status_box\", \"noselect\");\r\n this.minus_button = this.pick_box.appendChild(document.createElement(\"div\"));\r\n this.minus_button.innerHTML = '';\r\n this.minus_button.classList.add(\"button\", \"minus\", \"grad-gray\");\r\n SP.bindClickHold(this.minus_button, 700, () => {\r\n this.minus_click();\r\n }, () => {\r\n this.minus_hold();\r\n });\r\n\r\n console.log(\"DATA:\", data);\r\n\r\n this.input_box = this.pick_box.appendChild(document.createElement(\"div\"));\r\n this.input_box.classList.add(\"input_box\");\r\n this.input_box.innerHTML = \" / \" + data.pickLineInfo.quantity + ' ' + data.stockingLotInfo.item.unitType + '';\r\n this.amount_input = document.createElement(\"input\");\r\n this.input_box.prepend(this.amount_input);\r\n this.amount_input.type = \"number\";\r\n this.amount_input.value = data.pickLineInfo.pickedQuantity.toString();\r\n\r\n this.amount_input.addEventListener(\"focus\", e => {\r\n this.amount_input.select();\r\n });\r\n\r\n this.plus_button = this.pick_box.appendChild(document.createElement(\"div\"));\r\n this.plus_button.innerHTML = '';\r\n this.plus_button.classList.add(\"button\", \"plus\", \"grad-gray\");\r\n SP.bindClickHold(this.plus_button, 700, () => {\r\n this.plus_click(false, 1);\r\n }, () => {\r\n this.plus_hold();\r\n });\r\n\r\n this.pick_button = this.pick_box.appendChild(document.createElement(\"div\"));\r\n this.pick_button.innerHTML = SP.Localize(\"word_pick\").toUpperCase();\r\n this.pick_button.classList.add(\"button\", \"pick\", \"grad-green\");\r\n this.pick_button.addEventListener(\"click\", async () => {\r\n await App_Picklist.instance.ItemPickButtonClick(this);\r\n //await App_Picklist.instance.checkForAudits();\r\n });\r\n\r\n this.tote_box = this.pick_box.appendChild(document.createElement(\"div\"));\r\n this.tote_box.classList.add(\"tote\");\r\n this.tote_box.innerHTML = \"?\";\r\n\r\n var clicked = false;\r\n this.tote_box.addEventListener(\"pointerdown\", () => {\r\n if (this.IsFocused) {\r\n document.addEventListener(\"pointerup\", upEvent);\r\n this.tote_box.addEventListener(\"pointerleave\", leaveEvent);\r\n clicked = true;\r\n\r\n setTimeout(async () => {\r\n if (clicked) {\r\n clicked = false;\r\n var tote = await SP.Data.Tote.getTempToteInfo();\r\n App_Picklist.instance.PickOrderWithToteScan(this, tote.toteId.toString());\r\n }\r\n }, 800);\r\n }\r\n });\r\n\r\n var leaveEvent = () => {\r\n clicked = false;\r\n this.tote_box.removeEventListener(\"pointerleave\", leaveEvent);\r\n }\r\n\r\n var upEvent = () => {\r\n if (this.IsFocused) {\r\n if (clicked) {\r\n toteAssistant.open(true, (toteId) => {\r\n App_Picklist.instance.scanTote(toteId.toString());\r\n App_Picklist.instance.scanTote(toteId.toString());\r\n });\r\n }\r\n }\r\n document.removeEventListener(\"pointerup\", upEvent);\r\n }\r\n\r\n var barcodes = [];\r\n for (var bc in this.data.stockingLotInfo.item.allBarcodes) {\r\n barcodes.push(bc);\r\n }\r\n\r\n var barcodeStringNoZero = \"\";\r\n for (var barcode in barcodes) {\r\n barcodeStringNoZero += barcode.trim().replace(/^0+/, '');\r\n }\r\n\r\n\r\n this.searchString = (barcodeStringNoZero + \" \" + barcodes.join(\" \") + \" \" + this.data.stockingLotInfo.item.sku + \" \" + this.data.stockingLotInfo.item.manufacturerName + \" \" + this.data.stockingLotInfo.item.modelNo).toLocaleLowerCase();\r\n\r\n //Update special image\r\n if (data.imageUrl && data.imageUrl != data.stockingLotInfo.item.imageUrl) (this.inner_container.querySelector(\".image\") as HTMLImageElement).src = data.imageUrl;\r\n\r\n this.text_container.innerHTML += `${SP.Localize(\"word_order\") + ' ' + data.pickLineInfo.orderNo}`;\r\n\r\n if (data.extraText) {\r\n this.text_container.innerHTML += `${data.extraText}`;\r\n }\r\n\r\n if (data.stockingLotInfo.batchNumber) {\r\n this.text_container.innerHTML += `BATCH: ${data.stockingLotInfo.batchNumber}`;\r\n }\r\n\r\n this.update();\r\n }\r\n\r\n get IsFocused() {\r\n return this.container.classList.contains(\"focus\");\r\n }\r\n\r\n get Picked() {\r\n return this.data.pickLineInfo.pickedQuantity > 0;\r\n }\r\n\r\n get allPicked() {\r\n return this.data.pickLineInfo.pickedQuantity == this.data.pickLineInfo.quantity;\r\n }\r\n\r\n get hasActualTote() {\r\n return this.data.pickLineInfo.pickedQuantity > 0 && this.data.pickLineInfo.toteId != -1;\r\n }\r\n\r\n matchKeyword(keywords: string) {\r\n return !keywords.toLowerCase().split(' ').some(kw => this.searchString.indexOf(kw) == -1);\r\n }\r\n\r\n update() {\r\n if (this.data.pickLineInfo.toteId > -1) {\r\n this.tote_box.innerHTML = this.data.pickLineInfo.toteName;\r\n this.tote_box.style.backgroundColor = this.data.pickLineInfo.toteColor;\r\n this.tote_box.style.textShadow = \"0px 1px 6px #000000\";\r\n this.tote_box.style.color = \"#fff\";\r\n }\r\n else {\r\n this.tote_box.innerHTML = \"?\";\r\n this.tote_box.style.backgroundColor = \"\";\r\n this.tote_box.style.textShadow = \"\";\r\n this.tote_box.style.color = \"\";\r\n }\r\n\r\n\r\n if (this.Picked) {\r\n this.status_icon.innerHTML = this.allPicked ? '' : '';\r\n this.status_icon.style.color = this.allPicked ? '#81da78' : '#ff8f8f';\r\n }\r\n else\r\n this.status_icon.innerHTML = \"\";\r\n }\r\n\r\n plus_click(scanned: boolean, qty: number) {\r\n this.clearError();\r\n\r\n var amt = Math.max(parseFloat(this.amount_input.value) + (qty ? qty : 1), 0);\r\n this.amount_input.value = amt.toString();\r\n if (scanned) this.scanCount++;\r\n\r\n if (amt == this.data.pickLineInfo.quantity && this.data.pickLineInfo.toteId <= 0) {\r\n App_Picklist.instance.showToteContent(this.data.pickLineInfo.orderId);\r\n\r\n }\r\n\r\n if (App_Settings.userSettings.voice_picklist_read_tote && amt == this.data.pickLineInfo.quantity) {\r\n if (this.data.pickLineInfo.toteId > 0)\r\n Talk(SP.Localize(\"word_tote\") + \" \" + this.data.pickLineInfo.toteName, App_Settings.userSettings.voice_delay);\r\n else\r\n Talk(SP.Localize(\"sentance_scan_new_tote\") + \" \" + this.data.pickLineInfo.toteName, App_Settings.userSettings.voice_delay);\r\n }\r\n }\r\n\r\n plus_hold() {\r\n this.clearError();\r\n\r\n this.amount_input.value = Math.max(parseFloat(this.amount_input.value), this.data.pickLineInfo.quantity).toString();\r\n }\r\n\r\n minus_click() {\r\n this.clearError();\r\n\r\n this.amount_input.value = Math.max(parseFloat(this.amount_input.value) - 1, 0).toString();\r\n }\r\n\r\n minus_hold() {\r\n this.clearError();\r\n\r\n this.amount_input.value = \"0\";\r\n }\r\n\r\n async post(toteId: number, silent: boolean = false) {\r\n StartLoading(true, true);\r\n\r\n //pick click\r\n if (toteId == null)\r\n toteId = this.data.pickLineInfo.toteId;\r\n\r\n let data = {\r\n listId: this.listId,\r\n lineId: this.data.pickLineInfo.id,\r\n toteId: toteId,\r\n quantity: parseFloat(this.amount_input.value),\r\n scanned: this.scanCount > 0\r\n }\r\n\r\n let result = await SP.post(\"/API/v1/PickList/updateLine/\", data);\r\n if (result.status == 200) {\r\n this.clearError();\r\n if (!silent) SP.Sounds.Success.play();\r\n this.data.pickLineInfo = result.data;\r\n this.update();\r\n\r\n\r\n //force quickAudit\r\n if (result.triggerAudit) {\r\n App_Picklist.instance.TriggeredAudits[this.data.stockingLotInfo.stockPlacementId] = this.data.stockingLotInfo;\r\n }\r\n\r\n }\r\n else {\r\n this.showError(\"Error \" + result.status + \": \" + result.msg);\r\n }\r\n StopLoading();\r\n return result.status == 200;\r\n }\r\n\r\n errorVisible: boolean = false;\r\n\r\n showError(msg: string) {\r\n this.errorVisible = true;\r\n SP.Sounds.Error.play();\r\n this.error.style.display = \"block\";\r\n this.error.innerHTML = msg;\r\n App_Picklist.instance.centerToCurrent();\r\n }\r\n\r\n clearError() {\r\n if (this.errorVisible) {\r\n this.errorVisible = false;\r\n this.error.style.display = \"none\";\r\n App_Picklist.instance.centerToCurrent();\r\n }\r\n }\r\n }\r\n\r\n class ToteInfo {\r\n id: number;\r\n name: string;\r\n color: string;\r\n constructor(id: number, name: string, color: string) {\r\n this.id = id;\r\n this.name = name;\r\n this.color = color;\r\n }\r\n }\r\n}","/// \r\n\r\nnamespace TerminalApp {\r\n let appId = \"app_production\";\r\n\r\n class ProductionItem {\r\n container = document.createElement(\"div\");\r\n errorTimeout: any = null;\r\n\r\n showError(message: string) {\r\n SP.Sounds.Error.play();\r\n var err = this.container.querySelector(\".error\") as HTMLElement;\r\n err.style.display = \"block\";\r\n err.innerHTML = message;\r\n\r\n clearTimeout(this.errorTimeout);\r\n this.errorTimeout = setTimeout(() => {\r\n err.style.display = \"none\";\r\n }, 3000);\r\n }\r\n\r\n constructor(pi: SP.ProductionInfo) {\r\n\r\n var assemblyValue = Math.min(pi.missingAssembly, pi.item.assemblableQuantity);\r\n var disassemblyValue = Math.min(pi.missingDisassembly, pi.item.disassemblableQuantity);\r\n\r\n this.container.innerHTML = `\r\n
\r\n
\r\n \r\n
\r\n ${pi.item.sku}\r\n ${pi.item.description}\r\n ${pi.item.barcodes.join(\", \")}\r\n
\r\n \r\n \r\n \r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n `;\r\n\r\n if (pi.item.collectionAllowAssembly) {\r\n this.initSection(\".assemble_elm\", pi.item.assemblableQuantity, async (qty) => {\r\n try {\r\n StartLoading();\r\n var result = await SP.get(`/api/v1/item/collectionAssembly?itemId=${pi.item.id}&qty=${qty}&assemble=true`);\r\n if (result.status != 200) this.showError(result.msg);\r\n else {\r\n SP.Sounds.Success.play();\r\n App_Production.instance.open({ itemId: SP.getHash(\"itemId\") }) //reload\r\n }\r\n\r\n } finally {\r\n StopLoading();\r\n }\r\n });\r\n }\r\n\r\n if (pi.item.collectionAllowDisassembly) {\r\n this.initSection(\".disassemble_elm\", pi.item.disassemblableQuantity, async (qty) => {\r\n try {\r\n StartLoading();\r\n var result = await SP.get(`/api/v1/item/collectionAssembly?itemId=${pi.item.id}&qty=${qty}&assemble=false`);\r\n if (result.status != 200) this.showError(result.msg);\r\n else {\r\n SP.Sounds.Success.play();\r\n App_Production.instance.open({ itemId: SP.getHash(\"itemId\") }) //reload\r\n }\r\n\r\n } finally {\r\n StopLoading();\r\n }\r\n });\r\n }\r\n\r\n }\r\n\r\n initSection(query: string, max: number, callback: (qty: number) => void) {\r\n var section = this.container.querySelector(query) as HTMLElement;\r\n var plus = section.querySelector(\".plus\");\r\n var minus = section.querySelector(\".minus\");\r\n var input = section.querySelector(\"input\") as HTMLInputElement;\r\n var btn = section.querySelector(\".confirm-btn\");\r\n\r\n section.style.display = \"\";\r\n\r\n plus.addEventListener(\"click\", () => {\r\n var current = parseInt(input.value) ?? 0;\r\n if (current + 1 <= max) {\r\n input.value = Math.max(0, Math.min(max, current + 1)).toString();\r\n SP.Sounds.Click.play();\r\n }\r\n else {\r\n SP.Sounds.Error.play();\r\n }\r\n\r\n });\r\n\r\n minus.addEventListener(\"click\", () => {\r\n var current = parseInt(input.value) ?? 0;\r\n if (current - 1 >= 0) {\r\n input.value = Math.max(0, Math.min(max, current - 1)).toString();\r\n SP.Sounds.Click.play();\r\n }\r\n else {\r\n SP.Sounds.Error.play();\r\n }\r\n });\r\n\r\n input.addEventListener(\"focus\", () => {\r\n input.select();\r\n });\r\n\r\n input.addEventListener(\"input\", () => {\r\n var current = parseInt(input.value) ?? 0;\r\n if (current < 0 || current > max)\r\n input.value = Math.max(0, Math.min(max, current)).toString();\r\n });\r\n\r\n btn.addEventListener(\"click\", () => {\r\n var current = parseInt(input.value) ?? 0;\r\n\r\n if (current > 0) {\r\n callback(current);\r\n }\r\n else {\r\n this.showError(SP.Localize(\"sentance_qty_must_be_greater_than_0\"));\r\n }\r\n });\r\n }\r\n\r\n }\r\n\r\n\r\n export class App_Production extends AppBase {\r\n p_content = document.getElementById(\"p_content\");\r\n p_search_item = document.getElementById(\"p_search_item\");\r\n p_search_ean = document.getElementById(\"p_search_ean\");\r\n p_quick_production = document.getElementById(\"p_quick_production\");\r\n p_quick_count = document.getElementById(\"p_quick_count\");\r\n static instance: App_Production;\r\n constructor() {\r\n super(appId);\r\n App_Production.instance = this;\r\n this.p_search_item.addEventListener(\"click\", () => {\r\n itemSearchAssistant.open(null, null, false, (item) => {\r\n this.addProductionItemFromId(item.id);\r\n }, [SP.ItemType.Collection]);\r\n });\r\n\r\n this.p_search_ean.addEventListener(\"click\", () => {\r\n itemSearchAssistant.open(null, null, true, (item) => {\r\n this.addProductionItemFromId(item.id);\r\n }, [SP.ItemType.Collection]);\r\n });\r\n\r\n this.p_quick_production.addEventListener(\"click\", async () => {\r\n var count = prompt(\"Enter order Amount\", \"20\");\r\n\r\n if (count !== undefined) {\r\n\r\n //generate summary\r\n var info = await SP.Data.QuickProduction.getInfo(parseInt(count), false);\r\n var message = `\r\n

Start production of:

\r\n ${info.productionItems.map(i => `${i.quantity} ${i.item.unitType} - ${i.item.description}`).join('
')}\r\n

Orders:

\r\n ${info.orders.join(\", \")}\r\n `;\r\n\r\n //confirm production\r\n if (await SP.confirmX(message)) {\r\n StartLoading();\r\n try {\r\n var result = await SP.get(`/api/v1/production/start?OrderQty=${count}`);\r\n if (result.status != 200) alert(result.msg);\r\n else {\r\n SP.Sounds.Success.play();\r\n App_Production.instance.open({ itemId: SP.getHash(\"itemId\") }) //reload\r\n }\r\n }\r\n finally {\r\n StopLoading();\r\n }\r\n }\r\n }\r\n });\r\n\r\n }\r\n\r\n clear() {\r\n this.p_content.innerHTML = \"\";\r\n }\r\n\r\n async onOpen() {\r\n this.clear();\r\n\r\n var quickInfo = await SP.Data.QuickProduction.getInfo(1000000, true);\r\n this.p_quick_count.innerHTML = quickInfo.totalOrders.toString();\r\n console.log(\"quickInfo:\", quickInfo);\r\n\r\n\r\n\r\n var itemId = SP.getHash(\"itemId\");\r\n if (itemId) {\r\n this.addProductionItemFromId(itemId);\r\n }\r\n else {\r\n var data = await SP.Data.Item.getProductionInfos(20);\r\n console.log(\"data\", data);\r\n data.forEach(d => { this.addProductionItem(d); });\r\n }\r\n }\r\n\r\n async onClose() {\r\n\r\n }\r\n\r\n\r\n\r\n async addProductionItemFromId(itemId: string) {\r\n this.clear();\r\n ignoreHashChange = true;\r\n SP.setHash(\"itemId\", itemId);\r\n await SP.sleep(1);\r\n ignoreHashChange = false;\r\n\r\n let pi = await SP.Data.Item.getProductionInfo(itemId);\r\n this.addProductionItem(pi);\r\n }\r\n\r\n\r\n addProductionItem(pi: SP.ProductionInfo) {\r\n var itm = new ProductionItem(pi);\r\n this.p_content.appendChild(itm.container);\r\n }\r\n }\r\n\r\n\r\n\r\n RegisterApp(appId, App_Production);\r\n}","/// \r\n\r\n\r\nnamespace TerminalApp {\r\n\tlet appId = \"app_receive_transfer\";\r\n\r\n\texport class transfer_item {\r\n\t\tcontainer: HTMLElement;\r\n\t\tselected: boolean;\r\n\t\tline: SP.PackageLine;\r\n\t\tdood: SP.CheckboxDoodle;\r\n\t\titemInfo: SP.ItemInfo;\r\n\r\n\t\tselect(selected: boolean) {\r\n\t\t\tthis.container.style.opacity = selected ? \"1\" : \"0.5\";\r\n\t\t\tthis.selected = selected;\r\n\t\t\tthis.dood.checked = selected;\r\n\t\t}\r\n\r\n\t\tconstructor(i: SP.PackageLine, itemInfo: SP.ItemInfo) {\r\n\t\t\tconsole.log(i);\r\n\t\t\tthis.line = i;\r\n\t\t\tthis.itemInfo = itemInfo;\r\n\t\t\tlet name = `${itemInfo.manufacturerName} ${itemInfo.modelNo}`.trim();\r\n\r\n\t\t\t//elm\r\n\t\t\tlet item = this.container = document.createElement(\"div\");\r\n\t\t\titem.classList.add(\"item\");\r\n\r\n\t\r\n\t\t\tif (itemInfo.barcodes == undefined) itemInfo.barcodes = [];\r\n\t\t\t//let numMin = Math.pow(10, 12);\r\n\t\t\t//let numMax = numMin * 9 - 1;\r\n\t\t\t//while (itemInfo.barcodes.length < 5) {\r\n\t\t\t//\titemInfo.barcodes.push(Math.floor(Math.random() * numMax + numMin).toString())\r\n\t\t\t//}\r\n\r\n\t\t\tlet checked = \"\";\r\n\t\t\tlet disabled = \"\";\r\n\t\t\tif (i.transferCompletedAt) {\r\n\t\t\t\t//checked = \"checked\";\r\n\t\t\t\tdisabled = \"disabled\";\r\n\t\t\t}\r\n\r\n\t\t\t//tempalte\r\n\t\t\titem.innerHTML = `\r\n\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t${itemInfo.sku} ${((name ? ` (${name})` : \"\"))}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t\t\t${itemInfo.barcodes?.join(', ') ?? ''}\r\n\t\t\t\t\t\t\t\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t\t\t${itemInfo.description}\r\n\t\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t
\r\n\t\t\t\t\t\t\r\n\t\t\t\t\t
`;\r\n\r\n\r\n\t\t\r\n\r\n\t\t\tif (i.transferCompletedAt) {\r\n\t\t\t\titem.innerHTML += `
${SP.Localize('word_received')}: ${i.transferCompletedAt}
`\r\n\t\t\t}\r\n\r\n\t\t\t//click for item info\r\n\t\t\tlet image_span = item.querySelector(\".image\");\r\n\t\t\timage_span.addEventListener(\"click\", (e) => {\r\n\t\t\t\titemShortcutAssistant.open_with_info(itemInfo);\r\n\t\t\t\te.preventDefault(); e.stopPropagation();\r\n\t\t\t});\r\n\r\n\t\t\t//Create checkbox doodle\r\n\t\t\tlet checkbox = item.querySelector(\".msq_sku_checkbox\") as HTMLInputElement;\r\n\t\t\tthis.dood = new SP.CheckboxDoodle(checkbox);\r\n\t\t\tif (disabled == \"disabled\") this.dood.disabled = true;\r\n\t\t\tconsole.log(\"disabled:\", disabled);\r\n\t\t\tthis.dood.onChange = () => {\r\n\t\t\t\tthis.select(checkbox.checked);\r\n\t\t\t\tapp_receive_transfer.instance.updateResetSelect();\r\n\t\t\t};\r\n\r\n\r\n\r\n\r\n\t\t\tthis.select(false);\r\n\t\t}\r\n\r\n\t\r\n\t}\r\n\r\n\texport class app_receive_transfer extends AppBase {\r\n\r\n\t\trt_scan_package = document.getElementById(\"rt_scan_package\");\r\n\t\trt_scan_location = document.getElementById(\"rt_scan_location\");\r\n\t\trt_content = document.getElementById(\"rt_content\");\r\n\t\trt_received = document.getElementById(\"rt_received\");\r\n\t\trt_content_items = this.rt_content.querySelector(\".items\");\r\n\t\trt_received_items = this.rt_received.querySelector(\".items\");\r\n\t\tallRecievedInfo: HTMLElement = this.rt_content.querySelector(\".all_received\");\r\n\t\trt_sender_location = document.getElementById(\"rt_sender_location\");\r\n\t\trt_recipient_location = document.getElementById(\"rt_recipient_location\");\r\n\t\trt_order_no = document.getElementById(\"rt_order_no\");\r\n\t\trt_reset_all = document.getElementById(\"rt_reset_all\");\r\n\t\trt_select_all = document.getElementById(\"rt_select_all\");\r\n\t\tcurrentPackage: SP.PackageTransferInfo;\r\n\t\tassistant: TransferPackageAssistant;\r\n\r\n\r\n\t\tbound = false;\r\n\t\tstatic instance: app_receive_transfer;\r\n\r\n\r\n\r\n\r\n\t\tconstructor() {\r\n\t\t\tsuper(appId);\r\n\t\t\tapp_receive_transfer.instance = this;\r\n\r\n\t\t\tthis.rt_scan_location.addEventListener(\"click\", () => {\r\n\t\t\t\tplacementPickerAssistant.open(null, null, (p) => {\r\n\t\t\t\t\tthis.scanPlacement(p.id.toString());\r\n\t\t\t\t});\r\n\t\t\t});\r\n\r\n\t\t\tthis.rt_select_all.addEventListener(\"click\", () => {\r\n\t\t\t\tthis.selectAll(true);\r\n\t\t\t});\r\n\r\n\t\t\tthis.rt_reset_all.addEventListener(\"click\", () => {\r\n\t\t\t\tthis.selectAll(false);\r\n\t\t\t});\r\n\r\n\t\t\t//assistant\r\n\t\t\tthis.assistant = new TransferPackageAssistant();\r\n\t\t\tthis.container.appendChild(this.assistant.container);\r\n\r\n\r\n\t\t\tdocument.getElementById(\"rt_scan_package\").addEventListener(\"click\", async (e: MouseEvent) => {\r\n\t\t\t\tvar barcode = await this.assistant.open()\r\n\t\t\t\tif (barcode) {\r\n\t\t\t\t\tthis.scanBarcode(barcode);\r\n\t\t\t\t}\r\n\t\t\t});\r\n\t\t}\r\n\t\treset() {\r\n\t\t\tthis.allRecievedInfo.style.display = \"none\";\r\n\t\t\tthis.items = [];\r\n\t\t\tthis.rt_scan_package.style.display = \"block\";\r\n\t\t\tthis.rt_scan_location.style.display = \"none\";\r\n\t\t\tthis.rt_content.style.display = \"none\";\r\n\t\t\tthis.rt_content_items.innerHTML = \"\";\r\n\t\t\tthis.rt_received.style.display = \"none\";\r\n\t\t\tthis.rt_received_items.innerHTML = \"\";\r\n\t\t\tthis.currentPackage = undefined;\r\n\t\t}\r\n\r\n\t\tselectAll(select: boolean) {\r\n\t\t\tfor (var i = 0; i < this.items.length; i++) {\r\n\t\t\t\tlet item = this.items[i];\r\n\t\t\t\tif (item.line.transferCompletedAt) continue;\r\n\t\t\t\tif (!item.selected && select) {\r\n\t\t\t\t\titem.select(true);\r\n\t\t\t\t}\r\n\t\t\t\telse if (item.selected && !select) {\r\n\t\t\t\t\titem.select(false);\r\n\t\t\t\t}\r\n\t\t\t}\t\r\n\t\t\tthis.updateResetSelect();\r\n\t\t}\r\n\r\n\r\n\r\n\t\tupdateResetSelect() {\r\n\t\t\tvar showReset = false;\r\n\t\t\tvar showSelect = false;\r\n\t\t\tfor (var i = 0; i < this.items.length; i++) {\r\n\t\t\t\tlet item = this.items[i];\r\n\t\t\t\tif (item.line.transferCompletedAt) continue;\r\n\t\t\t\tif (item.selected) showReset = true;\r\n\t\t\t\telse showSelect = true;\r\n\t\t\t\tif (showReset && showSelect) break;\r\n\t\t\t}\r\n\r\n\t\t\tthis.rt_reset_all.style.display = showReset ? \"\" : \"none\";\r\n\t\t\tthis.rt_select_all.style.display = showSelect ? \"\" : \"none\";\r\n\t\t}\r\n\r\n\r\n\t\tasync scanBarcode(bc: string) {\r\n\t\t\t\r\n\t\t\tvar data = await SP.Data.Transfer.getPackageTransferInfo(bc);\r\n\r\n\t\t\tif (data.match) {\r\n\t\t\t\tthis.reset();\r\n\t\t\t\tthis.selectPackage(data);\r\n\t\t\t\t//this.populate(data);\r\n\t\t\t}\r\n\t\t\telse {\r\n\t\t\t\tfor (var i = 0; i < this.items.length; i++) {\r\n\t\t\t\t\tconsole.log(this.items[i].itemInfo.allBarcodes);\r\n\t\t\t\t\tif (GetBarcodeQty(this.items[i].itemInfo.allBarcodes, bc) > 0) {\r\n\t\t\t\t\t\tSP.Sounds.Click.play();\r\n\t\t\t\t\t\tthis.items[i].dood.checked = true;\r\n\t\t\t\t\t\tthis.items[i].dood.onChange();\r\n\t\t\t\t\t\treturn;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\tSP.alertX(\"Transfer or item not found for barcode: \" + bc);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\titems: transfer_item[] = [];\r\n\r\n\r\n\t\tscanning: boolean = false;\r\n\t\tasync scanPlacement(placementId: string) {\r\n\t\t\tif (this.scanning) return;\r\n\t\t\tif (!placementId) return;\r\n\t\t\tthis.scanning = true;\r\n\t\t\ttry {\r\n\t\t\t\tconsole.log(\"scanning placement\", placementId);\r\n\t\t\t\tconsole.log(this.items);\r\n\t\t\t\tif (this.items.filter(i => i.selected == true).length == 0) {\r\n\t\t\t\t\tSP.alertX(\"No items selected\");\r\n\t\t\t\t\treturn;\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn await this.performArrival(placementId);\r\n\t\t\t} catch(e) {\r\n\t\t\t\tSP.Sounds.Error.play();\r\n\t\t\t\tSP.alertX(\"Error: \" + e);\r\n\t\t\t\tconsole.error(e);\r\n\t\t\t} finally {\r\n\t\t\t\tthis.scanning = false;\r\n\t\t\t}\r\n\t\t}\r\n\t\tasync performArrival(placementId: string) {\r\n\t\t\tconsole.log(\"performArrival\", placementId);\r\n\t\t\tvar result = await SP.post(\"/api/v1/transfer/update\", {\r\n\t\t\t\t\"packageId\": this.currentPackage.package.id,\r\n\t\t\t\t\"lines\": this.items.filter(i => i.selected).map(i => i.line.id),\r\n\t\t\t\t\"placementId\": placementId\r\n\t\t\t});\r\n\t\t\tif (result.status == 200) {\r\n\t\t\t\tSP.Sounds.Success.play();\r\n\r\n\t\t\t\t//re-render\r\n\t\t\t\tthis.scanBarcode(SP.getHash(\"packageId\"))\r\n\r\n\t\t\t\t//this.currentPackage.package.lines.forEach(i => {\r\n\t\t\t\t//\tif (this.itemValidated.indexOf(i.dood.checkbox) == -1) return;\r\n\t\t\t\t//\tif (i.dood) i.dood.disabled = true;\r\n\t\t\t\t//});\r\n\t\t\t} else {\r\n\t\t\t\tSP.Sounds.Error.play();\r\n\t\t\t\tSP.alertX(\"Error: \" + result.msg);\r\n\t\t\t\tconsole.log(result);\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\tasync selectPackage(info: SP.PackageTransferInfo) {\r\n\t\t\tignoreHashChange = true;\r\n\t\t\tSP.setHash(\"packageId\", info.package.id);\r\n\t\t\tthis.rt_scan_location.style.display = \"block\";\r\n\t\t\tthis.rt_content.style.display = \"\";\r\n\t\t\tthis.rt_scan_package.style.display = \"none\";\r\n\r\n\r\n\t\t\tthis.rt_sender_location.innerHTML = info.fromLocationName;\r\n\t\t\tthis.rt_recipient_location.innerHTML = info.toLocationName;\r\n\t\t\tthis.rt_order_no.innerHTML = info.orderNo;\r\n\r\n\r\n\t\t\tvar pending = false;\r\n\t\t\tvar recievedSomething = false;\r\n\t\t\tinfo.package.lines.forEach(i => {\r\n\t\t\t\tlet itemInfo = info.itemInfos[i.id];\r\n\t\t\t\tvar elm = new transfer_item(i, itemInfo);\r\n\t\t\t\tthis.items.push(elm);\r\n\r\n\t\t\t\t\r\n\t\t\t\tif (i.transferCompletedAt) {\r\n\t\t\t\t\tthis.rt_received_items.appendChild(elm.container);\r\n\t\t\t\t\trecievedSomething = true;\r\n\t\t\t\t}\r\n\t\t\t\telse {\r\n\t\t\t\t\tthis.rt_content_items.appendChild(elm.container);\r\n\t\t\t\t\tpending = true;\r\n\t\t\t\t}\r\n\r\n\t\t\t});\r\n\r\n\t\t\tif (!pending) this.allRecievedInfo.style.display = \"block\";\r\n\t\t\tif (recievedSomething) this.rt_received.style.display = \"block\";\r\n\r\n\t\t\tthis.currentPackage = info;\r\n\t\t\tthis.updateResetSelect();\r\n\r\n\t\t}\r\n\r\n\t\tasync onOpen() {\r\n\t\t\tthis.reset();\r\n\r\n\t\t\t//bind events and groups\r\n\t\t\tif (!this.bound) {\r\n\t\t\t\tthis.bound = true;\r\n\t\t\t\tbarcodeListener.on(\"sp\", this.scanPlacement, this);\r\n\t\t\t\tbarcodeListener.on(null, this.scanBarcode, this);\r\n\t\t\t}\r\n\r\n\t\t\tvar packageId = SP.getHash(\"packageId\");\r\n\r\n\t\t\t//load package\r\n\t\t\tif (packageId) await this.scanBarcode(packageId);\r\n\r\n\t\t}\r\n\r\n\t\tasync onClose() {\r\n\t\t\t//unbind events and groups\r\n\t\t\tif (this.bound) {\r\n\t\t\t\tthis.bound = false;\r\n\t\t\t\tbarcodeListener.off(\"sp\", this.scanPlacement);\r\n\t\t\t\tbarcodeListener.off(null, this.scanBarcode);\r\n\t\t\t}\r\n\t\t\tthis.reset();\r\n\t\t}\r\n\t}\r\n\r\n\tRegisterApp(appId, app_receive_transfer);\r\n}","/// \r\n\r\n\r\nnamespace TerminalApp {\r\n let appId = \"app_return\";\r\n\r\n class ReturnRefundInfo {\r\n container: HTMLElement;\r\n\r\n refundInfo: SP.RefundInfo;\r\n\r\n updatedRefund: SP.UpdatedRefund;\r\n\r\n hasBundle:boolean;\r\n\r\n constructor(thisRefundInfo: SP.RefundInfo, hasBundle: boolean) {\r\n this.refundInfo = thisRefundInfo;\r\n\r\n this.hasBundle = hasBundle;\r\n\r\n this.updatedRefund = {\r\n confirmed: false,\r\n refundId: this.refundInfo.refundId,\r\n refundType: this.refundInfo.refundType,\r\n refundFee: this.refundInfo.returnFee,\r\n comment: \"\",\r\n lines: new Array()\r\n };\r\n\r\n this.initialize();\r\n\r\n // Change refund type\r\n this.container.querySelector(\".returnRefund-select\").addEventListener(\"change\", (event) => {\r\n let thisTarget = event.target as HTMLSelectElement;\r\n this.updatedRefund.refundType = parseFloat(thisTarget.options[thisTarget.selectedIndex].value);\r\n });\r\n\r\n // Return fee\r\n this.container.querySelector(\".returnRefund-input\").addEventListener(\"input\", (event) => {\r\n let thisTarget = event.target as HTMLInputElement;\r\n this.updatedRefund.refundFee = parseFloat(thisTarget.value);\r\n });\r\n\r\n // Comment\r\n this.container.querySelector(\".return-comment\").addEventListener(\"input\", (event) => {\r\n let thisTarget = event.target as HTMLTextAreaElement;\r\n this.updatedRefund.comment = thisTarget.value;\r\n });\r\n\r\n if (this.hasBundle) {\r\n this.container.querySelector(\".returnRefund-bundleAssistant-btn\").addEventListener(\"click\", () => {\r\n App_Return.instance.openBundleAssistant();\r\n });\r\n }\r\n\r\n // Confirm Btn\r\n this.container.querySelector(\".returnRefund-confirm-btn\").addEventListener(\"click\", async () => {\r\n SP.Sounds.Click.play();\r\n this.updatedRefund.confirmed = true;\r\n await this.confirmRefund();\r\n });\r\n\r\n // Cancel Btn\r\n this.container.querySelector(\".returnRefund-cancel-btn\").addEventListener(\"click\", async () => {\r\n SP.Sounds.Click.play();\r\n await this.confirmRefund();\r\n App_Return.instance.reset(true);\r\n });\r\n }\r\n\r\n initialize() {\r\n this.container = document.createElement(\"div\");\r\n this.container.classList.add(\"returnRefund-overall-container\");\r\n\r\n this.container.innerHTML += `\r\n\r\n
\r\n

Refund type

\r\n \r\n
\r\n\r\n
\r\n

Return fee

\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n\r\n
\r\n \r\n
\r\n `;\r\n\r\n if (!this.hasBundle) {\r\n this.container.querySelector(\".returnRefund-bundleAssistant-btn\").remove();\r\n }\r\n\r\n // Refund lines\r\n let totalOrderLinePriceIncVat = 0.00;\r\n for (let i = 0; i < this.refundInfo.lines.length; i++) {\r\n let refundLine = this.refundInfo.lines[i];\r\n\r\n if (totalOrderLinePriceIncVat == 0) {\r\n totalOrderLinePriceIncVat = refundLine.refundPriceIncVat * refundLine.qty;\r\n }\r\n else {\r\n totalOrderLinePriceIncVat += (refundLine.refundPriceIncVat * refundLine.qty);\r\n }\r\n\r\n\r\n this.container.querySelector(\".returnRefund-item-overall-container\").innerHTML += `\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n ${refundLine.orderLine.description}\r\n\r\n
\r\n Antal: ${refundLine.qty}\r\n Pris: ${refundLine.refundPriceIncVat * refundLine.qty}\r\n
\r\n
\r\n
\r\n `;\r\n }\r\n\r\n this.container.querySelector(\".returnRefund-item-overall-container\").innerHTML += `\r\n \r\n `;\r\n\r\n if (this.refundInfo.refundType == SP.RefundType.Gift_card) {\r\n this.container.querySelector(\".returnRefund-select\").innerHTML = `\r\n \r\n \r\n `;\r\n }\r\n else {\r\n this.container.querySelector(\".returnRefund-select\").innerHTML = `\r\n \r\n \r\n `;\r\n }\r\n\r\n let returnFeeIncVat = 0.00;\r\n if (this.refundInfo.returnFeeIncVat != 0) {\r\n returnFeeIncVat = this.refundInfo.returnFeeIncVat;\r\n }\r\n\r\n let returnfeeInput = this.container.querySelector(\".returnRefund-input\") as HTMLInputElement;\r\n returnfeeInput.value = returnFeeIncVat.toString();\r\n }\r\n\r\n async confirmRefund() {\r\n try {\r\n StartLoading();\r\n\r\n var result = await SP.Data.Refund.updateRefund(this.updatedRefund);\r\n if (result != 200) {\r\n SP.Sounds.Vibrate;\r\n SP.Sounds.Error.play();\r\n return;\r\n }\r\n\r\n SP.Sounds.Success.play();\r\n SP.setManyHash({ \"orderId\": null, \"shipmentId\": null, \"refundId\": null });\r\n\r\n } finally {\r\n StopLoading();\r\n }\r\n }\r\n }\r\n\r\n\r\n class ReturnShipmentInfo {\r\n container: HTMLElement;\r\n data: SP.ShipmentLineInfo;\r\n\r\n updatedShipmentLine: SP.UpdatedShipmentLine;\r\n\r\n constructor(shipmentId: string, line: SP.ShipmentLineInfo, qty: number) {\r\n this.data = line;\r\n\r\n this.updatedShipmentLine = {\r\n shipmentId: shipmentId,\r\n shipmentLineId: line.id,\r\n orderLineId: line.orderLine.id,\r\n quantity: qty,\r\n note: line.returnInfo.note,\r\n warehouseActionId: line.returnInfo.warehouseReturnActionId,\r\n warehouseReasonId: line.returnInfo.warehouseReturnReasonId\r\n };\r\n\r\n this.initialize(line, qty);\r\n\r\n // Plus 1 to input field\r\n this.container.querySelector(\".return-lineEdit-add-btn\").addEventListener(\"click\", (event) => {\r\n let thisTarget = event.currentTarget as HTMLElement;\r\n SP.Sounds.Click.play();\r\n\r\n let input = thisTarget.closest(\".return-lineEdit-middle-container\").querySelector(\".return-lineEdit-input\") as HTMLInputElement;\r\n\r\n this.addOrSubtractQuantityInput(true, input);\r\n });\r\n\r\n\r\n // Subtract 1 from input field\r\n this.container.querySelector(\".return-lineEdit-sub-btn\").addEventListener(\"click\", (event) => {\r\n let thisTarget = event.currentTarget as HTMLElement;\r\n SP.Sounds.Click.play();\r\n\r\n let input = thisTarget.closest(\".return-lineEdit-middle-container\").querySelector(\".return-lineEdit-input\") as HTMLInputElement;\r\n\r\n this.addOrSubtractQuantityInput(false, input);\r\n });\r\n\r\n\r\n // Open settings/details\r\n this.container.querySelector(\".return-lineEdit-edit-btn\").addEventListener(\"click\", async () => {\r\n SP.Sounds.Click.play();\r\n\r\n App_Return.instance.editShipmentInfoAssistant.open((warehouseReasonId, warehouseActionId, note) => {\r\n\r\n if (warehouseActionId === \"\") {\r\n warehouseActionId = \"00000000-0000-0000-0000-000000000000\"\r\n }\r\n\r\n if (warehouseReasonId === \"\") {\r\n warehouseReasonId = \"00000000-0000-0000-0000-000000000000\";\r\n }\r\n\r\n this.updatedShipmentLine.warehouseReasonId = warehouseReasonId;\r\n this.updatedShipmentLine.warehouseActionId = warehouseActionId;\r\n this.updatedShipmentLine.note = note;\r\n\r\n\r\n let warehouseReasonName = \"None\"; \r\n let warehouseReasons = App_Return.instance.warehouseReasons;\r\n let reasonIndex = warehouseReasons.findIndex((x) => x.id === warehouseReasonId);\r\n if (reasonIndex > -1) {\r\n warehouseReasonName = warehouseReasons[reasonIndex].name;\r\n }\r\n\r\n this.container.querySelector(\".return-lineInfo-reason-text\").innerHTML = warehouseReasonName;\r\n\r\n }, this.updatedShipmentLine);\r\n });\r\n\r\n // Edit input quantity\r\n this.container.querySelector(\".return-lineEdit-input\").addEventListener(\"input\", (event) => {\r\n let thisTarget = event.currentTarget as HTMLInputElement;\r\n SP.Sounds.Click.play();\r\n\r\n let parsedQuantity = parseFloat(thisTarget.value);\r\n\r\n if (thisTarget.value.length == 0 || thisTarget.value.startsWith(\"0\") || thisTarget.value.startsWith(\"-\")) {\r\n thisTarget.value = \"0\";\r\n }\r\n\r\n parsedQuantity = parseFloat(thisTarget.value);\r\n if (isNaN(parsedQuantity)) {\r\n console.log(\"Not a number\");\r\n thisTarget.value = \"0\";\r\n return;\r\n }\r\n\r\n this.updatedShipmentLine.quantity = parsedQuantity;\r\n\r\n App_Return.instance.refreshReturnCount();\r\n this.updateQuantityResult(parsedQuantity, line.qty);\r\n });\r\n }\r\n\r\n initialize(line: SP.ShipmentLineInfo, qty: number) {\r\n this.container = document.createElement(\"div\");\r\n this.container.classList.add(\"return-line-container\");\r\n this.container.setAttribute(\"data-itembarcodes\", line.orderLine.itemInfo.barcodes.toString())\r\n\r\n this.container.innerHTML += `\r\n
\r\n
\r\n ${line.orderLine.itemInfo.sku}\r\n ${line.orderLine.description}\r\n ${line.orderLine.itemInfo.barcodes}\r\n\r\n ${SP.Localize(\"word_reason\")}: \r\n\r\n
\r\n ${SP.Localize(\"word_comment\")}:\r\n ${line.returnInfo.comment}\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n / ${line.qty}\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n
\r\n
\r\n\r\n
\r\n OK\r\n
\r\n
\r\n `;\r\n\r\n if (line.returnInfo.returnedQty != 0) {\r\n this.updatedShipmentLine.quantity = line.returnInfo.returnedQty;\r\n }\r\n\r\n let warehouseReasonName = \"None\";\r\n let warehouseReasons = App_Return.instance.warehouseReasons;\r\n\r\n console.log(\"reasons\", warehouseReasons, line.returnInfo.warehouseReturnReasonId);\r\n\r\n let reasonIndex = warehouseReasons.findIndex((x) => x.id === line.returnInfo.warehouseReturnReasonId);\r\n if (reasonIndex > -1) {\r\n const reason = warehouseReasons[reasonIndex];\r\n warehouseReasonName = reason.name;\r\n\r\n if (reason.complaint) {\r\n this.container.classList.add(\"bg-warning\");\r\n }\r\n\r\n }\r\n\r\n\r\n this.container.querySelector(\".return-lineInfo-reason-text\").innerHTML = warehouseReasonName;\r\n\r\n this.updateQuantityResult(this.updatedShipmentLine.quantity, line.qty);\r\n }\r\n\r\n addOrSubtractQuantityInput(add: boolean, input: HTMLInputElement, amt: number = 1) {\r\n let quantity = parseInt(input.value);\r\n if (isNaN(quantity)) {\r\n SP.Sounds.Vibrate;\r\n SP.Sounds.Error.play();\r\n SP.alertX(\"Quantity is not a number\");\r\n return;\r\n }\r\n\r\n let expectedQty = parseFloat(input.closest(\".return-lineEdit-middle-container\").querySelector(\".return-lineEdit-expected\").innerHTML.replace(\"/ \", \"\"));\r\n if (isNaN(expectedQty)) {\r\n SP.Sounds.Vibrate;\r\n SP.Sounds.Error.play();\r\n SP.alertX(\"Expected quantity is not a number\");\r\n return;\r\n }\r\n\r\n if (add) {\r\n quantity += amt;\r\n }\r\n else {\r\n if (quantity == 0) {\r\n return;\r\n }\r\n\r\n quantity -= amt;\r\n if (quantity < 0) quantity = 0;\r\n }\r\n\r\n input.value = quantity.toString();\r\n\r\n this.updatedShipmentLine.quantity = quantity;\r\n\r\n App_Return.instance.refreshReturnCount();\r\n\r\n this.updateQuantityResult(quantity, expectedQty);\r\n }\r\n\r\n addQuantity(qty: number = 1) {\r\n let input = this.container.querySelector(\".return-lineEdit-input\") as HTMLInputElement;\r\n this.addOrSubtractQuantityInput(true, input, qty);\r\n }\r\n\r\n updateQuantityResult(quantity: number, expectedQty: number) {\r\n let result = quantity - expectedQty;\r\n\r\n let resultContainer = this.container.querySelector(\".return-lineEdit-result\") as HTMLElement;\r\n\r\n if (result == 0) {\r\n resultContainer.innerHTML = \"OK\";\r\n resultContainer.style.backgroundColor = \"#e0e0e0\";\r\n }\r\n else if (result < 0) {\r\n resultContainer.innerHTML = result.toString();\r\n resultContainer.style.backgroundColor = \"rgb(239, 198, 198)\";\r\n }\r\n else {\r\n resultContainer.innerHTML = \"+\" + result.toString();\r\n resultContainer.style.backgroundColor = \"rgb(236, 241, 171)\";\r\n }\r\n }\r\n }\r\n\r\n\r\n class ReturnOrderInfo {\r\n container: HTMLElement;\r\n shipmentLineArray = new Array();\r\n order: SP.ReturnOrderInfo;\r\n customer: SP.CustomerInfo;\r\n constructor(order: SP.ReturnOrderInfo, customer: SP.CustomerInfo) {\r\n this.order = order;\r\n this.customer = customer;\r\n this.shipmentLineArray = new Array();\r\n this.initialize();\r\n\r\n //Show shipment details button\r\n this.container.querySelectorAll(\".returnsShowShipmentDetails\").forEach((element) => {\r\n element.addEventListener(\"click\", (event) => {\r\n let thisTarget = event.target as HTMLElement;\r\n SP.Sounds.Click.play();\r\n\r\n this.showShipmentDetails(thisTarget);\r\n });\r\n });\r\n\r\n //Choose shipment button\r\n this.container.querySelectorAll(\".returnChooseShipment\").forEach((element) => {\r\n element.addEventListener(\"click\", (event) => {\r\n let thisTarget = event.target as HTMLElement;\r\n SP.Sounds.Click.play();\r\n\r\n App_Return.instance.currentShipmentId = thisTarget.getAttribute(\"data-shipmentid\");\r\n App_Return.instance.OpenStep2(thisTarget.getAttribute(\"data-shipmentid\"), null);\r\n });\r\n });\r\n\r\n //Create shipment button\r\n let createBtn = this.container.querySelector(\".returnsCreateShipmentBtn\");\r\n if (createBtn) {\r\n createBtn.addEventListener(\"click\", async (event) => {\r\n let thisTarget = event.target as HTMLElement;\r\n SP.Sounds.Click.play();\r\n\r\n this.createShipment(thisTarget.getAttribute(\"data-orderid\"));\r\n });\r\n }\r\n }\r\n\r\n\r\n initialize() {\r\n this.container = document.createElement(\"div\");\r\n\r\n let orderHtml = document.createElement(\"div\");\r\n orderHtml.classList.add(\"returns-search-result-container\");\r\n\r\n orderHtml.innerHTML = `\r\n
\r\n
\r\n \r\n

${this.order.orderNo} - ${App_Return.instance.currentCustomer.customerName}

\r\n
\r\n\r\n
\r\n

${SP.Localize(\"sentance_reference_no\")}:

\r\n

${this.order.referenceNo}

\r\n\r\n

${SP.Localize(\"word_name\")}:

\r\n

${this.order.recipient.name}

\r\n
\r\n
\r\n\r\n
\r\n `;\r\n\r\n let newDivShipmentHolder = orderHtml.querySelector(\".returns-search-result-shipment-holder-overall-container\");\r\n if (this.order.shipments.length == 0) {\r\n\r\n this.container.innerHTML = `\r\n
\r\n\r\n
\r\n

Action

\r\n \r\n
\r\n\r\n
\r\n

Reason

\r\n \r\n
\r\n\r\n
\r\n `;\r\n\r\n newDivShipmentHolder.innerHTML = `\r\n
\r\n

${SP.Localize(\"sentance_no_return_shipments_was_found\")}

\r\n\r\n \r\n
\r\n `;\r\n\r\n this.populateAction();\r\n this.populateReason();\r\n }\r\n else {\r\n for (var i = 0; i < this.order.shipments.length; i++) {\r\n let shipment = this.order.shipments[i];\r\n\r\n if (!this.shipmentLineArray.includes(shipment)) {\r\n this.shipmentLineArray.push(shipment);\r\n }\r\n\r\n let shipmentState = SP.Localize(\"word_pending\");\r\n if (shipment.shipmentState == SP.ShipmentState.ReturnReceived) {\r\n shipmentState = SP.Localize(\"word_received\")\r\n }\r\n\r\n newDivShipmentHolder.innerHTML += `\r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n

${SP.Localize(\"sentance_shipment_no\")}: ${shipment.shipmentNo}

\r\n

${SP.Localize(\"word_state\")}: ${shipmentState}

\r\n
\r\n\r\n \r\n
\r\n
\r\n\r\n
\r\n\r\n
\r\n
\r\n `;\r\n }\r\n\r\n }\r\n\r\n this.container.appendChild(orderHtml);\r\n }\r\n\r\n\r\n async populateAction() {\r\n try {\r\n let actions = App_Return.instance.warehouseActions;\r\n if (actions == null) {\r\n return;\r\n }\r\n\r\n let actionSelect = this.container.querySelector(\".return-select-action\");\r\n for (let i = 0; i < actions.length; i++) {\r\n if (actions[i].returnActionType != SP.ReturnActionType.Exchange) {\r\n let isSelected = \"\";\r\n\r\n if (actions[i].id == this.customer.defaultReturnActionId) {\r\n isSelected = \"selected\";\r\n }\r\n\r\n actionSelect.innerHTML += `\r\n \r\n `; \r\n }\r\n }\r\n } catch {\r\n SP.alertX(\"PopulateAction Error!\");\r\n }\r\n }\r\n\r\n\r\n async populateReason() {\r\n try {\r\n var reasons = App_Return.instance.warehouseReasons;\r\n if (reasons == null) {\r\n return;\r\n }\r\n\r\n let reasonSelect = this.container.querySelector(\".return-select-reason\");\r\n for (var i = 0; i < reasons.length; i++) {\r\n let isSelected = \"\";\r\n\r\n if (reasons[i].id == this.customer.defaultReturnReasonId) {\r\n isSelected = \"selected\";\r\n }\r\n \r\n reasonSelect.innerHTML += `\r\n \r\n `;\r\n }\r\n } catch {\r\n SP.alertX(\"PopuilateReason Error!\");\r\n }\r\n }\r\n\r\n\r\n // Create Shipment\r\n async createShipment(orderId: string) {\r\n StartLoading();\r\n\r\n let actionSelect = this.container.querySelector(\".return-select-action\") as HTMLSelectElement;\r\n let selectedActionId = actionSelect.options[actionSelect.selectedIndex].value;\r\n if (selectedActionId == null || selectedActionId == \"\" || selectedActionId == \"00000000-0000-0000-0000-000000000000\") {\r\n SP.alertX(SP.Localize(\"sentance_no_return_action_selected\"));\r\n StopLoading();\r\n return;\r\n }\r\n\r\n\r\n let reasonSelect = this.container.querySelector(\".return-select-reason\") as HTMLSelectElement;\r\n let selectedReasonId = reasonSelect.options[reasonSelect.selectedIndex].value;\r\n if (selectedReasonId == null || selectedReasonId == \"\" || selectedReasonId == \"00000000-0000-0000-0000-000000000000\") {\r\n SP.alertX(SP.Localize(\"sentance_no_return_reason_selected\"));\r\n StopLoading();\r\n return;\r\n }\r\n\r\n try {\r\n let data = await SP.Data.ReturnShipment.createReturnShipment(orderId, selectedActionId, selectedReasonId);\r\n if (data == null) {\r\n SP.Sounds.Vibrate;\r\n SP.Sounds.Error.play();\r\n SP.alertX(\"Error\");\r\n return;\r\n }\r\n\r\n App_Return.instance.closeAllPages();\r\n App_Return.instance.OpenStep2(data.shipmentId, null);\r\n }\r\n finally {\r\n StopLoading();\r\n }\r\n\r\n }\r\n\r\n\r\n // Show shipment details\r\n showShipmentDetails(element: HTMLElement) {\r\n let foundElement = this.shipmentLineArray.filter((thisElement) => {\r\n return thisElement.shipmentId === element.getAttribute(\"data-shipmentid\");\r\n });\r\n\r\n let outputElement = element.closest(\".returns-search-result-shipment-holder\").querySelector(\".returns-search-result-shipment-items-overall-container\");\r\n\r\n if (outputElement.hasChildNodes()) {\r\n outputElement.innerHTML = \"\";\r\n return;\r\n }\r\n\r\n for (var i = 0; i < foundElement[0].lines.length; i++) {\r\n let line = foundElement[0].lines[i];\r\n\r\n let newElement = document.createElement(\"div\");\r\n\r\n newElement.classList.add(\"returns-search-result-shipment-item-holder\");\r\n\r\n newElement.innerHTML = `\r\n
\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n

${line.orderLine.itemInfo.description}

\r\n

Sku: ${line.orderLine.itemInfo.sku}

\r\n
\r\n\r\n

${line.returnInfo.returnedQty} / ${line.qty}

\r\n
\r\n
\r\n `;\r\n\r\n outputElement.appendChild(newElement);\r\n }\r\n }\r\n }\r\n\r\n\r\n class ReturnOrderCustomerInfo {\r\n\r\n container: HTMLElement;\r\n order: SP.OrderInfo\r\n\r\n constructor(order: SP.OrderInfo) {\r\n this.order = order;\r\n\r\n this.initialize();\r\n }\r\n\r\n initialize() {\r\n this.container = document.createElement(\"div\");\r\n this.container.classList.add(\"returns-search-result-container\");\r\n\r\n let name = this.order.recipient.name;\r\n if (name == null || name == \"\") {\r\n name = this.order.recipient.attention;\r\n }\r\n\r\n this.container.innerHTML = `\r\n
\r\n
\r\n \r\n

${this.order.orderNo} - ${App_Return.instance.currentCustomer.customerName}

\r\n
\r\n\r\n
\r\n

${SP.Localize(\"word_name\")}:

\r\n

${name}

\r\n
\r\n
\r\n `;\r\n\r\n }\r\n }\r\n\r\n export class App_Return extends AppBase {\r\n static instance: App_Return;\r\n bound = false;\r\n\r\n button_search_order = document.getElementById(\"return-search-order\");\r\n return_finish_button_placement = document.getElementById(\"return_finish_button_placement\") as HTMLElement;\r\n return_finish_button = document.getElementById(\"return_finish_button\") as HTMLElement;\r\n scanLogo_container = document.getElementById(\"return-scan-logo\") as HTMLElement;\r\n\r\n step1_container = document.getElementById(\"return-step1-container\") as HTMLElement;\r\n step2_container = document.getElementById(\"return-step2-container\") as HTMLElement;\r\n step3_container = document.getElementById(\"return-step3-container\") as HTMLElement;\r\n\r\n return_status = document.getElementById(\"return_status\") as HTMLElement;\r\n\r\n return_picked_count = document.getElementById(\"return_picked_count\") as HTMLElement;\r\n return_pick_count = document.getElementById(\"return_pick_count\") as HTMLElement;\r\n\r\n searchAssistant: OrderShipmentSearchAssistant;\r\n editShipmentInfoAssistant: EditShipmentInfoAssistant;\r\n refundBundleAssistant: RefundBundleAssistant;\r\n\r\n currentStep = 1\r\n\r\n currentOrder: SP.ReturnOrderInfo;\r\n currentShipmentId: string;\r\n currentCustomer: SP.CustomerInfo;\r\n currentRefund: SP.RefundInfo;\r\n currentRefundBundleBalanceLines: SP.RefundBundleBalanceLine[];\r\n\r\n warehouseReasons: SP.WarehouseReasonInfo[];\r\n warehouseActions: SP.WarehouseActionInfo[];\r\n\r\n currentReturnRefundInfo: ReturnRefundInfo;\r\n\r\n lines: { [key: string]: ReturnShipmentInfo } = {};\r\n\r\n constructor() {\r\n super(appId);\r\n App_Return.instance = this;\r\n\r\n this.searchAssistant = new OrderShipmentSearchAssistant();\r\n this.editShipmentInfoAssistant = new EditShipmentInfoAssistant();\r\n this.refundBundleAssistant = new RefundBundleAssistant();\r\n container.appendChild(this.searchAssistant.container);\r\n container.appendChild(this.editShipmentInfoAssistant.container);\r\n container.appendChild(this.refundBundleAssistant.container);\r\n\r\n this.button_search_order.addEventListener(\"click\", () => {\r\n SP.Sounds.Click.play();\r\n\r\n this.searchAssistant.open((order) => {\r\n\r\n if (order.shipments.length == 0 || order.shipments.length > 1) {\r\n this.OpenStep1(order);\r\n }\r\n else {\r\n this.OpenStep2(order.shipments[0].shipmentId, order.shipments[0]);\r\n }\r\n \r\n });\r\n });\r\n\r\n // Finish with placement\r\n this.return_finish_button_placement.addEventListener(\"click\", async () => {\r\n\r\n if (!this.checkIdLinesIsValid()) {\r\n if (await SP.confirmX(SP.Localize(\"description_no_quantity_cancel_return_shipment\"))) {\r\n try {\r\n StartLoading();\r\n\r\n let result = await SP.Data.ReturnShipment.cancelReturnShipment(this.currentShipmentId);\r\n\r\n if (result != 200) {\r\n SP.alertX(result);\r\n }\r\n\r\n this.reset(true);\r\n SP.setManyHash({ \"orderId\": null, \"shipmentId\": null, \"refundId\": null });\r\n\r\n } finally {\r\n StopLoading();\r\n }\r\n }\r\n\r\n return;\r\n }\r\n\r\n placementPickerAssistant.open(this.currentOrder.customerId, SP.Localize(\"sentance_scan_select_stock_placement\"), async (placement) => {\r\n let [status, msg] = await this.finishReturn(placement.id)\r\n if (!status) {\r\n SP.alertX(msg.toString());\r\n }\r\n });\r\n\r\n return;\r\n });\r\n \r\n // Finish whithout placement\r\n this.return_finish_button.addEventListener(\"click\", async () => {\r\n\r\n if (!this.checkIdLinesIsValid()) {\r\n if (await SP.confirmX(SP.Localize(\"description_no_quantity_cancel_return_shipment\"))) {\r\n try {\r\n StartLoading();\r\n\r\n let result = await SP.Data.ReturnShipment.cancelReturnShipment(this.currentShipmentId);\r\n\r\n if (result != 200) {\r\n SP.alertX(result);\r\n }\r\n\r\n this.reset(true);\r\n SP.setManyHash({ \"orderId\": null, \"shipmentId\": null, \"refundId\": null });\r\n\r\n } finally {\r\n StopLoading();\r\n }\r\n }\r\n\r\n return;\r\n }\r\n\r\n if (await SP.confirmX(SP.Localize(\"sentance_are_you_sure_you_want_to_finish_without_product_stock_placement\"))) {\r\n let [status, msg] = await this.finishReturn(0);\r\n if (!status) {\r\n SP.alertX(msg.toString());\r\n }\r\n }\r\n\r\n return;\r\n });\r\n }\r\n\r\n\r\n checkIdLinesIsValid() {\r\n let hasQuantity = false;\r\n for (let key in this.lines) {\r\n let l = this.lines[key];\r\n\r\n if (l.updatedShipmentLine.quantity > 0) {\r\n hasQuantity = true;\r\n }\r\n }\r\n\r\n if (!hasQuantity) {\r\n SP.Sounds.Error.play();\r\n SP.Sounds.Vibrate;\r\n\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n async scanTote(toteId: string) {\r\n var info = await SP.Data.Tote.getToteInfo(toteId, false);\r\n if (info.totePlacementId && info.totePlacementId > 0) {\r\n let [status, msg] = await this.finishReturn(info.totePlacementId);\r\n if (!status) {\r\n SP.alertX(msg + \" try again or contact support\");\r\n }\r\n }\r\n }\r\n\r\n async finishReturn(placementId: number) {\r\n let result = true;\r\n let message = \"\";\r\n let hasFinishedShipment = false;\r\n\r\n if (this.currentStep != 2) {\r\n result = false;\r\n message = \"Current step is not step 2\";\r\n return [result, message];\r\n }\r\n\r\n var returnLines: any[] = [];\r\n for (let key in this.lines) {\r\n let l = this.lines[key];\r\n returnLines.push(l.updatedShipmentLine);\r\n }\r\n\r\n var postdata: any = {\r\n orderId: this.currentOrder.orderId,\r\n shipmentId: this.currentShipmentId,\r\n returnLines: returnLines,\r\n placementId: placementId,\r\n };\r\n\r\n StartLoading();\r\n\r\n try {\r\n\r\n // Finish return shipment and check status.\r\n let finishReturnShipmentResult = await SP.Data.ReturnShipment.finishReturnShipment(postdata);\r\n if (finishReturnShipmentResult.status != 200) {\r\n SP.Sounds.Error.play();\r\n SP.Sounds.Vibrate;\r\n result = false;\r\n message = finishReturnShipmentResult.msg;\r\n return [result, message];\r\n }\r\n\r\n hasFinishedShipment = true;\r\n\r\n // Create and check if refund status.\r\n let createRefundResult = await SP.Data.Refund.createRefund(this.currentShipmentId);\r\n console.log(createRefundResult.status);\r\n if (createRefundResult.status == 5314) {\r\n SP.Sounds.Success.play();\r\n this.reset(true);\r\n return [null, null];\r\n }\r\n\r\n if (createRefundResult.status != 200) {\r\n SP.Sounds.Error.play();\r\n SP.Sounds.Vibrate;\r\n result = false;\r\n message = createRefundResult.msg;\r\n return [result, message];\r\n }\r\n\r\n SP.Sounds.Success.play();\r\n\r\n if (createRefundResult.data &&\r\n App_Settings.userRights.refund &&\r\n (this.currentCustomer.defaultReturnMethod === SP.ReturnMethod.ReceiveAndRefundAndConfirm || this.currentCustomer.defaultReturnMethod === SP.ReturnMethod.ReceiveAndRefundAndConfirmExclGiftcard)\r\n ) {\r\n this.OpenStep3(createRefundResult.data);\r\n return [result, \"\"];\r\n }\r\n\r\n this.reset(true);\r\n }\r\n catch (error) {\r\n if (hasFinishedShipment) {\r\n SP.Sounds.Success.play();\r\n message = \"Refund failed, create manually\";\r\n this.reset(true);\r\n return [true, message];\r\n }\r\n\r\n\r\n SP.Sounds.Error.play();\r\n SP.Sounds.Vibrate;\r\n result = false;\r\n message = \"InternalServerError\";\r\n return [result, message];\r\n }\r\n finally {\r\n StopLoading();\r\n return [result, message];\r\n }\r\n }\r\n\r\n async scan(barcode: string) {\r\n if (this.currentStep == 1) {\r\n this.currentOrder = null;\r\n\r\n this.searchReturnShipments(barcode);\r\n }\r\n else if (this.currentStep == 2) {\r\n let itemFound = false;\r\n for (let key in this.lines) {\r\n let thisLine = this.lines[key];\r\n let qty = GetBarcodeQty(thisLine.data.orderLine.itemInfo.allBarcodes, barcode);\r\n if (qty !== null) {\r\n itemFound = true;\r\n thisLine.addQuantity(qty);\r\n return;\r\n }\r\n }\r\n\r\n if (!itemFound) {\r\n for (let i = 0; i < this.currentOrder.orderLines.length; i++) {\r\n let thisOrderLine = this.currentOrder.orderLines[i];\r\n\r\n let barcodes = thisOrderLine.itemInfo.barcodes;\r\n for (let j = 0; j < barcodes.length; j++) {\r\n if (barcodes[j] === barcode) {\r\n\r\n let shipmentLine: SP.ShipmentLineInfo = {\r\n id: \"00000000-0000-0000-0000-000000000000\",\r\n orderLine: thisOrderLine,\r\n qty: 0,\r\n returnInfo: {\r\n comment: \"\",\r\n note: \"\",\r\n returnedQty: 1,\r\n overrideAction: null,\r\n warehouseReturnActionId: \"00000000-0000-0000-0000-000000000000\",\r\n warehouseReturnReasonId: \"00000000-0000-0000-0000-000000000000\",\r\n },\r\n data: null,\r\n };\r\n\r\n try {\r\n let actions = await SP.Data.WarehouseReasonsAndActions.getWarehouseActions();\r\n if (actions == null) {\r\n return;\r\n }\r\n \r\n for (let i = 0; i < actions.length; i++) {\r\n let action = actions[i];\r\n \r\n if (action.defaultAction) {\r\n shipmentLine.returnInfo.warehouseReturnActionId = action.id;\r\n break;\r\n }\r\n }\r\n\r\n let reasons = await SP.Data.WarehouseReasonsAndActions.getWarehouseReasons();\r\n if (reasons == null) {\r\n return;\r\n }\r\n\r\n for (let i = 0; i < reasons.length; i++) {\r\n let reason = reasons[i];\r\n if (reason.defaultReason) {\r\n shipmentLine.returnInfo.warehouseReturnReasonId = reason.id;\r\n break;\r\n }\r\n }\r\n\r\n } catch {\r\n\r\n }\r\n\r\n this.AddShipmentLine(shipmentLine, 1);\r\n return;\r\n }\r\n }\r\n }\r\n }\r\n\r\n // Not found\r\n SP.Sounds.Error.play();\r\n SP.Sounds.Vibrate;\r\n SP.alertX(\"Item not found\");\r\n }\r\n }\r\n\r\n\r\n async searchReturnShipments(barcode: string)\r\n {\r\n this.closeAllPages();\r\n this.hideScanLogo();\r\n\r\n StartLoading();\r\n try {\r\n\r\n let orderInfo = await SP.Data.ReturnShipment.getReturnShipmentInfo(barcode);\r\n if (orderInfo == null) {\r\n SP.Sounds.Vibrate;\r\n SP.Sounds.Error.play();\r\n\r\n this.reset(false);\r\n return;\r\n }\r\n\r\n this.currentOrder = orderInfo;\r\n await this.setCurrentCustomer(orderInfo.customerId);\r\n\r\n if (orderInfo.shipments.length == 1) {\r\n this.currentShipmentId = orderInfo.shipments[0].shipmentId;\r\n this.OpenStep2(orderInfo.shipments[0].shipmentId, orderInfo.shipments[0]);\r\n }\r\n else {\r\n this.OpenStep1(orderInfo);\r\n }\r\n\r\n return;\r\n }\r\n finally {\r\n StopLoading();\r\n }\r\n\r\n }\r\n\r\n\r\n async onOpen() {\r\n this.reset(false);\r\n await this.getWarehouseReasonsAndActions();\r\n let shipmentId = SP.getHash(\"shipmentId\");\r\n let orderId = SP.getHash(\"orderId\");\r\n let refundId = SP.getHash(\"refundId\");\r\n\r\n if (refundId) {\r\n await this.OpenStep3(refundId);\r\n }\r\n else if (shipmentId) {\r\n await this.OpenStep2(shipmentId, null);\r\n }\r\n else if (orderId) {\r\n console.log(\"Step 1\")\r\n let data = await SP.Data.ReturnShipment.getReturnShipmentInfoByOrderId(parseInt(orderId));\r\n await this.OpenStep1(data);\r\n }\r\n else {\r\n await this.closeAllPages();\r\n }\r\n\r\n this.BindBarcodeListeners();\r\n }\r\n\r\n BindBarcodeListeners() {\r\n if (!this.bound) {\r\n barcodeListener.on(null, this.scan, this);\r\n barcodeListener.on(\"sp\", this.finishReturn, this);\r\n barcodeListener.on(\"t\", this.scanTote, this);\r\n this.bound = true;\r\n }\r\n }\r\n\r\n UnbindBarcodeListners() {\r\n if (this.bound) {\r\n barcodeListener.off(null, this.scan);\r\n barcodeListener.off(\"sp\", this.finishReturn);\r\n barcodeListener.off(\"t\", this.scanTote);\r\n this.bound = false;\r\n }\r\n }\r\n\r\n async onClose() {\r\n this.UnbindBarcodeListners();\r\n this.reset(false);\r\n }\r\n\r\n\r\n async closeAllPages() {\r\n this.step1_container.style.display = \"none\";\r\n this.step1_container.innerHTML = \"\";\r\n\r\n this.step2_container.style.display = \"none\";\r\n this.step2_container.innerHTML = \"\";\r\n\r\n this.step3_container.style.display = \"none\";\r\n this.step3_container.innerHTML = \"\";\r\n\r\n this.return_status.style.display = \"none\";\r\n }\r\n\r\n\r\n async OpenStep1(order: SP.ReturnOrderInfo) {\r\n ignoreHashChange = true;\r\n SP.setManyHash({ \"orderId\": order.orderId, \"shipmentId\": null });\r\n\r\n await this.closeAllPages();\r\n this.hideScanLogo();\r\n this.step1_container.innerHTML = \"\";\r\n this.step1_container.style.display = \"block\";\r\n this.currentStep = 1;\r\n\r\n try {\r\n // Set current customer\r\n await this.setCurrentCustomer(order.customerId);\r\n\r\n let orderInfo = new ReturnOrderInfo(order, this.currentCustomer);\r\n this.step1_container.appendChild(orderInfo.container);\r\n } catch {\r\n SP.alertX(\"Error! No customer found! try refresh\");\r\n return;\r\n }\r\n }\r\n\r\n\r\n async OpenStep2(shipmentId: string, shipment: SP.ShipmentInfo) {\r\n ignoreHashChange = true;\r\n SP.setManyHash({ \"orderId\": null, \"shipmentId\": shipmentId });\r\n\r\n await this.closeAllPages();\r\n this.hideScanLogo();\r\n this.step2_container.innerHTML = \"\";\r\n this.step2_container.style.display = \"block\";\r\n this.return_status.style.display = \"block\";\r\n this.currentStep = 2;\r\n\r\n StartLoading();\r\n\r\n try {\r\n console.log(\"OpenStep2\");\r\n console.log(\"shipment: \" + shipment);\r\n\r\n if (shipment && shipment.lines.length > 0) {\r\n console.log(\"Shipment not null\");\r\n\r\n if (!this.currentOrder) {\r\n await this.setCurrentOrderInfo(shipment.order.orderId);\r\n }\r\n\r\n await this.loadDataStep2(shipment);\r\n return;\r\n }\r\n\r\n console.log(\"Shipment is null\");\r\n\r\n shipment = await SP.Data.ReturnShipment.getShipmentInfo(shipmentId);\r\n if (shipment == null) {\r\n SP.Sounds.Vibrate;\r\n SP.Sounds.Error.play();\r\n\r\n SP.alertX(\"Shipment not found!\");\r\n this.reset(true);\r\n return;\r\n }\r\n\r\n if (!this.currentOrder) {\r\n await this.setCurrentOrderInfo(shipment.order.orderId);\r\n }\r\n\r\n await this.loadDataStep2(shipment);\r\n\r\n } finally {\r\n StopLoading();\r\n }\r\n }\r\n\r\n\r\n async OpenStep3(refundId: string) {\r\n ignoreHashChange = true;\r\n SP.setManyHash({ \"orderId\": null, \"shipmentId\": null, \"refundId\": refundId });\r\n\r\n this.closeAllPages();\r\n this.hideScanLogo();\r\n this.step3_container.innerHTML = \"\";\r\n this.step3_container.style.display = \"block\";\r\n this.currentStep = 3;\r\n\r\n StartLoading();\r\n\r\n try {\r\n var refund = await SP.Data.Refund.getRefundtInfo(refundId);\r\n if (!refund) {\r\n SP.Sounds.Vibrate;\r\n SP.Sounds.Error.play();\r\n\r\n this.reset(true);\r\n SP.setManyHash({ \"orderId\": null, \"shipmentId\": null, \"refundId\": null });\r\n return;\r\n }\r\n\r\n // Set current customer\r\n await this.setCurrentCustomer(refund.order.customerId);\r\n\r\n if (this.currentCustomer.defaultReturnMethod === SP.ReturnMethod.ReceiveAndRefundAndConfirmExclGiftcard && refund.refundType == SP.RefundType.Gift_card) {\r\n this.reset(true);\r\n SP.setManyHash({ \"orderId\": null, \"shipmentId\": null, \"refundId\": null });\r\n return;\r\n }\r\n\r\n if (refund.confirmed) {\r\n this.reset(true);\r\n SP.setManyHash({ \"orderId\": null, \"shipmentId\": null, \"refundId\": null });\r\n return;\r\n }\r\n\r\n this.currentRefund = refund;\r\n\r\n let hasBundle = false;\r\n for (var i = 0; i < refund.lines.length; i++) {\r\n let line = refund.lines[i];\r\n if (line.orderLine.bundleParent != null) {\r\n hasBundle = true;\r\n break;\r\n }\r\n }\r\n\r\n\r\n if (hasBundle) {\r\n var refundBundleBalanceLines = await SP.Data.Refund.getRefundBundleBalance(refundId);\r\n if (!refund) {\r\n SP.Sounds.Vibrate;\r\n SP.Sounds.Error.play();\r\n\r\n this.reset(true);\r\n return;\r\n }\r\n\r\n this.currentRefundBundleBalanceLines = refundBundleBalanceLines;\r\n }\r\n\r\n // Add Customer Info\r\n var customerInfo = new ReturnOrderCustomerInfo(refund.order);\r\n this.step3_container.appendChild(customerInfo.container);\r\n\r\n var refundInfo = new ReturnRefundInfo(refund, hasBundle);\r\n this.step3_container.appendChild(refundInfo.container);\r\n\r\n this.currentReturnRefundInfo = refundInfo;\r\n\r\n if (hasBundle) {\r\n this.openBundleAssistant();\r\n }\r\n\r\n } finally {\r\n StopLoading();\r\n }\r\n }\r\n\r\n\r\n openBundleAssistant() {\r\n this.refundBundleAssistant.open((updatedRefundLines) => {\r\n let totalPrice = 0;\r\n\r\n this.currentReturnRefundInfo.updatedRefund.lines = updatedRefundLines;\r\n\r\n this.currentReturnRefundInfo.container.querySelectorAll(\".returnRefund-item-container\").forEach((element) => {\r\n var findIndex = updatedRefundLines.findIndex((x) => x.refundLineId == element.getAttribute(\"data-refundlineid\"));\r\n if (findIndex >= 0) {\r\n element.querySelector(\".refundLinePrice\").innerHTML = updatedRefundLines[findIndex].price.toString();\r\n\r\n totalPrice += parseFloat(updatedRefundLines[findIndex].price.toString());\r\n }\r\n else {\r\n totalPrice += parseFloat(element.querySelector(\".refundLinePrice\").innerHTML);\r\n }\r\n });\r\n\r\n this.currentReturnRefundInfo.container.querySelector(\".returnRefund-total\").innerHTML = totalPrice.toString();\r\n }, this.currentRefund, this.currentReturnRefundInfo.updatedRefund.lines, this.currentRefundBundleBalanceLines);\r\n }\r\n\r\n\r\n async loadDataStep2(shipment: SP.ShipmentInfo) {\r\n\r\n if (shipment.shipmentState != SP.ShipmentState.ReturnPending) {\r\n this.reset(true);\r\n SP.setManyHash({ \"orderId\": null, \"shipmentId\": null, \"refundId\": null });\r\n }\r\n\r\n // Add Customer Info\r\n var customerInfo = new ReturnOrderCustomerInfo(shipment.order);\r\n this.step2_container.appendChild(customerInfo.container);\r\n\r\n // Add line info\r\n\r\n this.lines = {};\r\n this.currentShipmentId = shipment.shipmentId;\r\n console.log(\"loadDataStep2-ShipmentId: \" + this.currentShipmentId);\r\n console.log(shipment);\r\n\r\n\r\n\r\n let expectedQty = 0;\r\n for (var i = 0; i < shipment.lines.length; i++) {\r\n let line = shipment.lines[i];\r\n this.AddShipmentLine(line, 0);\r\n expectedQty += line.qty;\r\n }\r\n\r\n this.return_pick_count.innerHTML = expectedQty.toString();\r\n }\r\n\r\n\r\n async AddShipmentLine(line: SP.ShipmentLineInfo, qty: number) {\r\n var lineInfo = new ReturnShipmentInfo(this.currentShipmentId, line, qty);\r\n this.lines[line.orderLine.id] = lineInfo;\r\n\r\n this.step2_container.appendChild(lineInfo.container);\r\n\r\n this.refreshReturnCount();\r\n }\r\n\r\n\r\n refreshReturnCount() {\r\n let quantity = 0;\r\n for (let key in this.lines) {\r\n let l = this.lines[key];\r\n quantity += l.updatedShipmentLine.quantity;\r\n }\r\n\r\n this.return_picked_count.innerHTML = quantity.toString();\r\n }\r\n\r\n async getWarehouseReasonsAndActions() {\r\n if (!this.warehouseReasons) this.warehouseReasons = await SP.Data.WarehouseReasonsAndActions.getWarehouseReasons(false);\r\n if (!this.warehouseActions) this.warehouseActions = await SP.Data.WarehouseReasonsAndActions.getWarehouseActions(false);\r\n }\r\n\r\n async setCurrentOrderInfo(orderId: number) {\r\n try {\r\n var orderInfo = await SP.Data.ReturnShipment.getReturnShipmentInfoByOrderId(orderId);\r\n if (!orderInfo) {\r\n this.reset(true);\r\n return;\r\n }\r\n\r\n this.currentOrder = orderInfo;\r\n\r\n // Set current customer\r\n await this.setCurrentCustomer(orderInfo.customerId);\r\n } catch {\r\n SP.alertX(\"Error! No customer found! try refresh\");\r\n }\r\n }\r\n\r\n\r\n hideScanLogo() {\r\n this.scanLogo_container.style.display = \"none\";\r\n }\r\n\r\n // Set current customer\r\n async setCurrentCustomer(customerId: string) {\r\n try {\r\n var customer = await SP.Data.Customer.getCustomerInfo(customerId, false);\r\n if (!customer) {\r\n this.reset(true);\r\n return;\r\n }\r\n\r\n this.currentCustomer = customer;\r\n } catch {\r\n SP.alertX(\"Error! No customer found! try refresh\");\r\n }\r\n }\r\n\r\n reset(fullReset: boolean) {\r\n if (fullReset) {\r\n SP.setHash(\"orderId\", null);\r\n SP.setHash(\"shipmentId\", null);\r\n SP.setHash(\"refundId\", null);\r\n }\r\n\r\n this.closeAllPages();\r\n this.currentOrder = null;\r\n this.currentShipmentId = null;\r\n this.currentCustomer = null;\r\n this.currentRefund = null;\r\n this.lines = null;\r\n this.currentReturnRefundInfo = null;\r\n this.currentRefundBundleBalanceLines = [];\r\n this.currentStep = 1;\r\n\r\n this.return_picked_count.innerText = \"0\";\r\n this.return_pick_count.innerText = \"0\";\r\n\r\n this.scanLogo_container.style.display = \"block\";\r\n\r\n }\r\n }\r\n\r\n RegisterApp(appId, App_Return);\r\n}","/// \r\n\r\nnamespace TerminalApp {\r\n\r\n export class App_Scan_to_Pallet extends AppBase {\r\n\r\n stp_start = document.getElementById(\"stp_start\");\r\n stp_info = document.getElementById(\"stp_info\");\r\n stp_not_found = document.getElementById(\"stp_not_found\");\r\n stp_wrong_zone = document.getElementById(\"stp_wrong_zone\");\r\n stp_package_info = document.getElementById(\"stp_package_info\");\r\n stp_collections = document.getElementById(\"stp_collections\");\r\n stp_collections_closed = document.getElementById(\"stp_collections_closed\");\r\n stp_open_button = document.getElementById(\"stp_open_button\");\r\n\r\n text_location: HTMLElement;\r\n text_description: HTMLElement;\r\n current: SP.PackageSortingInfo;\r\n buttons: { [id: number]: SP.SwipeMenu } = {};\r\n\r\n constructor() {\r\n super(\"app_scan_to_pallet\");\r\n\r\n this.stp_open_button.addEventListener(\"click\", () => { this.openPallet() });\r\n }\r\n\r\n bound = false;\r\n\r\n async openPallet() {\r\n if (this.current != null) {\r\n var result = await SP.post(\"/api/v1/packageCollection/create\", this.current.sortingZone.id);\r\n if (result.status == 200) {\r\n let btn = this.addPackageCollection({\r\n sortingZoneName: this.current.sortingZone.name,\r\n id: result.packageCollectionId,\r\n closed: false,\r\n packageCount: 0\r\n } as any);\r\n btn.click();\r\n\r\n }\r\n else {\r\n await SP.alertX(result.msg);\r\n }\r\n\r\n return;\r\n }\r\n }\r\n\r\n addPackageCollection(pc: SP.PackageCollectionInfo) {\r\n let parent = pc.closed ? this.stp_collections_closed : this.stp_collections;\r\n\r\n\r\n let btn = parent.appendChild(this.createListButton(\"package_collection_item\", pc.id + \" - \" + pc.sortingZoneName, () => { }));\r\n var label = btn.children[0].appendChild(document.createElement(\"span\"));\r\n\r\n\r\n\r\n label.classList.add(\"label\");\r\n label.innerHTML = pc.packageCount.toString();\r\n\r\n\r\n let printAction = async () => {\r\n let result = await SP.get(\"/api/v1/packageCollection/print/\" + pc.id + \"?printer=\" + App_Settings.terminalSettings.label_printer);\r\n if (result.status == 200) pc.printed = true;\r\n else await SP.alertX(result.msg);\r\n sm.return(false);\r\n };\r\n\r\n let toggleAction = async () => {\r\n let endpoint = pc.closed ? \"/api/v1/packageCollection/reopen/\" : \"/api/v1/packageCollection/finish/\";\r\n\r\n\r\n let result = await SP.get(endpoint + pc.id);\r\n if (result.status == 200) {\r\n SP.Sounds.Success.play();\r\n pc.closed = !pc.closed;\r\n btn.remove();\r\n this.addPackageCollection(pc);\r\n }\r\n else {\r\n this.errorZone();\r\n }\r\n sm.return(false);\r\n };\r\n\r\n let spawn = true;\r\n\r\n var sm = new SP.SwipeMenu(btn,\r\n async () => {\r\n let success = await this.setCollection(pc.id);\r\n if (success) {\r\n label.innerHTML = (parseInt(label.innerHTML) + 1).toString();\r\n var current = document.querySelector(\".package_collection_item.selected\");\r\n \r\n if (current) {\r\n current.classList.remove(\"selected\");\r\n let currentLabel = current.querySelector(\".label\");\r\n currentLabel.innerHTML = (parseInt(currentLabel.innerHTML) - 1).toString();\r\n }\r\n btn.children[0].classList.add(\"selected\");\r\n if (!spawn) SP.Sounds.Success.play();\r\n spawn = false;\r\n }\r\n },\r\n [\r\n {\r\n icon: \"\",\r\n text: \"Print\",\r\n color: \"#618eff\",\r\n confirm: false,\r\n action: printAction\r\n },\r\n {\r\n icon: \"\",\r\n text: \"Close/Open\",\r\n color: \"#76bf44\",\r\n confirm: false,\r\n action: toggleAction\r\n }\r\n ]\r\n , \"package_collection_list\"\r\n )\r\n\r\n if (pc.id == this.current.collectionId) sm.click();\r\n else spawn = false;\r\n\r\n if (!pc.printed && App_Settings.wmsSettings.autoprint_pallet_label) {\r\n printAction();\r\n }\r\n\r\n this.buttons[pc.id] = sm;\r\n return sm;\r\n }\r\n\r\n async onOpen() {\r\n\r\n\r\n\r\n //bind events and groups\r\n if (!this.bound) {\r\n this.bound = true;\r\n barcodeListener.on(null, this.scan, this);\r\n barcodeListener.on(\"pc\", this.scan_pallet, this);\r\n barcodeListener.on(\"sz\", this.scan_zone, this);\r\n }\r\n\r\n //clear forms\r\n this.reset();\r\n }\r\n\r\n async onClose() {\r\n //unbind events and groups\r\n if (this.bound) {\r\n this.bound = false;\r\n barcodeListener.off(null, this.scan);\r\n barcodeListener.off(\"pc\", this.scan_pallet);\r\n barcodeListener.off(\"sz\", this.scan_zone);\r\n }\r\n }\r\n\r\n async scan_pallet(scan_data: string) {\r\n this.resetError();\r\n let n = parseInt(scan_data);\r\n var btn = this.buttons[n];\r\n if (btn) btn.click();\r\n else {\r\n this.errorZone();\r\n }\r\n }\r\n\r\n async scan_zone(id: string) {\r\n var result: any = await SP.get(`/api/v1/packagecollection/find?zoneId=${id}`);\r\n await this.scan_pallet(result.id);\r\n }\r\n\r\n\r\n\r\n\r\n async scan(scan_data: string) {\r\n this.reset();\r\n await SP.sleep(3);\r\n var data = await SP.Data.Package.getPackageSortingInfo(scan_data);\r\n console.log(\"data\", data);\r\n if (data.match) {\r\n this.populate(data);\r\n }\r\n else {\r\n this.error();\r\n }\r\n\r\n }\r\n\r\n\r\n createListButton(className: string, text: string, action: () => void) {\r\n let wrap = document.createElement(\"div\");\r\n wrap.style.position = \"relative\";\r\n\r\n let btn = wrap.appendChild(document.createElement(\"div\"));\r\n btn.classList.add(\"btn\", \"noselect\", \"list_button\", className);\r\n\r\n let icon = btn.appendChild(document.createElement(\"i\"));\r\n icon.classList.add(\"fas\", \"fa-check\", \"icon\");\r\n\r\n let txt = btn.appendChild(document.createElement(\"span\"));\r\n txt.classList.add(\"text\", \"big\", \"left\");\r\n txt.innerHTML = text;\r\n\r\n btn.addEventListener(\"click\", action);\r\n return wrap;\r\n }\r\n\r\n renderPackageInfo() {\r\n this.stp_package_info.innerHTML =\r\n \"\" +\r\n \"\" +\r\n \"
Package: \" + this.current.package.trackingNumber + \"
Sorting: \" + this.current.sortingZone.name + \"
Pallet: \" + this.current.collectionId + \"
\";\r\n }\r\n\r\n\r\n\r\n async populate(data: SP.PackageSortingInfo) {\r\n this.current = data;\r\n this.renderPackageInfo();\r\n SP.Sounds.Click.play();\r\n\r\n\r\n\r\n console.log(\"Setting data\", data);\r\n this.stp_collections.innerHTML = \"\";\r\n this.stp_collections_closed.innerHTML = \"\";\r\n //open collections\r\n for (let i = 0; i < data.collections.length; i++) {\r\n let pc = data.collections[i];\r\n let btn = this.addPackageCollection(pc);\r\n \r\n }\r\n\r\n //clsoed collections\r\n for (let i = 0; i < data.collectionsClosed.length; i++) {\r\n let pc = data.collectionsClosed[i];\r\n let btn = this.addPackageCollection(pc);\r\n }\r\n\r\n //show content\r\n await SP.sleep(3);\r\n this.stp_info.style.display = \"block\";\r\n this.stp_start.style.display = \"none\";\r\n this.stp_collections.style.display = \"block\";\r\n this.stp_collections_closed.style.display = \"block\";\r\n\r\n\r\n }\r\n\r\n async setCollection(id: number) {\r\n if (id == this.current.collectionId) return true;\r\n console.log(\"setting pc to\", id);\r\n\r\n if (id != this.current.collectionId) {\r\n //udpate on server\r\n let result = await SP.post(\"/api/v1/packageCollection/addPackage\", {\r\n packageCollectionId: id,\r\n packageId: this.current.package.id\r\n });\r\n\r\n console.log(\"result\", result);\r\n\r\n\r\n if (result.status == 200) {\r\n this.current.collectionId = id;\r\n this.renderPackageInfo();\r\n //SP.Sounds.Success.play();\r\n\r\n return true;\r\n }\r\n else {\r\n await SP.alertX(result.msg);\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n error() {\r\n \r\n this.stp_not_found.style.display = \"block\";\r\n SP.Sounds.Error.play();\r\n }\r\n\r\n\r\n errorZone() {\r\n\r\n this.stp_wrong_zone.style.display = \"block\";\r\n SP.Sounds.Error.play();\r\n }\r\n\r\n resetError() {\r\n this.stp_not_found.style.display = \"none\";\r\n this.stp_wrong_zone.style.display = \"none\";\r\n }\r\n\r\n reset() {\r\n //empty previous collectionws\r\n\r\n this.stp_collections.style.display = \"none\";\r\n this.stp_collections_closed.style.display = \"none\";\r\n this.stp_start.style.display = \"block\";\r\n this.stp_info.style.display = \"none\";\r\n this.resetError();\r\n \r\n }\r\n\r\n }\r\n\r\n\r\n\r\n RegisterApp(\"app_scan_to_pallet\", App_Scan_to_Pallet);\r\n}","/// \r\n\r\nnamespace TerminalApp {\r\n export class App_Slave extends AppBase {\r\n master: string;\r\n bound = false;\r\n output = document.getElementById(\"as_output\");\r\n history: HTMLElement[] = [];\r\n constructor() {\r\n super(\"app_slave\");\r\n }\r\n\r\n async scan(barcode: string) {\r\n\r\n //bypass\r\n if (barcode.startsWith(\"ps_\") || barcode.startsWith(\"a_\") || barcode.startsWith(\"te_\")) {\r\n await this.close();\r\n await SP.setAllHash({ \"app\": \"homescreen\" });\r\n await SP.sleep(100);\r\n await barcodeListener.performScan(barcode);\r\n return;\r\n }\r\n\r\n console.log(\"Result PRE\");\r\n\r\n var success = await hub.connection.invoke(\"ScanBarcode\", parseInt(this.master), barcode);\r\n console.log(\"Result\", success);\r\n var out = document.createElement(\"div\");\r\n if (!success) out.classList.add(\"failed\");\r\n out.innerText = barcode;\r\n\r\n this.history.push(out);\r\n this.output.prepend(out);\r\n\r\n if (this.history.length >= 10) {\r\n this.history[0].remove();\r\n this.history.splice(0, 1);\r\n \r\n }\r\n }\r\n\r\n setMaster(deviceId: string) {\r\n this.master = deviceId;\r\n document.getElementById(\"app_slave_master\").innerHTML = deviceId;\r\n }\r\n\r\n async onOpen() {\r\n if (!this.bound) {\r\n barcodeListener.slaveMode = true;\r\n barcodeListener.on(null, this.scan, this);\r\n this.bound = true;\r\n }\r\n\r\n var parent = SP.getHash(\"parent\");\r\n this.setMaster(parent);\r\n }\r\n\r\n async onClose() {\r\n if (this.bound) {\r\n barcodeListener.slaveMode = false;\r\n barcodeListener.off(null, this.scan);\r\n this.bound = false;\r\n }\r\n }\r\n }\r\n\r\n\r\n\r\n RegisterApp(\"app_slave\", App_Slave);\r\n}","/// \r\n\r\n\r\nnamespace TerminalApp {\r\n class StatusResponse {\r\n bar: HTMLElement;\r\n container: HTMLElement;\r\n user: string;\r\n time: number;\r\n width: number;\r\n }\r\n\r\n export class App_Status extends AppBase {\r\n master: string;\r\n bound = false;\r\n output = document.getElementById(\"ast_output\");\r\n max_response_time = document.getElementById(\"ast_max_response_time\");\r\n responses: StatusResponse[] = [];\r\n sum: number = 0;\r\n count: number = 0;\r\n avrage: number = 0;\r\n max: number = 0;\r\n constructor() {\r\n super(\"app_status\");\r\n }\r\n\r\n\r\n async onOpen() {\r\n if (!this.bound) {\r\n this.sum = this.count = this.avrage = this.max = 0;\r\n this.responses = [];\r\n this.bound = true;\r\n this.ping();\r\n }\r\n }\r\n\r\n async onClose() {\r\n if (this.bound) {\r\n this.bound = false;\r\n }\r\n }\r\n\r\n\r\n async ping() {\r\n var now = performance.now();\r\n var response = new StatusResponse();\r\n response.user = await hub.connection.invoke(\"pingStatus\");\r\n response.time = performance.now() - now;\r\n this.count++;\r\n this.sum += response.time;\r\n this.avrage = this.sum / this.count;\r\n\r\n if (response.time > this.max) {\r\n this.max = response.time;\r\n this.max_response_time.innerHTML = this.max.toFixed(2) + \" ms\";\r\n }\r\n\r\n\r\n var outer = response.container = document.createElement(\"div\");\r\n outer.classList.add(\"outer\");\r\n\r\n var bar = response.bar = document.createElement(\"div\");\r\n bar.classList.add(\"bar\");\r\n outer.appendChild(bar);\r\n\r\n var text = document.createElement(\"div\");\r\n text.classList.add(\"text\");\r\n text.innerHTML = response.time.toFixed(2) + \"ms (\" + response.user + \")\";\r\n outer.appendChild(text);\r\n\r\n this.output.prepend(outer);\r\n this.responses.push(response);\r\n\r\n if (this.responses.length > 40) {\r\n var first = this.responses.shift();\r\n first.container.remove();\r\n }\r\n\r\n for (let i = 0; i < this.responses.length; i++) {\r\n let cr = this.responses[i];\r\n cr.bar.style.width = (cr.time / this.max * 100).toFixed(1) + \"%\";\r\n }\r\n\r\n await SP.sleep(100);\r\n\r\n if (this.bound)\r\n this.ping();\r\n }\r\n }\r\n\r\n\r\n\r\n RegisterApp(\"app_status\", App_Status);\r\n}","/// \r\n\r\nnamespace TerminalApp {\r\n export class Homescreen extends AppBase {\r\n static instance: Homescreen;\r\n container = document.getElementById(\"homescreen\");\r\n apps = container.querySelector(\".app_icons\");\r\n clear = document.createElement(\"div\");\r\n icon_counts: { [appid: string]: HTMLElement } = {}\r\n icon_counts2: { [appid: string]: HTMLElement } = {}\r\n constructor() {\r\n super(\"homescreen\");\r\n Homescreen.instance = this;\r\n this.clear.classList.add(\"clear\");\r\n }\r\n\r\n addApp(appId: string, image: string, name: string) {\r\n var gridItem = this.apps.appendChild(document.createElement(\"div\"));\r\n this.container.appendChild(this.clear);\r\n gridItem.classList.add(\"grid_item\");\r\n\r\n\r\n var button = gridItem.appendChild(document.createElement(\"div\"));\r\n button.classList.add(\"app_button\");\r\n\r\n \r\n\r\n button.innerHTML = `${name}`\r\n\r\n var count = document.createElement(\"div\");\r\n count.classList.add(\"app_number\");\r\n count.style.display = \"none\";\r\n button.appendChild(count);\r\n\r\n var count2 = document.createElement(\"div\");\r\n count2.classList.add(\"app_number\", \"app_number2\");\r\n count2.style.display = \"none\";\r\n button.appendChild(count2);\r\n\r\n this.icon_counts[appId] = count;\r\n this.icon_counts2[appId] = count2;\r\n\r\n //var shadow = button.appendChild(document.createElement(\"div\"));\r\n //shadow.classList.add(\"shadow\");\r\n\r\n button.addEventListener(\"click\", (e) => {\r\n var app = TerminalApp.GetApp(appId);\r\n app.open();\r\n });\r\n }\r\n\r\n setAppNumber(appId: string, number: number, number2: number = 0) {\r\n var elm = this.icon_counts[appId];\r\n if (elm) {\r\n elm.style.display = number > 0 ? \"block\" : \"none\";\r\n elm.innerHTML = number.toString();\r\n }\r\n\r\n var elm2 = this.icon_counts2[appId];\r\n if (elm2) {\r\n elm2.style.display = number2 > 0 ? \"block\" : \"none\";\r\n elm2.innerHTML = number2.toString();\r\n }\r\n }\r\n }\r\n RegisterApp(\"homescreen\", Homescreen);\r\n}","/// \r\n\r\nnamespace TerminalApp {\r\n export class login extends AppBase {\r\n constructor() {\r\n super(\"login\");\r\n document.getElementById(\"login_button\").onclick = () => {\r\n this.LogIn();\r\n }\r\n }\r\n\r\n async LogIn() {\r\n var result = await SP.postForm(\"/API/FormSubmit/Login\", \"#login_form\");\r\n if (result == true) {\r\n GetApp(\"homescreen\").open();\r\n location.reload();\r\n }\r\n else {\r\n document.getElementById(\"login_error\").style.display = \"block\";\r\n }\r\n }\r\n\r\n\r\n bound = false;\r\n async onOpen() {\r\n (document.querySelector(\".top\") as HTMLElement).style.display = \"none\";\r\n\r\n if (!this.bound) {\r\n this.bound = true;\r\n }\r\n\r\n }\r\n\r\n async scanLoginToken(token: string) {\r\n\r\n }\r\n\r\n async onClose() {\r\n (document.querySelector(\".top\") as HTMLElement).style.display = \"block\";\r\n\r\n if (this.bound) {\r\n barcodeListener.on(\"lt\", this.scanLoginToken, this);\r\n this.bound = false;\r\n\r\n }\r\n }\r\n }\r\n\r\n\r\n RegisterApp(\"login\", login);\r\n}","/// \r\n\r\nnamespace TerminalApp {\r\n\r\n\r\n export class AddressFormAssistant extends Assistant {\r\n bc_menu = document.createElement(\"div\");\r\n submit_button: HTMLElement;\r\n\r\n current: SP.OrderInfo;\r\n\r\n name_input: HTMLInputElement;\r\n attention_input: HTMLInputElement;\r\n address1_input: HTMLInputElement;\r\n address2_input: HTMLInputElement;\r\n zipCode_input: HTMLInputElement;\r\n city_input: HTMLInputElement;\r\n country_input: HTMLInputElement;\r\n state_input: HTMLInputElement;\r\n phone_input: HTMLInputElement;\r\n email_input: HTMLInputElement;\r\n\r\n constructor() {\r\n super();\r\n\r\n this.initialize();\r\n\r\n this.submit_button = this.bc_menu.querySelector(\".btn\");\r\n this.submit_button.addEventListener(\"click\", async () => {\r\n SP.Sounds.Click.play();\r\n\r\n var postData = {\r\n id: this.current.orderId,\r\n\r\n recipient: {\r\n name: this.name_input.value,\r\n attention: this.attention_input.value,\r\n street1: this.address1_input.value,\r\n street2: this.address2_input.value,\r\n zipcode: this.zipCode_input.value,\r\n city: this.city_input.value,\r\n country: this.country_input.value,\r\n state: this.state_input.value,\r\n phone: this.phone_input.value,\r\n email: this.email_input.value\r\n }\r\n\r\n };\r\n\r\n let result = await SP.post(\"/api/v1/order/update\", postData);\r\n\r\n if (result.status == 200) {\r\n this.current.recipient = postData.recipient;\r\n }\r\n\r\n this.close();\r\n });\r\n\r\n }\r\n\r\n hide() {\r\n this.bc_menu.style.display = \"none\";\r\n }\r\n\r\n open_bc() {\r\n this.hide();\r\n this.container.style.display = \"block\";\r\n this.bc_menu.style.display = \"block\";\r\n }\r\n\r\n async open(order: SP.OrderInfo) {\r\n this.reset();\r\n this.current = order;\r\n\r\n this.name_input.value = order.recipient.name;\r\n this.attention_input.value = order.recipient.attention;\r\n this.address1_input.value = order.recipient.street1;\r\n this.address2_input.value = order.recipient.street2;\r\n this.zipCode_input.value = order.recipient.zipcode;\r\n this.city_input.value = order.recipient.city;\r\n this.country_input.value = order.recipient.country;\r\n this.state_input.value = order.recipient.state;\r\n this.phone_input.value = order.recipient.phone;\r\n this.email_input.value = order.recipient.email;\r\n\r\n this.open_bc();\r\n }\r\n\r\n close() {\r\n this.reset();\r\n super.close();\r\n }\r\n\r\n reset() {\r\n this.name_input.value = \"\";\r\n this.attention_input.value = \"\";\r\n this.address1_input.value = \"\";\r\n this.address2_input.value = \"\";\r\n this.zipCode_input.value = \"\";\r\n this.city_input.value = \"\";\r\n this.country_input.value = \"\";\r\n this.state_input.value = \"\";\r\n this.phone_input.value = \"\";\r\n this.email_input.value = \"\";\r\n }\r\n\r\n initialize() {\r\n\r\n this.bc_menu.innerHTML = `\r\n\r\n
\r\n \r\n
\r\n

${SP.Localize(\"sentance_edit_address\")}

\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n \r\n
\r\n\r\n
\r\n
\r\n\r\n
${SP.Localize(\"word_save\")}
\r\n `;\r\n\r\n this.name_input = this.bc_menu.querySelector(\".orderInfo-terminal-form-name\");\r\n this.attention_input = this.bc_menu.querySelector(\".orderInfo-terminal-form-attention\");\r\n this.address1_input = this.bc_menu.querySelector(\".orderInfo-terminal-form-address1\");\r\n this.address2_input = this.bc_menu.querySelector(\".orderInfo-terminal-form-address2\");\r\n this.zipCode_input = this.bc_menu.querySelector(\".orderInfo-terminal-form-zipCode\");\r\n this.city_input = this.bc_menu.querySelector(\".orderInfo-terminal-form-city\");\r\n this.country_input = this.bc_menu.querySelector(\".orderInfo-terminal-form-country\");\r\n this.state_input = this.bc_menu.querySelector(\".orderInfo-terminal-form-state\");\r\n this.phone_input = this.bc_menu.querySelector(\".orderInfo-terminal-form-phone\");\r\n this.email_input = this.bc_menu.querySelector(\".orderInfo-terminal-form-email\");\r\n\r\n this.container.appendChild(this.bc_menu);\r\n }\r\n\r\n }\r\n}","/// \r\n\r\nnamespace TerminalApp {\r\n\r\n\r\n export class BarcodeInputAssistant extends Assistant {\r\n bc_menu = document.createElement(\"div\");\r\n additional_container: HTMLElement;\r\n ean_input: HTMLInputElement;\r\n colli_input: HTMLInputElement;\r\n submit_button: HTMLElement;\r\n resultCount = 0;\r\n additional: boolean = false;\r\n callback: (bc: string, colli_qty: number) => void;\r\n constructor() {\r\n super();\r\n this.bc_menu.innerHTML = `\r\n

${SP.Localize(\"sentance_scan_barcode\")}

\r\n
\r\n

${SP.Localize(\"sentance_enter_barcode\")}

\r\n \r\n
\r\n

${SP.Localize(\"sentance_enter_colli_size\")}

\r\n \r\n
\r\n
${SP.Localize(\"word_add\")}
\r\n `; \r\n this.additional_container = this.bc_menu.querySelector(\".additional_barcode_info\");\r\n this.ean_input = this.bc_menu.querySelector(\".barcode_input\");\r\n this.colli_input = this.bc_menu.querySelector(\".colli_amount_input\");\r\n this.submit_button = this.bc_menu.querySelector(\".btn\");\r\n this.submit_button.addEventListener(\"click\", () => {\r\n this.callback(this.ean_input.value, parseInt(this.colli_input.value));\r\n this.close();\r\n });\r\n\r\n this.ean_input.addEventListener(\"keydown\", (e) => {\r\n\r\n if (e.which == 13) this.submit_button.click();\r\n });\r\n\r\n this.container.appendChild(this.bc_menu);\r\n }\r\n\r\n\r\n hide() {\r\n this.bc_menu.style.display = \"none\";\r\n }\r\n\r\n open_bc() {\r\n this.hide();\r\n this.container.style.display = \"block\";\r\n this.bc_menu.style.display = \"block\";\r\n this.additional_container.style.display = this.additional ? \"block\" : \"none\";\r\n\r\n }\r\n\r\n clear() {\r\n //clear home buttons\r\n this.container.style.display = \"none\";\r\n }\r\n\r\n bound = false;\r\n\r\n async open(additional: boolean, callback: (bc: string, colli_qty: number) => void) {\r\n this.callback = callback;\r\n this.additional = additional;\r\n this.open_bc();\r\n\r\n this.ean_input.value = \"\";\r\n this.colli_input.value = \"1\";\r\n\r\n //this.ean_input.focus();\r\n\r\n if (!this.bound) {\r\n barcodeListener.on(null, this.scanBarcode, this);\r\n this.bound = true;\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n close() {\r\n if (this.bound) {\r\n barcodeListener.off(null, this.scanBarcode);\r\n this.bound = false;\r\n }\r\n super.close();\r\n }\r\n\r\n scanBarcode(bc: string) {\r\n SP.blurActive();\r\n this.ean_input.value = bc;\r\n\r\n if (!this.additional) {\r\n this.submit_button.click();\r\n }\r\n else {\r\n this.colli_input.focus();\r\n this.colli_input.select();\r\n }\r\n\r\n return false;\r\n }\r\n }\r\n\r\n\r\n}","/// \r\n\r\nnamespace TerminalApp {\r\n\r\n\r\n export class EditLotAssistant extends Assistant {\r\n bc_menu = document.createElement(\"div\");\r\n submit_button: HTMLElement;\r\n current: SP.StockingLotInfo;\r\n\r\n batch_input: HTMLInputElement;\r\n arrival_input: HTMLInputElement;\r\n expiration_container: HTMLElement;\r\n expiration_input: HTMLInputElement;\r\n item_headline: HTMLElement;\r\n image_contianer: HTMLElement;\r\n constructor() {\r\n super();\r\n\r\n this.initialize();\r\n\r\n this.submit_button = this.bc_menu.querySelector(\".btn\");\r\n this.submit_button.addEventListener(\"click\", async () => {\r\n SP.Sounds.Click.play();\r\n\r\n var postData = {\r\n id: this.current.id,\r\n arrivalDate: this.arrival_input.value,\r\n expirationDate: this.expiration_input.value ? this.expiration_input.value : null,\r\n batchNumber: this.batch_input.value\r\n };\r\n\r\n let result = await SP.post(\"/api/v1/stockingLot/update\", postData);\r\n\r\n location.reload(); //maybe\r\n //this.close();\r\n });\r\n\r\n }\r\n\r\n hide() {\r\n this.bc_menu.style.display = \"none\";\r\n }\r\n\r\n open_bc() {\r\n this.hide();\r\n this.container.style.display = \"block\";\r\n this.bc_menu.style.display = \"block\";\r\n }\r\n\r\n async open(lot: SP.StockingLotInfo) {\r\n console.log(\"LOT:\", lot);\r\n this.reset();\r\n this.current = lot;\r\n this.item_headline.innerHTML = lot.item.description;\r\n this.image_contianer.innerHTML = ``;\r\n this.batch_input.value = lot.batchNumber;\r\n this.arrival_input.value = lot.arrivalDateRaw;\r\n this.expiration_input.value = lot.expirationDateRaw;\r\n this.expiration_container.style.display = lot.item.expirable ? \"block\" : \"none\";\r\n this.open_bc();\r\n }\r\n\r\n close() {\r\n this.reset();\r\n super.close();\r\n }\r\n\r\n reset() {\r\n this.batch_input.value = \"\";\r\n this.arrival_input.value = \"\";\r\n this.expiration_input.value = \"\";\r\n }\r\n\r\n initialize() {\r\n\r\n this.bc_menu.innerHTML = `\r\n\r\n
\r\n \r\n
\r\n

${SP.Localize(\"word_edit\")} LOT

\r\n
\r\n

\r\n
\r\n ${SP.Localize(\"word_arrival\")}\r\n \r\n
\r\n\r\n
\r\n ${SP.Localize(\"word_expiration\")}\r\n \r\n
\r\n\r\n
\r\n ${SP.Localize(\"word_batch\")}\r\n \r\n
\r\n
\r\n
\r\n\r\n
${SP.Localize(\"word_save\")}
\r\n `;\r\n\r\n this.item_headline = this.bc_menu.querySelector(\".item_headline\");\r\n this.image_contianer = this.bc_menu.querySelector(\".image_container\");\r\n this.batch_input = this.bc_menu.querySelector(\".el_batch\");\r\n this.arrival_input = this.bc_menu.querySelector(\".el_arrival\");\r\n this.expiration_input = this.bc_menu.querySelector(\".el_expiration\");\r\n this.expiration_container = this.bc_menu.querySelector(\".el_expiration_container\");\r\n this.container.appendChild(this.bc_menu);\r\n }\r\n\r\n }\r\n}","\r\nnamespace TerminalApp {\r\n\r\n export class EditShipmentInfoAssistant {\r\n container = document.createElement(\"div\");\r\n\r\n updatedLine: SP.UpdatedShipmentLine;\r\n\r\n callback: (warehouseReasonId: string, warehouseActionId: string, note: string) => void;\r\n\r\n constructor() {\r\n this.container.classList.add(\"assistant\");\r\n }\r\n\r\n initialize() {\r\n // Close Button\r\n let close_button = this.container.appendChild(document.createElement(\"div\"))\r\n close_button.classList.add(\"close\");\r\n close_button.innerHTML = \"X\";\r\n //\r\n\r\n this.container.innerHTML += `\r\n
\r\n\r\n
\r\n

${SP.Localize(\"sentance_return_action\")}

\r\n \r\n
\r\n\r\n
\r\n

${SP.Localize(\"sentance_return_reason\")}

\r\n \r\n
\r\n\r\n
\r\n

${SP.Localize(\"word_note\")}

\r\n \r\n
\r\n\r\n\r\n\r\n
\r\n
${SP.Localize(\"word_save\")}
\r\n
\r\n\r\n
\r\n `;\r\n\r\n // Close Button\r\n this.container.querySelector(\".close\").addEventListener(\"click\", () => {\r\n this.close();\r\n });\r\n\r\n\r\n // Save Button\r\n this.container.querySelector(\".saveBtn\").addEventListener(\"click\", () => {\r\n\r\n let warehouseReasonId = (this.container.querySelector(\".selectReason\") as HTMLSelectElement).value;\r\n let warehouseActionId = (this.container.querySelector(\".selectAction\") as HTMLSelectElement).value;\r\n let note = (this.container.querySelector(\".return-note\") as HTMLTextAreaElement).value;\r\n\r\n if (this.callback) {\r\n this.callback(warehouseReasonId, warehouseActionId, note);\r\n }\r\n\r\n this.close();\r\n });\r\n\r\n\r\n this.populateActions();\r\n this.populateReasons();\r\n }\r\n\r\n async populateActions() {\r\n let actions = await SP.Data.WarehouseReasonsAndActions.getWarehouseActions();\r\n if (actions == null) {\r\n console.log(\"No actions\")\r\n return;\r\n }\r\n \r\n let currentSelectedAction = actions.find((x) => x.id == this.updatedLine.warehouseActionId);\r\n \r\n let selectAction = this.container.querySelector(\".selectAction\") as HTMLSelectElement;\r\n for (let i = 0; i < actions.length; i++) {\r\n if (currentSelectedAction.returnActionType != SP.ReturnActionType.Exchange && actions[i].returnActionType != SP.ReturnActionType.Exchange) {\r\n let isSelected = \"\";\r\n if (this.updatedLine.warehouseActionId === actions[i].id) {\r\n isSelected = \"selected\";\r\n }\r\n\r\n selectAction.innerHTML += `\r\n \r\n `; \r\n }\r\n }\r\n }\r\n\r\n async populateReasons() {\r\n let reasons = await SP.Data.WarehouseReasonsAndActions.getWarehouseReasons();\r\n if (reasons == null) {\r\n console.log(\"No reasons\")\r\n return; \r\n }\r\n\r\n let selectReason = this.container.querySelector(\".selectReason\") as HTMLSelectElement;\r\n for (let i = 0; i < reasons.length; i++) {\r\n\r\n let isSelected = \"\";\r\n if (this.updatedLine.warehouseReasonId === reasons[i].id) {\r\n isSelected = \"selected\";\r\n }\r\n\r\n selectReason.innerHTML += `\r\n \r\n `;\r\n }\r\n }\r\n\r\n open(callback: (warehouseReasonId: string, warehouseActionId: string, note: string) => void, line: SP.UpdatedShipmentLine) {\r\n this.callback = callback;\r\n this.updatedLine = line;\r\n this.container.style.display = \"block\";\r\n\r\n this.initialize();\r\n }\r\n\r\n close() {\r\n\r\n this.container.style.display = \"none\";\r\n this.reset();\r\n }\r\n\r\n reset() {\r\n this.container.innerHTML = \"\";\r\n this.updatedLine = null;\r\n }\r\n\r\n }\r\n}","/// \r\n\r\nnamespace TerminalApp {\r\n function generateDateBasedNumber() {\r\n const date = new Date();\r\n const year = date.getFullYear().toString().slice(-2); // Last two digits of the year\r\n const month = (date.getMonth() + 1).toString().padStart(2, '0'); // Months are zero-based, so +1\r\n const day = date.getDate().toString().padStart(2, '0');\r\n const hours = date.getHours().toString().padStart(2, '0');\r\n const minutes = date.getMinutes().toString().padStart(2, '0');\r\n const seconds = date.getSeconds().toString().padStart(2, '0');\r\n\r\n return `${year}${month}${day}${hours}${minutes}${seconds}`;\r\n }\r\n\r\n class ProductionElement {\r\n container = document.createElement(\"div\");\r\n batch_input: HTMLInputElement;\r\n quantity_input: HTMLInputElement;\r\n expiration_container: HTMLElement;\r\n expiration_input: HTMLInputElement;\r\n item_headline: HTMLElement;\r\n image_contianer: HTMLElement;\r\n order: SP.OrderInfo;\r\n item: SP.ItemInfo;\r\n\r\n constructor(data: SP.ProductionOrderInfo, number: number) {\r\n this.order = data.order;\r\n this.item = data.item;\r\n //build html\r\n this.container.innerHTML = `\r\n
\r\n
\r\n
${data.toteName}
\r\n
\r\n \r\n
\r\n

${this.item.description}

\r\n
\r\n ${SP.Localize(\"word_quantity\")} ${SP.Localize(\"word_produced\")}\r\n \r\n
\r\n\r\n
\r\n ${SP.Localize(\"word_expiration\")}\r\n \r\n
\r\n\r\n
\r\n ${SP.Localize(\"word_batch\")}\r\n \r\n
\r\n
\r\n
\r\n
\r\n `;\r\n\r\n //set references\r\n var barcodes = this.container.querySelector(\".barcodes\");\r\n this.item_headline = this.container.querySelector(\".item_headline\");\r\n this.image_contianer = this.container.querySelector(\".image_container\");\r\n this.batch_input = this.container.querySelector(\".el_batch\");\r\n this.quantity_input = this.container.querySelector(\".el_qty\");\r\n this.expiration_input = this.container.querySelector(\".el_expiration\");\r\n this.expiration_container = this.container.querySelector(\".el_expiration_container\");\r\n this.expiration_container.style.display = this.item.expirable ? \"block\" : \"none\";\r\n\r\n this.image_contianer.addEventListener(\"click\", () => {\r\n TerminalApp.itemShortcutAssistant.open_with_info(this.item);\r\n });\r\n\r\n if (App_Settings.userSettings.autogenerate_production_batch_number) {\r\n this.batch_input.value = generateDateBasedNumber() + \"-\" + number;\r\n }\r\n\r\n if (this.item.allBarcodes) {\r\n for (var bc in this.item.allBarcodes) {\r\n var qty = this.item.allBarcodes[bc];\r\n var printBtn = document.createElement(\"div\");\r\n\r\n printBtn.classList.add(\"btn\", \"noselect\", \"grad-gray\");\r\n printBtn.innerHTML = ` ${bc} `;\r\n\r\n if (qty > 1) {\r\n printBtn.innerHTML += `(colli: ${qty})`;\r\n }\r\n\r\n printBtn.addEventListener(\"click\", async () => {\r\n var amt = parseInt(prompt(SP.Localize(\"sentance_enter_amount\"), \"1\"));\r\n if (amt) {\r\n var result = await SP.get(`/api/v1/item/printbarcode?printer=${App_Settings.terminalSettings.etiquette_printer}&id=${this.item.id}&barcode=${encodeURIComponent(bc)}&colli=${qty}&copies=${amt}`);\r\n if (result.status != 200) await SP.alertX(result.msg);\r\n }\r\n });\r\n barcodes.appendChild(printBtn);\r\n }\r\n }\r\n this.item.allBarcodes\r\n }\r\n\r\n getProductionData() {\r\n return {\r\n orderId: this.order.orderId,\r\n quantity: this.quantity_input.value,\r\n expirationDate: this.expiration_input.value,\r\n batchNumber: this.batch_input.value\r\n };\r\n }\r\n } \r\n\r\n export class FinishProductionAssistant extends Assistant {\r\n order_container = document.createElement(\"div\");\r\n orders: ProductionElement[] = [];\r\n current: SP.StockingLotInfo;\r\n\r\n \r\n constructor() {\r\n super();\r\n var headline = document.createElement(\"h1\");\r\n headline.innerHTML = SP.Localize(\"sentance_finish_production\");\r\n\r\n var finishButton = document.createElement(\"div\");\r\n finishButton.classList.add(\"btn\", \"noselect\", \"grad-green\");\r\n finishButton.innerHTML = `${SP.Localize(\"sentance_finish_production\")}`;\r\n finishButton.addEventListener(\"click\", async () => {\r\n SP.Sounds.Click.play();\r\n this.resolveOnClose(this.orders.map(o => o.getProductionData())); // This line has no TypeScript errors now\r\n this.close();\r\n });\r\n \r\n\r\n this.container.appendChild(headline);\r\n this.container.appendChild(this.order_container);\r\n this.container.appendChild(finishButton);\r\n }\r\n\r\n\r\n resolveOnClose: (data: any) => void;\r\n\r\n async open(orders: SP.ProductionOrderInfo[]) {\r\n this.reset();\r\n\r\n for (var i = 0; i < orders.length; i++) {\r\n var order = new ProductionElement(orders[i], i+1);\r\n this.orders.push(order);\r\n this.order_container.appendChild(order.container);\r\n }\r\n\r\n \r\n this.container.style.display = \"block\";\r\n\r\n // Promise is created only for the close operation.\r\n return new Promise((resolve, reject) => {\r\n this.resolveOnClose = resolve;\r\n });\r\n }\r\n\r\n close() {\r\n // When close is called, resolve the Promise.\r\n if (this.resolveOnClose) {\r\n this.resolveOnClose(null);\r\n }\r\n super.close();\r\n }\r\n\r\n reset() {\r\n this.orders = [];\r\n this.order_container.innerHTML = '';\r\n }\r\n\r\n }\r\n}","/// \r\n\r\nnamespace TerminalApp {\r\n export class ItemParkingAssistant extends Assistant {\r\n select_type_menu = document.createElement(\"div\");\r\n callback: (parked: boolean) => any;\r\n item: SP.ItemInfo;\r\n constructor() {\r\n super();\r\n \r\n this.select_type_menu.innerHTML = `\r\n

${SP.Localize('sentance_select_period')}

\r\n
1 ${SP.Localize('word_hour')}
\r\n
1 ${SP.Localize('word_day')}
\r\n
1 ${SP.Localize('word_week')}
\r\n
1 ${SP.Localize('word_month')}
\r\n
1 ${SP.Localize('word_year')}
\r\n `;\r\n\r\n var ipa_1_hour = this.select_type_menu.querySelector(\"#ipa_1_hour\");\r\n var ipa_1_day = this.select_type_menu.querySelector(\"#ipa_1_day\");\r\n var ipa_1_week = this.select_type_menu.querySelector(\"#ipa_1_week\");\r\n var ipa_1_month = this.select_type_menu.querySelector(\"#ipa_1_month\");\r\n var ipa_1_year = this.select_type_menu.querySelector(\"#ipa_1_year\");\r\n\r\n ipa_1_hour.addEventListener(\"click\", () => { this.parkItem(1); });\r\n ipa_1_day.addEventListener(\"click\", () => { this.parkItem(1 * 24); });\r\n ipa_1_week.addEventListener(\"click\", () => { this.parkItem(1 * 24 * 7); });\r\n ipa_1_month.addEventListener(\"click\", () => { this.parkItem(1 * 24 * 30); });\r\n ipa_1_year.addEventListener(\"click\", () => { this.parkItem(1 * 24 * 365); });\r\n\r\n this.container.appendChild(this.select_type_menu);\r\n }\r\n\r\n async parkItem(hours: number) {\r\n this.item.refillParked = hours > 0;\r\n await SP.get(`/api/v1/item/parkRefill/${this.item.id}?hours=${hours}`)\r\n if (this.callback)\r\n this.close();\r\n }\r\n\r\n hide() {\r\n this.container.style.display = \"none\";\r\n this.select_type_menu.style.display = \"none\";\r\n }\r\n\r\n open_select_type() {\r\n this.hide();\r\n this.container.style.display = \"block\";\r\n this.select_type_menu.style.display = \"block\";\r\n }\r\n\r\n async open(item: SP.ItemInfo, callback: (parked: boolean) => any) {\r\n this.item = item;\r\n this.callback = callback;\r\n\r\n //unpark\r\n if (item.refillParked) {\r\n this.parkItem(-1);\r\n }\r\n else { \r\n this.open_select_type();\r\n }\r\n\r\n }\r\n\r\n close() {\r\n this.callback(this.item.refillParked);\r\n super.close();\r\n }\r\n }\r\n}","\r\nnamespace TerminalApp {\r\n\r\n export class ItemSearchExtraData {\r\n purchaseOrderLineInfo: SP.PurchaseOrderLineInfo;\r\n }\r\n export class ItemSearcherAssistant {\r\n container = document.createElement(\"div\");\r\n customer_menu = document.createElement(\"div\");\r\n customer_suggestion_container = document.createElement(\"div\");\r\n item_menu = document.createElement(\"div\");\r\n item_suggestion_container = document.createElement(\"div\");\r\n search_input = document.createElement(\"input\");\r\n search_input_number = document.createElement(\"input\");\r\n customerId: string;\r\n resultCount = 0;\r\n callback: (itemInfo: SP.ItemInfo, extraData: ItemSearchExtraData) => void;\r\n keyword: string;\r\n numberInput: boolean;\r\n constructor() {\r\n this.container.classList.add(\"assistant\");\r\n\r\n //close button\r\n var close_button = this.container.appendChild(document.createElement(\"div\"))\r\n close_button.classList.add(\"close\");\r\n close_button.innerHTML = \"X\";\r\n close_button.addEventListener(\"click\", () => {\r\n this.close();\r\n });\r\n\r\n //setup stock screen\r\n var customer_headline = this.customer_menu.appendChild(document.createElement(\"h1\"));\r\n customer_headline.innerHTML = SP.Localize(\"sentance_select_stock\");\r\n this.customer_menu.append(this.customer_suggestion_container);\r\n\r\n\r\n //setup item screen\r\n var headline = this.item_menu.appendChild(document.createElement(\"h1\"));\r\n headline.innerHTML = SP.Localize(\"sentance_search_item\");\r\n this.search_input.type = \"text\";\r\n this.search_input.placeholder = SP.Localize(\"sentance_search_item\") + \" ...\";\r\n this.search_input.autocomplete = \"off\";\r\n this.search_input.tabIndex = 1;\r\n this.search_input.classList.add(\"search_input\", \"form-control\");\r\n\r\n this.item_suggestion_container.classList.add(\"item_suggestion_container\");\r\n\r\n this.search_input_number.type = \"number\";\r\n this.search_input_number.placeholder = SP.Localize(\"sentance_enter_barcode\") + \" ...\";\r\n this.search_input_number.autocomplete = \"off\";\r\n this.search_input_number.tabIndex = 1;\r\n this.search_input_number.classList.add(\"search_input\", \"form-control\");\r\n\r\n let to = null as any;\r\n\r\n this.search_input.addEventListener(\"keyup\", () => {\r\n clearTimeout(to);\r\n to = setTimeout(() => {\r\n this.search(this.search_input.value, false);\r\n }, 500);\r\n });\r\n\r\n this.search_input_number.addEventListener(\"keyup\", () => {\r\n clearTimeout(to);\r\n to = setTimeout(() => {\r\n this.search(this.search_input_number.value, false);\r\n }, 500);\r\n });\r\n\r\n this.item_menu.append(this.search_input);\r\n this.item_menu.append(this.search_input_number);\r\n this.item_menu.append(this.item_suggestion_container);\r\n this.container.appendChild(this.item_menu);\r\n this.container.appendChild(this.customer_menu);\r\n }\r\n\r\n hide() {\r\n this.item_menu.style.display = \"none\";\r\n this.customer_menu.style.display = \"none\";\r\n }\r\n\r\n async open_customer_picker() {\r\n this.hide();\r\n this.container.style.display = \"block\";\r\n this.customer_menu.style.display = \"block\";\r\n let customers = await SP.Data.Customer.getCustomerInfos();\r\n this.customer_suggestion_container.innerHTML = \"\";\r\n if (customers.length == 1) {\r\n this.customerId = customers[0].customerId;\r\n return this.open_product_picker();\r\n } \r\n customers.forEach(customer => {\r\n this.addCustomer(customer);\r\n });\r\n }\r\n\r\n async open_product_picker() {\r\n\r\n if (this.keyword) {\r\n var autopicked = await this.search(this.keyword, true);\r\n console.log(\"autopicked:\", autopicked);\r\n\r\n if (autopicked) return this.close();\r\n }\r\n\r\n this.search_input_number.style.display = this.numberInput ? \"\" : \"none\";\r\n this.search_input.style.display = this.numberInput ? \"none\" : \"\";\r\n\r\n if (this.numberInput) {\r\n this.search_input_number.value = this.keyword;\r\n this.search_input_number.focus();\r\n }\r\n else {\r\n this.search_input.value = this.keyword;\r\n this.search_input.focus();\r\n }\r\n\r\n this.hide();\r\n this.container.style.display = \"block\";\r\n this.item_menu.style.display = \"block\";\r\n }\r\n\r\n clear() {\r\n //clear home buttons\r\n this.item_suggestion_container.innerHTML = \"\";\r\n this.container.style.display = \"none\";\r\n }\r\n\r\n searchTypes: SP.ItemType[] = null; \r\n\r\n async open(customerId: string, keyword: string, numberInput: boolean, callback: (itemInfo: SP.ItemInfo, extraData: ItemSearchExtraData) => void, types: SP.ItemType[] = null) {\r\n this.searchTypes = types;\r\n this.customerId = customerId;\r\n this.callback = callback;\r\n this.search_input.value = \"\";\r\n this.search_input_number.value = \"\";\r\n this.item_suggestion_container.innerHTML = \"\";\r\n this.keyword = keyword;\r\n this.numberInput = numberInput;\r\n\r\n if (customerId) await this.open_product_picker();\r\n else await this.open_customer_picker();\r\n\r\n }\r\n\r\n async search(keyword: string, autoPick: boolean) {\r\n var items = await SP.Data.Item.searchItemInfos(keyword, this.customerId, 50, this.searchTypes);\r\n this.resultCount = items.length;\r\n if (autoPick && items.length == 1) {\r\n if (this.callback) this.callback(items[0], new ItemSearchExtraData());\r\n return true;\r\n }\r\n\r\n this.item_suggestion_container.innerHTML = \"\";\r\n\r\n for (let i = 0; i < items.length; i++) {\r\n await this.addItem(items[i], new ItemSearchExtraData());\r\n }\r\n\r\n //highlight keywords\r\n keyword.split(\" \").forEach(w => { SP.highlight(\".item_suggestion_container\", w); });\r\n\r\n return false;\r\n }\r\n\r\n close() {\r\n this.clear();\r\n this.container.style.display = \"none\";\r\n }\r\n\r\n addCustomer(item: SP.CustomerInfo) {\r\n var c = this.customer_suggestion_container.appendChild(document.createElement(\"div\"))\r\n c.classList.add(\"btn\", \"noselect\");\r\n c.innerHTML = `
${item.customerName}
`;\r\n c.addEventListener(\"click\", () => {\r\n console.log(\"Picking customer \", item);\r\n this.customerId = item.customerId;\r\n this.open_product_picker();\r\n });\r\n }\r\n\r\n addItem(item: SP.ItemInfo, data: ItemSearchExtraData) {\r\n var c = this.item_suggestion_container.appendChild(document.createElement(\"div\"))\r\n c.classList.add(\"btn\", \"noselect\", \"item\");\r\n\r\n\r\n let incommingLabel = item.incommingCombined <= 0 ? \"\" : `${SP.Localize(\"word_incomming\")}
${item.incommingCombined}
`;\r\n let soldLabel = item.reservedCombined <= 0 ? \"\" : `${SP.Localize(\"word_sold\")}
${item.reservedCombined}
`;\r\n\r\n c.innerHTML = `\r\n
\r\n
\r\n
${item.sku}
\r\n
${item.description}
\r\n
${item.barcodes}
\r\n
\r\n
${incommingLabel} ${soldLabel}
\r\n `;\r\n\r\n c.addEventListener(\"click\", () => {\r\n if (this.callback) this.callback(item, data);\r\n this.close();\r\n });\r\n\r\n return c;\r\n }\r\n }\r\n\r\n}","/// \r\n\r\nnamespace TerminalApp {\r\n\r\n export class PickAssistant extends Assistant {\r\n dm_menu = document.createElement(\"div\");\r\n dm_inactive_container = document.createElement(\"div\");\r\n dm_active_container = document.createElement(\"div\");\r\n resultCount = 0;\r\n callback: (item: TCallback) => void;\r\n constructor(headline: string) {\r\n super();\r\n this.dm_menu.innerHTML = `

${headline}

`;\r\n this.dm_menu.append(this.dm_active_container);\r\n this.dm_menu.append(this.dm_inactive_container);\r\n this.container.appendChild(this.dm_menu);\r\n }\r\n\r\n hide() {\r\n this.dm_menu.style.display = \"none\";\r\n }\r\n\r\n open_dm_picker() {\r\n\r\n\r\n this.hide();\r\n this.container.style.display = \"block\";\r\n this.dm_menu.style.display = \"block\";\r\n }\r\n\r\n clear() {\r\n //clear home buttons\r\n this.dm_active_container.innerHTML = \"\";\r\n this.dm_inactive_container.innerHTML = \"\";\r\n this.container.style.display = \"none\";\r\n }\r\n\r\n async open(callback: (item: TCallback) => void) {\r\n this.callback = callback;\r\n this.open_dm_picker();\r\n }\r\n\r\n\r\n\r\n\r\n addItem(item: TCallback, active: boolean, title: string, descrpition: string, icon: string = null, color: string = null, speical_callback: (item: TCallback) => void = null) {\r\n var c = document.createElement(\"div\");\r\n c.classList.add(\"btn\", \"noselect\");\r\n\r\n if (!active) c.classList.add(\"inactive\");\r\n\r\n if (icon) c.innerHTML = `
`;\r\n c.innerHTML += `
${title}
${descrpition}`;\r\n\r\n c.addEventListener(\"click\", () => {\r\n (speical_callback ?? this.callback)(item);\r\n this.close();\r\n });\r\n\r\n if (active)\r\n this.dm_active_container.appendChild(c);\r\n else\r\n this.dm_inactive_container.appendChild(c);\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n interface KeyValuePair {\r\n key: string;\r\n value: string;\r\n }\r\n\r\n\r\n export class KeyValuePickAssistant extends PickAssistant {\r\n setAll(items: { [key: string]: string }, headline: string, default_text: string, default_value: string) {\r\n\r\n this.clear();\r\n this.dm_menu.querySelector(\"h1\").innerHTML = headline;\r\n\r\n if (default_text != null) {\r\n this.addItem({ key: default_value, value: default_text }, true, default_text, \"\");\r\n }\r\n\r\n for (var key in items) {\r\n this.addItem({ key: key, value: items[key] }, true, items[key], \"\");\r\n }\r\n }\r\n setAllFromArray(items: any[], headline: string, default_text: string, default_value: string) {\r\n this.clear();\r\n this.dm_menu.querySelector(\"h1\").innerHTML = headline;\r\n\r\n if (default_text != null) {\r\n this.addItem({ key: default_value, value: default_text }, true, default_text, \"\");\r\n }\r\n\r\n for (var i = 0; i < items.length; i++) {\r\n var item = items[i];\r\n this.addItem({ key: item.key ?? \"\", value: item.value ?? \"\" }, true, item.value ?? \"\", \"\");\r\n }\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n\r\n}","/// \r\n\r\nnamespace TerminalApp {\r\n export class ItemShortcutAssistant extends PickAssistant {\r\n itemInfo: SP.ItemInfo;\r\n\r\n constructor() {\r\n super(SP.Localize(\"word_item\") + \" \" + SP.Localize(\"word_shortcuts\"));\r\n\r\n //Item info\r\n this.addItem(null, true, SP.Localize(\"sentance_item_info\"), SP.Localize(\"description_item_info\"), \"fa-solid fa-rectangle-barcode\", \"black\", async () => {\r\n SP.setAllHash({ \"app\": \"app_item_info\", \"itemId\": this.itemInfo.id });\r\n this.close();\r\n });\r\n\r\n //Audit button\r\n this.addItem(null, true, SP.Localize(\"sentance_audit_item\"), SP.Localize(\"description_audit_item\"), \"fa-solid fa-calculator\", \"black\", async () => {\r\n SP.setAllHash({ \"app\": \"app_audit_stock\", \"customerId\": this.itemInfo.customerId, \"itemId\": this.itemInfo.id });\r\n this.close();\r\n });\r\n }\r\n\r\n open_with_info(itemInfo: SP.ItemInfo) {\r\n this.itemInfo = itemInfo;\r\n super.open(null);\r\n\r\n }\r\n\r\n async open_with_id(id: string) {\r\n this.itemInfo = await SP.Data.Item.getItemInfo(id);\r\n super.open(null);\r\n }\r\n }\r\n\r\n}","/// \r\n\r\nnamespace TerminalApp {\r\n\r\n\r\n export class OrderNoteForm extends Assistant {\r\n bc_menu = document.createElement(\"div\");\r\n submit_button: HTMLElement;\r\n\r\n callback: (order: string) => void;\r\n\r\n current: SP.OrderInfo;\r\n\r\n orderNoteTextarea: HTMLTextAreaElement;\r\n\r\n constructor() {\r\n super();\r\n\r\n this.initialize();\r\n\r\n this.submit_button = this.bc_menu.querySelector(\".btn\");\r\n this.submit_button.addEventListener(\"click\", async () => {\r\n SP.Sounds.Click.play();\r\n\r\n var postData = {\r\n id: this.current.orderId,\r\n note: this.orderNoteTextarea.value\r\n };\r\n\r\n let result = await SP.post(\"/api/v1/order/update\", postData);\r\n\r\n if (result.status == 200) {\r\n this.current.note = postData.note;\r\n }\r\n else {\r\n await SP.alertX(\"Error: \" + result.status);\r\n }\r\n\r\n this.callback(this.current.note);\r\n\r\n this.close();\r\n });\r\n\r\n }\r\n\r\n open_bc() {\r\n this.container.style.display = \"block\";\r\n this.bc_menu.style.display = \"block\";\r\n }\r\n\r\n async open(order: SP.OrderInfo, callback: (order: string) => void) {\r\n this.clear();\r\n\r\n this.callback = callback;\r\n this.current = order;\r\n\r\n this.orderNoteTextarea.value = order.note;\r\n\r\n this.open_bc();\r\n }\r\n\r\n close() {\r\n this.clear();\r\n super.close();\r\n }\r\n\r\n clear() {\r\n this.current = null;\r\n this.orderNoteTextarea.value = \"\";\r\n }\r\n\r\n initialize() {\r\n\r\n this.bc_menu.innerHTML = `\r\n
\r\n

${SP.Localize(\"sentance_edit_order_note\")}

\r\n \r\n
\r\n\r\n
${SP.Localize(\"word_save\")}
\r\n `;\r\n\r\n this.orderNoteTextarea = this.bc_menu.querySelector(\".order-info-textarea\");\r\n\r\n this.container.appendChild(this.bc_menu);\r\n }\r\n\r\n }\r\n}","\r\nnamespace TerminalApp {\r\n\r\n export class OrderSearcherAssistant extends Assistant {\r\n orderSearch_menu = document.createElement(\"div\");\r\n search_input = document.createElement(\"input\");\r\n\r\n order_suggestion_container = document.createElement(\"div\");\r\n\r\n searchId = 0;\r\n\r\n callback: (orderInfo: SP.OrderInfo, customerInfo: SP.CustomerInfo) => void;\r\n\r\n constructor() {\r\n super();\r\n this.container.classList.add(\"assistant\");\r\n\r\n // Setup Search Html\r\n var headline = this.orderSearch_menu.appendChild(document.createElement(\"h1\"));\r\n headline.innerHTML = SP.Localize(\"sentance_search_order\");\r\n\r\n this.search_input.type = \"text\";\r\n this.search_input.placeholder = SP.Localize(\"sentance_search_order\");\r\n this.search_input.autocomplete = \"off\";\r\n this.search_input.tabIndex = 1;\r\n this.search_input.classList.add(\"search_input\", \"form-control\");\r\n\r\n this.order_suggestion_container.classList.add(\"order_suggestion_container\");\r\n\r\n // AppendChilds\r\n this.orderSearch_menu.appendChild(this.search_input);\r\n this.orderSearch_menu.appendChild(this.order_suggestion_container);\r\n\r\n this.container.appendChild(this.orderSearch_menu);\r\n\r\n // Eventlistners\r\n\r\n let to = null as any;\r\n this.search_input.addEventListener('keyup', () => {\r\n this.searchId++;\r\n clearTimeout(to);\r\n to = setTimeout(() => {\r\n this.search(this.search_input.value, false, this.searchId);\r\n }, 500);\r\n });\r\n }\r\n\r\n\r\n async search(keyword: string, autopick: boolean, searchId: number) {\r\n try {\r\n this.order_suggestion_container.innerHTML = `\r\n \r\n `;\r\n\r\n let orders = await SP.Data.Order.searchOrderInfosBasic(keyword);\r\n if (searchId != this.searchId) {\r\n return;\r\n }\r\n\r\n this.order_suggestion_container.innerHTML = \"\";\r\n\r\n for (var i = 0; i < orders.length; i++) {\r\n let customer = await SP.Data.Customer.getCustomerInfo(orders[i].customerId, true);\r\n this.addOrder(orders[i], customer);\r\n }\r\n } catch {\r\n\r\n }\r\n }\r\n\r\n\r\n hide() {\r\n this.orderSearch_menu.style.display = \"none\";\r\n }\r\n\r\n open_orderSearchMenu() {\r\n this.hide();\r\n this.container.style.display = \"block\";\r\n this.orderSearch_menu.style.display = \"block\";\r\n this.search_input.focus();\r\n }\r\n\r\n async open(callback: (orderInfo: SP.OrderInfo, customerInfo: SP.CustomerInfo) => void) {\r\n this.callback = callback;\r\n this.open_orderSearchMenu();\r\n }\r\n\r\n close() {\r\n super.close();\r\n this.clear();\r\n }\r\n\r\n clear() {\r\n this.search_input.value = \"\";\r\n this.order_suggestion_container.innerHTML = \"\";\r\n this.container.style.display = \"none\";\r\n }\r\n\r\n addOrder(order: SP.OrderInfo, customer: SP.CustomerInfo) {\r\n let searchResultContainer = this.order_suggestion_container.appendChild(document.createElement(\"div\"));\r\n searchResultContainer.classList.add(\"search-suggested-order-result-container\", \"noselect\", \"terminal-d-flex\", \"terminal-align-items-center\");\r\n\r\n searchResultContainer.innerHTML = `\r\n
\r\n \r\n
\r\n
\r\n

${order.referenceNo}

\r\n ${order.orderNo}\r\n ${customer.customerName}\r\n
\r\n \r\n `;\r\n\r\n searchResultContainer.addEventListener('click', () => {\r\n if (this.callback) {\r\n this.callback(order, customer);\r\n }\r\n\r\n this.close();\r\n });\r\n\r\n return searchResultContainer;\r\n }\r\n\r\n }\r\n\r\n}","namespace TerminalApp {\r\n\r\n export class OrderShipmentSearchAssistant extends Assistant {\r\n\r\n oss_menu: HTMLElement;\r\n search_os_input: HTMLInputElement;\r\n search_keyword_btn: HTMLButtonElement;\r\n\r\n orderShipment_suggestion_container = document.createElement(\"div\");\r\n\r\n resultReturnInfo: SP.ReturnOrderInfo;\r\n\r\n searchId: number;\r\n\r\n callback: (orderInfo: SP.ReturnOrderInfo) => void;\r\n constructor() {\r\n super();\r\n\r\n this.searchId = 0;\r\n\r\n this.container.classList.add(\"assistant\");\r\n\r\n this.initialize();\r\n\r\n this.search_os_input = this.oss_menu.querySelector(\".search_input\");\r\n this.search_keyword_btn = this.oss_menu.querySelector(\".return_search_keyword_button\");\r\n\r\n this.search_keyword_btn.addEventListener(\"click\", () => {\r\n SP.Sounds.Click.play();\r\n this.searchId++;\r\n this.search(this.searchId, this.search_os_input.value);\r\n });\r\n\r\n this.search_os_input.addEventListener(\"keydown\", (event) => {\r\n if (event.key === \"Enter\") {\r\n SP.Sounds.Click.play();\r\n this.searchId++;\r\n this.search(this.searchId, this.search_os_input.value);\r\n }\r\n });\r\n }\r\n\r\n initialize() {\r\n this.oss_menu = document.createElement(\"div\");\r\n\r\n this.oss_menu.innerHTML = `\r\n

${SP.Localize(\"sentance_search_order\")}

\r\n
\r\n \r\n \r\n
\r\n `;\r\n\r\n this.orderShipment_suggestion_container.classList.add(\"order_suggestion_container\");\r\n this.oss_menu.appendChild(this.orderShipment_suggestion_container);\r\n\r\n this.container.appendChild(this.oss_menu);\r\n }\r\n\r\n hide() {\r\n this.oss_menu.style.display = \"none\";\r\n }\r\n\r\n open_orderSearchMenu() {\r\n this.hide();\r\n\r\n this.container.style.display = \"block\";\r\n\r\n this.oss_menu.style.display = \"block\";\r\n\r\n this.search_os_input.focus();\r\n }\r\n\r\n async open(callback: (orderInfo: SP.ReturnOrderInfo) => void) {\r\n\r\n this.callback = callback;\r\n this.open_orderSearchMenu();\r\n }\r\n\r\n close() {\r\n super.close();\r\n this.clear();\r\n }\r\n\r\n clear() {\r\n this.search_os_input.value = \"\";\r\n this.orderShipment_suggestion_container.innerHTML = \"\";\r\n this.container.style.display = \"none\";\r\n }\r\n\r\n async search(searchId: number, keyword: string) {\r\n if (keyword.trim() == \"\") {\r\n return;\r\n }\r\n\r\n try {\r\n this.orderShipment_suggestion_container.innerHTML = `\r\n \r\n `;\r\n\r\n var data: any = {\r\n keyword: keyword,\r\n };\r\n\r\n let orders = await SP.Data.ReturnShipment.searchOrderShipmentInfos(data);\r\n if (searchId != this.searchId) {\r\n return;\r\n }\r\n\r\n\r\n this.orderShipment_suggestion_container.innerHTML = \"\";\r\n\r\n for (var i = 0; i < orders.length; i++) {\r\n let customerName = \"NULL\";\r\n var customer = await SP.Data.Customer.getCustomerInfo(orders[i].customerId, false);\r\n if (customer) {\r\n customerName = customer.customerName;\r\n }\r\n\r\n this.addOrder(orders[i], customerName);\r\n }\r\n } catch {\r\n\r\n }\r\n }\r\n\r\n addOrder(order: SP.ReturnOrderInfo, customerName: string) {\r\n let searchResultContainer = this.orderShipment_suggestion_container.appendChild(document.createElement(\"div\"));\r\n searchResultContainer.classList.add(\"search-suggested-order-result-container\", \"noselect\", \"terminal-d-flex\", \"terminal-align-items-center\");\r\n\r\n searchResultContainer.innerHTML = `\r\n
\r\n \r\n
\r\n
\r\n

${order.referenceNo} - ${customerName}

\r\n ${order.orderNo}\r\n \r\n
\r\n \r\n `;\r\n\r\n searchResultContainer.addEventListener('click', () => {\r\n this.resultReturnInfo = order;\r\n\r\n if (this.callback) {\r\n this.callback(order);\r\n }\r\n\r\n this.close();\r\n });\r\n\r\n return searchResultContainer;\r\n }\r\n\r\n }\r\n\r\n}","/// \r\n\r\nnamespace TerminalApp {\r\n\r\n\r\n export class PlacementFinderAssistant extends Assistant {\r\n select_type_menu = document.createElement(\"div\");\r\n scan_placement_menu = document.createElement(\"div\");\r\n result_menu = document.createElement(\"div\");\r\n\r\n placement_container: HTMLElement;\r\n\r\n refill: boolean;\r\n empty: boolean;\r\n\r\n \r\n\r\n callback: (placementId: number, placementData: string) => any;\r\n constructor() {\r\n super();\r\n this.scan_placement_menu.innerHTML = `\r\n

${SP.Localize(\"sentance_scan_placement\")}

\r\n
\r\n\r\n

${SP.Localize(\"sentance_scan_product\")}

\r\n
\r\n `;\r\n\r\n var placement_btn = this.scan_placement_menu.querySelector(\"#pfa_scan_placement\") as HTMLElement;\r\n placement_btn.style.pointerEvents = \"all\";\r\n placement_btn.addEventListener(\"click\", () => {\r\n placementPickerAssistant.open(null, null, placementInfo => {\r\n this.open_result(placementInfo.id, null);\r\n });\r\n });\r\n\r\n var product_btn = this.scan_placement_menu.querySelector(\"#pfa_scan_product\") as HTMLElement;\r\n product_btn.style.pointerEvents = \"all\";\r\n product_btn.addEventListener(\"click\", () => {\r\n itemSearchAssistant.open(null, null, false, itemInfo => {\r\n this.open_result(null, itemInfo.id);\r\n });\r\n });\r\n\r\n\r\n\r\n this.result_menu.innerHTML = `\r\n
\r\n `;\r\n\r\n this.placement_container = this.result_menu.querySelector(\".existing_placements\");\r\n\r\n this.select_type_menu.innerHTML = `\r\n

${SP.Localize('sentance_find_stock_placement')}

\r\n\r\n
${SP.Localize('sentance_pick_placement')}
${SP.Localize('sentance_all_placements')}
\r\n\r\n
${SP.Localize('sentance_pick_placement')}
${SP.Localize('sentance_only_empty_placements')}
\r\n\r\n
${SP.Localize('sentance_refill_placement')}
${SP.Localize('sentance_all_placements')}
\r\n\r\n
${SP.Localize('sentance_refill_placement')}
${SP.Localize('sentance_only_empty_placements')}
\r\n `;\r\n\r\n var find_pick = this.select_type_menu.querySelector(\"#pfa_find_pick\") as HTMLElement;\r\n var find_pick_empty = this.select_type_menu.querySelector(\"#pfa_find_pick_empty\") as HTMLElement;\r\n var find_refill = this.select_type_menu.querySelector(\"#pfa_find_refill\") as HTMLElement;\r\n var find_refill_empty = this.select_type_menu.querySelector(\"#pfa_find_refill_empty\") as HTMLElement;\r\n\r\n\r\n\r\n find_pick.addEventListener(\"click\", () => {\r\n this.refill = false;\r\n this.empty = false;\r\n this.open_placement_scan();\r\n });\r\n\r\n find_pick_empty.addEventListener(\"click\", () => {\r\n this.refill = false;\r\n this.empty = true;\r\n this.open_placement_scan();\r\n });\r\n\r\n find_refill.addEventListener(\"click\", () => {\r\n this.refill = true;\r\n this.empty = false;\r\n this.open_placement_scan();\r\n });\r\n\r\n find_refill_empty.addEventListener(\"click\", () => {\r\n this.refill = true;\r\n this.empty = true;\r\n this.open_placement_scan();\r\n });\r\n\r\n /*
${SP.Localize('sentance_find_pick_placement')}
Fjern eller opdater lagermængden
*/\r\n\r\n\r\n this.container.appendChild(this.select_type_menu);\r\n this.container.appendChild(this.scan_placement_menu);\r\n this.container.appendChild(this.result_menu);\r\n\r\n }\r\n\r\n\r\n hide() {\r\n this.container.style.display = \"none\";\r\n this.scan_placement_menu.style.display = \"none\";\r\n this.select_type_menu.style.display = \"none\";\r\n this.result_menu.style.display = \"none\";\r\n }\r\n\r\n\r\n open_select_type() {\r\n this.hide();\r\n this.container.style.display = \"block\";\r\n this.select_type_menu.style.display = \"block\";\r\n }\r\n\r\n open_placement_scan() {\r\n this.hide();\r\n this.container.style.display = \"block\";\r\n this.scan_placement_menu.style.display = \"block\";\r\n }\r\n\r\n async open_result(placementId: number, itemId: string) {\r\n this.hide();\r\n this.container.style.display = \"block\";\r\n this.result_menu.style.display = \"block\";\r\n\r\n this.placement_container.innerHTML = `
`;\r\n\r\n\r\n var url = `/api/v1/info/freePlacementDatas?refill=${this.refill}&empty=${this.empty}`;\r\n\r\n if (placementId) url += `&NearPlacementId=${placementId}`;\r\n if (itemId) url += `&NearItemId=${itemId}`;\r\n \r\n\r\n var data: any = await SP.get(url);\r\n\r\n console.log(\"DATE:\", data);\r\n\r\n this.placement_container.innerHTML = \"\";\r\n var placements = data.data.placements as any[];\r\n var lots = data.data.lots as any[];\r\n\r\n var showCount = 10;\r\n\r\n //insert exsising header\r\n if (lots.length) this.placement_container.innerHTML = `

${SP.Localize(\"sentance_existing_placements\")}

`;\r\n\r\n lots.forEach((d, index) => {\r\n if (index > showCount) return;\r\n var distance = d.distance as number;\r\n var lot = d.lotInfo as SP.StockingLotInfo;\r\n\r\n var pi = new PlacementInfoBox(lot.stockPlacementData, true, lot.item, lot.placementQuantityItemAllLots, distance);\r\n var container = document.createElement(\"div\");\r\n container.classList.add(\"audit_zone_placement\");\r\n container.appendChild(pi.container);\r\n this.placement_container.appendChild(container);\r\n\r\n container.addEventListener(\"click\", () => {\r\n if (this.callback) {\r\n this.callback(lot.stockPlacementId, lot.stockPlacementData);\r\n this.close();\r\n }\r\n });\r\n });\r\n\r\n //insert lots header\r\n if (placements.length) this.placement_container.innerHTML += `

${SP.Localize(\"word_placements\")}

`;\r\n\r\n placements.forEach((d, index) => {\r\n if (index > showCount) return;\r\n var distance = d.distance as number;\r\n var data = d.placementData as string;\r\n\r\n var pi = new PlacementInfoBox(data, true, null, null, distance);\r\n var container = document.createElement(\"div\");\r\n container.classList.add(\"audit_zone_placement\");\r\n container.appendChild(pi.container);\r\n this.placement_container.appendChild(container);\r\n\r\n container.addEventListener(\"click\", () => {\r\n if (this.callback) {\r\n this.callback(pi.id, data);\r\n this.close();\r\n }\r\n });\r\n });\r\n }\r\n\r\n bound = false;\r\n\r\n async open(callback: (placementId: number, placementData: string) => any) {\r\n this.callback = callback;\r\n this.open_select_type();\r\n\r\n\r\n if (!this.bound) {\r\n barcodeListener.on(\"sp\", this.scanPlacement, this);\r\n barcodeListener.on(null, this.scanBarcode, this);\r\n this.bound = true;\r\n }\r\n }\r\n\r\n close() {\r\n if (this.bound) {\r\n barcodeListener.off(\"sp\", this.scanPlacement);\r\n barcodeListener.off(null, this.scanBarcode);\r\n this.bound = false;\r\n }\r\n super.close();\r\n }\r\n\r\n scanPlacement(id: string) {\r\n SP.blurActive();\r\n this.open_result(parseInt(id), null);\r\n return false; //prevent default\r\n }\r\n\r\n scanBarcode(barcode: string) {\r\n SP.blurActive();\r\n itemSearchAssistant.open(null, barcode, false, itemInfo => {\r\n this.open_result(null, itemInfo.id);\r\n });\r\n return false; //prevent default\r\n }\r\n }\r\n\r\n\r\n}","\r\nnamespace TerminalApp {\r\n\r\n \r\n\r\n export class PlacementPickerAssistant {\r\n container = document.createElement(\"div\");\r\n header_html = document.createElement(\"div\");\r\n stock_menu = document.createElement(\"div\");\r\n hall_menu = document.createElement(\"div\");\r\n section_menu = document.createElement(\"div\");\r\n unit_menu = document.createElement(\"div\");\r\n placement_menu = document.createElement(\"div\");\r\n\r\n stock_suggestion_container = document.createElement(\"div\");\r\n hall_suggestion_container = document.createElement(\"div\");\r\n section_suggestion_container = document.createElement(\"div\");\r\n unit_suggestion_container = document.createElement(\"div\");\r\n placement_suggestion_container = document.createElement(\"div\");\r\n\r\n stockId: string;\r\n stockHall: SP.StockHall;\r\n stockSection: SP.StockSection;\r\n stockUnit: SP.StockUnit;\r\n stockPlacement: SP.StockPlacement;\r\n callback: (itemInfo: SP.StockPlacement) => void;\r\n constructor() {\r\n this.container.classList.add(\"assistant\");\r\n\r\n //close button\r\n var close_button = this.container.appendChild(document.createElement(\"div\"))\r\n close_button.classList.add(\"close\");\r\n close_button.innerHTML = \"X\";\r\n close_button.addEventListener(\"click\", () => {\r\n this.close();\r\n });\r\n\r\n this.container.appendChild(this.header_html);\r\n\r\n //setup stock screen\r\n var stock_headline = this.stock_menu.appendChild(document.createElement(\"h1\"));\r\n stock_headline.innerHTML = SP.Localize(\"sentance_select_stock\") + \" / \" + SP.Localize(\"sentance_scan_placement\");\r\n this.stock_menu.append(this.stock_suggestion_container);\r\n\r\n //setup hall screen\r\n var hall_headline = this.hall_menu.appendChild(document.createElement(\"h1\"));\r\n hall_headline.innerHTML = SP.Localize(\"sentance_select_hall\") + \" / \" + SP.Localize(\"sentance_scan_placement\");\r\n this.hall_menu.append(this.hall_suggestion_container);\r\n\r\n //setup section screen\r\n var section_headline = this.section_menu.appendChild(document.createElement(\"h1\"));\r\n section_headline.innerHTML = SP.Localize(\"sentance_select_section\") + \" / \" + SP.Localize(\"sentance_scan_placement\");\r\n this.section_menu.appendChild(this.section_suggestion_container);\r\n\r\n //setup unit screen\r\n var unit_headline = this.unit_menu.appendChild(document.createElement(\"h1\"));\r\n unit_headline.innerHTML = SP.Localize(\"sentance_select_unit\") + \" / \" + SP.Localize(\"sentance_scan_placement\");\r\n this.unit_menu.appendChild(this.unit_suggestion_container);\r\n\r\n //setup placement screen\r\n var placement_headline = this.placement_menu.appendChild(document.createElement(\"h1\"));\r\n placement_headline.innerHTML = SP.Localize(\"sentance_scan_tote\") + \" / \" + SP.Localize(\"sentance_scan_placement\");\r\n this.placement_menu.appendChild(this.placement_suggestion_container);\r\n\r\n this.container.appendChild(this.stock_menu);\r\n this.container.appendChild(this.hall_menu);\r\n this.container.appendChild(this.section_menu);\r\n this.container.appendChild(this.unit_menu);\r\n this.container.appendChild(this.placement_menu);\r\n }\r\n\r\n hide() {\r\n this.stock_menu.style.display = \"none\";\r\n this.hall_menu.style.display = \"none\";\r\n this.section_menu.style.display = \"none\";\r\n this.unit_menu.style.display = \"none\";\r\n this.placement_menu.style.display = \"none\";\r\n this.container.style.display = \"none\";\r\n }\r\n\r\n async open_customer_picker() {\r\n this.hide();\r\n this.container.style.display = \"block\";\r\n this.stock_menu.style.display = \"block\";\r\n let customers = await SP.Data.Customer.getCustomerInfos();\r\n this.stock_suggestion_container.innerHTML = \"\";\r\n\r\n if (customers.length == 1) return this.open_hall_picker(customers[0].stockId);\r\n customers.forEach(customer => {\r\n this.addCustomer(customer);\r\n });\r\n }\r\n\r\n async open_hall_picker(stockId: string) {\r\n this.hide();\r\n this.container.style.display = \"block\";\r\n this.hall_menu.style.display = \"block\";\r\n this.stockId = stockId;\r\n let halls = await SP.Data.Stock.getHalls(stockId);\r\n\r\n this.hall_suggestion_container.innerHTML = \"\";\r\n halls.forEach(hall => {\r\n this.addHall(hall);\r\n });\r\n }\r\n\r\n async open_section_picker(hallId: string) {\r\n this.hide();\r\n this.container.style.display = \"block\";\r\n this.section_menu.style.display = \"block\";\r\n\r\n let sections = await SP.Data.Stock.getSections(hallId);\r\n this.section_suggestion_container.innerHTML = \"\";\r\n sections.forEach(section => {\r\n this.addSection(section);\r\n });\r\n }\r\n\r\n async open_unit_picker(sectionId: string) {\r\n this.hide();\r\n this.container.style.display = \"block\";\r\n this.unit_menu.style.display = \"block\";\r\n let units = await SP.Data.Stock.getUnits(sectionId)\r\n this.unit_suggestion_container.innerHTML = \"\";\r\n units.forEach(unit => {\r\n this.addUnit(unit);\r\n });\r\n }\r\n\r\n async open_placement_picker(unitId: string) {\r\n this.hide();\r\n this.container.style.display = \"block\";\r\n this.placement_menu.style.display = \"block\";\r\n let placements = await SP.Data.Stock.getPlacements(unitId)\r\n this.placement_suggestion_container.innerHTML = \"\";\r\n placements.forEach(placement => {\r\n this.addPlacement(placement);\r\n });\r\n }\r\n\r\n clear() {\r\n this.hall_suggestion_container.innerHTML = \"\";\r\n this.section_suggestion_container.innerHTML = \"\";\r\n this.unit_suggestion_container.innerHTML = \"\";\r\n this.placement_suggestion_container.innerHTML = \"\";\r\n this.container.style.display = \"none\";\r\n }\r\n\r\n bound: boolean = false;\r\n\r\n async open(customerId: string, headerHtml: string, callback: (placementInfo: SP.StockPlacement) => void) {\r\n this.header_html.innerHTML = \"\";\r\n if (headerHtml) this.header_html.innerHTML = headerHtml;\r\n\r\n\r\n if (!this.bound) {\r\n this.bound = true;\r\n barcodeListener.on(\"sp\", this.scanStockPlacement, this);\r\n barcodeListener.on(\"t\", this.scanTote, this);\r\n }\r\n\r\n this.clear();\r\n\r\n this.callback = callback;\r\n if (customerId) {\r\n var ci = await SP.Data.Customer.getCustomerInfo(customerId);\r\n this.open_hall_picker(ci.stockId);\r\n }\r\n else {\r\n this.open_customer_picker();\r\n }\r\n }\r\n\r\n\r\n\r\n close() {\r\n if (this.bound) {\r\n this.bound = false;\r\n barcodeListener.off(\"sp\", this.scanStockPlacement);\r\n barcodeListener.off(\"t\", this.scanTote);\r\n }\r\n this.clear();\r\n this.container.style.display = \"none\";\r\n }\r\n\r\n scanStockPlacement(locationId: string) {\r\n SP.Data.Stock.getPlacementInfo(parseInt(locationId), false).then((item) => {\r\n if (item) {\r\n if (this.callback) this.callback(item.placement);\r\n this.close();\r\n }\r\n else {\r\n SP.alertX(\"stockplacement not found!\");\r\n }\r\n });\r\n \r\n return false;\r\n }\r\n\r\n addCustomer(item: SP.CustomerInfo) {\r\n var c = this.stock_suggestion_container.appendChild(document.createElement(\"div\"))\r\n c.classList.add(\"btn\", \"noselect\");\r\n c.innerHTML = `
${item.customerName}
`;\r\n c.addEventListener(\"click\", () => {\r\n this.stockId = item.stockId;\r\n this.open_hall_picker(this.stockId);\r\n });\r\n }\r\n\r\n\r\n addHall(item: SP.StockHall) {\r\n var c = this.hall_suggestion_container.appendChild(document.createElement(\"div\"))\r\n c.classList.add(\"btn\", \"noselect\");\r\n c.innerHTML = `
${SP.Localize(\"word_hall\")} ${item.name}
`;\r\n c.addEventListener(\"click\", () => {\r\n this.stockHall = item;\r\n this.open_section_picker(item.id);\r\n });\r\n }\r\n\r\n addSection(item: SP.StockSection) {\r\n var c = this.section_suggestion_container.appendChild(document.createElement(\"div\"))\r\n c.classList.add(\"btn\", \"noselect\");\r\n c.innerHTML = `
${SP.Localize(\"word_section\")} ${item.name}
`;\r\n c.addEventListener(\"click\", () => {\r\n this.stockSection = item;\r\n this.open_unit_picker(item.id);\r\n });\r\n }\r\n\r\n addUnit(item: SP.StockUnit) {\r\n var c = this.unit_suggestion_container.appendChild(document.createElement(\"div\"))\r\n c.classList.add(\"btn\", \"noselect\");\r\n c.innerHTML = `
${this.stockSection.name} ${item.number.toString().padStart(2, \"0\")}
`;\r\n c.addEventListener(\"click\", () => {\r\n this.stockUnit = item;\r\n this.open_placement_picker(item.id);\r\n });\r\n }\r\n\r\n addPlacement(item: SP.StockPlacement) {\r\n var c = this.placement_suggestion_container.appendChild(document.createElement(\"div\"))\r\n c.classList.add(\"btn\", \"noselect\");\r\n\r\n var value = `${item.row.toString().padStart(2, \"0\")} - ${item.number.toString().padStart(2, \"0\")}`;\r\n\r\n if (item.sub) value += ` (${item.sub.toString().padStart(2, \"0\")})`;\r\n\r\n c.innerHTML = `
${value}
`;\r\n if (item.row !== undefined)\r\n c.addEventListener(\"click\", () => {\r\n console.log(\"CLICK\", item);\r\n if (this.callback) this.callback(item);\r\n this.close();\r\n });\r\n }\r\n\r\n scanTote(toteId: string) {\r\n SP.Data.Tote.getToteInfo(toteId, false).then((t) => {\r\n if (t) {\r\n this.scanStockPlacement(t.totePlacementId.toString());\r\n }\r\n });\r\n return false;\r\n }\r\n }\r\n\r\n export class ToteAndPlacementPickerAssistant extends PlacementPickerAssistant {\r\n tote_menu = document.createElement(\"div\");\r\n tote_container = document.createElement(\"div\");\r\n tote_placeholder = document.createElement(\"div\");\r\n tote_ids: number[] = [];\r\n\r\n constructor() {\r\n super();\r\n //setup stock screen\r\n var tote_headline = this.tote_menu.appendChild(document.createElement(\"h1\"));\r\n tote_headline.innerHTML = SP.Localize(\"sentance_scan_totes\");\r\n this.tote_menu.append(this.tote_container);\r\n this.container.prepend(this.tote_menu);\r\n this.tote_placeholder.style.textAlign = \"center\";\r\n this.tote_placeholder.innerHTML = \"

\"\r\n this.tote_menu.append(this.tote_placeholder);\r\n\r\n \r\n }\r\n\r\n clearTotes() {\r\n this.tote_container.innerHTML = \"\";\r\n this.tote_ids = [];\r\n this.tote_placeholder.style.display = \"block\";\r\n }\r\n\r\n async openWithTotes(toteIds: number[], stockId: string, cb: (placementInfo: SP.StockPlacement) => void) {\r\n this.clearTotes();\r\n //this.tote_ids = toteIds;\r\n\r\n await super.open(stockId, null, cb);\r\n\r\n var toteInfos = await SP.Data.Tote.getToteInfos(toteIds, false);\r\n toteInfos.forEach(ti => this.addTote(ti));\r\n\r\n }\r\n\r\n\r\n addTote(t: SP.ToteInfo) {\r\n if (this.tote_ids.indexOf(t.toteId) != -1) return;\r\n\r\n this.tote_ids.push(t.toteId);\r\n var box = new ToteBox(t);\r\n box.container.addEventListener(\"click\", () => {\r\n console.log(\"removing tote \" + t.toteId);\r\n this.tote_ids.splice(this.tote_ids.indexOf(t.toteId), 1);\r\n box.container.remove();\r\n if (!this.tote_ids.length) this.tote_placeholder.style.display = \"block\";\r\n });\r\n\r\n\r\n this.tote_container.append(box.container);\r\n this.tote_placeholder.style.display = \"none\";\r\n\r\n\r\n\r\n }\r\n\r\n\r\n close() {\r\n super.close();\r\n this.clear();\r\n this.container.style.display = \"none\";\r\n }\r\n\r\n scanTote(toteId: string) {\r\n SP.Data.Tote.getToteInfo(toteId, false).then((t) => {\r\n if (t) {\r\n this.addTote(t);\r\n }\r\n else {\r\n SP.alertX(\"tote not found!\");\r\n }\r\n });\r\n return false;\r\n }\r\n }\r\n}","/// \r\n\r\nnamespace TerminalApp {\r\n export class PlacementShortcutAssistant extends PickAssistant {\r\n pi: PlacementInfoBox;\r\n header = document.createElement(\"div\");\r\n itemInfo: SP.ItemInfo;\r\n constructor() {\r\n super(SP.Localize(\"word_placement\") + \" \" + SP.Localize(\"word_shortcuts\"));\r\n\r\n this.dm_active_container.prepend(this.header);\r\n this.header.classList.add(\"btn\");\r\n\r\n\r\n //Audit button1\r\n this.addItem(null, true, SP.Localize(\"sentance_stock_audit\"), SP.Localize(\"description_audit_placement\"), \"fa-solid fa-calculator\", \"black\", async () => {\r\n SP.setAllHash({ \"app\": \"app_audit_stock\", \"placementId\": this.pi.id.toString() });\r\n this.close();\r\n });\r\n\r\n //Audit button2\r\n this.addItem(null, true, SP.Localize(\"sentance_placement_audit\"), SP.Localize(\"description_audit_placement\"), \"fa-solid fa-calculator\", \"black\", async () => {\r\n SP.setAllHash({ \"app\": \"app_audit_placement\", \"placementId\": this.pi.id.toString() });\r\n this.close();\r\n });\r\n\r\n //Audit button2\r\n this.addItem(null, true, SP.Localize(\"sentance_move_from_placement\"), SP.Localize(\"description_move_from_placement\"), \"fa-solid fa-arrow-turn-down-right\", \"black\", async () => {\r\n SP.setAllHash({ \"app\": \"app_move_stock\", \"placementId\": this.pi.id.toString(), \"filter\": this.itemInfo ? this.itemInfo.sku : \"\" });\r\n this.close();\r\n });\r\n }\r\n\r\n async open_with_data(data: string, itemInfo: SP.ItemInfo) {\r\n this.itemInfo = itemInfo;\r\n this.pi = new PlacementInfoBox(data, true, itemInfo);\r\n this.header.innerHTML = \"\";\r\n this.header.appendChild(this.pi.container);\r\n super.open(null);\r\n }\r\n\r\n async open_with_id(id: number) {\r\n let pi = await SP.Data.Stock.getPlacementInfo(id);\r\n this.open_with_data(pi.data, null);\r\n }\r\n }\r\n}","/// \r\n\r\nnamespace TerminalApp {\r\n\r\n\r\n export class PrinterPickAssistant extends Assistant {\r\n bc_menu = document.createElement(\"div\");\r\n submit_button: HTMLElement;\r\n submit_button_text: HTMLElement;\r\n callback: () => void;\r\n constructor() {\r\n super();\r\n this.bc_menu.innerHTML = `\r\n

${SP.Localize(\"text_print_all_label_headline\")}

\r\n
\r\n
\r\n
\r\n `; \r\n\r\n this.submit_button = this.bc_menu.querySelector(\".btn\");\r\n this.submit_button_text = this.submit_button.querySelector(\".action\");\r\n this.submit_button.addEventListener(\"click\", () => {\r\n this.callback();\r\n this.close();\r\n });\r\n\r\n this.container.appendChild(this.bc_menu);\r\n }\r\n\r\n\r\n hide() {\r\n this.bc_menu.style.display = \"none\";\r\n }\r\n\r\n open_bc() {\r\n this.hide();\r\n this.container.style.display = \"block\";\r\n this.bc_menu.style.display = \"block\";\r\n }\r\n\r\n clear() {\r\n //clear home buttons\r\n this.container.style.display = \"none\";\r\n }\r\n\r\n bound = false;\r\n\r\n async open(closeBtnText: string, callback: () => void) {\r\n\r\n\r\n this.submit_button_text.innerHTML = closeBtnText;\r\n\r\n this.callback = callback;\r\n this.open_bc();\r\n\r\n\r\n if (!this.bound) {\r\n barcodeListener.on(\"print\", this.scanPrinter, this);\r\n this.bound = true;\r\n }\r\n }\r\n\r\n\r\n\r\n\r\n close() {\r\n if (this.bound) {\r\n barcodeListener.off(null, this.scanPrinter);\r\n this.bound = false;\r\n }\r\n super.close();\r\n }\r\n\r\n scanPrinter(printerName: string) {\r\n selectPrinter(printerName);\r\n this.submit_button.click();\r\n return false;\r\n }\r\n }\r\n\r\n\r\n}","/// \r\n\r\nnamespace TerminalApp {\r\n\r\n\r\n export class PurchaseLineAssistant extends Assistant {\r\n inner = document.createElement(\"div\");\r\n result_container = document.createElement(\"div\");\r\n header = document.createElement(\"div\");\r\n initialized = false;\r\n callback: (id: SP.PurchaseOrderLineInfo) => void;\r\n selectedLine: SP.PurchaseOrderLineInfo;\r\n constructor() {\r\n super();\r\n this.header.innerHTML = `\r\n

${SP.Localize(\"sentance_pick_purchase_line\")}

\r\n `;\r\n //setup sender screen\r\n this.inner.appendChild(this.header);\r\n this.inner.append(this.result_container);\r\n this.container.appendChild(this.inner);\r\n }\r\n\r\n clear() {\r\n this.selectedLine = null;\r\n this.result_container.innerHTML = \"\";\r\n this.result_container.style.display = \"none\";\r\n }\r\n\r\n\r\n async open(lines: SP.PurchaseOrderLineInfo[]) {\r\n await this.clear();\r\n this.result_container.innerHTML = \"\";\r\n this.container.style.display = \"block\";\r\n\r\n\r\n\r\n for (let i = 0; i < lines.length; i++) {\r\n let t = lines[i];\r\n this.addLineButton(t);\r\n }\r\n\r\n this.result_container.style.display = \"block\";\r\n\r\n await SP.Sounds.Notification.play();\r\n //await SP.sleep(500);\r\n Talk(SP.Localize(\"sentance_multiple_purchase_order_lines_found\"));\r\n\r\n // Promise is created only for the close operation.\r\n return new Promise((callback, reject) => {\r\n this.callback = callback; \r\n return 1;\r\n });\r\n }\r\n\r\n\r\n close() {\r\n // When close is called, resolve the Promise.\r\n if (this.callback) {\r\n this.callback(this.selectedLine);\r\n this.callback = null;\r\n }\r\n\r\n super.close();\r\n }\r\n\r\n addLineButton(data: SP.PurchaseOrderLineInfo) {\r\n var c = this.result_container.appendChild(document.createElement(\"div\"))\r\n c.classList.add(\"btn\", \"noselect\");\r\n\r\n var action = c.appendChild(document.createElement(\"span\"));\r\n action.classList.add(\"action\");\r\n action.innerHTML = \"\" + data.loc + \"\";\r\n\r\n c.addEventListener(\"click\", () => {\r\n this.selectedLine = data;\r\n this.close();\r\n });\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n}","/// \r\n\r\nnamespace TerminalApp {\r\n export class QuickAuditAssistant extends Assistant {\r\n qa_menu = document.createElement(\"div\");\r\n additional_container: HTMLElement;\r\n placement_quantity_input: HTMLInputElement;\r\n submit_button: HTMLElement;\r\n max_qty: HTMLElement;\r\n product_image: HTMLImageElement;\r\n product_info: HTMLElement;\r\n minus_btn: HTMLElement;\r\n plus_btn: HTMLElement;\r\n placement_info_box: HTMLElement;\r\n\r\n constructor() {\r\n super();\r\n this.qa_menu.innerHTML = `\r\n
\r\n

${SP.Localize(\"sentance_stock_audit\")}

\r\n
\r\n
\r\n
\r\n
\r\n\r\n
\r\n
\r\n
/ 2
\r\n
\r\n
\r\n\r\n
${SP.Localize(\"word_confirm\")}
\r\n
`; \r\n\r\n this.product_image = this.qa_menu.querySelector(\".product_image\");\r\n this.max_qty = this.qa_menu.querySelector(\".max_qty\");\r\n this.product_info = this.qa_menu.querySelector(\".product_info\");\r\n this.placement_quantity_input = this.qa_menu.querySelector(\".placement_quantity\");\r\n this.minus_btn = this.qa_menu.querySelector(\".minus\");\r\n this.plus_btn = this.qa_menu.querySelector(\".plus\");\r\n this.placement_info_box = this.qa_menu.querySelector(\".placement_info_box\");\r\n\r\n this.submit_button = this.qa_menu.querySelector(\".btn\");\r\n this.submit_button.addEventListener(\"click\", async () => {\r\n var counted_qty = parseFloat(this.placement_quantity_input.value);\r\n var regulation = counted_qty - this.placementQuantity;\r\n\r\n var regulations = {} as any;\r\n regulations[this.item.id] = regulation;\r\n\r\n var data = {\r\n itemRegulations: regulations,\r\n placementId: this.placementId,\r\n note: \"\",\r\n reason: SP.AuditReason.StockAudit\r\n };\r\n\r\n var result = await SP.post(\"/api/v1/audit/commit/\", data);\r\n SP.Sounds.Success.play();\r\n this.close();\r\n });\r\n\r\n this.placement_quantity_input.addEventListener(\"keydown\", (e) => {\r\n\r\n if (e.which == 13) this.submit_button.click();\r\n });\r\n\r\n this.plus_btn.addEventListener(\"click\", () => {\r\n \r\n });\r\n\r\n SP.bindClickHold(this.plus_btn, 500, () => {\r\n var n = parseFloat(this.placement_quantity_input.value);\r\n this.placement_quantity_input.value = (n + 1).toString();\r\n }, () => {\r\n this.placement_quantity_input.value = this.max_qty.innerText;\r\n })\r\n\r\n SP.bindClickHold(this.minus_btn, 500, () => {\r\n var n = parseFloat(this.placement_quantity_input.value);\r\n this.placement_quantity_input.value = Math.max(0, n - 1).toString();\r\n }, () => {\r\n this.placement_quantity_input.value = \"0\";\r\n })\r\n\r\n this.container.appendChild(this.qa_menu);\r\n }\r\n\r\n hide() {\r\n this.qa_menu.style.display = \"none\";\r\n }\r\n\r\n open_qa() {\r\n this.hide();\r\n this.container.style.display = \"block\";\r\n this.qa_menu.style.display = \"block\";\r\n }\r\n\r\n clear() {\r\n //clear home buttons\r\n this.container.style.display = \"none\";\r\n }\r\n\r\n item: SP.ItemInfo;\r\n placementId: number;\r\n placementQuantity: number;\r\n\r\n // Define a new class property for storing the Promise resolve function.\r\n resolveOnClose: () => void;\r\n\r\n async open(slInfo: SP.StockingLotInfo) {\r\n SP.Sounds.Notification.play();\r\n this.placementQuantity = 0;\r\n this.placementId = slInfo.stockPlacementId;\r\n this.item = slInfo.item;\r\n\r\n \r\n\r\n this.product_info.innerHTML = `${this.item.description}
${this.item.sku}
${Object.keys(this.item.allBarcodes).join(\", \")} `\r\n this.product_image.src = this.item.imageUrl;\r\n\r\n //show placement\r\n var piBox = new PlacementInfoBox(slInfo.stockPlacementData, true, this.item);\r\n piBox.container.style.margin = \"auto\";\r\n this.placement_info_box.innerHTML = \"\";\r\n this.placement_info_box.append(piBox.container);\r\n\r\n //getTotalPlacemnetQty\r\n var placementLots = await SP.Data.StockingLot.getPlacementStockingLotInfos(this.placementId);\r\n placementLots.forEach(l => {\r\n if (l.item.id == this.item.id) {\r\n this.placementQuantity += l.placementQuantity;\r\n }\r\n });\r\n\r\n this.max_qty.innerHTML = this.placementQuantity.toString();\r\n this.placement_quantity_input.value = this.placementQuantity.toString();\r\n\r\n // Promise is created only for the close operation.\r\n return new Promise((resolve, reject) => {\r\n this.resolveOnClose = resolve; // This line has no TypeScript errors now\r\n this.open_qa();\r\n });\r\n }\r\n\r\n\r\n close() {\r\n // When close is called, resolve the Promise.\r\n if (this.resolveOnClose) {\r\n this.resolveOnClose();\r\n }\r\n super.close();\r\n }\r\n\r\n }\r\n\r\n\r\n}","namespace TerminalApp {\r\n\r\n export class RefundBundleParent {\r\n refundBundleBalanceLine: SP.RefundBundleBalanceLine;\r\n maxBalance: number;\r\n currentBalance: number;\r\n children: RefundBundleChild[] = [];\r\n\r\n constructor(refundBundleBalanceLine: SP.RefundBundleBalanceLine) {\r\n this.refundBundleBalanceLine = refundBundleBalanceLine;\r\n this.maxBalance = refundBundleBalanceLine.balance;\r\n }\r\n\r\n updateAllChildrenBalance() {\r\n let currentBalance = this.maxBalance;\r\n for (var i = 0; i < this.children.length; i++) {\r\n\r\n let thisInputValue = this.children[i].input.value;\r\n if (thisInputValue.length == 0) {\r\n thisInputValue = \"0\";\r\n }\r\n\r\n currentBalance -= parseFloat(thisInputValue);\r\n this.currentBalance = currentBalance;\r\n }\r\n\r\n for (var i = 0; i < this.children.length; i++) {\r\n this.children[i].balanceContainer.innerHTML = currentBalance.toString();\r\n }\r\n }\r\n\r\n addChild(refundBundleChild: RefundBundleChild) {\r\n this.children.push(refundBundleChild);\r\n }\r\n }\r\n\r\n\r\n export class RefundBundleChild {\r\n container: HTMLElement = document.createElement(\"div\");\r\n parent: RefundBundleParent;\r\n input: HTMLInputElement;\r\n balanceContainer: HTMLElement;\r\n warningSpan: HTMLElement;\r\n\r\n updatedLine: SP.UpdatedRefundLine;\r\n\r\n constructor(refundLine: SP.RefundLineInfo, parent: RefundBundleParent, updatedLine: SP.UpdatedRefundLine) {\r\n this.parent = parent;\r\n this.updatedLine = updatedLine;\r\n\r\n this.container.innerHTML = `\r\n\r\n
\r\n\r\n
\r\n
\r\n \r\n
\r\n
\r\n\r\n ${refundLine.orderLine.description}\r\n\r\n
\r\n ${SP.Localize(\"word_quantity\")}: ${refundLine.qty}\r\n
\r\n \r\n
\r\n ${SP.Localize(\"word_balance\")}: ${parent.refundBundleBalanceLine.balance}\r\n
\r\n
\r\n
\r\n \r\n \r\n\r\n
\r\n\r\n `;\r\n\r\n this.input = this.container.querySelector(\".refundBundleInput\") as HTMLInputElement;\r\n this.balanceContainer = this.container.querySelector(\".returnRefund-itemInfo-balance-span\") as HTMLElement;\r\n this.warningSpan = this.container.querySelector(\".refundBundleInput-warning\") as HTMLElement;\r\n\r\n this.input.addEventListener(\"input\", (event) => {\r\n let thisTarget = event.target as HTMLInputElement;\r\n\r\n let inputValue = thisTarget.value;\r\n if (thisTarget.value.length == 0) {\r\n inputValue = \"0\";\r\n }\r\n\r\n this.updatedLine.price = parseFloat(inputValue);\r\n this.parent.updateAllChildrenBalance();\r\n });\r\n }\r\n }\r\n\r\n\r\n export class RefundBundleAssistant extends Assistant {\r\n static instance: App_Return;\r\n\r\n main_container: HTMLElement;\r\n\r\n refundInfo: SP.RefundInfo;\r\n refundLines: SP.UpdatedRefundLine[];\r\n updatedLines: SP.UpdatedRefundLine[];\r\n refundBundleBalanceLines: SP.RefundBundleBalanceLine[];\r\n\r\n refundParents: { [id: string]: RefundBundleParent } = {};\r\n\r\n callback: (updatedRefundLines: SP.UpdatedRefundLine[]) => void;\r\n\r\n constructor() {\r\n super();\r\n this.container.classList.add(\"assistant\");\r\n\r\n this.refundLines = []; \r\n\r\n this.container.addEventListener(\"click\", (event) => {\r\n let thisTarget = event.target as HTMLElement;\r\n\r\n this.refundLines = [];\r\n\r\n if (thisTarget.classList.contains(\"refundBundle-confirm-btn\")) {\r\n\r\n let balanceIsNegative = false;\r\n\r\n for (let key in this.refundParents) {\r\n let thisParent = this.refundParents[key];\r\n\r\n let thisParentBalanceIsNegative = false;;\r\n\r\n if (thisParent.currentBalance < 0) {\r\n balanceIsNegative = true;\r\n thisParentBalanceIsNegative = true;\r\n }\r\n\r\n thisParent.children.forEach((child) => {\r\n\r\n if (thisParentBalanceIsNegative) {\r\n child.warningSpan.style.display = \"block\";\r\n }\r\n\r\n if (!balanceIsNegative) {\r\n this.refundLines.push(child.updatedLine);\r\n }\r\n });\r\n }\r\n\r\n if (balanceIsNegative) {\r\n return;\r\n }\r\n\r\n if (this.callback) {\r\n this.callback(this.refundLines);\r\n }\r\n\r\n this.close();\r\n return;\r\n }\r\n });\r\n }\r\n\r\n initialize() {\r\n this.main_container = document.createElement(\"div\");\r\n this.main_container.style.marginTop = \"80px\";\r\n\r\n this.refundBundleBalanceLines.forEach(d => {\r\n this.refundParents[d.orderLineId] = new RefundBundleParent(d);\r\n });\r\n\r\n let updatedLinesIsEmpty = true;\r\n if (this.updatedLines.length != 0) {\r\n updatedLinesIsEmpty = false;\r\n }\r\n\r\n for (var i = 0; i < this.refundInfo.lines.length; i++) {\r\n let line = this.refundInfo.lines[i];\r\n\r\n if (line.orderLine.bundleParent == null || line.orderLine.bundleParent == \"\") {\r\n continue\r\n }\r\n\r\n if (updatedLinesIsEmpty) {\r\n this.updatedLines.push({\r\n refundId: this.refundInfo.refundId,\r\n refundLineId: line.id,\r\n price: 0,\r\n });\r\n }\r\n\r\n let thisUpdatedLineIndex = this.updatedLines.findIndex((x) => x.refundLineId == line.id);\r\n\r\n let parent = this.refundParents[line.orderLine.bundleParent];\r\n if (parent) { \r\n let refundChild = new RefundBundleChild(line, parent, this.updatedLines[thisUpdatedLineIndex]);\r\n parent.addChild(refundChild);\r\n this.main_container.appendChild(refundChild.container);\r\n }\r\n\r\n parent.updateAllChildrenBalance();\r\n }\r\n\r\n var button = document.createElement(\"div\");\r\n button.innerHTML = ``;\r\n this.main_container.appendChild(button);\r\n this.container.appendChild(this.main_container);\r\n }\r\n\r\n\r\n async open(callback: (updatedRefundLines: SP.UpdatedRefundLine[]) => void, refundInfo: SP.RefundInfo, updatedLines: SP.UpdatedRefundLine[], refundBundleBalanceLines: SP.RefundBundleBalanceLine[]) {\r\n this.refundInfo = refundInfo;\r\n this.updatedLines = updatedLines;\r\n this.refundBundleBalanceLines = refundBundleBalanceLines;\r\n\r\n this.callback = callback;\r\n\r\n this.initialize();\r\n\r\n this.container.style.display = \"block\";\r\n }\r\n\r\n close() {\r\n super.close();\r\n this.clear();\r\n }\r\n\r\n clear() {\r\n this.main_container.innerHTML = \"\";\r\n this.refundInfo = null;\r\n this.refundLines = [];\r\n this.updatedLines = [];\r\n this.refundBundleBalanceLines = [];\r\n this.refundParents = {};\r\n }\r\n\r\n }\r\n}","\r\nnamespace TerminalApp {\r\n\r\n class SerialNumberModel {\r\n Id: string;\r\n itemInfo: SP.ItemInfo;\r\n ShipmentLineData: SP.ShipmentLineData;\r\n }\r\n\r\n export class SerialNumberAssistant extends Assistant {\r\n sn_menu = document.createElement(\"div\");\r\n\r\n scansDoneText: HTMLElement;\r\n scansLeftText: HTMLElement;\r\n\r\n imageElement: HTMLImageElement;\r\n titleText: HTMLElement;\r\n inputElement: HTMLInputElement;\r\n errorElement: HTMLElement;\r\n\r\n nextBtn: HTMLElement;\r\n backBtn: HTMLElement;\r\n\r\n bound = false;\r\n runUpdateOnClose = true;\r\n\r\n scansDoneNumber: number = 0;\r\n\r\n shipmentId: string;\r\n serialNumberArray: SerialNumberModel[] = [];\r\n\r\n callback: () => void;\r\n\r\n constructor() {\r\n super();\r\n\r\n this.initialize();\r\n\r\n // Back btn click\r\n this.backBtn.addEventListener(\"click\", () => {\r\n this.clickBackFunction();\r\n });\r\n\r\n // Next btn click\r\n this.nextBtn.addEventListener(\"click\", () => {\r\n this.clickNextFunction();\r\n })\r\n\r\n this.inputElement.addEventListener(\"keydown\", (e) => {\r\n if (e.key == \"Enter\") {\r\n this.nextFunction();\r\n }\r\n });\r\n }\r\n\r\n hide() {\r\n this.sn_menu.style.display = \"none\";\r\n }\r\n\r\n sn_open() {\r\n this.hide();\r\n\r\n this.loadModalData();\r\n\r\n this.container.style.display = \"block\";\r\n this.sn_menu.style.display = \"block\";\r\n }\r\n\r\n async open(serialNumberArray: SerialNumberModel[], shipmentId: string, callback: () => void) {\r\n this.reset();\r\n\r\n if (!this.bound) {\r\n this.bound = true;\r\n barcodeListener.on(null, this.scanSerialNumber, this);\r\n }\r\n\r\n this.callback = callback;\r\n\r\n this.shipmentId = shipmentId;\r\n this.serialNumberArray = serialNumberArray;\r\n\r\n this.sn_open();\r\n }\r\n\r\n async close() {\r\n if (this.bound) {\r\n this.bound = false;\r\n barcodeListener.off(null, this.scanSerialNumber);\r\n }\r\n\r\n if (!this.validateAndAdd(false)) {\r\n return;\r\n }\r\n\r\n if (this.runUpdateOnClose) {\r\n await this.updateShipmentDataLine(false);\r\n }\r\n\r\n this.callback();\r\n\r\n this.reset();\r\n this.clear();\r\n super.close();\r\n }\r\n\r\n reset() {\r\n this.titleText.innerText = \"\";\r\n this.imageElement.src = \"/images/noimage/noimage.jpg\";\r\n this.inputElement.value = \"\";\r\n this.inputElement.classList.remove(\"serialNumber-input-error\");\r\n\r\n this.errorElement.innerText = \"\";\r\n }\r\n\r\n clear() {\r\n this.runUpdateOnClose = true;\r\n this.scansDoneNumber = 0;\r\n this.shipmentId = null;\r\n this.serialNumberArray = [];\r\n }\r\n\r\n scanSerialNumber(serialNumber:string) {\r\n this.inputElement.value = serialNumber;\r\n }\r\n\r\n clickNextFunction() {\r\n this.nextFunction();\r\n }\r\n\r\n clickBackFunction() {\r\n\r\n if (this.scansDoneNumber != 0) {\r\n\r\n if (!this.validateAndAdd(true)) {\r\n return;\r\n }\r\n\r\n this.scansDoneNumber -= 1;\r\n\r\n this.loadModalData();\r\n return;\r\n }\r\n }\r\n\r\n loadModalData() {\r\n this.reset();\r\n\r\n this.scansDoneText.innerText = (this.scansDoneNumber + 1).toString();\r\n this.scansLeftText.innerText = this.serialNumberArray.length.toString();\r\n this.titleText.innerText = this.serialNumberArray[this.scansDoneNumber].itemInfo.description;\r\n this.imageElement.src = this.serialNumberArray[this.scansDoneNumber].itemInfo.imageUrl;\r\n this.inputElement.value = this.serialNumberArray[this.scansDoneNumber].ShipmentLineData?.value ?? \"\";\r\n }\r\n\r\n nextFunction() {\r\n if (this.scansDoneNumber != this.serialNumberArray.length) {\r\n\r\n if (!this.validateAndAdd(false)) {\r\n return;\r\n }\r\n\r\n if (this.scansDoneNumber === this.serialNumberArray.length - 1) {\r\n this.runUpdateOnClose = false;\r\n this.updateShipmentDataLine(true);\r\n }\r\n\r\n if (this.scansDoneNumber != this.serialNumberArray.length - 1) {\r\n this.scansDoneNumber += 1;\r\n }\r\n\r\n this.loadModalData();\r\n return;\r\n }\r\n }\r\n\r\n validateAndAdd(allowEmptyInput:boolean) {\r\n if (!allowEmptyInput && this.inputElement.value.length == 0) {\r\n this.inputElement.classList.add(\"serialNumber-input-error\");\r\n this.errorElement.innerText = SP.Localize(\"sentance_you_must_fill_in_the_field\");\r\n return false;\r\n }\r\n else if (this.validateSerialNumber()) {\r\n this.inputElement.classList.add(\"serialNumber-input-error\");\r\n this.errorElement.innerText = SP.Localize(\"sentance_serial_number_already_in_use\");\r\n\r\n return false;\r\n }\r\n\r\n if (this.serialNumberArray[this.scansDoneNumber].ShipmentLineData == null) {\r\n this.serialNumberArray[this.scansDoneNumber].ShipmentLineData = {\r\n id: SP.Guid.Empty,\r\n type: SP.ShipmentLineDataType.SerialNumber,\r\n value: this.inputElement.value.trim()\r\n }\r\n }\r\n else if (this.serialNumberArray[this.scansDoneNumber].ShipmentLineData.value != this.inputElement.value) {\r\n this.serialNumberArray[this.scansDoneNumber].ShipmentLineData = {\r\n id: this.serialNumberArray[this.scansDoneNumber].ShipmentLineData.id,\r\n type: SP.ShipmentLineDataType.SerialNumber,\r\n value: this.inputElement.value.trim()\r\n }\r\n }\r\n\r\n return true;\r\n }\r\n\r\n // Check if the serialnumber already exist in the array\r\n validateSerialNumber() {\r\n let inputValue = this.inputElement.value.trim();\r\n\r\n for (var i = 0; i < this.serialNumberArray.length; i++) {\r\n\r\n let isNull = false;\r\n if (this.serialNumberArray[i].ShipmentLineData == null) {\r\n isNull = true;\r\n }\r\n\r\n if (!isNull && i == this.scansDoneNumber && this.serialNumberArray[i].ShipmentLineData.value === this.serialNumberArray[this.scansDoneNumber].ShipmentLineData.value) {\r\n continue;\r\n }\r\n\r\n if (!isNull && this.serialNumberArray[i].Id === this.serialNumberArray[this.scansDoneNumber].Id && this.serialNumberArray[i].ShipmentLineData.value === inputValue) {\r\n return true;\r\n }\r\n }\r\n\r\n return false;\r\n }\r\n\r\n async updateShipmentDataLine(close:boolean) {\r\n\r\n let postArray = [];\r\n\r\n for (var i = 0; i < this.serialNumberArray.length; i++) {\r\n\r\n if (this.serialNumberArray[i].ShipmentLineData != null) {\r\n let thisId = null;\r\n\r\n if (this.serialNumberArray[i].ShipmentLineData.id != null) {\r\n thisId = this.serialNumberArray[i].ShipmentLineData.id;\r\n }\r\n\r\n var postData = {\r\n Id: thisId,\r\n ShipmentLineId: this.serialNumberArray[i].Id,\r\n Type: SP.ShipmentLineDataType.SerialNumber,\r\n Value: this.serialNumberArray[i].ShipmentLineData.value\r\n }\r\n\r\n postArray.push(postData);\r\n }\r\n }\r\n\r\n let result = await SP.post(\"/api/v1/shipment/updateshipmentlinedata/\", postArray);\r\n\r\n if (result.status == 200) {\r\n if (close) {\r\n this.close();\r\n }\r\n }\r\n else {\r\n console.log(result.status);\r\n console.log(\"Error\");\r\n await SP.alertX(\"Error\");\r\n }\r\n\r\n }\r\n\r\n initialize() {\r\n\r\n this.sn_menu.innerHTML = `\r\n
\r\n\r\n

1/4

\r\n\r\n
\r\n
\r\n \r\n
\r\n\r\n

\r\n\r\n
\r\n\r\n
\r\n

${SP.Localize(\"sentence_scan_or_type_serial_number\")}

\r\n \r\n \r\n
\r\n\r\n
\r\n\r\n \r\n
\r\n
\r\n `;\r\n\r\n this.scansDoneText = this.sn_menu.querySelector(\".serialNumber-scansDone\");\r\n this.scansLeftText = this.sn_menu.querySelector(\".serialNumber-scansLeft\");\r\n\r\n this.imageElement = this.sn_menu.querySelector(\".serialNumber-image\");\r\n this.titleText = this.sn_menu.querySelector(\".serialNumber-name-text\");\r\n this.inputElement = this.sn_menu.querySelector(\".serialNumber-input\");\r\n this.errorElement = this.sn_menu.querySelector(\".serialNumber-error\");\r\n\r\n this.backBtn = this.sn_menu.querySelector(\".serialNumber-btns-back\");\r\n this.nextBtn = this.sn_menu.querySelector(\".serialNumber-btns-done\");\r\n\r\n this.container.appendChild(this.sn_menu);\r\n }\r\n\r\n }\r\n}","/// \r\n\r\nnamespace TerminalApp {\r\n\r\n\r\n export class ToteAssistant extends Assistant {\r\n inner = document.createElement(\"div\");\r\n group_result_container = document.createElement(\"div\");\r\n tote_result_container = document.createElement(\"div\");\r\n headline = document.createElement(\"h1\");\r\n initialized = false;\r\n callback: (toteId: number) => void;\r\n showOnlyFree: boolean;\r\n\r\n\r\n constructor() {\r\n super();\r\n\r\n //setup sender screen\r\n this.inner.appendChild(this.headline);\r\n\r\n this.group_result_container.style.position = \"absolute\";\r\n this.group_result_container.style.width = \"100%\";\r\n this.group_result_container.style.bottom = \"100px\";\r\n this.group_result_container.style.top = \"100px\";\r\n this.group_result_container.style.overflowY = \"scroll\";\r\n this.group_result_container.classList.add(\"simple-scroll\");\r\n this.inner.append(this.group_result_container);\r\n\r\n this.tote_result_container.style.position = \"absolute\";\r\n this.tote_result_container.style.width = \"100%\";\r\n this.tote_result_container.style.bottom = \"100px\";\r\n this.tote_result_container.style.top = \"100px\";\r\n this.tote_result_container.style.overflowY = \"scroll\";\r\n this.tote_result_container.classList.add(\"simple-scroll\");\r\n this.inner.append(this.tote_result_container);\r\n\r\n this.container.appendChild(this.inner);\r\n\r\n }\r\n\r\n\r\n clear() {\r\n this.currentGroupId = \"\";\r\n this.tote_result_container.innerHTML = \"\";\r\n this.group_result_container.innerHTML = \"\";\r\n this.tote_result_container.style.display = \"none\";\r\n this.group_result_container.style.display = \"none\";\r\n\r\n }\r\n\r\n currentGroupId: string;\r\n currentGroupName: string;\r\n\r\n\r\n async openGroupMenu() {\r\n var groups = await SP.Data.Tote.getToteGroupInfos();\r\n this.headline.innerHTML = \"Select Tote Group\";\r\n\r\n for (let i = 0; i < groups.length; i++) {\r\n this.addGroupButton(groups[i]);\r\n }\r\n\r\n this.group_result_container.style.display = \"block\";\r\n }\r\n\r\n async openToteMenu(data: SP.ToteGroupInfo) {\r\n this.tote_result_container.innerHTML = \"\";\r\n if (this.currentGroupId != data.id) {\r\n this.currentGroupId = data.id;\r\n this.currentGroupName = data.name;\r\n this.headline.innerHTML = \"Pick a Tote\";\r\n this.group_result_container.innerHTML = \"\";\r\n var totes = await SP.Data.Tote.getToteInfosByGroup(this.currentGroupId, this.showOnlyFree);\r\n\r\n for (let i = 0; i < totes.length; i++) {\r\n let order = totes[i];\r\n this.addToteButton(order);\r\n\r\n }\r\n }\r\n\r\n this.group_result_container.style.display = \"block\";\r\n }\r\n\r\n async init() {\r\n if (this.initialized) return;\r\n this.initialized = true;\r\n }\r\n\r\n async open(showOnlyFree: boolean, callback: (toteId: number) => void) {\r\n await this.init();\r\n await this.clear();\r\n await this.openGroupMenu();\r\n this.callback = callback;\r\n this.showOnlyFree = showOnlyFree;\r\n this.container.style.display = \"block\";\r\n\r\n }\r\n\r\n\r\n close() {\r\n super.close();\r\n }\r\n\r\n\r\n addGroupButton(data: SP.ToteGroupInfo) {\r\n if (data.count <= 0) return;\r\n var c = this.group_result_container.appendChild(document.createElement(\"div\"))\r\n c.classList.add(\"btn\", \"noselect\");\r\n // c.style.marginTop = \"30px\";\r\n\r\n //var icon = c.appendChild(document.createElement(\"img\"));\r\n //icon.src = \"/terminal/img/icon/open-box.png\";\r\n //icon.classList.add(\"icon\");\r\n\r\n c.style.backgroundColor = data.color;\r\n c.style.color = '#fff';\r\n c.style.textShadow = '0px 1px 4px #000'\r\n\r\n var action = c.appendChild(document.createElement(\"span\"));\r\n action.classList.add(\"action\");\r\n action.innerHTML = SP.Localize(\"word_arrival\");\r\n action.innerHTML = \"\" + data.name + \"
\";\r\n\r\n var name = c.appendChild(document.createElement(\"span\"));\r\n name.classList.add(\"name\");\r\n name.innerHTML = data.count + \" Totes\";\r\n\r\n c.addEventListener(\"click\", () => {\r\n this.openToteMenu(data);\r\n });\r\n }\r\n\r\n addToteButton(data: SP.ToteInfo) {\r\n var c = this.group_result_container.appendChild(document.createElement(\"div\"))\r\n c.classList.add(\"btn\", \"noselect\");\r\n //c.style.marginTop = \"30px\";\r\n\r\n var icon = c.appendChild(document.createElement(\"img\"));\r\n icon.src = \"/terminal/img/tote_small.png\";\r\n icon.classList.add(\"icon\");\r\n\r\n c.style.backgroundColor = data.toteColor;\r\n c.style.color = '#fff';\r\n c.style.textShadow = '0px 1px 4px #000'\r\n c.style.float = 'left';\r\n c.style.width = '23%';\r\n c.style.margin = '1%';\r\n c.style.textAlign = 'left';\r\n c.style.paddingLeft = '70px';\r\n c.style.paddingRight = '0px';\r\n\r\n var action = c.appendChild(document.createElement(\"span\"));\r\n action.classList.add(\"action\");\r\n action.innerHTML = SP.Localize(\"word_arrival\");\r\n action.innerHTML = \"\" + data.toteName + \"\";\r\n\r\n\r\n c.addEventListener(\"click\", () => {\r\n this.callback(data.toteId);\r\n this.close();\r\n });\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n}","/// \r\n\r\nnamespace TerminalApp {\r\n export class ToteContentInfoBox {\r\n container: HTMLElement;\r\n inner_container: HTMLElement;\r\n text_container: HTMLElement;\r\n placementId: number;\r\n toteId: number;\r\n placementInfoBox: PlacementInfoBox;\r\n checkbox: SP.CheckboxDoodle;\r\n constructor(toteInfo: SP.ToteInfo) {\r\n this.placementId = toteInfo.totePlacementId;\r\n this.toteId = toteInfo.toteId;\r\n this.container = document.createElement(\"div\");\r\n this.container.classList.add(\"tote_content_wrapper\");\r\n\r\n\r\n this.inner_container = document.createElement(\"div\")\r\n this.inner_container.classList.add(\"tote_content_box\");\r\n\r\n //cb\r\n var cb = this.container.appendChild(document.createElement(\"input\"));\r\n cb.type = \"checkbox\";\r\n //cb.checked = true;\r\n this.checkbox = new SP.CheckboxDoodle(cb);\r\n\r\n \r\n\r\n\r\n this.placementInfoBox = new PlacementInfoBox(toteInfo.totePlacementData, true, null);\r\n this.inner_container.appendChild(this.placementInfoBox.container);\r\n var qty = document.createElement(\"div\");\r\n qty.classList.add(\"label\", \"label-success\");\r\n qty.innerHTML = toteInfo.totePlacementQuantity.toString();\r\n this.inner_container.appendChild(qty);\r\n this.container.appendChild(this.inner_container);\r\n }\r\n }\r\n\r\n}","/// \r\n\r\nnamespace TerminalApp {\r\n\r\n\r\n export class TransferPackageAssistant extends Assistant {\r\n inner = document.createElement(\"div\");\r\n result_container = document.createElement(\"div\");\r\n header = document.createElement(\"div\");\r\n initialized = false;\r\n callback: (id:string) => void;\r\n selectedTransferPackageId: string;\r\n constructor() {\r\n super();\r\n this.header.innerHTML = `\r\n

${SP.Localize(\"sentance_select_transfer\")}

\r\n `;\r\n //setup sender screen\r\n this.inner.appendChild(this.header);\r\n this.inner.append(this.result_container);\r\n this.container.appendChild(this.inner);\r\n }\r\n\r\n clear() {\r\n this.selectedTransferPackageId = null;\r\n this.result_container.innerHTML = \"\";\r\n this.result_container.style.display = \"none\";\r\n }\r\n\r\n async openTransferPackageMenu() {\r\n\r\n this.result_container.innerHTML = \"\";\r\n var TransferPackages = await SP.Data.Transfer.getPackageTransferInfos();\r\n\r\n for (let i = 0; i < TransferPackages.length; i++) {\r\n let t = TransferPackages[i];\r\n this.addTransferPackageButton(t);\r\n }\r\n this.result_container.style.display = \"block\";\r\n }\r\n\r\n bound: boolean = false;\r\n async open() {\r\n await this.clear();\r\n this.openTransferPackageMenu();\r\n this.container.style.display = \"block\";\r\n\r\n if (!this.bound) {\r\n barcodeListener.on(\"tr\", this.scanTransferPackage, this);\r\n this.bound = true;\r\n }\r\n\r\n // Promise is created only for the close operation.\r\n return new Promise((callback, reject) => {\r\n this.callback = callback; \r\n return 1;\r\n });\r\n }\r\n\r\n scanTransferPackage(barcode: string) {\r\n this.selectedTransferPackageId = barcode;\r\n this.close();\r\n return false; //prevent default\r\n }\r\n\r\n close() {\r\n if (this.bound) {\r\n barcodeListener.off(\"tr\", this.scanTransferPackage);\r\n this.bound = false;\r\n }\r\n\r\n\r\n // When close is called, resolve the Promise.\r\n if (this.callback) {\r\n this.callback(this.selectedTransferPackageId);\r\n this.callback = null;\r\n }\r\n\r\n super.close();\r\n }\r\n\r\n addTransferPackageButton(data: SP.PackageTransferInfo) {\r\n var c = this.result_container.appendChild(document.createElement(\"div\"))\r\n c.classList.add(\"btn\", \"noselect\");\r\n\r\n var action = c.appendChild(document.createElement(\"span\"));\r\n action.classList.add(\"action\");\r\n action.innerHTML = \"\" + data.orderNo + \" (\" + data.package.trackingNumber + \")
\" + data.fromLocationKey + \" -> \" + data.toLocationKey + \"\";\r\n\r\n c.addEventListener(\"click\", () => {\r\n this.selectedTransferPackageId = data.package.id;\r\n this.close();\r\n });\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n}","/// \r\n\r\nnamespace TerminalApp {\r\n\r\n\r\n export class TrolleyAssistant extends Assistant {\r\n inner = document.createElement(\"div\");\r\n result_container = document.createElement(\"div\");\r\n header = document.createElement(\"div\");\r\n initialized = false;\r\n callback: (id:number) => void;\r\n showOnlyFree: boolean;\r\n selectedTrolleyId: number;\r\n constructor() {\r\n super();\r\n this.header.innerHTML = `\r\n

${SP.Localize(\"sentance_scan_trolley\")}

\r\n
\r\n\r\n

${SP.Localize(\"sentance_pick_a_trolley\")}

\r\n `;\r\n //setup sender screen\r\n this.inner.appendChild(this.header);\r\n this.inner.append(this.result_container);\r\n this.container.appendChild(this.inner);\r\n }\r\n\r\n clear() {\r\n this.selectedTrolleyId = null;\r\n this.result_container.innerHTML = \"\";\r\n this.result_container.style.display = \"none\";\r\n }\r\n\r\n async openTrolleyMenu() {\r\n\r\n this.result_container.innerHTML = \"\";\r\n var trolleys = await SP.Data.Trolley.getTrolleyInfos(true);\r\n\r\n for (let i = 0; i < trolleys.length; i++) {\r\n let t = trolleys[i];\r\n this.addTrolleyButton(t);\r\n }\r\n\r\n this.result_container.style.display = \"block\";\r\n\r\n await SP.Sounds.Notification.play();\r\n //await SP.sleep(500);\r\n Talk(SP.Localize(\"sentance_scan_trolley\"));\r\n }\r\n\r\n bound: boolean = false;\r\n async open(showOnlyFree: boolean) {\r\n await this.clear();\r\n this.openTrolleyMenu();\r\n this.showOnlyFree = showOnlyFree;\r\n this.container.style.display = \"block\";\r\n\r\n if (!this.bound) {\r\n barcodeListener.on(\"tr\", this.scanTrolley, this);\r\n this.bound = true;\r\n }\r\n\r\n // Promise is created only for the close operation.\r\n return new Promise((callback, reject) => {\r\n this.callback = callback; \r\n return 1;\r\n });\r\n }\r\n\r\n scanTrolley(id: string) {\r\n this.selectedTrolleyId = parseInt(id);\r\n this.close();\r\n return false; //prevent default\r\n }\r\n\r\n close() {\r\n if (this.bound) {\r\n barcodeListener.off(\"tr\", this.scanTrolley);\r\n this.bound = false;\r\n }\r\n\r\n\r\n // When close is called, resolve the Promise.\r\n if (this.callback) {\r\n this.callback(this.selectedTrolleyId);\r\n this.callback = null;\r\n }\r\n\r\n super.close();\r\n }\r\n\r\n addTrolleyButton(data: SP.TrolleyInfo) {\r\n var c = this.result_container.appendChild(document.createElement(\"div\"))\r\n c.classList.add(\"btn\", \"noselect\");\r\n\r\n var action = c.appendChild(document.createElement(\"span\"));\r\n action.classList.add(\"action\");\r\n action.innerHTML = \"\" + data.name + \"\";\r\n\r\n c.addEventListener(\"click\", () => {\r\n this.selectedTrolleyId = data.id;\r\n this.close();\r\n });\r\n }\r\n\r\n }\r\n\r\n\r\n\r\n}"]}