svn commit: r451399 - in /incubator/ofbiz/trunk/applications: order/entitydef/ order/webapp/ordermgr/WEB-INF/actions/reports/ order/widget/ordermgr/ product/src/org/ofbiz/product/inventory/

Previous Topic Next Topic
 
classic Classic list List threaded Threaded
1 message Options
Reply | Threaded
Open this post in threaded view
|

svn commit: r451399 - in /incubator/ofbiz/trunk/applications: order/entitydef/ order/webapp/ordermgr/WEB-INF/actions/reports/ order/widget/ordermgr/ product/src/org/ofbiz/product/inventory/

sichen
Author: sichen
Date: Fri Sep 29 12:37:41 2006
New Revision: 451399

URL: http://svn.apache.org/viewvc?view=rev&rev=451399
Log:
Fix issues with open order item report and 'Required for SO' value in orderview.  Introduced a new view-entity to report quantities ordered, issued and open gropued by order item.  Renamed the view entity grouped by product to be consistent.  Simplified the report bsh and InventoryWorker methods.  These fixes are dependent on a the <complex-alias> COALESCE issue OFBIZ-336.

Modified:
    incubator/ofbiz/trunk/applications/order/entitydef/entitygroup.xml
    incubator/ofbiz/trunk/applications/order/entitydef/entitymodel_view.xml
    incubator/ofbiz/trunk/applications/order/webapp/ordermgr/WEB-INF/actions/reports/OpenOrderItemsReport.bsh
    incubator/ofbiz/trunk/applications/order/widget/ordermgr/ReportForms.xml
    incubator/ofbiz/trunk/applications/order/widget/ordermgr/ReportScreens.xml
    incubator/ofbiz/trunk/applications/product/src/org/ofbiz/product/inventory/InventoryWorker.java

Modified: incubator/ofbiz/trunk/applications/order/entitydef/entitygroup.xml
URL: http://svn.apache.org/viewvc/incubator/ofbiz/trunk/applications/order/entitydef/entitygroup.xml?view=diff&rev=451399&r1=451398&r2=451399
==============================================================================
--- incubator/ofbiz/trunk/applications/order/entitydef/entitygroup.xml (original)
+++ incubator/ofbiz/trunk/applications/order/entitydef/entitygroup.xml Fri Sep 29 12:37:41 2006
@@ -62,7 +62,8 @@
     <entity-group group="org.ofbiz" entity="OrderItemShipGrpInvRes" />
     <entity-group group="org.ofbiz" entity="OrderItemShipGrpInvResAndItem" />
     <entity-group group="org.ofbiz" entity="OrderItemShipGrpInvResAndItemLocation" />
-    <entity-group group="org.ofbiz" entity="OrderItemIssuanceGroupByProduct" />
+    <entity-group group="org.ofbiz" entity="OrderItemQuantityReportGroupByItem" />
+    <entity-group group="org.ofbiz" entity="OrderItemQuantityReportGroupByProduct" />
     <entity-group group="org.ofbiz" entity="OrderItemPriceInfo" />
     <entity-group group="org.ofbiz" entity="OrderItemRole" />
     <entity-group group="org.ofbiz" entity="OrderItemShipGroup" />

Modified: incubator/ofbiz/trunk/applications/order/entitydef/entitymodel_view.xml
URL: http://svn.apache.org/viewvc/incubator/ofbiz/trunk/applications/order/entitydef/entitymodel_view.xml?view=diff&rev=451399&r1=451398&r2=451399
==============================================================================
--- incubator/ofbiz/trunk/applications/order/entitydef/entitymodel_view.xml (original)
+++ incubator/ofbiz/trunk/applications/order/entitydef/entitymodel_view.xml Fri Sep 29 12:37:41 2006
@@ -734,10 +734,50 @@
         <key-map field-name="inventoryItemId"/>
       </relation>
     </view-entity>
-    <view-entity entity-name="OrderItemIssuanceGroupByProduct"
+    <view-entity entity-name="OrderItemQuantityReportGroupByItem"
             package-name="org.ofbiz.order.order"
             never-cache="true"
-            title="Reports quantity issued per product across OrderItems">
+            title="Reports quantity ordered, issued and open by item for OrderItems.">
+      <member-entity entity-alias="OH" entity-name="OrderHeader"/>
+      <member-entity entity-alias="OI" entity-name="OrderItem"/>
+      <member-entity entity-alias="II" entity-name="ItemIssuance"/>
+      <alias entity-alias="OH" name="productStoreId" group-by="false"/>
+      <alias entity-alias="OH" name="orderId" group-by="true"/>
+      <alias entity-alias="OH" name="orderTypeId" group-by="false"/>
+      <alias entity-alias="OH" name="orderStatusId" field="statusId" group-by="false"/>
+      <alias entity-alias="OH" name="orderDate" group-by="true"/>
+      <alias entity-alias="OI" name="orderItemSeqId" group-by="true"/>
+      <alias entity-alias="OI" name="orderItemStatusId" field="statusId" group-by="false"/>
+      <alias entity-alias="OI" name="productId" group-by="true"/>
+      <alias entity-alias="OI" name="itemDescription" group-by="true"/>
+      <alias entity-alias="OI" name="shipBeforeDate" group-by="true"/>
+      <alias entity-alias="OI" name="shipAfterDate" group-by="true"/>
+      <alias entity-alias="OI" name="quantityOrdered" function="sum">
+          <complex-alias operator="-">
+              <complex-alias-field entity-alias="OI" field="quantity" default-value="0"/>
+              <complex-alias-field entity-alias="OI" field="cancelQuantity" default-value="0"/>
+          </complex-alias>
+      </alias>
+      <alias entity-alias="II" name="quantityIssued" field="quantity" function="sum"/>
+      <alias entity-alias="OI" name="quantityOpen" function="sum">
+          <complex-alias operator="-">
+              <complex-alias-field entity-alias="OI" field="quantity" default-value="0"/>
+              <complex-alias-field entity-alias="OI" field="cancelQuantity" default-value="0"/>
+              <complex-alias-field entity-alias="II" field="quantity" default-value="0"/>
+          </complex-alias>
+      </alias>
+      <view-link entity-alias="OI" rel-entity-alias="OH">
+        <key-map field-name="orderId"/>
+      </view-link>
+      <view-link entity-alias="OI" rel-entity-alias="II" rel-optional="true">
+        <key-map field-name="orderId"/>
+        <key-map field-name="orderItemSeqId"/>
+      </view-link>
+    </view-entity>
+    <view-entity entity-name="OrderItemQuantityReportGroupByProduct"
+            package-name="org.ofbiz.order.order"
+            never-cache="true"
+            title="Reports quantity ordered, issued and open by product for OrderItems.">
       <member-entity entity-alias="OH" entity-name="OrderHeader"/>
       <member-entity entity-alias="OI" entity-name="OrderItem"/>
       <member-entity entity-alias="II" entity-name="ItemIssuance"/>
@@ -745,11 +785,24 @@
       <alias entity-alias="OH" name="orderStatusId" field="statusId" group-by="false"/>
       <alias entity-alias="OI" name="orderItemStatusId" field="statusId" group-by="false"/>
       <alias entity-alias="OI" name="productId" group-by="true"/>
-      <alias entity-alias="II" name="quantity" function="sum"/>
+      <alias entity-alias="OI" name="quantityOrdered" function="sum">
+          <complex-alias operator="-">
+              <complex-alias-field entity-alias="OI" field="quantity" default-value="0"/>
+              <complex-alias-field entity-alias="OI" field="cancelQuantity" default-value="0"/>
+          </complex-alias>
+      </alias>
+      <alias entity-alias="II" name="quantityIssued" field="quantity" function="sum"/>
+      <alias entity-alias="OI" name="quantityOpen" function="sum">
+          <complex-alias operator="-">
+              <complex-alias-field entity-alias="OI" field="quantity" default-value="0"/>
+              <complex-alias-field entity-alias="OI" field="cancelQuantity" default-value="0"/>
+              <complex-alias-field entity-alias="II" field="quantity" default-value="0"/>
+          </complex-alias>
+      </alias>
       <view-link entity-alias="OI" rel-entity-alias="OH">
         <key-map field-name="orderId"/>
       </view-link>
-      <view-link entity-alias="OI" rel-entity-alias="II">
+      <view-link entity-alias="OI" rel-entity-alias="II" rel-optional="true">
         <key-map field-name="orderId"/>
         <key-map field-name="orderItemSeqId"/>
       </view-link>

Modified: incubator/ofbiz/trunk/applications/order/webapp/ordermgr/WEB-INF/actions/reports/OpenOrderItemsReport.bsh
URL: http://svn.apache.org/viewvc/incubator/ofbiz/trunk/applications/order/webapp/ordermgr/WEB-INF/actions/reports/OpenOrderItemsReport.bsh?view=diff&rev=451399&r1=451398&r2=451399
==============================================================================
--- incubator/ofbiz/trunk/applications/order/webapp/ordermgr/WEB-INF/actions/reports/OpenOrderItemsReport.bsh (original)
+++ incubator/ofbiz/trunk/applications/order/webapp/ordermgr/WEB-INF/actions/reports/OpenOrderItemsReport.bsh Fri Sep 29 12:37:41 2006
@@ -16,10 +16,8 @@
  */
 
 /*
- * Script to build the open order item report.
- * Uses OrderHeaderAndItem, then computes the quantities
- * to display.
- *
+ * Script to build the open order item report using
+ * the OrderItemQuantityReportGroupByItem view.
  * @author Leon Torres ([hidden email])
  */
 
@@ -28,6 +26,7 @@
 
 import org.ofbiz.base.util.UtilMisc;
 import org.ofbiz.entity.condition.*;
+import org.ofbiz.entity.util.*;
 
 productStoreId = parameters.get("productStoreId");
 orderTypeId = parameters.get("orderTypeId");
@@ -57,43 +56,18 @@
 }
 
 // item conditions
-conditions.add(new EntityExpr("itemStatusId", EntityOperator.NOT_EQUAL, "ITEM_COMPLETED"));
-conditions.add(new EntityExpr("itemStatusId", EntityOperator.NOT_EQUAL, "ITEM_CANCELLED"));
-conditions.add(new EntityExpr("itemStatusId", EntityOperator.NOT_EQUAL, "ITEM_REJECTED"));
+conditions.add(new EntityExpr("orderItemStatusId", EntityOperator.NOT_EQUAL, "ITEM_COMPLETED"));
+conditions.add(new EntityExpr("orderItemStatusId", EntityOperator.NOT_EQUAL, "ITEM_CANCELLED"));
+conditions.add(new EntityExpr("orderItemStatusId", EntityOperator.NOT_EQUAL, "ITEM_REJECTED"));
 
-// get the orderHeaderAndItems
+// get the results as an entity list iterator
 allConditions = new EntityConditionList( conditions, EntityOperator.AND );
-orderHeaderAndItems = delegator.findByCondition("OrderHeaderAndItems", allConditions, null, UtilMisc.toList("orderDate DESC"));
+fieldsToSelect = UtilMisc.toList("orderId","orderDate","productId","quantityOrdered","quantityIssued","quantityOpen");
+fieldsToSelect.add("shipBeforeDate");
+fieldsToSelect.add("shipAfterDate");
+fieldsToSelect.add("itemDescription");
+findOptions = new EntityFindOptions(true, EntityFindOptions.TYPE_SCROLL_INSENSITIVE, EntityFindOptions.CONCUR_READ_ONLY, true);
+listIt = delegator.findListIteratorByCondition("OrderItemQuantityReportGroupByItem", allConditions, null, fieldsToSelect, UtilMisc.toList("orderDate DESC"), findOptions);
+context.put("listIt", listIt);
 
-// make a Map for each orderHeaderAndItem that includes the quantities for the report
-reportData = FastList.newInstance();
-for (iter = orderHeaderAndItems.iterator(); iter.hasNext(); ) {
-    orderItem = iter.next();
-
-    // add all fields
-    data = FastMap.newInstance();
-    data.putAll( orderItem.getAllFields() );
-    
-    // compute quantity
-    quantity = orderItem.getDouble("quantity");
-    cancelQuantity = orderItem.getDouble("cancelQuantity");
-    quantityNet = 0;
-    if (quantity != null) quantityNet += quantity.doubleValue();
-    if (cancelQuantity != null) quantityNet -= cancelQuantity.doubleValue();
-    data.put("quantityNet", new Double(quantityNet));
-
-    // compute issued
-    issuances = delegator.findByAnd("ItemIssuance", UtilMisc.toMap("orderId", orderItem.get("orderId"), "orderItemSeqId", orderItem.get("orderItemSeqId")), UtilMisc.toList("quantity"));
-    double quantityIssued = 0;
-    for (subiter = issuances.iterator(); subiter.hasNext(); ) {
-        quantityIssued += subiter.next().getDouble("quantity").doubleValue();
-    }
-    data.put("quantityIssued", new Double(quantityIssued));
 
-    // compute open
-    data.put("quantityOpen", new Double(quantityNet - quantityIssued));
-
-    reportData.add(data);
-}
-
-context.put("orderItems", reportData);

Modified: incubator/ofbiz/trunk/applications/order/widget/ordermgr/ReportForms.xml
URL: http://svn.apache.org/viewvc/incubator/ofbiz/trunk/applications/order/widget/ordermgr/ReportForms.xml?view=diff&rev=451399&r1=451398&r2=451399
==============================================================================
--- incubator/ofbiz/trunk/applications/order/widget/ordermgr/ReportForms.xml (original)
+++ incubator/ofbiz/trunk/applications/order/widget/ordermgr/ReportForms.xml Fri Sep 29 12:37:41 2006
@@ -128,14 +128,16 @@
     </form>
 
     <!-- list open order items -->
-    <form name="OpenOrderItemsList" type="list" list-name="orderItems"
+    <form name="OpenOrderItemsList" type="list" list-name="listIt"
+            paginate-target="OpenOrderItemsReport"
             default-title-style="tableheadtext" default-widget-style="tabletext" default-tooltip-style="tabletext">
          <field name="orderDate" title="${uiLabelMap.OrderDate}"><display/></field>
          <field name="orderId" title="${uiLabelMap.OrderOrderId}" widget-style="buttontext">
              <hyperlink target="orderview?orderId=${orderId}" description="${orderId}"/>
          </field>
          <field name="productId" title="${uiLabelMap.ProductProduct}"><display/></field>
-         <field name="quantityNet" title="${uiLabelMap.ProductQuantity}"><display/></field>
+         <field name="itemDescription" title="${uiLabelMap.CommonDescription}"><display/></field>
+         <field name="quantityOrdered" title="${uiLabelMap.ProductQuantity}"><display/></field>
          <field name="quantityIssued" title="${uiLabelMap.OrderQtyShipped}"><display/></field>
          <field name="quantityOpen" title="${uiLabelMap.ProductOpenQuantity}"><display/></field>
          <field name="shipAfterDate" title="${uiLabelMap.OrderShipAfterDate}"><display/></field>

Modified: incubator/ofbiz/trunk/applications/order/widget/ordermgr/ReportScreens.xml
URL: http://svn.apache.org/viewvc/incubator/ofbiz/trunk/applications/order/widget/ordermgr/ReportScreens.xml?view=diff&rev=451399&r1=451398&r2=451399
==============================================================================
--- incubator/ofbiz/trunk/applications/order/widget/ordermgr/ReportScreens.xml (original)
+++ incubator/ofbiz/trunk/applications/order/widget/ordermgr/ReportScreens.xml Fri Sep 29 12:37:41 2006
@@ -185,6 +185,8 @@
             <actions>
                 <set field="titleProperty" value="OrderReportOpenOrderItems"/>
                 <set field="headerItem" value="reports"/>
+                <set field="viewSize" value="${parameters.VIEW_SIZE}" default-value="20" type="Integer"/>
+                <set field="viewIndex" value="${parameters.VIEW_INDEX}" default-value="0" type="Integer"/>
                 <script location="component://order/webapp/ordermgr/WEB-INF/actions/reports/OpenOrderItemsReport.bsh"/>
             </actions>
             <widgets>

Modified: incubator/ofbiz/trunk/applications/product/src/org/ofbiz/product/inventory/InventoryWorker.java
URL: http://svn.apache.org/viewvc/incubator/ofbiz/trunk/applications/product/src/org/ofbiz/product/inventory/InventoryWorker.java?view=diff&rev=451399&r1=451398&r2=451399
==============================================================================
--- incubator/ofbiz/trunk/applications/product/src/org/ofbiz/product/inventory/InventoryWorker.java (original)
+++ incubator/ofbiz/trunk/applications/product/src/org/ofbiz/product/inventory/InventoryWorker.java Fri Sep 29 12:37:41 2006
@@ -95,8 +95,7 @@
 
     /**
      * Gets the quanitty of each product in the order that is outstanding across all orders of the given input type.
-     * First it gets the ordered quantities outstanding, then subtracts the issued quantities outstanding.
-     * This method relies on the sum view entities OrderReportGroupByProduct and OrderItemIssuanceGroupByProduct.
+     * Uses the OrderItemQuantityReportGroupByProduct view entity.
      *
      * @param   productIds  Collection of disticnt productIds in an order. Use OrderReadHelper.getOrderProductIds()
      * @param   orderTypeId Either "SALES_ORDER" or "PURCHASE_ORDER"
@@ -104,9 +103,7 @@
      * @return  Map of productIds to quantities outstanding.
      */
     public static Map getOutstandingProductQuantities(Collection productIds, String orderTypeId, GenericDelegator delegator) {
-
-        // both queries use the same condition
-        List fieldsToSelect = UtilMisc.toList("productId", "quantity");    
+        List fieldsToSelect = UtilMisc.toList("productId", "quantityOpen");
         List condList = UtilMisc.toList(
                 new EntityExpr("orderTypeId", EntityOperator.EQUALS, orderTypeId),
                 new EntityExpr("orderStatusId", EntityOperator.NOT_EQUAL, "ORDER_COMPLETED"),
@@ -123,31 +120,10 @@
 
         Map results = FastMap.newInstance();
         try {
-            // find the ordered products outstading and build a map of productId to quantity
-            List orderedProducts = delegator.findByCondition("OrderReportGroupByProduct", conditions, fieldsToSelect, null);
-            Map orderedProductsMap = FastMap.newInstance();
+            List orderedProducts = delegator.findByCondition("OrderItemQuantityReportGroupByProduct", conditions, fieldsToSelect, null);
             for (Iterator iter = orderedProducts.iterator(); iter.hasNext(); ) {
                 GenericValue value = (GenericValue) iter.next();
-                orderedProductsMap.put(value.getString("productId"), value.getDouble("quantity"));
-            }
-
-            // find the issued quantities outstanding and build a map of productId to quantity
-            List issuedProducts = delegator.findByCondition("OrderItemIssuanceGroupByProduct", conditions, fieldsToSelect, null);
-            Map issuedProductsMap = FastMap.newInstance();
-            for (Iterator iter = issuedProducts.iterator(); iter.hasNext(); ) {
-                GenericValue value = (GenericValue) iter.next();
-                issuedProductsMap.put(value.getString("productId"), value.getDouble("quantity"));
-            }
-
-            // now go through the ordered map and subtract corresponding issued quantities
-            for (Iterator iter = orderedProductsMap.keySet().iterator(); iter.hasNext(); ) {
-                String productId = (String) iter.next();
-                Double quantityOrdered = (Double) orderedProductsMap.get(productId);
-                Double quantityIssued = (Double) issuedProductsMap.get(productId);
-                double quantity = 0;
-                if (quantityOrdered != null) quantity += quantityOrdered.doubleValue();
-                if (quantityIssued != null) quantity -= quantityIssued.doubleValue();
-                results.put(productId, new Double(quantity));
+                results.put(value.getString("productId"), value.getDouble("quantityOpen"));
             }
         } catch (GenericEntityException e) {
             Debug.logError(e, module);