IDEMPIERE-5593 - Drill Rule: Do not render Drill Rules for the same Report (#1692)

* IDEMPIERE-5593 - Drill Rule: Do not render Drill Rules for the same Report

* IDEMPIERE-5593 - fixes
This commit is contained in:
Peter Takács 2023-03-02 12:35:25 +01:00 committed by GitHub
parent 36613c467e
commit 8ede4bd048
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 56 additions and 30 deletions

View File

@ -453,17 +453,27 @@ public final class AEnv
/**
* Opens the Drill Assistant
* @param data query
* @param component
* @param windowNo
*/
public static void actionDrill(DrillData data, int windowNo) {
int AD_Table_ID = MTable.getTable_ID(data.getQuery().getTableName());
if (!MRole.getDefault().isCanReport(AD_Table_ID))
{
Dialog.error(windowNo, "AccessCannotReport", data.getQuery().getTableName());
return;
}
actionDrill(data, windowNo, 0);
}
/**
* Opens the Drill Assistant
* @param data query
* @param windowNo
* @param processID Source Report
*/
public static void actionDrill(DrillData data, int windowNo, int processID) {
int AD_Table_ID = MTable.getTable_ID(data.getQuery().getTableName());
if (AD_Table_ID > 0) {
WDrillReport drillReport = new WDrillReport(data, windowNo);
if (!MRole.getDefault().isCanReport(AD_Table_ID))
{
Dialog.error(windowNo, "AccessCannotReport", data.getQuery().getTableName());
return;
}
WDrillReport drillReport = new WDrillReport(data, windowNo, processID);
Object window = SessionManager.getAppDesktop().findWindow(windowNo);
if (window != null && window instanceof Component && window instanceof ISupportMask){

View File

@ -105,10 +105,20 @@ public class WDrillReport extends Window implements EventListener<Event> {
* @param data
* @param WindowNo
*/
public WDrillReport(DrillData data, int WindowNo) {
public WDrillReport(DrillData data, int windowNo) {
this(data, windowNo, 0);
}
/**
*
* @param data
* @param WindowNo
* @param processID
*/
public WDrillReport(DrillData data, int windowNo, int processID) {
super();
this.windowNo = WindowNo;
drillReportCtl = new DrillReportCtl(data.getQuery().getTableName(), data.getQuery(), data.getColumnName(), data.getValue(), data.getDisplayValue(), WindowNo);
this.windowNo = windowNo;
drillReportCtl = new DrillReportCtl(data.getQuery().getTableName(), data.getQuery(), data.getColumnName(), data.getValue(), data.getDisplayValue(), windowNo, processID);
this.setTitle(Msg.getMsg(Env.getCtx(), "DrillAssistant"));
this.setClosable(true);

View File

@ -175,6 +175,8 @@ public class ZkReportViewer extends Window implements EventListener<Event>, ITab
/** Table ID */
private int m_AD_Table_ID = 0;
private boolean m_isCanExport;
/** Process ID */
private int m_AD_Process_ID = 0;
private MQuery m_ddQ = null;
private MQuery m_daQ = null;
@ -787,8 +789,8 @@ public class ZkReportViewer extends Window implements EventListener<Event>, ITab
int AD_Window_ID = Env.getContextAsInt(Env.getCtx(), m_reportEngine.getWindowNo(), "_WinInfo_AD_Window_ID", true);
if (AD_Window_ID == 0)
AD_Window_ID = Env.getZoomWindowID(m_reportEngine.getQuery());
int AD_Process_ID = m_reportEngine.getPrintInfo() != null ? m_reportEngine.getPrintInfo().getAD_Process_ID() : 0;
updateToolbarAccess(AD_Window_ID, AD_Process_ID);
m_AD_Process_ID = m_reportEngine.getPrintInfo() != null ? m_reportEngine.getPrintInfo().getAD_Process_ID() : 0;
updateToolbarAccess(AD_Window_ID, m_AD_Process_ID);
this.setBorder("normal");
@ -814,7 +816,7 @@ public class ZkReportViewer extends Window implements EventListener<Event>, ITab
DrillEvent de = (DrillEvent) event;
if (de.getData() != null && de.getData() instanceof DrillData) {
DrillData data = (DrillData) de.getData();
AEnv.actionDrill(data, m_WindowNo);
AEnv.actionDrill(data, m_WindowNo, m_AD_Process_ID);
}
}

View File

@ -81,6 +81,9 @@ public class DrillReportCtl {
private String m_DisplayValue;
/** Process ID of the source Report */
private int m_AD_Process_ID;
/** Drill Tables Map */
private KeyNamePair[] drillTables;
@ -95,20 +98,21 @@ public class DrillReportCtl {
/**
*
* @param ctx
* @param TableName
* @param query
* @param ColumnName
* @param Value
* @param displayValue
* @param WindowNo
* @param processID
*/
public DrillReportCtl(String TableName, MQuery query, String ColumnName, Object Value, String displayValue, int WindowNo) {
public DrillReportCtl(String TableName, MQuery query, String ColumnName, Object Value, String displayValue, int WindowNo, int processID) {
this.m_TableName = TableName;
this.m_ColumnName = ColumnName;
this.m_Value = Value;
this.m_WindowNo = WindowNo;
this.m_DisplayValue = displayValue;
this.m_AD_Process_ID = processID;
m_Query = query;
@ -179,9 +183,9 @@ public class DrillReportCtl {
if(!Util.isEmpty(m_ColumnName)) {
MProcessDrillRule[] processDrillRules = MProcessDrillRule.getByColumnName(Env.getCtx(), m_ColumnName, null);
for( MProcessDrillRule drillProcesRule: processDrillRules) {
MProcess process = MProcess.get(drillProcesRule.getAD_Process_ID());
if(process == null)
if (drillProcesRule.getAD_Process_ID() == 0 || drillProcesRule.getAD_Process_ID() == m_AD_Process_ID)
continue;
MProcess process = MProcess.get(drillProcesRule.getAD_Process_ID());
drillProcessMap.put(drillProcesRule.getAD_Process_ID(), process.get_Translation(MProcess.COLUMNNAME_Name));