ilscipio/scipio-erp

View on GitHub
applications/shop/widget/OrderScreens.xml

Summary

Maintainability
Test Coverage
<?xml version="1.0" encoding="UTF-8"?>
<!--
This file is subject to the terms and conditions defined in the
files 'LICENSE' and 'NOTICE', which are part of this source
code package.
-->

<screens xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="http://ofbiz.apache.org/dtds/widget-screen.xsd">

    <!-- Included Screens -->
    <screen name="anonymoustrail">
        <section>
            <actions>
                <property-map resource="ShopUiLabels" map-name="uiLabelMap" global="true"/>
                <property-map resource="EcommerceUiLabels" map-name="uiLabelMap" global="true"/>
                <script location="component://shop/webapp/shop/WEB-INF/actions/order/AnonymousTrail.groovy"/>
            </actions>
            <widgets>
                <platform-specific><html><html-template location="component://shop/webapp/shop/order/anonymoustrail.ftl"/></html></platform-specific>
            </widgets>
        </section>
    </screen>

    <screen name="genericaddress">
        <section>
            <widgets>
                <platform-specific><html><html-template location="component://shop/webapp/shop/order/genericaddress.ftl"/></html></platform-specific>
            </widgets>
        </section>
    </screen>

    <screen name="orderheader">
        <section>
            <widgets>
                <platform-specific><html><html-template location="component://shop/webapp/shop/order/orderheader.ftl"/></html></platform-specific>
            </widgets>
        </section>
    </screen>

    <screen name="orderitems">
        <section>
            <actions>
                <script location="component://shop/webapp/shop/WEB-INF/actions/order/OrderItems.groovy"/>
            </actions>
            <widgets>
                <platform-specific><html><html-template location="component://shop/webapp/shop/order/orderitems.ftl"/></html></platform-specific>
            </widgets>
        </section>
    </screen>
    
    <!-- SCIPIO: Original: component://order/widget/ordermgr/OrderEntryOrderScreens.xml#customertaxinfo -->
    <screen name="customertaxinfo">
        <!-- meant to be included, generally through a screens.render type of thing -->
        <section>
            <actions>
                <set field="customerTaxInfoTemplateLocation" value="component://shop/webapp/shop/order/customertaxinfo.ftl" />
            </actions>
            <widgets>
                <include-screen name="customertaxinfoimpl" location="component://order/widget/ordermgr/OrderEntryOrderScreens.xml" />
            </widgets>
        </section>
    </screen>

    <!-- SCIPIO: widget to display the current progress -->
    <screen name="CheckoutProgressFull">
        <section>
            <actions>
                <set field="checkoutMode" from-field="checkoutMode" default-value="primary" />
                <set field="activeStep" from-field="activeStep" default-value="cart" global="true" type="String" /><!-- the current step -->  
            </actions>
            <widgets>
                <platform-specific>
                    <html><html-template location="component://shop/webapp/shop/order/checkoutprogressfull.ftl"/></html>
                </platform-specific>
           </widgets>
        </section>
    </screen>

    <!-- SCIPIO: Superseded by CheckoutProgressFull
    <screen name="anonymousCheckoutLinks">
        <section>
            <actions>
                <script location="component://shop/webapp/shop/WEB-INF/actions/order/AnonymousCheckoutLinks.groovy"/>
            </actions>
            <widgets>
                <platform-specific><html><html-template location="component://shop/webapp/shop/order/anonymousCheckoutLinks.ftl"/></html></platform-specific>
            </widgets>
        </section>
    </screen>-->

    <!-- =========== Top-Level and Stand-Alone Screens =========== -->

    <!-- SCIPIO: Base common decorator for all checkout pages of all types
        Currently all types are implemented in this single controller so may be able to determine dynamically,
        but each checkout type (full vs quick vs onepage) could also have its own that extends this instead (e.g. the stock anonymousCheckoutDecorator that was removed) -->
    <screen name="CommonCheckoutDecorator">
        <section>
            <actions>
                <!-- TODO: This needs to be a "smart" decorator that can adapt depending on which
                    checkout process is used -->
                <script location="component://shop/webapp/shop/WEB-INF/actions/order/CheckoutCommon.groovy" />
                <!-- By default, checkout screens require at least a userIsKnown check (some might need userHasAccount), unless
                    noted here -->
                <set field="checkoutAllowAnonUnknown" from-field="checkoutAllowAnonUnknown" type="Boolean" default-value="false" />
                <set field="checkoutAllowEmptyCart" from-field="checkoutAllowEmptyCart" type="Boolean" default-value="false" />
                <!-- These are also set in main-decorator, but need to get values early -->
                <script location="component://shop/webapp/shop/WEB-INF/actions/common/CommonUserChecks.groovy"/>
            </actions>
            <widgets>
                <section>
                    <condition>
                        <or>
                            <if-true field="checkoutAllowAnonUnknown" />
                            <if-true field="userIsKnown" />
                        </or>
                    </condition>
                    <widgets>
                        <section>
                            <condition>
                                <or>
                                    <if-true field="checkoutAllowEmptyCart" />
                                    <if-compare field="cartSize" type="Integer" operator="greater" value="0"/>
                                </or>
                            </condition>
                            <widgets>
                                <decorator-screen name="CommonShopAppDecorator" location="${parameters.mainDecoratorLocation}">
                                    <!-- NOTE: override-by-auto-include="true" allows decorators to override this pre-body manually if they need. -->
                                    <decorator-section name="pre-body" use-when="${context.checkoutType == 'full'}" override-by-auto-include="true">
                                        <section>
                                            <condition>
                                                <and>
                                                    <if-compare field="checkoutType" operator="equals" value="full" />
                                                </and>
                                            </condition>
                                            <widgets>
                                                <include-screen name="CheckoutProgressFull"/>
                                            </widgets>
                                        </section>
                                    </decorator-section>
                                    <decorator-section name="body">
                                        <decorator-section-include name="body"/>
                                    </decorator-section>
                                </decorator-screen>
                            </widgets>
                            <fail-widgets>
                                <decorator-screen name="CommonShopAppDecorator" location="${parameters.mainDecoratorLocation}">
                                    <decorator-section name="body">
                                        <label style="common-msg-error" text="${uiLabelMap.EcommerceYourShoppingCartEmpty}."/>
                                        <container>
                                            <link target="main" text="${uiLabelMap.EcommerceContinueShopping}" style="${styles.link_nav_cancel}"/>
                                        </container>
                                    </decorator-section>
                                </decorator-screen>
                            </fail-widgets>
                        </section>
                    </widgets>
                    <fail-widgets>
                        <decorator-screen name="CommonShopAppDecorator" location="${parameters.mainDecoratorLocation}">
                            <decorator-section name="body">
                                <label style="common-msg-error-perm" text="${uiLabelMap.ShopViewPermissionError}"/>
                            </decorator-section>
                        </decorator-screen>
                    </fail-widgets>
                </section>
            </widgets>
        </section>
    </screen>

    <screen name="custsettings">
        <section>
            <actions>
                <set field="rightbarScreenName" value="rightbar"/>
                <set field="MainColumnStyle" value="rightonly"/>
                <set field="parameters.formNameValue" value="custsetupform" global="true"/>

                <set field="titleProperty" value="PageTitleShippingInformation"/>
                <script location="component://shop/webapp/shop/WEB-INF/actions/order/CustSettings.groovy"/>
                
                <set field="checkoutType" value="full" />
                <set field="checkoutMode" value="legacy-anon" /> <!-- SCIPIO: FIXME?: This is currently forced... -->
                <set field="activeStep" value="customer" />
                <!-- SCIPIO: NOTE: This is the only screen in the anon checkout that doesn't need userIsKnown check -->
                <set field="checkoutAllowAnonUnknown" type="Boolean" value="true" />
            </actions>
            <widgets>
                <decorator-screen name="CommonCheckoutDecorator">
                    <decorator-section name="body">
                        <platform-specific><html><html-template location="component://shop/webapp/shop/order/custsettings.ftl"/></html></platform-specific>
                    </decorator-section>
                </decorator-screen>
            </widgets>
        </section>
    </screen>

    <screen name="shipsettings">
        <section>
            <actions>
                <set field="rightbarScreenName" value="rightbar"/>
                <set field="MainColumnStyle" value="rightonly"/>
                <set field="parameters.formNameValue" value="shipsetupform" global="true"/>

                <set field="titleProperty" value="PageTitleShippingInformation"/>
                <script location="component://shop/webapp/shop/WEB-INF/actions/order/ShipSettings.groovy"/>
                
                <set field="checkoutType" value="full" />
                <set field="checkoutMode" value="legacy-anon" /><!-- SCIPIO: FIXME?: This is currently forced... -->
                <set field="activeStep" value="shippingAddress" />
            </actions>
            <widgets>
                <decorator-screen name="CommonCheckoutDecorator">
                    <decorator-section name="body">
                        <platform-specific><html><html-template location="component://shop/webapp/shop/order/shipsettings.ftl"/></html></platform-specific>
                    </decorator-section>
                </decorator-screen>
            </widgets>
        </section>
    </screen>

    <screen name="optionsettings">
        <section>
            <actions>
                <set field="rightbarScreenName" value="rightbar"/>
                <set field="MainColumnStyle" value="rightonly"/>
                <set field="parameters.formNameValue" value="optsetupform" global="true"/>

                <set field="titleProperty" value="PageTitleShippingOptions"/>
                <script location="component://shop/webapp/shop/WEB-INF/actions/order/OptionSettings.groovy"/>
                
                <set field="checkoutType" value="full" />
                <set field="checkoutMode" value="legacy-anon" /><!-- SCIPIO: FIXME?: This is currently forced... -->
                <set field="activeStep" value="shippingOptions" />
            </actions>
            <widgets>
                <decorator-screen name="CommonCheckoutDecorator">
                    <decorator-section name="body">
                        <platform-specific><html><html-template location="component://shop/webapp/shop/order/optionsettings.ftl"/></html></platform-specific>
                    </decorator-section>
                </decorator-screen>
            </widgets>
        </section>
    </screen>

    <screen name="paymentoptions">
        <section>
            <actions>
                <set field="rightbarScreenName" value="rightbar"/>
                <set field="MainColumnStyle" value="rightonly"/>
                <set field="parameters.formNameValue" value="paymentoptions" global="true"/>

                <set field="titleProperty" value="PageTitleBillingInformation"/>
                <script location="component://shop/webapp/shop/WEB-INF/actions/order/PaymentOptions.groovy"/>
                <script location="component://order/webapp/ordermgr/WEB-INF/actions/entry/StorePaymentOptions.groovy"/>
                
                <set field="checkoutType" value="full" />
                <set field="checkoutMode" value="legacy-anon" /><!-- SCIPIO: FIXME?: This is currently forced... -->
                <set field="activeStep" value="billing" />
            </actions>
            <widgets>
                <decorator-screen name="CommonCheckoutDecorator">
                    <decorator-section name="body">
                        <platform-specific><html><html-template location="component://shop/webapp/shop/order/paymentoptions.ftl"/></html></platform-specific>
                    </decorator-section>
                </decorator-screen>
            </widgets>
        </section>
    </screen>

    <!-- SCIPIO: TODO? Merge with paymentoptions? -->
    <screen name="paymentinformation">
        <section>
            <actions>
                <set field="rightbarScreenName" value="rightbar"/>
                <set field="MainColumnStyle" value="rightonly"/>
                <set field="parameters.formNameValue" value="billsetupform"/>

                <set field="titleProperty" value="PageTitleBillingInformation"/>
                <script location="component://shop/webapp/shop/WEB-INF/actions/order/PaymentInformation.groovy"/>
                <script location="component://order/webapp/ordermgr/WEB-INF/actions/entry/StorePaymentOptions.groovy"/>
                
                <set field="checkoutType" value="full" />
                <set field="checkoutMode" value="legacy-anon" /><!-- SCIPIO: FIXME?: This is currently forced... -->
                <set field="activeStep" value="billingInfo" />
            </actions>
            <widgets>
                <decorator-screen name="CommonCheckoutDecorator">
                    <decorator-section name="body">
                        <platform-specific><html><html-template location="component://shop/webapp/shop/order/paymentinformation.ftl"/></html></platform-specific>
                    </decorator-section>
                </decorator-screen>
            </widgets>
        </section>
    </screen>

    <screen name="orderreview">
        <section>
            <actions>
                <set field="titleProperty" value="PageTitleCheckoutReview"/>
                <set field="parameters.formNameValue" value="orderreview" global="true"/>
                <script location="component://shop/webapp/shop/WEB-INF/actions/order/CheckoutReview.groovy"/>
                
                <set field="checkoutType" value="full" />
                <set field="checkoutMode" value="legacy-anon" /><!-- SCIPIO: FIXME?: This is currently forced... -->
                <set field="activeStep" value="orderReview" />
            </actions>
            <widgets>
                <decorator-screen name="CommonCheckoutDecorator">
                    <decorator-section name="body">
                        <platform-specific><html><html-template location="component://shop/webapp/shop/order/checkoutreview.ftl"/></html></platform-specific>
                    </decorator-section>
                </decorator-screen>
            </widgets>
        </section>
    </screen>

    <screen name="billsettings">
        <section>
            <actions>
                <set field="rightbarScreenName" value="rightbar"/>
                <set field="MainColumnStyle" value="rightonly"/>

                <set field="titleProperty" value="PageTitleBillingInformation"/>
                <set field="anonymoustrailScreen" value="component://shop/widget/OrderScreens.xml#anonymoustrail"/>
                <script location="component://shop/webapp/shop/WEB-INF/actions/order/BillSettings.groovy"/>
                <script location="component://order/webapp/ordermgr/WEB-INF/actions/entry/StorePaymentOptions.groovy"/>

                <set field="checkoutType" value="full" />
                <!-- SCIPIO: WARN: This screen was actually used by both primary and legacy-anon (which is why
                    decorator would need to find a way to detect automatically)... -->
                <set field="checkoutMode" value="primary" /><!-- SCIPIO: FIXME?: This is currently forced... -->
                <set field="activeStep" value="billing" />
            </actions>
            <widgets>
                <decorator-screen name="CommonCheckoutDecorator">
                    <decorator-section name="body">
                        <platform-specific><html><html-template location="component://shop/webapp/shop/order/billsettings.ftl"/></html></platform-specific>
                    </decorator-section>
                </decorator-screen>
            </widgets>
        </section>
    </screen>

    <!-- SCIPIO: DEPRECATED (REMOVED): This is the "quick" checkout, currently unsupported and unmaintained;
        OnePageCheckout is the one you want.
        Leave for reference (if need to prevent access, comment controller view-map instead) -->
    <screen name="checkoutoptions">
        <section>
            <actions>
                <set field="titleProperty" value="PageTitleCheckoutOptions"/>

                <script location="component://order/webapp/ordermgr/WEB-INF/actions/entry/CheckoutPayment.groovy"/>
                <script location="component://order/webapp/ordermgr/WEB-INF/actions/entry/CheckoutOptions.groovy"/>
                <script location="component://order/webapp/ordermgr/WEB-INF/actions/entry/StorePaymentOptions.groovy"/>

                <set field="checkoutType" value="quick" />
                <set field="checkoutMode" value="primary" /><!-- SCIPIO: FIXME?: This is currently forced... -->
                <set field="checkoutAllowAnonUnknown" type="Boolean" value="true" />
            </actions>
            <widgets>
                <decorator-screen name="CommonCheckoutDecorator">
                    <decorator-section name="body">
                        <!-- SCIPIO: 2018-11: REMOVED: the file pointed to here is now geared to orderentry only, so if you use this for some reason, you'll
                            have to copy and modify it (possibly use an old copy from project history)
                        <platform-specific><html><html-template location="component://order/webapp/ordermgr/entry/checkoutoptions.ftl"/></html></platform-specific>-->
                    </decorator-section>
                </decorator-screen>
            </widgets>
        </section>
    </screen>

    <screen name="checkoutshippingaddress">
        <section>
            <actions>
                <!-- SCIPIO: FIXME: This screen groovy must be reviewed so that it doesn't permit access to shipping options
                    if the checkout process has not reached this point or the data was invalidated by modification of a prior step. 
                    It is NOT sufficient to do this in events due to view overrides. -->
                <set field="rightbarScreenName" value="rightbar"/>
                <set field="MainColumnStyle" value="rightonly"/>

                <set field="titleProperty" value="PageTitleCheckoutOptions"/>
                
                <!-- SCIPIO: CustSettings script is new, required because of inline anon user creation support -->
                <script location="component://shop/webapp/shop/WEB-INF/actions/order/CustSettings.groovy"/>
                
                <script location="component://order/webapp/ordermgr/WEB-INF/actions/entry/CheckoutShippingAddress.groovy"/>

                <set field="checkoutType" value="full" />
                <set field="checkoutMode" value="primary" /><!-- SCIPIO: FIXME?: This is currently forced... -->
                <set field="activeStep" value="shippingAddress" />
                <!-- SCIPIO: NOTE: This is the only screen in the regular full checkout that does not need userIsKnown check -->
                <set field="checkoutAllowAnonUnknown" type="Boolean" value="true" />
            </actions>
            <widgets>
                <decorator-screen name="CommonCheckoutDecorator">
                    <decorator-section name="body">
                        <platform-specific><html><html-template location="component://shop/webapp/shop/order/checkoutshippingaddress.ftl"/></html></platform-specific>
                    </decorator-section>
                </decorator-screen>
            </widgets>
        </section>
    </screen>

    <screen name="checkoutshippingoptions">
        <section>
            <actions>
                <!-- SCIPIO: FIXME: This screen groovy must be reviewed so that it doesn't permit access to shipping options
                    if the checkout process has not reached this point or the data was invalidated by modification of a prior step. 
                    It is NOT sufficient to do this in events due to view overrides. -->
                <set field="rightbarScreenName" value="rightbar"/>
                <set field="MainColumnStyle" value="rightonly"/>

                <set field="titleProperty" value="PageTitleCheckoutOptions"/>
                <script location="component://shop/webapp/shop/WEB-INF/actions/order/CheckoutShippingOptions.groovy"/>

                <set field="checkoutType" value="full" />
                <set field="checkoutMode" value="primary" /><!-- SCIPIO: FIXME?: This is currently forced... -->
                <set field="activeStep" value="shippingOptions" />
            </actions>
            <widgets>
                <decorator-screen name="CommonCheckoutDecorator">
                    <decorator-section name="body">
                        <platform-specific><html><html-template location="component://shop/webapp/shop/order/checkoutshippingoptions.ftl"/></html></platform-specific>
                    </decorator-section>
                </decorator-screen>
            </widgets>
        </section>
    </screen>

    <screen name="splitship">
        <section>
            <actions>
                <set field="titleProperty" value="PageTitleSplitItemsForShipping"/>
                <script location="component://order/webapp/ordermgr/WEB-INF/actions/entry/SplitShip.groovy"/>

                <set field="checkoutType" value="full" />
                <set field="checkoutMode" value="primary" /><!-- SCIPIO: FIXME?: This is currently forced... -->
                <set field="activeStep" value="shippingAddress" />
            </actions>
            <widgets>
                <decorator-screen name="CommonCheckoutDecorator">
                    <decorator-section name="body">
                        <platform-specific><html><html-template location="component://shop/webapp/shop/order/splitship.ftl"/></html></platform-specific>
                    </decorator-section>
                </decorator-screen>
            </widgets>
        </section>
    </screen>

    <!-- SCIPIO: Imported from ordermgr -->
    <screen name="checkoutpayment">
        <section>
            <actions>
                <!-- SCIPIO: FIXME: This screen groovy must be reviewed so that it doesn't permit access to shipping options
                    if the checkout process has not reached this point or the data was invalidated by modification of a prior step. 
                    It is NOT sufficient to do this in events due to view overrides. -->
                <set field="rightbarScreenName" value="rightbar"/>
                <set field="MainColumnStyle" value="rightonly"/>

                <set field="titleProperty" value="PageTitleCheckoutOptions"/>
                <script location="component://order/webapp/ordermgr/WEB-INF/actions/entry/CheckoutPayment.groovy"/>
                <script location="component://order/webapp/ordermgr/WEB-INF/actions/entry/StorePaymentOptions.groovy"/>
                
                <set field="checkoutType" value="full" />
                <set field="checkoutMode" value="primary" /><!-- SCIPIO: FIXME?: This is currently forced... -->
                <set field="activeStep" value="billing" />
            </actions>
            <widgets>
                <decorator-screen name="CommonCheckoutDecorator">
                    <decorator-section name="body">
                        <platform-specific><html><html-template location="component://shop/webapp/shop/order/checkoutpayment.ftl"/></html></platform-specific>
                    </decorator-section>
                </decorator-screen>
            </widgets>
        </section>
    </screen>

    <screen name="checkoutreview">
        <section>
            <actions>
                <set field="titleProperty" value="PageTitleCheckoutReview"/>
                <set field="parameters.formNameValue" value="orderreview" global="true"/>
                <script location="component://shop/webapp/shop/WEB-INF/actions/order/CheckoutReview.groovy"/>

                <set field="checkoutType" value="full" />
                <set field="checkoutMode" value="primary" /><!-- SCIPIO: FIXME?: This is currently forced... -->
                <set field="activeStep" value="orderReview" />
            </actions>
            <widgets>
                <decorator-screen name="CommonCheckoutDecorator">
                    <decorator-section name="body">
                         <platform-specific><html><html-template location="component://shop/webapp/shop/order/checkoutreview.ftl"/></html></platform-specific>
                    </decorator-section>
                </decorator-screen>
            </widgets>
        </section>
    </screen>

    <screen name="ordercomplete">
        <section>
            <actions>
                <!--<set field="titleProperty" value="PageTitleOrderSummary"/>-->
                <set field="titleProperty" value="EcommerceOrderConfirmation"/>
                <script location="component://shop/webapp/shop/WEB-INF/actions/order/OrderStatus.groovy"/>
            </actions>
            <widgets>
                <decorator-screen name="CommonShopAppDecorator" location="${parameters.mainDecoratorLocation}">
                    <decorator-section name="body">
                        <section>
                            <condition>
                                <if-true field="userIsKnown" />
                            </condition>
                            <widgets>
                                <platform-specific><html><html-template location="component://shop/webapp/shop/order/ordercomplete.ftl"/></html></platform-specific>
                            </widgets>
                            <fail-widgets>
                                <label style="common-msg-error-perm" text="${uiLabelMap.ShopViewPermissionError}"/>
                            </fail-widgets>
                        </section>
                    </decorator-section>
                </decorator-screen>
            </widgets>
        </section>
    </screen>

    <screen name="orderhistory">
        <section>
            <actions>
                <set field="rightbarScreenName" value="rightbar"/>
                <set field="MainColumnStyle" value="rightonly"/>

                <set field="titleProperty" value="PageTitleOrderHistory"/>
                <script location="component://shop/webapp/shop/WEB-INF/actions/order/OrderHistory.groovy"/>
            </actions>
            <widgets>
                <decorator-screen name="CommonShopAppDecorator" location="${parameters.mainDecoratorLocation}">
                    <decorator-section name="body">
                        <section>
                            <condition>
                                <if-true field="userHasAccount" />
                            </condition>
                            <widgets>
                                <platform-specific><html><html-template location="component://shop/webapp/shop/order/orderhistory.ftl"/></html></platform-specific>
                            </widgets>
                            <fail-widgets>
                                <label style="common-msg-error-perm" text="${uiLabelMap.ShopViewPermissionError}"/>
                            </fail-widgets>
                        </section>
                    </decorator-section>
                </decorator-screen>
            </widgets>
        </section>
    </screen>
    
    <screen name="orderdownloads">
        <section>
            <actions>
                <set field="rightbarScreenName" value="rightbar"/>
                <set field="MainColumnStyle" value="rightonly"/>

                <set field="titleProperty" value="EcommerceDownloadsAvailableTitle"/><!--OrderDigitalProductFiles-->
                <script location="component://shop/webapp/shop/WEB-INF/actions/order/OrderHistory.groovy"/>
            </actions>
            <widgets>
                <decorator-screen name="CommonShopAppDecorator" location="${parameters.mainDecoratorLocation}">
                    <decorator-section name="body">
                        <section>
                            <condition>
                                <!-- SCIPIO: NOTE: this should probably really be userHasAccount, but leaving for now,
                                    because otherwise anon user can't download anything (even though maybe login should
                                    be required for those kinds of products) -->
                                <if-true field="userIsKnown" />
                            </condition>
                            <widgets>
                                <screenlet title="${uiLabelMap.EcommerceDownloadsAvailableTitle}"><!-- SCIPIO: Added missing title -->
                                    <include-screen name="orderdownloadscontent" />
                                </screenlet>
                            </widgets>
                            <fail-widgets>
                                <label style="common-msg-error-perm" text="${uiLabelMap.ShopViewPermissionError}"/>
                            </fail-widgets>
                        </section>
                    </decorator-section>
                </decorator-screen>
            </widgets>
        </section>
    </screen>
    
    <screen name="orderdownloadscontent">
        <section>
            <widgets>
                <platform-specific><html><html-template location="component://shop/webapp/shop/order/orderdownloads.ftl"/></html></platform-specific>
            </widgets>
        </section>
    </screen>

    <screen name="orderstatus">
        <section>
            <actions>
                <set field="rightbarScreenName" value="rightbar"/>
                <set field="MainColumnStyle" value="rightonly"/>

                <set field="maySelectItems" value="Y"/>
                <script location="component://shop/webapp/shop/WEB-INF/actions/order/OrderStatus.groovy"/>
            </actions>
            <widgets>
                <decorator-screen name="CommonShopAppDecorator" location="${parameters.mainDecoratorLocation}">
                    <decorator-section name="body">
                        <section>
                            <condition>
                                <if-true field="userIsKnown" />
                            </condition>
                            <widgets>
                                <platform-specific><html><html-template location="component://shop/webapp/shop/order/orderstatus.ftl"/></html></platform-specific>
                            </widgets>
                            <fail-widgets>
                                <label style="common-msg-error-perm" text="${uiLabelMap.ShopViewPermissionError}"/>
                            </fail-widgets>
                        </section>
                    </decorator-section>
                </decorator-screen>
            </widgets>
        </section>
    </screen>

    <screen name="orderviewonly">
        <section>
            <actions>
            </actions>
            <widgets>
                <include-screen name="ordercomplete" />
            </widgets>
        </section>
    </screen>
    
    <!-- SCIPIO: NOTE: This is informal - not necessarily a valid invoice like the PDF -->
    <screen name="orderprint">
        <section>
            <actions>
                <!--<set field="titleProperty" value="PageTitleOrderSummary"/>-->
                <set field="titleProperty" value="EcommerceOrderConfirmation"/>
                <set field="printable" type="Boolean" value="true" />
                <script location="component://shop/webapp/shop/WEB-INF/actions/order/OrderStatus.groovy"/>
            </actions>
            <widgets>
                <!-- FIXME? This isn't the best decorator for this -->
                <decorator-screen name="CommonEmptyDecorator" location="${parameters.mainDecoratorLocation}">
                    <decorator-section name="body">
                        <section>
                            <condition>
                                <if-true field="userIsKnown" />
                            </condition>
                            <widgets>
                                <platform-specific><html><html-template location="component://shop/webapp/shop/order/ordercomplete.ftl"/></html></platform-specific>
                            </widgets>
                            <fail-widgets>
                                <label style="p" text="${uiLabelMap.ShopViewPermissionError}"/>
                            </fail-widgets>
                        </section>
                    </decorator-section>
                </decorator-screen>
            </widgets>
        </section>
    </screen>
    

    <screen name="requestreturn">
        <section>
            <actions>
                <set field="rightbarScreenName" value="rightbar"/>
                <set field="MainColumnStyle" value="rightonly"/>

                <set field="titleProperty" value="PageTitleRequestReturn"/>
                <script location="component://shop/webapp/shop/WEB-INF/actions/order/RequestReturn.groovy"/>
            </actions>
            <widgets>
                <decorator-screen name="CommonShopAppDecorator" location="${parameters.mainDecoratorLocation}">
                    <decorator-section name="body">
                        <section>
                            <condition>
                                <and>
                                    <if-true field="userHasAccount"/>
                                    <if-true field="hasReturnPermission"/>
                                </and>
                            </condition>
                            <widgets>
                                <platform-specific><html><html-template location="component://shop/webapp/shop/order/requestreturn.ftl"/></html></platform-specific>
                            </widgets>
                            <fail-widgets>
                                <label style="common-msg-error-perm" text="${uiLabelMap.ShopViewPermissionError}"/>
                            </fail-widgets>
                        </section>
                    </decorator-section>
                </decorator-screen>
            </widgets>
        </section>
    </screen>

    <!-- Anonymous Checkout 3 steps entry -->

    <screen name="quickAnonOrderHeader">
        <section>
            <widgets>
                <platform-specific><html><html-template location="component://shop/webapp/shop/order/quickAnonOrderHeader.ftl"/></html></platform-specific>
            </widgets>
        </section>
    </screen>


    <screen name="quickAnonCheckoutLinks">
        <section>
            <actions>
                <script location="component://shop/webapp/shop/WEB-INF/actions/order/QuickAnonCheckoutLinks.groovy"/>
            </actions>
            <widgets>
                <platform-specific><html><html-template location="component://shop/webapp/shop/order/quickAnonCheckoutLinks.ftl"/></html></platform-specific>
            </widgets>
        </section>
    </screen>

    <!-- SCIPIO: "quick" checkout is currently unsupported, but leave here for reference... -->
    <screen name="quickAnonCheckoutDecorator">
        <section>
            <actions>
                <script location="component://shop/webapp/shop/WEB-INF/actions/order/QuickAnonCheckoutLinks.groovy"/>
                <set field="checkoutType" value="quick" />
                <set field="checkoutMode" value="legacy-anon" />
                <set field="checkoutAllowAnonUnknown" type="Boolean" value="true" />
            </actions>
            <widgets>
                <decorator-screen name="CommonCheckoutDecorator">
                    <decorator-section name="pre-body">
                        <include-screen name="quickAnonCheckoutLinks"/>
                    </decorator-section>
                    <decorator-section name="body">
                        <decorator-section-include name="body"/>
                    </decorator-section>
                </decorator-screen>
            </widgets>
        </section>
    </screen>

    <screen name="quickAnonCustSettings">
        <section>
            <actions>
                <set field="rightbarScreenName" value="rightbar"/>
                <set field="MainColumnStyle" value="rightonly"/>
                <set field="parameters.formNameValue" value="quickAnonCustSetupForm" global="true"/>

                <set field="titleProperty" value="PageTitleShippingInformation"/>
                <set field="layoutSettings.javaScripts[+0]" value="/shop/images/quickAnonCustSettings.js" global="true"/>
                <script location="component://shop/webapp/shop/WEB-INF/actions/order/QuickAnonCustSettings.groovy"/>
            </actions>
            <widgets>
                <decorator-screen name="quickAnonCheckoutDecorator">
                    <decorator-section name="body">
                        <platform-specific><html><html-template location="component://shop/webapp/shop/order/quickAnonCustSettings.ftl"/></html></platform-specific>
                    </decorator-section>
                </decorator-screen>
            </widgets>
        </section>
    </screen>

    <screen name="quickAnonOptionSettings">
        <section>
            <actions>
                <property-map resource="ShopUiLabels" map-name="uiLabelMap" global="true"/>
                <property-map resource="EcommerceUiLabels" map-name="uiLabelMap" global="true"/>
                <property-map resource="ProductUiLabels" map-name="uiLabelMap" global="true"/>
                <property-map resource="AccountingUiLabels" map-name="uiLabelMap" global="true"/>
                <property-map resource="PartyUiLabels" map-name="uiLabelMap" global="true"/>
                <property-map resource="OrderUiLabels" map-name="uiLabelMap" global="true"/>
                <property-map resource="ContentUiLabels" map-name="uiLabelMap" global="true"/>
                <property-map resource="CommonUiLabels" map-name="uiLabelMap" global="true"/>

                <!--set field="parameters.formNameValue" value="quickAnonOptSetupForm" global="true"/-->

                <set field="titleProperty" value="PageTitleShippingOptions"/>
                <script location="component://shop/webapp/shop/WEB-INF/actions/order/QuickAnonOptionSettings.groovy"/>
            </actions>
            <widgets>
                <platform-specific><html><html-template location="component://shop/webapp/shop/order/quickAnonOptionSettings.ftl"/></html></platform-specific>
            </widgets>
        </section>
    </screen>

    <screen name="quickAnonPaymentInformation">
        <section>
            <actions>
                <set field="titleProperty" value="PageTitleBillingInformation"/>
                <script location="component://shop/webapp/shop/WEB-INF/actions/order/QuickAnonPaymentInformation.groovy"/>
                <script location="component://order/webapp/ordermgr/WEB-INF/actions/entry/StorePaymentOptions.groovy"/>
            </actions>
            <widgets>
               <platform-specific><html><html-template location="component://shop/webapp/shop/order/quickAnonPaymentInformation.ftl"/></html></platform-specific>
            </widgets>
        </section>
    </screen>

    <screen name="quickAnonOrderReview">
        <section>
            <actions>
                <set field="titleProperty" value="PageTitleCheckoutReview"/>
                <set field="parameters.formNameValue" value="quickAnonOrderReview" global="true"/>
                <script location="component://shop/webapp/shop/WEB-INF/actions/order/CheckoutReview.groovy"/>
            </actions>
            <widgets>
                <decorator-screen name="quickAnonCheckoutDecorator">
                    <decorator-section name="body">
                        <platform-specific><html><html-template location="component://shop/webapp/shop/order/quickAnonCheckoutReview.ftl"/></html></platform-specific>
                    </decorator-section>
                </decorator-screen>
            </widgets>
        </section>
    </screen>

    <screen name="quickAnonCcInfo">
        <section>
            <actions>
                <!-- base/top/specific map first, then more common map added for shared labels -->
                <property-map resource="ShopUiLabels" map-name="uiLabelMap" global="true"/>
                <property-map resource="EcommerceUiLabels" map-name="uiLabelMap" global="true"/>
                <property-map resource="ProductUiLabels" map-name="uiLabelMap" global="true"/>
                <property-map resource="AccountingUiLabels" map-name="uiLabelMap" global="true"/>
                <property-map resource="PartyUiLabels" map-name="uiLabelMap" global="true"/>
                <property-map resource="OrderUiLabels" map-name="uiLabelMap" global="true"/>
                <property-map resource="ContentUiLabels" map-name="uiLabelMap" global="true"/>
                <property-map resource="CommonUiLabels" map-name="uiLabelMap" global="true"/>
                <script location="component://shop/webapp/shop/WEB-INF/actions/order/QuickAnonPaymentInformation.groovy"/>
            </actions>
            <widgets>
                <platform-specific><html><html-template location="component://common/webcommon/includes/messages.ftl"/></html></platform-specific>
                <platform-specific><html><html-template location="component://shop/webapp/shop/order/ccinfo.ftl"/></html></platform-specific>
            </widgets>
        </section>
    </screen>

    <screen name="quickAnonEftInfo">
        <section>
            <actions>
                <!-- base/top/specific map first, then more common map added for shared labels -->
                <property-map resource="ShopUiLabels" map-name="uiLabelMap" global="true"/>
                <property-map resource="EcommerceUiLabels" map-name="uiLabelMap" global="true"/>
                <property-map resource="ProductUiLabels" map-name="uiLabelMap" global="true"/>
                <property-map resource="AccountingUiLabels" map-name="uiLabelMap" global="true"/>
                <property-map resource="PartyUiLabels" map-name="uiLabelMap" global="true"/>
                <property-map resource="OrderUiLabels" map-name="uiLabelMap" global="true"/>
                <property-map resource="ContentUiLabels" map-name="uiLabelMap" global="true"/>
                <property-map resource="CommonUiLabels" map-name="uiLabelMap" global="true"/>
                <script location="component://shop/webapp/shop/WEB-INF/actions/order/QuickAnonPaymentInformation.groovy"/>
            </actions>
            <widgets>
                <platform-specific><html><html-template location="component://common/webcommon/includes/messages.ftl"/></html></platform-specific>
                <platform-specific><html><html-template location="component://shop/webapp/shop/order/eftinfo.ftl"/></html></platform-specific>
            </widgets>
        </section>
    </screen>

    <screen name="quickAnonGcInfo">
        <section>
            <actions>
                <!-- base/top/specific map first, then more common map added for shared labels -->
                <property-map resource="ShopUiLabels" map-name="uiLabelMap" global="true"/>
                <property-map resource="EcommerceUiLabels" map-name="uiLabelMap" global="true"/>
                <property-map resource="ProductUiLabels" map-name="uiLabelMap" global="true"/>
                <property-map resource="AccountingUiLabels" map-name="uiLabelMap" global="true"/>
                <property-map resource="PartyUiLabels" map-name="uiLabelMap" global="true"/>
                <property-map resource="OrderUiLabels" map-name="uiLabelMap" global="true"/>
                <property-map resource="ContentUiLabels" map-name="uiLabelMap" global="true"/>
                <property-map resource="CommonUiLabels" map-name="uiLabelMap" global="true"/>
                <script location="component://shop/webapp/shop/WEB-INF/actions/order/QuickAnonPaymentInformation.groovy"/>
            </actions>
            <widgets>
              <platform-specific><html><html-template location="component://common/webcommon/includes/messages.ftl"/></html></platform-specific>
              <platform-specific><html><html-template location="component://shop/webapp/shop/order/gcinfo.ftl"/></html></platform-specific>
            </widgets>
        </section>
    </screen>
    <screen name="quickAnonOrderItems">
        <section>
            <actions>
                <!-- base/top/specific map first, then more common map added for shared labels -->
                <property-map resource="ShopUiLabels" map-name="uiLabelMap" global="true"/>
                <property-map resource="EcommerceUiLabels" map-name="uiLabelMap" global="true"/>
                <property-map resource="ProductUiLabels" map-name="uiLabelMap" global="true"/>
                <property-map resource="AccountingUiLabels" map-name="uiLabelMap" global="true"/>
                <property-map resource="PartyUiLabels" map-name="uiLabelMap" global="true"/>
                <property-map resource="OrderUiLabels" map-name="uiLabelMap" global="true"/>
                <property-map resource="ContentUiLabels" map-name="uiLabelMap" global="true"/>
                <property-map resource="CommonUiLabels" map-name="uiLabelMap" global="true"/>
                <script location="component://shop/webapp/shop/WEB-INF/actions/order/CheckoutReview.groovy"/>
                <script location="component://shop/webapp/shop/WEB-INF/actions/order/QuickAnonPaymentInformation.groovy"/>
                <script location="component://shop/webapp/shop/WEB-INF/actions/order/OrderItems.groovy"/>
            </actions>
            <widgets>
                <platform-specific><html><html-template location="component://shop/webapp/shop/order/orderitems.ftl"/></html></platform-specific>
            </widgets>
        </section>
    </screen>

    <screen name="OnePageCheckout">
        <section>
            <actions>
                <set field="titleProperty" value="EcommerceOnePageCheckout"/>
                <set field="layoutSettings.javaScriptsFooter[]" value="/shop/images/checkoutProcess.js" global="true"/>
                <set field="layoutSettings.javaScriptsFooter[]" value="/ordermgr-js/geoAutoCompleter.js" global="true"/>
                <script location="component://shop/webapp/shop/WEB-INF/actions/customer/EditShippingAddress.groovy"/>
                <script location="component://shop/webapp/shop/WEB-INF/actions/customer/EditBillingAddress.groovy"/>
                <script location="component://shop/webapp/shop/WEB-INF/actions/customer/EditEmailAndTelecomNumber.groovy"/>
                <script location="component://shop/webapp/shop/WEB-INF/actions/customer/OnePageCheckoutOptions.groovy"/>
                
                <set field="checkoutType" value="onepage" />
                <set field="checkoutAllowAnonUnknown" type="Boolean" value="true" />
            </actions>
            <widgets>
                <decorator-screen name="CommonCheckoutDecorator">
                    <decorator-section name="body">
                        <!-- SCIPIO: NOTE: Supports full anon -->
                        <platform-specific><html><html-template location="component://shop/webapp/shop/order/OnePageCheckoutProcess.ftl"/></html></platform-specific>
                    </decorator-section>
                </decorator-screen>
            </widgets>
        </section>
    </screen>
</screens>