svn commit: r554135 - /ofbiz/branches/release4.0/applications/accounting/src/org/ofbiz/accounting/payment/PaymentGatewayServices.java

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

svn commit: r554135 - /ofbiz/branches/release4.0/applications/accounting/src/org/ofbiz/accounting/payment/PaymentGatewayServices.java

lektran
Author: lektran
Date: Fri Jul  6 22:25:51 2007
New Revision: 554135

URL: http://svn.apache.org/viewvc?view=rev&rev=554135
Log:
Applied fix from trunk for revision: 543725

Modified:
    ofbiz/branches/release4.0/applications/accounting/src/org/ofbiz/accounting/payment/PaymentGatewayServices.java

Modified: ofbiz/branches/release4.0/applications/accounting/src/org/ofbiz/accounting/payment/PaymentGatewayServices.java
URL: http://svn.apache.org/viewvc/ofbiz/branches/release4.0/applications/accounting/src/org/ofbiz/accounting/payment/PaymentGatewayServices.java?view=diff&rev=554135&r1=554134&r2=554135
==============================================================================
--- ofbiz/branches/release4.0/applications/accounting/src/org/ofbiz/accounting/payment/PaymentGatewayServices.java (original)
+++ ofbiz/branches/release4.0/applications/accounting/src/org/ofbiz/accounting/payment/PaymentGatewayServices.java Fri Jul  6 22:25:51 2007
@@ -1223,15 +1223,16 @@
         String orderId = paymentPref.getString("orderId");
         OrderReadHelper orh = new OrderReadHelper(delegator, orderId);
 
-        // create a new payment preference and authorize it
+        String statusId = ("EXT_BILLACT".equals(paymentPref.getString("paymentMethodTypeId"))? "PAYMENT_NOT_RECEIVED": "PAYMENT_NOT_AUTH");
+        // create a new payment preference
         Debug.logInfo("Creating payment preference split", module);
         String newPrefId = delegator.getNextSeqId("OrderPaymentPreference");
         GenericValue newPref = delegator.makeValue("OrderPaymentPreference", UtilMisc.toMap("orderPaymentPreferenceId", newPrefId));
         newPref.set("orderId", paymentPref.get("orderId"));
         newPref.set("paymentMethodTypeId", paymentPref.get("paymentMethodTypeId"));
         newPref.set("paymentMethodId", paymentPref.get("paymentMethodId"));
-        newPref.set("maxAmount", paymentPref.get("maxAmount"));
-        newPref.set("statusId", "PAYMENT_NOT_AUTH");
+        newPref.set("maxAmount", splitAmount);
+        newPref.set("statusId", statusId);
         newPref.set("createdDate", UtilDateTime.nowTimestamp());
         if (userLogin != null) {
             newPref.set("createdByUserLogin", userLogin.getString("userLoginId"));
@@ -1243,16 +1244,18 @@
             // create the new payment preference
             delegator.create(newPref);
 
-            // authorize the new preference
-            processorResult = authPayment(dispatcher, userLogin, orh, newPref, splitAmount.doubleValue(), false, null);
-            if (processorResult != null) {
-                // process the auth results
-                boolean authResult = processResult(dctx, processorResult, userLogin, newPref);
-                if (!authResult) {
-                    Debug.logError("Authorization failed : " + newPref + " : " + processorResult, module);
+            if ("PAYMENT_NOT_AUTH".equals(statusId)) {
+                // authorize the new preference
+                processorResult = authPayment(dispatcher, userLogin, orh, newPref, splitAmount.doubleValue(), false, null);
+                if (processorResult != null) {
+                    // process the auth results
+                    boolean authResult = processResult(dctx, processorResult, userLogin, newPref);
+                    if (!authResult) {
+                        Debug.logError("Authorization failed : " + newPref + " : " + processorResult, module);
+                    }
+                } else {
+                    Debug.logError("Payment not authorized : " + newPref + " : " + processorResult, module);
                 }
-            } else {
-                Debug.logError("Payment not authorized : " + newPref + " : " + processorResult, module);
             }
         } catch (GenericEntityException e) {
             Debug.logError(e, "ERROR: cannot create new payment preference : " + newPref, module);
@@ -1263,7 +1266,6 @@
                 Debug.logError(e, "Trouble authorizing the payment: " + newPref, module);
             }
         }
-
         return ServiceUtil.returnSuccess();
     }
 
@@ -1868,6 +1870,8 @@
         String serviceType = (String) context.get("serviceTypeEnum");
         String currencyUomId = (String) context.get("currencyUomId");
         
+        String paymentMethodTypeId = paymentPreference.getString("paymentMethodTypeId");
+
         if (UtilValidate.isEmpty(serviceType)) {
             serviceType = CAPTURE_SERVICE_TYPE;
         }
@@ -1880,8 +1884,9 @@
             return ServiceUtil.returnError(e.getMessage());
         }
 
-        // update the status
-        paymentPreference.set("statusId", "PAYMENT_SETTLED");
+        // update the status and maxAmount
+        paymentPreference.set("statusId", ("EXT_BILLACT".equals(paymentMethodTypeId)? "PAYMENT_RECEIVED": "PAYMENT_SETTLED"));
+        paymentPreference.set("maxAmount", amount);
         try {
             paymentPreference.store();
         } catch (GenericEntityException e) {
@@ -1889,143 +1894,144 @@
             return ServiceUtil.returnError(e.getMessage());
         }
 
-        // create the PaymentGatewayResponse record
-        String responseId = delegator.getNextSeqId("PaymentGatewayResponse");
-        GenericValue response = delegator.makeValue("PaymentGatewayResponse", null);
-        response.set("paymentGatewayResponseId", responseId);
-        response.set("paymentServiceTypeEnumId", serviceType);
-        response.set("orderPaymentPreferenceId", paymentPreference.get("orderPaymentPreferenceId"));
-        response.set("paymentMethodTypeId", paymentPreference.get("paymentMethodTypeId"));
-        response.set("paymentMethodId", paymentPreference.get("paymentMethodId"));
-        response.set("transCodeEnumId", "PGT_CAPTURE");
-        response.set("currencyUomId", currencyUomId);
-        if (context.get("authRefNum") != null) {
-            response.set("subReference", context.get("authRefNum"));
-            response.set("altReference", context.get("authAltRefNum"));
-        } else {
-            response.set("altReference", context.get("captureAltRefNum"));
-        }
+        if (!"EXT_BILLACT".equals(paymentMethodTypeId)) {
+            // create the PaymentGatewayResponse record
+            String responseId = delegator.getNextSeqId("PaymentGatewayResponse");
+            GenericValue response = delegator.makeValue("PaymentGatewayResponse", null);
+            response.set("paymentGatewayResponseId", responseId);
+            response.set("paymentServiceTypeEnumId", serviceType);
+            response.set("orderPaymentPreferenceId", paymentPreference.get("orderPaymentPreferenceId"));
+            response.set("paymentMethodTypeId", paymentMethodTypeId);
+            response.set("paymentMethodId", paymentPreference.get("paymentMethodId"));
+            response.set("transCodeEnumId", "PGT_CAPTURE");
+            response.set("currencyUomId", currencyUomId);
+            if (context.get("authRefNum") != null) {
+                response.set("subReference", context.get("authRefNum"));
+                response.set("altReference", context.get("authAltRefNum"));
+            } else {
+                response.set("altReference", context.get("captureAltRefNum"));
+            }
 
-        // set the capture info
-        response.set("amount", amount);
-        response.set("referenceNum", context.get("captureRefNum"));
-        response.set("gatewayCode", context.get("captureCode"));
-        response.set("gatewayFlag", context.get("captureFlag"));
-        response.set("gatewayMessage", context.get("captureMessage"));
-        response.set("transactionDate", UtilDateTime.nowTimestamp());
+            // set the capture info
+            response.set("amount", amount);
+            response.set("referenceNum", context.get("captureRefNum"));
+            response.set("gatewayCode", context.get("captureCode"));
+            response.set("gatewayFlag", context.get("captureFlag"));
+            response.set("gatewayMessage", context.get("captureMessage"));
+            response.set("transactionDate", UtilDateTime.nowTimestamp());
 
-        // save the response
-        savePgr(dctx, response);
+            // save the response
+            savePgr(dctx, response);
 
-        // create the internal messages
-        List messages = (List) context.get("internalRespMsgs");
-        if (messages != null && messages.size() > 0) {
-            Iterator i = messages.iterator();
-            while (i.hasNext()) {
-                GenericValue respMsg = delegator.makeValue("PaymentGatewayRespMsg", null);
-                String respMsgId = delegator.getNextSeqId("PaymentGatewayRespMsg");
-                String message = (String) i.next();
-                respMsg.set("paymentGatewayRespMsgId", respMsgId);
-                respMsg.set("paymentGatewayResponseId", responseId);
-                respMsg.set("pgrMessage", message);
-
-                // save the message
-                savePgr(dctx, respMsg);
-            }
-        }
+            // create the internal messages
+            List messages = (List) context.get("internalRespMsgs");
+            if (messages != null && messages.size() > 0) {
+                Iterator i = messages.iterator();
+                while (i.hasNext()) {
+                    GenericValue respMsg = delegator.makeValue("PaymentGatewayRespMsg", null);
+                    String respMsgId = delegator.getNextSeqId("PaymentGatewayRespMsg");
+                    String message = (String) i.next();
+                    respMsg.set("paymentGatewayRespMsgId", respMsgId);
+                    respMsg.set("paymentGatewayResponseId", responseId);
+                    respMsg.set("pgrMessage", message);
 
-        // get the invoice
-        GenericValue invoice = null;
-        if (invoiceId != null) {
-            try {
-                invoice = delegator.findByPrimaryKey("Invoice", UtilMisc.toMap("invoiceId", invoiceId));
-            } catch (GenericEntityException e) {
-                String message = "Failed to process capture result:  Could not find invoice ["+invoiceId+"] due to entity error: " + e.getMessage();
-                Debug.logError(e, message, module);
-                return ServiceUtil.returnError(message );
-            }
-        }
-
-        // determine the partyIdFrom for the payment, which is who made the payment
-        String partyIdFrom = null;
-        if (invoice != null) {
-            // get the party from the invoice, which is the bill-to party (partyId)
-            partyIdFrom = invoice.getString("partyId");
-        } else {
-            // otherwise get the party from the order's OrderRole
-            String orderId = paymentPreference.getString("orderId");
-            List orl = null;
-            try {
-                orl = delegator.findByAnd("OrderRole", UtilMisc.toMap("orderId", orderId, "roleTypeId", "BILL_TO_CUSTOMER"));
-            } catch (GenericEntityException e) {
-                Debug.logError(e, module);
-            }
-            if (orl != null && orl.size() > 0) {
-                GenericValue orderRole = EntityUtil.getFirst(orl);
-                partyIdFrom = orderRole.getString("partyId");
+                    // save the message
+                    savePgr(dctx, respMsg);
+                }
             }
-        }
 
-        // get the partyIdTo for the payment, which is who is receiving it
-        String partyIdTo = null;
-        if (!UtilValidate.isEmpty(payTo)) {
-            // use input pay to party
-            partyIdTo = payTo;
-        } else if (invoice != null) {
-            // ues the invoice partyIdFrom as the pay to party (which is who supplied the invoice)
-            partyIdTo = invoice.getString("partyIdFrom");
-        } 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 [" +
-                    paymentPreference.getString("orderPaymentPreferenceId") + "]", module);
-        }
+            // get the invoice
+            GenericValue invoice = null;
+            if (invoiceId != null) {
+                try {
+                    invoice = delegator.findByPrimaryKey("Invoice", UtilMisc.toMap("invoiceId", invoiceId));
+                } catch (GenericEntityException e) {
+                    String message = "Failed to process capture result:  Could not find invoice ["+invoiceId+"] due to entity error: " + e.getMessage();
+                    Debug.logError(e, message, module);
+                    return ServiceUtil.returnError(message );
+                }
+            }
 
+            // determine the partyIdFrom for the payment, which is who made the payment
+            String partyIdFrom = null;
+            if (invoice != null) {
+                // get the party from the invoice, which is the bill-to party (partyId)
+                partyIdFrom = invoice.getString("partyId");
+            } else {
+                // otherwise get the party from the order's OrderRole
+                String orderId = paymentPreference.getString("orderId");
+                List orl = null;
+                try {
+                    orl = delegator.findByAnd("OrderRole", UtilMisc.toMap("orderId", orderId, "roleTypeId", "BILL_TO_CUSTOMER"));
+                } catch (GenericEntityException e) {
+                    Debug.logError(e, module);
+                }
+                if (orl != null && orl.size() > 0) {
+                    GenericValue orderRole = EntityUtil.getFirst(orl);
+                    partyIdFrom = orderRole.getString("partyId");
+                }
+            }
 
-        Map paymentCtx = UtilMisc.toMap("paymentTypeId", "CUSTOMER_PAYMENT");
-        paymentCtx.put("paymentMethodTypeId", paymentPreference.get("paymentMethodTypeId"));
-        paymentCtx.put("paymentMethodId", paymentPreference.get("paymentMethodId"));
-        paymentCtx.put("paymentGatewayResponseId", responseId);
-        paymentCtx.put("partyIdTo", partyIdTo);
-        paymentCtx.put("partyIdFrom", partyIdFrom);
-        paymentCtx.put("statusId", "PMNT_RECEIVED");
-        paymentCtx.put("paymentPreferenceId", paymentPreference.get("orderPaymentPreferenceId"));
-        paymentCtx.put("amount", amount);
-        paymentCtx.put("currencyUomId", currencyUomId);
-        paymentCtx.put("userLogin", userLogin);
-        paymentCtx.put("paymentRefNum", context.get("captureRefNum"));
+            // get the partyIdTo for the payment, which is who is receiving it
+            String partyIdTo = null;
+            if (!UtilValidate.isEmpty(payTo)) {
+                // use input pay to party
+                partyIdTo = payTo;
+            } else if (invoice != null) {
+                // ues the invoice partyIdFrom as the pay to party (which is who supplied the invoice)
+                partyIdTo = invoice.getString("partyIdFrom");
+            } 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 [" +
+                        paymentPreference.getString("orderPaymentPreferenceId") + "]", module);
+            }
 
-        Map payRes;
-        try {
-            payRes = dispatcher.runSync("createPayment", paymentCtx);
-        } catch (GenericServiceException e) {
-            Debug.logError(e, module);
-            return ServiceUtil.returnError("Error creating payment record");
-        }
-        if (ServiceUtil.isError(payRes)) {
-            return ServiceUtil.returnError(ServiceUtil.getErrorMessage(payRes));
-        }
 
-        String paymentId = (String) payRes.get("paymentId");
+            Map paymentCtx = UtilMisc.toMap("paymentTypeId", "CUSTOMER_PAYMENT");
+            paymentCtx.put("paymentMethodTypeId", paymentPreference.get("paymentMethodTypeId"));
+            paymentCtx.put("paymentMethodId", paymentPreference.get("paymentMethodId"));
+            paymentCtx.put("paymentGatewayResponseId", responseId);
+            paymentCtx.put("partyIdTo", partyIdTo);
+            paymentCtx.put("partyIdFrom", partyIdFrom);
+            paymentCtx.put("statusId", "PMNT_RECEIVED");
+            paymentCtx.put("paymentPreferenceId", paymentPreference.get("orderPaymentPreferenceId"));
+            paymentCtx.put("amount", amount);
+            paymentCtx.put("currencyUomId", currencyUomId);
+            paymentCtx.put("userLogin", userLogin);
+            paymentCtx.put("paymentRefNum", context.get("captureRefNum"));
 
-        // create the PaymentApplication if invoiceId is available
-        if (invoiceId != null) {
-            Debug.logInfo("Processing Invoice #" + invoiceId, module);
-            Map paCtx = UtilMisc.toMap("paymentId", paymentId, "invoiceId", invoiceId);
-            paCtx.put("amountApplied", context.get("captureAmount"));
-            paCtx.put("userLogin", userLogin);
-            Map paRes;
+            Map payRes;
             try {
-                paRes = dispatcher.runSync("createPaymentApplication", paCtx);
+                payRes = dispatcher.runSync("createPayment", paymentCtx);
             } catch (GenericServiceException e) {
                 Debug.logError(e, module);
-                return ServiceUtil.returnError("Error creating invoice application");
+                return ServiceUtil.returnError("Error creating payment record");
             }
-            if (paRes != null && ServiceUtil.isError(paRes)) {
-                return ServiceUtil.returnError(ServiceUtil.getErrorMessage(paRes));
+            if (ServiceUtil.isError(payRes)) {
+                return ServiceUtil.returnError(ServiceUtil.getErrorMessage(payRes));
             }
-        }
 
+            String paymentId = (String) payRes.get("paymentId");
+
+            // create the PaymentApplication if invoiceId is available
+            if (invoiceId != null) {
+                Debug.logInfo("Processing Invoice #" + invoiceId, module);
+                Map paCtx = UtilMisc.toMap("paymentId", paymentId, "invoiceId", invoiceId);
+                paCtx.put("amountApplied", context.get("captureAmount"));
+                paCtx.put("userLogin", userLogin);
+                Map paRes;
+                try {
+                    paRes = dispatcher.runSync("createPaymentApplication", paCtx);
+                } catch (GenericServiceException e) {
+                    Debug.logError(e, module);
+                    return ServiceUtil.returnError("Error creating invoice application");
+                }
+                if (paRes != null && ServiceUtil.isError(paRes)) {
+                    return ServiceUtil.returnError(ServiceUtil.getErrorMessage(paRes));
+                }
+            }
+        }
         return ServiceUtil.returnSuccess();
     }