{"version":3,"file":"index-nwO9R2tn.js","sources":["../../../app/frontend/entrypoints/controllers/wms/home/index.ts"],"sourcesContent":["\nimport DefaultController from \"../../defaultController\";\nimport Utils from \"../../../utils\";\n\n\nexport default class WMSHome extends DefaultController {\n private datatable: any;\n private startButton: HTMLButtonElement | undefined\n\n async init() {\n this.startButton = document.querySelector(\"#wmsStartPicking\") as HTMLButtonElement\n this.createTable()\n await super.init();\n }\n\n protected getEntityData(elem: any) {\n return null\n }\n\n bindListeners() {\n if (this.startButton) {\n this.startButton.addEventListener(\"click\", async (e) => {\n const selectedRows = this.datatable.rows({selected: true}).data();\n const wmsPickList: any = {}\n Array.from(selectedRows).forEach((row: any) => {\n Object.keys(row.wms.lineItems).forEach((lineItemId) => {\n const lineItems = row.wms.lineItems[lineItemId]\n lineItems.forEach((lineItem: any) => {\n const warehouseLocation = lineItem.warehouse_location\n const warehouseLocationPallet = lineItem.warehouse_location_pallet\n if (!wmsPickList[warehouseLocation.id]) {\n wmsPickList[warehouseLocation.id] = {\n name: warehouseLocation.name,\n items: {}\n }\n }\n if (!wmsPickList[warehouseLocation.id].items[lineItem.product_id]) {\n wmsPickList[warehouseLocation.id].items[lineItem.product_id] = []\n }\n wmsPickList[warehouseLocation.id].items[lineItem.product_id].push({\n lineItemId: lineItemId,\n orderId: row.id,\n mapId: lineItem.map_id,\n palletId: warehouseLocationPallet ? warehouseLocationPallet.id : null,\n customerId: row.customer_id,\n serial: lineItem.serial\n })\n })\n })\n })\n this.startButton.setAttribute(\"disabled\", \"disabled\")\n await this.startPicking(wmsPickList)\n })\n }\n }\n\n async startPicking(pickList: IWMSPickList) {\n const warehouseId = localStorage.getItem('tickware_wms_warehouse') as string\n const transactionRequest = await Utils.wms.startPicking(pickList, warehouseId);\n document.location.href = `/${(window as any).currentLocale}/wms/picking/${transactionRequest.transaction.uuid}`\n }\n\n createTable() {\n const warehouseId = localStorage.getItem('tickware_wms_warehouse')\n if (warehouseId) {\n this.datatable = new DataTable('.datatables-users', {\n initComplete: () => {\n const tableElem = document.querySelector('.datatables-users') as HTMLElement\n ((tableElem.closest(\".card\") as HTMLElement).querySelector(\".loading-body\") as HTMLElement).classList.add(\"d-none\");\n ((tableElem.closest(\".card\") as HTMLElement).querySelector(\".card-datatable\") as HTMLElement).classList.remove(\"d-none\")\n },\n pageLength: 1000,\n serverSide: true,\n ajax: {\n url: `/api/v1/erp/orders?status=open&warehouseId=${warehouseId}`,\n dataType: 'json',\n // @ts-ignore\n data: (params: { length: any; start: any; draw: any; order: any; search: any; }) => {\n return {\n limit: params.length,\n page: params.start / 1000 + 1,\n draw: params.draw,\n search: params.search ? params.search.value : null,\n sort: params.order ? params.order[0] : []\n };\n },\n // @ts-ignore\n dataSrc: (data: any, params: any) => {\n if (data.status === 200) {\n data[\"recordsTotal\"] = data.meta.total;\n data[\"recordsFiltered\"] = data.meta.total;\n data[\"draw\"] = data.meta.draw;\n }\n return data.data;\n },\n cache: true\n },\n columns: [\n {data: 'uuid'},\n {data: 'orderNumber'},\n {data: 'uuid'},\n {data: 'uuid'},\n {data: 'orderNumber'},\n ],\n select: {\n selector: 'td:first-child',\n headerCheckbox: true,\n style: 'multi'\n },\n order: [[1, 'desc']],\n columnDefs: [\n {\n targets: 0,\n orderable: false,\n render: DataTable.render.select(),\n },\n {\n targets: 1,\n render: (data: any, type: any, full: any, meta: any) => {\n return `${data}`;\n },\n },\n {\n targets: 2,\n render: (data: any, type: any, full: any, meta: any) => {\n const company = `${full.orderCustomer[0].company ? full.orderCustomer[0].company : \"\"}`;\n const location = `${full.deliveries[0].shippingOrderAddress[0] ? full.deliveries[0].shippingOrderAddress[0].city : null}`;\n return `${company}, ${location || ''}`\n },\n },\n {\n targets: 3,\n render: (data: any, type: any, full: any, meta: any) => {\n let items = [];\n Object.keys(full.wms.lineItems).forEach((lineItemId) => {\n const lineItems = full.wms.lineItems[lineItemId]\n const lineItemName = full.lineItems.filter((l: {\n id: string;\n }) => l.id === lineItemId)[0].label\n items.push(`${lineItems.length}x ${lineItemName}`)\n\n })\n return `${items.join(\"
\")}`;\n },\n },\n {\n targets: 4,\n render: (data: any, type: any, full: any, meta: any) => {\n const d = new Date(Date.parse(full.orderDateTime))\n return `${d.toLocaleString()}`;\n },\n },\n ],\n dom: 't' +\n '<\"row mx-2 align-items-center justify-content-between\"' +\n '<\"col-6\"i>' +\n '<\"col-6 mt-3\"p>' +\n '>',\n language: {\n sLengthMenu: '_MENU_',\n search: '',\n searchPlaceholder: `${Utils.translate('generic.search')}...`,\n \"zeroRecords\": `${Utils.translate('generic.datatable.no_results')}`,\n \"emptyTable\": `${Utils.translate('generic.datatable.no_results')}`,\n \"paginate\": {\n \"first\": `${Utils.translate('generic.datatable.pagination.first')}`,\n \"last\": `${Utils.translate('generic.datatable.pagination.last')}`,\n \"next\": `${Utils.translate('generic.datatable.pagination.next')}`,\n \"previous\": `${Utils.translate('generic.datatable.pagination.previous')}`\n },\n \"info\": `${Utils.translate('generic.datatable.info.info')}`,\n \"infoEmpty\": `${Utils.translate('generic.datatable.info.empty')}`,\n \"infoFiltered\": `${Utils.translate('generic.datatable.info.filtered')}`,\n },\n buttons: []\n });\n this.datatable.on('select deselect', (e: any) => {\n const selectedRows = this.datatable.rows({selected: true}).data();\n console.log(\"e\", selectedRows)\n if (this.startButton) {\n if (selectedRows.length === 0) {\n this.startButton.innerHTML = `${Utils.translate('wms.messages.start_picking')}`\n this.startButton.setAttribute(\"disabled\", \"disabled\")\n } else {\n this.startButton.innerHTML = `${Utils.translate('wms.messages.start_picking')} ${selectedRows.length} ${Utils.translate('erp.order.names')}`\n this.startButton.removeAttribute(\"disabled\")\n }\n }\n })\n } else {\n\n const tableElem = document.querySelector('.datatables-users') as HTMLElement\n const body = (tableElem.closest(\".card\") as HTMLElement).querySelector(\".card-datatable\") as HTMLElement;\n ((tableElem.closest(\".card\") as HTMLElement).querySelector(\".loading-body\") as HTMLElement).classList.add(\"d-none\");\n body.classList.remove(\"d-none\");\n body.innerHTML = `