Subversion Repositories SmartDukaan

Rev

Rev 23568 | Rev 24215 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 23568 Rev 23654
Line 18... Line 18...
18
import com.itextpdf.text.Paragraph;
18
import com.itextpdf.text.Paragraph;
19
import com.itextpdf.text.Rectangle;
19
import com.itextpdf.text.Rectangle;
20
import com.itextpdf.text.pdf.PdfPCell;
20
import com.itextpdf.text.pdf.PdfPCell;
21
import com.itextpdf.text.pdf.PdfPTable;
21
import com.itextpdf.text.pdf.PdfPTable;
22
import com.itextpdf.text.pdf.PdfWriter;
22
import com.itextpdf.text.pdf.PdfWriter;
-
 
23
import com.spice.profitmandi.common.model.CreditNotePdfModel;
23
import com.spice.profitmandi.common.model.CustomCustomer;
24
import com.spice.profitmandi.common.model.CustomCustomer;
24
import com.spice.profitmandi.common.model.CustomInsurancePolicy;
25
import com.spice.profitmandi.common.model.CustomInsurancePolicy;
25
import com.spice.profitmandi.common.model.CustomOrderItem;
26
import com.spice.profitmandi.common.model.CustomOrderItem;
26
import com.spice.profitmandi.common.model.CustomPaymentOption;
27
import com.spice.profitmandi.common.model.CustomPaymentOption;
27
import com.spice.profitmandi.common.model.CustomRetailer;
28
import com.spice.profitmandi.common.model.CustomRetailer;
Line 36... Line 37...
36
	// private static Font fontTableHeader = new
37
	// private static Font fontTableHeader = new
37
	// Font(Font.FontFamily.TIMES_ROMAN, 14, Font.BOLD);
38
	// Font(Font.FontFamily.TIMES_ROMAN, 14, Font.BOLD);
38
	private static final String INVOICE_TITLE = "TAX INVOICE";
39
	private static final String INVOICE_TITLE = "TAX INVOICE";
39
	private static final String DEBIT_NOTE_TITLE = "DEBIT NOTE";
40
	private static final String DEBIT_NOTE_TITLE = "DEBIT NOTE";
40
 
41
 
41
	private static float[] igstWidthsWithDiscount = new float[] { .3f, 2.6f, 0.7f, .4f, 0.7f, 0.5f, .7f, .6f, 0.6f, 0.9f };
42
	private static float[] igstWidthsWithDiscount = new float[] { .3f, 2.6f, 0.7f, .4f, 0.7f, 0.5f, .7f, .6f, 0.6f,
-
 
43
			0.9f };
42
	private static float[] stateWidthsWithDiscount = new float[] { .3f, 2.1f, 0.7f, .3f, 0.6f, 0.4f, .7f, .5f, .6f, .5f,
44
	private static float[] stateWidthsWithDiscount = new float[] { .3f, 2.1f, 0.7f, .3f, 0.6f, 0.4f, .7f, .5f, .6f, .5f,
43
			.6f, .8f };
45
			.6f, .8f };
44
 
46
 
45
	private static float[] igstWidths = new float[] { .6f, 2.6f, 0.7f, .4f, 0.7f, .7f, .6f, 0.6f, 0.9f };
47
	private static float[] igstWidths = new float[] { .6f, 2.6f, 0.7f, .4f, 0.7f, .7f, .6f, 0.6f, 0.9f };
46
	private static float[] stateWidths = new float[] { .6f, 2.1f, 0.7f, .3f, 0.6f, .7f, .5f, .6f, .5f, .6f, .8f };
48
	private static float[] stateWidths = new float[] { .6f, 2.1f, 0.7f, .3f, 0.6f, .7f, .5f, .6f, .5f, .6f, .8f };
47
 
49
 
-
 
50
	private static float[] igstWidthsCrNote = new float[] { 2.6f, 0.7f, .4f, 0.7f, .7f, .6f, 0.6f, 0.9f };
-
 
51
	private static float[] stateWidthsCrNote = new float[] { 2.1f, 0.7f, .3f, 0.6f, .7f, .5f, .6f, .5f, .6f, .8f };
-
 
52
 
48
	private static final Locale indianLocale = Locale.getDefault();
53
	private static final Locale indianLocale = Locale.getDefault();
49
 
54
 
50
	private static final Logger LOGGER = LogManager.getLogger(PdfUtils.class);
55
	private static final Logger LOGGER = LogManager.getLogger(PdfUtils.class);
51
 
56
 
52
	public static void generateAndWrite(PdfModel pdfModel, OutputStream outputStream) {
57
	public static void generateAndWrite(PdfModel pdfModel, OutputStream outputStream) {
Line 233... Line 238...
233
 
238
 
234
			PdfPTable grandTotalTable = new PdfPTable(3);
239
			PdfPTable grandTotalTable = new PdfPTable(3);
235
			PdfPTable paymentsTable = new PdfPTable(2);
240
			PdfPTable paymentsTable = new PdfPTable(2);
236
			paymentsTable.setWidthPercentage(95);
241
			paymentsTable.setWidthPercentage(95);
237
			paymentsTable.setWidths(new float[] { 8f, 2f });
242
			paymentsTable.setWidths(new float[] { 8f, 2f });
238
			
-
 
239
			
243
 
240
			if (stateGst) {
244
			if (stateGst) {
241
				grandTotalTable.setWidths(new float[] { 6.6f, .6f, .8f });
245
				grandTotalTable.setWidths(new float[] { 6.6f, .6f, .8f });
242
			} else {
246
			} else {
243
				grandTotalTable.setWidths(new float[] { 6.5f, .6f, .9f });
247
				grandTotalTable.setWidths(new float[] { 6.5f, .6f, .9f });
244
			}
248
			}
Line 265... Line 269...
265
 
269
 
266
			String amountInWords = toAmountInWords(pdfModel.getTotalAmount());
270
			String amountInWords = toAmountInWords(pdfModel.getTotalAmount());
267
			amountInWordsTable.addCell(new Paragraph(amountInWords.toString(), FONT_BOLD));
271
			amountInWordsTable.addCell(new Paragraph(amountInWords.toString(), FONT_BOLD));
268
			amountInWordsTable.addCell(new Paragraph("E & O.E", FONT_NORMAL));
272
			amountInWordsTable.addCell(new Paragraph("E & O.E", FONT_NORMAL));
269
			document.add(amountInWordsTable);
273
			document.add(amountInWordsTable);
270
			
274
 
271
			if(pdfModel.getPaymentOptions() != null) {
275
			if (pdfModel.getPaymentOptions() != null) {
272
				PdfPTable paidAmountTable = new PdfPTable(2);
276
				PdfPTable paidAmountTable = new PdfPTable(2);
273
				paidAmountTable.setWidthPercentage(90);
277
				paidAmountTable.setWidthPercentage(90);
274
				if (!stateGst) {
278
				if (!stateGst) {
275
					paidAmountTable.setWidths(new float[] { 7.1f, 0.9f });
279
					paidAmountTable.setWidths(new float[] { 7.1f, 0.9f });
276
				} else {
280
				} else {
277
					paidAmountTable.setWidths(new float[] { 7.2f, 0.8f });
281
					paidAmountTable.setWidths(new float[] { 7.2f, 0.8f });
278
				}
282
				}
279
				float totalPaidValue = 0;
283
				float totalPaidValue = 0;
280
				for(CustomPaymentOption paymentOption : pdfModel.getPaymentOptions()) {
284
				for (CustomPaymentOption paymentOption : pdfModel.getPaymentOptions()) {
-
 
285
					PdfPCell cell = new PdfPCell(
281
					PdfPCell cell = new PdfPCell(new Paragraph(10, "Paid Through " + paymentOption.getPaymentOption(), FONT_BOLD));
286
							new Paragraph(10, "Paid Through " + paymentOption.getPaymentOption(), FONT_BOLD));
282
					cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
287
					cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
283
					cell.setPadding(5);
288
					cell.setPadding(5);
284
					paidAmountTable.addCell(cell);
289
					paidAmountTable.addCell(cell);
285
 
290
 
-
 
291
					PdfPCell cell1 = new PdfPCell(new Paragraph(10,
286
					PdfPCell cell1 = new PdfPCell(new Paragraph(10, FormattingUtils.formatDecimalTwoDigits(paymentOption.getAmount()), FONT_BOLD));
292
							FormattingUtils.formatDecimalTwoDigits(paymentOption.getAmount()), FONT_BOLD));
287
					cell1.setPadding(5);
293
					cell1.setPadding(5);
288
					paidAmountTable.addCell(cell1);
294
					paidAmountTable.addCell(cell1);
289
					totalPaidValue += paymentOption.getAmount();
295
					totalPaidValue += paymentOption.getAmount();
290
					
296
 
291
				}
297
				}
292
				PdfPCell totalPaidCell = new PdfPCell(new Paragraph(10, "Total Paid", FONT_BOLD));
298
				PdfPCell totalPaidCell = new PdfPCell(new Paragraph(10, "Total Paid", FONT_BOLD));
293
				totalPaidCell.setHorizontalAlignment(Element.ALIGN_RIGHT);
299
				totalPaidCell.setHorizontalAlignment(Element.ALIGN_RIGHT);
294
				totalPaidCell.setPadding(5);
300
				totalPaidCell.setPadding(5);
295
				paidAmountTable.addCell(totalPaidCell);
301
				paidAmountTable.addCell(totalPaidCell);
296
				
302
 
-
 
303
				PdfPCell totalPaidValueCell = new PdfPCell(
297
				PdfPCell totalPaidValueCell = new PdfPCell(new Paragraph(10, FormattingUtils.formatDecimalTwoDigits(totalPaidValue), FONT_BOLD));
304
						new Paragraph(10, FormattingUtils.formatDecimalTwoDigits(totalPaidValue), FONT_BOLD));
298
				totalPaidValueCell.setPadding(5);
305
				totalPaidValueCell.setPadding(5);
299
				paidAmountTable.addCell(totalPaidValueCell);
306
				paidAmountTable.addCell(totalPaidValueCell);
300
				
307
 
301
				document.add(paidAmountTable);
308
				document.add(paidAmountTable);
302
			}
309
			}
303
 
310
 
304
			StringBuffer sb = new StringBuffer();
311
			StringBuffer sb = new StringBuffer();
305
			List<String> tncs = pdfModel.getTncs();
312
			List<String> tncs = pdfModel.getTncs();
Line 348... Line 355...
348
 
355
 
349
				document.open();
356
				document.open();
350
				document.addTitle(pdfModel.getTitle());
357
				document.addTitle(pdfModel.getTitle());
351
				document.addAuthor(pdfModel.getAuther());
358
				document.addAuthor(pdfModel.getAuther());
352
 
359
 
353
				Paragraph paragraphTitle = new Paragraph(DEBIT_NOTE_TITLE, FONT_TITLE);
360
				Paragraph paragraphTitle = new Paragraph(pdfModel.getTitle(), FONT_TITLE);
354
				paragraphTitle.setAlignment(Element.ALIGN_CENTER);
361
				paragraphTitle.setAlignment(Element.ALIGN_CENTER);
355
 
362
 
356
				PdfPCell blankCell = new PdfPCell();
363
				PdfPCell blankCell = new PdfPCell();
357
				blankCell.setBorder(Rectangle.NO_BORDER);
364
				blankCell.setBorder(Rectangle.NO_BORDER);
358
				PdfPTable tableCustomerRetailer = new PdfPTable(3);
365
				PdfPTable tableCustomerRetailer = new PdfPTable(3);
359
				tableCustomerRetailer.setWidthPercentage(95);
366
				tableCustomerRetailer.setWidthPercentage(95);
360
				PdfPCell partnerInfo = new PdfPCell();
367
				PdfPCell partnerInfo = new PdfPCell();
361
				partnerInfo.addElement(new Paragraph("From Party:", FONT_BOLD));
368
				partnerInfo.addElement(new Paragraph("From Party:", FONT_BOLD));
-
 
369
				partnerInfo.addElement(
362
				partnerInfo.addElement(new Paragraph(StringUtils.capitalize(customer.getAddress().getName()), FONT_NORMAL));
370
						new Paragraph(StringUtils.capitalize(customer.getAddress().getName()), FONT_NORMAL));
-
 
371
				partnerInfo.addElement(new Paragraph(
363
				partnerInfo.addElement(new Paragraph(StringUtils.capitalize(customer.getAddress().getLine1()) + ", " 
372
						StringUtils.capitalize(customer.getAddress().getLine1()) + ", "
364
						+ (customer.getAddress().getLine2() == null ? "" : StringUtils.capitalize(customer.getAddress().getLine2())) 
373
								+ (customer.getAddress().getLine2() == null ? ""
365
						+ ", " + customer.getAddress().getCity()
374
										: StringUtils.capitalize(customer.getAddress().getLine2()))
366
						+ " - "+ customer.getAddress().getPinCode(), FONT_NORMAL));
375
								+ ", " + customer.getAddress().getCity() + " - " + customer.getAddress().getPinCode(),
-
 
376
						FONT_NORMAL));
367
				
377
 
368
				partnerInfo.addElement(new Paragraph(StringUtils.capitalize(customer.getAddress().getState()) 
378
				partnerInfo.addElement(new Paragraph(
369
						+ "("+ customerAddressStateCode + ")", FONT_NORMAL));
379
						StringUtils.capitalize(customer.getAddress().getState()) + "(" + customerAddressStateCode + ")",
-
 
380
						FONT_NORMAL));
370
				partnerInfo.addElement(new Paragraph("Mobile - " + customer.getMobileNumber(), FONT_NORMAL));
381
				partnerInfo.addElement(new Paragraph("Mobile - " + customer.getMobileNumber(), FONT_NORMAL));
371
				if (customer.getGstNumber() != null && !customer.getGstNumber().isEmpty()) {
382
				if (customer.getGstNumber() != null && !customer.getGstNumber().isEmpty()) {
372
					partnerInfo.addElement(new Paragraph("GST No - " + customer.getGstNumber(), FONT_BOLD));
383
					partnerInfo.addElement(new Paragraph("GST No - " + customer.getGstNumber(), FONT_BOLD));
373
				}
384
				}
374
 
385
 
375
				PdfPCell sellerParty = new PdfPCell();
386
				PdfPCell sellerParty = new PdfPCell();
376
				sellerParty.addElement(new Paragraph("To Party:", FONT_BOLD));
387
				sellerParty.addElement(new Paragraph("To Party:", FONT_BOLD));
-
 
388
				sellerParty.addElement(
377
				sellerParty.addElement(new Paragraph(StringUtils.capitalize(retailer.getAddress().getName()), FONT_NORMAL));
389
						new Paragraph(StringUtils.capitalize(retailer.getAddress().getName()), FONT_NORMAL));
-
 
390
				sellerParty.addElement(new Paragraph((retailer.getAddress().getLine1() == null ? ""
-
 
391
						: StringUtils.capitalize(retailer.getAddress().getLine1()) + ", ")
-
 
392
						+ (retailer.getAddress().getLine2() == null ? ""
-
 
393
								: StringUtils.capitalize(retailer.getAddress().getLine2()) + ", ")
-
 
394
						+ StringUtils.capitalize(retailer.getAddress().getCity()) + "-"
-
 
395
						+ retailer.getAddress().getPinCode() + ", ", FONT_NORMAL));
378
				sellerParty.addElement(new Paragraph(
396
				sellerParty.addElement(new Paragraph(
379
								(retailer.getAddress().getLine1() == null ? ""
-
 
380
										: StringUtils.capitalize(retailer.getAddress().getLine1()) + ", ")
-
 
381
										+ (retailer.getAddress().getLine2() == null ? ""
-
 
382
												: StringUtils.capitalize(retailer.getAddress().getLine2()) + ", ")
-
 
383
										+ StringUtils.capitalize(retailer.getAddress().getCity()) + "-"
-
 
384
										+ retailer.getAddress().getPinCode() + ", ",  FONT_NORMAL));	
-
 
385
				sellerParty.addElement(new Paragraph(retailer.getAddress().getState() + "(" + retailerAddressStateCode + ")", FONT_NORMAL));
397
						retailer.getAddress().getState() + "(" + retailerAddressStateCode + ")", FONT_NORMAL));
-
 
398
				sellerParty
386
				sellerParty.addElement(new Paragraph("Mobile - " + retailer.getAddress().getPhoneNumber(), FONT_NORMAL));
399
						.addElement(new Paragraph("Mobile - " + retailer.getAddress().getPhoneNumber(), FONT_NORMAL));
387
				sellerParty.addElement(new Paragraph("GST No - " + retailer.getGstNumber(), FONT_BOLD));
400
				sellerParty.addElement(new Paragraph("GST No - " + retailer.getGstNumber(), FONT_BOLD));
388
 
401
 
389
				PdfPTable tableInvoiceDateRetailer = new PdfPTable(1);
402
				PdfPTable tableInvoiceDateRetailer = new PdfPTable(1);
390
				tableInvoiceDateRetailer.getDefaultCell().setBorder(Rectangle.NO_BORDER);
403
				tableInvoiceDateRetailer.getDefaultCell().setBorder(Rectangle.NO_BORDER);
391
 
404
 
Line 394... Line 407...
394
				tableInvoiceDate.setWidthPercentage(90);
407
				tableInvoiceDate.setWidthPercentage(90);
395
 
408
 
396
				PdfPCell debitNoteDetails = new PdfPCell(new Paragraph("Debit Note Details", FONT_BOLD));
409
				PdfPCell debitNoteDetails = new PdfPCell(new Paragraph("Debit Note Details", FONT_BOLD));
397
				debitNoteDetails.setColspan(2);
410
				debitNoteDetails.setColspan(2);
398
				debitNoteDetails.setBorder(Rectangle.NO_BORDER);
411
				debitNoteDetails.setBorder(Rectangle.NO_BORDER);
399
				
412
 
400
				PdfPCell debitNoteNumberKey = new PdfPCell(new Paragraph("Debit Note No:", FONT_NORMAL));
413
				PdfPCell debitNoteNumberKey = new PdfPCell(new Paragraph("Debit Note No:", FONT_NORMAL));
401
				debitNoteNumberKey.setBorder(Rectangle.NO_BORDER);
414
				debitNoteNumberKey.setBorder(Rectangle.NO_BORDER);
-
 
415
				PdfPCell debitNoteNumberValue = new PdfPCell(
402
				PdfPCell debitNoteNumberValue = new PdfPCell(new Paragraph(debitNotePdfModel.getDebitNoteNumber(), FONT_NORMAL));
416
						new Paragraph(debitNotePdfModel.getDebitNoteNumber(), FONT_NORMAL));
403
				debitNoteNumberValue.setBorder(Rectangle.NO_BORDER);
417
				debitNoteNumberValue.setBorder(Rectangle.NO_BORDER);
404
 
418
 
405
				PdfPCell debitNoteDateKey = new PdfPCell(new Paragraph("Debit Note Dt:", FONT_NORMAL));
419
				PdfPCell debitNoteDateKey = new PdfPCell(new Paragraph("Debit Note Dt:", FONT_NORMAL));
406
				debitNoteDateKey.setBorder(Rectangle.NO_BORDER);
420
				debitNoteDateKey.setBorder(Rectangle.NO_BORDER);
407
 
421
 
Line 549... Line 563...
549
		amountInWords.append(" and ");
563
		amountInWords.append(" and ");
550
		amountInWords.append(StringUtils.capitalize(amountInWordsFormat.format((int) (amount * 100) % 100)));
564
		amountInWords.append(StringUtils.capitalize(amountInWordsFormat.format((int) (amount * 100) % 100)));
551
		amountInWords.append(" paise");
565
		amountInWords.append(" paise");
552
		return amountInWords.toString();
566
		return amountInWords.toString();
553
	}
567
	}
-
 
568
 
-
 
569
	public static void generateAndWriteCustomerCreditNotes(List<CreditNotePdfModel> creditNotes, OutputStream outputStream) {
-
 
570
		Document document = new Document();
-
 
571
		document.setMargins(0, 0, 25, 0);
-
 
572
		try {
-
 
573
			PdfWriter.getInstance(document, outputStream);
-
 
574
			
-
 
575
			document.open();
-
 
576
			document.addTitle(creditNotes.get(0).getPdfModel().getTitle());
-
 
577
			document.addAuthor(creditNotes.get(0).getPdfModel().getAuther());
-
 
578
			for (CreditNotePdfModel creditNotePdfModel : creditNotes) {
-
 
579
				PdfModel pdfModel = creditNotePdfModel.getPdfModel();
-
 
580
				CustomCustomer customer = pdfModel.getCustomer();
-
 
581
				CustomRetailer retailer = pdfModel.getRetailer();
-
 
582
				boolean stateGst = false;
-
 
583
				String customerAddressStateCode = "", retailerAddressStateCode = "";
-
 
584
				if (customer.getAddress().getState().equals(retailer.getAddress().getState())) {
-
 
585
					stateGst = true;
-
 
586
					customerAddressStateCode = Utils.getStateCode(customer.getAddress().getState());
-
 
587
					retailerAddressStateCode = customerAddressStateCode;
-
 
588
				} else {
-
 
589
					customerAddressStateCode = Utils.getStateCode(customer.getAddress().getState());
-
 
590
					retailerAddressStateCode = Utils.getStateCode(retailer.getAddress().getState());
-
 
591
				}
-
 
592
				Set<CustomOrderItem> orderItems = pdfModel.getOrderItems();
-
 
593
 
-
 
594
 
-
 
595
				Paragraph paragraphTitle = new Paragraph(pdfModel.getTitle(), FONT_TITLE);
-
 
596
				paragraphTitle.setAlignment(Element.ALIGN_CENTER);
-
 
597
 
-
 
598
				PdfPCell blankCell = new PdfPCell();
-
 
599
				blankCell.setBorder(Rectangle.NO_BORDER);
-
 
600
				PdfPTable tableCustomerRetailer = new PdfPTable(3);
-
 
601
				tableCustomerRetailer.setWidthPercentage(95);
-
 
602
				PdfPCell partnerInfo = new PdfPCell();
-
 
603
				partnerInfo.addElement(new Paragraph("To Party:", FONT_BOLD));
-
 
604
				partnerInfo.addElement(
-
 
605
						new Paragraph(StringUtils.capitalize(customer.getAddress().getName()), FONT_NORMAL));
-
 
606
				partnerInfo.addElement(new Paragraph(
-
 
607
						StringUtils.capitalize(customer.getAddress().getLine1()) + ", "
-
 
608
								+ (customer.getAddress().getLine2() == null ? ""
-
 
609
										: StringUtils.capitalize(customer.getAddress().getLine2()))
-
 
610
								+ ", " + customer.getAddress().getCity() + " - " + customer.getAddress().getPinCode(),
-
 
611
						FONT_NORMAL));
-
 
612
 
-
 
613
				partnerInfo.addElement(new Paragraph(
-
 
614
						StringUtils.capitalize(customer.getAddress().getState()) + "(" + customerAddressStateCode + ")",
-
 
615
						FONT_NORMAL));
-
 
616
				partnerInfo.addElement(new Paragraph("Mobile - " + customer.getMobileNumber(), FONT_NORMAL));
-
 
617
				if (customer.getGstNumber() != null && !customer.getGstNumber().isEmpty()) {
-
 
618
					partnerInfo.addElement(new Paragraph("GST No - " + customer.getGstNumber(), FONT_BOLD));
-
 
619
				}
-
 
620
 
-
 
621
				PdfPCell sellerParty = new PdfPCell();
-
 
622
				sellerParty.addElement(new Paragraph("From Party:", FONT_BOLD));
-
 
623
				sellerParty.addElement(
-
 
624
						new Paragraph(StringUtils.capitalize(retailer.getAddress().getName()), FONT_NORMAL));
-
 
625
				sellerParty.addElement(new Paragraph((retailer.getAddress().getLine1() == null ? ""
-
 
626
						: StringUtils.capitalize(retailer.getAddress().getLine1()) + ", ")
-
 
627
						+ (retailer.getAddress().getLine2() == null ? ""
-
 
628
								: StringUtils.capitalize(retailer.getAddress().getLine2()) + ", ")
-
 
629
						+ StringUtils.capitalize(retailer.getAddress().getCity()) + "-"
-
 
630
						+ retailer.getAddress().getPinCode() + ", ", FONT_NORMAL));
-
 
631
				sellerParty.addElement(new Paragraph(
-
 
632
						retailer.getAddress().getState() + "(" + retailerAddressStateCode + ")", FONT_NORMAL));
-
 
633
				sellerParty
-
 
634
						.addElement(new Paragraph("Mobile - " + retailer.getAddress().getPhoneNumber(), FONT_NORMAL));
-
 
635
				sellerParty.addElement(new Paragraph("GST No - " + retailer.getGstNumber(), FONT_BOLD));
-
 
636
 
-
 
637
				PdfPTable tableInvoiceDateRetailer = new PdfPTable(1);
-
 
638
				tableInvoiceDateRetailer.getDefaultCell().setBorder(Rectangle.NO_BORDER);
-
 
639
 
-
 
640
				PdfPTable tableInvoiceDate = new PdfPTable(2);
-
 
641
				tableInvoiceDate.getDefaultCell().setBorder(Rectangle.NO_BORDER);
-
 
642
				tableInvoiceDate.setWidthPercentage(90);
-
 
643
 
-
 
644
				PdfPCell debitNoteDetails = new PdfPCell(new Paragraph("Credit Note Details", FONT_BOLD));
-
 
645
				debitNoteDetails.setColspan(2);
-
 
646
				debitNoteDetails.setBorder(Rectangle.NO_BORDER);
-
 
647
 
-
 
648
				PdfPCell debitNoteNumberKey = new PdfPCell(new Paragraph("Credit Note No:", FONT_NORMAL));
-
 
649
				debitNoteNumberKey.setBorder(Rectangle.NO_BORDER);
-
 
650
				PdfPCell debitNoteNumberValue = new PdfPCell(
-
 
651
						new Paragraph(creditNotePdfModel.getCreditNoteNumber(), FONT_NORMAL));
-
 
652
				debitNoteNumberValue.setBorder(Rectangle.NO_BORDER);
-
 
653
 
-
 
654
				PdfPCell debitNoteDateKey = new PdfPCell(new Paragraph("Credit Note Dt:", FONT_NORMAL));
-
 
655
				debitNoteDateKey.setBorder(Rectangle.NO_BORDER);
-
 
656
 
-
 
657
				PdfPCell debitNoteDateValue = new PdfPCell(
-
 
658
						new Paragraph(creditNotePdfModel.getCreditNoteDate(), FONT_NORMAL));
-
 
659
				debitNoteDateValue.setBorder(Rectangle.NO_BORDER);
-
 
660
 
-
 
661
				PdfPCell invoiceNumberKey = new PdfPCell(new Paragraph("Invoice Ref No:", FONT_NORMAL));
-
 
662
				invoiceNumberKey.setBorder(Rectangle.NO_BORDER);
-
 
663
				PdfPCell invoiceNumberValue = new PdfPCell(new Paragraph(pdfModel.getInvoiceNumber(), FONT_NORMAL));
-
 
664
				invoiceNumberValue.setBorder(Rectangle.NO_BORDER);
-
 
665
 
-
 
666
				PdfPCell dateKey = new PdfPCell(new Paragraph("Invoice Dt:", FONT_NORMAL));
-
 
667
				dateKey.setBorder(Rectangle.NO_BORDER);
-
 
668
				PdfPCell dateValue = new PdfPCell(new Paragraph(pdfModel.getInvoiceDate(), FONT_NORMAL));
-
 
669
				dateValue.setBorder(Rectangle.NO_BORDER);
-
 
670
 
-
 
671
				tableInvoiceDate.addCell(debitNoteDetails);
-
 
672
				tableInvoiceDate.addCell(debitNoteNumberKey);
-
 
673
				tableInvoiceDate.addCell(debitNoteNumberValue);
-
 
674
				tableInvoiceDate.addCell(debitNoteDateKey);
-
 
675
				tableInvoiceDate.addCell(debitNoteDateValue);
-
 
676
				tableInvoiceDate.addCell(invoiceNumberKey);
-
 
677
				tableInvoiceDate.addCell(invoiceNumberValue);
-
 
678
				tableInvoiceDate.addCell(dateKey);
-
 
679
				tableInvoiceDate.addCell(dateValue);
-
 
680
 
-
 
681
				tableCustomerRetailer.addCell(partnerInfo);
-
 
682
				tableCustomerRetailer.addCell(tableInvoiceDate);
-
 
683
				tableCustomerRetailer.addCell(sellerParty);
-
 
684
 
-
 
685
				PdfPTable orders = null;
-
 
686
				if (stateGst) {
-
 
687
					orders = new PdfPTable(stateWidthsCrNote.length);
-
 
688
					orders.setWidths(stateWidthsCrNote);
-
 
689
				} else {
-
 
690
					orders = new PdfPTable(igstWidthsCrNote.length);
-
 
691
					orders.setWidths(igstWidthsCrNote);
-
 
692
				}
-
 
693
				orders.setWidthPercentage(95);
-
 
694
				orders.addCell(new Paragraph("Description", FONT_BOLD));
-
 
695
				orders.addCell(new Paragraph("HSN", FONT_BOLD));
-
 
696
				orders.addCell(new Paragraph("Qty", FONT_BOLD));
-
 
697
				orders.addCell(new Paragraph("Rate\n(Per pc)", FONT_BOLD));
-
 
698
				orders.addCell(new Paragraph("Total\nTaxable", FONT_BOLD));
-
 
699
				if (!stateGst) {
-
 
700
					orders.addCell(new Paragraph("IGST%", FONT_BOLD));
-
 
701
					orders.addCell(new Paragraph("IGST", FONT_BOLD));
-
 
702
					// orders.setWidths(new float[]{1, 3, 1, 1, 1, 1, 1, 1});
-
 
703
					// total 8f
-
 
704
				} else {
-
 
705
					orders.addCell(new Paragraph("CGST %", FONT_BOLD));
-
 
706
					orders.addCell(new Paragraph("CGST", FONT_BOLD));
-
 
707
					orders.addCell(new Paragraph("SGST %", FONT_BOLD));
-
 
708
					orders.addCell(new Paragraph("SGST", FONT_BOLD));
-
 
709
					// orders.setWidths(new float[]{1, 3, 1, 1, 1, 1, 1, 1, 1,
-
 
710
					// 1});
-
 
711
					// total 8f
-
 
712
				}
-
 
713
				orders.addCell(new Paragraph("Total", FONT_BOLD));
-
 
714
 
-
 
715
				orders.setHeaderRows(1);
-
 
716
 
-
 
717
				float igstTotalAmount = 0, cgstTotalAmount = 0, sgstTotalAmount = 0;
-
 
718
				for (CustomOrderItem orderItem : orderItems) {
-
 
719
					LOGGER.info("Custom Order Item - {}", orderItem);
-
 
720
					orders.addCell(new Paragraph(orderItem.getDescription(), FONT_NORMAL));
-
 
721
					orders.addCell(new Paragraph(orderItem.getHsnCode(), FONT_NORMAL));
-
 
722
					orders.addCell(new Paragraph(String.valueOf(orderItem.getQuantity()), FONT_NORMAL));
-
 
723
					orders.addCell(new Paragraph(String.format("%.2f", orderItem.getRate()), FONT_NORMAL));
-
 
724
					orders.addCell(new Paragraph(String.format("%.2f", orderItem.getAmount()), FONT_NORMAL));
-
 
725
					if (!stateGst) {
-
 
726
						orders.addCell(new Paragraph(String.format("%.2f", orderItem.getIgstRate()), FONT_NORMAL));
-
 
727
						orders.addCell(new Paragraph(String.format("%.2f", orderItem.getIgstAmount()), FONT_NORMAL));
-
 
728
						igstTotalAmount = igstTotalAmount + orderItem.getIgstAmount();
-
 
729
					} else {
-
 
730
						orders.addCell(new Paragraph(String.format("%.2f", orderItem.getCgstRate()), FONT_NORMAL));
-
 
731
						orders.addCell(new Paragraph(String.format("%.2f", orderItem.getCgstAmount()), FONT_NORMAL));
-
 
732
						orders.addCell(new Paragraph(String.format("%.2f", orderItem.getSgstRate()), FONT_NORMAL));
-
 
733
						orders.addCell(new Paragraph(String.format("%.2f", orderItem.getSgstAmount()), FONT_NORMAL));
-
 
734
						cgstTotalAmount = cgstTotalAmount + orderItem.getCgstAmount();
-
 
735
						sgstTotalAmount = sgstTotalAmount + orderItem.getSgstAmount();
-
 
736
					}
-
 
737
					orders.addCell(new Paragraph(String.format("%.0f", orderItem.getNetAmount()), FONT_NORMAL));
-
 
738
					LOGGER.info("IN FOR LOOP");
-
 
739
				}
-
 
740
 
-
 
741
				document.add(paragraphTitle);
-
 
742
 
-
 
743
				document.add(Chunk.NEWLINE);
-
 
744
				document.add(tableCustomerRetailer);
-
 
745
 
-
 
746
				document.add(Chunk.NEWLINE);
-
 
747
				document.add(orders);
-
 
748
 
-
 
749
				PdfPTable grandTotalTable = new PdfPTable(3);
-
 
750
				if (stateGst) {
-
 
751
					grandTotalTable.setWidths(new float[] { 6.6f, .6f, .8f });
-
 
752
				} else {
-
 
753
					grandTotalTable.setWidths(new float[] { 6.5f, .6f, .9f });
-
 
754
				}
-
 
755
				grandTotalTable.setWidthPercentage(95);
-
 
756
 
-
 
757
				Paragraph grandTotalParagraph = new Paragraph("Grand total", FONT_BOLD);
-
 
758
				grandTotalParagraph.setIndentationRight(20);
-
 
759
				grandTotalTable.addCell(grandTotalParagraph);
-
 
760
				Paragraph rsParagraph = new Paragraph("Rs.", FONT_BOLD);
-
 
761
				grandTotalTable.addCell(rsParagraph);
-
 
762
				Paragraph amountParagraph = new Paragraph(String.format("%.2f", pdfModel.getTotalAmount()), FONT_BOLD);
-
 
763
				grandTotalTable.addCell(amountParagraph);
-
 
764
 
-
 
765
				document.add(grandTotalTable);
-
 
766
 
-
 
767
				PdfPTable amountInWordsTable = new PdfPTable(3);
-
 
768
				if (!stateGst) {
-
 
769
					amountInWordsTable.setWidths(new float[] { 2, 5.1f, 0.9f });
-
 
770
				} else {
-
 
771
					amountInWordsTable.setWidths(new float[] { 2, 5.2f, 0.8f });
-
 
772
				}
-
 
773
				amountInWordsTable.setWidthPercentage(95);
-
 
774
				amountInWordsTable.addCell(new Paragraph("Amount in Words:", FONT_BOLD));
-
 
775
 
-
 
776
				String amountInWords = toAmountInWords(pdfModel.getTotalAmount());
-
 
777
				amountInWordsTable.addCell(new Paragraph(amountInWords.toString(), FONT_BOLD));
-
 
778
				amountInWordsTable.addCell(new Paragraph("E & O.E", FONT_NORMAL));
-
 
779
				document.add(amountInWordsTable);
-
 
780
 
-
 
781
				document.newPage();
-
 
782
			}
-
 
783
			document.close(); // no need to close PDFwriter?
-
 
784
		} catch (DocumentException e) {
-
 
785
			LOGGER.error("Unable to write data to pdf file : ", e);
-
 
786
		} catch (Exception e) {
-
 
787
			// TODO Auto-generated catch block
-
 
788
			e.printStackTrace();
-
 
789
		}
-
 
790
 
-
 
791
	}
554
}
792
}