private void setCurrencyDetails(INVOrder invOrder, OleInvoiceRecord oleInvoiceRecord) {
   if (invOrder.getMessage() != null
       && invOrder.getMessage().getCurrencyDetails() != null
       && invOrder.getMessage().getCurrencyDetails().getCurrencyDetailsSupplierInformation()
           != null) {
     if (!StringUtils.isBlank(
         invOrder
             .getMessage()
             .getCurrencyDetails()
             .getCurrencyDetailsSupplierInformation()
             .getCurrencyType())) {
       Map<String, String> currencyTypeMap = new HashMap<>();
       currencyTypeMap.put(
           OLEConstants.CURR_ALPHA_CD,
           invOrder
               .getMessage()
               .getCurrencyDetails()
               .getCurrencyDetailsSupplierInformation()
               .getCurrencyType());
       List<OleCurrencyType> currencyTypeList =
           (List) getBusinessObjectService().findMatching(OleCurrencyType.class, currencyTypeMap);
       if (currencyTypeList != null && currencyTypeList.size() > 0) {
         oleInvoiceRecord.setCurrencyTypeId(
             currencyTypeList.get(0).getCurrencyTypeId().toString());
         oleInvoiceRecord.setCurrencyType(currencyTypeList.get(0).getCurrencyType());
         if (!oleInvoiceRecord
             .getCurrencyType()
             .equalsIgnoreCase(OleSelectConstant.CURRENCY_TYPE_NAME)) {
           oleInvoiceRecord.setForeignListPrice(oleInvoiceRecord.getListPrice());
         }
       }
     }
   }
 }
 private String getAdditionCharge(INVOrder invOrder) {
   if (invOrder.getMessage().getMonetary() != null) {
     if (invOrder.getMessage().getMonetary().getMonetaryInformation() != null) {
       return invOrder.getMessage().getMonetary().getMonetaryInformation().getAmount();
     }
   }
   return null;
 }
 private String getAdditionChargeCode(INVOrder invOrder) {
   if (invOrder.getMessage().getAllowanceOrCharge() != null) {
     if (invOrder.getMessage().getAllowanceOrCharge().getSpecialServiceIdentification() != null) {
       return invOrder
           .getMessage()
           .getAllowanceOrCharge()
           .getSpecialServiceIdentification()
           .getSpecialServiceCode();
     }
   }
   return null;
 }
 /**
  * This method gets the invoice Number from invoice Order.
  *
  * @param invOrder
  * @return
  */
 private String getInvoiceNumber(INVOrder invOrder) throws Exception {
   try {
     return invOrder
         .getMessage()
         .getMessageBeginning()
         .getMessageBeginningInterchangeControlReference();
   } catch (Exception e) {
     throw new Exception("Edifact file has no invoice number.", e);
   }
 }
 /**
  * This method gets the invoice date from invoice Order.
  *
  * @param invOrder
  * @return
  */
 private String getInvoiceDate(INVOrder invOrder) throws Exception {
   try {
     return invOrder
         .getMessage()
         .getMessageCreationInformation()
         .getMessageCreationInfoDetails()
         .getMessageCreationInfoDate();
   } catch (Exception e) {
     throw new Exception("Edifact file has no invoice date.", e);
   }
 }
 private String populateBillToCustomerId(INVOrder invOrder) {
   if (invOrder.getMessage() != null
       && invOrder.getMessage().getPartyQualifier() != null
       && invOrder.getMessage().getPartyQualifier().size() > 0) {
     for (int i = 0; i < invOrder.getMessage().getPartyQualifier().size(); i++) {
       if (invOrder.getMessage().getPartyQualifier().get(i).getPartyCode() != null
           && invOrder
               .getMessage()
               .getPartyQualifier()
               .get(i)
               .getPartyCode()
               .equalsIgnoreCase("BY")) {
         return invOrder
             .getMessage()
             .getPartyQualifier()
             .get(i)
             .getPartyInformation()
             .getCodeIdentification();
       } else if (invOrder.getMessage() != null
           && invOrder.getMessage().getBuyerAdditionalPartyIdentifier() != null
           && invOrder.getMessage().getBuyerAdditionalPartyIdentifier().getBuyerIdentifier()
               != null
           && invOrder
               .getMessage()
               .getBuyerAdditionalPartyIdentifier()
               .getBuyerIdentifier()
               .getBuyerReferenceQualifier()
               .equalsIgnoreCase("API")) {
         return invOrder
             .getMessage()
             .getBuyerAdditionalPartyIdentifier()
             .getBuyerIdentifier()
             .getBuyerReferenceNumber();
       }
     }
   }
   return null;
 }
 private String getVendorAlias(INVOrder invOrder) throws Exception {
   if (invOrder.getMessage().getSupplierAdditionalPartyIdentifier() != null
       && invOrder.getMessage().getSupplierAdditionalPartyIdentifier().getSupplierIdentifier()
           != null
       && StringUtils.isNotEmpty(
           invOrder
               .getMessage()
               .getSupplierAdditionalPartyIdentifier()
               .getSupplierIdentifier()
               .getReferenceQualifier())
       && invOrder
           .getMessage()
           .getSupplierAdditionalPartyIdentifier()
           .getSupplierIdentifier()
           .getReferenceQualifier()
           .equalsIgnoreCase("API")) {
     return invOrder
         .getMessage()
         .getSupplierAdditionalPartyIdentifier()
         .getSupplierIdentifier()
         .getReferenceNumber();
   }
   return null;
 }
 /**
  * This method gets the vendor Number from invoice Order.
  *
  * @param invOrder
  * @return
  */
 private String getVendorNumber(INVOrder invOrder, OleInvoiceRecord oleInvoiceRecord)
     throws Exception {
   try {
     for (int i = 0; i < invOrder.getMessage().getPartyQualifier().size(); i++) {
       if (invOrder.getMessage().getPartyQualifier().get(i).getPartyCode() != null
           && (invOrder
                   .getMessage()
                   .getPartyQualifier()
                   .get(i)
                   .getPartyCode()
                   .equalsIgnoreCase("SR")
               || invOrder
                   .getMessage()
                   .getPartyQualifier()
                   .get(i)
                   .getPartyCode()
                   .equalsIgnoreCase("SU"))) {
         if (StringUtils.isNotEmpty(
             invOrder
                 .getMessage()
                 .getPartyQualifier()
                 .get(i)
                 .getPartyInformation()
                 .getCodeIdentification())) {
           return invOrder
               .getMessage()
               .getPartyQualifier()
               .get(i)
               .getPartyInformation()
               .getCodeIdentification();
         }
       }
     }
   } catch (Exception e) {
     if (oleInvoiceRecord.getVendorItemIdentifier() == null)
       throw new Exception(
           "Edifact file has no vendor number for invoice number:: "
               + getInvoiceNumber(invOrder)
               + " and invoice date:: "
               + getInvoiceDate(invOrder),
           e);
   }
   return null;
 }