diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/desktop/DashboardController.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/desktop/DashboardController.java index 2a4df83162..3cbc2e4fd3 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/desktop/DashboardController.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/desktop/DashboardController.java @@ -53,10 +53,14 @@ import org.compiere.model.MDashboardContent; import org.compiere.model.MDashboardContentAccess; import org.compiere.model.MDashboardPreference; import org.compiere.model.MGoal; +import org.compiere.model.MLookup; +import org.compiere.model.MLookupFactory; +import org.compiere.model.MLookupInfo; import org.compiere.model.MMenu; import org.compiere.model.MPInstance; import org.compiere.model.MPInstancePara; import org.compiere.model.MProcess; +import org.compiere.model.MProcessPara; import org.compiere.model.MSysConfig; import org.compiere.print.ReportEngine; import org.compiere.process.ProcessInfo; @@ -964,8 +968,7 @@ public class DashboardController implements EventListener { } // Convert to Type - if (DisplayType.isNumeric(iPara.getDisplayType()) - || DisplayType.isID(iPara.getDisplayType())) + if (DisplayType.isNumeric(iPara.getDisplayType())) { BigDecimal bd = null; if (value instanceof BigDecimal) @@ -985,6 +988,17 @@ public class DashboardController implements EventListener { iPara.setInfo(info); } } + else if (iPara.getDisplayType() == DisplayType.Search || iPara.getDisplayType() == DisplayType.Table || iPara.getDisplayType() == DisplayType.TableDir) { + int id = new BigDecimal (value.toString()).intValue(); + if (isTo) { + iPara.setP_Number_To(new BigDecimal (value.toString())); + iPara.setInfo_To(getDisplay(pInstance, iPara, id)); + } + else { + iPara.setP_Number(new BigDecimal (value.toString())); + iPara.setInfo(getDisplay(pInstance, iPara, id)); + } + } else if (DisplayType.isDate(iPara.getDisplayType())) { Timestamp ts = null; @@ -1021,7 +1035,53 @@ public class DashboardController implements EventListener { } } } - + + private String getDisplay(MPInstance i, MPInstancePara ip, int id) { + try { + MProcessPara pp = MProcess.get(i.getAD_Process_ID()).getParameter(ip.getParameterName()); + + if (pp != null) { + + MLookupInfo mli = MLookupFactory.getLookupInfo(Env.getCtx(), 0, 0, pp.getAD_Reference_ID(), Env.getLanguage(Env.getCtx()), "", pp.getAD_Reference_Value_ID(), false, ""); + + PreparedStatement pstmt = null; + ResultSet rs = null; + StringBuilder name = new StringBuilder(""); + try + { + pstmt = DB.prepareStatement(mli.QueryDirect, null); + pstmt.setInt(1, id); + + rs = pstmt.executeQuery(); + if (rs.next()) { + name.append(rs.getString(3)); + boolean isActive = rs.getString(4).equals("Y"); + if (!isActive) + name.insert(0, MLookup.INACTIVE_S).append(MLookup.INACTIVE_E); + + if (rs.next()) + logger.log(Level.SEVERE, "Error while displaying parameter for embedded report - Not unique (first returned) for SQL=" + mli.QueryDirect); + } + } + catch (Exception e) { + logger.log(Level.SEVERE, "Error while displaying parameter for embedded report - " + mli.KeyColumn + ": SQL=" + mli.QueryDirect + " : " + e); + } + finally { + DB.close(rs, pstmt); + rs = null; + pstmt = null; + } + + return name.toString(); + } + } + catch (Exception e) { + logger.log(Level.WARNING, "Failed to retrieve data to display for embedded report " + MProcess.get(i.getAD_Process_ID()).getName() + " : " + ip.getParameterName(), e); + } + + return Integer.toString(id); + } + public void updateLayout(ClientInfo clientInfo) { if (isShowInDashboard) { if (ClientInfo.isMobile()) {