<?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="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 accounting.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 -->
        <script>groovy:
            import org.apache.ofbiz.base.util.UtilProperties;
            UtilProperties.setPropertyValueInMemory("accounting", "create.invoice.per.shipment", "N");
        </script>
        <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.apache.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 entity-name="UserLogin" value-field="userLogin">
            <field-map field-name="userLoginId" value="admin"/>
        </entity-one>
        <script>groovy:
            request.setParameter("orderMode", "SALES_ORDER");
            request.setParameter("productStoreId", "9000");
            request.setParameter("partyId", "DemoCustomer");
            request.setParameter("currencyUom", "USD");
            session = request.getSession();
            session.setAttribute("userLogin", userLogin);
        </script>
        <call-class-method method-name="initializeOrderEntry" class-name="org.apache.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.apache.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}"/>
        <script>groovy:
            request.setParameter("add_product_id", "GZ-1000");
        </script>
        <call-class-method method-name="addToCart" class-name="org.apache.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}"/>
        <script>groovy:
            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");
        </script>
        <field-to-request field="nullField" request-name="shoppingCart"/>
        <call-class-method method-name="setQuickCheckOutOptions" class-name="org.apache.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.apache.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.apache.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.apache.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 entity-name="OrderHeader" list="orderHeaders">
            <condition-expr field-name="orderTypeId" value="SALES_ORDER"/>
            <order-by field-name="-entryDate"/>
        </entity-condition>
        <first-from-list list="orderHeaders" entry="orderHeader"/>
        <log level="info" message="xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx : ${orderHeader}"/>
        <script>groovy:
            import org.apache.ofbiz.shipment.packing.PackingSession;
            packingSession = new PackingSession(dispatcher, userLogin);
            packingSession.setPrimaryOrderId(orderHeader.get("orderId"));
            packingSession.setPrimaryShipGroupSeqId("00001");
            parameters.put("packingSession", packingSession);
        </script>
        <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" map="packInput" to-map="completePackInput"/>
        <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 entity-name="OrderItemBillingAndInvoiceAndItem" list="invoices">
            <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 accounting.properties file.
             Step 2) Create order and approve order.
             Step 3) Pack Shipment For Ship Group.
             Step 4) Check invoice should created.
        -->
        <!-- Step 1 -->
        <script>groovy:
            import org.apache.ofbiz.base.util.UtilProperties;
            UtilProperties.setPropertyValueInMemory("accounting", "create.invoice.per.shipment", "Y");
        </script>
        <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.apache.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 entity-name="UserLogin" value-field="userLogin">
            <field-map field-name="userLoginId" value="admin"/>
        </entity-one>
        <script>groovy:
            request.setParameter("orderMode", "SALES_ORDER");
            request.setParameter("productStoreId", "9000");
            request.setParameter("partyId", "DemoCustomer");
            request.setParameter("currencyUom", "USD");
            session = request.getSession();
            session.setAttribute("userLogin", userLogin);
        </script>
        <call-class-method method-name="initializeOrderEntry" class-name="org.apache.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.apache.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}"/>
        <script>groovy:
            request.setParameter("add_product_id", "GZ-1000");
        </script>
        <call-class-method method-name="addToCart" class-name="org.apache.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}"/>
        <script>groovy:
            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");
        </script>
        <field-to-request field="nullField" request-name="shoppingCart"/>
        <call-class-method method-name="setQuickCheckOutOptions" class-name="org.apache.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.apache.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.apache.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.apache.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 entity-name="OrderHeader" list="orderHeaders">
            <condition-expr field-name="orderTypeId" value="SALES_ORDER"/>
            <order-by field-name="-entryDate"/>
        </entity-condition>
        <first-from-list list="orderHeaders" entry="orderHeader"/>
        <script>groovy:
            import org.apache.ofbiz.shipment.packing.PackingSession;
            packingSession = new PackingSession(dispatcher, userLogin);
            packingSession.setPrimaryOrderId(orderHeader.get("orderId"));
            packingSession.setPrimaryShipGroupSeqId("00001");
            parameters.put("packingSession", packingSession);
        </script>
        <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" map="packInput" to-map="completePackInput"/>
        <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 entity-name="OrderItemBillingAndInvoiceAndItem" list="invoices">
            <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.apache.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 entity-name="UserLogin" value-field="userLogin">
            <field-map field-name="userLoginId" value="admin"/>
        </entity-one>
        <script>groovy:
            request.setParameter("orderMode", "SALES_ORDER");
            request.setParameter("productStoreId", "9000");
            request.setParameter("partyId", "DemoCustomer");
            request.setParameter("currencyUom", "USD");
            session = request.getSession();
            session.setAttribute("userLogin", userLogin);
        </script>
        <call-class-method method-name="initializeOrderEntry" class-name="org.apache.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.apache.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}"/>
        <script>groovy:
            request.setParameter("add_product_id", "GZ-2644");
        </script>
        <call-class-method method-name="addToCart" class-name="org.apache.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}"/>
        <script>groovy:
            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");
        </script>
        <field-to-request field="nullField" request-name="shoppingCart"/>
        <call-class-method method-name="setQuickCheckOutOptions" class-name="org.apache.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.apache.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.apache.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.apache.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 entity-name="OrderHeader" list="orderHeaders">
            <condition-expr field-name="orderTypeId" value="SALES_ORDER"/>
            <order-by field-name="-entryDate"/>
        </entity-condition>
        <first-from-list list="orderHeaders" entry="orderHeader"/>
        <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 -->
        <script>groovy:
            import org.apache.ofbiz.shipment.packing.PackingSession;
            packingSession = new PackingSession(dispatcher, userLogin);
            packingSession.setPrimaryOrderId(orderHeader.get("orderId"));
            packingSession.setPrimaryShipGroupSeqId("00001");
            parameters.put("packingSession", packingSession);
        </script>
        <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" map="packInput" to-map="completePackInput"/>
        <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 entity-name="OrderItemBillingAndInvoiceAndItem" list="invoices">
            <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.apache.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 entity-name="UserLogin" value-field="userLogin">
            <field-map field-name="userLoginId" value="admin"/>
        </entity-one>
        <script>groovy:
            request.setParameter("orderMode", "SALES_ORDER");
            request.setParameter("productStoreId", "9000");
            request.setParameter("partyId", "DemoCustomer");
            request.setParameter("currencyUom", "USD");
            session = request.getSession();
            session.setAttribute("userLogin", userLogin);
        </script>
        <call-class-method method-name="initializeOrderEntry" class-name="org.apache.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.apache.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}"/>
        <script>groovy:
            request.setParameter("add_product_id", "GZ-2644");
        </script>
        <call-class-method method-name="addToCart" class-name="org.apache.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}"/>
        <script>groovy:
            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");
        </script>
        <field-to-request field="nullField" request-name="shoppingCart"/>
        <call-class-method method-name="setQuickCheckOutOptions" class-name="org.apache.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.apache.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.apache.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.apache.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 entity-name="OrderHeader" list="orderHeaders">
            <condition-expr field-name="orderTypeId" value="SALES_ORDER"/>
            <order-by field-name="-entryDate"/>
        </entity-condition>
        <first-from-list list="orderHeaders" entry="orderHeader"/>
        <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 -->
        <script>groovy:
            import org.apache.ofbiz.shipment.packing.PackingSession;
            packingSession = new PackingSession(dispatcher, userLogin);
            packingSession.setPrimaryOrderId(orderHeader.get("orderId"));
            packingSession.setPrimaryShipGroupSeqId("00001");
            parameters.put("packingSession", packingSession);
        </script>
        <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" map="packInput" to-map="completePackInput"/>
        <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 entity-name="OrderItemBillingAndInvoiceAndItem" list="invoices">
            <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>
