<?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" xmlns="http://ofbiz.apache.org/Simple-Method" xsi:schemaLocation="http://ofbiz.apache.org/Simple-Method 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.apache.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.apache.ofbiz.party.contact.ContactMechWorker" method-name="getPartyContactMechValueMaps" ret-field="partyContactMechValueMaps">
                    <field field="delegator" type="org.apache.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.apache.ofbiz.entity.GenericValue"/>
                        <field field="dispatcher" type="org.apache.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.apache.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.apache.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.apache.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.apache.ofbiz.service.LocalDispatcher"/>
                        <field field="cart" type="org.apache.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.apache.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.apache.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>
            <script>groovy:
                    webPosSession = org.apache.ofbiz.webpos.WebPosEvents.getWebPosSession(request, null);
                    if (webPosSession != null) {
                        parameters.put("webPosSession", webPosSession);
                        parameters.put("productStoreId", org.apache.ofbiz.product.store.ProductStoreWorker.getProductStoreId(request));
                        parameters.put("catalogId", org.apache.ofbiz.product.catalog.CatalogWorker.getCurrentCatalogId(request));
                        parameters.put("webSiteId", org.apache.ofbiz.webapp.website.WebSiteWorker.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());
                        }
                    }
                </script>
            <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.apache.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 list="productFeaturePrices" entry="productFeaturePrice"/>
            <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.apache.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.apache.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.apache.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.apache.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"/>
            <script>groovy:
                    import org.apache.ofbiz.order.shoppingcart.shipping.ShippingEstimateWrapper;
                    shippingEstWpr = ShippingEstimateWrapper.getWrapper(dispatcher, shoppingCart, 0);
                    parameters.put("shippingEstWpr", shippingEstWpr);
            </script>
            <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.apache.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.apache.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/>
            <script>groovy:
                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);
                }
            </script>
            <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="setAllShipmentMethodTypeId">
                <field field="shipmentMethodTypeId"/>
            </call-object-method>
            <call-object-method obj-field="shoppingCart" method-name="setAllCarrierPartyId">
                <field field="carrierPartyId"/>
            </call-object-method>
            <call-object-method obj-field="shoppingCart" method-name="setAllProductStoreShipMethId">
                <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"/>
            <script>groovy:
                Map shipCost = org.apache.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.apache.ofbiz.base.util.UtilFormatOut.formatCurrency(shippingTotal, isoCode, locale));

                // Calculate and add the tax adjustments
                webPosTransaction.calcTax();

                salesTax = shoppingCart.getTotalSalesTax();
                totalSalesTax = org.apache.ofbiz.base.util.UtilFormatOut.formatCurrency(salesTax, isoCode, locale);
                parameters.put("totalSalesTax", totalSalesTax);

                cartGrandTotal = org.apache.ofbiz.base.util.UtilFormatOut.formatCurrency(shoppingCart.getGrandTotal(), isoCode, locale);
                parameters.put("cartGrandTotal", cartGrandTotal);
            </script>
            <call-class-method method-name="doPromotions" class-name="org.apache.ofbiz.order.shoppingcart.product.ProductPromoWorker">
                <field field="shoppingCart" type="org.apache.ofbiz.order.shoppingcart.ShoppingCart"/>
                <field field="dispatcher" type="org.apache.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>