details:   https://code.openbravo.com/erp/devel/pi/rev/a1661bb0744d
changeset: 35608:a1661bb0744d
user:      Atul Gaware <atul.gaware <at> openbravo.com>
date:      Thu Mar 28 07:19:45 2019 +0530
summary:   Fixes Issue 0040465: NPE is thrown in SE_Payment_BPartner callout

** Use StringUtils to avoid NPE and check whether strcBpartnerId
is not empty before fetching default payment method & financial
account of business partner.

diffstat:

 src/org/openbravo/erpCommon/ad_callouts/SE_Payment_BPartner.java |  92 
+++++----
 1 files changed, 47 insertions(+), 45 deletions(-)

diffs (118 lines):

diff -r e39343ce3826 -r a1661bb0744d 
src/org/openbravo/erpCommon/ad_callouts/SE_Payment_BPartner.java
--- a/src/org/openbravo/erpCommon/ad_callouts/SE_Payment_BPartner.java  Fri Mar 
29 14:19:19 2019 +0000
+++ b/src/org/openbravo/erpCommon/ad_callouts/SE_Payment_BPartner.java  Thu Mar 
28 07:19:45 2019 +0530
@@ -20,6 +20,7 @@
 
 import javax.servlet.ServletException;
 
+import org.apache.commons.lang.StringUtils;
 import org.hibernate.criterion.Restrictions;
 import org.openbravo.advpaymentmngt.utility.FIN_Utility;
 import org.openbravo.base.secureApp.VariablesSecureApp;
@@ -40,60 +41,61 @@
     VariablesSecureApp vars = info.vars;
     String strcBpartnerId = vars.getStringParameter("inpcBpartnerId");
     String strisreceipt = vars.getStringParameter("inpisreceipt");
-    BusinessPartner bpartner = OBDal.getInstance().get(BusinessPartner.class, 
strcBpartnerId);
     boolean isReceipt = "Y".equals(strisreceipt);
 
     // Get the Payment Method and the Financial Acoount
-    FIN_PaymentMethod paymentMethod;
-    FIN_FinancialAccount financialAccount;
+    FIN_PaymentMethod paymentMethod = null;
+    FIN_FinancialAccount financialAccount = null;
 
-    if (isReceipt) {
-      paymentMethod = bpartner.getPaymentMethod();
-      financialAccount = bpartner.getAccount();
-    } else {
-      paymentMethod = bpartner.getPOPaymentMethod();
-      financialAccount = bpartner.getPOFinancialAccount();
-    }
+    if (StringUtils.isNotEmpty(strcBpartnerId)) {
+      BusinessPartner bpartner = 
OBDal.getInstance().get(BusinessPartner.class, strcBpartnerId);
+      if (FIN_Utility.isBlockedBusinessPartner(strcBpartnerId, 
"Y".equals(strisreceipt), 4)) {
+        // If the Business Partner is blocked for this document, show an 
information message.
+        info.addResult("MESSAGE", 
OBMessageUtils.messageBD("ThebusinessPartner") + " "
+            + bpartner.getIdentifier() + " " + 
OBMessageUtils.messageBD("BusinessPartnerBlocked"));
+      }
+      if (isReceipt) {
+        paymentMethod = bpartner.getPaymentMethod();
+        financialAccount = bpartner.getAccount();
+      } else {
+        paymentMethod = bpartner.getPOPaymentMethod();
+        financialAccount = bpartner.getPOFinancialAccount();
+      }
 
-    if (paymentMethod != null && financialAccount != null) {
-      final OBCriteria<FinAccPaymentMethod> apmCriteria = OBDal.getInstance()
-          .createCriteria(FinAccPaymentMethod.class);
-      
apmCriteria.add(Restrictions.eq(FinAccPaymentMethod.PROPERTY_PAYMENTMETHOD, 
paymentMethod));
-      apmCriteria.add(Restrictions.eq(FinAccPaymentMethod.PROPERTY_ACCOUNT, 
financialAccount));
-      apmCriteria.setFilterOnActive(false);
-      FinAccPaymentMethod accPaymentMethod = (FinAccPaymentMethod) 
apmCriteria.uniqueResult();
-      if (accPaymentMethod != null) {
-        if (financialAccount.isActive() && accPaymentMethod.isActive()) {
-          info.addResult("inpfinPaymentmethodId", paymentMethod.getId());
-          info.addResult("inpfinFinancialAccountId", financialAccount.getId());
-        } else if (!financialAccount.isActive() && 
!accPaymentMethod.isActive()) {
-          info.addResult("WARNING",
-              String.format(
-                  Utility.messageBD(new DalConnectionProvider(), 
"finnac_paymet_inact",
-                      vars.getLanguage()),
-                  financialAccount.getIdentifier(), 
paymentMethod.getIdentifier()));
-        } else if (!financialAccount.isActive()) {
-          info.addResult("WARNING", String.format(
-              Utility.messageBD(new DalConnectionProvider(), "finnac_inact", 
vars.getLanguage()),
-              financialAccount.getIdentifier()));
-        } else if (!accPaymentMethod.isActive()) {
-          info.addResult("WARNING",
-              String.format(
-                  Utility.messageBD(new DalConnectionProvider(), 
"paymet_inact",
-                      vars.getLanguage()),
-                  paymentMethod.getIdentifier(), 
financialAccount.getIdentifier()));
+      if (paymentMethod != null && financialAccount != null) {
+        final OBCriteria<FinAccPaymentMethod> apmCriteria = OBDal.getInstance()
+            .createCriteria(FinAccPaymentMethod.class);
+        
apmCriteria.add(Restrictions.eq(FinAccPaymentMethod.PROPERTY_PAYMENTMETHOD, 
paymentMethod));
+        apmCriteria.add(Restrictions.eq(FinAccPaymentMethod.PROPERTY_ACCOUNT, 
financialAccount));
+        apmCriteria.setFilterOnActive(false);
+        FinAccPaymentMethod accPaymentMethod = (FinAccPaymentMethod) 
apmCriteria.uniqueResult();
+        if (accPaymentMethod != null) {
+          if (financialAccount.isActive() && accPaymentMethod.isActive()) {
+            info.addResult("inpfinPaymentmethodId", paymentMethod.getId());
+            info.addResult("inpfinFinancialAccountId", 
financialAccount.getId());
+          } else if (!financialAccount.isActive() && 
!accPaymentMethod.isActive()) {
+            info.addResult("WARNING",
+                String.format(
+                    Utility.messageBD(new DalConnectionProvider(), 
"finnac_paymet_inact",
+                        vars.getLanguage()),
+                    financialAccount.getIdentifier(), 
paymentMethod.getIdentifier()));
+          } else if (!financialAccount.isActive()) {
+            info.addResult("WARNING", String.format(
+                Utility.messageBD(new DalConnectionProvider(), "finnac_inact", 
vars.getLanguage()),
+                financialAccount.getIdentifier()));
+          } else if (!accPaymentMethod.isActive()) {
+            info.addResult("WARNING",
+                String.format(
+                    Utility.messageBD(new DalConnectionProvider(), 
"paymet_inact",
+                        vars.getLanguage()),
+                    paymentMethod.getIdentifier(), 
financialAccount.getIdentifier()));
+          }
+        } else {
+          log4j.info("No default info for the selected business partner {}", 
bpartner);
         }
       } else {
         log4j.info("No default info for the selected business partner {}", 
bpartner);
       }
-    } else {
-      log4j.info("No default info for the selected business partner {}", 
bpartner);
-    }
-    if ((!strcBpartnerId.equals(""))
-        && (FIN_Utility.isBlockedBusinessPartner(strcBpartnerId, 
"Y".equals(strisreceipt), 4))) {
-      // If the Business Partner is blocked for this document, show an 
information message.
-      info.addResult("MESSAGE", OBMessageUtils.messageBD("ThebusinessPartner") 
+ " "
-          + bpartner.getIdentifier() + " " + 
OBMessageUtils.messageBD("BusinessPartnerBlocked"));
     }
   }
 }


_______________________________________________
Openbravo-commits mailing list
Openbravo-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to