import { MyDate } from '../../../../utils/my-date'; import { TrUtils } from '../../../../utils/tr-utils'; export class ReorderPointPDFService { static GetPrint(ReOrderPointData: any) { // console.log('ReOrderPointData', ReOrderPointData); let dd: any = { // info: { // title: this.GetFileName(ROPrintData), // }, info: { title: 'ReOrderPoint', }, header: function (currentPage: any, pageCount: any, pageSize: any) { return { text: currentPage.toString() + ' of ' + pageCount, alignment: 'right', marginRight: 25, fontSize: 8, marginTop: 2 }; }, pageMargins: [25, 15, 25, 15], pageSize: 'A4', content: [ { text: ReOrderPointData.Entity.CName, style: ['headerstyle'], alignment: 'center', fontSize: 20 }, { text: 'Reorder Point (' + 'As of ' + MyDate.ConvertUTCDateToReadable(MyDate.GetDateTimeNowInUTC(ReOrderPointData.Entity.User.TZ)) + ')', style: ['headerstyle'], alignment: 'center', fontSize: 12 }, { text: 'Items need to be Ordered', style: ['headerstyle'], alignment: 'left', fontSize: 10, marginTop: 10, decoration: 'underline' }, this.GetItemsTable(ReOrderPointData.Items), this.GetSignatures(ReOrderPointData.Entity.CName, ReOrderPointData.Type, ReOrderPointData.For), ], styles: { headerstyle: { fontFamily: 'Calibri', fontSize: 9 }, Sign: { fontSize: 8, margin: [0, 30, 0, 5] }, forCompany: { // margin: [0, 10, 30, 0], marginRight: 5, marginTop: 10, fontSize: 9, alignment: 'right' }, tableheader: { bold: true, fontFamily: 'Calibri', margin: [0, 1, 0, 5], alignment: 'center' }, tableheader1: { bold: true, fontFamily: 'Calibri', margin: [0, 2, 0, 2], alignment: 'center' }, tableExample: { fontSize: 9 } } }; return dd; } static CustomerAndVehicleDetailsAfterLine() { return { canvas: [ { type: 'line', lineColor: 'gray', x1: 0, y1: 0, x2: 575, y2: 0, lineWidth: 1 } ] }; } static GetSignatures(CName: any, For: any, Type: any) { return { columns: [{ stack: [ this.CompanyName(CName), ] }], }; } static CompanyName(CName: any) { return { style: 'forCompany', text: ['For ', { text: CName, }], }; } static GetItemsTable(Items: any) { return { style: 'tableExample', marginTop: 3, marginBottom: 5, table: { widths: ['*', 70, 50, 50, 'auto'], headerRows: 1, body: this.BuildTableBodyForLaborAndParts(Items) }, layout: { hLineWidth: function (i:any, node:any) { return (i === 0 || i === 1 || i === node.table.body.length) ? 1 : 0.5; }, vLineWidth: function (i:any, node:any) { return (i === 0 || i === node.table.widths.length) ? 1 : 0.5; }, hLineColor: function (i: any, node: any) { return (i === 0 || i === 1 || i === node.table.body.length) ? 'gray' : 'lightgrey'; }, vLineColor: function (i: any, node: any) { return 'gray'; }, } }; } static BuildTableBodyForLaborAndParts(Items: any) { let body: any = this.GetHeaderNames(); Items.forEach((item: any, index: any) => { let dataRow: any = []; let VName: any; if (TrUtils.IsNull(item?.Vendor) || TrUtils.IsNull(item?.Vendor[0])) { VName = ''; } else { VName = item?.Vendor[0]?.DName; } dataRow.push({ text: item.Name, }); dataRow.push({ text: item.Qty, alignment: 'right', style: ['headerstyle'], }); dataRow.push({ text: item.Min, alignment: 'right', style: ['headerstyle'], }); dataRow.push({ text: item.Max, alignment: 'right', style: ['headerstyle'], }); dataRow.push({ text: VName, alignment: 'left', style: ['headerstyle'], }); body.push(dataRow); }); return body; } static GetHeaderNames() { let HeadingNames: any; HeadingNames = [[{ text: 'Name', style: 'tableheader1', Field: 'Name', alignment: 'left', line: true }, { text: 'Qty On Hand', style: 'tableheader1', Field: 'Qty', alignment: 'right' }, { text: 'Min Qty', style: 'tableheader1', Field: 'Min', alignment: 'right' }, { text: 'Max Qty', style: 'tableheader1', Field: 'Max', alignment: 'right' }, { text: 'Vendor', style: 'tableheader1', Field: 'Vendor', alignment: 'left' }, ]]; return HeadingNames; } }