svn commit: r1125951 [2/9] - in /ofbiz/trunk: applications/order/config/ applications/order/src/org/ofbiz/order/shoppingcart/ applications/order/webapp/ordermgr/WEB-INF/actions/order/ applications/order/widget/ordermgr/ framework/base/src/org/ofbiz/bas...

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

svn commit: r1125951 [2/9] - in /ofbiz/trunk: applications/order/config/ applications/order/src/org/ofbiz/order/shoppingcart/ applications/order/webapp/ordermgr/WEB-INF/actions/order/ applications/order/widget/ordermgr/ framework/base/src/org/ofbiz/bas...

mrisaliti
Added: ofbiz/trunk/specialpurpose/webpos/script/org/ofbiz/webpos/event/CartEvents.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/webpos/script/org/ofbiz/webpos/event/CartEvents.xml?rev=1125951&view=auto
==============================================================================
--- ofbiz/trunk/specialpurpose/webpos/script/org/ofbiz/webpos/event/CartEvents.xml (added)
+++ ofbiz/trunk/specialpurpose/webpos/script/org/ofbiz/webpos/event/CartEvents.xml Sun May 22 13:11:17 2011
@@ -0,0 +1,467 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<simple-methods xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/simple-methods.xsd">
+    <simple-method method-name="setPartyToCart" short-description="Set party to cart" login-required="true">
+        <clear-field field="posTerminalId"/>
+        <call-class-method class-name="org.ofbiz.webpos.WebPosEvents" method-name="getWebPosSession" ret-field="webPosSession">
+            <field field="request" type="javax.servlet.http.HttpServletRequest"/>
+            <field field="posTerminalId" type="String"/>
+        </call-class-method>
+        <if-not-empty field="webPosSession">
+            <call-object-method obj-field="webPosSession" method-name="getCurrentTransaction" ret-field="webPosTransaction"/>
+            <check-errors/>
+            <call-object-method obj-field="webPosSession" method-name="getCart" ret-field="cart"/>
+            <check-errors/>
+            <clear-field field="contactMechId"/>
+            <if-not-empty field="cart">
+                <set field="delegator" from-field="parameters.delegator"/>
+                <set field="partyId" from-field="parameters.partyId"/>
+                <set field="showOld" value="false" type="Boolean"/>
+                <call-class-method class-name="org.ofbiz.party.contact.ContactMechWorker" method-name="getPartyContactMechValueMaps" ret-field="partyContactMechValueMaps">
+                    <field field="delegator" type="org.ofbiz.entity.Delegator"/>
+                    <field field="partyId" type="String"/>
+                    <field field="showOld" type="boolean"/>
+                </call-class-method>
+                <if-not-empty field="partyContactMechValueMaps">
+                    <iterate list="partyContactMechValueMaps" entry="partyContactMechValueMap">
+                        <set field="contactMech" from-field="partyContactMechValueMap.contactMech"/>
+                        <set field="partyContactMechPurposes" from-field="partyContactMechValueMap.partyContactMechPurposes"/>
+                        <if-not-empty field="partyContactMechPurposes">
+                            <iterate list="partyContactMechPurposes" entry="partyContactMechPurpose">
+                                <if-compare-field field="partyContactMechPurpose.contactMechPurposeTypeId" operator="equals" to-field="parameters.contactMechPurposeTypeId" type="String">
+                                    <if-compare-field field="partyContactMechPurpose.contactMechId" operator="equals" to-field="parameters.contactMechId" type="String">
+                                        <set field="contactMechId" from-field="partyContactMechPurpose.contactMechId"/>
+                                    </if-compare-field>
+                                </if-compare-field>
+                            </iterate>
+                        </if-not-empty>
+                    </iterate>
+                </if-not-empty>
+                <if-empty field="contactMechId">
+                    <add-error><fail-property resource="WebPosUiLabels" property="WebPosBillingOrShippingLocationMissing"/></add-error>
+                    <check-errors/>
+                <else>
+                    <call-object-method obj-field="webPosSession" method-name="getUserLogin" ret-field="userLogin"/>
+                    <call-object-method obj-field="webPosSession" method-name="getDispatcher" ret-field="dispatcher"/>
+                    <call-object-method obj-field="cart" method-name="setUserLogin">
+                        <field field="userLogin" type="org.ofbiz.entity.GenericValue"/>
+                        <field field="dispatcher" type="org.ofbiz.service.LocalDispatcher"/>
+                    </call-object-method>
+                    <set field="contactMechPurposeTypeId" from-field="parameters.contactMechPurposeTypeId"/>
+                    <call-object-method obj-field="cart" method-name="addContactMech">
+                        <field field="contactMechPurposeTypeId" type="String"/>
+                        <field field="contactMechId" type="String"/>
+                    </call-object-method>
+                    <if-compare field="contactMechPurposeTypeId" operator="equals" value="SHIPPING_LOCATION">
+                        <call-object-method obj-field="cart" method-name="setShipToCustomerPartyId">
+                            <field field="partyId" type="String"/>
+                        </call-object-method>
+                    <else>
+                        <call-object-method obj-field="cart" method-name="setBillToCustomerPartyId">
+                            <field field="partyId" type="String"/>
+                        </call-object-method>
+                        <call-object-method obj-field="cart" method-name="setPlacingCustomerPartyId">
+                            <field field="partyId" type="String"/>
+                        </call-object-method>
+                    </else>
+                    </if-compare>
+                    <call-object-method obj-field="webPosTransaction" method-name="calcTax"/>
+                    <check-errors/>
+                </else>
+                </if-empty>
+            </if-not-empty>
+        <else>
+            <add-error><fail-property resource="WebPosUiLabels" property="WebPosNotLoggedIn"/></add-error>
+            <check-errors/>
+        </else>
+        </if-not-empty>
+    </simple-method>
+    
+    <simple-method method-name="addCartItem" short-description="Add Cart Item" login-required="true">
+        <clear-field field="posTerminalId"/>
+        <call-class-method class-name="org.ofbiz.webpos.WebPosEvents" method-name="getWebPosSession" ret-field="webPosSession">
+            <field field="request" type="javax.servlet.http.HttpServletRequest"/>
+            <field field="posTerminalId" type="String"/>
+        </call-class-method>
+        <if-not-empty field="webPosSession">
+            <call-object-method obj-field="webPosSession" method-name="getCurrentTransaction" ret-field="webPosTransaction"/>
+            <check-errors/>
+            <call-class-method class-name="org.ofbiz.order.shoppingcart.ShoppingCartEvents" method-name="addToCart">
+                <field field="request" type="javax.servlet.http.HttpServletRequest"/>
+                <field field="response" type="javax.servlet.http.HttpServletResponse"/>
+            </call-class-method>
+            <call-object-method obj-field="webPosTransaction" method-name="calcTax"/>
+            <check-errors/>
+        </if-not-empty>
+    </simple-method>
+    
+    <simple-method method-name="updateCartItem" short-description="Update Cart Item" login-required="true">
+        <clear-field field="posTerminalId"/>
+        <call-class-method class-name="org.ofbiz.webpos.WebPosEvents" method-name="getWebPosSession" ret-field="webPosSession">
+            <field field="request" type="javax.servlet.http.HttpServletRequest"/>
+            <field field="posTerminalId" type="String"/>
+        </call-class-method>
+        <if-not-empty field="webPosSession">
+            <call-object-method obj-field="webPosSession" method-name="getCurrentTransaction" ret-field="webPosTransaction"/>
+            <check-errors/>
+            <call-object-method obj-field="webPosSession" method-name="getCart" ret-field="cart"/>
+            <check-errors/>
+            <if-not-empty field="cart">
+                <set field="cartLineIndex" from-field="parameters.cartLineIndex" type="Integer"/>
+                <call-object-method obj-field="cart" method-name="findCartItem" ret-field="cartItem">
+                    <field field="cartLineIndex" type="int"/>
+                </call-object-method>
+                <if-not-empty field="cartItem">
+                    <set field="quantity" from-field="parameters.quantity" type="BigDecimal"/>
+                    <set field="dispatcher" from-field="parameters.dispatcher"/>
+                    <set field="triggerExternalOps" value="true" type="Boolean"/>
+                    <set field="resetShipGroup" value="true" type="Boolean"/>
+                    <set field="updateProductPrice" value="false" type="Boolean"/>
+                    <call-object-method obj-field="cartItem" method-name="setQuantity">
+                        <field field="quantity" type="BigDecimal"/>
+                        <field field="dispatcher" type="org.ofbiz.service.LocalDispatcher"/>
+                        <field field="cart" type="org.ofbiz.order.shoppingcart.ShoppingCart"/>
+                        <field field="triggerExternalOps" type="boolean"/>
+                        <field field="resetShipGroup" type="boolean"/>
+                        <field field="updateProductPrice" type="boolean"/>
+                    </call-object-method>
+                    <call-object-method obj-field="webPosTransaction" method-name="calcTax"/>
+                    <check-errors/>
+                </if-not-empty>
+            </if-not-empty>
+        <else>
+            <add-error><fail-property resource="WebPosUiLabels" property="WebPosNotLoggedIn"/></add-error>
+            <check-errors/>
+        </else>
+        </if-not-empty>
+    </simple-method>
+    
+    <simple-method method-name="deleteCartItem" short-description="Delete Cart Item" login-required="true">
+        <clear-field field="posTerminalId"/>
+        <call-class-method class-name="org.ofbiz.webpos.WebPosEvents" method-name="getWebPosSession" ret-field="webPosSession">
+            <field field="request" type="javax.servlet.http.HttpServletRequest"/>
+            <field field="posTerminalId" type="String"/>
+        </call-class-method>
+        <if-not-empty field="webPosSession">
+            <call-object-method obj-field="webPosSession" method-name="getCurrentTransaction" ret-field="webPosTransaction"/>
+            <check-errors/>
+            <call-object-method obj-field="webPosSession" method-name="getCart" ret-field="cart"/>
+            <check-errors/>
+            <if-not-empty field="cart">
+                <set field="cartLineIndex" from-field="parameters.cartLineIndex" type="Integer"/>
+                <set field="dispatcher" from-field="parameters.dispatcher"/>
+                <call-object-method obj-field="cart" method-name="removeCartItem">
+                    <field field="cartLineIndex" type="int"/>
+                    <field field="dispatcher" type="org.ofbiz.service.LocalDispatcher"/>
+                </call-object-method>
+                <call-object-method obj-field="webPosTransaction" method-name="calcTax"/>
+                <check-errors/>
+            </if-not-empty>
+        <else>
+            <add-error><fail-property resource="WebPosUiLabels" property="WebPosNotLoggedIn"/></add-error>
+            <check-errors/>
+        </else>
+        </if-not-empty>
+    </simple-method>
+    
+    <simple-method method-name="getProductAndPrice" short-description="Get Product And Price" login-required="true">
+        <entity-one entity-name="Product" value-field="product">
+            <field-map field-name="productId" from-field="parameters.productId"/>
+        </entity-one>
+        <if-empty field="product">
+            <add-error><fail-property resource="WebPosUiLabels" property="WebPosCannotFindProduct"/></add-error>
+            <check-errors/>
+        <else>
+            <call-bsh>
+                <![CDATA[
+                    webPosSession = org.ofbiz.webpos.WebPosEvents.getWebPosSession(request, null);
+                    if (webPosSession != null) {
+                        parameters.put("webPosSession", webPosSession);
+                        parameters.put("productStoreId", org.ofbiz.product.store.ProductStoreWorker.getProductStoreId(request));
+                        parameters.put("catalogId", org.ofbiz.product.catalog.CatalogWorker.getCurrentCatalogId(request));
+                        parameters.put("webSiteId", org.ofbiz.product.catalog.CatalogWorker.getWebSiteId(request));
+                        session = request.getSession();
+                        parameters.put("autoUserLogin", session.getAttribute("autoUserLogin"));
+                        cart = webPosSession.getCart();
+                        if (cart != null) {
+                            parameters.put("cart", cart);
+                            parameters.put("currencyId", cart.getCurrency());
+                            parameters.put("agreementId", cart.getAgreementId());
+                            parameters.put("partyId", cart.getPartyId());
+                        }
+                    }
+                ]]>
+            </call-bsh>
+            <if-not-empty field="parameters.webPosSession">
+                <if-not-empty field="parameters.cart">
+                    <set field="priceContext.product" from-field="product"/>
+                    <set field="priceContext.prodCatalogId" from-field="parameters.catalogId"/>
+                    <set field="priceContext.currencyUomId" from-field="parameters.currencyId"/>
+                    <set field="priceContext.autoUserLogin" from-field="parameters.autoUserLogin"/>
+                    <set field="priceContext.webSiteId" from-field="parameters.webSiteId"/>
+                    <set field="priceContext.productStoreId" from-field="parameters.productStoreId"/>
+                    <set field="priceContext.checkIncludeVat" value="Y"/>
+                    <set field="priceContext.agreementId" from-field="parameters.agreementId"/>
+                    <set field="priceContext.partyId" from-field="parameters.partyId"/>
+                    <call-service service-name="calculateProductPrice" in-map-name="priceContext">
+                        <result-to-field result-name="price" field="price"/>
+                    </call-service>
+                    <field-to-request field="price" request-name="price"/>
+                    <field-to-request field="parameters.currencyId" request-name="currencyUomId"/>
+                    <field-to-request field="product" request-name="product"/>
+                </if-not-empty>
+            </if-not-empty>
+        </else>
+        </if-empty>
+    </simple-method>
+    
+    <simple-method method-name="getFormattedAmount" short-description="Get Formatted Amount" login-required="true">
+        <set field="amount" from-field="parameters.amount" type="BigDecimal" default-value="0"/>
+        <set field="isoCode" from-field="parameters.currencyId" type="String"/>
+        <set field="maximumFractionDigits" value="2" type="Integer"/>
+        <call-class-method class-name="org.ofbiz.base.util.UtilFormatOut" method-name="formatCurrency" ret-field="formattedAmount">
+            <field field="amount" type="BigDecimal"/>
+            <field field="isoCode" type="String"/>
+            <field field="locale" type="Locale"/>
+            <field field="maximumFractionDigits" type="int"/>
+        </call-class-method>
+        <field-to-request field="formattedAmount" request-name="formattedAmount"/>
+    </simple-method>
+    
+    <simple-method method-name="getFormattedProductFeaturePrice" short-description="Get Formatted Product Feature Price" login-required="true">
+        <entity-and entity-name="ProductFeaturePrice" list="productFeaturePrices" filter-by-date="true">
+            <field-map field-name="productFeatureId" from-field="parameters.productFeatureId"/>
+            <field-map field-name="productPriceTypeId" from-field="parameters.productPriceTypeId"/>
+            <field-map field-name="currencyUomId" from-field="parameters.currencyUomId"/>
+        </entity-and>
+        <if-not-empty field="productFeaturePrices">
+            <first-from-list entry="productFeaturePrice" list="productFeaturePrices"/>
+            <set field="amount" from-field="productFeaturePrice.price" type="BigDecimal" default-value="0"/>
+            <set field="isoCode" from-field="productFeaturePrice.currencyUomId" type="String"/>
+            <set field="maximumFractionDigits" value="2" type="Integer"/>
+            <call-class-method class-name="org.ofbiz.base.util.UtilFormatOut" method-name="formatCurrency" ret-field="formattedFeaturePrice">
+                <field field="amount" type="BigDecimal"/>
+                <field field="isoCode" type="String"/>
+                <field field="locale" type="Locale"/>
+                <field field="maximumFractionDigits" type="int"/>
+            </call-class-method>
+            <field-to-request field="formattedFeaturePrice" request-name="formattedFeaturePrice"/>
+        </if-not-empty>
+    </simple-method>
+    
+    <simple-method method-name="removeSalesRep" short-description="Remove Sales Rep from cart" login-required="true">
+        <clear-field field="posTerminalId"/>
+        <call-class-method class-name="org.ofbiz.webpos.WebPosEvents" method-name="getWebPosSession" ret-field="webPosSession">
+            <field field="request" type="javax.servlet.http.HttpServletRequest"/>
+            <field field="posTerminalId" type="String"/>
+        </call-class-method>
+        <if-not-empty field="webPosSession">
+            <call-object-method obj-field="webPosSession" method-name="getCart" ret-field="cart"/>
+            <check-errors/>
+            <if-not-empty field="cart">
+                <call-object-method obj-field="cart" method-name="getAdditionalPartyRoleMap" ret-field="partyRoles"/>
+                <check-errors/>
+                <set field="roleTypeId" value="SALES_REP"/>
+                <call-object-method obj-field="partyRoles" method-name="get" ret-field="partyRole">
+                    <field field="roleTypeId" type="Object"/>
+                </call-object-method>
+                <check-errors/>
+                <call-object-method obj-field="partyRole" method-name="size" ret-field="partyRoleSize"/>
+                <check-errors/>
+                <if-compare field="partyRoleSize" operator="less-equals" value="1" type="Integer">
+                    <add-error><fail-property resource="WebPosUiLabels" property="WebPosSelectOneSalesRep"/></add-error>
+                    <check-errors/>
+                <else>
+                    <set field="partyId" from-field="parameters.partyId"/>
+                    <set field="roleTypeId" value="SALES_REP"/>
+                    <call-object-method obj-field="cart" method-name="removeAdditionalPartyRole">
+                        <field field="partyId" type="String"/>
+                        <field field="roleTypeId" type="String"/>
+                    </call-object-method>
+                </else>
+                </if-compare>
+            </if-not-empty>
+        <else>
+            <add-error><fail-property resource="WebPosUiLabels" property="WebPosNotLoggedIn"/></add-error>
+            <check-errors/>
+        </else>
+        </if-not-empty>
+    </simple-method>
+    
+    <simple-method method-name="addSalesRep" short-description="Add Sales Rep to cart" login-required="true">
+        <clear-field field="posTerminalId"/>
+        <call-class-method class-name="org.ofbiz.webpos.WebPosEvents" method-name="getWebPosSession" ret-field="webPosSession">
+            <field field="request" type="javax.servlet.http.HttpServletRequest"/>
+            <field field="posTerminalId" type="String"/>
+        </call-class-method>
+        <if-not-empty field="webPosSession">
+            <call-object-method obj-field="webPosSession" method-name="getCart" ret-field="cart"/>
+            <check-errors/>
+            <if-not-empty field="cart">
+                <set field="partyId" from-field="parameters.partyId"/>
+                <set field="roleTypeId" value="SALES_REP"/>
+                <call-object-method obj-field="cart" method-name="addAdditionalPartyRole">
+                    <field field="partyId" type="String"/>
+                    <field field="roleTypeId" type="String"/>
+                </call-object-method>
+            </if-not-empty>
+        <else>
+            <add-error><fail-property resource="WebPosUiLabels" property="WebPosNotLoggedIn"/></add-error>
+            <check-errors/>
+        </else>
+        </if-not-empty>
+    </simple-method>
+    
+    <simple-method method-name="getShipMethods" short-description="Get shipping methods" login-required="false">
+        <clear-field field="posTerminalId"/>
+        <call-class-method class-name="org.ofbiz.webpos.WebPosEvents" method-name="getWebPosSession" ret-field="webPosSession">
+            <field field="request" type="javax.servlet.http.HttpServletRequest"/>
+            <field field="posTerminalId" type="String"/>
+        </call-class-method>
+        <if-not-empty field="webPosSession">
+            <call-object-method obj-field="webPosSession" method-name="getCart" ret-field="shoppingCart"/>
+            <check-errors/>
+            <set field="dispatcher" from-field="parameters.dispatcher" type="Object"/>
+            <call-bsh>
+                <![CDATA[
+                    import org.ofbiz.order.shoppingcart.shipping.ShippingEstimateWrapper;
+                    shippingEstWpr = ShippingEstimateWrapper.getWrapper(dispatcher, shoppingCart, 0);
+                    parameters.put("shippingEstWpr", shippingEstWpr);
+                ]]>
+            </call-bsh>
+            <set field="shippingEstWpr" from-field="parameters.shippingEstWpr"/>
+            <call-object-method obj-field="shippingEstWpr" method-name="getShippingMethods" ret-field="carrierShipmentMethodList"/>
+            <call-object-method obj-field="shoppingCart" method-name="getShipmentMethodTypeId" ret-field="shipmentMethodTypeId"/>
+            <call-object-method obj-field="shoppingCart" method-name="getCarrierPartyId" ret-field="carrierPartyId"/>
+            <call-object-method obj-field="shoppingCart" method-name="getCurrency" ret-field="currency"/>
+            <if-not-empty field="shipmentMethodTypeId">
+                <if-not-empty field="carrierPartyId">
+                     <set field="chosenShippingMethod" value="${shipmentMethodTypeId}@${carrierPartyId}"/>
+                </if-not-empty>
+            </if-not-empty>
+            <iterate list="carrierShipmentMethodList"  entry="carrierShipmentMethod">
+                <call-object-method obj-field="shippingEstWpr" method-name="getShippingEstimate" ret-field="shippingEst">
+                    <field field="carrierShipmentMethod" type="org.ofbiz.entity.GenericValue"/>
+                </call-object-method>
+                <if-empty field="shippingEst">
+                    <set field="shippingEst" value="-1" type="Integer"/>
+                </if-empty>
+                <set field="negValue" value="-1" type="Integer"/>
+                <set field="shippingMethod" value="${carrierShipmentMethod.shipmentMethodTypeId}@${carrierShipmentMethod.partyId}"/>
+                <if-compare-field field="shippingEst" operator="greater" to-field="negValue">
+                    <set field="shippingDesc" value="${carrierShipmentMethod.partyId} ${carrierShipmentMethod.description} - ${shippingEst?currency(${currency})}"/>
+                <else>
+                    <set field="shippingDesc" value="${carrierShipmentMethod.partyId} ${carrierShipmentMethod.description} - ${uiLabelMap.OrderCalculatedOffline}"/>
+                </else>
+                </if-compare-field>
+                <set field="shippingOptionMap.shippingMethod" from-field="shippingMethod"/>
+                <set field="shippingOptionMap.shippingDesc" from-field="shippingDesc"/>
+                <if-not-empty field="carrierShipmentMethod.productStoreShipMethId">
+                    <set field="shippingOptionMap.productStoreShipMethId" from-field="carrierShipmentMethod.productStoreShipMethId"/>
+                </if-not-empty>
+                <field-to-list field="shippingOptionMap" list="shippingOptions"/>
+                <clear-field field="shippingOptionMap"/>
+            </iterate>
+            <set field="parameters.shippingOptions" from-field="shippingOptions"/>
+            <field-to-request field="parameters.shippingOptions" request-name="shippingOptions"/>
+        </if-not-empty>
+    </simple-method>
+
+    <simple-method method-name="setShipMethod" short-description="Set ship method" login-required="false">
+        <clear-field field="posTerminalId"/>
+        <call-class-method class-name="org.ofbiz.webpos.WebPosEvents" method-name="getWebPosSession" ret-field="webPosSession">
+            <field field="request" type="javax.servlet.http.HttpServletRequest"/>
+            <field field="posTerminalId" type="String"/>
+        </call-class-method>
+        <if-not-empty field="webPosSession">
+            <call-object-method obj-field="webPosSession" method-name="getCart" ret-field="shoppingCart"/>
+            <check-errors/>
+            <call-object-method obj-field="webPosSession" method-name="getCurrentTransaction" ret-field="webPosTransaction"/>
+            <check-errors/>
+            <call-bsh>
+              <![CDATA[
+                shippingMethod = parameters.get("shipMethod");
+                if(shippingMethod != null) {
+                    shipmentMethodTypeId = shippingMethod.substring(0, shippingMethod.indexOf("@"));
+                    if (shippingMethod.indexOf(":") != -1) {
+                        carrierPartyId = shippingMethod.substring(shippingMethod.indexOf("@")+1, shippingMethod.indexOf(":"));
+                        productStoreShipMethId =  shippingMethod.substring(shippingMethod.indexOf(":")+1);
+                        parameters.put("productStoreShipMethId", productStoreShipMethId);
+                    } else {
+                        carrierPartyId = shippingMethod.substring(shippingMethod.indexOf("@")+1);
+                    }
+                    parameters.put("shipmentMethodTypeId", shipmentMethodTypeId);
+                    parameters.put("carrierPartyId", carrierPartyId);
+                }
+              ]]>
+            </call-bsh>
+            <set field="shipmentMethodTypeId" from-field="parameters.shipmentMethodTypeId"/>
+            <set field="carrierPartyId" from-field="parameters.carrierPartyId"/>
+            <set field="productStoreShipMethId" from-field="parameters.productStoreShipMethId"/>
+            <entity-one entity-name="CarrierAndShipmentMethod" value-field="shipmentMethod">
+                <field-map field-name="shipmentMethodTypeId" from-field="shipmentMethodTypeId"/>
+                <field-map field-name="partyId" from-field="carrierPartyId"/>
+                <field-map field-name="roleTypeId" value="CARRIER"/>
+            </entity-one>
+            <field-to-request field="shipmentMethod.description" request-name="shippingDescription"/>
+            <call-object-method obj-field="shoppingCart" method-name="setShipmentMethodTypeId">
+                <field field="shipmentMethodTypeId"/>
+            </call-object-method>
+            <call-object-method obj-field="shoppingCart" method-name="setCarrierPartyId">
+                <field field="carrierPartyId"/>
+            </call-object-method>
+            <call-object-method obj-field="shoppingCart" method-name="setProductStoreShipMethId">
+                <field field="productStoreShipMethId"/>
+            </call-object-method>
+            <call-object-method  obj-field="shoppingCart" method-name="getCurrency" ret-field="isoCode"/>
+            <set field="dispatcher" from-field="parameters.dispatcher" type="Object"/>
+            <set field="delegator" from-field="parameters.delegator" type="Object"/>
+            <set field="locale" from-field="parameters.locale" type="Object"/>
+            <call-bsh>
+              <![CDATA[
+                Map shipCost = org.ofbiz.order.shoppingcart.shipping.ShippingEvents.getShipGroupEstimate(dispatcher, delegator, shoppingCart, 0);
+                shippingTotal = shipCost.get("shippingTotal");
+                if (shippingTotal == null) {
+                    shippingTotal = BigDecimal.ZERO;
+                }
+                shoppingCart.setItemShipGroupEstimate(shippingTotal, 0);
+                parameters.put("shippingTotal", org.ofbiz.base.util.UtilFormatOut.formatCurrency(shippingTotal, isoCode, locale));
+
+                // Calculate and add the tax adjustments
+                webPosTransaction.calcTax();
+
+                salesTax = shoppingCart.getTotalSalesTax();
+                totalSalesTax = org.ofbiz.base.util.UtilFormatOut.formatCurrency(salesTax, isoCode, locale);
+                parameters.put("totalSalesTax", totalSalesTax);
+
+                cartGrandTotal = org.ofbiz.base.util.UtilFormatOut.formatCurrency(shoppingCart.getGrandTotal(), isoCode, locale);
+                parameters.put("cartGrandTotal", cartGrandTotal);
+              ]]>
+            </call-bsh>
+            <call-class-method method-name="doPromotions" class-name="org.ofbiz.order.shoppingcart.product.ProductPromoWorker">
+                <field field="shoppingCart" type="org.ofbiz.order.shoppingcart.ShoppingCart"/>
+                <field field="dispatcher" type="org.ofbiz.service.LocalDispatcher"/>
+            </call-class-method>
+            <field-to-request field="parameters.shippingTotal" request-name="shippingTotal"/>
+            <field-to-request field="parameters.cartGrandTotal" request-name="cartGrandTotal"/>
+            <field-to-request field="parameters.totalSalesTax" request-name="totalSalesTax"/>
+        </if-not-empty>
+    </simple-method>
+</simple-methods>
\ No newline at end of file

Propchange: ofbiz/trunk/specialpurpose/webpos/script/org/ofbiz/webpos/event/CartEvents.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ofbiz/trunk/specialpurpose/webpos/script/org/ofbiz/webpos/event/CartEvents.xml
------------------------------------------------------------------------------
    svn:keywords = Date Rev Author URL Id

Propchange: ofbiz/trunk/specialpurpose/webpos/script/org/ofbiz/webpos/event/CartEvents.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Added: ofbiz/trunk/specialpurpose/webpos/script/org/ofbiz/webpos/event/CustomerEvents.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/webpos/script/org/ofbiz/webpos/event/CustomerEvents.xml?rev=1125951&view=auto
==============================================================================
--- ofbiz/trunk/specialpurpose/webpos/script/org/ofbiz/webpos/event/CustomerEvents.xml (added)
+++ ofbiz/trunk/specialpurpose/webpos/script/org/ofbiz/webpos/event/CustomerEvents.xml Sun May 22 13:11:17 2011
@@ -0,0 +1,37 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+<simple-methods xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/simple-methods.xsd">
+    <simple-method method-name="createUpdateAddress" short-description="Create/Update party address" login-required="true">
+        <set-service-fields service-name="createUpdatePerson" map="parameters" to-map="createUpdatePersonMap"/>
+        <call-service service-name="createUpdatePerson" in-map-name="createUpdatePersonMap">
+            <result-to-field result-name="partyId" field="parameters.partyId"/>
+        </call-service>
+        <if-empty field="parameters.contactMechId">
+            <set-service-fields service-name="createPostalAddressAndPurposes" map="parameters" to-map="createPostalAddressAndPurposesMap"/>
+            <call-service service-name="createPostalAddressAndPurposes" in-map-name="createPostalAddressAndPurposesMap">
+                <result-to-field result-name="contactMechId" field="parameters.contactMechId"/>
+            </call-service>
+        <else>
+            <set-service-fields service-name="updatePostalAddressAndPurposes" map="parameters" to-map="updatePostalAddressAndPurposesMap"/>
+            <call-service service-name="updatePostalAddressAndPurposes" in-map-name="updatePostalAddressAndPurposesMap"/>
+        </else>
+        </if-empty>
+    </simple-method>
+</simple-methods>
\ No newline at end of file

Propchange: ofbiz/trunk/specialpurpose/webpos/script/org/ofbiz/webpos/event/CustomerEvents.xml
------------------------------------------------------------------------------
    svn:eol-style = native

Propchange: ofbiz/trunk/specialpurpose/webpos/script/org/ofbiz/webpos/event/CustomerEvents.xml
------------------------------------------------------------------------------
    svn:keywords = Date Rev Author URL Id

Propchange: ofbiz/trunk/specialpurpose/webpos/script/org/ofbiz/webpos/event/CustomerEvents.xml
------------------------------------------------------------------------------
    svn:mime-type = text/xml

Modified: ofbiz/trunk/specialpurpose/webpos/script/org/ofbiz/webpos/event/ManagerEvents.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/specialpurpose/webpos/script/org/ofbiz/webpos/event/ManagerEvents.xml?rev=1125951&r1=1125950&r2=1125951&view=diff
==============================================================================
--- ofbiz/trunk/specialpurpose/webpos/script/org/ofbiz/webpos/event/ManagerEvents.xml (original)
+++ ofbiz/trunk/specialpurpose/webpos/script/org/ofbiz/webpos/event/ManagerEvents.xml Sun May 22 13:11:17 2011
@@ -19,243 +19,223 @@ under the License.
 -->
 <simple-methods xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/simple-methods.xsd">
     <simple-method method-name="openTerminal" short-description="Open Terminal" login-required="true">
-        <if-not-empty field="parameters.confirm">
-            <set field="posTerminalId" value="null"/>
-            <call-class-method class-name="org.ofbiz.webpos.WebPosEvents" method-name="getWebPosSession" ret-field="webPosSession">
-                <field field="request" type="javax.servlet.http.HttpServletRequest"/>
-                <field field="posTerminalId" type="String"/>
-            </call-class-method>
-            <if-not-empty field="webPosSession">
-                <call-object-method obj-field="webPosSession" method-name="isManagerLoggedIn" ret-field="mgrLoggedIn"/>
-                <if-compare field="mgrLoggedIn" operator="equals" value="true" type="String">
-                    <call-object-method obj-field="webPosSession" method-name="getCurrentTransaction" ret-field="webPosTransaction"/>
-                    <check-errors/>
-                    <call-object-method obj-field="webPosTransaction" method-name="isOpen" ret-field="isOpen"/>
-                    <if-compare field="isOpen" operator="equals" value="false">
-                        <set field="startingDrawerAmount" from-field="parameters.startingDrawerAmount" type="String"/>
-                        <set field="allowNegative" value="false" type="Boolean"/>
-                        <set field="allowPositive" value="true" type="Boolean"/>
-                        <set field="minDecimal" value="0" type="Integer"/>
-                        <set field="maxDecimal" value="3" type="Integer"/>
-                        <call-class-method class-name="org.ofbiz.base.util.UtilValidate" method-name="isDouble" ret-field="isDouble">
-                            <field field="startingDrawerAmount" type="String"/>
-                            <field field="allowNegative" type="boolean"/>
-                            <field field="allowPositive" type="boolean"/>
-                            <field field="minDecimal" type="int"/>
-                            <field field="maxDecimal" type="int"/>
-                        </call-class-method>
-                        <if-compare field="isDouble" operator="equals" value="true">
-                            <make-value value-field="terminalState" entity-name="PosTerminalState"/>
-                            <call-object-method obj-field="webPosSession" method-name="getId" ret-field="terminalState.posTerminalId"/>
-                            <call-class-method class-name="org.ofbiz.base.util.UtilDateTime" method-name="nowTimestamp" ret-field="terminalState.openedDate"/>
-                            <call-object-method obj-field="webPosSession" method-name="getUserLoginId" ret-field="terminalState.openedByUserLoginId"/>
-                            <call-object-method obj-field="webPosTransaction" method-name="getTransactionId" ret-field="terminalState.startingTxId"/>
-                            <set from-field="parameters.startingDrawerAmount" field="terminalState.startingDrawerAmount"/>
-                            <create-value value-field="terminalState"/>
-                            <check-errors/>
-                            <log level="info" message="Created PosTerminalState ${terminalState.startingTxId}"/>
-                        <else>
-                            <add-error><fail-property resource="WebPosUiLabels" property="WebPosManagerOpenTerminalDrawingAmountNotValid"/></add-error>
-                            <check-errors/>
-                        </else>
-                        </if-compare>
+        <clear-field field="posTerminalId"/>
+        <call-class-method class-name="org.ofbiz.webpos.WebPosEvents" method-name="getWebPosSession" ret-field="webPosSession">
+            <field field="request" type="javax.servlet.http.HttpServletRequest"/>
+            <field field="posTerminalId" type="String"/>
+        </call-class-method>
+        <if-not-empty field="webPosSession">
+            <call-object-method obj-field="webPosSession" method-name="isManagerLoggedIn" ret-field="mgrLoggedIn"/>
+            <if-compare field="mgrLoggedIn" operator="equals" value="true" type="String">
+                <call-object-method obj-field="webPosSession" method-name="getCurrentTransaction" ret-field="webPosTransaction"/>
+                <check-errors/>
+                <call-object-method obj-field="webPosTransaction" method-name="isOpen" ret-field="isOpen"/>
+                <if-compare field="isOpen" operator="equals" value="false">
+                    <set field="startingDrawerAmountStr" from-field="parameters.startingDrawerAmount" type="String"/>
+                    <log message="startingDrawerAmountStr: ${startingDrawerAmountStr}" level="always"/>
+                    <call-class-method class-name="org.ofbiz.base.util.UtilNumber" method-name="stringToBigDecimal" ret-field="startingDrawerAmount">
+                        <field field="startingDrawerAmountStr" type="String"/>
+                        <field field="locale" type="java.util.Locale"/>
+                    </call-class-method>
+                    <if-not-empty field="startingDrawerAmount">
+                        <make-value value-field="terminalState" entity-name="PosTerminalState"/>
+                        <call-object-method obj-field="webPosSession" method-name="getId" ret-field="terminalState.posTerminalId"/>
+                        <call-class-method class-name="org.ofbiz.base.util.UtilDateTime" method-name="nowTimestamp" ret-field="terminalState.openedDate"/>
+                        <call-object-method obj-field="webPosSession" method-name="getUserLoginId" ret-field="terminalState.openedByUserLoginId"/>
+                        <call-object-method obj-field="webPosTransaction" method-name="getTransactionId" ret-field="terminalState.startingTxId"/>
+                        <set from-field="startingDrawerAmount" field="terminalState.startingDrawerAmount" type="BigDecimal"/>
+                        <create-value value-field="terminalState"/>
+                        <check-errors/>
+                        <log level="info" message="Created PosTerminalState ${terminalState.startingTxId}"/>
                     <else>
-                        <add-error><fail-property resource="WebPosUiLabels" property="WebPosManagerTerminalAlreadyOpened"/></add-error>
+                        <add-error><fail-property resource="WebPosUiLabels" property="WebPosManagerOpenTerminalDrawingAmountNotValid"/></add-error>
                         <check-errors/>
                     </else>
-                    </if-compare>
+                    </if-not-empty>
                 <else>
-                    <add-error><fail-property resource="WebPosUiLabels" property="WebPosNotManagerLoggedIn"/></add-error>
+                    <add-error><fail-property resource="WebPosUiLabels" property="WebPosManagerTerminalAlreadyOpened"/></add-error>
                     <check-errors/>
                 </else>
                 </if-compare>
             <else>
-                <add-error><fail-property resource="WebPosUiLabels" property="WebPosNotLoggedIn"/></add-error>
+                <add-error><fail-property resource="WebPosUiLabels" property="WebPosNotManagerLoggedIn"/></add-error>
                 <check-errors/>
             </else>
-            </if-not-empty>
+            </if-compare>
+        <else>
+            <add-error><fail-property resource="WebPosUiLabels" property="WebPosNotLoggedIn"/></add-error>
+            <check-errors/>
+        </else>
         </if-not-empty>
     </simple-method>
-
+    
     <simple-method method-name="closeTerminal" short-description="Close Terminal" login-required="true">
-        <if-not-empty field="parameters.confirm">
-            <set field="posTerminalId" value="null"/>
-            <call-class-method class-name="org.ofbiz.webpos.WebPosEvents" method-name="getWebPosSession" ret-field="webPosSession">
-                <field field="request" type="javax.servlet.http.HttpServletRequest"/>
-                <field field="posTerminalId" type="String"/>
-            </call-class-method>
-            <if-not-empty field="webPosSession">
-                <call-object-method obj-field="webPosSession" method-name="isManagerLoggedIn" ret-field="mgrLoggedIn"/>
-                <if-compare field="mgrLoggedIn" operator="equals" value="true">
-                    <call-object-method obj-field="webPosSession" method-name="getCurrentTransaction" ret-field="webPosTransaction"/>
-                    <check-errors/>
-                    <call-object-method obj-field="webPosTransaction" method-name="getTerminalState" ret-field="terminalState"/>
-                    <if-not-empty field="terminalState">
-                        <set field="amount" from-field="parameters.endingDrawerCashAmount" type="String"/>
-                        <set field="allowNegative" value="false" type="Boolean"/>
-                        <set field="allowPositive" value="true" type="Boolean"/>
-                        <set field="minDecimal" value="0" type="Integer"/>
-                        <set field="maxDecimal" value="3" type="Integer"/>
-                        <call-class-method class-name="org.ofbiz.base.util.UtilValidate" method-name="isDouble" ret-field="isDouble">
-                            <field field="amount" type="String"/>
-                            <field field="allowNegative" type="boolean"/>
-                            <field field="allowPositive" type="boolean"/>
-                            <field field="minDecimal" type="int"/>
-                            <field field="maxDecimal" type="int"/>
+        <clear-field field="posTerminalId"/>
+        <call-class-method class-name="org.ofbiz.webpos.WebPosEvents" method-name="getWebPosSession" ret-field="webPosSession">
+            <field field="request" type="javax.servlet.http.HttpServletRequest"/>
+            <field field="posTerminalId" type="String"/>
+        </call-class-method>
+        <if-not-empty field="webPosSession">
+            <call-object-method obj-field="webPosSession" method-name="isManagerLoggedIn" ret-field="mgrLoggedIn"/>
+            <if-compare field="mgrLoggedIn" operator="equals" value="true">
+                <call-object-method obj-field="webPosSession" method-name="getCurrentTransaction" ret-field="webPosTransaction"/>
+                <check-errors/>
+                <call-object-method obj-field="webPosTransaction" method-name="getTerminalState" ret-field="terminalState"/>
+                <if-not-empty field="terminalState">
+                    <set field="endingDrawerCashAmountStr" from-field="parameters.endingDrawerCashAmount" type="String"/>
+                    <if-not-empty field="endingDrawerCashAmountStr">
+                        <call-class-method class-name="org.ofbiz.base.util.UtilNumber" method-name="stringToBigDecimal" ret-field="endingDrawerCashAmount">
+                            <field field="endingDrawerCashAmountStr" type="String"/>
+                            <field field="locale" type="java.util.Locale"/>
                         </call-class-method>
-                        <if-compare field="isDouble" operator="equals" value="false">
+                        <if-empty field="endingDrawerCashAmount">
                             <add-error><fail-property resource="WebPosUiLabels" property="WebPosManagerCloseTerminalCashAmountNotValid"/></add-error>
                             <check-errors/>
-                        </if-compare>
-                        <set field="amount" from-field="parameters.endingDrawerCheckAmount" type="String"/>
-                        <call-class-method class-name="org.ofbiz.base.util.UtilValidate" method-name="isDouble" ret-field="isDouble">
-                            <field field="amount" type="String"/>
-                            <field field="allowNegative" type="boolean"/>
-                            <field field="allowPositive" type="boolean"/>
-                            <field field="minDecimal" type="int"/>
-                            <field field="maxDecimal" type="int"/>
+                        </if-empty>
+                    </if-not-empty>
+                    <set field="endingDrawerCheckAmountStr" from-field="parameters.endingDrawerCheckAmount" type="String"/>
+                    <if-not-empty field="endingDrawerCheckAmountStr">
+                        <call-class-method class-name="org.ofbiz.base.util.UtilNumber" method-name="stringToBigDecimal" ret-field="endingDrawerCheckAmount">
+                            <field field="endingDrawerCheckAmountStr" type="String"/>
+                            <field field="locale" type="java.util.Locale"/>
                         </call-class-method>
-                        <if-compare field="isDouble" operator="equals" value="false">
+                        <if-empty field="endingDrawerCheckAmount">
                             <add-error><fail-property resource="WebPosUiLabels" property="WebPosManagerCloseTerminalCheckAmountNotValid"/></add-error>
                             <check-errors/>
-                        </if-compare>
-                        <set field="amount" from-field="parameters.endingDrawerCcAmount" type="String"/>
-                        <call-class-method class-name="org.ofbiz.base.util.UtilValidate" method-name="isDouble" ret-field="isDouble">
-                            <field field="amount" type="String"/>
-                            <field field="allowNegative" type="boolean"/>
-                            <field field="allowPositive" type="boolean"/>
-                            <field field="minDecimal" type="int"/>
-                            <field field="maxDecimal" type="int"/>
+                        </if-empty>
+                    </if-not-empty>
+                    <set field="endingDrawerCcAmountStr" from-field="parameters.endingDrawerCcAmount" type="String"/>
+                    <if-not-empty field="endingDrawerCcAmountStr">
+                        <call-class-method class-name="org.ofbiz.base.util.UtilNumber" method-name="stringToBigDecimal" ret-field="endingDrawerCcAmount">
+                            <field field="endingDrawerCcAmountStr" type="String"/>
+                            <field field="locale" type="java.util.Locale"/>
                         </call-class-method>
-                        <if-compare field="isDouble" operator="equals" value="false">
+                        <if-empty field="endingDrawerCcAmount">
                             <add-error><fail-property resource="WebPosUiLabels" property="WebPosManagerCloseTerminalCcAmountNotValid"/></add-error>
                             <check-errors/>
-                        </if-compare>
-                        <set field="amount" from-field="parameters.endingDrawerGcAmount" type="String"/>
-                        <call-class-method class-name="org.ofbiz.base.util.UtilValidate" method-name="isDouble" ret-field="isDouble">
-                            <field field="amount" type="String"/>
-                            <field field="allowNegative" type="boolean"/>
-                            <field field="allowPositive" type="boolean"/>
-                            <field field="minDecimal" type="int"/>
-                            <field field="maxDecimal" type="int"/>
+                        </if-empty>
+                    </if-not-empty>
+                    <set field="endingDrawerGcAmountStr" from-field="parameters.endingDrawerGcAmount" type="String"/>
+                    <if-not-empty field="endingDrawerGcAmountStr">
+                        <call-class-method class-name="org.ofbiz.base.util.UtilNumber" method-name="stringToBigDecimal" ret-field="endingDrawerGcAmount">
+                            <field field="endingDrawerGcAmountStr" type="String"/>
+                            <field field="locale" type="java.util.Locale"/>
                         </call-class-method>
-                        <if-compare field="isDouble" operator="equals" value="false">
+                        <if-empty field="endingDrawerGcAmount">
                             <add-error><fail-property resource="WebPosUiLabels" property="WebPosManagerCloseTerminalGcAmounNotValidt"/></add-error>
                             <check-errors/>
-                        </if-compare>
-                        <set field="amount" from-field="parameters.endingDrawerOtherAmount" type="String"/>
-                        <call-class-method class-name="org.ofbiz.base.util.UtilValidate" method-name="isDouble" ret-field="isDouble">
-                            <field field="amount" type="String"/>
-                            <field field="allowNegative" type="boolean"/>
-                            <field field="allowPositive" type="boolean"/>
-                            <field field="minDecimal" type="int"/>
-                            <field field="maxDecimal" type="int"/>
+                        </if-empty>
+                    </if-not-empty>
+                    <set field="endingDrawerOtherAmountStr" from-field="parameters.endingDrawerOtherAmount" type="String"/>
+                    <if-not-empty field="endingDrawerOtherAmountStr">
+                        <call-class-method class-name="org.ofbiz.base.util.UtilNumber" method-name="stringToBigDecimal" ret-field="endingDrawerOtherAmount">
+                            <field field="endingDrawerOtherAmountStr" type="String"/>
+                            <field field="locale" type="java.util.Locale"/>
                         </call-class-method>
-                        <if-compare field="isDouble" operator="equals" value="false">
+                        <if-empty field="endingDrawerOtherAmount">
                             <add-error><fail-property resource="WebPosUiLabels" property="WebPosManagerCloseTerminalOtherAmountNotValid"/></add-error>
                             <check-errors/>
-                        </if-compare>
-                        <call-object-method obj-field="webPosSession" method-name="getUserLoginId" ret-field="terminalState.closedByUserLoginId"/>
-                        <set from-field="parameters.endingDrawerCashAmount"  field="terminalState.actualEndingCash"/>
-                        <set from-field="parameters.endingDrawerCheckAmount" field="terminalState.actualEndingCheck"/>
-                        <set from-field="parameters.endingDrawerCcAmount"    field="terminalState.actualEndingCc"/>
-                        <set from-field="parameters.endingDrawerGcAmount"    field="terminalState.actualEndingGc"/>
-                        <set from-field="parameters.endingDrawerOtherAmount" field="terminalState.actualEndingOther"/>
-                        <call-object-method obj-field="webPosTransaction" method-name="getTransactionId" ret-field="terminalState.endingTxId"/>
-                        <store-value value-field="terminalState"/>
-                        <check-errors/>
-                        <log level="info" message="Close PosTerminalState ${terminalState.endingTxId}"/>
-                    <else>
-                        <add-error><fail-property resource="WebPosUiLabels" property="WebPosManagerTerminalAlreadyClosed"/></add-error>
-                        <check-errors/>
-                    </else>
+                        </if-empty>
                     </if-not-empty>
+                    <call-object-method obj-field="webPosSession" method-name="getUserLoginId" ret-field="terminalState.closedByUserLoginId"/>
+                    <set field="terminalState.actualEndingCash" from-field="endingDrawerCashAmount" type="BigDecimal"/>
+                    <set field="terminalState.actualEndingCheck" from-field="endingDrawerCheckAmount" type="BigDecimal"/>
+                    <set field="terminalState.actualEndingCc" from-field="endingDrawerCcAmount" type="BigDecimal"/>
+                    <set field="terminalState.actualEndingGc" from-field="endingDrawerGcAmount" type="BigDecimal"/>
+                    <set field="terminalState.actualEndingOther" from-field="endingDrawerOtherAmount" type="BigDecimal"/>
+                    <call-class-method class-name="org.ofbiz.base.util.UtilDateTime" method-name="nowTimestamp" ret-field="terminalState.closedDate"/>
+                    <call-object-method obj-field="webPosTransaction" method-name="getTransactionId" ret-field="terminalState.endingTxId"/>
+                    <store-value value-field="terminalState"/>
+                    <check-errors/>
+                    <log level="info" message="Close PosTerminalState ${terminalState.endingTxId}"/>
                 <else>
-                    <add-error><fail-property resource="WebPosUiLabels" property="WebPosNotManagerLoggedIn"/></add-error>
+                    <add-error><fail-property resource="WebPosUiLabels" property="WebPosManagerTerminalAlreadyClosed"/></add-error>
                     <check-errors/>
                 </else>
-                </if-compare>
+                </if-not-empty>
             <else>
-                <add-error><fail-property resource="WebPosUiLabels" property="WebPosNotLoggedIn"/></add-error>
+                <add-error><fail-property resource="WebPosUiLabels" property="WebPosNotManagerLoggedIn"/></add-error>
                 <check-errors/>
             </else>
-            </if-not-empty>
-            <!-- // TODO: missing to call the printTotals and SyncCallbackAdaptor and SecurityEvents.logout(pos) -->
+            </if-compare>
+        <else>
+            <add-error><fail-property resource="WebPosUiLabels" property="WebPosNotLoggedIn"/></add-error>
+            <check-errors/>
+        </else>
         </if-not-empty>
+        <!-- // TODO: missing to call the printTotals and SyncCallbackAdaptor and SecurityEvents.logout(pos) -->
     </simple-method>
-
+    
     <simple-method method-name="voidOrder" short-description="Void Order" login-required="true">
-        <if-not-empty field="parameters.confirm">
-            <set field="posTerminalId" value="null"/>
-            <call-class-method class-name="org.ofbiz.webpos.WebPosEvents" method-name="getWebPosSession" ret-field="webPosSession">
-                <field field="request" type="javax.servlet.http.HttpServletRequest"/>
-                <field field="posTerminalId" type="String"/>
-            </call-class-method>
-            <if-not-empty field="webPosSession">
-                <call-object-method obj-field="webPosSession" method-name="isManagerLoggedIn" ret-field="mgrLoggedIn"/>
-                <if-compare field="mgrLoggedIn" operator="equals" value="true">
-                    <call-object-method obj-field="webPosSession" method-name="getCurrentTransaction" ret-field="webPosTransaction"/>
-                    <check-errors/>
-                    <call-object-method obj-field="webPosTransaction" method-name="getTerminalState" ret-field="terminalState"/>
-                    <if-not-empty field="terminalState">
-                        <set field="fieldName" value="openedDate" type="String"/>
-                        <call-object-method obj-field="terminalState" method-name="getTimestamp" ret-field="openDate">
+        <clear-field field="posTerminalId"/>
+        <call-class-method class-name="org.ofbiz.webpos.WebPosEvents" method-name="getWebPosSession" ret-field="webPosSession">
+            <field field="request" type="javax.servlet.http.HttpServletRequest"/>
+            <field field="posTerminalId" type="String"/>
+        </call-class-method>
+        <if-not-empty field="webPosSession">
+            <call-object-method obj-field="webPosSession" method-name="isManagerLoggedIn" ret-field="mgrLoggedIn"/>
+            <if-compare field="mgrLoggedIn" operator="equals" value="true">
+                <call-object-method obj-field="webPosSession" method-name="getCurrentTransaction" ret-field="webPosTransaction"/>
+                <check-errors/>
+                <call-object-method obj-field="webPosTransaction" method-name="getTerminalState" ret-field="terminalState"/>
+                <if-not-empty field="terminalState">
+                    <set field="fieldName" value="openedDate" type="String"/>
+                    <call-object-method obj-field="terminalState" method-name="getTimestamp" ret-field="openDate">
+                        <field field="fieldName" type="String"/>
+                    </call-object-method>
+                    <entity-one entity-name="OrderHeader" value-field="orderHeader">
+                        <field-map field-name="orderId" from-field="parameters.orderId"/>
+                    </entity-one>
+                    <if-not-empty field="orderHeader">
+                        <set field="fieldName" value="orderDate" type="String"/>
+                        <call-object-method obj-field="orderHeader" method-name="getTimestamp" ret-field="orderDate">
                             <field field="fieldName" type="String"/>
                         </call-object-method>
-                        <entity-one entity-name="OrderHeader" value-field="orderHeader">
-                            <field-map field-name="orderId" from-field="parameters.orderId"/>
-                        </entity-one>
-                        <if-not-empty field="orderHeader">
-                            <set field="fieldName" value="orderDate" type="String"/>
-                            <call-object-method obj-field="orderHeader" method-name="getTimestamp" ret-field="orderDate">
-                                <field field="fieldName" type="String"/>
-                            </call-object-method>
-                            <call-object-method obj-field="orderDate" method-name="after" ret-field="isAfter">
-                                <field field="openDate" type="Timestamp"/>
+                        <call-object-method obj-field="orderDate" method-name="after" ret-field="isAfter">
+                            <field field="openDate" type="Timestamp"/>
+                        </call-object-method>
+                        <if-compare field="isAfter" operator="equals" value="true">
+                            <call-object-method obj-field="webPosSession" method-name="getDispatcher" ret-field="dispatcher"/>
+                            <set field="returnOrder.orderId" from-field="parameters.orderId"/>
+                            <set field="returnOrder.returnHeaderTypeId" value="CUSTOMER_RETURN"/>
+                            <call-object-method obj-field="webPosSession" method-name="getUserLogin" ret-field="returnOrder.userLogin"/>
+                            <set field="serviceName" value="quickReturnOrder"/>
+                            <call-object-method obj-field="dispatcher" method-name="runSync" ret-field="returnResp">
+                                <field field="serviceName" type="String"/>
+                                <field field="returnOrder" type="java.util.Map"/>
                             </call-object-method>
-                            <if-compare field="isAfter" operator="equals" value="true">
-                                <call-object-method obj-field="webPosSession" method-name="getDispatcher" ret-field="dispatcher"/>
-                                <set field="returnOrder.orderId" from-field="parameters.orderId"/>
-                                <set field="returnOrder.returnHeaderTypeId" value="CUSTOMER_RETURN"/>
-                                <call-object-method obj-field="webPosSession" method-name="getUserLogin" ret-field="returnOrder.userLogin"/>
-                                <set field="serviceName" value="quickReturnOrder"/>
-                                <call-object-method obj-field="dispatcher" method-name="runSync" ret-field="returnResp">
-                                    <field field="serviceName" type="String"/>
-                                    <field field="returnOrder" type="java.util.Map"/>
-                                </call-object-method>
-                                <check-errors/>
-                                <log level="info" message="Void order ${returnResp}"/>
-                            <else>
-                                <add-error><fail-property resource="WebPosUiLabels" property="WebPosManagerVoidOrderNotValidDate"/></add-error>
-                                <check-errors/>
-                            </else>
-                            </if-compare>
+                            <check-errors/>
+                            <log level="info" message="Void order ${returnResp}"/>
                         <else>
-                            <add-error><fail-property resource="WebPosUiLabels" property="WebPosManagerVoidOrderNotValidOrderId"/></add-error>
+                            <add-error><fail-property resource="WebPosUiLabels" property="WebPosManagerVoidOrderNotValidDate"/></add-error>
                             <check-errors/>
                         </else>
-                        </if-not-empty>
+                        </if-compare>
                     <else>
-                        <add-error><fail-property resource="WebPosUiLabels" property="WebPosManagerVoidOrderTerminalNotOpened"/></add-error>
+                        <add-error><fail-property resource="WebPosUiLabels" property="WebPosManagerVoidOrderNotValidOrderId"/></add-error>
                         <check-errors/>
                     </else>
                     </if-not-empty>
                 <else>
-                    <add-error><fail-property resource="WebPosUiLabels" property="WebPosNotManagerLoggedIn"/></add-error>
+                    <add-error><fail-property resource="WebPosUiLabels" property="WebPosManagerVoidOrderTerminalNotOpened"/></add-error>
                     <check-errors/>
                 </else>
-                </if-compare>
+                </if-not-empty>
             <else>
-                <add-error><fail-property resource="WebPosUiLabels" property="WebPosNotLoggedIn"/></add-error>
+                <add-error><fail-property resource="WebPosUiLabels" property="WebPosNotManagerLoggedIn"/></add-error>
                 <check-errors/>
             </else>
-            </if-not-empty>
-            <!--   // TODO: print void receipt -->
+            </if-compare>
+        <else>
+            <add-error><fail-property resource="WebPosUiLabels" property="WebPosNotLoggedIn"/></add-error>
+            <check-errors/>
+        </else>
         </if-not-empty>
+        <!-- // TODO: print void receipt -->
     </simple-method>
-
+    
     <simple-method method-name="shutdown" short-description="Shutdown" login-required="true">
-        <set field="posTerminalId" value="null"/>
+        <clear-field field="posTerminalId"/>
         <call-class-method class-name="org.ofbiz.webpos.WebPosEvents" method-name="getWebPosSession" ret-field="webPosSession">
             <field field="request" type="javax.servlet.http.HttpServletRequest"/>
             <field field="posTerminalId" type="String"/>
@@ -276,110 +256,96 @@ under the License.
         </else>
         </if-not-empty>
     </simple-method>
-
+    
     <simple-method method-name="paidOutAndIn" short-description="Paid Out and In" login-required="true">
-        <if-not-empty field="parameters.confirm">
-            <set field="posTerminalId" value="null"/>
-            <call-class-method class-name="org.ofbiz.webpos.WebPosEvents" method-name="getWebPosSession" ret-field="webPosSession">
-                <field field="request" type="javax.servlet.http.HttpServletRequest"/>
-                <field field="posTerminalId" type="String"/>
-            </call-class-method>
-            <if-not-empty field="webPosSession">
-                <call-object-method obj-field="webPosSession" method-name="isManagerLoggedIn" ret-field="mgrLoggedIn"/>
-                <if-compare field="mgrLoggedIn" operator="equals" value="true">
-                    <call-object-method obj-field="webPosSession" method-name="getCurrentTransaction" ret-field="webPosTransaction"/>
-                    <check-errors/>
-                    <call-object-method obj-field="webPosTransaction" method-name="isOpen" ret-field="isOpen"/>
-                    <check-errors/>
-                    <if-compare field="isOpen" operator="equals" value="true">
-                        <set field="amount" from-field="parameters.amountInOut" type="String"/>
-                        <set field="allowNegative" value="false" type="Boolean"/>
-                        <set field="allowPositive" value="true" type="Boolean"/>
-                        <set field="minDecimal" value="0" type="Integer"/>
-                        <set field="maxDecimal" value="3" type="Integer"/>
-                        <call-class-method class-name="org.ofbiz.base.util.UtilValidate" method-name="isDouble" ret-field="isDouble">
-                            <field field="amount" type="String"/>
-                            <field field="allowNegative" type="boolean"/>
-                            <field field="allowPositive" type="boolean"/>
-                            <field field="minDecimal" type="int"/>
-                            <field field="maxDecimal" type="int"/>
-                        </call-class-method>
-                        <if-compare field="isDouble" operator="equals" value="true">
-                            <make-value value-field="internTx" entity-name="PosTerminalInternTx"/>
-                            <call-object-method obj-field="webPosTransaction" method-name="getTerminalLogId" ret-field="internTx.posTerminalLogId"/>
-                            <set field="internTx.paidAmount" from-field="parameters.amountInOut"/>
-                            <set field="internTx.reasonComment" from-field="parameters.reasonCommentInOut"/>
-                            <set field="internTx.reasonEnumId" from-field="parameters.reasonInOut"/>
-                            <create-value value-field="internTx"/>
-                            <set from-field="parameters.type" field="paidInOut"/>
-                            <call-object-method obj-field="webPosTransaction" method-name="paidInOut">
-                                <field field="paidInOut" type="String"/>
-                            </call-object-method>
+        <clear-field field="posTerminalId"/>
+        <call-class-method class-name="org.ofbiz.webpos.WebPosEvents" method-name="getWebPosSession" ret-field="webPosSession">
+            <field field="request" type="javax.servlet.http.HttpServletRequest"/>
+            <field field="posTerminalId" type="String"/>
+        </call-class-method>
+        <if-not-empty field="webPosSession">
+            <call-object-method obj-field="webPosSession" method-name="isManagerLoggedIn" ret-field="mgrLoggedIn"/>
+            <if-compare field="mgrLoggedIn" operator="equals" value="true">
+                <call-object-method obj-field="webPosSession" method-name="getCurrentTransaction" ret-field="webPosTransaction"/>
+                <check-errors/>
+                <call-object-method obj-field="webPosTransaction" method-name="isOpen" ret-field="isOpen"/>
+                <check-errors/>
+                <if-compare field="isOpen" operator="equals" value="true">
+                    <set field="amountInOutStr" from-field="parameters.amountInOut" type="String"/>
+                    <call-class-method class-name="org.ofbiz.base.util.UtilNumber" method-name="stringToBigDecimal" ret-field="amountInOut">
+                        <field field="amountInOutStr" type="String"/>
+                        <field field="locale" type="java.util.Locale"/>
+                    </call-class-method>
+                    <if-not-empty field="amountInOut">
+                        <make-value value-field="internTx" entity-name="PosTerminalInternTx"/>
+                        <call-object-method obj-field="webPosTransaction" method-name="getTerminalLogId" ret-field="internTx.posTerminalLogId"/>
+                        <set field="internTx.paidAmount" from-field="amountInOut" type="BigDecimal"/>
+                        <set field="internTx.reasonComment" from-field="parameters.reasonCommentInOut"/>
+                        <if-compare field="parameters.type" operator="equals" value="IN">
+                            <set field="internTx.reasonEnumId" from-field="parameters.reasonIn"/>
                         <else>
-                            <add-error><fail-property resource="WebPosUiLabels" property="WebPosManagerPaidOutAndIndAmountNotValid"/></add-error>
-                            <check-errors/>
+                            <set field="internTx.reasonEnumId" from-field="parameters.reasonOut"/>
                         </else>
                         </if-compare>
+                        <create-value value-field="internTx"/>
+                        <set from-field="parameters.type" field="paidInOut"/>
+                        <call-object-method obj-field="webPosTransaction" method-name="paidInOut">
+                            <field field="paidInOut" type="String"/>
+                        </call-object-method>
                     <else>
-                        <add-error><fail-property resource="WebPosUiLabels" property="WebPosManagerPaidOutAndInWithoutOpenedTransaction"/></add-error>
+                        <add-error><fail-property resource="WebPosUiLabels" property="WebPosManagerPaidOutAndIndAmountNotValid"/></add-error>
                         <check-errors/>
                     </else>
-                    </if-compare>
+                    </if-not-empty>
                 <else>
-                    <add-error><fail-property resource="WebPosUiLabels" property="WebPosNotManagerLoggedIn"/></add-error>
+                    <add-error><fail-property resource="WebPosUiLabels" property="WebPosManagerPaidOutAndInWithoutOpenedTransaction"/></add-error>
                     <check-errors/>
                 </else>
                 </if-compare>
             <else>
-                <add-error><fail-property resource="WebPosUiLabels" property="WebPosNotLoggedIn"/></add-error>
+                <add-error><fail-property resource="WebPosUiLabels" property="WebPosNotManagerLoggedIn"/></add-error>
                 <check-errors/>
             </else>
-            </if-not-empty>
+            </if-compare>
+        <else>
+            <add-error><fail-property resource="WebPosUiLabels" property="WebPosNotLoggedIn"/></add-error>
+            <check-errors/>
+        </else>
         </if-not-empty>
     </simple-method>
-
+    
     <simple-method method-name="modifyPrice" short-description="Modify Price" login-required="true">
-        <if-not-empty field="parameters.confirm">
-            <set field="posTerminalId" value="null"/>
-            <call-class-method class-name="org.ofbiz.webpos.WebPosEvents" method-name="getWebPosSession" ret-field="webPosSession">
-                <field field="request" type="javax.servlet.http.HttpServletRequest"/>
-                <field field="posTerminalId" type="String"/>
+        <clear-field field="posTerminalId"/>
+        <call-class-method class-name="org.ofbiz.webpos.WebPosEvents" method-name="getWebPosSession" ret-field="webPosSession">
+            <field field="request" type="javax.servlet.http.HttpServletRequest"/>
+            <field field="posTerminalId" type="String"/>
+        </call-class-method>
+        <if-not-empty field="webPosSession">
+            <call-object-method obj-field="webPosSession" method-name="getCurrentTransaction" ret-field="webPosTransaction"/>
+            <check-errors/>
+            <set field="priceStr" from-field="parameters.price" type="String"/>
+            <call-class-method class-name="org.ofbiz.base.util.UtilNumber" method-name="stringToBigDecimal" ret-field="price">
+                <field field="priceStr" type="String"/>
+                <field field="locale" type="java.util.Locale"/>
             </call-class-method>
-            <if-not-empty field="webPosSession">
-                <call-object-method obj-field="webPosSession" method-name="getCurrentTransaction" ret-field="webPosTransaction"/>
+            <if-not-empty field="price">
+                <set field="cartLineIdx" from-field="parameters.cartLineIdx" type="Integer"/>
+                <call-object-method obj-field="webPosTransaction" method-name="modifyPrice">
+                    <field field="cartLineIdx" type="int"/>
+                    <field field="price" type="BigDecimal"/>
+                </call-object-method>
+                <check-errors/>
+                <call-object-method obj-field="webPosTransaction" method-name="calcTax"/>
                 <check-errors/>
-                <set field="amount" from-field="parameters.price" type="String"/>
-                <set field="allowNegative" value="false" type="Boolean"/>
-                <set field="allowPositive" value="true" type="Boolean"/>
-                <set field="minDecimal" value="0" type="Integer"/>
-                <set field="maxDecimal" value="3" type="Integer"/>
-                <call-class-method class-name="org.ofbiz.base.util.UtilValidate" method-name="isDouble" ret-field="isDouble">
-                    <field field="amount" type="String"/>
-                    <field field="allowNegative" type="boolean"/>
-                    <field field="allowPositive" type="boolean"/>
-                    <field field="minDecimal" type="int"/>
-                    <field field="maxDecimal" type="int"/>
-                </call-class-method>
-                <if-compare field="isDouble" operator="equals" value="true">
-                    <set from-field="parameters.sku" field="sku" type="String"/>
-                    <set from-field="parameters.price" field="price" type="BigDecimal"/>
-                    <call-object-method obj-field="webPosTransaction" method-name="modifyPrice">
-                        <field field="sku" type="String"/>
-                        <field field="price" type="BigDecimal"/>
-                    </call-object-method>
-                    <check-errors/>
-                    <call-object-method obj-field="webPosTransaction" method-name="calcTax"/>
-                    <check-errors/>
-                <else>
-                    <add-error><fail-property resource="WebPosUiLabels" property="WebPosManagerModifyPriceNotValidPrice"/></add-error>
-                    <check-errors/>
-                </else>
-                </if-compare>
             <else>
-                <add-error><fail-property resource="WebPosUiLabels" property="WebPosNotLoggedIn"/></add-error>
+                <add-error><fail-property resource="WebPosUiLabels" property="WebPosManagerModifyPriceNotValidPrice"/></add-error>
                 <check-errors/>
             </else>
             </if-not-empty>
+        <else>
+            <add-error><fail-property resource="WebPosUiLabels" property="WebPosNotLoggedIn"/></add-error>
+            <check-errors/>
+        </else>
         </if-not-empty>
     </simple-method>
 </simple-methods>
\ No newline at end of file