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">&nbsp;&nbsp;&nbsp;</td>
+            <td width="1">${uiLabelMap.OrderAmount}</td>
+            <td width="1">&nbsp;&nbsp;&nbsp;</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">&nbsp;&nbsp;&nbsp;</td>
+            <td width="1"><input type="text" size="7" 
name="${payMethod.paymentMethodId}_amount" /></td>
+            <td width="1">&nbsp;&nbsp;&nbsp;</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">


Reply via email to