From b4abd263079edebf1b6af2d73e35a06aebdc28d0 Mon Sep 17 00:00:00 2001 From: PeterTakacs300 <93127072+PeterTakacs300@users.noreply.github.com> Date: Tue, 8 Mar 2022 04:38:54 +0100 Subject: [PATCH] IDEMPIERE-5216 - HTML Report - replace Record_ID with Identifier column (#1217) * IDEMPIERE-5216 - HTML Report - replace Record_ID with Identifier column * IDEMPIERE-5216 - multiple identifiers case fixed * IDEMPIERE-5216 - NVL added --- .../src/org/compiere/print/ReportEngine.java | 33 ++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/org.adempiere.base/src/org/compiere/print/ReportEngine.java b/org.adempiere.base/src/org/compiere/print/ReportEngine.java index 352f2dce50..e8d86dab3b 100644 --- a/org.adempiere.base/src/org/compiere/print/ReportEngine.java +++ b/org.adempiere.base/src/org/compiere/print/ReportEngine.java @@ -89,6 +89,7 @@ import org.compiere.model.MQuery; import org.compiere.model.MRfQResponse; import org.compiere.model.MRole; import org.compiere.model.MStyle; +import org.compiere.model.MSysConfig; import org.compiere.model.MTable; import org.compiere.model.PrintInfo; import org.compiere.model.X_AD_StyleLine; @@ -992,7 +993,37 @@ queued-job-count = 0 (class javax.print.attribute.standard.QueuedJobCount) } if (tableID > 0) { MTable mTable = MTable.get(getCtx(), tableID); - String foreignColumnName = mTable.getTableName() + "_ID"; + String tableName = mTable.getTableName(); + + ArrayList list = new ArrayList(); + for (String idColumnName : mTable.getIdentifierColumns()) { + MColumn column = mTable.getColumn(idColumnName); + list.add (column); + } + if(list.size() > 0) { + StringBuilder displayColumn = new StringBuilder(); + String separator = MSysConfig.getValue(MSysConfig.IDENTIFIER_SEPARATOR, "_", Env.getAD_Client_ID(Env.getCtx())); + + for(int i = 0; i < list.size(); i++) { + MColumn identifierColumn = list.get(i); + if(i > 0) + displayColumn.append("||'").append(separator).append("'||"); + + displayColumn.append("NVL(") + .append(DB.TO_CHAR(identifierColumn.getColumnName(), + identifierColumn.getAD_Reference_ID(), + Env.getAD_Language(Env.getCtx()))) + .append(",'')"); + } + StringBuilder sql = new StringBuilder("SELECT "); + sql.append(displayColumn.toString()); + sql.append(" FROM ").append(tableName); + sql.append(" WHERE ") + .append(tableName).append(".").append(tableName).append("_ID=?"); + + value = DB.getSQLValueStringEx(null, sql.toString(), Integer.parseInt(value)); + } + String foreignColumnName = tableName + "_ID"; pde.setForeignColumnName(foreignColumnName); isZoom = true; }