Sorry,

I did not intent to commit this in this state (lot of useless changes)
I thought I had removed some Eclpse "Save Actions" parameters, but I forgot 
something in AnyEditTools (another plugin  I use)
I will revert, and commit only the 3 lines concerned thereafter

Jacques

Author: jleroux
Date: Sat Jul  5 03:14:21 2008
New Revision: 674173

URL: http://svn.apache.org/viewvc?rev=674173&view=rev
Log:
Merged by hand from a Rashko Rejmer's patch "capturePaymentsByInvoice service doesn't return not optional parameter while processing multiple orders invoice" (https://issues.apache.org/jira/browse/OFBIZ-1221) - -1221

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

Modified: 
ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/payment/PaymentGatewayServices.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/payment/PaymentGatewayServices.java?rev=674173&r1=674172&r2=674173&view=diff
==============================================================================
--- 
ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/payment/PaymentGatewayServices.java
 (original)
+++ 
ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/payment/PaymentGatewayServices.java
 Sat Jul  5 03:14:21 2008
@@ -6,9 +6,9 @@
 * to you under the Apache License, Version 2.0 (the
 * "License"); you may not use this file except in compliance
 * with the License.  You may obtain a copy of the License at
- *
+ *
 * http://www.apache.org/licenses/LICENSE-2.0
- *
+ *
 * Unless required by applicable law or agreed to in writing,
 * software distributed under the License is distributed on an
 * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
@@ -79,13 +79,13 @@
        // set zero to the proper scale
        if (decimals != -1) ZERO = ZERO.setScale(decimals);
    }
-
+
    /**
     * Authorizes a single order preference with an option to specify an 
amount. The result map has the Booleans
     * "errors" and "finished" which notify the user if there were any errors 
and if the authorizatoin was finished.
-     * There is also a List "messages" for the authorization response messages and a 
Double, "processAmount" as the
-     * amount processed.
-     *
+     * There is also a List "messages" for the authorization response messages and a 
Double, "processAmount" as the
+     * amount processed.
+     *
     * TODO: it might be nice to return the paymentGatewayResponseId
     */
    public static Map authOrderPaymentPreference(DispatchContext dctx, Map 
context) {
@@ -147,7 +147,7 @@
        } else {
            transAmount = orderPaymentPreference.getDouble("maxAmount");
        }
-
+
        // round this before moving on just in case a funny number made it this 
far
        transAmount = (new BigDecimal(transAmount)).setScale(decimals, 
rounding).doubleValue();

@@ -186,7 +186,7 @@
// TODO: what do we do with this? we need to fail the auth but still allow the order through so it can be fixed later // NOTE: this is called through a different path for auto re-orders, so it should be good to go... will leave this comment here just in case...
                        }
-
+
// if we have a failure at this point and no NSF retry is needed, then try other credit cards on file, if the user has any
                        if (!needsNsfRetry) {
                            // is this an auto-order?
@@ -196,16 +196,16 @@
                                if 
("Y".equals(productStore.getString("autoOrderCcTryOtherCards"))) {
                                    // get other credit cards for the bill to 
party
                                    List otherPaymentMethodAndCreditCardList = 
null;
-                                    String billToPartyId = null;
+                                    String billToPartyId = null;
                                    GenericValue billToParty = 
orh.getBillToParty();
                                    if (billToParty != null) {
                                        billToPartyId = 
billToParty.getString("partyId");
                                    } else {
// TODO optional: any other ways to find the bill to party? perhaps look at info from OrderPaymentPreference, ie search back from other PaymentMethod...
                                    }
-
+
                                    if (UtilValidate.isNotEmpty(billToPartyId)) 
{
-                                        otherPaymentMethodAndCreditCardList = 
delegator.findByAnd("PaymentMethodAndCreditCard",
+                                        otherPaymentMethodAndCreditCardList = 
delegator.findByAnd("PaymentMethodAndCreditCard",
                                                UtilMisc.toMap("partyId", billToPartyId, 
"paymentMethodTypeId", "CREDIT_CARD"));
otherPaymentMethodAndCreditCardList = EntityUtil.filterByDate(otherPaymentMethodAndCreditCardList, true);
                                    }
@@ -214,18 +214,18 @@
Iterator otherPaymentMethodAndCreditCardIter = otherPaymentMethodAndCreditCardList.iterator();
                                        while 
(otherPaymentMethodAndCreditCardIter.hasNext()) {
GenericValue otherPaymentMethodAndCreditCard = (GenericValue) otherPaymentMethodAndCreditCardIter.next();
-
+
                                            // change OrderPaymentPreference in 
memory only and call auth service
orderPaymentPreference.set("paymentMethodId", otherPaymentMethodAndCreditCard.getString("paymentMethodId")); Map authRetryResult = authPayment(dispatcher, userLogin, orh, orderPaymentPreference, totalRemaining, reAuth, transAmount);
                                            try {
boolean processRetryResult = processResult(dctx, authPaymentResult, userLogin, orderPaymentPreference);
-
+
                                                if (processRetryResult) {
                                                    // wow, we got here that 
means the other card was successful...
// on success save the OrderPaymentPreference, and then return finished (which will break from loop)
                                                    
orderPaymentPreference.store();
-
+
                                                    Map results = 
ServiceUtil.returnSuccess();
                                                    results.put("messages", 
authRetryResult.get("customerRespMsgs"));
                                                    
results.put("processAmount", thisAmount);
@@ -242,7 +242,7 @@
                                                results.put("errors", 
Boolean.TRUE);
                                                return results;
                                            }
-
+
                                            // if no sucess, fall through to 
return not finished
                                        }
                                    }
@@ -376,7 +376,7 @@

            if (ServiceUtil.isError(results)) {
                hadError += 1;
- messages.add("Could not authorize OrderPaymentPreference [" + paymentPref.getString("orderPaymentPreferenceId") + "] for order [" + orderId + "]: " + results.get(ModelService.ERROR_MESSAGE)); + messages.add("Could not authorize OrderPaymentPreference [" + paymentPref.getString("orderPaymentPreferenceId") + "] for order [" + orderId + "]: " + results.get(ModelService.ERROR_MESSAGE));
                continue;
            }

@@ -466,7 +466,7 @@
        if (paymentPreference.get("securityCode") != null) {
            processContext.put("cardSecurityCode", 
paymentPreference.get("securityCode"));
        }
-
+
        // get the billing information
        getBillingInformation(orh, paymentPreference, processContext);

@@ -504,9 +504,9 @@
        Map processorResult = null;
        try {
// invoke the payment processor; allow 5 minute transaction timeout and require a new tx; we'll capture the error and pass back nicely
-
+
            GenericValue creditCard = (GenericValue) 
processContext.get("creditCard");
-
+
// only try other exp dates if orderHeader.autoOrderShoppingListId is not empty, productStore.autoOrderCcTryExp=Y and this payment is a creditCard boolean tryOtherExpDates = "Y".equals(productStore.getString("autoOrderCcTryExp")) && creditCard != null && UtilValidate.isNotEmpty(orderHeader.getString("autoOrderShoppingListId"));

@@ -514,15 +514,15 @@
            if (!tryOtherExpDates || 
UtilValidate.isDateAfterToday(creditCard.getString("expireDate"))) {
                processorResult = dispatcher.runSync(serviceName, 
processContext, TX_TIME, true);
            }
-
- // try other expire dates if the expireDate is not after today, or if we called the auth service and resultBadExpire = true
+
+ // try other expire dates if the expireDate is not after today, or if we called the auth service and resultBadExpire = true if (tryOtherExpDates && (!UtilValidate.isDateAfterToday(creditCard.getString("expireDate")) || (processorResult != null && Boolean.TRUE.equals((Boolean) processorResult.get("resultBadExpire"))))) {
                // try adding 2, 3, 4 years later with the same month
                String expireDate = creditCard.getString("expireDate");
                int dateSlash1 = expireDate.indexOf("/");
                String month = expireDate.substring(0, dateSlash1);
                String year = expireDate.substring(dateSlash1 + 1);
-
+
                // start adding 2 years, if comes back with resultBadExpire try 
again up to twice incrementing one year
                year = StringUtil.addToNumberString(year, 2);
                // note that this is set in memory only for now, not saved to 
the database unless successful
@@ -537,14 +537,14 @@
                    creditCard.set("expireDate", month + "/" + year);
                    processorResult = dispatcher.runSync(serviceName, 
processContext, TX_TIME, true);
                }
-
+
if (!ServiceUtil.isError(processorResult) && Boolean.TRUE.equals((Boolean) processorResult.get("resultBadExpire"))) {
                    // okay, try one more year... and this is the last try
                    year = StringUtil.addToNumberString(year, 1);
                    creditCard.set("expireDate", month + "/" + year);
                    processorResult = dispatcher.runSync(serviceName, 
processContext, TX_TIME, true);
                }
-
+
                // at this point if we have a successful result, let's save the 
new creditCard expireDate
                if (!ServiceUtil.isError(processorResult) && 
Boolean.TRUE.equals((Boolean) processorResult.get("authResult"))) {
                    // TODO: this is bad; we should be expiring the old card 
and creating a new one instead of editing it
@@ -725,7 +725,7 @@
                Debug.logError(ServiceUtil.getErrorMessage(releaseResult), 
module);
                return 
ServiceUtil.returnError(ServiceUtil.getErrorMessage(releaseResult));
            } else if (! ServiceUtil.isFailure(releaseResult)) {
-                finished.add(paymentPref);
+                finished.add(paymentPref);
            }
        }
        result = ServiceUtil.returnSuccess();
@@ -739,7 +739,7 @@
    }

    /**
-     *
+     *
* Releases authorization for a single OrderPaymentPreference through service calls to the defined processing service for the ProductStore/PaymentMethodType
     * @return SUCCESS|FAILED|ERROR for complete processing of payment.
     */
@@ -756,14 +756,14 @@
        try {
paymentPref = delegator.findByPrimaryKey("OrderPaymentPreference", UtilMisc.toMap("orderPaymentPreferenceId", orderPaymentPreferenceId));
        } catch( GenericEntityException e ) {
-            String errMsg = "Problem getting OrderPaymentPreference for 
orderPaymentPreferenceId " + orderPaymentPreferenceId;
+            String errMsg = "Problem getting OrderPaymentPreference for 
orderPaymentPreferenceId " + orderPaymentPreferenceId;
            Debug.logWarning(e, errMsg, module);
            return ServiceUtil.returnError(errMsg);
        }

        // Error if no OrderPaymentPreference was found
        if (paymentPref == null) {
-            String errMsg = "Could not find OrderPaymentPreference with 
orderPaymentPreferenceId: " + orderPaymentPreferenceId;
+            String errMsg = "Could not find OrderPaymentPreference with 
orderPaymentPreferenceId: " + orderPaymentPreferenceId;
            Debug.logWarning(errMsg, module);
            return ServiceUtil.returnError(errMsg);
        }
@@ -773,14 +773,14 @@
        try {
            orderHeader = delegator.findByPrimaryKey("OrderHeader", 
UtilMisc.toMap("orderId", paymentPref.getString("orderId")));
        } catch( GenericEntityException e ) {
-            String errMsg = "Problem getting OrderHeader for orderId " + 
paymentPref.getString("orderId");
+            String errMsg = "Problem getting OrderHeader for orderId " + 
paymentPref.getString("orderId");
            Debug.logWarning(e, errMsg, module);
            return ServiceUtil.returnError(errMsg);
        }

        // Error if no OrderHeader was found
        if (orderHeader == null) {
- String errMsg = "Could not find OrderHeader with orderId: " + paymentPref.getString("orderId") + "; not processing payments."; + String errMsg = "Could not find OrderHeader with orderId: " + paymentPref.getString("orderId") + "; not processing payments.";
            Debug.logWarning(errMsg, module);
            return ServiceUtil.returnError(errMsg);
        }
@@ -798,12 +798,12 @@
            paymentConfig = paymentSettings.getString("paymentPropertiesPath");
            serviceName = paymentSettings.getString("paymentService");
            if (serviceName == null) {
-                String errMsg = "No payment release service for - " + 
paymentPref.getString("paymentMethodTypeId");
+                String errMsg = "No payment release service for - " + 
paymentPref.getString("paymentMethodTypeId");
                Debug.logWarning(errMsg, module);
                return ServiceUtil.returnError(errMsg);
            }
        } else {
-            String errMsg = "No payment release settings found for - " + 
paymentPref.getString("paymentMethodTypeId");
+            String errMsg = "No payment release settings found for - " + 
paymentPref.getString("paymentMethodTypeId");
            Debug.logWarning(errMsg, module);
            return ServiceUtil.returnError(errMsg);
        }
@@ -996,7 +996,9 @@

        if (testOrderId == null || !allSameOrder) {
            Debug.logWarning("Attempt to settle Invoice #" + invoiceId + " which 
contained none/multiple orders", module);
-            return ServiceUtil.returnSuccess();
+            Map result = ServiceUtil.returnSuccess();
+            result.put("processResult", "FAILED");
+            return result;
        }

        // get the invoice amount (amount to bill)
@@ -1109,7 +1111,7 @@
                        return ServiceUtil.returnError(ex.getMessage());
                    }
                    if (captureResult != null) {
-
+
                        Double amountCaptured = (Double) 
captureResult.get("captureAmount");
Debug.logInfo("Amount captured for order [" + orderId + "] from unapplied payments associated to billing account [" + billingAccountId + "] is: " + amountCaptured, module);

@@ -1215,7 +1217,7 @@
                    amountCapturedBd = amountCapturedBd.setScale(decimals, 
rounding);

                    // decrease amount of next payment preference to capture
-                    amountToCapture = 
amountToCapture.subtract(amountCapturedBd);
+                    amountToCapture = 
amountToCapture.subtract(amountCapturedBd);

                    // add the invoiceId to the result for processing
                    captureResult.put("invoiceId", invoiceId);
@@ -1330,12 +1332,12 @@
        Double captureAmount = (Double) context.get("captureAmount");
        String orderId = (String) context.get("orderId");
        Map results = ServiceUtil.returnSuccess();
-
+
        try {
// Note that the partyIdFrom of the Payment should be the partyIdTo of the invoice, since you're receiving a payment from the party you billed
            GenericValue invoice = delegator.findByPrimaryKey("Invoice", 
UtilMisc.toMap("invoiceId", invoiceId));
-            Map paymentParams = UtilMisc.toMap("paymentTypeId", "CUSTOMER_PAYMENT", 
"paymentMethodTypeId", "EXT_BILLACT",
-                    "partyIdFrom", invoice.getString("partyId"), "partyIdTo", 
invoice.getString("partyIdFrom"),
+            Map paymentParams = UtilMisc.toMap("paymentTypeId", "CUSTOMER_PAYMENT", 
"paymentMethodTypeId", "EXT_BILLACT",
+                    "partyIdFrom", invoice.getString("partyId"), "partyIdTo", 
invoice.getString("partyIdFrom"),
                    "statusId", "PMNT_RECEIVED", "effectiveDate", 
UtilDateTime.nowTimestamp());
            paymentParams.put("amount", captureAmount);
            paymentParams.put("currencyUomId", 
invoice.getString("currencyUomId"));
@@ -1343,10 +1345,10 @@
            Map tmpResult = dispatcher.runSync("createPayment", paymentParams);
            if (ServiceUtil.isError(tmpResult)) {
                return tmpResult;
-            }
-
+            }
+
            String paymentId = (String) tmpResult.get("paymentId");
- tmpResult = dispatcher.runSync("createPaymentApplication", UtilMisc.<String, Object>toMap("paymentId", paymentId, "invoiceId", invoiceId, "billingAccountId", billingAccountId, + tmpResult = dispatcher.runSync("createPaymentApplication", UtilMisc.<String, Object>toMap("paymentId", paymentId, "invoiceId", invoiceId, "billingAccountId", billingAccountId,
                    "amountApplied", captureAmount, "userLogin", userLogin));
            if (ServiceUtil.isError(tmpResult)) {
                return tmpResult;
@@ -1355,7 +1357,7 @@
return ServiceUtil.returnError("No payment created for invoice [" + invoiceId + "] and billing account [" + billingAccountId + "]");
            }
            results.put("paymentId", paymentId);
-
+
            if (orderId != null && captureAmount.doubleValue() > 0) {
                // Create a paymentGatewayResponse, if necessary
                GenericValue order = delegator.findByPrimaryKey("OrderHeader", 
UtilMisc.toMap("orderId", orderId));
@@ -1366,10 +1368,10 @@
List orderPaymentPreferences = delegator.findByAnd("OrderPaymentPreference", UtilMisc.toMap("orderId", orderId, "paymentMethodTypeId", "EXT_BILLACT"));
                if (orderPaymentPreferences != null && 
orderPaymentPreferences.size() > 0) {
                    GenericValue orderPaymentPreference = 
EntityUtil.getFirst(orderPaymentPreferences);
-
+
                    // Check the productStore setting to see if we need to do 
this explicitly
                    GenericValue productStore = 
order.getRelatedOne("ProductStore");
- if (productStore.getString("manualAuthIsCapture") == null || (! productStore.getString("manualAuthIsCapture").equalsIgnoreCase("Y"))) { + if (productStore.getString("manualAuthIsCapture") == null || (! productStore.getString("manualAuthIsCapture").equalsIgnoreCase("Y"))) {
                        String responseId = 
delegator.getNextSeqId("PaymentGatewayResponse");
                        GenericValue pgResponse = 
delegator.makeValue("PaymentGatewayResponse");
                        pgResponse.set("paymentGatewayResponseId", responseId);
@@ -1390,7 +1392,7 @@
                        // Update the orderPaymentPreference
                        orderPaymentPreference.set("statusId", 
"PAYMENT_SETTLED");
                        orderPaymentPreference.store();
-
+
                        results.put("paymentGatewayResponseId", responseId);
                    }
                }
@@ -1415,7 +1417,7 @@
        captureAmount = captureAmount.setScale(decimals, rounding);
        String orderId = (String) context.get("orderId");
        BigDecimal capturedAmount = BigDecimal.ZERO;
-
+
        try {
            // Select all the unapplied payment applications associated to the 
billing account
List conditionList = UtilMisc.toList(EntityCondition.makeCondition("billingAccountId", EntityOperator.EQUALS, billingAccountId),
@@ -1468,7 +1470,7 @@
        results.put("captureAmount", new Double(capturedAmount.doubleValue()));
        return results;
    }
-
+
private static Map capturePayment(DispatchContext dctx, GenericValue userLogin, OrderReadHelper orh, GenericValue paymentPref, double amount) {
        return capturePayment(dctx, userLogin, orh, paymentPref, amount, null);
    }
@@ -1544,17 +1546,17 @@
            ModelService captureService = dctx.getModelService(serviceName);
            Set inParams = captureService.getInParamNames();
            if (inParams.contains("captureAmount")) {
-                captureContext.put("captureAmount", new Double(amount));
+                captureContext.put("captureAmount", new Double(amount));
            } else if (inParams.contains("processAmount")) {
-                captureContext.put("processAmount", new Double(amount));
+                captureContext.put("processAmount", new Double(amount));
            } else {
return ServiceUtil.returnError("Service [" + serviceName + "] does not have a captureAmount or processAmount. Its parameters are: " + inParams);
            }
        } catch (GenericServiceException ex) {
            return ServiceUtil.returnError("Cannot get model service for " + 
serviceName);
        }
-
-
+
+
        if (authTrans != null) {
            captureContext.put("authTrans", authTrans);
        }
@@ -1564,7 +1566,7 @@
        // now invoke the capture service
        Map captureResult = null;
        try {
-            // NOTE DEJ20070819 calling this with a new transaction 
synchronously caused a deadlock because in this
+            // NOTE DEJ20070819 calling this with a new transaction 
synchronously caused a deadlock because in this
            //transaction OrderHeader was updated and with this transaction 
paused and waiting for the new transaction
            //and the new transaction was waiting trying to read the same 
OrderHeader record; note that this only happens
            //for FinAccounts because they are processed internally whereas 
others are not
@@ -1673,7 +1675,7 @@
        // in case we rollback make sure this service gets called
        dispatcher.addRollbackService(model.name, context, true);

-        // invoke the service
+        // invoke the service
        Map resResp;
        try {
            resResp = dispatcher.runSync(model.name, context);
@@ -1683,7 +1685,7 @@
        }
        if (ServiceUtil.isError(resResp)) {
            throw new GeneralException(ServiceUtil.getErrorMessage(resResp));
-        }
+        }
    }

    public static Map processAuthResult(DispatchContext dctx, Map context) {
@@ -1725,7 +1727,7 @@
            response.set("paymentMethodId", 
orderPaymentPreference.get("paymentMethodId"));
            response.set("transCodeEnumId", "PGT_AUTHORIZE");
            response.set("currencyUomId", currencyUomId);
-
+
            // set the avs/fraud result
            response.set("gatewayAvsResult", context.get("avsCode"));
            response.set("gatewayCvResult", context.get("cvCode"));
@@ -1739,7 +1741,7 @@
            response.set("gatewayFlag", context.get("authFlag"));
            response.set("gatewayMessage", context.get("authMessage"));
            response.set("transactionDate", UtilDateTime.nowTimestamp());
-
+
            if (Boolean.TRUE.equals((Boolean) context.get("resultDeclined"))) 
response.set("resultDeclined", "Y");
            if (Boolean.TRUE.equals((Boolean) context.get("resultNsf"))) 
response.set("resultNsf", "Y");
            if (Boolean.TRUE.equals((Boolean) context.get("resultBadExpire"))) 
response.set("resultBadExpire", "Y");
@@ -1747,7 +1749,7 @@

            // save the response
            savePgr(dctx, response);
-
+
            // create the internal messages
            List messages = (List) context.get("internalRespMsgs");
            if (messages != null && messages.size() > 0) {
@@ -1762,11 +1764,11 @@
                    savePgr(dctx, respMsg);
                }
            }
-
+
            if (response.getDouble("amount").doubleValue() != ((Double) 
context.get("processAmount")).doubleValue()) {
Debug.logWarning("The authorized amount does not match the max amount : Response - " + response + " : result - " + context, module);
            }
-
+
            // set the status of the OrderPaymentPreference
            if (context != null && authResult.booleanValue()) {
                orderPaymentPreference.set("statusId", "PAYMENT_AUTHORIZED");
@@ -1775,11 +1777,11 @@
            } else {
                orderPaymentPreference.set("statusId", "PAYMENT_ERROR");
            }
-
+
            // remove sensitive credit card data regardless of outcome
            orderPaymentPreference.set("securityCode", null);
-            orderPaymentPreference.set("track2", null);
-
+            orderPaymentPreference.set("track2", null);
+
            boolean needsNsfRetry = needsNsfRetry(orderPaymentPreference, 
context, delegator);
            if (needsNsfRetry) {
                orderPaymentPreference.set("needsNsfRetry", "Y");
@@ -1799,7 +1801,7 @@
                        creditCard.set("consecutiveFailedAuths", new 
Long(consecutiveFailedAuths.longValue() + 1));
                    }
                    creditCard.set("lastFailedAuthDate", nowTimestamp);
-
+
                    if (Boolean.TRUE.equals((Boolean) 
context.get("resultNsf"))) {
                        Long consecutiveFailedNsf = 
creditCard.getLong("consecutiveFailedNsf");
                        if (consecutiveFailedNsf == null) {
@@ -1812,7 +1814,7 @@
                    creditCard.store();
                }
            }
-
+
            // auth was successful, to clear out any failed auth or nsf info
            if (authResult.booleanValue()) {
                if ((creditCard != null) && 
(creditCard.get("lastFailedAuthDate") != null)) {
@@ -1831,7 +1833,7 @@

        return ServiceUtil.returnSuccess();
    }
-
+
private static boolean needsNsfRetry(GenericValue orderPaymentPreference, Map processContext, GenericDelegator delegator) throws GenericEntityException {
        boolean needsNsfRetry = false;
        if (Boolean.TRUE.equals((Boolean) processContext.get("resultNsf"))) {
@@ -1840,16 +1842,16 @@
            if 
(UtilValidate.isNotEmpty(orderHeader.getString("autoOrderShoppingListId"))) {
                GenericValue productStore = 
orderHeader.getRelatedOne("ProductStore");
                if 
("Y".equals(productStore.getString("autoOrderCcTryLaterNsf"))) {
-                    // one last condition: make sure there have been less than 
ProductStore.autoOrderCcTryLaterMax
+                    // one last condition: make sure there have been less than 
ProductStore.autoOrderCcTryLaterMax
// PaymentGatewayResponse records with the same orderPaymentPreferenceId and paymentMethodId (just in case it has changed)
                    //   and that have resultNsf = Y, ie only consider other 
NSF responses
                    Long autoOrderCcTryLaterMax = 
productStore.getLong("autoOrderCcTryLaterMax");
                    if (autoOrderCcTryLaterMax != null) {
-                        long failedTries = 
delegator.findCountByCondition("PaymentGatewayResponse",
+                        long failedTries = 
delegator.findCountByCondition("PaymentGatewayResponse",
                                EntityCondition.makeCondition(UtilMisc.toMap(
-                                        "orderPaymentPreferenceId", 
orderPaymentPreference.get("orderPaymentPreferenceId"),
+                                        "orderPaymentPreferenceId", 
orderPaymentPreference.get("orderPaymentPreferenceId"),
                                        "paymentMethodId", 
orderPaymentPreference.get("paymentMethodId"),
-                                        "resultNsf", "Y"),
+                                        "resultNsf", "Y"),
                                    EntityOperator.AND),
                                null, null);
                        if (failedTries < autoOrderCcTryLaterMax.longValue()) {
@@ -2085,7 +2087,7 @@
                    Debug.logError(e, message, module);
                    return ServiceUtil.returnError(message );
                }
-            }
+            }

            // determine the partyIdFrom for the payment, which is who made the 
payment
            String partyIdFrom = null;
@@ -2118,7 +2120,7 @@
            } else {
                // otherwise default to Company and print a big warning about 
this
                partyIdTo = "Company";
- Debug.logWarning("Using default value of [" + partyIdTo + "] for payTo on invoice [" + invoiceId + "] and orderPaymentPreference [" + + Debug.logWarning("Using default value of [" + partyIdTo + "] for payTo on invoice [" + invoiceId + "] and orderPaymentPreference [" +
                        paymentPreference.getString("orderPaymentPreferenceId") + 
"]", module);
            }

@@ -2486,12 +2488,12 @@

        return ServiceUtil.returnSuccess();
    }
-
+
    public static Map retryFailedAuthNsfs(DispatchContext dctx, Map context) {
        GenericDelegator delegator = dctx.getDelegator();
        LocalDispatcher dispatcher = dctx.getDispatcher();
        GenericValue userLogin = (GenericValue) context.get("userLogin");
-
+
        // get the date/time for one week before now since we'll only retry 
once a week for NSFs
        Calendar calcCal = Calendar.getInstance();
        calcCal.setTimeInMillis(System.currentTimeMillis());
@@ -2501,7 +2503,7 @@
        EntityListIterator eli = null;
        try {
            eli = delegator.find("OrderPaymentPreference",
- EntityCondition.makeCondition(EntityCondition.makeCondition("needsNsfRetry", EntityOperator.EQUALS, "Y"), EntityOperator.AND, EntityCondition.makeCondition(ModelEntity.STAMP_FIELD, EntityOperator.LESS_THAN_EQUAL_TO, oneWeekAgo)), + EntityCondition.makeCondition(EntityCondition.makeCondition("needsNsfRetry", EntityOperator.EQUALS, "Y"), EntityOperator.AND, EntityCondition.makeCondition(ModelEntity.STAMP_FIELD, EntityOperator.LESS_THAN_EQUAL_TO, oneWeekAgo)),
                    null, null, UtilMisc.toList("orderId"), null);

            List processList = new ArrayList();
@@ -2535,7 +2537,7 @@

        return ServiceUtil.returnSuccess();
    }
-
+
    public static GenericValue getCaptureTransaction(GenericValue 
orderPaymentPreference) {
        GenericValue capTrans = null;
        try {
@@ -2555,7 +2557,7 @@

    /**
     * Gets the chronologically latest PaymentGatewayResponse from an 
OrderPaymentPreference which is either a PRDS_PAY_AUTH
-     * or PRDS_PAY_REAUTH.  Used for capturing.
+     * or PRDS_PAY_REAUTH.  Used for capturing.
     * @param orderPaymentPreference
     * @return
     */
@@ -2648,7 +2650,7 @@
    }

    // safe payment gateway store
-    private static void savePgr(DispatchContext dctx, GenericValue pgr) {
+    private static void savePgr(DispatchContext dctx, GenericValue pgr) {
        Map context = UtilMisc.toMap("paymentGatewayResponse", pgr);
        LocalDispatcher dispatcher = dctx.getDispatcher();
        GenericDelegator delegator = dctx.getDelegator();
@@ -2957,7 +2959,7 @@
                }
            }
        }
-
+
        return ServiceUtil.returnSuccess();
    }

@@ -3044,7 +3046,7 @@
        result.put("processAmount", context.get("processAmount"));
        result.put("authRefNum", refNum);
        result.put("authAltRefNum", refNum);
-        result.put("authCode", "100");
+        result.put("authCode", "100");
        result.put("authMessage", "This is a test processor; no payments were 
captured or authorized.");

        return result;
@@ -3156,7 +3158,7 @@
        String expireDate = creditCard.getString("expireDate");
        String lastNumberStr = expireDate.substring(expireDate.length() - 1);
        int lastNumber = Integer.parseInt(lastNumberStr);
-
+
        if ((float) lastNumber / 2.0 == 0.0) {
            return alwaysBadExpireProcessor(dctx, context);
        } else {



Reply via email to