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