Author: sichen
Date: Wed Apr 25 14:24:50 2007 New Revision: 532490 URL: http://svn.apache.org/viewvc?view=rev&rev=532490 Log: Adding a PartyAcctgPreference.refundPaymentMethodId field and relation to PaymentMethod to store a default paymentMethodId for use when other refund payment methods fail (old CC orders) or are unspecified (offline payment) and using that payment method in the processRefundReturn service. Modified: ofbiz/trunk/applications/accounting/entitydef/entitymodel.xml ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderReturnServices.java Modified: ofbiz/trunk/applications/accounting/entitydef/entitymodel.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/accounting/entitydef/entitymodel.xml?view=diff&rev=532490&r1=532489&r2=532490 ============================================================================== --- ofbiz/trunk/applications/accounting/entitydef/entitymodel.xml (original) +++ ofbiz/trunk/applications/accounting/entitydef/entitymodel.xml Wed Apr 25 14:24:50 2007 @@ -1905,6 +1905,7 @@ <field name="orderSequenceEnumId" type="id-ne"/> <field name="orderIdPrefix" type="very-short"/> <field name="lastOrderNumber" type="numeric"/> + <field name="refundPaymentMethodId" type="id"/> <prim-key field="partyId"/> <relation type="one" rel-entity-name="Party" fk-name="ACTG_PREF_PTY"> <key-map field-name="partyId"/> @@ -1926,6 +1927,9 @@ </relation> <relation type="one" fk-name="ACTGPREF_ODRSQ" title="OrderSequence" rel-entity-name="Enumeration"> <key-map field-name="orderSequenceEnumId" rel-field-name="enumId"/> + </relation> + <relation type="one" rel-entity-name="PaymentMethod"> + <key-map field-name="refundPaymentMethodId" rel-field-name="paymentMethodId"/> </relation> </entity> <entity entity-name="ProductAverageCost" Modified: ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderReturnServices.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderReturnServices.java?view=diff&rev=532490&r1=532489&r2=532490 ============================================================================== --- ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderReturnServices.java (original) +++ ofbiz/trunk/applications/order/src/org/ofbiz/order/order/OrderReturnServices.java Wed Apr 25 14:24:50 2007 @@ -845,6 +845,27 @@ } OrderReadHelper orderReadHelper = new OrderReadHelper(delegator, orderId); + // Determine the fall-through refund paymentMethodId from the PartyAcctgPreference of the owner of the productStore for the order + GenericValue refundPaymentMethod = null; + GenericValue productStore = orderReadHelper.getProductStore(); + if (UtilValidate.isEmpty(productStore) || UtilValidate.isEmpty(productStore.get("payToPartyId"))) { + Debug.logError("No payToPartyId found for orderId " + orderId, module); + } else { + GenericValue orgAcctgPref = null; + try { + orgAcctgPref = delegator.findByPrimaryKeyCache("PartyAcctgPreference", UtilMisc.toMap("partyId", productStore.get("payToPartyId"))); + } catch( GenericEntityException e ) { + Debug.logError("Error retrieving PartyAcctgPreference for partyId " + productStore.get("payToPartyId"), module); + } + if (UtilValidate.isNotEmpty(orgAcctgPref)) { + try { + refundPaymentMethod = orgAcctgPref.getRelatedOne("PaymentMethod"); + } catch( GenericEntityException e ) { + Debug.logError("Error retrieving related refundPaymentMethod from PartyAcctgPreference for partyId " + productStore.get("payToPartyId"), module); + } + } + } + // now; for all timestamps Timestamp now = UtilDateTime.nowTimestamp(); @@ -1039,6 +1060,13 @@ input.put("partyIdTo", returnHeader.get("fromPartyId")); input.put("partyIdFrom", returnHeader.get("toPartyId")); input.put("paymentTypeId", "CUSTOMER_REFUND"); + if (UtilValidate.isNotEmpty(refundPaymentMethod)) { + input.put("paymentMethodId", refundPaymentMethod.get("paymentMethodId")); + input.put("paymentMethodTypeId", refundPaymentMethod.get("paymentMethodTypeId")); + } else { + Debug.logInfo("refundPaymentMethodId not configured in PartyAcctgPreference, not setting for remaining refund amount", module); + } + Map results = dispatcher.runSync("createPayment", input); if (ServiceUtil.isError(results)) return results; |
Free forum by Nabble | Edit this page |