ilscipio/scipio-erp

View on GitHub
applications/marketing/widget/sfa/AnalyticsScreens.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">
    
    <!-- SCIPIO: Common actions, common to both find form and results -->
    <screen name="CommonAnalyticsActions">
        <actions>
            <script lang="groovy"><![CDATA[
                productStores = delegator.findByAnd("ProductStore", null, ["productStoreId", "storeName"], true);
                context.productStores = productStores;
                
                // Instead of listing all, we will list only those that can actually be converted...
                //context.currencies = delegator.findByAnd("Uom", ["uomTypeId": "CURRENCY_MEASURE"], ["uomId"], true);
                context.currencies = org.ofbiz.common.uom.UomWorker.getConvertibleUoms(delegator, dispatcher, 
                    Boolean.TRUE, ["uomTypeId": "CURRENCY_MEASURE"], ["uomId"], true, null, true);

                context.allowedOrderStatus = org.ofbiz.base.util.UtilMisc.toList("ORDER_APPROVED", "ORDER_SENT", "ORDER_COMPLETED")
            ]]></script>
        </actions>
    </screen>
    
    <screen name="AnalyticsSales">
        <section>
            <actions>
                <set field="titleProperty" value="MarketingAnalyticsSales"/>
                <set field="activeSubMenuItem" value="AnalyticsSales"/>
                
                <include-screen-actions name="CommonAnalyticsActions" />
                
                <set field="chartIntervalScope" value="${parameters.intervalScope}" default-value="month"/> <!-- day|week|month|year -->
                <set field="chartIntervalCount" value="6"/>
                
                <entity-condition entity-name="Enumeration" list="salesChannelList">
                    <condition-expr field-name="enumTypeId" operator="equals" value="ORDER_SALES_CHANNEL"/>
                </entity-condition>

                <entity-condition entity-name="StatusItem" list="orderStatusList">
                    <condition-expr field-name="statusId" operator="in" from-field="allowedOrderStatus"/>
                </entity-condition>

                <!-- NOTE: we MUST run this early for any parameter processing -->
                <include-screen-actions name="AnalyticsSalesStatsActions" />
            </actions>
            <widgets>
                <decorator-screen name="CommonAnalyticsDecorator" location="${parameters.mainDecoratorLocation}">
                    <decorator-section name="body">
                        <container style="${styles.grid_row}">
                            <container style="${styles.grid_large}4 ${styles.grid_cell}">
                                <platform-specific><html><html-template location="component://marketing/webapp/sfa/analytics/FindAnalyticsSales.ftl"/></html></platform-specific>
                            </container>
                            <container style="${styles.grid_large}8 ${styles.grid_cell}">
                                <include-screen name="AnalyticsSalesStats"/>
                            </container>
                        </container>
                    </decorator-section>
                </decorator-screen>
            </widgets>
        </section>
    </screen>
    <screen name="AnalyticsSalesStatsActions">
        <actions>
            <!-- double-include guard -->
            <if>
                <condition>
                    <not><if-true field="ranAnalyticsSalesStatsActions"/></not>
                </condition>
                <then>
                    <set field="chartType" value="line"/>
                    <set field="chartDatasets" value="1"/>
                    <set field="chartLibrary" value="chart"/>
                    <set field="chartIntervalScope" value="${parameters.intervalScope}" default-value="month"/> <!-- day|week|month|year -->
                    <script location="component://marketing/webapp/marketing/WEB-INF/actions/analytics/SalesChart.groovy"/>
                    
                    <set field="ranAnalyticsSalesStatsActions" type="Boolean" value="true"/>
                </then>
            </if>
        </actions>
    </screen>
    <screen name="AnalyticsSalesStats">
        <section>
            <actions>
                <include-screen-actions name="AnalyticsSalesStatsActions" />
                <!-- 
                <set field="totalsDesc" value="${orderStats.totalOrderCount} ${uiLabelMap.OrderOrders}; ${orderStats.totalGrandTotal} ${currencyUomId}" />-->
                <set field="totalsDesc" value="${uiLabelMap.OrderOrders}: ${orderStats.totalOrderCount}; ${uiLabelMap.OrderTotal}: ${orderStats.totalGrandTotal?currency(${context.currencyUomId})}" />
                
                <if>
                    <condition>
                        <if-empty field="productStoreId"/>
                    </condition>
                    <then>
                        <set field="chartTitle" value="${totalsDesc}"/>
                    </then>
                    <else>
                        <set field="chartTitle" value="${productStoreId} ${totalsDesc}"/>
                    </else>
                </if>
                <set field="xlabel" value="${uiLabelMap.OrderGrandTotal} (${currencyUomId})"/><!-- ${uiLabelMap.ProductSales} -->
                <set field="ylabel" value="${uiLabelMap.CommonWeek}"/>
                <set field="label1" value="${uiLabelMap.OrderGrandTotal} (${currencyUomId})"/><!-- ${uiLabelMap.ProductProductsSold} -->
                <set field="label2" value="${uiLabelMap.OrderOrders}"/>
            </actions>
            <widgets>
                <platform-specific><html><html-template location="component://marketing/webapp/sfa/analytics/AnalyticsSalesChart.ftl"/></html></platform-specific>
            </widgets>
      </section>
    </screen>
    
    <screen name="AnalyticsTracking">
        <section>
            <actions>
                <set field="titleProperty" value="MarketingAnalytics"/>
                <set field="activeSubMenuItem" value="AnalyticsTracking"/>
                
                <include-screen-actions name="CommonAnalyticsActions" />
                
                <set field="chartIntervalScope" value="${parameters.intervalScope}" default-value="week"/> <!-- day|week|month|year -->
                <set field="chartIntervalCount" value="6"/>
                
                <!-- <script location="component://marketing/webapp/marketing/WEB-INF/actions/analytics/AnalyticsTracking.groovy"/> -->
                <entity-condition list="marketingCampaignList" entity-name="MarketingCampaign" filter-by-date="true"/>
                <entity-condition entity-name="TrackingCode" list="trackingCodeList">
                    <condition-expr field-name="marketingCampaignId" operator="equals" from-field="parameters.marketingCampaignId"/>
                </entity-condition>
                
                <!-- NOTE: we MUST run this early for any parameter processing -->
                <include-screen-actions name="AnalyticsTrackingStatsActions" />
            </actions>
            <widgets>
                <decorator-screen name="CommonAnalyticsDecorator" location="${parameters.mainDecoratorLocation}">
                    <decorator-section name="body">
                        <container style="${styles.grid_row}">
                            <container style="${styles.grid_large}4 ${styles.grid_cell}">
                                <platform-specific><html><html-template location="component://marketing/webapp/sfa/analytics/FindAnalyticsTracking.ftl"/></html></platform-specific>
                            </container>
                            <container style="${styles.grid_large}8 ${styles.grid_cell}">
                                <include-screen name="AnalyticsTrackingStats"/>
                            </container>
                        </container>
                    </decorator-section>
                </decorator-screen>
            </widgets>
        </section>
    </screen>
    <screen name="AnalyticsTrackingStatsActions">
        <actions>
            <!-- double-include guard -->
            <if>
                <condition>
                    <not><if-true field="ranAnalyticsTrackingStatsActions"/></not>
                </condition>
                <then>
                    <set field="chartType" value="line"/>
                    <set field="chartData" value="week"/>
                    <set field="chartDatasets" value="2"/>
                    <set field="chartLibrary" value="chart"/>
                    <set field="chartIntervalScope" value="${parameters.intervalScope}" default-value="week"/> <!-- day|week|month|year -->
                    <script location="component://marketing/webapp/marketing/WEB-INF/actions/analytics/TrackingCodeChart.groovy"/>
                    
                    <set field="ranAnalyticsTrackingStatsActions" type="Boolean" value="true"/>
                </then>
            </if>
        </actions>
    </screen>
    <screen name="AnalyticsTrackingStats">
        <section>
            <actions>
                <include-screen-actions name="AnalyticsTrackingStatsActions" />
                
                <set field="totalsDesc" value="${uiLabelMap.OrderOrders}: ${trackingStats.totalOrders}; ${uiLabelMap.PartyVisits}: ${trackingStats.totalVisits}" />

                <if>
                    <condition>
                        <if-empty field="productStoreId"/>
                    </condition>
                    <then>
                        <set field="chartTitle" value="${totalsDesc}"/>
                    </then>
                    <else>
                        <set field="chartTitle" value="${productStoreId} ${totalsDesc}"/>
                    </else>
                </if>
                
                <set field="xlabel" value="${uiLabelMap.ProductSales}"/>
                <set field="ylabel" value="${uiLabelMap.CommonWeek}"/>
                <set field="label1" value="${uiLabelMap.PartyVisits}"/>
                <set field="label2" value="${uiLabelMap.OrderOrders}"/>
            </actions>
            <widgets>
                <platform-specific><html><html-template location="component://marketing/webapp/sfa/analytics/AnalyticsTrackingChart.ftl"/></html></platform-specific>
            </widgets>
        </section>
    </screen>

</screens>