details:   /erp/devel/pi/rev/0f75f9ed2c72
changeset: 8744:0f75f9ed2c72
user:      Harikrishnan Raja <harikrishnan.raja <at> openbravo.com>
date:      Tue Oct 26 13:06:52 2010 +0530
summary:   Fixes Issue 10690: Expense Report and Project Profitability Reports 
display hours even if time sheet lines are in days

diffstat:

 src-db/database/sourcedata/AD_FIELD.xml                                     |  
 2 +-
 src-db/database/sourcedata/AD_MESSAGE.xml                                   |  
11 +++
 src/org/openbravo/erpCommon/ad_reports/ReportExpense.java                   |  
35 +++++++--
 src/org/openbravo/erpCommon/ad_reports/ReportExpense_data.xsql              |  
20 ++++-
 src/org/openbravo/erpCommon/ad_reports/ReportProjectProfitabilityJR.java    |  
 8 ++
 src/org/openbravo/erpCommon/ad_reports/ReportProjectProfitability_data.xsql |  
23 ++++-
 6 files changed, 79 insertions(+), 20 deletions(-)

diffs (205 lines):

diff -r 8dba4df81fbb -r 0f75f9ed2c72 src-db/database/sourcedata/AD_FIELD.xml
--- a/src-db/database/sourcedata/AD_FIELD.xml   Tue Oct 26 11:53:58 2010 +0530
+++ b/src-db/database/sourcedata/AD_FIELD.xml   Tue Oct 26 13:06:52 2010 +0530
@@ -76628,7 +76628,7 @@
 <!--6235-->  <AD_COLUMN_ID><![CDATA[8169]]></AD_COLUMN_ID>
 <!--6235-->  <ISDISPLAYED><![CDATA[Y]]></ISDISPLAYED>
 <!--6235-->  <DISPLAYLENGTH><![CDATA[21]]></DISPLAYLENGTH>
-<!--6235-->  <ISREADONLY><![CDATA[N]]></ISREADONLY>
+<!--6235-->  <ISREADONLY><![CDATA[Y]]></ISREADONLY>
 <!--6235-->  <SEQNO><![CDATA[110]]></SEQNO>
 <!--6235-->  <ISSAMELINE><![CDATA[Y]]></ISSAMELINE>
 <!--6235-->  <ISFIELDONLY><![CDATA[N]]></ISFIELDONLY>
diff -r 8dba4df81fbb -r 0f75f9ed2c72 src-db/database/sourcedata/AD_MESSAGE.xml
--- a/src-db/database/sourcedata/AD_MESSAGE.xml Tue Oct 26 11:53:58 2010 +0530
+++ b/src-db/database/sourcedata/AD_MESSAGE.xml Tue Oct 26 13:06:52 2010 +0530
@@ -29542,6 +29542,17 @@
 <!--01C801B95D4A44E2956F9057C7E38A6A-->  
<AD_MODULE_ID><![CDATA[0]]></AD_MODULE_ID>
 <!--01C801B95D4A44E2956F9057C7E38A6A--></AD_MESSAGE>
 
+<!--02758CBBA66D42108380E648EF7C026E--><AD_MESSAGE>
+<!--02758CBBA66D42108380E648EF7C026E-->  
<AD_MESSAGE_ID><![CDATA[02758CBBA66D42108380E648EF7C026E]]></AD_MESSAGE_ID>
+<!--02758CBBA66D42108380E648EF7C026E-->  
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
+<!--02758CBBA66D42108380E648EF7C026E-->  <AD_ORG_ID><![CDATA[0]]></AD_ORG_ID>
+<!--02758CBBA66D42108380E648EF7C026E-->  <ISACTIVE><![CDATA[Y]]></ISACTIVE>
+<!--02758CBBA66D42108380E648EF7C026E-->  
<VALUE><![CDATA[NoConversionDayUom]]></VALUE>
+<!--02758CBBA66D42108380E648EF7C026E-->  <MSGTEXT><![CDATA[Their is no 
Conversion Rate defined for Day to Hour.]]></MSGTEXT>
+<!--02758CBBA66D42108380E648EF7C026E-->  <MSGTYPE><![CDATA[E]]></MSGTYPE>
+<!--02758CBBA66D42108380E648EF7C026E-->  
<AD_MODULE_ID><![CDATA[0]]></AD_MODULE_ID>
+<!--02758CBBA66D42108380E648EF7C026E--></AD_MESSAGE>
+
 <!--03C7B58E00F246E7BA06D153B3DB2D5B--><AD_MESSAGE>
 <!--03C7B58E00F246E7BA06D153B3DB2D5B-->  
<AD_MESSAGE_ID><![CDATA[03C7B58E00F246E7BA06D153B3DB2D5B]]></AD_MESSAGE_ID>
 <!--03C7B58E00F246E7BA06D153B3DB2D5B-->  
<AD_CLIENT_ID><![CDATA[0]]></AD_CLIENT_ID>
diff -r 8dba4df81fbb -r 0f75f9ed2c72 
src/org/openbravo/erpCommon/ad_reports/ReportExpense.java
--- a/src/org/openbravo/erpCommon/ad_reports/ReportExpense.java Tue Oct 26 
11:53:58 2010 +0530
+++ b/src/org/openbravo/erpCommon/ad_reports/ReportExpense.java Tue Oct 26 
13:06:52 2010 +0530
@@ -84,13 +84,14 @@
       String strCurrencyId = vars.getGlobalVariable("inpCurrencyId", 
"ReportExpense|currency",
           strUserCurrencyId);
       String strOutput = "html";
-       if (vars.commandIn("PDF")){
+      if (vars.commandIn("PDF")) {
         strOutput = "pdf";
-      printPageDataPDF(request, response, vars, strDateFrom, strDateTo, 
strcBpartnerId,
-          strPartner, strProject, strExpense, strCurrencyId, strOutput);
-        
-      } else printPageDataHtml(request, response, vars, strDateFrom, 
strDateTo, strcBpartnerId,
-          strPartner, strProject, strExpense, strCurrencyId);
+        printPageDataPDF(request, response, vars, strDateFrom, strDateTo, 
strcBpartnerId,
+            strPartner, strProject, strExpense, strCurrencyId, strOutput);
+
+      } else
+        printPageDataHtml(request, response, vars, strDateFrom, strDateTo, 
strcBpartnerId,
+            strPartner, strProject, strExpense, strCurrencyId);
     } else
       pageError(response);
   }
@@ -127,6 +128,14 @@
         myMessage = Utility.translateError(this, vars, vars.getLanguage(), 
ex.getMessage());
       }
     }
+    for (int i = 0; i < data1.length; i++) {
+      String count = ReportExpenseData.selectUOM(this, data1[i].cuomid);
+      if (Integer.parseInt(count) == 0) {
+        advisePopUp(request, response, "ERROR", Utility
+            .messageBD(this, "Error", vars.getLanguage()), 
Utility.messageBD(this,
+            "NoConversionDayUom", vars.getLanguage()));
+      }
+    }
     strConvRateErrorMsg = myMessage.getMessage();
     // If a conversion rate is missing for a certain transaction, an error
     // message window pops-up.
@@ -148,10 +157,10 @@
     }
   }
 
-private void printPageDataPDF(HttpServletRequest request, HttpServletResponse 
response,
+  private void printPageDataPDF(HttpServletRequest request, 
HttpServletResponse response,
       VariablesSecureApp vars, String strDateFrom, String strDateTo, String 
strcBpartnerId,
-      String strPartner, String strProject, String strExpense, String 
strCurrencyId, String strOutput) throws IOException,
-      ServletException {
+      String strPartner, String strProject, String strExpense, String 
strCurrencyId,
+      String strOutput) throws IOException, ServletException {
     if (log4j.isDebugEnabled())
       log4j.debug("Output: PDF");
     String discard[] = { "sectionPartner" };
@@ -179,6 +188,14 @@
         myMessage = Utility.translateError(this, vars, vars.getLanguage(), 
ex.getMessage());
       }
     }
+    for (int i = 0; i < data1.length; i++) {
+      String count = ReportExpenseData.selectUOM(this, data1[i].cuomid);
+      if (Integer.parseInt(count) == 0) {
+        advisePopUp(request, response, "ERROR", Utility
+            .messageBD(this, "Error", vars.getLanguage()), 
Utility.messageBD(this,
+            "NoConversionDayUom", vars.getLanguage()));
+      }
+    }
     strConvRateErrorMsg = myMessage.getMessage();
     // If a conversion rate is missing for a certain transaction, an error
     // message window pops-up.
diff -r 8dba4df81fbb -r 0f75f9ed2c72 
src/org/openbravo/erpCommon/ad_reports/ReportExpense_data.xsql
--- a/src/org/openbravo/erpCommon/ad_reports/ReportExpense_data.xsql    Tue Oct 
26 11:53:58 2010 +0530
+++ b/src/org/openbravo/erpCommon/ad_reports/ReportExpense_data.xsql    Tue Oct 
26 13:06:52 2010 +0530
@@ -25,13 +25,13 @@
     <Sql>
     <![CDATA[
       SELECT C_CURRENCY_ISOSYM(?) AS CONVISOSYM, CBE.NAME AS EMPLOYEE, (CASE 
S_L.ISTIMEREPORT WHEN 'Y' THEN S_L.QTY ELSE 0 END) * 
-         
C_CURRENCY_CONVERT(C_CALCULATECOST_CATSALARY(C_CALCULATE_CATSALARY(s.c_bpartner_id,
  (CASE WHEN S_L.DATEEXPENSE IS NULL THEN S.DATEREPORT ELSE S_L.DATEEXPENSE 
END)), (CASE WHEN S_L.DATEEXPENSE IS NULL THEN S.DATEREPORT ELSE 
S_L.DATEEXPENSE END)),
-         ?, ?, (CASE WHEN S_L.DATEEXPENSE IS NULL THEN S.DATEREPORT ELSE 
S_L.DATEEXPENSE END), NULL, S_L.AD_CLIENT_ID, S_L.AD_ORG_ID) AS COST, 
+        
C_Uom_Convert(C_CURRENCY_CONVERT(C_CALCULATECOST_CATSALARY(C_CALCULATE_CATSALARY(s.c_bpartner_id,
  (CASE WHEN S_L.DATEEXPENSE IS NULL THEN S.DATEREPORT ELSE S_L.DATEEXPENSE 
END)), (CASE WHEN S_L.DATEEXPENSE IS NULL THEN S.DATEREPORT ELSE 
S_L.DATEEXPENSE END)),
+         ?, ?, (CASE WHEN S_L.DATEEXPENSE IS NULL THEN S.DATEREPORT ELSE 
S_L.DATEEXPENSE END), NULL, S_L.AD_CLIENT_ID, S_L.AD_ORG_ID),C_UOM.C_UOM_ID, 
(select C_UOM_CONVERSION.C_UOM_TO_ID from C_UOM_CONVERSION WHERE 
C_UOM_CONVERSION.C_UOM_ID = C_UOM.C_UOM_ID),'Y') AS COST, 
              CBC.NAME AS NAME, (P.VALUE || ' - ' ||P.NAME) AS DESCR, 
M_PRODUCT.NAME AS PRODUCTNAME, C_UOM.NAME AS UOMNAME,
-             (CASE S_L.ISTIMEREPORT WHEN 'N' THEN S_L.QTY ELSE 0 END) AS QTY, 
(CASE S_L.ISTIMEREPORT WHEN 'Y' THEN S_L.QTY ELSE 0 END) AS HORAS, 
+             (CASE S_L.ISTIMEREPORT WHEN 'N' THEN S_L.QTY ELSE 0 END) AS QTY, 
(CASE S_L.ISTIMEREPORT WHEN 'Y' THEN C_Uom_Convert(S_L.QTY,C_UOM.C_UOM_ID, 
(select C_UOM_CONVERSION.C_UOM_TO_ID from C_UOM_CONVERSION WHERE 
C_UOM_CONVERSION.C_UOM_ID = C_UOM.C_UOM_ID),'Y') ELSE 0 END) AS HORAS, 
              (CASE WHEN S_L.DATEEXPENSE IS NULL THEN S.DATEREPORT ELSE 
S_L.DATEEXPENSE END) AS DATEEXPENSE, 
              (CASE WHEN S_L.ISTIMEREPORT ='N' THEN 
C_CURRENCY_CONVERT(COALESCE(S_L.EXPENSEAMT,0), S_L.C_CURRENCY_ID, ?, (CASE WHEN 
S_L.DATEEXPENSE IS NULL THEN S.DATEREPORT ELSE S_L.DATEEXPENSE END), NULL, 
S_L.AD_CLIENT_ID, S_L.AD_ORG_ID) ELSE 0 END) AS INVOICEPRICE, 
-             AD_MESSAGE_GET2(S.PROCESSED,?) AS PROCESSED, (CASE WHEN 
S_L.DESCRIPTION IS NULL THEN S.DESCRIPTION ELSE S_L.DESCRIPTION END) AS 
DESCRIPTION, S_L.S_TIMEEXPENSELINE_ID, S.DOCUMENTNO
+             AD_MESSAGE_GET2(S.PROCESSED,?) AS PROCESSED, (CASE WHEN 
S_L.DESCRIPTION IS NULL THEN S.DESCRIPTION ELSE S_L.DESCRIPTION END) AS 
DESCRIPTION, S_L.S_TIMEEXPENSELINE_ID, S.DOCUMENTNO,C_UOM.C_UOM_ID AS cUomId, 
'' AS COUNT
       FROM S_TIMEEXPENSE S, C_BPARTNER CBE, M_PRODUCT, C_UOM, 
S_TIMEEXPENSELINE S_L
       LEFT JOIN C_PROJECT P ON S_L.C_PROJECT_ID = P.C_PROJECT_ID
       LEFT JOIN C_BPARTNER CBC ON S_L.C_BPARTNER_ID = CBC.C_BPARTNER_ID
@@ -71,6 +71,18 @@
      ]]></Sql>
     <Parameter name="cBpartnerId"/>
   </SqlMethod>
+  
+  <SqlMethod name="selectUOM" type="preparedStatement" return="String" 
default="">
+    <SqlMethodComment></SqlMethodComment>
+    <Sql>
+    <![CDATA[
+      SELECT COUNT(C_UOM_CONVERSION.C_UOM_ID) AS COUNT FROM 
C_UOM_CONVERSION,C_UOM 
+      WHERE C_UOM_CONVERSION.C_UOM_ID = ?
+      AND C_UOM_CONVERSION.C_UOM_TO_ID = C_UOM.C_UOM_ID
+      AND C_UOM.UOMSYMBOL='h' 
+     ]]></Sql>
+    <Parameter name="cUomId"/>
+  </SqlMethod>
 
   <SqlMethod name="set" type="constant" return="multiple">
       <SqlMethodComment></SqlMethodComment>
diff -r 8dba4df81fbb -r 0f75f9ed2c72 
src/org/openbravo/erpCommon/ad_reports/ReportProjectProfitabilityJR.java
--- a/src/org/openbravo/erpCommon/ad_reports/ReportProjectProfitabilityJR.java  
Tue Oct 26 11:53:58 2010 +0530
+++ b/src/org/openbravo/erpCommon/ad_reports/ReportProjectProfitabilityJR.java  
Tue Oct 26 13:06:52 2010 +0530
@@ -145,6 +145,14 @@
     }
     strConvRateErrorMsg = myMessage.getMessage();
 
+    for (int i = 0; i < data.length; i++) {
+      String count = ReportExpenseData.selectUOM(this, data[i].cuomid);
+      if (Integer.parseInt(count) == 0) {
+        advisePopUp(request, response, "ERROR", Utility
+            .messageBD(this, "Error", vars.getLanguage()), 
Utility.messageBD(this,
+            "NoConversionDayUom", vars.getLanguage()));
+      }
+    }
     // If a conversion rate is missing for a certain transaction, an error
     // message window pops-up.
     if (!strConvRateErrorMsg.equals("") && strConvRateErrorMsg != null) {
diff -r 8dba4df81fbb -r 0f75f9ed2c72 
src/org/openbravo/erpCommon/ad_reports/ReportProjectProfitability_data.xsql
--- 
a/src/org/openbravo/erpCommon/ad_reports/ReportProjectProfitability_data.xsql   
    Tue Oct 26 11:53:58 2010 +0530
+++ 
b/src/org/openbravo/erpCommon/ad_reports/ReportProjectProfitability_data.xsql   
    Tue Oct 26 13:06:52 2010 +0530
@@ -47,20 +47,20 @@
           COALESCE(EXPEXP.AMOUNT,0) AS REALEXPENSES,
 
           COALESCE(COLLECTED.AMOUNT,0) AS COLLECTED, 
-          '' AS NODE_ID, '' AS ISSUMMARY
+          '' AS NODE_ID, '' AS ISSUMMARY ,COST.cUomId AS cUomId, '' AS COUNT
         FROM C_BPartner bpclient, AD_Org org, 
           C_Project p LEFT JOIN C_BPartner bpresp ON  p.Responsible_ID = 
bpresp.C_BPartner_ID
                       LEFT JOIN C_Projecttype pt ON pt.C_Projecttype_ID = 
p.C_Projecttype_ID 
                       LEFT JOIN (SELECT S_TimeExpenseLine.C_Project_ID, 
-         SUM((CASE S_TimeExpenseLine.IsTimereport WHEN 'Y' THEN 
S_TimeExpenseLine.qty ELSE 0 END)*
-         
C_CURRENCY_CONVERT(C_CALCULATECOST_CATSALARY(C_CALCULATE_CATSALARY(C_BPartner.c_bpartner_id,
 TO_DATE(COALESCE(S_TimeExpenseLine.DATEEXPENSE, s_timeexpense.DATEREPORT))), 
TO_DATE(COALESCE(S_TimeExpenseLine.DATEEXPENSE, s_timeexpense.DATEREPORT))),
-         ?, ?, TO_DATE(COALESCE(S_TimeExpenseLine.DATEEXPENSE, 
s_timeexpense.DATEREPORT)), NULL, S_TimeExpenseLine.AD_CLIENT_ID, 
S_TimeExpenseLine.AD_ORG_ID)) AS cost
-           FROM S_TimeExpenseLine , S_TimeExpense, C_BPartner
+         SUM((CASE S_TimeExpenseLine.IsTimereport WHEN 'Y' THEN 
C_Uom_Convert(S_TimeExpenseLine.qty,C_UOM.C_UOM_ID, (select 
C_UOM_CONVERSION.C_UOM_TO_ID from C_UOM_CONVERSION WHERE 
C_UOM_CONVERSION.C_UOM_ID = C_UOM.C_UOM_ID),'Y') ELSE 0 
END)*C_CURRENCY_CONVERT(C_CALCULATECOST_CATSALARY(C_CALCULATE_CATSALARY(C_BPartner.c_bpartner_id,
 TO_DATE(COALESCE(S_TimeExpenseLine.DATEEXPENSE, s_timeexpense.DATEREPORT))), 
TO_DATE(COALESCE(S_TimeExpenseLine.DATEEXPENSE, s_timeexpense.DATEREPORT))),
+         ?, ?, TO_DATE(COALESCE(S_TimeExpenseLine.DATEEXPENSE, 
s_timeexpense.DATEREPORT)), NULL, S_TimeExpenseLine.AD_CLIENT_ID, 
S_TimeExpenseLine.AD_ORG_ID)) AS cost,C_UOM.C_UOM_ID AS cUomId
+           FROM S_TimeExpenseLine , S_TimeExpense, C_BPartner, C_Uom
            WHERE S_TimeExpense.S_TimeExpense_ID = 
S_TimeExpenseLine.S_TimeExpense_ID
            AND S_TimeExpense.C_BPartner_ID = C_BPartner.C_BPartner_ID
+           AND S_TimeExpenseLine.C_UOM_ID = C_UOM.C_UOM_ID
            AND S_TimeExpense.Processed = 'Y'
            AND 1=1            
-           GROUP BY S_TimeExpenseLine.C_Project_ID) cost ON p.C_Project_ID = 
cost.C_Project_ID
+           GROUP BY S_TimeExpenseLine.C_Project_ID,C_UOM.C_UOM_ID) cost ON 
p.C_Project_ID = cost.C_Project_ID
 
                       LEFT JOIN (SELECT c_Project, sum(amount) as amount
            FROM (
@@ -290,4 +290,15 @@
     <Parameter name="adOrgId"/>
     <Parameter name="adClientId"/>
   </SqlMethod>
+   <SqlMethod name="selectUOM" type="preparedStatement" return="String" 
default="">
+    <SqlMethodComment></SqlMethodComment>
+    <Sql>
+    <![CDATA[
+      SELECT COUNT(C_UOM_CONVERSION.C_UOM_ID) AS COUNT FROM 
C_UOM_CONVERSION,C_UOM 
+      WHERE C_UOM_CONVERSION.C_UOM_ID = ?
+      AND C_UOM_CONVERSION.C_UOM_TO_ID = C_UOM.C_UOM_ID
+      AND C_UOM.UOMSYMBOL='h'
+     ]]></Sql>
+    <Parameter name="cUomId"/>
+  </SqlMethod>
 </SqlClass>

------------------------------------------------------------------------------
Nokia and AT&T present the 2010 Calling All Innovators-North America contest
Create new apps & games for the Nokia N8 for consumers in  U.S. and Canada
$10 million total in prizes - $4M cash, 500 devices, nearly $6M in marketing
Develop with Nokia Qt SDK, Web Runtime, or Java and Publish to Ovi Store 
http://p.sf.net/sfu/nokia-dev2dev
_______________________________________________
Openbravo-commits mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to