hg merge release-2.1 (merge release2.1 into development)
This commit is contained in:
commit
133250f6d6
|
@ -85,12 +85,22 @@ public class MImportTemplate extends X_AD_ImportTemplate
|
||||||
return retValue;
|
return retValue;
|
||||||
|
|
||||||
final String where = ""
|
final String where = ""
|
||||||
+ "IsActive='Y' AND AD_Client_ID IN (0, ?) AND AD_Tab_ID=? "
|
+ "IsActive = 'Y' "
|
||||||
|
+ "AND AD_Client_ID IN ( 0, ? ) "
|
||||||
|
+ "AND AD_Tab_ID = ? "
|
||||||
+ "AND EXISTS (SELECT 1 "
|
+ "AND EXISTS (SELECT 1 "
|
||||||
+ " FROM AD_ImportTemplateAccess ita "
|
+ " FROM AD_ImportTemplateAccess ita "
|
||||||
+ " WHERE ita.AD_ImportTemplate_ID=AD_ImportTemplate.AD_ImportTemplate_ID AND ita.IsActive='Y' AND ita.AD_Role_ID=? AND (IsAllowInsert='Y' OR IsAllowMerge='Y' OR IsAllowUpdate='Y'))";
|
+ " WHERE ita.AD_ImportTemplate_ID = AD_ImportTemplate.AD_ImportTemplate_ID "
|
||||||
|
+ " AND ita.IsActive = 'Y' "
|
||||||
|
+ " AND ( ita.AD_Role_ID = ? "
|
||||||
|
+ " OR ita.AD_Role_ID IN (SELECT Included_Role_ID "
|
||||||
|
+ " FROM AD_Role_Included "
|
||||||
|
+ " WHERE AD_Role_ID = ? AND IsActive = 'Y') ) "
|
||||||
|
+ " AND ( IsAllowInsert = 'Y' "
|
||||||
|
+ " OR IsAllowMerge = 'Y' "
|
||||||
|
+ " OR IsAllowUpdate = 'Y' ))";
|
||||||
retValue = new Query(Env.getCtx(), MImportTemplate.Table_Name, where, null)
|
retValue = new Query(Env.getCtx(), MImportTemplate.Table_Name, where, null)
|
||||||
.setParameters(Env.getAD_Client_ID(Env.getCtx()), tabid, roleid)
|
.setParameters(Env.getAD_Client_ID(Env.getCtx()), tabid, roleid, roleid)
|
||||||
.setOrderBy("Name")
|
.setOrderBy("Name")
|
||||||
.list();
|
.list();
|
||||||
s_cacheRoleTab.put(key, retValue);
|
s_cacheRoleTab.put(key, retValue);
|
||||||
|
@ -98,8 +108,17 @@ public class MImportTemplate extends X_AD_ImportTemplate
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean isAllowed(String importMode, int roleID) {
|
public boolean isAllowed(String importMode, int roleID) {
|
||||||
StringBuilder sql= new StringBuilder(
|
StringBuilder sql= new StringBuilder(""
|
||||||
"SELECT COUNT(*) FROM AD_ImportTemplateAccess WHERE IsActive='Y' AND AD_ImportTemplate_ID=? AND AD_Role_ID=? AND IsAllow");
|
+ "SELECT COUNT(*) "
|
||||||
|
+ "FROM AD_ImportTemplateaccess "
|
||||||
|
+ "WHERE IsActive = 'Y' "
|
||||||
|
+ " AND AD_ImportTemplate_ID = ? "
|
||||||
|
+ " AND ( AD_Role_ID = ? "
|
||||||
|
+ " OR AD_Role_ID IN (SELECT Included_Role_ID "
|
||||||
|
+ " FROM AD_Role_Included "
|
||||||
|
+ " WHERE AD_Role_id = ? "
|
||||||
|
+ " AND IsActive = 'Y') ) "
|
||||||
|
+ " AND IsAllow");
|
||||||
if ("I".equals(importMode))
|
if ("I".equals(importMode))
|
||||||
sql.append("Insert");
|
sql.append("Insert");
|
||||||
else if ("U".equals(importMode))
|
else if ("U".equals(importMode))
|
||||||
|
@ -110,7 +129,7 @@ public class MImportTemplate extends X_AD_ImportTemplate
|
||||||
return false;
|
return false;
|
||||||
sql.append("='Y'");
|
sql.append("='Y'");
|
||||||
|
|
||||||
int cnt = DB.getSQLValueEx(get_TrxName(), sql.toString(), getAD_ImportTemplate_ID(), roleID);
|
int cnt = DB.getSQLValueEx(get_TrxName(), sql.toString(), getAD_ImportTemplate_ID(), roleID, roleID);
|
||||||
return cnt > 0;
|
return cnt > 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -338,9 +338,9 @@ public class ReportEngine implements PrintServiceAttributeListener
|
||||||
*/
|
*/
|
||||||
public Properties getCtx()
|
public Properties getCtx()
|
||||||
{
|
{
|
||||||
return getLayout().getCtx();
|
return m_ctx;
|
||||||
} // getCtx
|
} // getCtx
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get Row Count
|
* Get Row Count
|
||||||
* @return row count
|
* @return row count
|
||||||
|
|
|
@ -247,18 +247,30 @@ public class CSVImportAction implements EventListener<Event>
|
||||||
|
|
||||||
private void fillImportMode() {
|
private void fillImportMode() {
|
||||||
final String sql= ""
|
final String sql= ""
|
||||||
+ "SELECT IsAllowInsert, IsAllowUpdate, IsAllowMerge "
|
+ "SELECT MAX(IsAllowInsert), "
|
||||||
+ "FROM AD_ImportTemplateAccess "
|
+ " MAX(IsAllowUpdate), "
|
||||||
+ "WHERE IsActive='Y' AND AD_ImportTemplate_ID=? AND AD_Role_ID=? AND (IsAllowInsert='Y' OR IsAllowMerge='Y' OR IsAllowUpdate='Y')";
|
+ " MAX(IsAllowMerge) "
|
||||||
List<Object> flags = DB.getSQLValueObjectsEx(null, sql, theTemplate.getAD_ImportTemplate_ID(), Env.getAD_Role_ID(Env.getCtx()));
|
+ "FROM AD_ImportTemplateAccess "
|
||||||
|
+ "WHERE IsActive = 'Y' "
|
||||||
|
+ " AND AD_ImportTemplate_ID = ? "
|
||||||
|
+ " AND ( AD_Role_ID = ? "
|
||||||
|
+ " OR AD_Role_ID IN (SELECT Included_Role_ID "
|
||||||
|
+ " FROM AD_Role_Included "
|
||||||
|
+ " WHERE AD_Role_ID = ? "
|
||||||
|
+ " AND IsActive = 'Y') ) "
|
||||||
|
+ " AND ( IsAllowInsert = 'Y' "
|
||||||
|
+ " OR IsAllowMerge = 'Y' "
|
||||||
|
+ " OR IsAllowUpdate = 'Y' )";
|
||||||
|
List<Object> flags = DB.getSQLValueObjectsEx(null, sql, theTemplate.getAD_ImportTemplate_ID(), Env.getAD_Role_ID(Env.getCtx()), Env.getAD_Role_ID(Env.getCtx()));
|
||||||
fImportMode.removeAllItems();
|
fImportMode.removeAllItems();
|
||||||
if (flags.get(0) != null && "Y".equals(flags.get(0).toString()))
|
if (flags.get(0) != null && "Y".equals(flags.get(0).toString()))
|
||||||
fImportMode.appendItem("Insert","I");
|
fImportMode.appendItem("Insert","I");
|
||||||
if (flags.get(1) != null && "Y".equals(flags.get(0).toString()))
|
if (flags.get(1) != null && "Y".equals(flags.get(1).toString()))
|
||||||
fImportMode.appendItem("Update","U");
|
fImportMode.appendItem("Update","U");
|
||||||
if (flags.get(2) != null && "Y".equals(flags.get(0).toString()))
|
if (flags.get(2) != null && "Y".equals(flags.get(2).toString()))
|
||||||
fImportMode.appendItem("Merge","M");
|
fImportMode.appendItem("Merge","M");
|
||||||
fImportMode.setSelectedIndex(0);
|
if (fImportMode.getItemCount() == 1)
|
||||||
|
fImportMode.setSelectedIndex(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private void processUploadMedia(Media media) {
|
private void processUploadMedia(Media media) {
|
||||||
|
|
|
@ -229,9 +229,6 @@ public class ZkReportViewer extends Window implements EventListener<Event>, ITab
|
||||||
m_ctx = m_reportEngine.getCtx();
|
m_ctx = m_reportEngine.getCtx();
|
||||||
init();
|
init();
|
||||||
dynInit();
|
dynInit();
|
||||||
|
|
||||||
if (!ArchiveEngine.isValid(m_reportEngine.getLayout()))
|
|
||||||
log.warning("Cannot archive Document");
|
|
||||||
}
|
}
|
||||||
catch(Exception e)
|
catch(Exception e)
|
||||||
{
|
{
|
||||||
|
@ -469,7 +466,7 @@ public class ZkReportViewer extends Window implements EventListener<Event>, ITab
|
||||||
future = Adempiere.getThreadPoolExecutor().submit(new DesktopRunnable(new XLSRendererRunnable(this),getDesktop()));
|
future = Adempiere.getThreadPoolExecutor().submit(new DesktopRunnable(new XLSRendererRunnable(this),getDesktop()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private void onPreviewReport() {
|
private void onPreviewReport() {
|
||||||
try {
|
try {
|
||||||
if (future != null) {
|
if (future != null) {
|
||||||
|
@ -1308,6 +1305,8 @@ public class ZkReportViewer extends Window implements EventListener<Event>, ITab
|
||||||
@Override
|
@Override
|
||||||
protected void doRun() {
|
protected void doRun() {
|
||||||
try {
|
try {
|
||||||
|
if (!ArchiveEngine.isValid(viewer.m_reportEngine.getLayout()))
|
||||||
|
log.warning("Cannot archive Document");
|
||||||
String path = System.getProperty("java.io.tmpdir");
|
String path = System.getProperty("java.io.tmpdir");
|
||||||
String prefix = viewer.makePrefix(viewer.m_reportEngine.getName());
|
String prefix = viewer.makePrefix(viewer.m_reportEngine.getName());
|
||||||
if (log.isLoggable(Level.FINE))
|
if (log.isLoggable(Level.FINE))
|
||||||
|
@ -1353,6 +1352,8 @@ public class ZkReportViewer extends Window implements EventListener<Event>, ITab
|
||||||
@Override
|
@Override
|
||||||
protected void doRun() {
|
protected void doRun() {
|
||||||
try {
|
try {
|
||||||
|
if (!ArchiveEngine.isValid(viewer.m_reportEngine.getLayout()))
|
||||||
|
log.warning("Cannot archive Document");
|
||||||
String path = System.getProperty("java.io.tmpdir");
|
String path = System.getProperty("java.io.tmpdir");
|
||||||
String prefix = viewer.makePrefix(viewer.m_reportEngine.getName());
|
String prefix = viewer.makePrefix(viewer.m_reportEngine.getName());
|
||||||
if (log.isLoggable(Level.FINE))
|
if (log.isLoggable(Level.FINE))
|
||||||
|
@ -1397,6 +1398,8 @@ public class ZkReportViewer extends Window implements EventListener<Event>, ITab
|
||||||
@Override
|
@Override
|
||||||
protected void doRun() {
|
protected void doRun() {
|
||||||
try {
|
try {
|
||||||
|
if (!ArchiveEngine.isValid(viewer.m_reportEngine.getLayout()))
|
||||||
|
log.warning("Cannot archive Document");
|
||||||
String path = System.getProperty("java.io.tmpdir");
|
String path = System.getProperty("java.io.tmpdir");
|
||||||
String prefix = viewer.makePrefix(viewer.m_reportEngine.getName());
|
String prefix = viewer.makePrefix(viewer.m_reportEngine.getName());
|
||||||
if (log.isLoggable(Level.FINE))
|
if (log.isLoggable(Level.FINE))
|
||||||
|
|
|
@ -16,12 +16,10 @@
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
package org.adempiere.webui.window;
|
package org.adempiere.webui.window;
|
||||||
|
|
||||||
import org.adempiere.util.ContextRunnable;
|
|
||||||
import org.adempiere.webui.apps.AEnv;
|
import org.adempiere.webui.apps.AEnv;
|
||||||
import org.adempiere.webui.component.Window;
|
import org.adempiere.webui.component.Window;
|
||||||
import org.adempiere.webui.part.WindowContainer;
|
import org.adempiere.webui.part.WindowContainer;
|
||||||
import org.adempiere.webui.session.SessionManager;
|
import org.adempiere.webui.session.SessionManager;
|
||||||
import org.compiere.Adempiere;
|
|
||||||
import org.compiere.print.ReportEngine;
|
import org.compiere.print.ReportEngine;
|
||||||
import org.compiere.print.ReportViewerProvider;
|
import org.compiere.print.ReportViewerProvider;
|
||||||
import org.zkoss.zk.ui.Executions;
|
import org.zkoss.zk.ui.Executions;
|
||||||
|
@ -34,32 +32,26 @@ import org.zkoss.zk.ui.Executions;
|
||||||
public class ZkReportViewerProvider implements ReportViewerProvider {
|
public class ZkReportViewerProvider implements ReportViewerProvider {
|
||||||
|
|
||||||
public void openViewer(final ReportEngine report) {
|
public void openViewer(final ReportEngine report) {
|
||||||
final Runnable runnable = new Runnable() {
|
|
||||||
@Override
|
|
||||||
public void run() {
|
|
||||||
Window viewer = new ZkReportViewer(report, report.getName());
|
|
||||||
|
|
||||||
viewer.setAttribute(Window.MODE_KEY, Window.MODE_EMBEDDED);
|
|
||||||
viewer.setAttribute(Window.INSERT_POSITION_KEY, Window.INSERT_NEXT);
|
|
||||||
viewer.setAttribute(WindowContainer.DEFER_SET_SELECTED_TAB, Boolean.TRUE);
|
|
||||||
SessionManager.getAppDesktop().showWindow(viewer);
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
// IDEMPIERE-2499
|
// IDEMPIERE-2499
|
||||||
// detect ui thread by value of Executions.getCurrent(), not office method but work
|
// detect ui thread by value of Executions.getCurrent(), not office method but work
|
||||||
if (Executions.getCurrent() != null){
|
if (Executions.getCurrent() != null){
|
||||||
Adempiere.getThreadPoolExecutor().submit(new ContextRunnable(){
|
openReportViewWindow (report);
|
||||||
protected void doRun(){
|
}else {
|
||||||
// load layout, with big report it's heavy job, do in non ui thread to don't lock gui
|
AEnv.executeAsyncDesktopTask(new Runnable() {
|
||||||
report.getLayout();
|
@Override
|
||||||
AEnv.executeAsyncDesktopTask(runnable);
|
public void run() {
|
||||||
|
openReportViewWindow (report);
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
}else{
|
|
||||||
// load layout in non ui thread before run into ui thread
|
|
||||||
report.getLayout();
|
|
||||||
AEnv.executeAsyncDesktopTask(runnable);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected void openReportViewWindow (ReportEngine report) {
|
||||||
|
Window viewer = new ZkReportViewer(report, report.getName());
|
||||||
|
|
||||||
|
viewer.setAttribute(Window.MODE_KEY, Window.MODE_EMBEDDED);
|
||||||
|
viewer.setAttribute(Window.INSERT_POSITION_KEY, Window.INSERT_NEXT);
|
||||||
|
viewer.setAttribute(WindowContainer.DEFER_SET_SELECTED_TAB, Boolean.TRUE);
|
||||||
|
SessionManager.getAppDesktop().showWindow(viewer);
|
||||||
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue