{"version":3,"file":"document-NqGF2GaO.js","sources":["../../../app/frontend/entrypoints/controllers/erp/order/overview/show/document.ts"],"sourcesContent":["import jQuery from 'jquery/dist/jquery';\nimport * as bootstrap from 'bootstrap'\nimport Utils from '../../../../../utils'\nimport ErpDocumentEntity from \"../../../document/entity\";\nimport * as pdfjsLib from \"pdfjs-dist\"\nimport SignaturePad from \"signature_pad\"\n\nexport default class ErpOrderDocument{\n private parent: any;\n private entity = \"erp/documents\";\n private toastr: any;\n private datatable: any;\n private newItemsDatatable: any;\n\n private pdfDocumentId = \"\";\n private pdfDownloadUrl = \"\";\n private pdfModal: bootstrap.Modal;\n private pdfSignModal: bootstrap.Modal;\n private signaturePad: SignaturePad | undefined;\n\n constructor(parent: any) {\n this.parent = parent\n this.toastr = parent.toastr\n this.pdfModal = new bootstrap.Modal((document.querySelector(\"#erpOrderDocumentPdfModal\") as HTMLElement));\n this.pdfSignModal = new bootstrap.Modal((document.querySelector(\"#erpOrderDocumentPdfSignModal\") as HTMLElement));\n this.setupPdfReader()\n this.bindListeners();\n }\n\n async setupPdfReader() {\n pdfjsLib.GlobalWorkerOptions.workerSrc = '/pdf.worker.min.js';\n }\n\n async setupSigning() {\n const canvas = document.querySelector('#erpOrderDocumentPdfSignCanvas') as HTMLCanvasElement | null;\n if (canvas) {\n if (!this.signaturePad) {\n this.signaturePad = new SignaturePad(canvas);\n } else {\n this.signaturePad.clear();\n }\n }\n }\n\n async saveSignature() {\n if (this.signaturePad) {\n const image = this.signaturePad.toDataURL();\n await Utils.erp.saveSignature(this.pdfDocumentId, this.pdfDownloadUrl, image)\n }\n }\n\n async renderPdfPage(page) {\n console.log(\"Render\", page)\n const canvas = document.createElement(\"canvas\")\n const scale = 1.5;\n const viewport = page.getViewport({scale: scale});\n const context = canvas.getContext('2d');\n if (context) {\n canvas.height = viewport.height;\n canvas.width = viewport.width;\n const renderContext = {\n canvasContext: context,\n viewport: viewport\n };\n const renderTask = page.render(renderContext);\n await renderTask.promise\n }\n canvas.style.maxWidth = \"100%\"\n return canvas\n }\n async loadPdf(downloadUrl: string) {\n pdfjsLib.getDocument(`${document.location.origin}/${downloadUrl}`).promise.then(async (pdf) => {\n const canvasHolder = document.querySelector('#erpOrderDocumentPdfCanvases') as HTMLCanvasElement | null;\n if (canvasHolder) {\n for (let i = 1; i <= pdf.numPages; i++) {\n const c = await this.renderPdfPage((await pdf.getPage(i)))\n canvasHolder.appendChild(c)\n }\n }\n this.pdfModal.show();\n const button = document.querySelector('#erpOrderDocumentPdfModalSignButton') as HTMLButtonElement;\n\n button.style.bottom = `${window.siteConfig.document.y}px`\n button.style.right = `${window.siteConfig.document.x}px`\n button.style.width = window.siteConfig.document.width;\n button.style.height = window.siteConfig.document.height;\n })\n }\n\n getEntityData(elem: any) {\n return {...ErpDocumentEntity.getEntityData(elem), order_id: this.parent.id}\n }\n\n bindListeners() {\n\n jQuery(\".datatables-erp-order-document tbody\").delegate(\".sign-record\", \"click\", async (e: JQuery.TriggeredEvent) => {\n this.pdfDownloadUrl = e.currentTarget.getAttribute(\"data-url\");\n this.pdfDocumentId = e.currentTarget.getAttribute(\"data-document-id\");\n await this.loadPdf(this.pdfDownloadUrl);\n\n });\n (document.querySelector('#erpOrderDocumentPdfModalSignButton') as HTMLButtonElement).addEventListener(\"click\", async (e) => {\n e.preventDefault();\n await this.setupSigning();\n this.pdfSignModal.show();\n });\n\n (document.querySelector('#erpOrderDocumentPdfSignSave') as HTMLButtonElement).addEventListener(\"click\", async (e) => {\n e.preventDefault();\n await this.saveSignature();\n this.pdfSignModal.hide();\n this.pdfModal.hide();\n await this.parent.getEntity();\n });\n (document.querySelector(\"#addErpOrderDocumentForm\") as HTMLFormElement).addEventListener(\"submit\", async (e: any) => {\n e.preventDefault();\n const elem = document.querySelector(\"#addErpOrderDocumentForm\") as HTMLFormElement;\n const valid = elem.checkValidity();\n if (valid) {\n let itemConfig: any = []\n let failed = false //This is not pretty, but there is no way of breaking of DTs every() I'm afraid\n if (this.newItemsDatatable) {\n const itemRows = this.newItemsDatatable.rows({selected: true})\n itemRows.every((rowIndex: any) => {\n const row = this.newItemsDatatable.row(rowIndex).node()\n const data = this.newItemsDatatable.row(rowIndex).data()\n const selectedQuantity = parseInt(row.querySelector(\".erp_document_new_quantity\").value);\n // @ts-ignore\n const selectedSerials = Array.from(row.querySelectorAll(\"select.form-select option:checked\")).map((o: HTMLInputElement) => {\n return o.value\n });\n if (data.serials.length > 0 && selectedQuantity !== selectedSerials.length) {\n this.toastr.error(`Serials are not matching quantity!`, `${Utils.translate('generic.failed')}`)\n failed = true;\n }\n let mapIds: any[] = [];\n console.log(\"D\", data)\n selectedSerials.forEach((serial: string, i: number) => {\n const map = data.data.data.filter((d: { serial: string; }) => d.serial === serial)[0]\n mapIds.push(map.id)\n })\n itemConfig.push({\n map_ids: mapIds,\n })\n })\n } else {\n this.parent.data.items.forEach((item: any) => {\n itemConfig.push({\n mapIds: item.data.map((d: { id: any; }) => d.id)\n })\n })\n }\n const warehouseId = (document.querySelector(\"#erp_document_warehouse_id option:checked\") as HTMLOptionElement).value\n if (!failed) {\n await Utils.showLoader();\n await Utils.entity.upsert({...this.getEntityData(elem), items: itemConfig, warehouse_id: warehouseId}, this.entity)\n this.toastr.success(`${Utils.translate('erp.document.name')} ${Utils.translate('generic.saved')}`, `${Utils.translate('generic.success')}`)\n\n\n const bsElem = bootstrap.Offcanvas.getInstance((document.querySelector(\"#offcanvasAddErpOrderDocument\") as HTMLElement))\n if (bsElem) {\n bsElem.hide();\n }\n await Utils.hideLoader();\n await this.parent.getEntity()\n }\n }\n });\n\n jQuery(\"#erp_document_document_type_id\").on(\"select2:select\", (e: any) => {\n (document.querySelector(\"#erp_document_document_type_name\") as HTMLInputElement).value = e.params.data.data.technicalName;\n })\n }\n\n\n createDataTable() {\n this.datatable = new DataTable(\".datatables-erp-order-document\", {\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 m-2',\n attr: {\n 'data-bs-toggle': 'offcanvas',\n 'data-bs-target': '#offcanvasAddErpOrderDocument'\n }\n }\n ]\n });\n }\n\n async generateWarehouseList() {\n let itemConfig: any = []\n let failed = false //This is not pretty, but there is no way of breaking of DTs every() I'm afraid\n if (this.newItemsDatatable) {\n const itemRows = this.newItemsDatatable.rows({selected: true})\n itemRows.every((rowIndex: any) => {\n const row = this.newItemsDatatable.row(rowIndex).node()\n const data = this.newItemsDatatable.row(rowIndex).data()\n const selectedQuantity = parseInt(row.querySelector(\".erp_document_new_quantity\").value);\n // @ts-ignore\n const selectedSerials = Array.from(row.querySelectorAll(\"select.form-select option:checked\")).map((o: HTMLInputElement) => {\n return o.value\n });\n if (data.serials.length > 0 && selectedQuantity !== selectedSerials.length) {\n this.toastr.error(`Serials are not matching quantity!`, `${Utils.translate('generic.failed')}`)\n failed = true;\n }\n let mapIds: any[] = [];\n selectedSerials.forEach((serial: string, i: number) => {\n const map = data.data.data.filter((d: { serial: string; }) => d.serial === serial)[0]\n mapIds.push(map.id)\n })\n itemConfig.push({\n map_ids: mapIds,\n })\n })\n } else {\n this.parent.data.items.forEach((item: any) => {\n itemConfig.push({\n mapIds: item.data.map((d: { id: any; }) => d.id)\n })\n })\n }\n const warehouses = await Utils.erp.generateDocumentWarehouse(itemConfig)\n if (warehouses.status === 200) {\n const warehouseData = warehouses.data\n const select = document.querySelector(\"#erp_document_warehouse_id\") as HTMLSelectElement\n if (warehouseData.length === 0) {\n select.setAttribute(\"disabled\", \"disabled\")\n select.value = \"\"\n } else {\n select.removeAttribute(\"disabled\")\n let html = \"\"\n warehouseData.forEach((d: any, i: number) => {\n html += ``\n })\n select.innerHTML = html;\n }\n }\n }\n async update(data: any) {\n if (this.datatable) {\n this.datatable.destroy();\n }\n\n await Utils.updateElements(data, '', (document.querySelector(\"#erp_order_document\") as HTMLElement))\n const table = document.querySelector(\".datatables-erp-order-document tbody\") as HTMLElement;\n table.innerHTML = \"\";\n data.documents.forEach((document: any) => {\n let tr = `\n ${new Date(Date.parse(document.created_at)).toLocaleString()} ${document.signed ? `(Signiert)` : ``}\n ${document.number}\n ${Utils.translate(`erp.document.types.${document.document_template.document_type}`)}\n ${document.user ? document.user.name : \"\"}\n
\n `\n if (!document.signed) {\n tr += ` `\n }\n tr += `
`\n table.innerHTML = table.innerHTML + tr;\n });\n if (this.newItemsDatatable) {\n this.newItemsDatatable.destroy();\n }\n const newItemData: { uuid: any; name: any; quantity: any; serials: any; }[] = []\n data.items.forEach((item: any) => {\n newItemData.push({\n data: item,\n uuid: item.product.id,\n name: item.product.name,\n quantity: item.data.length,\n serials: item.data.map((d: { serial: any; }) => d.serial)\n })\n })\n this.newItemsDatatable = new DataTable(\"#erp_document_new_items_table\", {\n initComplete: function() {\n this.api().rows().select()\n },\n data: newItemData,\n processing: true,\n createdRow: ( row: HTMLTableRowElement, data: any, dataIndex: number ) => {\n row.setAttribute(\"data-line-item-id\", data.uuid);\n },\n select: {\n selector: 'td:first-child',\n headerCheckbox: true,\n style: 'multi'\n },\n columns: [\n {data: 'uuid'},\n {data: 'name'},\n {data: 'serials'},\n {data: 'quantity'},\n ],\n columnDefs: [\n {\n targets: 0,\n orderable: false,\n render:DataTable.render.select(),\n },\n {\n targets: 2,\n render: (data: any, type: any, full: any, meta: any) => {\n let html = `'\n return html;\n },\n },\n {\n targets: 3,\n render: (data: any, type: any, full: any, meta: any) => {\n return `
/
${data}
`;\n },\n }\n ],\n dom:\n '<\"row me-2 align-items-center\"' +\n '<\"col-md-12\"<\"dt-action-buttons text-xl-end text-lg-start text-md-end text-start d-flex align-items-center justify-content-end flex-md-row flex-column mb-3 mb-md-0\"fB>>' +\n '>t' +\n '<\"row mx-2 align-items-center justify-content-between\"' +\n '<\"col-12 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 });\n this.newItemsDatatable.on('select deselect', async () => {\n await this.generateWarehouseList()\n })\n this.createDataTable();\n await this.generateWarehouseList()\n }\n}"],"names":["bootstrap.Modal","pdfjsLib.GlobalWorkerOptions","pdfjsLib.getDocument","bootstrap.Offcanvas","document","data"],"mappings":"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"}