Author: jacopoc
Date: Thu Jul  5 23:18:56 2007
New Revision: 553754

URL: http://svn.apache.org/viewvc?view=rev&rev=553754
Log:
Applied patch by Rashko Rejmer (OFBIZ-1128) to fix a bug in the billing account 
balance calculation: the error was that the query to the 
OrderPurchasePaymentSummary entity doesn't group the OrderPaymentPreference 
records with different order statuses.

Modified:
    
ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/payment/BillingAccountWorker.java

Modified: 
ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/payment/BillingAccountWorker.java
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/payment/BillingAccountWorker.java?view=diff&rev=553754&r1=553753&r2=553754
==============================================================================
--- 
ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/payment/BillingAccountWorker.java
 (original)
+++ 
ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/payment/BillingAccountWorker.java
 Thu Jul  5 23:18:56 2007
@@ -153,14 +153,13 @@
                 new EntityExpr("preferenceStatusId", EntityOperator.NOT_IN, 
UtilMisc.toList("PAYMENT_SETTLED", "PAYMENT_RECEIVED", "PAYMENT_DECLINED", 
"PAYMENT_CANCELLED")) // PAYMENT_NOT_AUTH
             ), EntityOperator.AND); 
 
-        GenericValue orderPaymentPreferenceSum = 
EntityUtil.getFirst(delegator.findByCondition("OrderPurchasePaymentSummary", 
whereConditions, null, UtilMisc.toList("maxAmount"), null, null));
-        BigDecimal ordersTotal = null;
-        if (UtilValidate.isNotEmpty(orderPaymentPreferenceSum)) {
-            ordersTotal = orderPaymentPreferenceSum.getBigDecimal("maxAmount");
-        } else {
-            ordersTotal = ZERO;
+        List orderPaymentPreferenceSums = 
delegator.findByCondition("OrderPurchasePaymentSummary", whereConditions, null, 
UtilMisc.toList("maxAmount"), null, null);
+        if (orderPaymentPreferenceSums != null) {
+            for (Iterator oppsi = orderPaymentPreferenceSums.iterator(); 
oppsi.hasNext(); ) {
+                GenericValue orderPaymentPreferenceSum = (GenericValue) 
oppsi.next();
+                balance = 
balance.subtract(orderPaymentPreferenceSum.getBigDecimal("maxAmount"));
+            }
         }
-        balance = balance.subtract(ordersTotal);
 
         List paymentAppls = delegator.findByAnd("PaymentApplication", 
UtilMisc.toMap("billingAccountId", billingAccountId));
         // TODO: cancelled payments?


Reply via email to