details:   https://code.openbravo.com/erp/devel/pi/rev/57fbddd23c42
changeset: 17497:57fbddd23c42
user:      Eduardo Argal Guibert <eduardo.argal <at> openbravo.com>
date:      Tue Jul 17 17:37:56 2012 +0200
summary:   fixes bug 21115

details:   https://code.openbravo.com/erp/devel/pi/rev/6fc71a314f4a
changeset: 17498:6fc71a314f4a
user:      Eduardo Argal Guibert <eduardo.argal <at> openbravo.com>
date:      Tue Jul 17 17:38:43 2012 +0200
summary:   Fixes bug 9099

diffstat:

 src-db/database/model/functions/M_GET_PARETO_ABC.xml                 |  39 ++-
 src-db/database/model/functions/M_GET_TRX_AND_PRODUCT_COST.xml       |   2 +-
 src-db/database/model/functions/M_UPDATE_PARETO_PRODUCT.xml          |  28 +-
 src/org/openbravo/erpCommon/ad_reports/ReportParetoProduct.html      |  86 
+++++-----
 src/org/openbravo/erpCommon/ad_reports/ReportParetoProduct.java      |  31 +++-
 src/org/openbravo/erpCommon/ad_reports/ReportParetoProduct_data.xsql |  10 +-
 6 files changed, 115 insertions(+), 81 deletions(-)

diffs (truncated from 435 to 300 lines):

diff -r 85cf00e297e8 -r 6fc71a314f4a 
src-db/database/model/functions/M_GET_PARETO_ABC.xml
--- a/src-db/database/model/functions/M_GET_PARETO_ABC.xml      Tue Jul 17 
16:37:50 2012 +0200
+++ b/src-db/database/model/functions/M_GET_PARETO_ABC.xml      Tue Jul 17 
17:38:43 2012 +0200
@@ -13,6 +13,9 @@
       <parameter name="p_percentageactual" type="NUMERIC" mode="in">
         <default/>
       </parameter>
+      <parameter name="p_targetcurrency_id" type="VARCHAR" mode="in">
+        <default><![CDATA[NULL]]></default>
+      </parameter>
       
<body><![CDATA[/*************************************************************************
 * The contents of this file are subject to the Openbravo  Public  License
 * Version  1.1  (the  "License"),  being   the  Mozilla   Public  License
@@ -48,24 +51,29 @@
     RAISE_APPLICATION_ERROR(-20000, '@OrganizationNotNull@');
   END IF;
   
-  SELECT C_CURRENCY_ID INTO v_currency
-  FROM AD_ORG
-  WHERE AD_ORG_ID = (AD_GET_ORG_LE_BU (p_org_ID, 'LE'));
+  IF(p_targetCurrency_id IS NULL) THEN 
+         SELECT C_CURRENCY_ID INTO v_currency
+         FROM AD_ORG
+         WHERE AD_ORG_ID = (AD_GET_ORG_LE_BU (p_org_ID, 'LE'));
+       ELSE
+         v_currency := p_targetCurrency_id;
+       END IF;
 
   -- Checks if Sum of all Product's cost are zero
   SELECT SUM(COST_PER_CURRENCY) INTO v_totalCost
   FROM (
-    SELECT C_CURRENCY_CONVERT_PRECISION(SUM(CASE WHEN T.MOVEMENTQTY>=0 THEN 
T.TRANSACTIONCOST ELSE -T.TRANSACTIONCOST END),
-              T.C_CURRENCY_ID, v_currency, now(), NULL, p_client_id, 
AD_GET_ORG_LE_BU (p_org_ID, 'LE')) AS COST_PER_CURRENCY
-    FROM M_TRANSACTION T
+    SELECT C_CURRENCY_CONVERT_PRECISION(SUM(CASE WHEN T.MOVEMENTQTY>=0 THEN 
TC.COST ELSE -TC.COST END),
+              TC.C_CURRENCY_ID, v_currency, now(), NULL, p_client_id, 
AD_GET_ORG_LE_BU (p_org_ID, 'LE')) AS COST_PER_CURRENCY
+    FROM M_TRANSACTION_COST TC, M_TRANSACTION T
       LEFT JOIN M_LOCATOR L ON (T.M_LOCATOR_ID=L.M_LOCATOR_ID)
       LEFT JOIN M_WAREHOUSE W ON (L.M_WAREHOUSE_ID=W.M_WAREHOUSE_ID)
-    WHERE T.ISCOSTCALCULATED = 'Y'
+    WHERE TC.M_TRANSACTION_ID = T.M_TRANSACTION_ID
+      AND T.ISCOSTCALCULATED = 'Y'
       AND T.TRANSACTIONCOST IS NOT NULL
       AND (p_warehouse_ID IS NULL OR L.M_WAREHOUSE_ID = p_warehouse_ID)
-      AND W.AD_ORG_ID = p_org_ID
+      AND ad_isorgincluded(W.AD_ORG_ID, p_org_ID, T.AD_CLIENT_ID) <> -1
       AND (p_client_id IS NULL OR T.AD_CLIENT_ID = p_client_id)
-    GROUP BY T.C_CURRENCY_ID
+    GROUP BY TC.C_CURRENCY_ID
     HAVING SUM(T.MOVEMENTQTY) > 0
   ) A;
   IF (v_totalCost = 0) THEN
@@ -78,18 +86,19 @@
   FOR cur_cursor IN (
       SELECT 100*(SUM(COST_PER_CURRENCY) / v_totalCost) AS PERCENTAGE
       FROM (
-        SELECT C_CURRENCY_CONVERT_PRECISION(SUM(CASE WHEN T.MOVEMENTQTY>=0 
THEN T.TRANSACTIONCOST ELSE -T.TRANSACTIONCOST END),
-                T.C_CURRENCY_ID, v_currency, now(), NULL, p_client_id, 
AD_GET_ORG_LE_BU (p_org_ID, 'LE')) AS COST_PER_CURRENCY,
+        SELECT C_CURRENCY_CONVERT_PRECISION(SUM(CASE WHEN T.MOVEMENTQTY>=0 
THEN TC.COST ELSE -TC.COST END),
+                TC.C_CURRENCY_ID, v_currency, now(), NULL, p_client_id, 
AD_GET_ORG_LE_BU (p_org_ID, 'LE')) AS COST_PER_CURRENCY,
                 T.M_PRODUCT_ID
-        FROM M_TRANSACTION T
+        FROM M_TRANSACTION_COST TC, M_TRANSACTION T
           LEFT JOIN M_LOCATOR L ON (T.M_LOCATOR_ID=L.M_LOCATOR_ID)
           LEFT JOIN M_WAREHOUSE W ON (L.M_WAREHOUSE_ID=W.M_WAREHOUSE_ID)
-        WHERE T.ISCOSTCALCULATED = 'Y'
+        WHERE TC.M_TRANSACTION_ID = T.M_TRANSACTION_ID
+          AND T.ISCOSTCALCULATED = 'Y'
           AND T.TRANSACTIONCOST IS NOT NULL
           AND (p_warehouse_ID IS NULL OR L.M_WAREHOUSE_ID = p_warehouse_ID)
-          AND W.AD_ORG_ID = p_org_ID
+          AND ad_isorgincluded(W.AD_ORG_ID, p_org_ID, T.AD_CLIENT_ID) <> -1
           AND (p_client_id IS NULL OR T.AD_CLIENT_ID = p_client_id)
-        GROUP BY T.M_PRODUCT_ID, T.C_CURRENCY_ID
+        GROUP BY T.M_PRODUCT_ID, TC.C_CURRENCY_ID
         HAVING SUM(T.MOVEMENTQTY) > 0
       ) A
       GROUP BY M_PRODUCT_ID
diff -r 85cf00e297e8 -r 6fc71a314f4a 
src-db/database/model/functions/M_GET_TRX_AND_PRODUCT_COST.xml
--- a/src-db/database/model/functions/M_GET_TRX_AND_PRODUCT_COST.xml    Tue Jul 
17 16:37:50 2012 +0200
+++ b/src-db/database/model/functions/M_GET_TRX_AND_PRODUCT_COST.xml    Tue Jul 
17 17:38:43 2012 +0200
@@ -48,7 +48,7 @@
   IF (p_transaction_id IS NOT NULL) THEN
     RETURN M_GET_TRANSACTION_COST(p_transaction_id, p_movementdate, 
p_currency_id);
   ELSE
-    RETURN ROUND(COALESCE(M_GET_NO_TRX_PRODUCT_COST(p_product_id, 
p_movementdate, p_costtype, p_org_id, p_warehouse_id, p_currency_id), 0) * 
p_qty, p_precission);
+    RETURN ROUND(M_GET_NO_TRX_PRODUCT_COST(p_product_id, p_movementdate, 
p_costtype, p_org_id, p_warehouse_id, p_currency_id)* p_qty, p_precission);
   END IF;
 END M_GET_TRX_AND_PRODUCT_COST
 ]]></body>
diff -r 85cf00e297e8 -r 6fc71a314f4a 
src-db/database/model/functions/M_UPDATE_PARETO_PRODUCT.xml
--- a/src-db/database/model/functions/M_UPDATE_PARETO_PRODUCT.xml       Tue Jul 
17 16:37:50 2012 +0200
+++ b/src-db/database/model/functions/M_UPDATE_PARETO_PRODUCT.xml       Tue Jul 
17 17:38:43 2012 +0200
@@ -86,17 +86,18 @@
   -- Checks if Sum of all Product's cost are zero
   SELECT SUM(COST_PER_CURRENCY) INTO v_totalCost
   FROM (
-    SELECT C_CURRENCY_CONVERT_PRECISION(SUM(CASE WHEN T.MOVEMENTQTY>=0 THEN 
T.TRANSACTIONCOST ELSE -T.TRANSACTIONCOST END),
-              T.C_CURRENCY_ID, v_currency, now(), NULL,v_client_ID, 
AD_GET_ORG_LE_BU (v_org_ID, 'LE')) AS COST_PER_CURRENCY
-    FROM M_TRANSACTION T
+    SELECT C_CURRENCY_CONVERT_PRECISION(SUM(CASE WHEN T.MOVEMENTQTY>=0 THEN 
TC.COST ELSE -TC.COST END),
+              TC.C_CURRENCY_ID, v_currency, now(), NULL,v_client_ID, 
AD_GET_ORG_LE_BU (v_org_ID, 'LE')) AS COST_PER_CURRENCY
+    FROM M_TRANSACTION_COST TC, M_TRANSACTION T
       LEFT JOIN M_LOCATOR L ON (T.M_LOCATOR_ID=L.M_LOCATOR_ID)
       LEFT JOIN M_WAREHOUSE W ON (L.M_WAREHOUSE_ID=W.M_WAREHOUSE_ID)
-    WHERE T.ISCOSTCALCULATED = 'Y'
+    WHERE TC.M_TRANSACTION_ID = T.M_TRANSACTION_ID
+      AND T.ISCOSTCALCULATED = 'Y'
       AND T.TRANSACTIONCOST IS NOT NULL
       AND (v_warehouse_ID IS NULL OR L.M_WAREHOUSE_ID = v_warehouse_ID)
-      AND W.AD_ORG_ID = v_org_ID
+      AND ad_isorgincluded(W.AD_ORG_ID, v_org_ID, T.AD_CLIENT_ID) <> -1
       AND (v_client_ID IS NULL OR T.AD_CLIENT_ID = v_client_ID)
-    GROUP BY T.C_CURRENCY_ID
+    GROUP BY TC.C_CURRENCY_ID
     HAVING SUM(T.MOVEMENTQTY) > 0
   ) A;
   IF (v_totalCost = 0) THEN
@@ -104,23 +105,24 @@
   END IF;
 
   FOR Cur_Cursor IN (
-      SELECT M_GET_PARETO_ABC(v_warehouse_ID, v_org_ID, v_client_ID, 
PERCENTAGE) AS ISABC,
+      SELECT M_GET_PARETO_ABC(v_warehouse_ID, v_org_ID, v_client_ID, 
PERCENTAGE, v_currency) AS ISABC,
           AD_ORG_ID, AD_CLIENT_ID, M_PRODUCT_ID
       FROM (
           SELECT 100*(SUM(COST_PER_CURRENCY) / v_totalCost) AS PERCENTAGE, 
AD_ORG_ID, AD_CLIENT_ID, M_PRODUCT_ID
           FROM (
-              SELECT C_CURRENCY_CONVERT_PRECISION(SUM(CASE WHEN 
T.MOVEMENTQTY>=0 THEN T.TRANSACTIONCOST ELSE -T.TRANSACTIONCOST END),
-                    T.C_CURRENCY_ID, v_currency, now(), NULL, v_client_ID, 
AD_GET_ORG_LE_BU (v_org_ID, 'LE')) AS COST_PER_CURRENCY,
+              SELECT C_CURRENCY_CONVERT_PRECISION(SUM(CASE WHEN 
T.MOVEMENTQTY>=0 THEN TC.COST ELSE -TC.COST END),
+                    TC.C_CURRENCY_ID, v_currency, now(), NULL, v_client_ID, 
AD_GET_ORG_LE_BU (v_org_ID, 'LE')) AS COST_PER_CURRENCY,
                     T.M_PRODUCT_ID, T.AD_ORG_ID, T.AD_CLIENT_ID
-              FROM M_TRANSACTION T
+              FROM M_TRANSACTION_COST TC, M_TRANSACTION T
                 LEFT JOIN M_LOCATOR L ON (T.M_LOCATOR_ID=L.M_LOCATOR_ID)
                 LEFT JOIN M_WAREHOUSE W ON (L.M_WAREHOUSE_ID=W.M_WAREHOUSE_ID)
-              WHERE T.ISCOSTCALCULATED = 'Y'
+              WHERE TC.M_TRANSACTION_ID = T.M_TRANSACTION_ID
+                AND T.ISCOSTCALCULATED = 'Y'
                 AND T.TRANSACTIONCOST IS NOT NULL
                 AND (v_warehouse_ID IS NULL OR L.M_WAREHOUSE_ID = 
v_warehouse_ID)
-                AND W.AD_ORG_ID = v_org_ID
+                AND ad_isorgincluded(W.AD_ORG_ID, v_org_ID, T.AD_CLIENT_ID) <> 
-1
                 AND (v_client_ID IS NULL OR T.AD_CLIENT_ID = v_client_ID)
-              GROUP BY T.M_PRODUCT_ID, T.C_CURRENCY_ID, T.AD_ORG_ID, 
T.AD_CLIENT_ID
+              GROUP BY T.M_PRODUCT_ID, TC.C_CURRENCY_ID, T.AD_ORG_ID, 
T.AD_CLIENT_ID
               HAVING SUM(T.MOVEMENTQTY) > 0
           ) A
           GROUP BY M_PRODUCT_ID, AD_ORG_ID, AD_CLIENT_ID
diff -r 85cf00e297e8 -r 6fc71a314f4a 
src/org/openbravo/erpCommon/ad_reports/ReportParetoProduct.html
--- a/src/org/openbravo/erpCommon/ad_reports/ReportParetoProduct.html   Tue Jul 
17 16:37:50 2012 +0200
+++ b/src/org/openbravo/erpCommon/ad_reports/ReportParetoProduct.html   Tue Jul 
17 17:38:43 2012 +0200
@@ -61,7 +61,7 @@
 }
 function onloadFunctions() {
 }
-</script>        
+</script>     
 
 <script language="JavaScript" type="text/javascript">
 function refreshWarehouses() {
@@ -80,7 +80,7 @@
     function onLoadDo(){
         this.windowTables = new Array(
           new windowTableId('client', 'buttonSearch'),
-                 new windowTableId('tdbottomButtons', 'buttonUpdateABC')
+          new windowTableId('tdbottomButtons', 'buttonUpdateABC')
         );
         setWindowTableParentElement();
         this.tabsTables = new Array(
@@ -230,7 +230,7 @@
             </tr>
             </tbody>
           </table>
-                 <!-- MessageBox END -->
+          <!-- MessageBox END -->
           <!-- USER CONTROLS BEGIN -->
           <table class="Main_Client_TableEdition">
             <tr>
@@ -245,20 +245,20 @@
               <td colspan="6">
                 <table class="FieldGroup" cellspacing="0" cellpadding="0" 
border="0">
                 <tbody>
-                  <tr class="FieldGroup_TopMargin"/>
+                  <tr class="FieldGroup_TopMargin"></tr>
                   <tr>
                     <td class="FieldGroupTitle_Left"><img 
class="FieldGroupTitle_Left_bg" border="0" 
src="../../../../../web/images/blank.gif"/></td>
                     <td class="FieldGroupTitle">Filter</td>
                     <td class="FieldGroupTitle_Right"><img 
class="FieldGroupTitle_Right_bg" border="0" 
src="../../../../../web/images/blank.gif"/></td>
-                    <td class="FieldGroupContent"/>
+                    <td class="FieldGroupContent"></td>
                   </tr>
-                  <tr class="FieldGroup_BottomMargin"/>
+                  <tr class="FieldGroup_BottomMargin"></td>
                 </tbody>
                 </table>
               </td>
             </tr>
             <tr>
-            <td class="TitleCell"><span 
class="LabelText">Organization</span></td>             
+            <td class="TitleCell"><span 
class="LabelText">Organization</span></td>      
               <td class="Combo_ContentCell" colspan="2"> 
                 <select name="inpadOrgId"  id="inpadOrgId" class="ComboKey 
Combo_TwoCells_width" onchange="refreshWarehouses();logChanges(this);return 
true;" required="true">
                   <option value=""> <div id="reportAD_Org_ID"></div></option>
@@ -266,31 +266,31 @@
               </td>
               <td class="TitleCell"><span 
class="LabelText">Currency</span></td>
                   <td class="Combo_ContentCell">
-                               <select name="inpCurrencyId" id="inpCurrencyId" 
class="ComboKey Combo_OneCell_width" required="true">
-                       <option value=""><div 
id="reportC_Currency_ID"></div></option>
-                               </select>
-                         </td>
+                    <select name="inpCurrencyId" id="inpCurrencyId" 
class="ComboKey Combo_OneCell_width" required="true">
+                    <option value=""><div 
id="reportC_Currency_ID"></div></option>
+                    </select>
+              </td>
             </tr>
-            <tr>                                 
-               <td class="TitleCell"> <span 
class="LabelText">Warehouse</span></td>
+            <tr>                          
+            <td class="TitleCell"> <span 
class="LabelText">Warehouse</span></td>
              <td class="Combo_ContentCell" colspan="2">
                  <select name="inpmWarehouseId" id="inpmWarehouseId" 
class="Combo Combo_TwoCells_width" onchange="logChanges(this);return true;">
                   <option value=""> <div 
id="reportM_Warehouse_ID"></div></option>
                 </select>
             </td>
             </tr>
-                       <tr>
+            <tr>
               <td colspan="6">
                 <table class="FieldGroup" cellspacing="0" cellpadding="0" 
border="0">
                 <tbody>
-                  <tr class="FieldGroup_TopMargin"/>
+                  <tr class="FieldGroup_TopMargin"></tr>
                   <tr>
                     <td class="FieldGroupTitle_Left"><img 
class="FieldGroupTitle_Left_bg" border="0" 
src="../../../../../web/images/blank.gif"/></td>
                     <td class="FieldGroupTitle">View Results</td>
                     <td class="FieldGroupTitle_Right"><img 
class="FieldGroupTitle_Right_bg" border="0" 
src="../../../../../web/images/blank.gif"/></td>
-                    <td class="FieldGroupContent"/>
+                    <td class="FieldGroupContent"></td>
                   </tr>
-                  <tr class="FieldGroup_BottomMargin"/>
+                  <tr class="FieldGroup_BottomMargin"></tr>
                 </tbody>
                 </table>
               </td>
@@ -331,54 +331,54 @@
 
           </table>
           <!-- OUTPUT -->
-                 <div id="sectionOrg">
+          <div id="sectionOrg">
           <table class="Main_Client_TableEdition">
             <tr>
               <td colspan="6">
                 <div style="height:25px;" />
-                                
+                 
                 <table cellspacing="0" cellpadding="0" width="100%" 
class="DataGrid_Header_Table DataGrid_Body_Table" style="table-layout: auto;" 
id="selEliminar">
-                               
+                
                     
                     <tr class="DataGrid_Body_Row"> 
                       <th colspan="9" 
class="DataGrid_Header_Cell"><span>Organization<span>: </span><span 
id="fieldAdOrg">xxOrganization</span></span></th>
                     </tr>
-                                         <div id="sectionPartner">
+                      <div id="sectionPartner">
                       <tr class="DataGrid_Body_Row"> 
                         <th class="DataGrid_Header_Cell">Search Key</th>
                         <th class="DataGrid_Header_Cell">Name</th>
                         <th class="DataGrid_Header_Cell">Quantity</th>
-                                               <th 
class="DataGrid_Header_Cell">Unit</th>
-                                               <th 
class="DataGrid_Header_Cell">Cost</th>
-                                               <th 
class="DataGrid_Header_Cell">Value</th>
-                                               <th 
class="DataGrid_Header_Cell">Percentage</th>
-                                               <th 
class="DataGrid_Header_Cell">Category</th>
-                      </tr>                                                    
          
-                         <div id="sectionDetail"> 
-                           <tr class="DataGrid_Body_Row DataGrid_Body_Row_yy" 
id="funcEvenOddRow1xx">
-                             <td width="10%" class="DataGrid_Body_Cell" 
id="fieldSearchKey">xxName</td>
-                             <td width="40%"  class="DataGrid_Body_Cell" 
id="fieldName">xxY</td>
-                                                 <td width="10%"  
class="DataGrid_Body_Cell" id="fieldQty">xxY</td>
-                             <td width="10%"  class="DataGrid_Body_Cell" 
id="fieldUnit">xxY</td>
-                             <td width="8%"  class="DataGrid_Body_Cell" 
id="fieldCost">xxY</td>
-                                                 <td width="8%"  
class="DataGrid_Body_Cell" id="fieldValue">xxY</td>
-                             <td width="7%"  class="DataGrid_Body_Cell" 
id="fieldPercentage">xxY</td>
+                        <th class="DataGrid_Header_Cell">Unit</th>
+                        <th class="DataGrid_Header_Cell">Cost</th>
+                        <th class="DataGrid_Header_Cell">Value</th>
+                        <th class="DataGrid_Header_Cell">Percentage</th>
+                        <th class="DataGrid_Header_Cell">Category</th>
+                      </tr>                                           
+                      <div id="sectionDetail"> 
+                        <tr class="DataGrid_Body_Row DataGrid_Body_Row_yy" 
id="funcEvenOddRow1xx">
+                          <td width="10%" class="DataGrid_Body_Cell" 
id="fieldSearchKey">xxName</td>
+                          <td width="40%"  class="DataGrid_Body_Cell" 
id="fieldName">xxY</td>
+                          <td width="10%"  class="DataGrid_Body_Cell_Amount" 
id="fieldQty">xxY</td>
+                          <td width="10%"  class="DataGrid_Body_Cell" 
id="fieldUnit">xxY</td>
+                          <td width="8%"  class="DataGrid_Body_Cell_Amount" 
id="fieldCost">xxY</td>

------------------------------------------------------------------------------
Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
_______________________________________________
Openbravo-commits mailing list
Openbravo-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to