<?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-v2.xsd">

    <simple-method method-name="testInvoicePerShipmentSetFalse" short-description="Test Invoice Per Shipment Set False" login-required="false">
        <!-- Test Invoice Per Shipment
             Step 1) Set create.invoice.per.shipment=N in AccountingConfig.properties file.
             Step 2) Create order and approve order.
             Step 3) Pack Shipment For Ship Group.
             Step 4) Check invoice should not created.
        -->
        <!-- Step 1 -->
        <call-bsh><![CDATA[
            import org.ofbiz.base.util.UtilProperties;
            UtilProperties.setPropertyValueInMemory("AccountingConfig", "create.invoice.per.shipment", "N");
        ]]></call-bsh>
        <log level="info" message="===== >>> Set Accounting.properties / create.invoice.per.shipment = N"/>
        <!-- Step 2 -->
        <field-to-session field="nullField" session-name="orderMode"/>
        <set field="request" from-field="parameters.request"/>
        <set field="response" from-field="parameters.response"/>
        <call-class-method method-name="routeOrderEntry" class-name="org.ofbiz.order.shoppingcart.ShoppingCartEvents" ret-field="result">
            <field field="request" type="javax.servlet.http.HttpServletRequest"/>
            <field field="response" type="javax.servlet.http.HttpServletResponse"/>
        </call-class-method>
        <log level="info" message="===== >>> Event : routeOrderEntry, Response : ${result}"/>
        <entity-one value-field="userLogin" entity-name="UserLogin">
            <field-map field-name="userLoginId" value="admin"/>
        </entity-one>
        <call-bsh><![CDATA[
            request.setParameter("orderMode", "SALES_ORDER");
            request.setParameter("productStoreId", "9000");
            request.setParameter("partyId", "DemoCustomer");
            request.setParameter("currencyUom", "USD");
            session = request.getSession();
            session.setAttribute("userLogin", userLogin);
        ]]></call-bsh>
        <call-class-method method-name="initializeOrderEntry" class-name="org.ofbiz.order.shoppingcart.ShoppingCartEvents" ret-field="result">
            <field field="request" type="javax.servlet.http.HttpServletRequest"/>
            <field field="response" type="javax.servlet.http.HttpServletResponse"/>
        </call-class-method>
        <log level="info" message="===== >>> Event : initializeOrderEntry, Response : ${result}"/>
        <call-class-method method-name="setOrderCurrencyAgreementShipDates" class-name="org.ofbiz.order.shoppingcart.ShoppingCartEvents" ret-field="result">
            <field field="request" type="javax.servlet.http.HttpServletRequest"/>
            <field field="response" type="javax.servlet.http.HttpServletResponse"/>
        </call-class-method>
        <log level="info" message="===== >>> Event : setOrderCurrencyAgreementShipDates, Response : ${result}"/>
        <call-bsh><![CDATA[
            request.setParameter("add_product_id", "GZ-1000");
        ]]></call-bsh>
        <call-class-method method-name="addToCart" class-name="org.ofbiz.order.shoppingcart.ShoppingCartEvents" ret-field="result">
            <field field="request" type="javax.servlet.http.HttpServletRequest"/>
            <field field="response" type="javax.servlet.http.HttpServletResponse"/>
        </call-class-method>
        <log level="info" message="===== >>> Event : addToCart, Response : ${result}"/>
        <call-bsh><![CDATA[
            request.setParameter("checkoutpage", "quick");
            request.setParameter("shipping_contact_mech_id", "9015");
            request.setParameter("shipping_method", "GROUND@UPS");
            request.setParameter("checkOutPaymentId", "EXT_COD");
            request.setParameter("is_gift", "false");
            request.setParameter("may_split", "false");
        ]]></call-bsh>
        <field-to-request field="nullField" request-name="shoppingCart"/>
        <call-class-method method-name="setQuickCheckOutOptions" class-name="org.ofbiz.order.shoppingcart.CheckOutEvents" ret-field="result">
            <field field="request" type="javax.servlet.http.HttpServletRequest"/>
            <field field="response" type="javax.servlet.http.HttpServletResponse"/>
        </call-class-method>
        <log level="info" message="===== >>> Event : setQuickCheckOutOptions, Response : ${result}"/>
        <call-class-method method-name="createOrder" class-name="org.ofbiz.order.shoppingcart.CheckOutEvents" ret-field="result">
            <field field="request" type="javax.servlet.http.HttpServletRequest"/>
            <field field="response" type="javax.servlet.http.HttpServletResponse"/>
        </call-class-method>
        <log level="info" message="===== >>> Event : createOrder, Response : ${result}"/>
        <call-class-method method-name="processPayment" class-name="org.ofbiz.order.shoppingcart.CheckOutEvents" ret-field="result">
            <field field="request" type="javax.servlet.http.HttpServletRequest"/>
            <field field="response" type="javax.servlet.http.HttpServletResponse"/>
        </call-class-method>
        <log level="info" message="===== >>> Event : processPayment, Response : ${result}"/>
        <call-service-asynch service-name="sendOrderConfirmation"/>
        <call-class-method method-name="destroyCart" class-name="org.ofbiz.order.shoppingcart.ShoppingCartEvents" ret-field="result">
            <field field="request" type="javax.servlet.http.HttpServletRequest"/>
            <field field="response" type="javax.servlet.http.HttpServletResponse"/>
        </call-class-method>
        <log level="info" message="===== >>> Event : destroyCart, Response = ${result}"/>
        <!-- Step 3 -->
        <entity-condition list="orderHeaders" entity-name="OrderHeader">
            <condition-expr field-name="orderTypeId" value="SALES_ORDER"/>
            <order-by field-name="-entryDate"/>
        </entity-condition>
        <first-from-list entry="orderHeader" list="orderHeaders"/>
        <log level="info" message="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx : ${orderHeader}"/>
        <call-bsh><![CDATA[
            import org.ofbiz.shipment.packing.PackingSession;
            packingSession = new PackingSession(dispatcher, userLogin);
            packingSession.setPrimaryOrderId(orderHeader.get("orderId"));
            packingSession.setPrimaryShipGroupSeqId("00001");
            parameters.put("packingSession", packingSession);
        ]]></call-bsh>
        <set field="packInput.orderId" from-field="orderHeader.orderId"/>
        <set field="packInput.shipGroupSeqId" value="00001"/>
        <set field="packInput.packingSession" from-field="parameters.packingSession"/>
        <set field="packInput.nextPackageSeq" value="1" type="Integer"/>
        <set field="packInput.userLogin" from-field="userLogin"/>
        <!-- Items -->
        <set field="packInput.selInfo._1" value="Y"/>
        <set field="packInput.pkgInfo._1" value="1"/>
        <set field="packInput.qtyInfo._1" value="1"/>
        <set field="packInput.prdInfo._1" value="GZ-1000"/>
        <set field="packInput.iteInfo._1" value="00001"/>
        <set field="packInput.wgtInfo._1" value="0"/>
        <set field="packInput.numPackagesInfo._1" value="1"/>
        <call-service service-name="packBulkItems" in-map-name="packInput">
            <result-to-field result-name="responseMessage"/>
        </call-service>
        <log level="info" message="===== >>> Service: packBulkItems, Response = ${responseMessage}"/>
        <set-service-fields service-name="completePack" to-map="completePackInput" map="packInput"/>
        <call-service service-name="completePack" in-map-name="completePackInput">
            <result-to-field result-name="shipmentId"/>
        </call-service>
        <log level="info" message="===== >>> Service: completePack, shipmentId = ${shipmentId}"/>
        <!-- Step 4 -->
        <entity-and list="invoices" entity-name="OrderItemBillingAndInvoiceAndItem">
            <field-map field-name="orderId" from-field="orderHeader.orderId"/>
        </entity-and>
        <assert>
            <if-empty field="invoices"/>
        </assert>
        
        <check-errors/>
    </simple-method>
    <simple-method method-name="testInvoicePerShipmentSetTrue" short-description="Test Invoice Per Shipment Set True" login-required="false">
        <!-- Test Invoice Per Shipment
             Step 1) Set create.invoice.per.shipment=N in AccountingConfig.properties file.
             Step 2) Create order and approve order.
             Step 3) Pack Shipment For Ship Group.
             Step 4) Check invoice should created.
        -->
        <!-- Step 1 -->
        <call-bsh><![CDATA[
            import org.ofbiz.base.util.UtilProperties;
            UtilProperties.setPropertyValueInMemory("AccountingConfig", "create.invoice.per.shipment", "Y");
        ]]></call-bsh>
        <log level="info" message="===== >>> Set Accounting.properties / create.invoice.per.shipment = Y"/>
        <!-- Step 2 -->
        <field-to-session field="nullField" session-name="orderMode"/>
        <set field="request" from-field="parameters.request"/>
        <set field="response" from-field="parameters.response"/>
        <call-class-method method-name="routeOrderEntry" class-name="org.ofbiz.order.shoppingcart.ShoppingCartEvents" ret-field="result">
            <field field="request" type="javax.servlet.http.HttpServletRequest"/>
            <field field="response" type="javax.servlet.http.HttpServletResponse"/>
        </call-class-method>
        <log level="info" message="===== >>> Event : routeOrderEntry, Response = ${result}"/>
        <entity-one value-field="userLogin" entity-name="UserLogin">
            <field-map field-name="userLoginId" value="admin"/>
        </entity-one>
        <call-bsh><![CDATA[
            request.setParameter("orderMode", "SALES_ORDER");
            request.setParameter("productStoreId", "9000");
            request.setParameter("partyId", "DemoCustomer");
            request.setParameter("currencyUom", "USD");
            session = request.getSession();
            session.setAttribute("userLogin", userLogin);
        ]]></call-bsh>
        <call-class-method method-name="initializeOrderEntry" class-name="org.ofbiz.order.shoppingcart.ShoppingCartEvents" ret-field="result">
            <field field="request" type="javax.servlet.http.HttpServletRequest"/>
            <field field="response" type="javax.servlet.http.HttpServletResponse"/>
        </call-class-method>
        <log level="info" message="===== >>> Event : initializeOrderEntry, Response = ${result}"/>
        <call-class-method method-name="setOrderCurrencyAgreementShipDates" class-name="org.ofbiz.order.shoppingcart.ShoppingCartEvents" ret-field="result">
            <field field="request" type="javax.servlet.http.HttpServletRequest"/>
            <field field="response" type="javax.servlet.http.HttpServletResponse"/>
        </call-class-method>
        <log level="info" message="===== >>> Event : setOrderCurrencyAgreementShipDates, Response = ${result}"/>
        <call-bsh><![CDATA[
            request.setParameter("add_product_id", "GZ-1000");
        ]]></call-bsh>
        <call-class-method method-name="addToCart" class-name="org.ofbiz.order.shoppingcart.ShoppingCartEvents" ret-field="result">
            <field field="request" type="javax.servlet.http.HttpServletRequest"/>
            <field field="response" type="javax.servlet.http.HttpServletResponse"/>
        </call-class-method>
        <log level="info" message="===== >>> Event : addToCart, Response = ${result}"/>
        <call-bsh><![CDATA[
            request.setParameter("checkoutpage", "quick");
            request.setParameter("shipping_contact_mech_id", "9015");
            request.setParameter("shipping_method", "GROUND@UPS");
            request.setParameter("checkOutPaymentId", "EXT_COD");
            request.setParameter("is_gift", "false");
            request.setParameter("may_split", "false");
        ]]></call-bsh>
        <field-to-request field="nullField" request-name="shoppingCart"/>
        <call-class-method method-name="setQuickCheckOutOptions" class-name="org.ofbiz.order.shoppingcart.CheckOutEvents" ret-field="result">
            <field field="request" type="javax.servlet.http.HttpServletRequest"/>
            <field field="response" type="javax.servlet.http.HttpServletResponse"/>
        </call-class-method>
        <log level="info" message="===== >>> Event : setQuickCheckOutOptions, Response = ${result}"/>
        <call-class-method method-name="createOrder" class-name="org.ofbiz.order.shoppingcart.CheckOutEvents" ret-field="result">
            <field field="request" type="javax.servlet.http.HttpServletRequest"/>
            <field field="response" type="javax.servlet.http.HttpServletResponse"/>
        </call-class-method>
        <log level="info" message="===== >>> Event : createOrder, Response = ${result}"/>
        <call-class-method method-name="processPayment" class-name="org.ofbiz.order.shoppingcart.CheckOutEvents" ret-field="result">
            <field field="request" type="javax.servlet.http.HttpServletRequest"/>
            <field field="response" type="javax.servlet.http.HttpServletResponse"/>
        </call-class-method>
        <log level="info" message="===== >>> Event : processPayment, Response = ${result}"/>
        <call-service-asynch service-name="sendOrderConfirmation"/>
        <call-class-method method-name="destroyCart" class-name="org.ofbiz.order.shoppingcart.ShoppingCartEvents" ret-field="result">
            <field field="request" type="javax.servlet.http.HttpServletRequest"/>
            <field field="response" type="javax.servlet.http.HttpServletResponse"/>
        </call-class-method>
        <log level="info" message="===== >>> Event : destroyCart, Response = ${result}"/>
        <!-- Step 3 -->
        <entity-condition list="orderHeaders" entity-name="OrderHeader">
            <condition-expr field-name="orderTypeId" value="SALES_ORDER"/>
            <order-by field-name="-entryDate"/>
        </entity-condition>
        <first-from-list entry="orderHeader" list="orderHeaders"/>
        <call-bsh><![CDATA[
            import org.ofbiz.shipment.packing.PackingSession;
            packingSession = new PackingSession(dispatcher, userLogin);
            packingSession.setPrimaryOrderId(orderHeader.get("orderId"));
            packingSession.setPrimaryShipGroupSeqId("00001");
            parameters.put("packingSession", packingSession);
        ]]></call-bsh>
        <set field="packInput.orderId" from-field="orderHeader.orderId"/>
        <set field="packInput.shipGroupSeqId" value="00001"/>
        <set field="packInput.packingSession" from-field="parameters.packingSession"/>
        <set field="packInput.nextPackageSeq" value="1" type="Integer"/>
        <set field="packInput.userLogin" from-field="userLogin"/>
        <!-- Items -->
        <set field="packInput.selInfo._1" value="Y"/>
        <set field="packInput.pkgInfo._1" value="1"/>
        <set field="packInput.qtyInfo._1" value="1"/>
        <set field="packInput.prdInfo._1" value="GZ-1000"/>
        <set field="packInput.iteInfo._1" value="00001"/>
        <set field="packInput.wgtInfo._1" value="0"/>
        <set field="packInput.numPackagesInfo._1" value="1"/>
        <call-service service-name="packBulkItems" in-map-name="packInput">
            <result-to-field result-name="responseMessage"/>
        </call-service>
        <log level="info" message="===== >>> Service: packBulkItems, Response = ${responseMessage}"/>
        <set-service-fields service-name="completePack" to-map="completePackInput" map="packInput"/>
        <call-service service-name="completePack" in-map-name="completePackInput">
            <result-to-field result-name="shipmentId"/>
        </call-service>
        <log level="info" message="===== >>> Service: completePack, shipmentId = ${shipmentId}"/>
        <!-- Step 4 -->
        <entity-and list="invoices" entity-name="OrderItemBillingAndInvoiceAndItem">
            <field-map field-name="orderId" from-field="orderHeader.orderId"/>
        </entity-and>
        <assert>
            <not><if-empty field="invoices"/></not>
        </assert>
        <check-errors/>
    </simple-method>
    <simple-method method-name="testInvoicePerShipmentSetOrderFalse" short-description="Test Invoice Per Shipment Set Order False" login-required="false">
        <!-- Test Invoice Per Shipment
             Step 1) Create order and set invoicePerShipment=N.
             Step 2) Pack Shipment For Ship Group.
             Step 3) Check invoice should not created.
        -->
        <!-- Step 1 -->
        <field-to-session field="nullField" session-name="orderMode"/>
        <set field="request" from-field="parameters.request"/>
        <set field="response" from-field="parameters.response"/>
        <call-class-method method-name="routeOrderEntry" class-name="org.ofbiz.order.shoppingcart.ShoppingCartEvents" ret-field="result">
            <field field="request" type="javax.servlet.http.HttpServletRequest"/>
            <field field="response" type="javax.servlet.http.HttpServletResponse"/>
        </call-class-method>
        <log level="info" message="===== >>> Event : routeOrderEntry, Response = ${result}"/>
        <entity-one value-field="userLogin" entity-name="UserLogin">
            <field-map field-name="userLoginId" value="admin"/>
        </entity-one>
        <call-bsh><![CDATA[
            request.setParameter("orderMode", "SALES_ORDER");
            request.setParameter("productStoreId", "9000");
            request.setParameter("partyId", "DemoCustomer");
            request.setParameter("currencyUom", "USD");
            session = request.getSession();
            session.setAttribute("userLogin", userLogin);
        ]]></call-bsh>
        <call-class-method method-name="initializeOrderEntry" class-name="org.ofbiz.order.shoppingcart.ShoppingCartEvents" ret-field="result">
            <field field="request" type="javax.servlet.http.HttpServletRequest"/>
            <field field="response" type="javax.servlet.http.HttpServletResponse"/>
        </call-class-method>
        <log level="info" message="===== >>> Event : initializeOrderEntry, Response = ${result}"/>
        <call-class-method method-name="setOrderCurrencyAgreementShipDates" class-name="org.ofbiz.order.shoppingcart.ShoppingCartEvents" ret-field="result">
            <field field="request" type="javax.servlet.http.HttpServletRequest"/>
            <field field="response" type="javax.servlet.http.HttpServletResponse"/>
        </call-class-method>
        <log level="info" message="===== >>> Event : setOrderCurrencyAgreementShipDates, Response = ${result}"/>
        <call-bsh><![CDATA[
            request.setParameter("add_product_id", "GZ-2644");
        ]]></call-bsh>
        <call-class-method method-name="addToCart" class-name="org.ofbiz.order.shoppingcart.ShoppingCartEvents" ret-field="result">
            <field field="request" type="javax.servlet.http.HttpServletRequest"/>
            <field field="response" type="javax.servlet.http.HttpServletResponse"/>
        </call-class-method>
        <log level="info" message="===== >>> Event : addToCart, Response = ${result}"/>
        <call-bsh><![CDATA[
            request.setParameter("checkoutpage", "quick");
            request.setParameter("shipping_contact_mech_id", "9015");
            request.setParameter("shipping_method", "GROUND@UPS");
            request.setParameter("checkOutPaymentId", "EXT_COD");
            request.setParameter("is_gift", "false");
            request.setParameter("may_split", "false");
        ]]></call-bsh>
        <field-to-request field="nullField" request-name="shoppingCart"/>
        <call-class-method method-name="setQuickCheckOutOptions" class-name="org.ofbiz.order.shoppingcart.CheckOutEvents" ret-field="result">
            <field field="request" type="javax.servlet.http.HttpServletRequest"/>
            <field field="response" type="javax.servlet.http.HttpServletResponse"/>
        </call-class-method>
        <log level="info" message="===== >>> Event : setQuickCheckOutOptions, Response = ${result}"/>
        <call-class-method method-name="createOrder" class-name="org.ofbiz.order.shoppingcart.CheckOutEvents" ret-field="result">
            <field field="request" type="javax.servlet.http.HttpServletRequest"/>
            <field field="response" type="javax.servlet.http.HttpServletResponse"/>
        </call-class-method>
        <log level="info" message="===== >>> Event : createOrder, Response = ${result}"/>
        <call-class-method method-name="processPayment" class-name="org.ofbiz.order.shoppingcart.CheckOutEvents" ret-field="result">
            <field field="request" type="javax.servlet.http.HttpServletRequest"/>
            <field field="response" type="javax.servlet.http.HttpServletResponse"/>
        </call-class-method>
        <log level="info" message="===== >>> Event : processPayment, Response = ${result}"/>
        <call-service-asynch service-name="sendOrderConfirmation"/>
        <call-class-method method-name="destroyCart" class-name="org.ofbiz.order.shoppingcart.ShoppingCartEvents" ret-field="result">
            <field field="request" type="javax.servlet.http.HttpServletRequest"/>
            <field field="response" type="javax.servlet.http.HttpServletResponse"/>
        </call-class-method>
        <log level="info" message="===== >>> Event : destroyCart, Response = ${result}"/>
        <entity-condition list="orderHeaders" entity-name="OrderHeader">
            <condition-expr field-name="orderTypeId" value="SALES_ORDER"/>
            <order-by field-name="-entryDate"/>
        </entity-condition>
        <first-from-list entry="orderHeader" list="orderHeaders"/>
        <set field="orderInput.orderId" from-field="orderHeader.orderId"/>
        <set field="orderInput.invoicePerShipment" value="N"/>
        <set field="orderInput.userLogin" from-field="userLogin"/>
        <call-service service-name="updateOrderHeader" in-map-name="orderInput">
            <result-to-field result-name="responseMessage"/>
        </call-service>
        <log level="info" message="===== >>> Service : updateOrderHeader / invoicePerShipment = N,  Response = ${responseMessage}"/>
        <!-- Step 2 -->
        <call-bsh><![CDATA[
            import org.ofbiz.shipment.packing.PackingSession;
            packingSession = new PackingSession(dispatcher, userLogin);
            packingSession.setPrimaryOrderId(orderHeader.get("orderId"));
            packingSession.setPrimaryShipGroupSeqId("00001");
            parameters.put("packingSession", packingSession);
        ]]></call-bsh>
        <set field="packInput.orderId" from-field="orderHeader.orderId"/>
        <set field="packInput.shipGroupSeqId" value="00001"/>
        <set field="packInput.packingSession" from-field="parameters.packingSession"/>
        <set field="packInput.nextPackageSeq" value="1" type="Integer"/>
        <set field="packInput.userLogin" from-field="userLogin"/>
        <!-- Items -->
        <set field="packInput.selInfo._1" value="Y"/>
        <set field="packInput.pkgInfo._1" value="1"/>
        <set field="packInput.qtyInfo._1" value="1"/>
        <set field="packInput.prdInfo._1" value="GZ-2644"/>
        <set field="packInput.iteInfo._1" value="00001"/>
        <set field="packInput.wgtInfo._1" value="0"/>
        <set field="packInput.numPackagesInfo._1" value="1"/>
        <call-service service-name="packBulkItems" in-map-name="packInput">
            <result-to-field result-name="responseMessage"/>
        </call-service>
        <log level="info" message="===== >>> Service: packBulkItems, Response = ${responseMessage}"/>
        <set-service-fields service-name="completePack" to-map="completePackInput" map="packInput"/>
        <call-service service-name="completePack" in-map-name="completePackInput">
            <result-to-field result-name="shipmentId"/>
        </call-service>
        <log level="info" message="===== >>> Service: completePack, shipmentId = ${shipmentId}"/>
        <!-- Step 3 -->
        <entity-and list="invoices" entity-name="OrderItemBillingAndInvoiceAndItem">
            <field-map field-name="orderId" from-field="orderHeader.orderId"/>
        </entity-and>
        <assert>
            <if-empty field="invoices"/>
        </assert>
        <check-errors/>
    </simple-method>
    <simple-method method-name="testInvoicePerShipmentSetOrderTrue" short-description="Test Invoice Per Shipment Set Order True" login-required="false">
        <!-- Test Invoice Per Shipment
             Step 1) Create order and set invoicePerShipment=Y.
             Step 2) Pack Shipment For Ship Group.
             Step 3) Check invoice should created.
        -->
        <!-- Step 1 -->
        <field-to-session field="nullField" session-name="orderMode"/>
        <set field="request" from-field="parameters.request"/>
        <set field="response" from-field="parameters.response"/>
        <call-class-method method-name="routeOrderEntry" class-name="org.ofbiz.order.shoppingcart.ShoppingCartEvents" ret-field="result">
            <field field="request" type="javax.servlet.http.HttpServletRequest"/>
            <field field="response" type="javax.servlet.http.HttpServletResponse"/>
        </call-class-method>
        <log level="info" message="===== >>> Event : routeOrderEntry, Response = ${result}"/>
        <entity-one value-field="userLogin" entity-name="UserLogin">
            <field-map field-name="userLoginId" value="admin"/>
        </entity-one>
        <call-bsh><![CDATA[
            request.setParameter("orderMode", "SALES_ORDER");
            request.setParameter("productStoreId", "9000");
            request.setParameter("partyId", "DemoCustomer");
            request.setParameter("currencyUom", "USD");
            session = request.getSession();
            session.setAttribute("userLogin", userLogin);
        ]]></call-bsh>
        <call-class-method method-name="initializeOrderEntry" class-name="org.ofbiz.order.shoppingcart.ShoppingCartEvents" ret-field="result">
            <field field="request" type="javax.servlet.http.HttpServletRequest"/>
            <field field="response" type="javax.servlet.http.HttpServletResponse"/>
        </call-class-method>
        <log level="info" message="===== >>> Event : initializeOrderEntry, Response = ${result}"/>
        <call-class-method method-name="setOrderCurrencyAgreementShipDates" class-name="org.ofbiz.order.shoppingcart.ShoppingCartEvents" ret-field="result">
            <field field="request" type="javax.servlet.http.HttpServletRequest"/>
            <field field="response" type="javax.servlet.http.HttpServletResponse"/>
        </call-class-method>
        <log level="info" message="===== >>> Event : setOrderCurrencyAgreementShipDates, Response = ${result}"/>
        <call-bsh><![CDATA[
            request.setParameter("add_product_id", "GZ-2644");
        ]]></call-bsh>
        <call-class-method method-name="addToCart" class-name="org.ofbiz.order.shoppingcart.ShoppingCartEvents" ret-field="result">
            <field field="request" type="javax.servlet.http.HttpServletRequest"/>
            <field field="response" type="javax.servlet.http.HttpServletResponse"/>
        </call-class-method>
        <log level="info" message="===== >>> Event : addToCart, Response = ${result}"/>
        <call-bsh><![CDATA[
            request.setParameter("checkoutpage", "quick");
            request.setParameter("shipping_contact_mech_id", "9015");
            request.setParameter("shipping_method", "GROUND@UPS");
            request.setParameter("checkOutPaymentId", "EXT_COD");
            request.setParameter("is_gift", "false");
            request.setParameter("may_split", "false");
        ]]></call-bsh>
        <field-to-request field="nullField" request-name="shoppingCart"/>
        <call-class-method method-name="setQuickCheckOutOptions" class-name="org.ofbiz.order.shoppingcart.CheckOutEvents" ret-field="result">
            <field field="request" type="javax.servlet.http.HttpServletRequest"/>
            <field field="response" type="javax.servlet.http.HttpServletResponse"/>
        </call-class-method>
        <log level="info" message="===== >>> Event : setQuickCheckOutOptions, Response = ${result}"/>
        <call-class-method method-name="createOrder" class-name="org.ofbiz.order.shoppingcart.CheckOutEvents" ret-field="result">
            <field field="request" type="javax.servlet.http.HttpServletRequest"/>
            <field field="response" type="javax.servlet.http.HttpServletResponse"/>
        </call-class-method>
        <log level="info" message="===== >>> Event : createOrder, Response = ${result}"/>
        <call-class-method method-name="processPayment" class-name="org.ofbiz.order.shoppingcart.CheckOutEvents" ret-field="result">
            <field field="request" type="javax.servlet.http.HttpServletRequest"/>
            <field field="response" type="javax.servlet.http.HttpServletResponse"/>
        </call-class-method>
        <log level="info" message="===== >>> Event : processPayment, Response = ${result}"/>
        <call-service-asynch service-name="sendOrderConfirmation"/>
        <call-class-method method-name="destroyCart" class-name="org.ofbiz.order.shoppingcart.ShoppingCartEvents" ret-field="result">
            <field field="request" type="javax.servlet.http.HttpServletRequest"/>
            <field field="response" type="javax.servlet.http.HttpServletResponse"/>
        </call-class-method>
        <log level="info" message="===== >>> Event : destroyCart, Response = ${result}"/>
        <entity-condition list="orderHeaders" entity-name="OrderHeader">
            <condition-expr field-name="orderTypeId" value="SALES_ORDER"/>
            <order-by field-name="-entryDate"/>
        </entity-condition>
        <first-from-list entry="orderHeader" list="orderHeaders"/>
        <set field="orderInput.orderId" from-field="orderHeader.orderId"/>
        <set field="orderInput.invoicePerShipment" value="Y"/>
        <set field="orderInput.userLogin" from-field="userLogin"/>
        <call-service service-name="updateOrderHeader" in-map-name="orderInput">
            <result-to-field result-name="responseMessage"/>
        </call-service>
        <log level="info" message="===== >>> Service : updateOrderHeader / invoicePerShipment = Y,  Response = ${responseMessage}"/>
        <!-- Step 2 -->
        <call-bsh><![CDATA[
            import org.ofbiz.shipment.packing.PackingSession;
            packingSession = new PackingSession(dispatcher, userLogin);
            packingSession.setPrimaryOrderId(orderHeader.get("orderId"));
            packingSession.setPrimaryShipGroupSeqId("00001");
            parameters.put("packingSession", packingSession);
        ]]></call-bsh>
        <set field="packInput.orderId" from-field="orderHeader.orderId"/>
        <set field="packInput.shipGroupSeqId" value="00001"/>
        <set field="packInput.packingSession" from-field="parameters.packingSession"/>
        <set field="packInput.nextPackageSeq" value="1" type="Integer"/>
        <set field="packInput.userLogin" from-field="userLogin"/>
        <!-- Items -->
        <set field="packInput.selInfo._1" value="Y"/>
        <set field="packInput.pkgInfo._1" value="1"/>
        <set field="packInput.qtyInfo._1" value="1"/>
        <set field="packInput.prdInfo._1" value="GZ-2644"/>
        <set field="packInput.iteInfo._1" value="00001"/>
        <set field="packInput.wgtInfo._1" value="0"/>
        <set field="packInput.numPackagesInfo._1" value="1"/>
        <call-service service-name="packBulkItems" in-map-name="packInput">
            <result-to-field result-name="responseMessage"/>
        </call-service>
        <log level="info" message="===== >>> Service: packBulkItems, Response = ${responseMessage}"/>
        <set-service-fields service-name="completePack" to-map="completePackInput" map="packInput"/>
        <call-service service-name="completePack" in-map-name="completePackInput">
            <result-to-field result-name="shipmentId"/>
        </call-service>
        <log level="info" message="===== >>> Service: completePack, shipmentId = ${shipmentId}"/>
        <!-- Step 3 -->
        <entity-and list="invoices" entity-name="OrderItemBillingAndInvoiceAndItem">
            <field-map field-name="orderId" from-field="orderHeader.orderId"/>
        </entity-and>
        <assert>
            <not><if-empty field="invoices"/></not>
        </assert>
        <check-errors/>
    </simple-method>
</simple-methods>
