IDEMPIERE-3998: Execute Toolbar Process, get list of multiple row selected from the Grid view.

This commit is contained in:
Deepak Pansheriya 2019-08-16 16:50:31 +05:30
parent 64ab5ccf0a
commit 31c236e419
7 changed files with 51 additions and 8 deletions

View File

@ -138,7 +138,7 @@ public class ProcessInfo implements Serializable
private File m_pdf_report = null; private File m_pdf_report = null;
/** Record IDs */ /** Record IDs */
private int[] m_Record_IDs; private List <Integer> m_Record_IDs = null;
/** Export */ /** Export */
private boolean m_export = false; private boolean m_export = false;
@ -833,12 +833,12 @@ public class ProcessInfo implements Serializable
m_exportFile = exportFile; m_exportFile = exportFile;
} }
public int[] getRecord_IDs() public List<Integer> getRecord_IDs()
{ {
return m_Record_IDs; return m_Record_IDs;
} }
public void setRecord_IDs(int[] Record_IDs) public void setRecord_IDs(List<Integer> Record_IDs)
{ {
m_Record_IDs = Record_IDs; m_Record_IDs = Record_IDs;
} }

View File

@ -438,6 +438,16 @@ public abstract class SvrProcess implements ProcessCall
return m_pi.getRecord_ID(); return m_pi.getRecord_ID();
} // getRecord_ID } // getRecord_ID
/**
* Get Record_IDs
*
* @return Record_IDs
*/
protected List<Integer> getRecord_IDs()
{
return m_pi.getRecord_IDs();
} // getRecord_IDs
/** /**
* Get AD_User_ID * Get AD_User_ID
* @return AD_User_ID of Process owner or -1 if not found * @return AD_User_ID of Process owner or -1 if not found

View File

@ -460,7 +460,7 @@ public class ReportStarter implements ProcessCall, ClientProcess
params.put("RESOURCE_DIR", resourcePath); params.put("RESOURCE_DIR", resourcePath);
} }
if (jasperReport != null && pi.getTable_ID() > 0 && Record_ID <= 0 && pi.getRecord_IDs() != null && pi.getRecord_IDs().length > 0) if (jasperReport != null && pi.getTable_ID() > 0 && Record_ID <= 0 && pi.getRecord_IDs() != null && pi.getRecord_IDs().size() > 0)
{ {
try try
{ {

View File

@ -26,6 +26,7 @@ import org.adempiere.util.IProcessUI;
import org.compiere.model.MPInstance; import org.compiere.model.MPInstance;
import org.compiere.process.ProcessInfo; import org.compiere.process.ProcessInfo;
import org.compiere.util.CLogger; import org.compiere.util.CLogger;
import org.compiere.util.DB;
import org.compiere.util.Env; import org.compiere.util.Env;
import org.compiere.util.Msg; import org.compiere.util.Msg;
import org.compiere.util.Trx; import org.compiere.util.Trx;
@ -184,6 +185,11 @@ public class ProcessCtl extends AbstractProcessCtl
} }
} }
if (pi.getRecord_IDs() != null && pi.getRecord_IDs().size() > 0)
{
DB.createT_Selection(pi.getAD_PInstance_ID(), pi.getRecord_IDs(), null);
}
// execute // execute
ProcessCtl worker = new ProcessCtl(parent, WindowNo, pi, trx); ProcessCtl worker = new ProcessCtl(parent, WindowNo, pi, trx);
if (parent != null) if (parent != null)

View File

@ -3054,7 +3054,28 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements
} }
else else
{ {
ProcessModalDialog dialog = new ProcessModalDialog(this, curWindowNo, wButton.getProcess_ID(), table_ID, record_ID, startWOasking); final IADTabpanel adtabPanel = findADTabpanel(wButton);
ProcessInfo pi = new ProcessInfo("", wButton.getProcess_ID(), table_ID, record_ID);
if (adtabPanel != null && adtabPanel.isGridView() && adtabPanel.getGridTab() != null)
{
int[] indices = adtabPanel.getGridTab().getSelection();
if (indices.length > 0)
{
List<Integer> records = new ArrayList<Integer>();
for (int i = 0; i < indices.length; i++)
{
int keyID = adtabPanel.getGridTab().getKeyID(indices[i]);
if (keyID > 0)
records.add(keyID);
}
// IDEMPIERE-3998 Set multiple selected grid records into process info
pi.setRecord_IDs(records);
}
}
ProcessModalDialog dialog = new ProcessModalDialog(this, curWindowNo, pi, startWOasking);
if (dialog.isValid()) if (dialog.isValid())
{ {

View File

@ -30,6 +30,7 @@ import org.compiere.apps.IProcessParameter;
import org.compiere.model.MPInstance; import org.compiere.model.MPInstance;
import org.compiere.process.ProcessInfo; import org.compiere.process.ProcessInfo;
import org.compiere.util.CLogger; import org.compiere.util.CLogger;
import org.compiere.util.DB;
import org.compiere.util.Env; import org.compiere.util.Env;
import org.compiere.util.Msg; import org.compiere.util.Msg;
import org.compiere.util.Trx; import org.compiere.util.Trx;
@ -192,6 +193,11 @@ public class WProcessCtl extends AbstractProcessCtl {
} }
} }
if (pi.getRecord_IDs() != null && pi.getRecord_IDs().size() > 0)
{
DB.createT_Selection(pi.getAD_PInstance_ID(), pi.getRecord_IDs(), null);
}
// execute // execute
WProcessCtl worker = new WProcessCtl(aProcessUI, WindowNo, pi, trx); WProcessCtl worker = new WProcessCtl(aProcessUI, WindowNo, pi, trx);
worker.run(); worker.run();

View File

@ -269,7 +269,7 @@ public class ReportAction implements EventListener<Event>
// Query // Query
boolean currentRowOnly = chkCurrentRowOnly.isChecked(); boolean currentRowOnly = chkCurrentRowOnly.isChecked();
int Record_ID = 0; int Record_ID = 0;
int[] RecordIDs = null; List <Integer> RecordIDs = null;
MQuery query = new MQuery(gridTab.getTableName()); MQuery query = new MQuery(gridTab.getTableName());
StringBuilder whereClause = new StringBuilder(""); StringBuilder whereClause = new StringBuilder("");
@ -284,10 +284,10 @@ public class ReportAction implements EventListener<Event>
else else
{ {
whereClause.append(gridTab.getTableModel().getSelectWhereClause()); whereClause.append(gridTab.getTableModel().getSelectWhereClause());
RecordIDs = new int[gridTab.getRowCount()]; RecordIDs = new ArrayList<Integer>();
for(int i = 0; i < gridTab.getRowCount(); i++) for(int i = 0; i < gridTab.getRowCount(); i++)
{ {
RecordIDs[i] = gridTab.getKeyID(i); RecordIDs.add(gridTab.getKeyID(i));
} }
} }