Author: sichen
Date: Wed Mar 14 15:56:51 2007
New Revision: 518369

URL: http://svn.apache.org/viewvc?view=rev&rev=518369
Log:
Add an amount total to the list of approved product requirements.

Modified:
    ofbiz/trunk/applications/order/servicedef/services_requirement.xml
    
ofbiz/trunk/applications/order/src/org/ofbiz/order/requirement/RequirementServices.java
    
ofbiz/trunk/applications/order/webapp/ordermgr/WEB-INF/actions/requirement/ApprovedProductRequirements.bsh
    
ofbiz/trunk/applications/order/webapp/ordermgr/requirement/RequirementForms.xml

Modified: ofbiz/trunk/applications/order/servicedef/services_requirement.xml
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/servicedef/services_requirement.xml?view=diff&rev=518369&r1=518368&r2=518369
==============================================================================
--- ofbiz/trunk/applications/order/servicedef/services_requirement.xml 
(original)
+++ ofbiz/trunk/applications/order/servicedef/services_requirement.xml Wed Mar 
14 15:56:51 2007
@@ -102,6 +102,7 @@
         <attribute mode="OUT" name="requirementsForSupplier" 
type="java.util.List" optional="true"/>
         <attribute mode="OUT" name="distinctProductCount" type="Integer" 
optional="true"/>
         <attribute mode="OUT" name="quantityTotal" type="Double" 
optional="true"/>
+        <attribute mode="OUT" name="amountTotal" type="Double" 
optional="true"/>
     </service>
     <service name="createOrderRequirementCommitment" engine="simple" 
auth="true"
         location="org/ofbiz/order/order/OrderServices.xml" 
invoke="createOrderRequirementCommitment">

Modified: 
ofbiz/trunk/applications/order/src/org/ofbiz/order/requirement/RequirementServices.java
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/src/org/ofbiz/order/requirement/RequirementServices.java?view=diff&rev=518369&r1=518368&r2=518369
==============================================================================
--- 
ofbiz/trunk/applications/order/src/org/ofbiz/order/requirement/RequirementServices.java
 (original)
+++ 
ofbiz/trunk/applications/order/src/org/ofbiz/order/requirement/RequirementServices.java
 Wed Mar 14 15:56:51 2007
@@ -79,8 +79,9 @@
             Map inventories = FastMap.newInstance();
             Map productsSold = FastMap.newInstance();
 
-            // to count quantity and distinct products in list
+            // to count quantity, running total, and distinct products in list
             double quantity = 0.0;
+            double amountTotal = 0.0;
             Set products = new HashSet();
 
             // time period to count products ordered from, six months ago and 
the 1st of that month
@@ -94,20 +95,28 @@
                 String productId = requirement.getString("productId");
                 partyId = requirement.getString("partyId");
                 String facilityId = requirement.getString("facilityId");
+                double requiredQuantity = 
requirement.getDouble("quantity").doubleValue();
 
-                // get an available supplier product
+                // get an available supplier product, preferably the one with 
the smallest minimum quantity to order, followed by price
                 String supplierKey =  partyId + "^" + productId;
                 GenericValue supplierProduct = (GenericValue) 
suppliers.get(supplierKey);
                 if (supplierProduct == null) {
                     conditions = UtilMisc.toList(
+                            // TODO: it is possible to restrict to quantity > 
minimumOrderQuantity, but then the entire requirement must be skipped
                             new EntityExpr("partyId", EntityOperator.EQUALS, 
partyId),
                             new EntityExpr("productId", EntityOperator.EQUALS, 
productId),
                             
EntityUtil.getFilterByDateExpr("availableFromDate", "availableThruDate")
                             );
-                    supplierProduct = EntityUtil.getFirst( 
delegator.findByAnd("SupplierProduct", conditions) );
+                    supplierProduct = EntityUtil.getFirst( 
delegator.findByAnd("SupplierProduct", conditions, 
UtilMisc.toList("minimumOrderQuantity", "lastPrice")) );
                     suppliers.put(supplierKey, supplierProduct);
                 }
-                if (supplierProduct != null) 
union.putAll(supplierProduct.getAllFields());
+
+                // add our supplier product and cost of this line to the data
+                if (supplierProduct != null) {
+                    union.putAll(supplierProduct.getAllFields());
+                    double lastPrice = 
supplierProduct.getDouble("lastPrice").doubleValue();
+                    amountTotal += lastPrice * requiredQuantity;
+                }
 
                 // for good identification, get the UPCA type (UPC code)
                 GenericValue gid = (GenericValue) gids.get(productId);
@@ -156,7 +165,7 @@
 
                 // keep a running total of distinct products and quantity to 
order
                 if (requirement.getDouble("quantity") == null) 
requirement.put("quantity", new Double("1")); // default quantity = 1
-                quantity += requirement.getDouble("quantity").doubleValue();
+                quantity += requiredQuantity;
                 products.add(productId);
 
                 // add all the requirement fields last, to overwrite any 
conflicting fields
@@ -168,6 +177,7 @@
             results.put("requirementsForSupplier", requirements);
             results.put("distinctProductCount", new Integer(products.size()));
             results.put("quantityTotal", new Double(quantity));
+            results.put("amountTotal", new Double(amountTotal));
             return results;
         } catch (GenericServiceException e) {
             Debug.logError(e, module);

Modified: 
ofbiz/trunk/applications/order/webapp/ordermgr/WEB-INF/actions/requirement/ApprovedProductRequirements.bsh
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/webapp/ordermgr/WEB-INF/actions/requirement/ApprovedProductRequirements.bsh?view=diff&rev=518369&r1=518368&r2=518369
==============================================================================
--- 
ofbiz/trunk/applications/order/webapp/ordermgr/WEB-INF/actions/requirement/ApprovedProductRequirements.bsh
 (original)
+++ 
ofbiz/trunk/applications/order/webapp/ordermgr/WEB-INF/actions/requirement/ApprovedProductRequirements.bsh
 Wed Mar 14 15:56:51 2007
@@ -23,5 +23,5 @@
 if (prepare.get("entityConditionList") != null) {
        results = dispatcher.runSync("getRequirementsForSupplier", 
UtilMisc.toMap("requirementConditions", prepare.get("entityConditionList"), 
"partyId", parameters.get("partyId")));
        context.put("requirementsForSupplier", 
results.get("requirementsForSupplier"));
-       context.put("quantityReport", UtilMisc.toMap("distinctProductCount", 
results.get("distinctProductCount"), "quantityTotal", 
results.get("quantityTotal")));
+       context.put("quantityReport", UtilMisc.toMap("distinctProductCount", 
results.get("distinctProductCount"), "quantityTotal", 
results.get("quantityTotal"), "amountTotal", results.get("amountTotal")));
 }

Modified: 
ofbiz/trunk/applications/order/webapp/ordermgr/requirement/RequirementForms.xml
URL: 
http://svn.apache.org/viewvc/ofbiz/trunk/applications/order/webapp/ordermgr/requirement/RequirementForms.xml?view=diff&rev=518369&r1=518368&r2=518369
==============================================================================
--- 
ofbiz/trunk/applications/order/webapp/ordermgr/requirement/RequirementForms.xml 
(original)
+++ 
ofbiz/trunk/applications/order/webapp/ordermgr/requirement/RequirementForms.xml 
Wed Mar 14 15:56:51 2007
@@ -326,8 +326,9 @@
     </form>
     <form name="ApprovedProductRequirementsSummary" type="single" 
default-map-name="quantityReport" target="ApprovedProductRequirements"
         default-title-style="tableheadtext" default-widget-style="tabletext" 
default-tooltip-style="tabletext">
-        <field name="distinctProductCount"><display/></field>
+        <field name="distinctProductCount" title="Number of 
Products"><display/></field>
         <field name="quantityTotal"><display/></field>
+        <field name="amountTotal"><display type="currency" 
currency="${currencyUomId}"/></field>
     </form>
     <form name="ApprovedProductRequirementsByVendor" type="list" 
use-row-submit="true" list-name="requirements" 
target="ApprovedProductRequirements" separate-columns="true"
         default-title-style="tableheadtext" default-widget-style="tabletext" 
default-tooltip-style="tabletext"


Reply via email to