You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ofbiz.apache.org by as...@apache.org on 2009/06/27 16:15:15 UTC
svn commit: r788976 - in /ofbiz/trunk/applications/product: ./ config/ data/
webapp/catalog/WEB-INF/actions/product/ webapp/catalog/product/
widget/catalog/
Author: ashish
Date: Sat Jun 27 14:15:15 2009
New Revision: 788976
URL: http://svn.apache.org/viewvc?rev=788976&view=rev
Log:
Applied patch from jira issue OFBIZ-2664 (Portlet to show best selling products of the day).
Thanks Chirag for your contribution.
Added:
ofbiz/trunk/applications/product/data/ProductPortletData.xml (with props)
ofbiz/trunk/applications/product/webapp/catalog/WEB-INF/actions/product/BestProducts.groovy (with props)
Modified:
ofbiz/trunk/applications/product/config/ProductUiLabels.xml
ofbiz/trunk/applications/product/ofbiz-component.xml
ofbiz/trunk/applications/product/webapp/catalog/product/ProductForms.xml
ofbiz/trunk/applications/product/widget/catalog/ProductScreens.xml
Modified: ofbiz/trunk/applications/product/config/ProductUiLabels.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/config/ProductUiLabels.xml?rev=788976&r1=788975&r2=788976&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/config/ProductUiLabels.xml (original)
+++ ofbiz/trunk/applications/product/config/ProductUiLabels.xml Sat Jun 27 14:15:15 2009
@@ -7200,6 +7200,9 @@
<value xml:lang="th">ราà¸à¸²à¸à¸·à¹à¸à¸à¸²à¸</value>
<value xml:lang="zh">ä»·æ ¼åºçº¿</value>
</property>
+ <property key="ProductBestSellingProductsOf">
+ <value xml:lang="en">Best Selling Products of</value>
+ </property>
<property key="ProductBeTheFirstToReviewThisProduct">
<value xml:lang="cs">StaÅte se prvnÃm, kdo zhodnotà tetnto výrobek</value>
<value xml:lang="de">Seien Sie der Erste, der dieses Produkt beurteilt!</value>
@@ -13317,6 +13320,9 @@
<value xml:lang="th">à¹à¸¡à¹à¸à¸à¸à¹à¸à¸à¸±à¸à¸à¸±à¸à¸£à¸²à¸à¸²</value>
<value xml:lang="zh">没ææ¾å°ä»·æ ¼è§å</value>
</property>
+ <property key="ProductNoProductFound">
+ <value xml:lang="en">No Product Found</value>
+ </property>
<property key="ProductNoProductsInCategory">
<value xml:lang="de">Keine Produkte in der Kategorie</value>
<value xml:lang="en">No products in category</value>
Added: ofbiz/trunk/applications/product/data/ProductPortletData.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/data/ProductPortletData.xml?rev=788976&view=auto
==============================================================================
--- ofbiz/trunk/applications/product/data/ProductPortletData.xml (added)
+++ ofbiz/trunk/applications/product/data/ProductPortletData.xml Sat Jun 27 14:15:15 2009
@@ -0,0 +1,30 @@
+<?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.
+-->
+<entity-engine-xml>
+
+ <PortletCategory portletCategoryId="PRODUCTS" description="List of Products"/>
+ <PortalPortlet portalPortletId="BestSellingProducts"
+ portletName="List of Days Best Selling Products"
+ screenName="BestSellingProducts"
+ screenLocation="component://product/widget/catalog/ProductScreens.xml"
+ description="List of best selling products of the day"/>
+ <PortletPortletCategory portalPortletId="BestSellingProducts" portletCategoryId="PRODUCTS"/>
+
+</entity-engine-xml>
\ No newline at end of file
Propchange: ofbiz/trunk/applications/product/data/ProductPortletData.xml
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: ofbiz/trunk/applications/product/data/ProductPortletData.xml
------------------------------------------------------------------------------
svn:keywords = Date Rev Author URL Id
Propchange: ofbiz/trunk/applications/product/data/ProductPortletData.xml
------------------------------------------------------------------------------
svn:mime-type = text/xml
Modified: ofbiz/trunk/applications/product/ofbiz-component.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/ofbiz-component.xml?rev=788976&r1=788975&r2=788976&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/ofbiz-component.xml (original)
+++ ofbiz/trunk/applications/product/ofbiz-component.xml Sat Jun 27 14:15:15 2009
@@ -38,6 +38,7 @@
<entity-resource type="data" reader-name="demo" loader="main" location="data/ProductUserDemoData.xml"/>
<entity-resource type="data" reader-name="seed" loader="main" location="data/ApiSchemaDhl.xml"/>
<entity-resource type="data" reader-name="seed" loader="main" location="data/DimensionTypeData.xml"/>
+ <entity-resource type="data" reader-name="seed" loader="main" location="data/ProductPortletData.xml"/>
<service-resource type="model" loader="main" location="servicedef/services.xml"/>
<service-resource type="model" loader="main" location="servicedef/services_facility.xml"/>
Added: ofbiz/trunk/applications/product/webapp/catalog/WEB-INF/actions/product/BestProducts.groovy
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/webapp/catalog/WEB-INF/actions/product/BestProducts.groovy?rev=788976&view=auto
==============================================================================
--- ofbiz/trunk/applications/product/webapp/catalog/WEB-INF/actions/product/BestProducts.groovy (added)
+++ ofbiz/trunk/applications/product/webapp/catalog/WEB-INF/actions/product/BestProducts.groovy Sat Jun 27 14:15:15 2009
@@ -0,0 +1,96 @@
+/*
+ * 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.
+ */
+
+/*
+ * For cases when the ApplyFeaturesFromCategory.ftl is actually supposed to get its list of ProductFeatures from a productFeatureGroupId.
+ * Puts productFeatureGroup and productFeatures which are put of this group into the context. Currently does not break out the features by view size.
+ */
+
+import org.ofbiz.base.util.UtilDateTime;
+import org.ofbiz.entity.condition.EntityCondition;
+import org.ofbiz.entity.condition.EntityOperator;
+
+bestSellingProducts = [];
+exprList = [];
+exprList.add(EntityCondition.makeCondition("orderDate", EntityOperator.GREATER_THAN_EQUAL_TO, UtilDateTime.getDayStart(filterDate)));
+exprList.add(EntityCondition.makeCondition("orderDate", EntityOperator.LESS_THAN_EQUAL_TO, UtilDateTime.getDayEnd(filterDate)));
+exprList.add(EntityCondition.makeCondition("orderTypeId", EntityOperator.EQUALS, "SALES_ORDER"));
+
+orderHeaderList = delegator.findList("OrderHeader", EntityCondition.makeCondition(exprList, EntityOperator.AND), null, null, null, false);
+
+orderHeaderList.each { orderHeader ->
+ exprList = [];
+ exprList.add(EntityCondition.makeCondition("orderId", EntityOperator.EQUALS, orderHeader.orderId));
+ exprList.add(EntityCondition.makeCondition("orderItemTypeId", EntityOperator.EQUALS, "PRODUCT_ORDER_ITEM"));
+ exprList.add(EntityCondition.makeCondition("isPromo", EntityOperator.EQUALS, "N"));
+ orderItemList = delegator.findList("OrderItem", EntityCondition.makeCondition(exprList, EntityOperator.AND), null, null, null, false);
+
+ orderItemList.each { orderItem ->
+ orderItemDetail = [:];
+ qtyOrdered = BigDecimal.ZERO;
+ qtyOrdered += orderItem.quantity;
+ if (orderItem.cancelQuantity) {
+ qtyOrdered -= orderItem.cancelQuantity;
+ }
+ amount = BigDecimal.ZERO;;
+ amount = qtyOrdered * orderItem.unitPrice;
+ inListFlag = false
+
+ bestSellingProducts.each { bestSellingProduct ->
+ if ((bestSellingProduct.productId).equals(orderItem.productId)) {
+ inListFlag = true;
+ bestSellingProduct.amount += amount;
+ bestSellingProduct.qtyOrdered += qtyOrdered;
+ }
+ }
+
+ if (inListFlag == false) {
+ orderItemDetail.productId = orderItem.productId;
+ orderItemDetail.amount = amount;
+ orderItemDetail.qtyOrdered = qtyOrdered;
+ bestSellingProducts.add(orderItemDetail);
+ }
+ }
+}
+
+// Sorting List
+topSellingProducts = [];
+itr = 1;
+while (itr <= 5) {
+ orderItemDetail = [:];
+ bestSellingProducts.each { bestSellingProduct ->
+ if (!(orderItemDetail.isEmpty())) {
+ if (bestSellingProduct.qtyOrdered > orderItemDetail.qtyOrdered) {
+ orderItemDetail = bestSellingProduct;
+ }
+ if (bestSellingProduct.qtyOrdered == orderItemDetail.qtyOrdered && bestSellingProduct.amount > orderItemDetail.amount) {
+ orderItemDetail = bestSellingProduct;
+ }
+ } else {
+ orderItemDetail = bestSellingProduct;
+ }
+ }
+ if (!orderItemDetail.isEmpty()) {
+ topSellingProducts.add(orderItemDetail);
+ bestSellingProducts.remove(orderItemDetail);
+ }
+ itr++;
+}
+
+context.bestSellingProducts= topSellingProducts;
\ No newline at end of file
Propchange: ofbiz/trunk/applications/product/webapp/catalog/WEB-INF/actions/product/BestProducts.groovy
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: ofbiz/trunk/applications/product/webapp/catalog/WEB-INF/actions/product/BestProducts.groovy
------------------------------------------------------------------------------
svn:keywords = Date Rev Author URL Id
Propchange: ofbiz/trunk/applications/product/webapp/catalog/WEB-INF/actions/product/BestProducts.groovy
------------------------------------------------------------------------------
svn:mime-type = text/plain
Modified: ofbiz/trunk/applications/product/webapp/catalog/product/ProductForms.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/webapp/catalog/product/ProductForms.xml?rev=788976&r1=788975&r2=788976&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/webapp/catalog/product/ProductForms.xml (original)
+++ ofbiz/trunk/applications/product/webapp/catalog/product/ProductForms.xml Sat Jun 27 14:15:15 2009
@@ -1887,4 +1887,14 @@
</field>
<field name="submitButton" title="${uiLabelMap.CommonAdd}" widget-style="smallSubmit"><submit button-type="button"/></field>
</form>
+
+ <form name="ListBestProduct" type="list" paginate="false" list-name="bestSellingProducts" view-size="5"
+ header-row-style="header-row" odd-row-style="alternate-row" default-table-style="basic-table hover-bar">
+ <row-actions>
+ <entity-one entity-name="Product" value-field="product"/>
+ </row-actions>
+ <field name="productName"><display description="${product.productName}"/></field>
+ <field name="amount"><display/></field>
+ <field name="qtyOrdered"><display/></field>
+ </form>
</forms>
Modified: ofbiz/trunk/applications/product/widget/catalog/ProductScreens.xml
URL: http://svn.apache.org/viewvc/ofbiz/trunk/applications/product/widget/catalog/ProductScreens.xml?rev=788976&r1=788975&r2=788976&view=diff
==============================================================================
--- ofbiz/trunk/applications/product/widget/catalog/ProductScreens.xml (original)
+++ ofbiz/trunk/applications/product/widget/catalog/ProductScreens.xml Sat Jun 27 14:15:15 2009
@@ -1816,4 +1816,31 @@
</widgets>
</section>
</screen>
+
+ <screen name="BestSellingProducts">
+ <section>
+ <actions>
+ <set field="filterDate" type="Timestamp" from-field="nowTimestamp"/>
+ <set field="date" type="Date" from-field="nowTimestamp"/>
+ <script location="component://product/webapp/catalog/WEB-INF/actions/product/BestProducts.groovy"/>
+ </actions>
+ <widgets>
+ <screenlet title="${uiLabelMap.ProductBestSellingProductsOf} ${date}">
+ <section>
+ <condition>
+ <not>
+ <if-empty field="bestSellingProducts"/>
+ </not>
+ </condition>
+ <widgets>
+ <include-form name="ListBestProduct" location="component://product/webapp/catalog/product/ProductForms.xml"/>
+ </widgets>
+ <fail-widgets>
+ <label style="h3" text="${uiLabelMap.ProductNoProductFound}"></label>
+ </fail-widgets>
+ </section>
+ </screenlet>
+ </widgets>
+ </section>
+ </screen>
</screens>