{"version":3,"file":"general-aCion934.js","sources":["../../../app/frontend/entrypoints/controllers/erp/order/overview/show/general.ts"],"sourcesContent":["import jQuery from 'jquery/dist/jquery';\nimport Swal from 'sweetalert2';\nimport * as bootstrap from 'bootstrap'\nimport Utils from '../../../../../utils'\nimport ErpOrderLineItemEntity from \"../../../order_line_item/entity\";\nimport UtilsErp from \"../../../../../utils/erp\";\nimport UtilsEntity from \"../../../../../utils/entity\";\n\nexport default class ErpOrderGeneral {\n private parent: any;\n private entity = \"erp/order_items\";\n private toastr: any;\n private datatable: any = null;\n private datatableElem: any;\n private editModal: bootstrap.Modal;\n private data: any = {}\n private currentStockData: any = {}\n private currentProductUuid: any = null\n mode: string;\n\n constructor(parent: any, mode = \"show\") {\n this.mode = mode\n this.parent = parent\n this.toastr = parent.toastr\n this.currentStockData = {}\n this.datatableElem = jQuery(\".datatables-erp-order-general\")\n this.editModal = new bootstrap.Modal((document.querySelector(\"#editErpOrderLineItemModal\") as HTMLElement));\n this.bindListeners();\n }\n\n async getEntityData(elem: any) {\n const d = [];\n let mapRows = Array.from(document.querySelectorAll(\"#erp_order_line_item_add_warehouse_list_table tbody tr\"));\n mapRows = mapRows.filter((map => {\n //@ts-ignore\n const input = map.querySelector(\"input\") as HTMLInputElement;\n const inputValue = parseInt(input.value)\n return inputValue > 0\n }));\n for (const map of mapRows) {\n //@ts-ignore\n const input = map.querySelector(\"input\") as HTMLInputElement;\n const quantity = parseInt(input.value)\n const warehouseId = input.getAttribute(\"data-warehouse-id\");\n const warehouseLocationId = input.getAttribute(\"data-warehouse-location-id\");\n const warehousePalletId = input.getAttribute(\"data-warehouse-pallet-id\");\n //@ts-ignore\n let selectedSerials = Array.from(input.closest(\".row\").querySelectorAll(\".form-select option:checked\")).map(s => s.value);\n d.push({\n serials: selectedSerials.length > 0 ? selectedSerials : Array(quantity).fill(\"\"),\n warehouse_id: warehouseId,\n warehouse_pallet_id: warehousePalletId === null || warehousePalletId === \"null\" ? null : warehousePalletId,\n warehouse_location_id: warehouseLocationId,\n quantity: quantity,\n })\n }\n\n return d;\n }\n\n getEntityDataPallet(elem: any) {\n return {\n warehouseId: elem.querySelector(\"#erp_pallet_warehouse_id option:checked\")?.value,\n warehousePalletId: elem.querySelector(\"#erp_pallet_warehouse_location_pallet_id option:checked\")?.value,\n }\n }\n\n async submitLineItem() {\n const elem = document.querySelector(\"#addErpOrderLineItemForm\") as HTMLFormElement;\n const valid = elem.checkValidity();\n if (valid) {\n await Utils.showLoader();\n const bsElem = bootstrap.Offcanvas.getInstance((document.querySelector(\"#offcanvasAddErpOrderLineItem\") as HTMLElement))\n\n if (this.mode === \"show\") {\n const entityData = await this.getEntityData(elem)\n console.log(\"entityData\", entityData)\n const r = await Utils.entity.upsert({items: entityData, order_id: this.parent.id, product_id: this.currentProductUuid, customer_id: this.parent.data.customer.uuid}, this.entity)\n this.toastr.success(`${Utils.translate('erp.lineItem.name')} ${Utils.translate('generic.saved')}`, `${Utils.translate('generic.success')}`)\n const table = document.querySelector(\"#erp_order_line_item_add_warehouse_list_table tbody\") as HTMLElement;\n table.innerHTML = \"\";\n await this.parent.getEntity()\n } else {\n const entityData = await this.getEntityData(elem);\n console.log(\"entityData\", entityData)\n await this.parent.addLineItem(entityData)\n }\n if (bsElem) {\n bsElem.hide();\n }\n jQuery(\"#new_erp_order_line_item_product_id\").val(\"\").trigger(\"change\").html(\"\");\n elem.reset();\n await Utils.hideLoader();\n }\n }\n\n async submitLinePallet() {\n const elem = document.querySelector(\"#addErpOrderWarehouseLocationPalletForm\") as HTMLFormElement;\n const valid = elem.checkValidity();\n if (valid) {\n await Utils.showLoader();\n const bsElem = bootstrap.Offcanvas.getInstance((document.querySelector(\"#offcanvasAddErpOrderPallet\") as HTMLElement))\n\n const entityData = this.getEntityDataPallet(elem);\n console.log(\"AAA\", this.parent)\n await this.parent.addLinePallet(entityData)\n if(this.mode === \"show\") {\n await this.parent.getEntity()\n }\n this.toastr.success(`${Utils.translate('erp.lineItem.name')} ${Utils.translate('generic.saved')}`, `${Utils.translate('generic.success')}`)\n await Utils.hideLoader();\n jQuery(\"#erp_pallet_warehouse_location_pallet_id\").val(\"\").trigger(\"change\");\n if (bsElem) {\n bsElem.hide();\n }\n }\n }\n\n bindListeners() {\n (document.querySelector(\"#addErpOrderLineItemForm\") as HTMLFormElement).addEventListener(\"submit\", async (e: any) => {\n e.preventDefault();\n await this.submitLineItem()\n });\n (document.querySelector(\"#addErpOrderWarehouseLocationPalletForm\") as HTMLFormElement).addEventListener(\"submit\", async (e: any) => {\n e.preventDefault();\n await this.submitLinePallet()\n });\n\n (document.querySelector(\"#editErpOrderLineItemForm\") as HTMLFormElement).addEventListener(\"submit\", async (e) => {\n e.preventDefault();\n const elem = document.querySelector(\"#editErpOrderLineItemForm\") as HTMLFormElement;\n const valid = elem.checkValidity();\n if (valid) {\n const entityData = await this.getEntityData(elem);\n if (entityData.quantity > this.data.quantity + this.currentStockData.stock) {\n this.toastr.error(`Customer does not have ${entityData.quantity} available. Currently available: ${this.data.quantity + this.currentStockData.stock}`, `${Utils.translate('generic.failed')}`)\n } else {\n const r = await Utils.entity.upsert(entityData, this.entity)\n if (r.status === 200) {\n await this.parent.getEntity()\n const bsElem = bootstrap.Modal.getInstance((document.querySelector(\"#editErpOrderLineItemModal\") as HTMLElement))\n if (bsElem) {\n bsElem.hide();\n }\n this.toastr.success(`${Utils.translate('erp.lineItem.name')} ${Utils.translate('generic.saved')}`, `${Utils.translate('generic.success')}`)\n }\n }\n }\n });\n\n jQuery(\"#new_erp_order_line_item_product_id\").on(\"select2:select\", (e: any) => {\n this.currentProductUuid = e.params.data.data.uuid\n })\n\n this.datatableElem.delegate(\".delete-record\", \"click\", async (e: any) => {\n e.preventDefault();\n const ids = e.currentTarget.getAttribute(\"data-ids\");\n const confirm = await Swal.fire({\n title: 'Are you sure?',\n text: \"You won't be able to revert this!\",\n icon: 'warning',\n showCancelButton: true,\n confirmButtonText: 'Yes, delete it!',\n customClass: {\n confirmButton: 'btn btn-primary me-3',\n cancelButton: 'btn btn-label-secondary'\n },\n buttonsStyling: false\n })\n if (confirm.value === true) {\n if (this.mode === \"show\") {\n const r = await Utils.entity.destroyAll(ids.split(\",\"), this.entity);\n if (r.status === 200) {\n this.toastr.success(`${Utils.translate('erp.lineItem.name')} ${Utils.translate('generic.deleted')}`, `${Utils.translate('generic.success')}`)\n } else {\n this.toastr.error(`${Utils.translate('erp.lineItem.name')} ${Utils.translate('generic.messages.not_deleted')}`, `${Utils.translate('generic.error')}`)\n }\n await this.parent.getEntity()\n } else {\n this.parent.removeLineItem(ids)\n }\n }\n });\n\n /*(document.querySelector(\"#erp_order_line_item_tableall\") as HTMLInputElement).addEventListener(\"click\", (e) => {\n const target = e.target as HTMLInputElement;\n target.checked = !target.checked\n document.querySelectorAll(\"input[id^='erp_order_line_item_table_']\").forEach((cb: any) => {\n cb.checked = target.checked\n })\n })*/\n }\n\n createDataTable() {\n this.datatable = new DataTable(\".datatables-erp-order-general\", {\n processing: true,\n layout: {\n topEnd: ['search', 'buttons']\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 text: `${Utils.translate('generic.add')}`,\n className: 'dt-button add-new btn btn-primary',\n attr: {\n 'data-bs-toggle': 'offcanvas',\n 'data-bs-target': '#offcanvasAddErpOrderLineItem'\n }\n },\n {\n text: `${Utils.translate('generic.add')} ${Utils.translate('erp.warehouse_location_pallet.name')}`,\n className: 'dt-button add-new btn btn-primary',\n attr: {\n 'data-bs-toggle': 'offcanvas',\n 'data-bs-target': '#offcanvasAddErpOrderPallet'\n }\n }\n ]\n });\n }\n\n async getSubentities() {\n const r = await UtilsEntity.getAll(\"product_attributes\");\n if (r.status === 200) {\n return r.data;\n } else {\n return {}\n }\n }\n\n async update(data: any, enableActions = true) {\n if (this.datatable) {\n this.datatable.destroy();\n }\n await Utils.updateElements(data, '', (document.querySelector(\"#erp_order_general\") as HTMLElement))\n const table = document.querySelector(\".datatables-erp-order-general tbody\") as HTMLElement;\n table.innerHTML = \"\";\n const subEntries = await this.getSubentities();\n if (data.items) {\n for (const lineItem of data.items) {\n let attributes = {}\n lineItem.data.forEach((mapData: any) => {\n if (mapData.payload) {\n Object.keys(mapData.payload).forEach((key: string) => {\n const v = mapData.payload[key]\n if (v && v.length > 0) {\n // @ts-ignore\n if (!attributes[key]) {\n // @ts-ignore\n attributes[key] = []\n }\n // @ts-ignore\n attributes[key].push(v)\n }\n })\n }\n });\n let tr = `