import { SharedPDFService } from '../../shared/shared-pdf.service'; import { PrintSharedService } from '../../shared/shared-print.service'; import { TrUtils } from '../../utils/tr-utils'; export class CreditNotePdfService { FontSize: number = 8; static GetInvoicePrint(ROPrintData: any, win: any, moreDiscDetails:boolean) { var dd = { info: { title: this.GetFileName(ROPrintData), }, background: function (currentPage: any, pageSize: any) { return SharedPDFService.GetWatermarkImage(ROPrintData.Image, pageSize, ROPrintData.Entity.Wmark); }, header: function (currentPage: any, pageCount: any) { return { text: currentPage.toString() + ' of ' + pageCount, alignment: 'right', marginRight: 7, fontSize: 8, marginTop: 2 }; }, pageMargins: [10, 15, 10, 15], content: [ this.CommonHeaderDetails(ROPrintData), this.PreparesparePartsTable(ROPrintData), this.CommonTotalDetails(ROPrintData, moreDiscDetails) ], styles: SharedPDFService.GetStyles() }; return dd; } static GetFileName(ROPrintData: any) { let fileName: string = ROPrintData.HeaderName; if (!TrUtils.IsNull(ROPrintData.Product) && !TrUtils.IsEmpty(ROPrintData.Product.RegNo)) { fileName = fileName + '-' + ROPrintData.Product.RegNo; } return fileName; } static CommonHeaderDetails(ROPrintData: any) { return [ this.GetMainHeaderDetails(ROPrintData.Entity, ROPrintData.HeaderName, ROPrintData.Image, ROPrintData.HColor, ROPrintData.AColor), SharedPDFService.GetCustomerAndVehicleDetails(ROPrintData._id, ROPrintData.CrDate, ROPrintData.PrDate, ROPrintData.MOut, ROPrintData.MIn, ROPrintData.Product, ROPrintData.PrintType, ROPrintData.For, ROPrintData.SurName, ROPrintData.SurPhone, ROPrintData.Type, ROPrintData.SurEmail, ROPrintData.InsComp, ROPrintData.PolNo, ROPrintData.PolType, ROPrintData.Customer, ROPrintData.IsProforma, ROPrintData.Settings, null, false, null, null,null,null, ROPrintData.DoS), SharedPDFService.GetOwnerDetails(ROPrintData.Cust, ROPrintData.Type, ROPrintData.For), SharedPDFService.CustomerAndVehicleDetailsAfterLine(), SharedPDFService.GetDisplayTable(), ]; } static GetMainHeaderDetails(Entity: any, HeaderName: any, Image: any, HColor: any, AColor: any) { return [ // SharedPDFService.MainHeading(Entity.CName, Entity.Header, Image, HColor, null), SharedPDFService.GetMainHeader(Entity, Image, AColor, HColor, null), SharedPDFService.GetPrintType(HeaderName), SharedPDFService.HeaderAfterLine() ]; } static PreparesparePartsTable(ROPrintData: any) { let List: any = []; if (ROPrintData.Entity.Body === 1) { for (let i = 0; i < ROPrintData.PrintInfo.length; i++) { if (TrUtils.IsNull(ROPrintData.PrintInfo[i].Text)) { ROPrintData.PrintInfo[i].Text = ''; } List.push(ROPrintData.PrintInfo[i].Text, this.GetLaborPartsTableForView(TrUtils.Stringify(ROPrintData.PrintInfo[i].Items), [], ROPrintData.Entity.MPN) ); } } else { if (ROPrintData.Entity.Body === 2) { for (let i = 0; i < ROPrintData.PrintInfo.length; i++) { if (TrUtils.IsNull(ROPrintData.PrintInfo[i].Text)) { ROPrintData.PrintInfo[i].Text = ''; } List.push(ROPrintData.PrintInfo[i].Text, this.WithOutDiscountFieldTable(TrUtils.Stringify(ROPrintData.PrintInfo[i].Items), [], ROPrintData.ShowTaxColumn, ROPrintData.Entity.MPN, ROPrintData.Entity.Body, ROPrintData.ShowIGST, ROPrintData.ConsolidateGST, ROPrintData.ShowDiscountColumn) ); } } else { if (ROPrintData.Summary) { List.push('', this.GetLaborPartsTableForView(ROPrintData.Items, [], ROPrintData.Entity.MPN) ); } else { for (let i = 0; i < ROPrintData.PrintInfo.length; i++) { if (TrUtils.IsNull(ROPrintData.PrintInfo[i].Text)) { ROPrintData.PrintInfo[i].Text = ''; } List.push(ROPrintData.PrintInfo[i].Text, this.GetWithOutDiscAndTaxFieldHeader(TrUtils.Stringify(ROPrintData.PrintInfo[i].Items), [], ROPrintData.ShowTaxColumn, ROPrintData.Entity.MPN, ROPrintData.Entity.Body, ROPrintData.ShowIGST, ROPrintData.ConsolidateGST, ROPrintData.ShowDiscountColumn) ); } } } } return List; } static GetLaborPartsTableForView(Parts: any, Ops: any, PrintPartNo: any) { if (Parts.length !== 0 || Ops.length !== 0) { if (PrintPartNo) { return { style: 'tableExample', // marginLeft: 20, table: { widths: [15, 30, 170, 85, 15, 20, 50, 30, 30, 60], // headerRows: 2, body: this.buildTableForCustomerLabor(Parts, Ops, PrintPartNo, false) }, layout: PrintSharedService.LayOutStyleanother() }; } else { return { style: 'tableExample', // marginLeft: 20, table: { widths: [15, 200, 55, 25, 55, 55, 40, 15, 60], // headerRows: 2, body: this.buildTableForCustomerLabor(Parts, Ops, PrintPartNo, false) }, layout: PrintSharedService.LayOutStyleanother() }; } } else { let a: any = ''; return a; } } static WithOutDiscountFieldTable(Parts: any, Ops: any, PrintPartNo: any, ShowTaxColumn: any, Body: any, ShowIGST: any, ConsolidateGST: any, ShowDiscountColumn: any) { if (Parts.length !== 0 || Ops.length !== 0) { if (PrintPartNo) { return { style: 'tableExample', marginLeft: 20, table: { widths: [15, 67, 160, 25, 50, 60, 30, 53], headerRows: 1, body: this.BuildTableBodyForLaborAndParts(Parts, Ops, PrintPartNo, ShowTaxColumn, Body, ShowIGST, ConsolidateGST, ShowDiscountColumn) }, layout: PrintSharedService.LayOutStyleanother() }; } else { return { style: 'tableExample', marginLeft: 20, table: { widths: [15, 215, 25, 50, 60, 45, 60], headerRows: 1, body: this.BuildTableBodyForLaborAndParts(Parts, Ops, PrintPartNo, ShowTaxColumn, Body, ShowIGST, ConsolidateGST, ShowDiscountColumn) }, layout: PrintSharedService.LayOutStyleanother() }; } } else { let a: any = ''; return a; } } static BuildTableBodyForLaborAndParts(Parts: any, Labor: any, PrintPartNo: any, ShowTaxColumn: any, Body: any, ShowIGST: any, ConsolidateGST: any, ShowDiscountColumn: any) { var body: any = []; let columns: any = PrintSharedService.GetWithOutDiscountFieldHeader(PrintPartNo, ShowTaxColumn, Body, ShowIGST, ShowDiscountColumn); // if (ShowTaxColumn) { for (let i = 0; i < columns.length; i++) { body.push(columns[i]); } columns = columns[1]; // } else { // body.push(columns); // } let DummyOps: any = []; if (Parts.length !== 0) { let dummypartadding1: any = {}; dummypartadding1.SNo = ''; dummypartadding1.Desc = 'Spare Parts'; dummypartadding1.Qty = ''; dummypartadding1.UnPr = ''; dummypartadding1.LineTotal = ''; Parts.unshift(dummypartadding1); } let SNo: number = 1; Parts.forEach((part: any) => { var dataRow: any = []; columns.forEach((column: any) => { if ( (!TrUtils.IsFixedZero(part[column.Field]) && !TrUtils.IsNull(part[column.Field])) || (column.text === 'Line Total')) { if (part[column.Field] === 'Spare Parts') { dataRow.push({ text: part[column.Field].toString(), marginLeft: 50, style: 'InlineHeader' }); } else { if (((column.Field === 'CGSTAmt' || column.Field === 'SGSTAmt' || column.Field === 'CGSTPerc' || column.Field === 'SGSTPerc' || column.Field === 'IGSTAmt' || column.Field === 'IGSTPerc') && TrUtils.CheckInvalidSelect(part.TCode))) { part[column.Field] = ''; dataRow.push({ text: part[column.Field].toString(), alignment: 'center' }); } else { if (column.text === 'Line Total' || column.Field === 'UnPr' || column.Field === 'QtyAndUoM' || column.text === 'Tax' || column.Field === 'Disc' || column.Field === 'CGSTAmt' || column.Field === 'SGSTAmt' || column.Field === 'CGSTPerc' || column.Field === 'SGSTPerc' || column.Field === 'IGSTAmt' || column.Field === 'IGSTPerc') { if (column.Field === 'Disc') { if (column.type === 'percentage') { if (!TrUtils.IsEmpty(part[column.Field])) { dataRow.push({ text: part[column.Field].toString(), noWrap: true }); } else { dataRow.push({ text: '', noWrap: true }); } } else { if (!TrUtils.IsZero(part[column.Field])) { dataRow.push({ text: part[column.Field].toString(), noWrap: true }); } else { dataRow.push({ text: '', noWrap: true }); } } } else { if (!TrUtils.IsZero(part[column.Field])) { dataRow.push({ text: part[column.Field].toString(), alignment: 'right', nowrap: true }); } else { dataRow.push({ text: '', noWrap: true }); } } } else { dataRow.push(part[column.Field].toString()); } } } } else { if (column.Field === 'SNo') { part[column.Field] = SNo; SNo = SNo + 1; } else { part[column.Field] = ''; } dataRow.push({ text: part[column.Field].toString(), alignment: 'center' }); } }); body.push(dataRow); }); if (Labor.length !== 0) { let dummypartadding1: any = {}; dummypartadding1.SNo = ''; dummypartadding1.Desc = 'Labor'; dummypartadding1.Qty = ''; dummypartadding1.UnPr = ''; dummypartadding1.LineTotal = ''; Labor.unshift(dummypartadding1); // DummyOps.unshift(dummypartadding1); } if (Body === 2) { for (let i = 0; i < Labor.length; i++) { Labor[i].UnPr = ''; } } // Labor.forEach((Ops: any) => { // var dataRow: any = []; // columns.forEach((column: any) => { // if ((!TrUtils.IsFixedZero(Ops[column.Field]) && !TrUtils.IsNull(Ops[column.Field])) // || (column.text === 'Line Total')) { // if (Ops[column.Field] === 'Labor') { // dataRow.push({ text: Ops[column.Field].toString(), marginLeft: 50, style: 'InlineHeader' }); // } else { // if (((column.Field === 'CGSTAmt' || column.Field === 'SGSTAmt' || column.Field === 'CGSTPerc' || column.Field === 'SGSTPerc' || column.Field === 'IGSTAmt' || column.Field === 'IGSTPerc') // && TrUtils.CheckInvalidSelect(Ops.TCode))) { // Ops[column.Field] = ''; // dataRow.push({ text: Ops[column.Field].toString(), alignment: 'center' }); // } else { // if (column.text === 'Line Total' || column.Field === 'Price' || column.text === 'Tax' || column.Field === 'UnPr' // || column.Field === 'QtyAndUoM' || column.Field === 'Disc' || column.Field === 'CGSTAmt' || column.Field === 'SGSTAmt' // || column.Field === 'CGSTPerc' || column.Field === 'SGSTPerc' || column.Field === 'IGSTAmt' || column.Field === 'IGSTPerc') { // if (column.Field === 'Disc') { // if (column.type === 'percentage') { // if (Ops.Perc && !TrUtils.IsZero(Ops[column.Field])) { // dataRow.push({ text: Ops[column.Field].toString(), noWrap: true }); // } else { // dataRow.push({ text: '', noWrap: true }); // } // } else { // if (!Ops.Perc && !TrUtils.IsZero(Ops[column.Field])) { // dataRow.push({ text: Ops[column.Field].toString(), noWrap: true }); // } else { // dataRow.push({ text: '', noWrap: true }); // } // } // } else { // if (!TrUtils.IsZero(Ops[column.Field])) { // dataRow.push({ text: Ops[column.Field].toString(), alignment: 'right', nowrap: true }); // } else { // dataRow.push({ text: '', noWrap: true }); // } // } // } else { // dataRow.push(Ops[column.Field].toString()); // } // } // } // } else { // if (column.Field === 'SNo') { // Ops[column.Field] = SNo; // SNo = SNo + 1; // } else { // Ops[column.Field] = ''; // } // dataRow.push({ text: Ops[column.Field].toString(), alignment: 'center' }); // } // }); // body.push(dataRow); // }); return body; } static GetWithOutDiscAndTaxFieldHeader(Parts: any, Ops: any, ShowTaxColumn: any, PrintPartNo: any, Body: any, ShowIGST: any, ConsolidateGST: any, ShowDiscountColumn: any) { if (Parts.length !== 0 || Ops.length !== 0) { if (ShowTaxColumn) { return this.TaxDataTable(Parts, Ops, PrintPartNo, ShowTaxColumn, Body, ShowIGST, ConsolidateGST, ShowDiscountColumn); } else { if (ConsolidateGST) { return this.ConsolidateDataTable(Parts, Ops, PrintPartNo, ShowTaxColumn, Body, ShowIGST, ConsolidateGST, ShowDiscountColumn); } else { return this.NoTaxDataTable(Parts, Ops, PrintPartNo, ShowTaxColumn, Body, ShowIGST, ConsolidateGST, ShowDiscountColumn); } } } else { let a: any = ''; return a; } } static TaxDataTable(Parts: any, Ops: any, PrintPartNo: any, ShowTaxColumn: any, Body: any, ShowIGST: any, ConsolidateGST: any, ShowDiscountColumn: any) { if (PrintPartNo) { if (ShowIGST) { return { style: 'tableExample', table: { widths: PrintSharedService.TaxTableWidths(PrintPartNo, ShowIGST, ShowDiscountColumn), // headerRows: 2, body: this.BuildTableBodyForLaborAndParts(Parts, Ops, PrintPartNo, ShowTaxColumn, Body, ShowIGST, ConsolidateGST, ShowDiscountColumn) }, layout: PrintSharedService.LayOutStyle() }; } else { return { style: 'tableExample', table: { widths: PrintSharedService.TaxTableWidths(PrintPartNo, ShowIGST, ShowDiscountColumn), // headerRows: 2, body: this.BuildTableBodyForLaborAndParts(Parts, Ops, PrintPartNo, ShowTaxColumn, Body, ShowIGST, ConsolidateGST, ShowDiscountColumn) }, layout: PrintSharedService.LayOutStyle() }; } } else { if (ShowIGST) { return { style: 'tableExample', table: { widths: PrintSharedService.TaxTableWidths(PrintPartNo, ShowIGST, ShowDiscountColumn), // headerRows: 2, body: this.BuildTableBodyForLaborAndParts(Parts, Ops, PrintPartNo, ShowTaxColumn, Body, ShowIGST, ConsolidateGST, ShowDiscountColumn) }, layout: PrintSharedService.LayOutStyle() }; } else { return { style: 'tableExample', table: { widths: PrintSharedService.TaxTableWidths(PrintPartNo, ShowIGST, ShowDiscountColumn), // headerRows: 2, body: this.BuildTableBodyForLaborAndParts(Parts, Ops, PrintPartNo, ShowTaxColumn, Body, ShowIGST, ConsolidateGST, ShowDiscountColumn) }, layout: PrintSharedService.LayOutStyle() }; } } } static ConsolidateDataTable(Parts: any, Ops: any, PrintPartNo: any, ShowTaxColumn: any, Body: any, ShowIGST: any, ConsolidateGST: any, ShowDiscountColumn: any) { if (PrintPartNo) { return { style: 'tableExample', table: { widths: [15, 70, 273, 25, 60, 80, 10, 40], // headerRows: 1, body: this.BuildTableBodyForLaborAndParts(Parts, Ops, PrintPartNo, ShowTaxColumn, Body, ShowIGST, ConsolidateGST, ShowDiscountColumn) }, layout: PrintSharedService.LayOutStyle() }; } else { return { style: 'tableExample', table: { widths: [20, 300, 50, 80, 80, 10, 40], // headerRows: 1, body: this.BuildTableBodyForLaborAndParts(Parts, Ops, PrintPartNo, ShowTaxColumn, Body, ShowIGST, ConsolidateGST, ShowDiscountColumn) }, layout: PrintSharedService.LayOutStyle() }; } } static NoTaxDataTable(Parts: any, Ops: any, PrintPartNo: any, ShowTaxColumn: any, Body: any, ShowIGST: any, ConsolidateGST: any, ShowDiscountColumn: any) { if (PrintPartNo) { return { style: 'tableExample', table: { widths: PrintSharedService.WidthForInsuranceOrNot(ShowDiscountColumn, PrintPartNo), // headerRows: 1, body: this.BuildTableBodyForLaborAndParts(Parts, Ops, PrintPartNo, ShowTaxColumn, Body, ShowIGST, ConsolidateGST, ShowDiscountColumn) }, layout: PrintSharedService.LayOutStyle() }; } else { return { style: 'tableExample', table: { widths: PrintSharedService.WidthForInsuranceOrNot(ShowDiscountColumn, PrintPartNo), // headerRows: 1, body: this.BuildTableBodyForLaborAndParts(Parts, Ops, PrintPartNo, ShowTaxColumn, Body, ShowIGST, ConsolidateGST, ShowDiscountColumn) }, layout: PrintSharedService.LayOutStyle() }; } } static buildTableForCustomerLabor(Parts: any, Ops: any, PrintPartNo: any, customerorInsurance: any) { var body: any = []; let columns: any; columns = this.getSummaryHeaders(PrintPartNo); body.push(columns); if (Parts.length !== 0) { let dummypartadding1: any = {}; dummypartadding1.SNo = ''; dummypartadding1.Desc = 'Spare Parts'; dummypartadding1.Qty = ''; dummypartadding1.UnPr = ''; dummypartadding1.Price = ''; dummypartadding1.DiscountedPrice = ''; dummypartadding1.LineTotal = ''; dummypartadding1.QtyAndUoM = ''; dummypartadding1.HSN = ''; dummypartadding1.MPN = ''; Parts.unshift(dummypartadding1); } let SNo: number = 1; Parts.forEach((part: any) => { var dataRow: any = []; columns.forEach((column: any) => { if (!TrUtils.IsFixedZero(part[column.Field]) && !TrUtils.IsNull(part[column.Field]) || column.text === 'Line Total') { if (part[column.Field] === 'Spare Parts') { dataRow.push({ text: part[column.Field].toString(), marginLeft: 50, style: 'InlineHeader' }); } else { // tslint:disable-next-line:max-line-length if (column.text === 'Line Total' || column.Field === 'QtyAndUoM' || column.Field === 'CustPrice' || column.Field === 'InsPrice' || column.Field === 'DiscountedPrice' || column.Field === 'TaxAmount' || column.Field === 'UnPr') { if (column.Field === 'Disc Amt') { dataRow.push({ text: part[column.Field].toString(), alignment: 'right', noWrap: true }); } else { dataRow.push({ text: part[column.Field].toString(), alignment: 'right', nowrap: true }); } } else { // dataRow.push({ text: part[column.Field].toString() }); if (column.Field === 'Desc') { let DescData: any = []; DescData.push(part[column.Field].toString()); if (!TrUtils.IsEmpty(part['EDesc'])) { DescData.push({ text: part['EDesc'].toString(), color: 'grey' }); } dataRow.push({ stack: DescData }); } else { dataRow.push({ text: part[column.Field].toString() }); } } } } else { if (column.Field === 'SNo') { part[column.Field] = SNo; SNo = SNo + 1; } else { part[column.Field] = ''; } dataRow.push({ text: part[column.Field].toString(), alignment: 'center' }); } }); body.push(dataRow); }); // if (Ops.length !== 0) { // let dummypartadding1: any = {}; // dummypartadding1.SNo = ''; // dummypartadding1.Desc = 'Labor'; // dummypartadding1.Qty = ''; // dummypartadding1.UnPr = ''; // dummypartadding1.Price = ''; // dummypartadding1.DiscountedPrice = ''; // dummypartadding1.LineTotal = ''; // dummypartadding1.QtyAndUoM = ''; // dummypartadding1.HSN = ''; // Ops.unshift(dummypartadding1); // } // Ops.forEach((labor: any) => { // var dataRow: any = []; // columns.forEach((column: any) => { // if (!TrUtils.IsFixedZero(labor[column.Field]) && !TrUtils.IsNull(labor[column.Field]) // || column.text === 'Line Total') { // if (labor[column.Field] === 'Labor') { // dataRow.push({ text: labor[column.Field].toString(), marginLeft: 50, style: 'InlineHeader' }); // } else { // if (column.text === 'Line Total' || column.Field === 'QtyAndUoM' || column.Field === 'DiscountedPrice' || column.Field === 'TaxAmount' // || column.Field === 'UnPr' || column.Field === 'CustPrice' || column.Field === 'InsPrice') { // if (column.Field === 'Disc Amt') { // dataRow.push({ text: labor[column.Field].toString(), alignment: 'right', noWrap: true }); // } else { // dataRow.push({ text: labor[column.Field].toString(), alignment: 'right', nowrap: true }); // } // } else { // dataRow.push({ text: labor[column.Field].toString() }); // } // } // } else { // if (column.Field === 'SNo') { // labor[column.Field] = SNo; // SNo = SNo + 1; // } else { // labor[column.Field] = ''; // } // dataRow.push({ text: labor[column.Field].toString(), alignment: 'center' }); // } // }); // body.push(dataRow); // }); return body; } static getSummaryHeaders(permission: boolean) { let headersNames: any = [{ text: 'Description', style: 'tableheader', Field: 'Desc' }, { text: 'HSN / SAC', style: 'tableheader', Field: 'SAC' }, { text: 'Qty', style: 'tableheader', Field: 'QtyAndUoM' }, // { text: 'Rate / Unit', style: 'tableheader', Field: 'UnPr' }, { text: 'Ins. Amt', style: 'tableheader', Field: 'AssPr' }, { text: 'Cust. Amt', style: 'tableheader', Field: 'Pr' }, { text: 'Disc.(Rs)', style: 'tableheader', Field: 'DiscountedPrice' }, { text: 'Tax %', style: 'tableheader', Field: 'TaxAmount' }, { text: 'Line Total', style: 'tableheader', Field: 'LineTotal' }]; if (permission) { let sno = { text: 'S.No.', style: 'tableheader', Field: 'SNo' }; let MPN = { text: 'Part No', style: 'tableheader', Field: 'MPN' }; headersNames.unshift(sno, MPN); } else { let sno = { text: 'S.No.', style: 'tableheader', Field: 'SNo' }; headersNames.unshift(sno); } return headersNames; } static CommonTotalDetails(ROPrintData: any, moreDiscDetails:boolean) { let CommonDetails = [ SharedPDFService.GetDebitTotalDetails(ROPrintData,0, 0, 0, 0, 0, ROPrintData.CustPartIGST, ROPrintData.ShowIGST, ROPrintData.ShowTaxColumn, ROPrintData.CustPartsTotalBeforeDisc, ROPrintData.CustPartsDiscTotal, ROPrintData.CustPartCGST, ROPrintData.CustPartSGST, ROPrintData.CustTaxGroupData, ROPrintData.ShowAccParts, ROPrintData.CustLaborAfterTax, ROPrintData.CustPartAfterTax, ROPrintData.FixedDisc, ROPrintData.For, ROPrintData.FixedTotal, ROPrintData.CustTotalRoundedBy, ROPrintData.CustRoundedTotal, ROPrintData.ShowTaxColumn, ROPrintData.ShowTaxColumn, TrUtils.isTaxable(ROPrintData.Settings.Tax), ROPrintData.CustLaborITax, ROPrintData.CustPartITax, ROPrintData.Consolidate, ROPrintData.From, moreDiscDetails), SharedPDFService.InvoiceDueStatus(ROPrintData.Type, ROPrintData.Paid, ROPrintData.Due, ROPrintData.Sts, false, ROPrintData.Entity.DecimalsNumber), SharedPDFService.GetTemsAndConditions(ROPrintData.Entity.Terms), SharedPDFService.GetUnderLine(), SharedPDFService.GetSignatures(ROPrintData.Entity.CName, ROPrintData.Type, ROPrintData.For), ]; if (ROPrintData.Type !== 'Invoice') { CommonDetails.splice(2, 0, SharedPDFService.GetUnderLine()); } return CommonDetails; } }