details:   https://code.openbravo.com/erp/devel/pi/rev/004ee0b33251
changeset: 16844:004ee0b33251
user:      Eduardo Argal Guibert <eduardo.argal <at> openbravo.com>
date:      Thu Jun 14 17:33:57 2012 +0200
summary:   Fixes bug 20754

details:   https://code.openbravo.com/erp/devel/pi/rev/ff291597ae13
changeset: 16845:ff291597ae13
user:      Eduardo Argal Guibert <eduardo.argal <at> openbravo.com>
date:      Thu Jun 14 18:51:22 2012 +0200
summary:   Fixes bug 20762

details:   https://code.openbravo.com/erp/devel/pi/rev/12f711dbc48e
changeset: 16846:12f711dbc48e
user:      Eduardo Argal Guibert <eduardo.argal <at> openbravo.com>
date:      Thu Jun 14 18:52:29 2012 +0200
summary:   merge

diffstat:

 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddOrderOrInvoice.java
 |  54 ++++---
 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/process/FIN_AddPayment.java
            |  14 +-
 src/org/openbravo/erpCommon/ad_callouts/SE_Invoice_BPartner.java               
                              |  28 +++-
 src/org/openbravo/erpCommon/ad_callouts/SE_Order_BPartner.java                 
                              |  33 +++-
 src/org/openbravo/erpCommon/ad_callouts/SE_Project_BPartner.java               
                              |  65 ++++++++--
 src/org/openbravo/erpCommon/ad_callouts/SE_Proposal_BPartner.java              
                              |  32 ++++-
 src/org/openbravo/erpCommon/ad_callouts/SL_InOut_BPartner.java                 
                              |  36 ++++-
 7 files changed, 193 insertions(+), 69 deletions(-)

diffs (truncated from 394 to 300 lines):

diff -r 066d746f200f -r 12f711dbc48e 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddOrderOrInvoice.java
--- 
a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddOrderOrInvoice.java
      Thu Jun 14 13:16:38 2012 +0200
+++ 
b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/ad_actionbutton/AddOrderOrInvoice.java
      Thu Jun 14 18:52:29 2012 +0200
@@ -216,9 +216,13 @@
         if (strAction.equals("PRP") || strAction.equals("PPP") || 
strAction.equals("PRD")
             || strAction.equals("PPW")) {
           try {
-            // If Action PRP o PPW, Process payment but as well create a 
financial transaction
-            message = FIN_AddPayment.processPayment(vars, this,
-                (strAction.equals("PRP") || strAction.equals("PPP")) ? "P" : 
"D", payment);
+            // Process just in case there are lines, empty Refund payment does 
not need to call
+            // process
+            if (payment.getFINPaymentDetailList().size() > 0) {
+              // If Action PRP o PPW, Process payment but as well create a 
financial transaction
+              message = FIN_AddPayment.processPayment(vars, this,
+                  (strAction.equals("PRP") || strAction.equals("PPP")) ? "P" : 
"D", payment);
+            }
             if (strDifferenceAction.equals("refund")) {
               Boolean newPayment = 
!payment.getFINPaymentDetailList().isEmpty();
               FIN_Payment refundPayment = 
FIN_AddPayment.createRefundPayment(this, vars, payment,
@@ -277,7 +281,6 @@
       List<FIN_PaymentScheduleDetail> selectedPaymentDetails) {
     Set<String> toRemovePDs = new HashSet<String>();
     for (FIN_PaymentDetail pd : payment.getFINPaymentDetailList()) {
-
       for (FIN_PaymentScheduleDetail psd : 
pd.getFINPaymentScheduleDetailList()) {
         if (!selectedPaymentDetails.contains(psd)) {
           if (pd.getGLItem() != null) {
@@ -287,6 +290,9 @@
           // update outstanding amount
           List<FIN_PaymentScheduleDetail> outStandingPSDs = 
FIN_AddPayment.getOutstandingPSDs(psd);
           if (outStandingPSDs.size() == 0) {
+            psd.setPaymentDetails(null);
+            psd.setFINOrigPaymentScheduleDetailList(null);
+            OBDal.getInstance().save(psd);
             toRemovePDs.add(pd.getId());
           } else {
             // First make sure outstanding amount is not equal zero
@@ -305,25 +311,29 @@
     }
     for (String pdID : toRemovePDs) {
       FIN_PaymentDetail pd = OBDal.getInstance().get(FIN_PaymentDetail.class, 
pdID);
-      FIN_PaymentScheduleDetail psd = 
OBDal.getInstance().get(FIN_PaymentScheduleDetail.class,
-          pd.getFINPaymentScheduleDetailList().get(0).getId());
-      pd.getFINPaymentScheduleDetailList().remove(psd);
-      OBDal.getInstance().save(pd);
-      psd.setFINOrigPaymentScheduleDetailList(null);
-      OBDal.getInstance().save(psd);
-      ArrayList<String> opsdToRemove = new ArrayList<String>();
-      OBCriteria<FIN_OrigPaymentScheduleDetail> opsds = 
OBDal.getInstance().createCriteria(
-          FIN_OrigPaymentScheduleDetail.class);
-      
opsds.add(Restrictions.eq(FIN_OrigPaymentScheduleDetail.PROPERTY_PAYMENTSCHEDULEDETAIL,
 psd));
-      for (FIN_OrigPaymentScheduleDetail opsd : opsds.list()) {
-        opsdToRemove.add(opsd.getId());
+      boolean hasPSD = pd.getFINPaymentScheduleDetailList().size() > 0;
+      if (hasPSD) {
+        FIN_PaymentScheduleDetail psd = 
OBDal.getInstance().get(FIN_PaymentScheduleDetail.class,
+            pd.getFINPaymentScheduleDetailList().get(0).getId());
+        pd.getFINPaymentScheduleDetailList().remove(psd);
+        OBDal.getInstance().save(pd);
+        psd.setFINOrigPaymentScheduleDetailList(null);
+        OBDal.getInstance().save(psd);
+        ArrayList<String> opsdToRemove = new ArrayList<String>();
+        OBCriteria<FIN_OrigPaymentScheduleDetail> opsds = 
OBDal.getInstance().createCriteria(
+            FIN_OrigPaymentScheduleDetail.class);
+        opsds.add(Restrictions
+            .eq(FIN_OrigPaymentScheduleDetail.PROPERTY_PAYMENTSCHEDULEDETAIL, 
psd));
+        for (FIN_OrigPaymentScheduleDetail opsd : opsds.list()) {
+          opsdToRemove.add(opsd.getId());
+        }
+        for (String id : opsdToRemove) {
+          FIN_OrigPaymentScheduleDetail opsd = OBDal.getInstance().get(
+              FIN_OrigPaymentScheduleDetail.class, id);
+          OBDal.getInstance().remove(opsd);
+        }
+        OBDal.getInstance().remove(psd);
       }
-      for (String id : opsdToRemove) {
-        FIN_OrigPaymentScheduleDetail opsd = OBDal.getInstance().get(
-            FIN_OrigPaymentScheduleDetail.class, id);
-        OBDal.getInstance().remove(opsd);
-      }
-      OBDal.getInstance().remove(psd);
       payment.getFINPaymentDetailList().remove(pd);
       OBDal.getInstance().save(payment);
       OBDal.getInstance().remove(pd);
diff -r 066d746f200f -r 12f711dbc48e 
modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/process/FIN_AddPayment.java
--- 
a/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/process/FIN_AddPayment.java
 Thu Jun 14 13:16:38 2012 +0200
+++ 
b/modules/org.openbravo.advpaymentmngt/src/org/openbravo/advpaymentmngt/process/FIN_AddPayment.java
 Thu Jun 14 18:52:29 2012 +0200
@@ -225,12 +225,14 @@
             
OBDal.getInstance().save(paymentScheduleDetail.getPaymentDetails());
           } else if (isWriteoff) {
             List<FIN_PaymentScheduleDetail> outStandingPSDs = 
getOutstandingPSDs(paymentScheduleDetail);
-            
paymentScheduleDetail.setWriteoffAmount(outStandingPSDs.get(0).getAmount());
-            OBDal.getInstance().save(paymentScheduleDetail);
-            paymentScheduleDetail.getPaymentDetails().setWriteoffAmount(
-                outStandingPSDs.get(0).getAmount());
-            
OBDal.getInstance().save(paymentScheduleDetail.getPaymentDetails());
-            OBDal.getInstance().remove(outStandingPSDs.get(0));
+            if (outStandingPSDs.size() > 0) {
+              
paymentScheduleDetail.setWriteoffAmount(outStandingPSDs.get(0).getAmount());
+              OBDal.getInstance().save(paymentScheduleDetail);
+              paymentScheduleDetail.getPaymentDetails().setWriteoffAmount(
+                  outStandingPSDs.get(0).getAmount());
+              
OBDal.getInstance().save(paymentScheduleDetail.getPaymentDetails());
+              OBDal.getInstance().remove(outStandingPSDs.get(0));
+            }
           }
         } else {
           BigDecimal paymentDetailAmount = 
selectedPaymentScheduleDetailsAmounts
diff -r 066d746f200f -r 12f711dbc48e 
src/org/openbravo/erpCommon/ad_callouts/SE_Invoice_BPartner.java
--- a/src/org/openbravo/erpCommon/ad_callouts/SE_Invoice_BPartner.java  Thu Jun 
14 13:16:38 2012 +0200
+++ b/src/org/openbravo/erpCommon/ad_callouts/SE_Invoice_BPartner.java  Thu Jun 
14 18:52:29 2012 +0200
@@ -149,20 +149,38 @@
       }
 
       resultado.append("new Array(\"inpcBpartnerLocationId\", ");
+
       if (tdv != null && tdv.length > 0) {
         resultado.append("new Array(");
-        for (int i = 0; i < tdv.length; i++) {
-          resultado.append("new Array(\"" + tdv[i].getField("id") + "\", \""
-              + FormatUtilities.replaceJS(tdv[i].getField("name")) + "\", \""
-              + (tdv[i].getField("id").equalsIgnoreCase(strLocation) ? "true" 
: "false") + "\")");
-          if (i < tdv.length - 1) {
+        if (strLocation.isEmpty()) {
+          // If no location is provided, the first one is selected
+          resultado.append("new Array(\"" + tdv[0].getField("id") + "\", \""
+              + FormatUtilities.replaceJS(tdv[0].getField("name")) + "\", \"" 
+ "true" + "\")");
+          if (tdv.length > 1) {
             resultado.append(",\n");
           }
+          for (int i = 1; i < tdv.length; i++) {
+            resultado.append("new Array(\"" + tdv[i].getField("id") + "\", \""
+                + FormatUtilities.replaceJS(tdv[i].getField("name")) + "\", 
\"" + "false" + "\")");
+            if (i < tdv.length - 1)
+              resultado.append(",\n");
+          }
+        } else {
+          // If a location is provided, it is selected
+          for (int i = 0; i < tdv.length; i++) {
+            resultado.append("new Array(\"" + tdv[i].getField("id") + "\", \""
+                + FormatUtilities.replaceJS(tdv[i].getField("name")) + "\", \""
+                + (tdv[i].getField("id").equalsIgnoreCase(strLocation) ? 
"true" : "false") + "\")");
+            if (i < tdv.length - 1) {
+              resultado.append(",\n");
+            }
+          }
         }
         resultado.append("\n)");
       } else {
         resultado.append("null");
       }
+
       resultado.append("\n),");
       resultado.append("new Array(\"inpsalesrepId\", ");
       FieldProvider[] tld = null;
diff -r 066d746f200f -r 12f711dbc48e 
src/org/openbravo/erpCommon/ad_callouts/SE_Order_BPartner.java
--- a/src/org/openbravo/erpCommon/ad_callouts/SE_Order_BPartner.java    Thu Jun 
14 13:16:38 2012 +0200
+++ b/src/org/openbravo/erpCommon/ad_callouts/SE_Order_BPartner.java    Thu Jun 
14 18:52:29 2012 +0200
@@ -118,17 +118,22 @@
     }
 
     String strLocation = info.vars.getStringParameter("inpcBpartnerId_LOC");
-    if (!strLocation.isEmpty()) {
-      if (tdv != null && tdv.length > 0) {
-        info.addSelect("inpcBpartnerLocationId");
+    if (tdv != null && tdv.length > 0) {
+      info.addSelect("inpcBpartnerLocationId");
+      if (strLocation.isEmpty()) {
+        // If no location is provided, the first one is selected
+        info.addSelectResult(tdv[0].getField("id"), tdv[0].getField("name"), 
true);
+        for (int i = 1; i < tdv.length; i++) {
+          info.addSelectResult(tdv[i].getField("id"), tdv[i].getField("name"), 
false);
+        }
+      } else {
+        // If a location is provided, it is selected
         for (int i = 0; i < tdv.length; i++) {
           info.addSelectResult(tdv[i].getField("id"), tdv[i].getField("name"), 
tdv[i]
               .getField("id").equalsIgnoreCase(strLocation));
         }
-        info.endSelect();
-      } else {
-        info.addResult("inpcBpartnerLocationId", null);
       }
+      info.endSelect();
     }
     // Warehouses
 
@@ -246,11 +251,19 @@
 
     if (tlv != null && tlv.length > 0) {
       info.addSelect("inpbilltoId");
-      for (int i = 0; i < tlv.length; i++) {
-        info.addSelectResult(tlv[i].getField("id"), tlv[i].getField("name"), 
tlv[i].getField("id")
-            .equalsIgnoreCase(strLocation));
+      if (strLocation.isEmpty()) {
+        // If no location is provided, the first one is selected
+        info.addSelectResult(tlv[0].getField("id"), tlv[0].getField("name"), 
true);
+        for (int i = 0; i < tlv.length; i++) {
+          info.addSelectResult(tlv[i].getField("id"), tlv[i].getField("name"), 
false);
+        }
+      } else {
+        // If a location is provided, it is selected
+        for (int i = 0; i < tlv.length; i++) {
+          info.addSelectResult(tlv[i].getField("id"), tlv[i].getField("name"), 
tlv[i]
+              .getField("id").equalsIgnoreCase(strLocation));
+        }
       }
-
       info.endSelect();
     } else {
       info.addResult("inpbilltoId", null);
diff -r 066d746f200f -r 12f711dbc48e 
src/org/openbravo/erpCommon/ad_callouts/SE_Project_BPartner.java
--- a/src/org/openbravo/erpCommon/ad_callouts/SE_Project_BPartner.java  Thu Jun 
14 13:16:38 2012 +0200
+++ b/src/org/openbravo/erpCommon/ad_callouts/SE_Project_BPartner.java  Thu Jun 
14 18:52:29 2012 +0200
@@ -113,16 +113,38 @@
     resultado.append("new Array(\"inpcBpartnerLocationId\", ");
     if (tdv != null && tdv.length > 0) {
       resultado.append("new Array(");
-      for (int i = 0; i < tdv.length; i++) {
-        resultado.append("new Array(\"" + tdv[i].getField("id") + "\", \""
-            + FormatUtilities.replaceJS(tdv[i].getField("name")) + "\", \""
-            + (tdv[i].getField("id").equalsIgnoreCase(strLocation) ? "true" : 
"false") + "\")");
-        if (i < tdv.length - 1)
-          resultado.append(",\n");
+      if (strLocation.isEmpty()) {
+        // If no location is provided, the first one is selected
+        if (tdv.length > 0) {
+          resultado.append("new Array(\"" + tdv[0].getField("id") + "\", \""
+              + FormatUtilities.replaceJS(tdv[0].getField("name")) + "\", \"" 
+ "true" + "\")");
+          if (tdv.length > 1) {
+            resultado.append(",\n");
+          }
+        }
+        for (int i = 1; i < tdv.length; i++) {
+          resultado.append("new Array(\"" + tdv[i].getField("id") + "\", \""
+              + FormatUtilities.replaceJS(tdv[i].getField("name")) + "\", \"" 
+ "false" + "\")");
+          if (i < tdv.length - 1) {
+            resultado.append(",\n");
+          }
+        }
+      } else {
+        // If a location is provided, it is selected
+        for (int i = 0; i < tdv.length; i++) {
+          resultado.append("new Array(\"" + tdv[i].getField("id") + "\", \""
+              + FormatUtilities.replaceJS(tdv[i].getField("name")) + "\", \""
+              + (tdv[i].getField("id").equalsIgnoreCase(strLocation) ? "true" 
: "false") + "\")");
+          if (i < tdv.length - 1) {
+            resultado.append(",\n");
+          }
+        }
       }
       resultado.append("\n)");
-    } else
+
+    } else {
       resultado.append("null");
+    }
     resultado.append("\n),");
     try {
       ComboTableData comboTableData = new ComboTableData(vars, this, 
"TABLEDIR", "AD_User_ID", "",
@@ -183,12 +205,29 @@
     resultado.append("new Array(\"inpbilltoId\", ");
     if (tlv != null && tlv.length > 0) {
       resultado.append("new Array(");
-      for (int i = 0; i < tlv.length; i++) {
-        resultado.append("new Array(\"" + tlv[i].getField("id") + "\", \""
-            + FormatUtilities.replaceJS(tlv[i].getField("name")) + "\", \""
-            + (tlv[i].getField("id").equalsIgnoreCase(strLocation) ? "true" : 
"false") + "\")");
-        if (i < tlv.length - 1)
-          resultado.append(",\n");
+
+      if (strLocation.isEmpty()) {
+        if (tlv.length > 0) {
+          resultado.append("new Array(\"" + tlv[0].getField("id") + "\", \""
+              + FormatUtilities.replaceJS(tlv[0].getField("name")) + "\", \"" 
+ "true" + "\")");
+          if (tlv.length > 1) {
+            resultado.append(",\n");
+          }
+        }
+        for (int i = 1; i < tlv.length; i++) {
+          resultado.append("new Array(\"" + tlv[i].getField("id") + "\", \""
+              + FormatUtilities.replaceJS(tlv[i].getField("name")) + "\", \"" 
+ "false" + "\")");
+          if (i < tlv.length - 1)
+            resultado.append(",\n");
+        }
+      } else {
+        for (int i = 0; i < tlv.length; i++) {
+          resultado.append("new Array(\"" + tlv[i].getField("id") + "\", \""
+              + FormatUtilities.replaceJS(tlv[i].getField("name")) + "\", \""
+              + (tlv[i].getField("id").equalsIgnoreCase(strLocation) ? "true" 
: "false") + "\")");
+          if (i < tlv.length - 1)
+            resultado.append(",\n");
+        }
       }
       resultado.append("\n)");
     } else
diff -r 066d746f200f -r 12f711dbc48e 
src/org/openbravo/erpCommon/ad_callouts/SE_Proposal_BPartner.java
--- a/src/org/openbravo/erpCommon/ad_callouts/SE_Proposal_BPartner.java Thu Jun 
14 13:16:38 2012 +0200

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to