private String populateLineItemAdditionalCharge(LineItemOrder lineItemOrder) {
   if (lineItemOrder.getAllowanceMonetaryDetail() != null) {
     if (lineItemOrder
             .getAllowanceMonetaryDetail()
             .get(0)
             .getAllowanceMonetaryLineItemInformation()
         != null) {
       return "0"; // lineItemOrder.getAllowanceMonetaryDetail().get(0).getAllowanceMonetaryLineItemInformation().get(0).getAmount();
     }
   }
   return null;
 }
 private String populateUnitPrice(LineItemOrder lineItemOrder) {
   if (lineItemOrder.getMonetaryDetail() != null) {
     if (lineItemOrder.getMonetaryDetail().get(0).getMonetaryLineItemInformation() != null) {
       return lineItemOrder
           .getMonetaryDetail()
           .get(0)
           .getMonetaryLineItemInformation()
           .get(0)
           .getAmount();
     }
   }
   return null;
 }
 private String getLineItemISBN(LineItemOrder lineItemOrder) {
   if (lineItemOrder.getLineItem() != null && lineItemOrder.getLineItem().get(0) != null) {
     if (lineItemOrder.getLineItem().get(0).getLineItemArticleNumber() != null
         && lineItemOrder.getLineItem().get(0).getLineItemArticleNumber().get(0) != null) {
       return lineItemOrder
           .getLineItem()
           .get(0)
           .getLineItemArticleNumber()
           .get(0)
           .getLineItemIsbn();
     }
   }
   return null;
 }
 private String getISSN(LineItemOrder lineItemOrder) {
   if (lineItemOrder.getProductFunction() != null
       && lineItemOrder.getProductFunction().size() > 0) {
     if (lineItemOrder.getProductFunction().get(0).getSupplierArticleNumber() != null
         && lineItemOrder.getProductFunction().get(0).getSupplierArticleNumber().size() > 0) {
       return lineItemOrder
           .getProductFunction()
           .get(0)
           .getSupplierArticleNumber()
           .get(0)
           .getIsbn();
     }
   }
   return null;
 }
 private String getTaxForLineItem(LineItemOrder lineItemOrder) {
   String taxAmount = "";
   TaxLineItemInfo taxLineItemInfo = lineItemOrder.getTaxLineItemInfo();
   if (taxLineItemInfo != null) {
     MonetaryTaxLineItem monetaryTaxLineItem = lineItemOrder.getMonetaryTaxLineItem();
     if (monetaryTaxLineItem != null) {
       MonetaryLineItemTaxDetail monetaryLineItemTaxDetail =
           monetaryTaxLineItem.getMonetaryLineItemTaxDetail();
       if (monetaryLineItemTaxDetail != null
           && "124".equals(monetaryLineItemTaxDetail.getAmountType())) {
         taxAmount = monetaryLineItemTaxDetail.getAmount();
       }
     }
   }
   return taxAmount;
 }
 private String populateLineItemChargeCode(LineItemOrder lineItemOrder) {
   if (lineItemOrder.getLineItemAllowanceOrCharge() != null) {
     if (lineItemOrder
             .getLineItemAllowanceOrCharge()
             .get(0)
             .getLineItemSpecialServiceIdentification()
         != null) {
       return lineItemOrder
           .getLineItemAllowanceOrCharge()
           .get(0)
           .getLineItemSpecialServiceIdentification()
           .get(0)
           .getSpecialServiceCode();
     }
   }
   return null;
 }
 private String getSubscriptionDateFrom(LineItemOrder lineItemOrder) {
   if (lineItemOrder.getDateTimeDetail() != null && lineItemOrder.getDateTimeDetail().size() > 0) {
     if (lineItemOrder.getDateTimeDetail().get(0).getDateTimeInformationList() != null
         && lineItemOrder.getDateTimeDetail().get(0).getDateTimeInformationList().size() > 0) {
       if (lineItemOrder
               .getDateTimeDetail()
               .get(0)
               .getDateTimeInformationList()
               .get(0)
               .getPeriod()
               .length()
           == 8) {
         return lineItemOrder
             .getDateTimeDetail()
             .get(0)
             .getDateTimeInformationList()
             .get(0)
             .getPeriod();
       } else {
         return lineItemOrder
                 .getDateTimeDetail()
                 .get(0)
                 .getDateTimeInformationList()
                 .get(0)
                 .getPeriod()
             + 01;
       }
     }
   }
   return null;
 }
 /**
  * This method returns the Quantity from the list of QuantityInformation got from lineItemOrder.
  * If there are no QuantityInformation then it return null.
  *
  * @param lineItemOrder
  * @return Quantity
  */
 private String getQuantity(LineItemOrder lineItemOrder) {
   List<QuantityInformation> quantityInformation = lineItemOrder.getQuantityInformation();
   if (quantityInformation != null && quantityInformation.size() > 0) {
     List<Qunatity> qunatity = quantityInformation.get(0).getQunatity();
     if (qunatity.size() > 0) {
       return qunatity.get(0).getQuantity();
     }
   }
   return null;
 }
 private String getISBN(LineItemOrder lineItemOrder) {
   if (lineItemOrder.getProductFunction() != null
       && lineItemOrder.getProductFunction().size() > 0) {
     if (lineItemOrder.getProductFunction().get(0).getProductArticleNumber() != null
         && lineItemOrder.getProductFunction().get(0).getProductArticleNumber().size() > 0) {
       if (lineItemOrder
               .getProductFunction()
               .get(0)
               .getProductArticleNumber()
               .get(0)
               .getProductItemNumberType()
           != null) {
         return lineItemOrder
             .getProductFunction()
             .get(0)
             .getProductArticleNumber()
             .get(0)
             .getProductIsbn();
       }
       if (lineItemOrder
                   .getProductFunction()
                   .get(0)
                   .getProductArticleNumber()
                   .get(0)
                   .getProductItemNumberType()
               == null
           && lineItemOrder
                   .getProductFunction()
                   .get(0)
                   .getProductArticleNumber()
                   .get(0)
                   .getProductIsbn()
               != null) {
         return lineItemOrder
             .getProductFunction()
             .get(0)
             .getProductArticleNumber()
             .get(0)
             .getProductIsbn();
       }
     }
   }
   return null;
 }
 private String getPrice(LineItemOrder lineItemOrder) {
   List<PriceInformation> priceInformation = lineItemOrder.getPriceInformation();
   if (priceInformation != null && priceInformation.size() > 0) {
     List<ItemPrice> itemPrice = priceInformation.get(0).getItemPrice();
     if (itemPrice != null && itemPrice.size() > 0) {
       String priceCode = itemPrice.get(0).getGrossPrice();
       if (priceCode != null
           && (priceCode.equalsIgnoreCase("AAB") || priceCode.equalsIgnoreCase("CAL"))) {
         return itemPrice.get(0).getPrice();
       }
     }
   }
   return null;
 }
  private List getItemNote(LineItemOrder lineItemOrder) {
    List itemNoteList = new ArrayList();

    if (lineItemOrder.getItemDescriptionList() != null
        && lineItemOrder.getItemDescriptionList().size() > 0) {
      for (int itemNote = 0; itemNote < lineItemOrder.getItemDescriptionList().size(); itemNote++) {
        if (lineItemOrder.getItemDescriptionList().get(itemNote).getItemCharacteristicCode() != null
            && lineItemOrder
                .getItemDescriptionList()
                .get(itemNote)
                .getItemCharacteristicCode()
                .contains("08")) {
          OleInvoiceNote oleInvoiceNote = new OleInvoiceNote();
          oleInvoiceNote.setNote(lineItemOrder.getItemDescriptionList().get(itemNote).getData());
          itemNoteList.add(oleInvoiceNote);
        }
      }
    }
    if (lineItemOrder.getAllowanceMonetaryDetail() != null) {
      if (lineItemOrder
              .getAllowanceMonetaryDetail()
              .get(0)
              .getAllowanceMonetaryLineItemInformation()
          != null) {
        OleInvoiceNote oleInvoiceNote = new OleInvoiceNote();
        oleInvoiceNote.setNote(
            "The service charge for this item is $"
                + lineItemOrder
                    .getAllowanceMonetaryDetail()
                    .get(0)
                    .getAllowanceMonetaryLineItemInformation()
                    .get(0)
                    .getAmount());
        itemNoteList.add(oleInvoiceNote);
      }
    }
    return itemNoteList;
  }
  /**
   * This method returns ListPrice from the List of PriceInformation got from lineItemOrder. If
   * there are no PriceInformation then it return null.
   *
   * @param lineItemOrder
   * @return Price
   */
  private String getListPrice(LineItemOrder lineItemOrder) {

    List<MonetaryDetail> monetaryDetails = lineItemOrder.getMonetaryDetail();
    if (monetaryDetails != null && monetaryDetails.size() > 0) {
      if (monetaryDetails.get(0).getMonetaryLineItemInformation() != null
          && monetaryDetails.get(0).getMonetaryLineItemInformation().size() > 0) {
        if (monetaryDetails.get(0).getMonetaryLineItemInformation().get(0).getAmountType() != null
            && monetaryDetails
                .get(0)
                .getMonetaryLineItemInformation()
                .get(0)
                .getAmountType()
                .contains("2")) {
          return monetaryDetails.get(0).getMonetaryLineItemInformation().get(0).getAmount();
        }
      }
    }
    return null;
  }
 private String getVendorIdentifierByPIA(LineItemOrder lineItemOrder) {
   List<ProductFunction> productFunction = lineItemOrder.getProductFunction();
   if (productFunction != null && productFunction.size() > 0) {
     for (int i = 0; i < productFunction.size(); i++) {
       if (productFunction.get(i).getProductArticleNumber() != null
           && productFunction.get(i).getProductArticleNumber().size() > 0) {
         if (productFunction
             .get(i)
             .getProductArticleNumber()
             .get(0)
             .getProductItemNumberType()
             .equalsIgnoreCase("SA")) {
           return productFunction.get(i).getProductArticleNumber().get(0).getProductIsbn();
         }
       }
     }
   }
   return null;
 }
 private String getSubscriptionDateTo(LineItemOrder lineItemOrder) {
   if (lineItemOrder.getDateTimeDetail() != null && lineItemOrder.getDateTimeDetail().size() > 1) {
     if (lineItemOrder.getDateTimeDetail().get(1).getDateTimeInformationList() != null
         && lineItemOrder.getDateTimeDetail().get(1).getDateTimeInformationList().size() > 0) {
       if (lineItemOrder
               .getDateTimeDetail()
               .get(1)
               .getDateTimeInformationList()
               .get(0)
               .getPeriod()
               .length()
           == 8) {
         return lineItemOrder
             .getDateTimeDetail()
             .get(1)
             .getDateTimeInformationList()
             .get(0)
             .getPeriod();
       } else {
         String subscriptionDate =
             lineItemOrder
                     .getDateTimeDetail()
                     .get(1)
                     .getDateTimeInformationList()
                     .get(0)
                     .getPeriod()
                 + "01";
         int day = getLastDayOfMonth(subscriptionDate);
         return lineItemOrder
                 .getDateTimeDetail()
                 .get(1)
                 .getDateTimeInformationList()
                 .get(0)
                 .getPeriod()
             + day;
       }
     }
   }
   return null;
 }
 public String getBFNNumber(LineItemOrder lineItemOrder) {
   List<SupplierReferenceInformation> supplierReferenceInformationList =
       lineItemOrder.getSupplierReferenceInformation();
   if (supplierReferenceInformationList != null && supplierReferenceInformationList.size() > 0) {
     for (int i = 0; i < supplierReferenceInformationList.size(); i++) {
       SupplierReferenceInformation supplierReferenceInformation =
           supplierReferenceInformationList.get(i);
       List<SupplierLineItemReference> supplierLineItemReferenceList =
           supplierReferenceInformation.getSupplierLineItemReference();
       if (supplierLineItemReferenceList != null && supplierLineItemReferenceList.size() > 0) {
         SupplierLineItemReference supplierLineItemReferenceRef =
             supplierLineItemReferenceList.get(0);
         String supplierOrderLine = supplierLineItemReferenceRef.getSuppliersOrderLine();
         String vendorItemReference = supplierLineItemReferenceRef.getVendorReferenceNumber();
         if (supplierOrderLine.equals("BFN")) {
           return vendorItemReference;
         }
       }
     }
   }
   return null;
 }
 private String getItemDescription(LineItemOrder lineItemOrder) {
   String description = "";
   if (lineItemOrder.getItemDescriptionList() != null
       && lineItemOrder.getItemDescriptionList().size() > 0) {
     for (int i = 0; i < lineItemOrder.getItemDescriptionList().size(); i++) {
       if (lineItemOrder.getItemDescriptionList().get(i).getItemCharacteristicCode().equals("050")
           || lineItemOrder
               .getItemDescriptionList()
               .get(i)
               .getItemCharacteristicCode()
               .equals("JTI")) {
         if (StringUtils.isNotBlank(description)) {
           description = description + lineItemOrder.getItemDescriptionList().get(i).getData();
         } else {
           description = lineItemOrder.getItemDescriptionList().get(i).getData();
         }
       }
     }
     return description;
   }
   return null;
 }
  private Integer getPurchaseOrderNumber(LineItemOrder lineItemOrder) throws Exception {
    if (lineItemOrder.getSupplierReferenceInformation() != null
        && lineItemOrder.getSupplierReferenceInformation().size() > 0) {
      for (int i = 0; i < lineItemOrder.getSupplierReferenceInformation().size(); i++) {
        if (lineItemOrder.getSupplierReferenceInformation().get(i).getSupplierLineItemReference()
                != null
            && lineItemOrder
                    .getSupplierReferenceInformation()
                    .get(i)
                    .getSupplierLineItemReference()
                    .size()
                > 0) {
          for (int j = 0;
              j
                  < lineItemOrder
                      .getSupplierReferenceInformation()
                      .get(i)
                      .getSupplierLineItemReference()
                      .size();
              j++) {
            if (lineItemOrder
                        .getSupplierReferenceInformation()
                        .get(i)
                        .getSupplierLineItemReference()
                        .get(j)
                        .getSuppliersOrderLine()
                    != null
                && (lineItemOrder
                        .getSupplierReferenceInformation()
                        .get(i)
                        .getSupplierLineItemReference()
                        .get(j)
                        .getSuppliersOrderLine()
                        .equals("ON")
                    || lineItemOrder
                        .getSupplierReferenceInformation()
                        .get(i)
                        .getSupplierLineItemReference()
                        .get(j)
                        .getSuppliersOrderLine()
                        .equals("LI"))) {
              try {
                if (lineItemOrder
                            .getSupplierReferenceInformation()
                            .get(i)
                            .getSupplierLineItemReference()
                            .get(j)
                            .getVendorReferenceNumber()
                        != null
                    && isNumeric(
                        lineItemOrder
                            .getSupplierReferenceInformation()
                            .get(i)
                            .getSupplierLineItemReference()
                            .get(j)
                            .getVendorReferenceNumber())) {
                  return Integer.parseInt(
                      lineItemOrder
                          .getSupplierReferenceInformation()
                          .get(i)
                          .getSupplierLineItemReference()
                          .get(j)
                          .getVendorReferenceNumber());
                } else {
                  return 0;
                }

              } catch (Exception e) {
                LOG.error(
                    "Purchase Order Number should be a number but invoice file has :"
                        + lineItemOrder
                            .getSupplierReferenceInformation()
                            .get(i)
                            .getSupplierLineItemReference()
                            .get(j)
                            .getVendorReferenceNumber());
                throw new Exception(
                    "Purchase Order Number should be a number but invoice file has :"
                        + lineItemOrder
                            .getSupplierReferenceInformation()
                            .get(i)
                            .getSupplierLineItemReference()
                            .get(j)
                            .getVendorReferenceNumber(),
                    e);
              }
            }
          }
        }
      }
    }
    /*if(invOrder.getMessage().getPurchaseOrderQualifier() != null){
        if(invOrder.getMessage().getPurchaseOrderQualifier().getPurchaseOrderReference() != null){
            return Integer.parseInt(invOrder.getMessage().getPurchaseOrderQualifier().getPurchaseOrderReference().getPurchaseOrderNumber());
        }
    }*/
    return null;
  }