IDEMPIERE-5528 : Default logic on process dialog not getting value from tab. (#1634)

This commit is contained in:
Deepak Pansheriya 2023-01-15 08:13:58 +05:30 committed by GitHub
parent 0d1ef0ae77
commit 7ab1e8c3d5
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
6 changed files with 64 additions and 6 deletions

View File

@ -844,7 +844,7 @@ public class GridField
if (defStr.equals("@SysDate@")) // System Time if (defStr.equals("@SysDate@")) // System Time
return new Timestamp (System.currentTimeMillis()); return new Timestamp (System.currentTimeMillis());
else if (defStr.indexOf('@') != -1) // it is a variable else if (defStr.indexOf('@') != -1) // it is a variable
defStr = Env.parseContext(m_vo.ctx, m_vo.WindowNo, defStr.trim(), false, false); defStr = Env.parseContext(m_vo.ctx, m_vo.WindowNo, m_vo.TabNo, defStr.trim(), false, false);
else if (defStr.indexOf("'") != -1) // it is a 'String' else if (defStr.indexOf("'") != -1) // it is a 'String'
defStr = defStr.replace('\'', ' ').trim(); defStr = defStr.replace('\'', ' ').trim();

View File

@ -331,7 +331,18 @@ public class GridFieldVO implements Serializable, Cloneable
*/ */
public static GridFieldVO createParameter (Properties ctx, int WindowNo, int ProcessIDOfPanel, int WindowIDOfPanel, int InfoWindowIDOfPanel, ResultSet rs) public static GridFieldVO createParameter (Properties ctx, int WindowNo, int ProcessIDOfPanel, int WindowIDOfPanel, int InfoWindowIDOfPanel, ResultSet rs)
{ {
GridFieldVO vo = new GridFieldVO (ctx, WindowNo, 0, 0, 0, false); return GridFieldVO.createParameter(ctx, WindowNo, 0, ProcessIDOfPanel, WindowIDOfPanel, InfoWindowIDOfPanel, rs);
}
/**
* Init Field for Process Parameter
* @param ctx context
* @param WindowNo window
* @param rs result set AD_Process_Para
* @return MFieldVO
*/
public static GridFieldVO createParameter (Properties ctx, int WindowNo, int TabNo, int ProcessIDOfPanel, int WindowIDOfPanel, int InfoWindowIDOfPanel, ResultSet rs)
{
GridFieldVO vo = new GridFieldVO (ctx, WindowNo, TabNo, 0, 0, false);
vo.isProcess = true; vo.isProcess = true;
vo.IsDisplayed = true; vo.IsDisplayed = true;
vo.IsReadOnly = false; vo.IsReadOnly = false;

View File

@ -3713,7 +3713,7 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements
} }
} }
ProcessModalDialog dialog = new ProcessModalDialog(this, curWindowNo, pi, startWOasking); ProcessModalDialog dialog = new ProcessModalDialog(this, curWindowNo, adtabPanel.getGridTab().getTabNo(), pi, startWOasking);
if (dialog.isValid()) if (dialog.isValid())
{ {

View File

@ -114,6 +114,7 @@ public abstract class AbstractProcessDialog extends Window implements IProcessUI
private static final CLogger log = CLogger.getCLogger(AbstractProcessDialog.class); private static final CLogger log = CLogger.getCLogger(AbstractProcessDialog.class);
protected int m_WindowNo; protected int m_WindowNo;
protected int m_TabNo;
private Properties m_ctx; private Properties m_ctx;
private int m_AD_Process_ID; private int m_AD_Process_ID;
private ProcessInfo m_pi = null; private ProcessInfo m_pi = null;
@ -157,9 +158,27 @@ public abstract class AbstractProcessDialog extends Window implements IProcessUI
* @return * @return
*/ */
protected boolean init(Properties ctx, int WindowNo, int AD_Process_ID, ProcessInfo pi, boolean autoStart, boolean isDisposeOnComplete) protected boolean init(Properties ctx, int WindowNo, int AD_Process_ID, ProcessInfo pi, boolean autoStart, boolean isDisposeOnComplete)
{
return init(ctx, WindowNo, 0, AD_Process_ID, pi, autoStart, isDisposeOnComplete);
}
/**
* layout as below
*
* @param ctx
* @param WindowNo
* @param TabNo
* @param AD_Process_ID
* @param pi
* @param autoStart
* @param isDisposeOnComplete
* @return
*/
protected boolean init(Properties ctx, int WindowNo, int TabNo, int AD_Process_ID, ProcessInfo pi, boolean autoStart, boolean isDisposeOnComplete)
{ {
m_ctx = ctx; m_ctx = ctx;
m_WindowNo = WindowNo; m_WindowNo = WindowNo;
m_TabNo = TabNo;
m_AD_Process_ID = AD_Process_ID; m_AD_Process_ID = AD_Process_ID;
setProcessInfo(pi); setProcessInfo(pi);
m_disposeOnComplete = isDisposeOnComplete; m_disposeOnComplete = isDisposeOnComplete;
@ -214,7 +233,7 @@ public abstract class AbstractProcessDialog extends Window implements IProcessUI
m_pi.setTitle(m_Name); m_pi.setTitle(m_Name);
m_pi.setAD_Process_UU(m_AD_Process_UU); m_pi.setAD_Process_UU(m_AD_Process_UU);
parameterPanel = new ProcessParameterPanel(m_WindowNo, m_pi); parameterPanel = new ProcessParameterPanel(m_WindowNo, m_TabNo, m_pi);
if ( !parameterPanel.init() ) { if ( !parameterPanel.init() ) {
if (m_ShowHelp != null && MProcess.SHOWHELP_DonTShowHelp.equals(m_ShowHelp)) if (m_ShowHelp != null && MProcess.SHOWHELP_DonTShowHelp.equals(m_ShowHelp))
autoStart = true; autoStart = true;

View File

@ -116,6 +116,18 @@ public class ProcessModalDialog extends AbstractProcessDialog implements EventLi
* @param autoStart * @param autoStart
*/ */
public ProcessModalDialog(EventListener<Event> listener, int WindowNo, ProcessInfo pi, boolean autoStart) public ProcessModalDialog(EventListener<Event> listener, int WindowNo, ProcessInfo pi, boolean autoStart)
{
this(listener, WindowNo, 0, pi, autoStart);
}
/**
* @param listener
* @param WindowNo
* @param TabNo
* @param pi
* @param autoStart
*/
public ProcessModalDialog(EventListener<Event> listener, int WindowNo, int TabNo, ProcessInfo pi, boolean autoStart)
{ {
super(); super();
@ -128,7 +140,7 @@ public class ProcessModalDialog extends AbstractProcessDialog implements EventLi
log.info("Process=" + pi.getAD_Process_ID()); log.info("Process=" + pi.getAD_Process_ID());
try try
{ {
init(Env.getCtx(), WindowNo, pi.getAD_Process_ID(), pi, autoStart, true); init(Env.getCtx(), WindowNo, TabNo, pi.getAD_Process_ID(), pi, autoStart, true);
if (mainParameterLayout != null)// when auto start it's null if (mainParameterLayout != null)// when auto start it's null
{ {
mainParameterLayout.setStyle("max-height:" + ClientInfo.get().desktopHeight + "px"); mainParameterLayout.setStyle("max-height:" + ClientInfo.get().desktopHeight + "px");

View File

@ -107,8 +107,23 @@ public class ProcessParameterPanel extends Panel implements
* process info * process info
*/ */
public ProcessParameterPanel(int WindowNo, ProcessInfo pi) { public ProcessParameterPanel(int WindowNo, ProcessInfo pi) {
this(WindowNo, 0, pi);
}
/**
* Dynamic generated Parameter panel.
*
* @param WindowNo
* window
* @param tabNo
* tabNo
* @param pi
* process info
*/
public ProcessParameterPanel(int WindowNo,int tabNo, ProcessInfo pi) {
// //
m_WindowNo = WindowNo; m_WindowNo = WindowNo;
m_TabNo = tabNo;
m_processInfo = pi; m_processInfo = pi;
m_AD_Window_ID = AEnv.getADWindowID (WindowNo); m_AD_Window_ID = AEnv.getADWindowID (WindowNo);
this.m_InfoWindowID = pi.getAD_InfoWindow_ID(); this.m_InfoWindowID = pi.getAD_InfoWindow_ID();
@ -134,6 +149,7 @@ public class ProcessParameterPanel extends Panel implements
} }
private int m_WindowNo; private int m_WindowNo;
private int m_TabNo;
private ProcessInfo m_processInfo; private ProcessInfo m_processInfo;
// AD_Window of window below this dialog in case show parameter dialog panel // AD_Window of window below this dialog in case show parameter dialog panel
private int m_AD_Window_ID = 0; private int m_AD_Window_ID = 0;
@ -269,7 +285,7 @@ public class ProcessParameterPanel extends Panel implements
hasFields = true; hasFields = true;
// Create Field // Create Field
GridFieldVO voF = GridFieldVO.createParameter(Env.getCtx(), m_WindowNo, m_processInfo.getAD_Process_ID(), m_AD_Window_ID, m_InfoWindowID,rs); GridFieldVO voF = GridFieldVO.createParameter(Env.getCtx(), m_WindowNo, m_TabNo, m_processInfo.getAD_Process_ID(), m_AD_Window_ID, m_InfoWindowID,rs);
listVO.add(voF); listVO.add(voF);
} }
Collections.sort(listVO, new GridFieldVO.SeqNoComparator()); Collections.sort(listVO, new GridFieldVO.SeqNoComparator());