{"version":3,"file":"new-tIDg4QC7.js","sources":["../../../app/frontend/entrypoints/controllers/erp/order/overview/new.ts"],"sourcesContent":["import * as bootstrap from 'bootstrap'\nimport Utils from '../../../../utils'\nimport DefaultController from \"../../../defaultController\";\nimport ErpOrderEntity from \"../entity\";\nimport ErpOrderGeneral from \"./show/general\";\nimport ErpCustomerEntity from \"../../customer/entity\";\nimport UtilsErp from \"../../../../utils/erp\";\n\nexport default class ErpOrderNew extends DefaultController {\n orderData: any = {}\n private currentProductUuid: any = null\n private currentProductName: any = null\n\n\n async init() {\n this.entity = \"erp/orders\"\n this.childs = {\n general: new ErpOrderGeneral(this, \"new\")\n }\n await Utils.createSelects(this.data, (elem: any) => {\n return this.onSelectGetFilterOptions(elem)\n }, (data: any, entity: any, element: any) => {\n return this.onSelectFilterResults(data, entity, element)\n });\n\n this.bindListeners();\n this.childs.general.update({items: []})\n\n await this.checkParams()\n await Utils.hideLoader();\n }\n\n protected async addLineItem(entityData: any) {\n if (!this.orderData.items) {\n this.orderData.items = [];\n }\n const stockUuids = []\n for (const data of entityData) {\n console.log(data, \"data\")\n let stockItem = this.orderData.items.filter(item => item.product.id === this.currentProductUuid)[0]\n let index = null;\n if (stockItem) {\n index = this.orderData.items.findIndex((obj: any) => obj.product.id === this.currentProductUuid)\n } else {\n stockItem = {\n product: {\n id: this.currentProductUuid,\n name: this.currentProductName\n },\n data: []\n }\n }\n for (const serial of data.serials) {\n const stockData = await Utils.entity.find('erp/stocks', {\n serial, warehouse_location_id: data.warehouse_location_id, warehouse_pallet_id: data.warehouse_pallet_id\n })\n if (stockData.data) {\n const existingStockItem = stockItem.data.filter((d: { id: any; }) => d.id === stockData.data.uuid)[0]\n if (!existingStockItem) {\n stockItem.data.push({\n id: stockData.data.uuid,\n serial: serial,\n payload: stockData.data.payload\n })\n stockUuids.push(stockData.data.uuid)\n } else {\n console.warn(\"Stock exists already!\", serial, data)\n }\n } else {\n console.warn(\"Stock not found!\", serial, data)\n }\n }\n if (index !== null) {\n this.orderData.items[index] = stockItem\n } else {\n this.orderData.items.push(stockItem)\n }\n }\n await Utils.entity.upsert({reserved: true, uuid: stockUuids}, 'erp/stocks')\n // @ts-ignore\n await this.childs.general.update(this.orderData)\n if(this.orderData.items.length > 0) {\n (document.querySelector(\"#erp_order_save\") as HTMLButtonElement).removeAttribute(\"disabled\")\n } else {\n (document.querySelector(\"#erp_order_save\") as HTMLButtonElement).setAttribute(\"disabled\", \"disabled\")\n }\n }\n\n protected async addLinePallet(data: any, orderId = null) {\n if (!this.orderData.items) {\n this.orderData.items = [];\n }\n const stockUuids = []\n const pallet = await Utils.entity.get(data.warehousePalletId, 'erp/warehouse_location_pallets')\n if (pallet && pallet.status === 200) {\n const data = pallet.data[0]\n for (const stock of data.stock) {\n if (stock.available && !stock.reserved) {\n let stockItem = this.orderData.items.filter((item: { product: { id: any; }; }) => item.product.id === stock.product.id)[0]\n let index = null;\n if (stockItem) {\n index = this.orderData.items.findIndex((obj: any) => obj.product.id === stock.product.id)\n } else {\n stockItem = {\n product: {\n id: stock.product.id,\n name: stock.product.name\n },\n data: []\n }\n }\n const existingStockItem = stockItem.data.filter((d: { id: any; }) => d.id === stock.uuid)[0]\n if (!existingStockItem) {\n stockItem.data.push({\n id: stock.uuid,\n serial: stock.serial,\n payload: stock.payload\n })\n stockUuids.push(stock.uuid)\n } else {\n console.warn(\"Stock exists already!\", stock, stock)\n }\n if (index !== null) {\n this.orderData.items[index] = stockItem\n } else {\n this.orderData.items.push(stockItem)\n }\n }\n }\n await Utils.entity.upsert({reserved: true, uuid: stockUuids}, 'erp/stocks')\n }\n // @ts-ignore\n await this.childs.general.update(this.orderData)\n if(this.orderData.items.length > 0) {\n (document.querySelector(\"#erp_order_save\") as HTMLButtonElement).removeAttribute(\"disabled\")\n } else {\n (document.querySelector(\"#erp_order_save\") as HTMLButtonElement).setAttribute(\"disabled\", \"disabled\")\n }\n }\n\n protected async removeLineItem(ids: any) {\n const deletedIds = ids.split(\",\");\n const stockUuids = []\n let deleteIndex = null\n this.orderData.items.forEach((items: any, i: number) => {\n const stockIds = items.data.map((d: { id: any; }) => d.id);\n if (stockIds.sort().join(\",\") === deletedIds.sort().join(\",\")) {\n deleteIndex = i;\n }\n })\n if (deleteIndex !== null) {\n this.orderData.items.splice(deleteIndex, 1);\n for (const id of deletedIds) {\n stockUuids.push(id)\n }\n }\n // @ts-ignore\n await this.childs.general.update(this.orderData)\n await Utils.entity.upsert({reserved: false, uuid: stockUuids}, 'erp/stocks')\n if(this.orderData.items.length > 0) {\n (document.querySelector(\"#erp_order_save\") as HTMLButtonElement).removeAttribute(\"disabled\")\n } else {\n (document.querySelector(\"#erp_order_save\") as HTMLButtonElement).setAttribute(\"disabled\", \"disabled\")\n }\n }\n\n protected getEntityData(elem: any) {\n return ErpOrderEntity.getEntityData(elem)\n }\n\n bindListeners() {\n jQuery(\"#new_erp_order_line_item_product_id\").on(\"select2:ajax_done\", async (e, data: any) => {\n console.log(\"data\", data)\n if (data && data.status === 200 && data.data.length === 1 && data.data[0].is_serial_match === true) {\n const mapData = data.data[0]\n this.currentProductName = mapData.product.name\n this.currentProductUuid = mapData.product.id\n await this.addLineItem([{\n quantity: 1,\n serials: [mapData.serial],\n warehouse_id: null,\n warehouse_location_id: mapData.warehouse_location.id,\n warehouse_pallet_id: mapData.warehouse_pallet ? mapData.warehouse_pallet.id : null\n }])\n const bsElem = bootstrap.Offcanvas.getInstance((document.querySelector(\"#offcanvasAddErpOrderLineItem\") as HTMLElement))\n if (bsElem) {\n bsElem.hide();\n }\n const elem = document.querySelector(\"#addErpOrderLineItemForm\") as HTMLFormElement;\n jQuery(\"#new_erp_order_line_item_product_id\").val(\"\").trigger(\"change\").html(\"\");\n elem.reset();\n }\n });\n\n jQuery(\"#new_erp_order_line_item_product_id\").on(\"select2:select\", async (e, data: any) => {\n this.currentProductName = e.params.data.data.name\n this.currentProductUuid = e.params.data.data.uuid\n await this.addWarehouseInfo(e);\n });\n\n (document.querySelector(\"#erp_order_save\") as HTMLButtonElement).addEventListener(\"click\", async (e: any) => {\n\n await Utils.showLoader()\n const r = await Utils.entity.upsert(this.orderData, 'erp/orders')\n if (r.status === 200) {\n this.toastr.success(`${Utils.translate('erp.order.name')} ${Utils.translate('generic.messages.duplicated')}`, `${Utils.translate('generic.success')}`)\n setTimeout(() => {\n document.location.href = `/${(window as any).currentLocale}/erp/orders/${r.data[0].id}`\n }, 1000)\n }\n });\n\n //@ts-ignore\n jQuery(\"#order_customer_id\").on(\"select2:select\", async (e: any) => {\n const customerData = e.params.data.data\n const addresses = customerData.customerLocations\n jQuery('#order_customer_address_id').empty().trigger('change');\n jQuery('#order_customer_address_id').append(new Option(\"Addresse wählen!\", \"NONE\", false, false));\n addresses.forEach((address: any) => {\n const newOption = new Option(address.name_formatted, address.uuid, false, false);\n jQuery('#order_customer_address_id').append(newOption);\n })\n jQuery('#order_customer_address_id').trigger(\"change\");\n jQuery('#order_customer_address_id').removeAttr(\"disabled\")\n this.orderData.customer_id = customerData.uuid\n })\n\n //@ts-ignore\n jQuery(\"#order_customer_address_id\").on(\"select2:select\", async (e: any) => {\n const generalTab = document.querySelector(\".erp_order_new_row #general\") as HTMLElement;\n this.orderData.customer_location_id = e.target.value\n generalTab.style.opacity = \"1\";\n generalTab.style.pointerEvents = \"all\";\n })\n\n jQuery(\"body\").delegate(\".line_item_warehouse_map\", \"keyup change\", (e) => {\n e.preventDefault();\n const target = e.target;\n const maxQuantity = parseInt(target.getAttribute(\"data-max-quantity\"));\n const currentQuantity = parseInt(target.value);\n const fullQuantity = parseInt((document.querySelector(\"#erp_order_line_item_quantity\") as HTMLInputElement).value);\n if (maxQuantity < currentQuantity) {\n target.value = String(maxQuantity);\n }\n let usedQuantity = 0;\n const inputs = document.querySelectorAll(\".line_item_warehouse_map\");\n inputs.forEach((input: any) => {\n usedQuantity += parseInt(input.value)\n })\n const saveBtn = document.querySelector(\"#erp_line_item_add_save_button\") as HTMLButtonElement\n if (fullQuantity === usedQuantity) {\n saveBtn.removeAttribute(\"disabled\");\n } else {\n saveBtn.setAttribute(\"disabled\", \"disabled\");\n }\n })\n\n\n jQuery(\"body\").delegate(\"#erp_order_line_item_quantity\", \"keyup change\", (e) => {\n e.preventDefault();\n let usedQuantity = 0;\n const fullQuantity = parseInt((document.querySelector(\"#erp_order_line_item_quantity\") as HTMLInputElement).value);\n document.querySelectorAll(\".line_item_warehouse_map\").forEach((input: any) => {\n const maxQuantity = parseInt(input.getAttribute(\"data-max-quantity\"));\n const currentQuantity = parseInt(input.value);\n if (maxQuantity < currentQuantity) {\n usedQuantity += maxQuantity\n } else {\n usedQuantity += currentQuantity\n }\n })\n const saveBtn = document.querySelector(\"#erp_line_item_add_save_button\") as HTMLButtonElement\n if (fullQuantity === usedQuantity) {\n saveBtn.removeAttribute(\"disabled\");\n } else {\n saveBtn.setAttribute(\"disabled\", \"disabled\");\n }\n })\n }\n\n async addWarehouseInfo(data: any) {\n if (data.params.data.id) {\n console.log(this.data, data)\n const stockInfo = await Utils.entity.getAll('erp/stocks', null, {product_id: data.params.data.id, customer_id: this.orderData.customer_id});\n let html = '';\n const tbody = document.querySelector(\"#erp_order_line_item_add_warehouse_list_table tbody\") as HTMLElement;\n tbody.innerHTML = \"\";\n stockInfo.data.forEach((stock: any) => {\n let name = `${stock.warehouse.name}, ${stock.warehouse_location.name}`\n if (stock.warehouse_pallet) {\n name += `, ${stock.warehouse_pallet.name}`\n }\n let options = ``\n stock.serials.filter(n => n).forEach((sn: string) => {\n options += ``\n })\n let availableStock = stock.stock\n if (availableStock > 0) {\n\n html += `\n\n
\n
${name}
\n
\n \n\n
\n
/ ${availableStock}
\n
\n \n \n
\n\n`\n }\n })\n tbody.innerHTML = html;\n console.log(\"Stock Info\", stockInfo)\n }\n }\n\n async checkParams() {\n const uri = new URL(document.location.href)\n const params = uri.searchParams\n\n if (params.get(\"ticket_id\")) {\n this.orderData.ticket_id = (params.get(\"ticket_id\") || \"\");\n (document.querySelector(\"#erp_order_ticket_uuid\") as HTMLInputElement).value = params.get(\"ticket_id\") || \"\"\n }\n if (params.get(\"customer_id\")) {\n this.orderData.customer_id = (params.get(\"customer_id\") as string)\n const customer = await Utils.entity.get(this.orderData.customer_id, \"customers\");\n const $newOptionCustomer = jQuery(\"\").val(customer.data[0].uuid).text(customer.data[0].name)\n jQuery(\"#order_customer_id\").append($newOptionCustomer).trigger('change')\n jQuery('#order_customer_address_id').removeAttr(\"disabled\")\n if (params.get(\"customer_location_id\")) {\n this.orderData.customer_location_id = (params.get(\"customer_location_id\") as string)\n const locations = customer.data[0].customerLocations\n jQuery('#order_customer_address_id').empty().trigger('change');\n locations.forEach((address: any) => {\n const newOption = new Option(address.name_formatted, address.uuid, this.orderData.customer_location_id === address.uuid, this.orderData.customer_location_id === address.uuid);\n jQuery('#order_customer_address_id').append(newOption);\n })\n jQuery('#order_customer_address_id').trigger(\"change\");\n jQuery('#order_customer_address_id').removeAttr(\"disabled\");\n const generalTab = document.querySelector(\".erp_order_new_row #general\") as HTMLElement;\n generalTab.style.opacity = \"1\";\n generalTab.style.pointerEvents = \"all\";\n } else {\n //@ts-ignore\n jQuery(\"#order_customer_id\").trigger({\n type: 'select2:select',\n params: {\n data: {\n data: customer.data[0]\n }\n }\n });\n }\n }\n }\n\n onSelectGetFilterOptions(elem: any) {\n console.log(\"eh\", elem, this.orderData)\n if (elem.getAttribute(\"id\") === \"new_erp_order_line_item_product_id\") {\n return {\n customer_id: this.orderData.customer_id\n }\n } else if (elem.getAttribute(\"id\") === \"erp_pallet_warehouse_location_pallet_id\") {\n return {\n warehouse_id: (document.querySelector(\"#erp_pallet_warehouse_id option:checked\") as HTMLSelectElement)?.value\n }\n }\n return {}\n }\n}"],"names":["data","bootstrap.Offcanvas"],"mappings":"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"}