From 3c10b2c455a071a3d98bf36b3c1b6206ea708459 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Mon, 8 Jan 2018 15:24:23 +0100 Subject: [PATCH] IDEMPIERE-3604 improve error messages when process access rights are not set / IDEMPIERE-1920 --- .../src/org/compiere/process/CopyRole.java | 3 +-- .../src/org/compiere/model/MPInstance.java | 12 ++++++++++-- 2 files changed, 11 insertions(+), 4 deletions(-) diff --git a/org.adempiere.base.process/src/org/compiere/process/CopyRole.java b/org.adempiere.base.process/src/org/compiere/process/CopyRole.java index 4b5ba2d7aa..12846a9f44 100755 --- a/org.adempiere.base.process/src/org/compiere/process/CopyRole.java +++ b/org.adempiere.base.process/src/org/compiere/process/CopyRole.java @@ -26,7 +26,6 @@ import org.compiere.model.I_AD_Role_Included; import org.compiere.model.MRole; import org.compiere.util.DB; import org.compiere.util.Env; -import org.compiere.util.Msg; /** @@ -76,7 +75,7 @@ public class CopyRole extends SvrProcess protected String doIt() throws Exception { if (! MRole.getDefault().isAccessAdvanced()) { - throw new AdempiereException(Msg.getMsg(getCtx(), "CannotAccessProcess", new Object[] {getProcessInfo().getAD_Process_ID(), MRole.getDefault().getName()})); + return "@Error@ @Advanced@ @Process@"; } if (m_AD_Role_ID_From == m_AD_Role_ID_To) diff --git a/org.adempiere.base/src/org/compiere/model/MPInstance.java b/org.adempiere.base/src/org/compiere/model/MPInstance.java index 45c81d03ad..29f10cb426 100644 --- a/org.adempiere.base/src/org/compiere/model/MPInstance.java +++ b/org.adempiere.base/src/org/compiere/model/MPInstance.java @@ -32,6 +32,7 @@ import org.adempiere.base.event.EventManager; import org.compiere.util.CLogger; import org.compiere.util.DB; import org.compiere.util.Env; +import org.compiere.util.Language; import org.compiere.util.Msg; import org.idempiere.distributed.IMessageService; import org.idempiere.distributed.ITopic; @@ -219,8 +220,15 @@ public class MPInstance extends X_AD_PInstance { MRole role = MRole.get(getCtx(), AD_Role_ID); Boolean access = role.getProcessAccess(AD_Process_ID); - if (access == null || !access.booleanValue()) - throw new IllegalStateException(Msg.getMsg(getCtx(), "CannotAccessProcess", new Object[] {AD_Process_ID, role.getName()})); + if (access == null || !access.booleanValue()) { + MProcess proc = MProcess.get(getCtx(), AD_Process_ID); + StringBuilder procMsg = new StringBuilder("["); + if (! Language.isBaseLanguage (Env.getAD_Language(getCtx()))) { + procMsg.append(proc.get_Translation("Name")).append(" / "); + } + procMsg.append(proc.getName()).append("]"); + throw new IllegalStateException(Msg.getMsg(getCtx(), "CannotAccessProcess", new Object[] {procMsg.toString(), role.getName()})); + } } super.setAD_Process_ID (AD_Process_ID); } // setAD_Process_ID