details:   https://code.openbravo.com/erp/devel/pi/rev/381ee761e739
changeset: 35036:381ee761e739
user:      Nono Carballo <nonofce <at> gmail.com>
date:      Fri Nov 16 12:39:03 2018 +0100
summary:   Fixes issue 35702: Performance improvements in Purchase Order Report 
PDF format

1. Last "Group By" was removed
2. Unnecessary coalesces in mandatory columns were removed
3. Remove duplicated columns dateordered and transdate
4. Line net amount and price actual currency conversion are run in outer query
5. Names of business partner, product and uom retrieved via joins
6. The alternativeUom is calculated with a left join

details:   https://code.openbravo.com/erp/devel/pi/rev/2e096148d8cb
changeset: 35037:2e096148d8cb
user:      Sandra Huguet <sandra.huguet <at> openbravo.com>
date:      Mon Nov 19 11:03:46 2018 +0100
summary:   Related to issue 35702 Remove duplicated columns transdate

diffstat:

 src/org/openbravo/erpCommon/ad_reports/ReportPurchaseOrder.jrxml |  84 
+++++----
 1 files changed, 47 insertions(+), 37 deletions(-)

diffs (99 lines):

diff -r b08cf6ab13a4 -r 2e096148d8cb 
src/org/openbravo/erpCommon/ad_reports/ReportPurchaseOrder.jrxml
--- a/src/org/openbravo/erpCommon/ad_reports/ReportPurchaseOrder.jrxml  Mon Nov 
19 12:28:51 2018 +0100
+++ b/src/org/openbravo/erpCommon/ad_reports/ReportPurchaseOrder.jrxml  Mon Nov 
19 11:03:46 2018 +0100
@@ -102,48 +102,58 @@
                
<defaultValueExpression><![CDATA[org.openbravo.materialmgmt.UOMUtil.isUomManagementEnabled()]]></defaultValueExpression>
        </parameter>
        <queryString language="SQL">
-               <![CDATA[SELECT DOCUMENTNO, DATEORDERED, CLIENT_NAME, 
SUM(QUANTITYORDER) AS QUANTITYORDER, PRICEACTUAL, CONVPRICEACTUAL,
-    SUM(PRICELIST) AS PRICELIST, SUM(CONVPRICELIST) AS CONVPRICELIST, 
PRODUCT_NAME, UOMNAME,
+               <![CDATA[SELECT DOCUMENTNO, 
+    DATEORDERED, 
+    C_BPARTNER.NAME AS CLIENT_NAME, 
+    QUANTITYORDER, 
+    PRICEACTUAL, 
+    C_CURRENCY_CONVERT(PRICEACTUAL, TRANSCURRENCYID, $P{aux_Currency}, 
TO_DATE(DATEORDERED), NULL, TRANSCLIENTID, TRANSORGID) AS CONVPRICEACTUAL,
+    PRICELIST, 
+    C_CURRENCY_CONVERT(PRICELIST, TRANSCURRENCYID, $P{aux_Currency}, 
TO_DATE(DATEORDERED), NULL, TRANSCLIENTID, TRANSORGID) AS CONVPRICELIST, 
+    M_PRODUCT.NAME AS PRODUCT_NAME, 
+    C_UOM.NAME AS UOMNAME,
     C_CURRENCY_SYMBOL(TRANSCURRENCYID, '0', 'Y') AS TRANSSYM,
     C_CURRENCY_SYMBOL($P{aux_Currency}, '0', 'Y') AS CONVSYM,
     C_CURRENCY_ISOSYM($P{aux_Currency}) AS CONVISOSYM,
-    ALTERNATIVEQTY AS AUMQTY, ALTERNATIVEUOM AS AUM
+    ALTERNATIVEQTY AS AUMQTY, 
+    CUOM.NAME AS AUM
     FROM (
-    SELECT C_ORDER.DOCUMENTNO AS DOCUMENTNO, C_ORDER.DATEORDERED AS 
DATEORDERED, C_BPARTNER.C_BPARTNER_ID, C_BPARTNER.NAME AS CLIENT_NAME, 
-    SUM(C_ORDERLINE.QTYORDERED) AS QUANTITYORDER, C_ORDERLINE.PRICEACTUAL AS 
PRICEACTUAL,
-    C_CURRENCY_CONVERT(C_ORDERLINE.PRICEACTUAL, 
COALESCE(C_ORDERLINE.C_CURRENCY_ID, C_ORDER.C_CURRENCY_ID), $P{aux_Currency}, 
TO_DATE(COALESCE(C_ORDER.DATEORDERED, NOW())), NULL, C_ORDERLINE.AD_CLIENT_ID, 
C_ORDERLINE.AD_ORG_ID) AS CONVPRICEACTUAL,
-    SUM(C_ORDERLINE.LINENETAMT) AS PRICELIST, 
-    C_CURRENCY_CONVERT(SUM(C_ORDERLINE.LINENETAMT), 
COALESCE(C_ORDERLINE.C_CURRENCY_ID, C_ORDER.C_CURRENCY_ID), $P{aux_Currency}, 
TO_DATE(COALESCE(C_ORDER.DATEORDERED, NOW())), NULL, C_ORDERLINE.AD_CLIENT_ID, 
C_ORDERLINE.AD_ORG_ID) AS CONVPRICELIST,
-    M_PRODUCT.NAME AS PRODUCT_NAME, C_UOM.NAME AS UOMNAME,
-    COALESCE(C_ORDERLINE.C_CURRENCY_ID, C_ORDER.C_CURRENCY_ID) AS 
TRANSCURRENCYID,
-    TO_DATE(COALESCE(C_ORDER.DATEORDERED, NOW())) AS TRANSDATE,
-    C_ORDERLINE.AD_CLIENT_ID AS TRANSCLIENTID, 
-    C_ORDERLINE.AD_ORG_ID AS TRANSORGID,
-    C_ORDERLINE.AUMQTY AS ALTERNATIVEQTY,
-    (CASE WHEN C_ORDERLINE.C_AUM IS NULL THEN NULL ELSE (SELECT NAME FROM 
C_UOM WHERE C_UOM_ID = C_ORDERLINE.C_AUM) END ) AS ALTERNATIVEUOM
-    FROM C_ORDER, C_ORDERLINE, C_BPARTNER, M_PRODUCT, C_UOM
-    WHERE C_ORDER.C_BPARTNER_ID = C_BPARTNER.C_BPARTNER_ID
-    AND C_ORDER.C_ORDER_ID = C_ORDERLINE.C_ORDER_ID
-    AND C_ORDERLINE.M_PRODUCT_ID = M_PRODUCT.M_PRODUCT_ID
-    AND C_ORDERLINE.C_UOM_ID = C_UOM.C_UOM_ID
-    AND 1=1
-    $P!{aux_organization}
-    $P!{aux_partner}  
-    $P!{aux_warehouse}
-    $P!{aux_project} 
-    $P!{aux_DateFrom} 
-    $P!{aux_DateTo}
-    $P!{aux_Status}
-    AND C_ORDER.ISSOTRX = 'N'
-    AND C_ORDER.AD_CLIENT_ID = ($P{Current_Client_ID})
-    AND C_ORDER.AD_ORG_ID IN ($P!{Readable_Organizations})
-    GROUP BY C_BPARTNER.C_BPARTNER_ID, C_BPARTNER.NAME, 
C_ORDERLINE.PRICEACTUAL, M_PRODUCT.NAME, C_UOM.NAME, C_ORDER.DOCUMENTNO, 
-    C_ORDER.DATEORDERED, C_ORDERLINE.C_CURRENCY_ID, C_ORDER.C_CURRENCY_ID,
-    C_ORDERLINE.AD_CLIENT_ID, C_ORDERLINE.AD_ORG_ID, C_ORDERLINE.AUMQTY, 
C_ORDERLINE.C_AUM
+        SELECT C_ORDER.C_BPARTNER_ID AS BPARTNER_ID,
+            C_ORDERLINE.M_PRODUCT_ID AS PRODUCT_ID,
+            C_ORDER.DOCUMENTNO AS DOCUMENTNO, 
+            C_ORDER.DATEORDERED AS DATEORDERED, 
+            C_ORDERLINE.C_UOM_ID AS OLUOMID,
+            SUM(C_ORDERLINE.QTYORDERED) AS QUANTITYORDER, 
+            C_ORDERLINE.PRICEACTUAL AS PRICEACTUAL,            
+            SUM(C_ORDERLINE.LINENETAMT) AS PRICELIST, 
+            C_ORDERLINE.C_CURRENCY_ID AS TRANSCURRENCYID,
+            C_ORDERLINE.AD_CLIENT_ID AS TRANSCLIENTID, 
+            C_ORDERLINE.AD_ORG_ID AS TRANSORGID,
+            C_ORDERLINE.AUMQTY AS ALTERNATIVEQTY,
+            C_ORDERLINE.C_AUM 
+            FROM C_ORDER, C_ORDERLINE
+                WHERE C_ORDER.C_ORDER_ID = C_ORDERLINE.C_ORDER_ID              
                          
+                    AND 1=1
+                    $P!{aux_organization}
+                    $P!{aux_partner}  
+                    $P!{aux_warehouse}
+                    $P!{aux_project} 
+                    $P!{aux_DateFrom} 
+                    $P!{aux_DateTo}
+                    $P!{aux_Status}
+                    AND C_ORDER.ISSOTRX = 'N'
+                    AND C_ORDER.AD_CLIENT_ID = ($P{Current_Client_ID})
+                    AND C_ORDER.AD_ORG_ID IN ($P!{Readable_Organizations})
+                GROUP BY C_ORDER.C_BPARTNER_ID, C_ORDERLINE.PRICEACTUAL, 
C_ORDERLINE.M_PRODUCT_ID, 
+                C_ORDERLINE.C_UOM_ID, C_ORDER.DOCUMENTNO, 
+                C_ORDER.DATEORDERED, C_ORDERLINE.C_CURRENCY_ID, 
C_ORDER.C_CURRENCY_ID,
+                C_ORDERLINE.AD_CLIENT_ID, C_ORDERLINE.AD_ORG_ID, 
C_ORDERLINE.AUMQTY, C_ORDERLINE.C_AUM
     ) ZZ
-    GROUP BY CLIENT_NAME, PRICEACTUAL, CONVPRICEACTUAL, PRODUCT_NAME, UOMNAME, 
DOCUMENTNO, DATEORDERED,
-    TRANSCURRENCYID, TRANSDATE, ALTERNATIVEQTY, ALTERNATIVEUOM
-    ORDER BY CLIENT_NAME, DATEORDERED, DOCUMENTNO]]>
+    INNER JOIN C_BPARTNER ON ZZ.BPARTNER_ID = C_BPARTNER.C_BPARTNER_ID 
+    INNER JOIN M_PRODUCT ON ZZ.PRODUCT_ID = M_PRODUCT.M_PRODUCT_ID 
+    INNER JOIN C_UOM ON ZZ.OLUOMID = C_UOM.C_UOM_ID    
+    LEFT JOIN C_UOM CUOM ON ZZ.C_AUM = CUOM.C_UOM_ID
+    ORDER BY CLIENT_NAME, DATEORDERED, DOCUMENTNO, PRODUCT_NAME]]>
        </queryString>
        <field name="DOCUMENTNO" class="java.lang.String"/>
        <field name="DATEORDERED" class="java.util.Date"/>


_______________________________________________
Openbravo-commits mailing list
Openbravo-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to