Posted by
Jacopo Cappellato on
Apr 17, 2006; 8:42am
URL: http://ofbiz.116.s1.nabble.com/Dev-Bug-in-the-updateCreditCard-service-tp167652.html
Hi,
there is a problem in the current implementation of the
"updateCreditCard" service: the service expires the old cc (by setting
the PaymentMethod.thuDate field) and creates a new one (CreditCard and
PaymentMethod) with the updated values.
The problem is that, if the cc has been already expired, calling the
"updateCreditCard" service causes the cc to be re-enabled.
I'm not sure if this is good or not however this is a problem when the
"updateCreditCard" service is called as a consequence of the billing
address update; this can happen when:
1) you call the "updatePostalAddress" service; this service expires the
original address and creates a new one
2) a seca calls the "updatePaymentMethodAddress" service
3) the "updatePaymentMethodAddress" service calls the "updateCreditCard"
service for all the cc that have the old address associated to them
#3 will make all the expired ccs, associated with that address,
re-enabled automatically.
The attached patch for the "updateCreditCard" service fixes the bug but
I'm not sure that this is the best way to do this... should we modify
the "updatePaymentMethodAddress" service instead (to update only the
active ccs)?
Jacopo
Index: applications/accounting/src/org/ofbiz/accounting/payment/PaymentMethodServices.java
===================================================================
--- applications/accounting/src/org/ofbiz/accounting/payment/PaymentMethodServices.java (revision 7275)
+++ applications/accounting/src/org/ofbiz/accounting/payment/PaymentMethodServices.java (working copy)
@@ -324,7 +324,10 @@
newPm.set("partyId", partyId);
newPm.set("fromDate", context.get("fromDate"), false);
- newPm.set("thruDate", context.get("thruDate"));
+ // The following check is needed to avoid to reactivate an expired pm
+ if (newPm.get("thruDate") == null) {
+ newPm.set("thruDate", context.get("thruDate"));
+ }
newCc.set("companyNameOnCard", context.get("companyNameOnCard"));
newCc.set("titleOnCard", context.get("titleOnCard"));
newCc.set("firstNameOnCard", context.get("firstNameOnCard"));
_______________________________________________
Dev mailing list
[hidden email]
http://lists.ofbiz.org/mailman/listinfo/dev