You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by ja...@apache.org on 2007/03/27 06:41:13 UTC
svn commit: r522744 - in /ofbiz/trunk/applications:
accounting/src/org/ofbiz/accounting/payment/PaymentGatewayServices.java
order/src/org/ofbiz/order/shoppingcart/CheckOutHelper.java
order/src/org/ofbiz/order/shoppingcart/ShoppingCart.java
Author: jaz
Date: Mon Mar 26 21:41:12 2007
New Revision: 522744
URL: http://svn.apache.org/viewvc?view=rev&rev=522744
Log:
changes to allow financial accounts to be used as payment methods without having to actually create payment records, by using payment method type FIN_ACCOUNT and using the (already existing) finAccountId on OrderPaymentPreference
Modified:
ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/payment/PaymentGatewayServices.java
ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/CheckOutHelper.java
ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/ShoppingCart.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?view=diff&rev=522744&r1=522743&r2=522744
==============================================================================
--- ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/payment/PaymentGatewayServices.java (original)
+++ ofbiz/trunk/applications/accounting/src/org/ofbiz/accounting/payment/PaymentGatewayServices.java Mon Mar 26 21:41:12 2007
@@ -569,16 +569,11 @@
private static GenericValue getPaymentSettings(GenericValue orderHeader, GenericValue paymentPreference, String paymentServiceType, boolean anyServiceType) {
GenericDelegator delegator = orderHeader.getDelegator();
GenericValue paymentSettings = null;
- GenericValue paymentMethod = null;
- try {
- paymentMethod = paymentPreference.getRelatedOne("PaymentMethod");
- } catch (GenericEntityException e) {
- Debug.logError(e, "Problem getting PaymentMethod from OrderPaymentPreference", module);
- }
- if (paymentMethod != null) {
+ String paymentMethodTypeId = paymentPreference.getString("paymentMethodTypeId");
+
+ if (paymentMethodTypeId != null) {
String productStoreId = orderHeader.getString("productStoreId");
- String paymentMethodTypeId = paymentMethod.getString("paymentMethodTypeId");
- if (productStoreId != null && paymentMethodTypeId != null) {
+ if (productStoreId != null) {
paymentSettings = ProductStoreWorker.getProductStorePaymentSetting(delegator, productStoreId, paymentMethodTypeId, paymentServiceType, anyServiceType);
}
}
@@ -607,23 +602,26 @@
private static String getBillingInformation(OrderReadHelper orh, GenericValue paymentPreference, Map toContext) throws GenericEntityException {
// gather the payment related objects.
+ String paymentMethodTypeId = paymentPreference.getString("paymentMethodTypeId");
GenericValue paymentMethod = paymentPreference.getRelatedOne("PaymentMethod");
- if (paymentMethod != null && paymentMethod.getString("paymentMethodTypeId").equals("CREDIT_CARD")) {
+ if (paymentMethod != null && "CREDIT_CARD".equals(paymentMethodTypeId)) {
// type credit card
GenericValue creditCard = paymentMethod.getRelatedOne("CreditCard");
GenericValue billingAddress = creditCard.getRelatedOne("PostalAddress");
toContext.put("creditCard", creditCard);
toContext.put("billingAddress", billingAddress);
- } else if (paymentMethod != null && paymentMethod.getString("paymentMethodTypeId").equals("EFT_ACCOUNT")) {
+ } else if (paymentMethod != null && "EFT_ACCOUNT".equals(paymentMethodTypeId)) {
// type eft
GenericValue eftAccount = paymentMethod.getRelatedOne("EftAccount");
GenericValue billingAddress = eftAccount.getRelatedOne("PostalAddress");
toContext.put("eftAccount", eftAccount);
toContext.put("billingAddress", billingAddress);
- } else if (paymentMethod != null && paymentMethod.getString("paymentMethodTypeId").equals("GIFT_CARD")) {
+ } else if (paymentMethod != null && "GIFT_CARD".equals(paymentMethodTypeId)) {
// type gift card
GenericValue giftCard = paymentMethod.getRelatedOne("GiftCard");
toContext.put("giftCard", giftCard);
+ } else if ("FIN_ACCOUNT".equals(paymentMethodTypeId)) {
+ toContext.put("finAccountId", paymentPreference.getString("finAccountId"));
} else {
// add other payment types here; i.e. gift cards, etc.
// unknown payment type; ignoring.
@@ -668,6 +666,7 @@
List othExpr = UtilMisc.toList(new EntityExpr("paymentMethodTypeId", EntityOperator.EQUALS, "EFT_ACCOUNT"));
othExpr.add(new EntityExpr("paymentMethodTypeId", EntityOperator.EQUALS, "CREDIT_CARD"));
othExpr.add(new EntityExpr("paymentMethodTypeId", EntityOperator.EQUALS, "GIFT_CARD"));
+ othExpr.add(new EntityExpr("paymentMethodTypeId", EntityOperator.EQUALS, "FIN_ACCOUNT"));
EntityCondition con1 = new EntityConditionList(othExpr, EntityJoinOperator.OR);
EntityCondition statExpr = new EntityExpr("statusId", EntityOperator.EQUALS, "PAYMENT_SETTLED");
Modified: ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/CheckOutHelper.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/CheckOutHelper.java?view=diff&rev=522744&r1=522743&r2=522744
==============================================================================
--- ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/CheckOutHelper.java (original)
+++ ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/CheckOutHelper.java Mon Mar 26 21:41:12 2007
@@ -286,6 +286,17 @@
Iterator i = paymentMethods.iterator();
while (i.hasNext()) {
String checkOutPaymentId = (String) i.next();
+ String finAccountId = null;
+
+ if (checkOutPaymentId.indexOf("|") > -1) {
+ // split type -- ID|Actual
+ String[] splitStr = checkOutPaymentId.split("\\|");
+ checkOutPaymentId = splitStr[0];
+ if ("FIN_ACCOUNT".equals(checkOutPaymentId)) {
+ finAccountId = splitStr[1];
+ }
+ Debug.log("Split checkOutPaymentId: " + splitStr[0] + " / " + splitStr[1], module);
+ }
// get the selected amount to use
Double paymentAmount = null;
@@ -294,7 +305,10 @@
}
boolean singleUse = singleUsePayments.contains(checkOutPaymentId);
- cart.addPaymentAmount(checkOutPaymentId, paymentAmount, singleUse);
+ ShoppingCart.CartPaymentInfo inf = cart.addPaymentAmount(checkOutPaymentId, paymentAmount, singleUse);
+ if (finAccountId != null) {
+ inf.finAccountId = finAccountId;
+ }
}
} else if (cart.getGrandTotal() != 0.00) {
// only return an error if the order total is not 0.00
Modified: ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/ShoppingCart.java
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/ShoppingCart.java?view=diff&rev=522744&r1=522743&r2=522744
==============================================================================
--- ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/ShoppingCart.java (original)
+++ ofbiz/trunk/applications/order/src/org/ofbiz/order/shoppingcart/ShoppingCart.java Mon Mar 26 21:41:12 2007
@@ -1434,38 +1434,40 @@
}
/** adds a payment method/payment method type */
- public void addPaymentAmount(String id, Double amount, String refNum, String authCode, boolean isSingleUse, boolean isPresent, boolean replace) {
+ public CartPaymentInfo addPaymentAmount(String id, Double amount, String refNum, String authCode, boolean isSingleUse, boolean isPresent, boolean replace) {
CartPaymentInfo inf = this.getPaymentInfo(id, refNum, authCode, amount, true);
inf.singleUse = isSingleUse;
if (replace) {
paymentInfo.remove(inf);
}
paymentInfo.add(inf);
+
+ return inf;
}
/** adds a payment method/payment method type */
- public void addPaymentAmount(String id, Double amount, boolean isSingleUse) {
- this.addPaymentAmount(id, amount, null, null, isSingleUse, false, true);
+ public CartPaymentInfo addPaymentAmount(String id, Double amount, boolean isSingleUse) {
+ return this.addPaymentAmount(id, amount, null, null, isSingleUse, false, true);
}
/** adds a payment method/payment method type */
- public void addPaymentAmount(String id, double amount, boolean isSingleUse) {
- this.addPaymentAmount(id, new Double(amount), isSingleUse);
+ public CartPaymentInfo addPaymentAmount(String id, double amount, boolean isSingleUse) {
+ return this.addPaymentAmount(id, new Double(amount), isSingleUse);
}
/** adds a payment method/payment method type */
- public void addPaymentAmount(String id, Double amount) {
- this.addPaymentAmount(id, amount, false);
+ public CartPaymentInfo addPaymentAmount(String id, Double amount) {
+ return this.addPaymentAmount(id, amount, false);
}
/** adds a payment method/payment method type */
- public void addPaymentAmount(String id, double amount) {
- this.addPaymentAmount(id, new Double(amount), false);
+ public CartPaymentInfo addPaymentAmount(String id, double amount) {
+ return this.addPaymentAmount(id, new Double(amount), false);
}
/** adds a payment method/payment method type */
- public void addPayment(String id) {
- this.addPaymentAmount(id, null, false);
+ public CartPaymentInfo addPayment(String id) {
+ return this.addPaymentAmount(id, null, false);
}
/** returns the payment method/payment method type amount */
@@ -4095,6 +4097,7 @@
public static class CartPaymentInfo implements Serializable, Comparable {
public String paymentMethodTypeId = null;
public String paymentMethodId = null;
+ public String finAccountId = null;
public String securityCode = null;
public String postalCode = null;
public String[] refNum = new String[2];
@@ -4189,6 +4192,7 @@
opp.set("presentFlag", isPresent ? "Y" : "N");
opp.set("overflowFlag", overflow ? "Y" : "N");
opp.set("paymentMethodId", paymentMethodId);
+ opp.set("finAccountId", finAccountId);
opp.set("billingPostalCode", postalCode);
opp.set("maxAmount", amount);
if (refNum != null) {
@@ -4198,7 +4202,7 @@
if (securityCode != null) {
opp.set("securityCode", securityCode);
}
- if (paymentMethodId != null) {
+ if (paymentMethodId != null || "FIN_ACCOUNT".equals(paymentMethodTypeId)) {
opp.set("statusId", "PAYMENT_NOT_AUTH");
} else if (paymentMethodTypeId != null) {
// external payment method types require notification when received