Author: bibryam
Date: Tue Aug 2 09:04:02 2011
New Revision: 1153073
URL:
http://svn.apache.org/viewvc?rev=1153073&view=revLog:
A slightly modified patch from Martin Kreidenweis - voided payments are auto-applied to new order invoices
https://issues.apache.org/jira/browse/OFBIZ-4345Modified:
ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/invoice/InvoiceServices.java
Modified: ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/invoice/InvoiceServices.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/invoice/InvoiceServices.java?rev=1153073&r1=1153072&r2=1153073&view=diff==============================================================================
--- ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/invoice/InvoiceServices.java (original)
+++ ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/invoice/InvoiceServices.java Tue Aug 2 09:04:02 2011
@@ -747,7 +747,10 @@ public class InvoiceServices {
}
// check for previous order payments
- List<GenericValue> orderPaymentPrefs = delegator.findByAnd("OrderPaymentPreference", UtilMisc.toMap("orderId", orderId));
+ List<EntityExpr> paymentPrefConds = UtilMisc.toList(
+ EntityCondition.makeCondition("orderId", EntityOperator.EQUALS, orderId),
+ EntityCondition.makeCondition("statusId", EntityOperator.NOT_EQUAL, "PAYMENT_CANCELLED"));
+ List<GenericValue> orderPaymentPrefs = delegator.findList("OrderPaymentPreference", EntityCondition.makeCondition(paymentPrefConds, EntityOperator.AND), null, null, null, false);
List<GenericValue> currentPayments = FastList.newInstance();
for (GenericValue paymentPref : orderPaymentPrefs) {
List<GenericValue> payments = paymentPref.getRelated("Payment");
@@ -755,6 +758,9 @@ public class InvoiceServices {
}
// apply these payments to the invoice if they have any remaining amount to apply
for (GenericValue payment : currentPayments) {
+ if ("PMNT_VOID".equals(payment.getString("statusId")) || "PMNT_CANCELLED".equals(payment.getString("statusId"))) {
+ continue;
+ }
BigDecimal notApplied = PaymentWorker.getPaymentNotApplied(payment);
if (notApplied.signum() > 0) {
Map<String, Object> appl = FastMap.newInstance();