| Line 212... |
Line 212... |
| 212 |
|
212 |
|
| 213 |
orders.setHeaderRows(1);
|
213 |
orders.setHeaderRows(1);
|
| 214 |
|
214 |
|
| 215 |
float igstTotalAmount = 0, cgstTotalAmount = 0, sgstTotalAmount = 0;
|
215 |
float igstTotalAmount = 0, cgstTotalAmount = 0, sgstTotalAmount = 0;
|
| 216 |
int index = 1;
|
216 |
int index = 1;
|
| 217 |
boolean marginSeparatorAdded = false;
|
- |
|
| 218 |
for (CustomOrderItem orderItem : orderItems) {
|
217 |
for (CustomOrderItem orderItem : orderItems) {
|
| 219 |
// Add margin scheme separator before first margin scheme item
|
- |
|
| 220 |
if (orderItem.isMarginScheme() && !marginSeparatorAdded) {
|
- |
|
| 221 |
int numColumns = stateGst
|
- |
|
| 222 |
? (showDiscount ? stateWidthsWithDiscount.length : stateWidthsNoDiscount.length)
|
- |
|
| 223 |
: (showDiscount ? igstWidthsWithDiscount.length : igstWidthsNoDiscount.length);
|
- |
|
| 224 |
addMarginSchemeSeparator(orders, numColumns);
|
- |
|
| 225 |
marginSeparatorAdded = true;
|
- |
|
| 226 |
}
|
- |
|
| 227 |
|
- |
|
| 228 |
orders.addCell(new Paragraph(String.valueOf(index++), FONT_NORMAL));
|
218 |
orders.addCell(new Paragraph(String.valueOf(index++), FONT_NORMAL));
|
| 229 |
orders.addCell(new Paragraph(orderItem.getDescription(), FONT_NORMAL));
|
219 |
orders.addCell(new Paragraph(orderItem.getDescription(), FONT_NORMAL));
|
| 230 |
orders.addCell(new Paragraph(orderItem.getHsnCode(), FONT_NORMAL));
|
220 |
orders.addCell(new Paragraph(orderItem.getHsnCode(), FONT_NORMAL));
|
| 231 |
orders.addCell(new Paragraph(String.valueOf(orderItem.getQuantity()), FONT_NORMAL));
|
221 |
orders.addCell(new Paragraph(String.valueOf(orderItem.getQuantity()), FONT_NORMAL));
|
| 232 |
|
222 |
|
| 233 |
if (orderItem.isMarginScheme()) {
|
- |
|
| 234 |
// For margin scheme: Rate = Selling Price, Discount shows Purchase Price, Taxable = Margin
|
- |
|
| 235 |
orders.addCell(new Paragraph(String.format("%.2f", orderItem.getSellingPrice()), FONT_NORMAL));
|
- |
|
| 236 |
if (showDiscount) {
|
- |
|
| 237 |
orders.addCell(new Paragraph(String.format("%.2f\n(Purchase)", orderItem.getPurchasePrice()), FONT_NORMAL));
|
- |
|
| 238 |
}
|
- |
|
| 239 |
} else {
|
- |
|
| 240 |
orders.addCell(new Paragraph(String.format("%.2f", orderItem.getRate()), FONT_NORMAL));
|
223 |
orders.addCell(new Paragraph(String.format("%.2f", orderItem.getRate()), FONT_NORMAL));
|
| 241 |
if (showDiscount) {
|
224 |
if (showDiscount) {
|
| 242 |
// For FOFO: show "-" if discount is 0, otherwise show the discount value
|
- |
|
| 243 |
String discountText = orderItem.getDiscount() == 0 ? "-" : String.format("%.2f", orderItem.getDiscount());
|
225 |
String discountText = orderItem.getDiscount() == 0 ? "-" : String.format("%.2f", orderItem.getDiscount());
|
| 244 |
orders.addCell(new Paragraph(discountText, FONT_NORMAL));
|
226 |
orders.addCell(new Paragraph(discountText, FONT_NORMAL));
|
| 245 |
}
|
- |
|
| 246 |
}
|
227 |
}
|
| 247 |
orders.addCell(new Paragraph(String.format("%.2f", orderItem.getAmount()), FONT_NORMAL));
|
228 |
orders.addCell(new Paragraph(String.format("%.2f", orderItem.getAmount()), FONT_NORMAL));
|
| 248 |
if (!stateGst) {
|
229 |
if (!stateGst) {
|
| 249 |
orders.addCell(new Paragraph(String.format("%.2f%n(@%.0f%%)", orderItem.getIgstAmount(), orderItem.getIgstRate()), FONT_NORMAL));
|
230 |
orders.addCell(new Paragraph(String.format("%.2f%n(@%.0f%%)", orderItem.getIgstAmount(), orderItem.getIgstRate()), FONT_NORMAL));
|
| 250 |
igstTotalAmount = igstTotalAmount + orderItem.getIgstAmount();
|
231 |
igstTotalAmount = igstTotalAmount + orderItem.getIgstAmount();
|
| Line 386... |
Line 367... |
| 386 |
body.setIndentationRight(25);
|
367 |
body.setIndentationRight(25);
|
| 387 |
document.add(body);
|
368 |
document.add(body);
|
| 388 |
|
369 |
|
| 389 |
}
|
370 |
}
|
| 390 |
|
371 |
|
| 391 |
// Margin scheme declaration
|
- |
|
| 392 |
addMarginSchemeDeclaration(document, pdfModel);
|
- |
|
| 393 |
|
- |
|
| 394 |
if (pdfModel.getTncs() != null) {
|
372 |
if (pdfModel.getTncs() != null) {
|
| 395 |
StringBuffer sb = new StringBuffer();
|
373 |
StringBuffer sb = new StringBuffer();
|
| 396 |
for (String tnc : pdfModel.getTncs()) {
|
374 |
for (String tnc : pdfModel.getTncs()) {
|
| 397 |
sb.append(tnc).append("\n");
|
375 |
sb.append(tnc).append("\n");
|
| 398 |
}
|
376 |
}
|
| Line 466... |
Line 444... |
| 466 |
document.add(declarationParagraph);
|
444 |
document.add(declarationParagraph);
|
| 467 |
}
|
445 |
}
|
| 468 |
}
|
446 |
}
|
| 469 |
}
|
447 |
}
|
| 470 |
|
448 |
|
| - |
|
449 |
public static void generateMarginSchemeInvoice(List<InvoicePdfModel> pdfModels, ByteArrayOutputStream outputStream) {
|
| - |
|
450 |
try {
|
| - |
|
451 |
boolean cancelledPages = false;
|
| - |
|
452 |
List<Integer> cancelledPageList = new ArrayList<>();
|
| - |
|
453 |
Document document = new Document();
|
| - |
|
454 |
document.setMargins(0, 0, 25, 0);
|
| - |
|
455 |
PdfWriter pdfWriter = PdfWriter.getInstance(document, outputStream);
|
| - |
|
456 |
document.open();
|
| - |
|
457 |
|
| - |
|
458 |
float[] marginSchemeWidths = new float[]{0.3f, 2.2f, 0.6f, 0.3f, 0.9f, 0.9f, 0.8f, 0.8f, 0.9f};
|
| - |
|
459 |
|
| - |
|
460 |
for (InvoicePdfModel pdfModel : pdfModels) {
|
| - |
|
461 |
CustomCustomer customer = pdfModel.getCustomer();
|
| - |
|
462 |
CustomRetailer retailer = pdfModel.getRetailer();
|
| - |
|
463 |
boolean stateGst = customer.getAddress().getState().equals(retailer.getAddress().getState());
|
| - |
|
464 |
|
| - |
|
465 |
List<CustomOrderItem> orderItems = pdfModel.getOrderItems();
|
| - |
|
466 |
if (pdfModel.isCancelled()) {
|
| - |
|
467 |
cancelledPageList.add(1);
|
| - |
|
468 |
cancelledPages = true;
|
| - |
|
469 |
} else {
|
| - |
|
470 |
cancelledPageList.add(0);
|
| - |
|
471 |
}
|
| - |
|
472 |
|
| - |
|
473 |
document.addTitle("INVOICE OF SUPPLY (MARGIN SCHEME)");
|
| - |
|
474 |
document.addAuthor(pdfModel.getAuther());
|
| - |
|
475 |
|
| - |
|
476 |
Paragraph paragraphTitle = new Paragraph("INVOICE OF SUPPLY (MARGIN SCHEME)", FONT_TITLE);
|
| - |
|
477 |
paragraphTitle.setAlignment(Element.ALIGN_CENTER);
|
| - |
|
478 |
document.add(paragraphTitle);
|
| - |
|
479 |
|
| - |
|
480 |
Rectangle rectangle = document.getPageSize();
|
| - |
|
481 |
|
| - |
|
482 |
if (pdfModel.getIrnModel() != null) {
|
| - |
|
483 |
addIrnDetails(pdfModel.getIrnModel(), rectangle, document);
|
| - |
|
484 |
}
|
| - |
|
485 |
|
| - |
|
486 |
// Customer and Retailer details
|
| - |
|
487 |
PdfPTable tableCustomerRetailer = new PdfPTable(2);
|
| - |
|
488 |
tableCustomerRetailer.setWidthPercentage(90);
|
| - |
|
489 |
tableCustomerRetailer.getDefaultCell().setBorder(Rectangle.NO_BORDER);
|
| - |
|
490 |
|
| - |
|
491 |
PdfPCell columnCustomerInfo = new PdfPCell();
|
| - |
|
492 |
columnCustomerInfo.addElement(new Paragraph("Customer Details", FONT_BOLD));
|
| - |
|
493 |
columnCustomerInfo.addElement(new Paragraph(
|
| - |
|
494 |
StringUtils.capitalize(customer.getAddress().getName() + (customer.getAddress().getLastName() == null ? "" : " " + customer.getAddress().getLastName())), FONT_NORMAL));
|
| - |
|
495 |
if (customer.getAddress() != null) {
|
| - |
|
496 |
if ((customer.getAddress().getLine1() != null && !customer.getAddress().getLine1().trim().isEmpty()) || (customer.getAddress().getLine2() != null && !customer.getAddress().getLine2().trim().isEmpty())) {
|
| - |
|
497 |
columnCustomerInfo.addElement(new Paragraph(StringUtils.capitalize(customer.getAddress().getLine1()) + ", " + StringUtils.capitalize(customer.getAddress().getLine2()), FONT_NORMAL));
|
| - |
|
498 |
}
|
| - |
|
499 |
if ((customer.getAddress().getCity() != null && !customer.getAddress().getCity().trim().isEmpty()) || (customer.getAddress().getState() != null && !customer.getAddress().getState().trim().isEmpty())) {
|
| - |
|
500 |
columnCustomerInfo.addElement(new Paragraph(StringUtils.capitalize(customer.getAddress().getCity()) + ", " + StringUtils.capitalize(customer.getAddress().getState()) + "(" + pdfModel.getCustomerAddressStateCode() + ")" + "\n" + customer.getAddress().getPinCode(), FONT_NORMAL));
|
| - |
|
501 |
}
|
| - |
|
502 |
}
|
| - |
|
503 |
columnCustomerInfo.addElement(new Paragraph("Mobile - " + customer.getAddress().getPhoneNumber(), FONT_NORMAL));
|
| - |
|
504 |
if (customer.getGstNumber() != null && !customer.getGstNumber().isEmpty()) {
|
| - |
|
505 |
columnCustomerInfo.addElement(new Paragraph("GST Number - " + customer.getGstNumber(), FONT_NORMAL));
|
| - |
|
506 |
}
|
| - |
|
507 |
columnCustomerInfo.setBorder(Rectangle.NO_BORDER);
|
| - |
|
508 |
|
| - |
|
509 |
PdfPCell columnRetailerInfo = new PdfPCell();
|
| - |
|
510 |
columnRetailerInfo.addElement(new Paragraph(StringUtils.capitalize(retailer.getAddress().getName()), FONT_BOLD));
|
| - |
|
511 |
columnRetailerInfo.addElement(new Paragraph(StringUtils.capitalize(retailer.getAddress().getLine1()) + ", " + StringUtils.capitalize(retailer.getAddress().getLine2()) + ", " + StringUtils.capitalize(retailer.getAddress().getCity()) + "-" + retailer.getAddress().getPinCode() + ", " + retailer.getAddress().getState() + "(" + (stateGst ? pdfModel.getCustomerAddressStateCode() : pdfModel.getPartnerAddressStateCode()) + ")", FONT_BOLD));
|
| - |
|
512 |
columnRetailerInfo.addElement(new Paragraph("Contact No.- " + retailer.getAddress().getPhoneNumber(), FONT_BOLD));
|
| - |
|
513 |
columnRetailerInfo.addElement(new Paragraph("GST NO. " + retailer.getGstNumber(), FONT_BOLD));
|
| - |
|
514 |
columnRetailerInfo.setBorder(Rectangle.NO_BORDER);
|
| - |
|
515 |
|
| - |
|
516 |
PdfPTable tableInvoiceDateRetailer = new PdfPTable(1);
|
| - |
|
517 |
tableInvoiceDateRetailer.getDefaultCell().setBorder(Rectangle.NO_BORDER);
|
| - |
|
518 |
|
| - |
|
519 |
PdfPTable tableInvoiceDate = new PdfPTable(2);
|
| - |
|
520 |
tableInvoiceDate.getDefaultCell().setBorder(Rectangle.NO_BORDER);
|
| - |
|
521 |
|
| - |
|
522 |
PdfPCell invoiceNumberKey = new PdfPCell(new Paragraph("Invoice No:", FONT_NORMAL));
|
| - |
|
523 |
invoiceNumberKey.setBorder(Rectangle.NO_BORDER);
|
| - |
|
524 |
PdfPCell invoiceNumberValue = new PdfPCell(new Paragraph(pdfModel.getInvoiceNumber(), FONT_NORMAL));
|
| - |
|
525 |
invoiceNumberValue.setBorder(Rectangle.NO_BORDER);
|
| - |
|
526 |
PdfPCell dateKey = new PdfPCell(new Paragraph("Date:", FONT_NORMAL));
|
| - |
|
527 |
dateKey.setBorder(Rectangle.NO_BORDER);
|
| - |
|
528 |
PdfPCell dateValue = new PdfPCell(new Paragraph(pdfModel.getInvoiceDate(), FONT_NORMAL));
|
| - |
|
529 |
dateValue.setBorder(Rectangle.NO_BORDER);
|
| - |
|
530 |
|
| - |
|
531 |
tableInvoiceDate.addCell(invoiceNumberKey);
|
| - |
|
532 |
tableInvoiceDate.addCell(invoiceNumberValue);
|
| - |
|
533 |
tableInvoiceDate.addCell(dateKey);
|
| - |
|
534 |
tableInvoiceDate.addCell(dateValue);
|
| - |
|
535 |
tableInvoiceDateRetailer.addCell(tableInvoiceDate);
|
| - |
|
536 |
tableInvoiceDateRetailer.addCell(columnRetailerInfo);
|
| - |
|
537 |
|
| - |
|
538 |
tableCustomerRetailer.addCell(columnCustomerInfo);
|
| - |
|
539 |
tableCustomerRetailer.addCell(tableInvoiceDateRetailer);
|
| - |
|
540 |
|
| - |
|
541 |
// Item table with margin scheme columns
|
| - |
|
542 |
PdfPTable orders = new PdfPTable(marginSchemeWidths.length);
|
| - |
|
543 |
orders.setWidths(marginSchemeWidths);
|
| - |
|
544 |
orders.setWidthPercentage(90);
|
| - |
|
545 |
|
| - |
|
546 |
orders.addCell(new Paragraph("S.No", FONT_BOLD));
|
| - |
|
547 |
orders.addCell(new Paragraph("Description", FONT_BOLD));
|
| - |
|
548 |
orders.addCell(new Paragraph("HSN", FONT_BOLD));
|
| - |
|
549 |
orders.addCell(new Paragraph("Qty", FONT_BOLD));
|
| - |
|
550 |
orders.addCell(new Paragraph("Purchase\nPrice Rs.", FONT_BOLD));
|
| - |
|
551 |
orders.addCell(new Paragraph("Selling\nPrice Rs.", FONT_BOLD));
|
| - |
|
552 |
orders.addCell(new Paragraph("Margin\nRs.", FONT_BOLD));
|
| - |
|
553 |
orders.addCell(new Paragraph("GST on\nMargin Rs.", FONT_BOLD));
|
| - |
|
554 |
orders.addCell(new Paragraph("Invoice\nTotal Rs.", FONT_BOLD));
|
| - |
|
555 |
orders.setHeaderRows(1);
|
| - |
|
556 |
|
| - |
|
557 |
float totalSellingPrice = 0, totalMargin = 0, totalGstOnMargin = 0, totalInvoiceTotal = 0;
|
| - |
|
558 |
int index = 1;
|
| - |
|
559 |
for (CustomOrderItem orderItem : orderItems) {
|
| - |
|
560 |
float gstOnMargin = orderItem.getCgstAmount() + orderItem.getSgstAmount() + orderItem.getIgstAmount();
|
| - |
|
561 |
|
| - |
|
562 |
orders.addCell(new Paragraph(String.valueOf(index++), FONT_NORMAL));
|
| - |
|
563 |
orders.addCell(new Paragraph(orderItem.getDescription(), FONT_NORMAL));
|
| - |
|
564 |
orders.addCell(new Paragraph(orderItem.getHsnCode(), FONT_NORMAL));
|
| - |
|
565 |
orders.addCell(new Paragraph(String.valueOf(orderItem.getQuantity()), FONT_NORMAL));
|
| - |
|
566 |
orders.addCell(new Paragraph(String.format("%.2f", orderItem.getPurchasePrice()), FONT_NORMAL));
|
| - |
|
567 |
orders.addCell(new Paragraph(String.format("%.2f", orderItem.getSellingPrice()), FONT_NORMAL));
|
| - |
|
568 |
orders.addCell(new Paragraph(String.format("%.2f", orderItem.getMargin()), FONT_NORMAL));
|
| - |
|
569 |
orders.addCell(new Paragraph(String.format("%.2f", gstOnMargin), FONT_NORMAL));
|
| - |
|
570 |
orders.addCell(new Paragraph(String.format("%.2f", orderItem.getNetAmount()), FONT_NORMAL));
|
| - |
|
571 |
|
| - |
|
572 |
totalSellingPrice += orderItem.getSellingPrice();
|
| - |
|
573 |
totalMargin += orderItem.getMargin();
|
| - |
|
574 |
totalGstOnMargin += gstOnMargin;
|
| - |
|
575 |
totalInvoiceTotal += orderItem.getNetAmount();
|
| - |
|
576 |
}
|
| - |
|
577 |
|
| - |
|
578 |
// Total row
|
| - |
|
579 |
PdfPCell totalLabelCell = new PdfPCell(new Paragraph("TOTAL", FONT_BOLD));
|
| - |
|
580 |
totalLabelCell.setColspan(5);
|
| - |
|
581 |
orders.addCell(totalLabelCell);
|
| - |
|
582 |
orders.addCell(new Paragraph(String.format("%.2f", totalSellingPrice), FONT_BOLD));
|
| - |
|
583 |
orders.addCell(new Paragraph(String.format("%.2f", totalMargin), FONT_BOLD));
|
| - |
|
584 |
orders.addCell(new Paragraph(String.format("%.2f", totalGstOnMargin), FONT_BOLD));
|
| - |
|
585 |
orders.addCell(new Paragraph(String.format("%.2f", totalInvoiceTotal), FONT_BOLD));
|
| - |
|
586 |
|
| - |
|
587 |
// Logo and layout
|
| - |
|
588 |
iconImg.setAbsolutePosition(25, rectangle.getHeight() - 100);
|
| - |
|
589 |
iconImg.scalePercent(30);
|
| - |
|
590 |
document.add(iconImg);
|
| - |
|
591 |
document.add(Chunk.NEWLINE);
|
| - |
|
592 |
document.add(Chunk.NEWLINE);
|
| - |
|
593 |
document.add(tableCustomerRetailer);
|
| - |
|
594 |
document.add(Chunk.NEWLINE);
|
| - |
|
595 |
document.add(orders);
|
| - |
|
596 |
|
| - |
|
597 |
// Grand total
|
| - |
|
598 |
PdfPTable grandTotalTable = new PdfPTable(3);
|
| - |
|
599 |
grandTotalTable.setWidths(new float[]{6.5f, .6f, .9f});
|
| - |
|
600 |
grandTotalTable.setWidthPercentage(90);
|
| - |
|
601 |
|
| - |
|
602 |
Paragraph grandTotalParagraph = new Paragraph("Grand total", FONT_BOLD);
|
| - |
|
603 |
grandTotalParagraph.setIndentationRight(20);
|
| - |
|
604 |
grandTotalTable.addCell(grandTotalParagraph);
|
| - |
|
605 |
grandTotalTable.addCell(new Paragraph("Rs.", FONT_BOLD));
|
| - |
|
606 |
grandTotalTable.addCell(new Paragraph(String.format("%.2f", pdfModel.getTotalAmount()), FONT_BOLD));
|
| - |
|
607 |
document.add(grandTotalTable);
|
| - |
|
608 |
|
| - |
|
609 |
// Amount in words
|
| - |
|
610 |
PdfPTable amountInWordsTable = new PdfPTable(3);
|
| - |
|
611 |
amountInWordsTable.setWidthPercentage(90);
|
| - |
|
612 |
amountInWordsTable.setWidths(new float[]{2, 5.1f, 0.9f});
|
| - |
|
613 |
amountInWordsTable.addCell(new Paragraph("Amount in Words:", FONT_BOLD));
|
| - |
|
614 |
String amountInWords = toAmountInWords(pdfModel.getTotalAmount());
|
| - |
|
615 |
amountInWordsTable.addCell(new Paragraph(amountInWords, FONT_BOLD));
|
| - |
|
616 |
amountInWordsTable.addCell(new Paragraph("E & O.E", FONT_NORMAL));
|
| - |
|
617 |
document.add(amountInWordsTable);
|
| - |
|
618 |
|
| - |
|
619 |
// Payment options
|
| - |
|
620 |
if (pdfModel.getPaymentOptions() != null) {
|
| - |
|
621 |
PdfPTable paidAmountTable = new PdfPTable(2);
|
| - |
|
622 |
paidAmountTable.setWidthPercentage(90);
|
| - |
|
623 |
paidAmountTable.setWidths(new float[]{7.1f, 0.9f});
|
| - |
|
624 |
float totalPaidValue = 0;
|
| - |
|
625 |
for (CustomPaymentOption paymentOption : pdfModel.getPaymentOptions()) {
|
| - |
|
626 |
if (!"CASH DISCOUNT".equals(paymentOption.getPaymentOption())) {
|
| - |
|
627 |
PdfPCell cell = new PdfPCell(new Paragraph(10, "Paid Through " + paymentOption.getPaymentOption(), FONT_BOLD));
|
| - |
|
628 |
cell.setHorizontalAlignment(Element.ALIGN_RIGHT);
|
| - |
|
629 |
cell.setPadding(5);
|
| - |
|
630 |
paidAmountTable.addCell(cell);
|
| - |
|
631 |
|
| - |
|
632 |
PdfPCell cell1 = new PdfPCell(new Paragraph(10, FormattingUtils.formatDecimal(paymentOption.getAmount()), FONT_BOLD));
|
| - |
|
633 |
cell1.setPadding(5);
|
| - |
|
634 |
paidAmountTable.addCell(cell1);
|
| - |
|
635 |
totalPaidValue += paymentOption.getAmount();
|
| - |
|
636 |
}
|
| - |
|
637 |
}
|
| - |
|
638 |
PdfPCell totalPaidCell = new PdfPCell(new Paragraph(10, "Total Paid", FONT_BOLD));
|
| - |
|
639 |
totalPaidCell.setHorizontalAlignment(Element.ALIGN_RIGHT);
|
| - |
|
640 |
totalPaidCell.setPadding(5);
|
| - |
|
641 |
paidAmountTable.addCell(totalPaidCell);
|
| - |
|
642 |
|
| - |
|
643 |
PdfPCell totalPaidValueCell = new PdfPCell(new Paragraph(10, FormattingUtils.formatDecimal(totalPaidValue), FONT_BOLD));
|
| - |
|
644 |
totalPaidValueCell.setPadding(5);
|
| - |
|
645 |
paidAmountTable.addCell(totalPaidValueCell);
|
| - |
|
646 |
document.add(paidAmountTable);
|
| - |
|
647 |
}
|
| - |
|
648 |
|
| - |
|
649 |
// Computer generated note
|
| - |
|
650 |
Paragraph autoGenerateParagraph = new Paragraph("Note - This is computer generated Invoice, no signature is required", FONT_NORMAL);
|
| - |
|
651 |
autoGenerateParagraph.setAlignment(Element.ALIGN_CENTER);
|
| - |
|
652 |
document.add(autoGenerateParagraph);
|
| - |
|
653 |
|
| - |
|
654 |
// Credit terms
|
| - |
|
655 |
if (pdfModel.getCreditTerms() != null) {
|
| - |
|
656 |
Paragraph title = new Paragraph("Credit terms :-\n", FONT_BOLD);
|
| - |
|
657 |
title.setIndentationLeft(25);
|
| - |
|
658 |
title.setIndentationRight(25);
|
| - |
|
659 |
document.add(title);
|
| - |
|
660 |
|
| - |
|
661 |
StringBuffer termsBuffer = new StringBuffer();
|
| - |
|
662 |
int count = 0;
|
| - |
|
663 |
for (String creditTerm : pdfModel.getCreditTerms()) {
|
| - |
|
664 |
count++;
|
| - |
|
665 |
termsBuffer.append(count).append(". ").append(creditTerm).append(".\n");
|
| - |
|
666 |
}
|
| - |
|
667 |
Paragraph body = new Paragraph(termsBuffer.toString(), FONT_NORMAL);
|
| - |
|
668 |
body.setIndentationLeft(25);
|
| - |
|
669 |
body.setIndentationRight(25);
|
| - |
|
670 |
document.add(body);
|
| - |
|
671 |
}
|
| - |
|
672 |
|
| - |
|
673 |
// Margin scheme declaration
|
| - |
|
674 |
addMarginSchemeDeclaration(document, pdfModel);
|
| - |
|
675 |
|
| - |
|
676 |
if (pdfModel.getTncs() != null) {
|
| - |
|
677 |
StringBuffer sb = new StringBuffer();
|
| - |
|
678 |
for (String tnc : pdfModel.getTncs()) {
|
| - |
|
679 |
sb.append(tnc).append("\n");
|
| - |
|
680 |
}
|
| - |
|
681 |
Paragraph warningParagraph = new Paragraph(sb.toString(), FONT_NORMAL);
|
| - |
|
682 |
warningParagraph.setIndentationLeft(40);
|
| - |
|
683 |
document.add(Chunk.NEWLINE);
|
| - |
|
684 |
document.add(warningParagraph);
|
| - |
|
685 |
}
|
| - |
|
686 |
|
| - |
|
687 |
document.newPage();
|
| - |
|
688 |
|
| - |
|
689 |
// E-Way Bill support
|
| - |
|
690 |
if (pdfModel.geteWayBillPdfModel() != null) {
|
| - |
|
691 |
EWayBillPDF.generateDocument(document, pdfWriter, pdfModel.geteWayBillPdfModel());
|
| - |
|
692 |
}
|
| - |
|
693 |
}
|
| - |
|
694 |
|
| - |
|
695 |
document.close();
|
| - |
|
696 |
if (cancelledPages) {
|
| - |
|
697 |
stampCancelled(outputStream, cancelledPageList);
|
| - |
|
698 |
}
|
| - |
|
699 |
} catch (DocumentException e) {
|
| - |
|
700 |
LOGGER.error("Unable to write data to margin scheme pdf file : ", e);
|
| - |
|
701 |
} catch (Exception e) {
|
| - |
|
702 |
e.printStackTrace();
|
| - |
|
703 |
}
|
| - |
|
704 |
}
|
| - |
|
705 |
|
| 471 |
private static void stampCancelled(ByteArrayOutputStream byteStream, List<Integer> cancelledPage) throws IOException, DocumentException {
|
706 |
private static void stampCancelled(ByteArrayOutputStream byteStream, List<Integer> cancelledPage) throws IOException, DocumentException {
|
| 472 |
ByteArrayInputStream bais = new ByteArrayInputStream(byteStream.toByteArray());
|
707 |
ByteArrayInputStream bais = new ByteArrayInputStream(byteStream.toByteArray());
|
| 473 |
PdfReader pdfReader = new PdfReader(bais);
|
708 |
PdfReader pdfReader = new PdfReader(bais);
|
| 474 |
int n = pdfReader.getNumberOfPages();
|
709 |
int n = pdfReader.getNumberOfPages();
|
| 475 |
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|
710 |
ByteArrayOutputStream baos = new ByteArrayOutputStream();
|