details:   https://code.openbravo.com/erp/devel/pi/rev/d951787ffbd6
changeset: 32403:d951787ffbd6
user:      Armaignac <collazoandy4 <at> gmail.com>
date:      Fri Jun 30 17:07:40 2017 -0400
summary:   Fixes issue 36377: Cannot launch Valued Stock Report

Cannot launch Valued Stock Report if the role does not have
access to M_COSTING_RULE and M_TRANSACTION tables.

The Report access to M_COSTING_RULE and M_TRANSACTION tables and if the user 
role
does not have access an exception is raise.

Now the context set the admin mode when the report try to access the tables and
restoring the previous mode when finish the access

details:   https://code.openbravo.com/erp/devel/pi/rev/d960f963e0ff
changeset: 32404:d960f963e0ff
user:      Alvaro Ferraz <alvaro.ferraz <at> openbravo.com>
date:      Tue Jul 04 10:08:49 2017 +0200
summary:   Related to issue 36377: Code review improvements

Set admin mode at the beginning of getLEsCostingAlgortithm() and 
hasTrxWithNoCost() methods.

diffstat:

 src/org/openbravo/erpCommon/ad_reports/ReportValuationStock.java |  106 
+++++----
 1 files changed, 59 insertions(+), 47 deletions(-)

diffs (126 lines):

diff -r 2db97bde87bf -r d960f963e0ff 
src/org/openbravo/erpCommon/ad_reports/ReportValuationStock.java
--- a/src/org/openbravo/erpCommon/ad_reports/ReportValuationStock.java  Mon Jun 
26 15:07:39 2017 -0400
+++ b/src/org/openbravo/erpCommon/ad_reports/ReportValuationStock.java  Tue Jul 
04 10:08:49 2017 +0200
@@ -501,20 +501,26 @@
   }
 
   public static CostingRule getLEsCostingAlgortithm(Organization legalEntity) {
-    StringBuffer where = new StringBuffer();
-    where.append(" as cosrule");
-    where.append(" where cosrule." + CostingRule.PROPERTY_ORGANIZATION + ".id 
= :org");
-    where.append(" order by " + CostingRule.PROPERTY_STARTINGDATE + " desc");
+    try {
+      OBContext.setAdminMode(true);
 
-    OBQuery<CostingRule> whereQry = 
OBDal.getInstance().createQuery(CostingRule.class,
-        where.toString());
-    whereQry.setNamedParameter("org", legalEntity);
-    whereQry.setMaxResult(1);
-    CostingRule cr = whereQry.uniqueResult();
-    if (cr == null) {
-      return null;
+      StringBuffer where = new StringBuffer();
+      where.append(" as cosrule");
+      where.append(" where cosrule." + CostingRule.PROPERTY_ORGANIZATION + 
".id = :org");
+      where.append(" order by " + CostingRule.PROPERTY_STARTINGDATE + " desc");
+
+      OBQuery<CostingRule> whereQry = 
OBDal.getInstance().createQuery(CostingRule.class,
+          where.toString());
+      whereQry.setNamedParameter("org", legalEntity);
+      whereQry.setMaxResult(1);
+      CostingRule cr = whereQry.uniqueResult();
+      if (cr == null) {
+        return null;
+      }
+      return cr;
+    } finally {
+      OBContext.restorePreviousMode();
     }
-    return cr;
   }
 
   private String getCostType(CostingAlgorithm ca) throws ServletException {
@@ -539,42 +545,48 @@
 
   private boolean hasTrxWithNoCost(String strDate, Set<String> orgs, String 
strWarehouse,
       String strCategoryProduct) {
-    StringBuffer where = new StringBuffer();
-    where.append(" as trx");
-    where.append(" join trx." + MaterialTransaction.PROPERTY_STORAGEBIN + " as 
loc");
-    where.append(" join trx." + MaterialTransaction.PROPERTY_PRODUCT + " as 
p");
-    where.append(" where trx." + MaterialTransaction.PROPERTY_MOVEMENTDATE + " 
< :maxDate");
-    where.append("   and trx." + MaterialTransaction.PROPERTY_ISCOSTCALCULATED 
+ " = false");
-    where.append("   and trx." + MaterialTransaction.PROPERTY_ORGANIZATION + 
".id in (:orgs)");
-    if (StringUtils.isNotBlank(strWarehouse)) {
-      where.append("   and loc." + Locator.PROPERTY_WAREHOUSE + ".id = :wh");
+    try {
+      OBContext.setAdminMode(true);
+
+      StringBuffer where = new StringBuffer();
+      where.append(" as trx");
+      where.append(" join trx." + MaterialTransaction.PROPERTY_STORAGEBIN + " 
as loc");
+      where.append(" join trx." + MaterialTransaction.PROPERTY_PRODUCT + " as 
p");
+      where.append(" where trx." + MaterialTransaction.PROPERTY_MOVEMENTDATE + 
" < :maxDate");
+      where.append("   and trx." + 
MaterialTransaction.PROPERTY_ISCOSTCALCULATED + " = false");
+      where.append("   and trx." + MaterialTransaction.PROPERTY_ORGANIZATION + 
".id in (:orgs)");
+      if (StringUtils.isNotBlank(strWarehouse)) {
+        where.append("   and loc." + Locator.PROPERTY_WAREHOUSE + ".id = :wh");
+      }
+      where.append("   and p." + Product.PROPERTY_STOCKED + " = true");
+      if (StringUtils.isNotBlank(strCategoryProduct)) {
+        where.append("   and p." + Product.PROPERTY_PRODUCTCATEGORY + ".id = 
:prodCategory");
+      }
+
+      OBQuery<MaterialTransaction> whereQry = OBDal.getInstance().createQuery(
+          MaterialTransaction.class, where.toString());
+      whereQry.setFilterOnReadableClients(false);
+      whereQry.setFilterOnReadableOrganization(false);
+      try {
+        whereQry.setNamedParameter("maxDate",
+            OBDateUtils.getDate(DateTimeData.nDaysAfter(this, strDate, "1")));
+      } catch (Exception e) {
+        // DoNothing parse exception not expected.
+        log4j.error("error parsing date: " + strDate, e);
+      }
+      whereQry.setNamedParameter("orgs", orgs);
+      if (StringUtils.isNotBlank(strWarehouse)) {
+        whereQry.setNamedParameter("wh", strWarehouse);
+      }
+
+      if (StringUtils.isNotBlank(strCategoryProduct)) {
+        whereQry.setNamedParameter("prodCategory", strCategoryProduct);
+      }
+      whereQry.setMaxResult(1);
+      return whereQry.uniqueResult() != null;
+    } finally {
+      OBContext.restorePreviousMode();
     }
-    where.append("   and p." + Product.PROPERTY_STOCKED + " = true");
-    if (StringUtils.isNotBlank(strCategoryProduct)) {
-      where.append("   and p." + Product.PROPERTY_PRODUCTCATEGORY + ".id = 
:prodCategory");
-    }
-
-    OBQuery<MaterialTransaction> whereQry = OBDal.getInstance().createQuery(
-        MaterialTransaction.class, where.toString());
-    whereQry.setFilterOnReadableClients(false);
-    whereQry.setFilterOnReadableOrganization(false);
-    try {
-      whereQry.setNamedParameter("maxDate",
-          OBDateUtils.getDate(DateTimeData.nDaysAfter(this, strDate, "1")));
-    } catch (Exception e) {
-      // DoNothing parse exception not expected.
-      log4j.error("error parsing date: " + strDate, e);
-    }
-    whereQry.setNamedParameter("orgs", orgs);
-    if (StringUtils.isNotBlank(strWarehouse)) {
-      whereQry.setNamedParameter("wh", strWarehouse);
-    }
-
-    if (StringUtils.isNotBlank(strCategoryProduct)) {
-      whereQry.setNamedParameter("prodCategory", strCategoryProduct);
-    }
-    whereQry.setMaxResult(1);
-    return whereQry.uniqueResult() != null;
   }
 
   @SuppressWarnings("unchecked")

------------------------------------------------------------------------------
Check out the vibrant tech community on one of the world's most
engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________
Openbravo-commits mailing list
Openbravo-commits@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/openbravo-commits

Reply via email to