Author: hansbak Date: Wed Jun 19 05:59:13 2013 New Revision: 1494466 URL: http://svn.apache.org/r1494466 Log: now you can also (next to the payment method type) enter the payment on the sales order using the payment method used by the related receiving accounting company
Modified: ofbiz/trunk/applications/order/config/OrderErrorUiLabels.xml ofbiz/trunk/applications/order/src/org/ofbiz/order/OrderManagerEvents.java ofbiz/trunk/applications/order/webapp/ordermgr/order/receivepayment.ftl ofbiz/trunk/applications/order/widget/ordermgr/OrderViewScreens.xml Modified: ofbiz/trunk/applications/order/config/OrderErrorUiLabels.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/config/OrderErrorUiLabels.xml?rev=1494466&r1=1494465&r2=1494466&view=diff ============================================================================== --- ofbiz/trunk/applications/order/config/OrderErrorUiLabels.xml (original) +++ ofbiz/trunk/applications/order/config/OrderErrorUiLabels.xml Wed Jun 19 05:59:13 2013 @@ -2805,6 +2805,9 @@ <value xml:lang="zh">æè®¢åè·åéè´§é颿¶åºç°é®é¢</value> <value xml:lang="zh_TW">æè¨å®ç²åé貨é顿åºç¾åé¡</value> </property> + <property key="OrderProblemsWithPaymentMethodLookup"> + <value xml:lang="en">Problems with PaymentMethod lookup. </value> + </property> <property key="OrderProblemsWithPaymentTypeLookup"> <value xml:lang="de">Problem mit Zahlungsart-Suchhilfe. </value> <value xml:lang="en">Problems with PaymentType lookup. </value> Modified: ofbiz/trunk/applications/order/src/org/ofbiz/order/OrderManagerEvents.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/src/org/ofbiz/order/OrderManagerEvents.java?rev=1494466&r1=1494465&r2=1494466&view=diff ============================================================================== --- ofbiz/trunk/applications/order/src/org/ofbiz/order/OrderManagerEvents.java (original) +++ ofbiz/trunk/applications/order/src/org/ofbiz/order/OrderManagerEvents.java Wed Jun 19 05:59:13 2013 @@ -131,11 +131,14 @@ public class OrderManagerEvents { Locale locale = UtilHttp.getLocale(request); String orderId = request.getParameter("orderId"); + String partyId = request.getParameter("partyId"); // get the order header & payment preferences GenericValue orderHeader = null; + List<GenericValue> orderRoles = null; try { orderHeader = delegator.findOne("OrderHeader", UtilMisc.toMap("orderId", orderId), false); + orderRoles = delegator.findList("OrderRole", EntityCondition.makeCondition("orderId", EntityOperator.EQUALS, orderId), null, null, null, false); } catch (GenericEntityException e) { Debug.logError(e, "Problems reading order header from datasource.", module); request.setAttribute("_ERROR_MESSAGE_", UtilProperties.getMessage(resource_error,"OrderProblemsReadingOrderHeaderInformation", locale)); @@ -164,7 +167,17 @@ public class OrderManagerEvents { return "error"; } - List<GenericValue> toBeStored = FastList.newInstance(); + // get the payment methods to receive + List<GenericValue> paymentMethods = null; + try { + EntityExpr ee = EntityCondition.makeCondition("partyId", EntityOperator.EQUALS, partyId); + paymentMethods = delegator.findList("PaymentMethod", ee, null, null, null, false); + } catch (GenericEntityException e) { + Debug.logError(e, "Problems getting payment methods", module); + request.setAttribute("_ERROR_MESSAGE_", UtilProperties.getMessage(resource_error,"OrderProblemsWithPaymentMethodLookup", locale)); + return "error"; + } + GenericValue placingCustomer = null; try { List<GenericValue> pRoles = delegator.findByAnd("OrderRole", UtilMisc.toMap("orderId", orderId, "roleTypeId", "PLACING_CUSTOMER"), null, false); @@ -176,6 +189,48 @@ public class OrderManagerEvents { return "error"; } + for(GenericValue paymentMethod : paymentMethods) { + String paymentMethodId = paymentMethod.getString("paymentMethodId"); + String paymentMethodAmountStr = request.getParameter(paymentMethodId + "_amount"); + String paymentMethodReference = request.getParameter(paymentMethodId + "_reference"); + if (!UtilValidate.isEmpty(paymentMethodAmountStr)) { + BigDecimal paymentMethodAmount = BigDecimal.ZERO; + try { + paymentMethodAmount = (BigDecimal) ObjectType.simpleTypeConvert(paymentMethodAmountStr, "BigDecimal", null, locale); + } catch (GeneralException e) { + request.setAttribute("_ERROR_MESSAGE_", UtilProperties.getMessage(resource_error,"OrderProblemsPaymentParsingAmount", locale)); + return "error"; + } + if (paymentMethodAmount.compareTo(BigDecimal.ZERO) > 0) { + // create a payment, payment reference and payment appl record, when not exist yet. + Map<String, Object> results = null; + try { + results = dispatcher.runSync("createPaymentFromOrder", + UtilMisc.toMap("orderId", orderId, + "paymentMethodId", paymentMethodId, + "paymentRefNum", paymentMethodReference, + "comments", "Payment received offline and manually entered.", + "userLogin", userLogin)); + } catch (GenericServiceException e) { + Debug.logError(e, "Failed to execute service createPaymentFromOrder", module); + request.setAttribute("_ERROR_MESSAGE_", e.getMessage()); + return "error"; + } + + if ((results == null) || (results.get(ModelService.RESPONSE_MESSAGE).equals(ModelService.RESPOND_ERROR))) { + Debug.logError((String) results.get(ModelService.ERROR_MESSAGE), module); + request.setAttribute("_ERROR_MESSAGE_", results.get(ModelService.ERROR_MESSAGE)); + return "error"; + } + + } + OrderChangeHelper.approveOrder(dispatcher, userLogin, orderId); + return "success"; + } + } + + + List<GenericValue> toBeStored = FastList.newInstance(); for(GenericValue paymentMethodType : paymentMethodTypes) { String paymentMethodTypeId = paymentMethodType.getString("paymentMethodTypeId"); String amountStr = request.getParameter(paymentMethodTypeId + "_amount"); @@ -189,7 +244,6 @@ public class OrderManagerEvents { return "error"; } if (paymentTypeAmount.compareTo(BigDecimal.ZERO) > 0) { - // create the OrderPaymentPreference // TODO: this should be done with a service Map<String, String> prefFields = UtilMisc.<String, String>toMap("orderPaymentPreferenceId", delegator.getNextSeqId("OrderPaymentPreference")); Modified: ofbiz/trunk/applications/order/webapp/ordermgr/order/receivepayment.ftl URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/webapp/ordermgr/order/receivepayment.ftl?rev=1494466&r1=1494465&r2=1494466&view=diff ============================================================================== --- ofbiz/trunk/applications/order/webapp/ordermgr/order/receivepayment.ftl (original) +++ ofbiz/trunk/applications/order/webapp/ordermgr/order/receivepayment.ftl Wed Jun 19 05:59:13 2013 @@ -33,6 +33,30 @@ under the License. <#if requestParameters.workEffortId?exists> <input type="hidden" name="workEffortId" value="${requestParameters.workEffortId}" /> </#if> + <input type="hidden" name="partyId" value="${orderRoles[0].partyId}" /> + + <#if paymentMethods?has_content> + <table class="basic-table" cellspacing='0'> + <tr class="header-row"> + <td width="30%" align="right">${uiLabelMap.PaymentMethod}</td> + <td width="1"> </td> + <td width="1">${uiLabelMap.OrderAmount}</td> + <td width="1"> </td> + <td width="70%">${uiLabelMap.OrderReference}</td> + </tr> + <#list paymentMethods as payMethod> + <tr> + <td width="30%" align="right">${payMethod.get("description",locale)?default(payMethod.paymentMethodId)}</td> + <td width="1"> </td> + <td width="1"><input type="text" size="7" name="${payMethod.paymentMethodId}_amount" /></td> + <td width="1"> </td> + <td width="70%"><input type="text" size="15" name="${payMethod.paymentMethodId}_reference" /></td> + </tr> + </#list> + </table> + </#if> + <br /> <br /> + <#if paymentMethodTypes?has_content> <table class="basic-table" cellspacing='0'> <tr class="header-row"> <td width="30%" align="right">${uiLabelMap.OrderPaymentType}</td> @@ -51,6 +75,7 @@ under the License. </tr> </#list> </table> + </#if> </form> <a href="<@ofbizUrl>authview/${donePage}</@ofbizUrl>" class="buttontext">${uiLabelMap.CommonBack}</a> Modified: ofbiz/trunk/applications/order/widget/ordermgr/OrderViewScreens.xml URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/widget/ordermgr/OrderViewScreens.xml?rev=1494466&r1=1494465&r2=1494466&view=diff ============================================================================== --- ofbiz/trunk/applications/order/widget/ordermgr/OrderViewScreens.xml (original) +++ ofbiz/trunk/applications/order/widget/ordermgr/OrderViewScreens.xml Wed Jun 19 05:59:13 2013 @@ -331,8 +331,15 @@ under the License. <section> <actions> <set field="titleProperty" value="OrderReceiveOfflinePayments"/> - <set field="headerItem" value="findorders"/> + <set field="headerItem" value="findorders"/> <script location="component://order/webapp/ordermgr/WEB-INF/actions/order/ReceivePayment.groovy"/> + <entity-and entity-name="OrderRole" list="orderRoles"> + <field-map field-name="orderId" value="${parameters.orderId}"/> + <field-map field-name="roleTypeId" value="BILL_FROM_VENDOR"/> + </entity-and> + <entity-and entity-name="PaymentMethod" list="paymentMethods"> + <field-map field-name="partyId" from-field="orderRoles[0].partyId"/> + </entity-and> </actions> <widgets> <decorator-screen name="CommonOrderViewDecorator">