From 4f72545787f07bffc4efec7f89e91046e8860f17 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Thu, 16 May 2019 11:27:05 +0200 Subject: [PATCH 1/5] IDEMPIERE-236 Centralization of hardcoded IDs / display types - preparing class for IDEMPIERE-3970 --- .../org/adempiere/pipo2/PackRollProcess.java | 45 ++++++++++--------- 1 file changed, 23 insertions(+), 22 deletions(-) diff --git a/org.adempiere.pipo/src/org/adempiere/pipo2/PackRollProcess.java b/org.adempiere.pipo/src/org/adempiere/pipo2/PackRollProcess.java index fe2e8d0299..12dfa9097f 100644 --- a/org.adempiere.pipo/src/org/adempiere/pipo2/PackRollProcess.java +++ b/org.adempiere.pipo/src/org/adempiere/pipo2/PackRollProcess.java @@ -34,6 +34,7 @@ import org.compiere.model.X_AD_Package_Imp_Backup; import org.compiere.model.X_AD_Package_Imp_Detail; import org.compiere.process.SvrProcess; import org.compiere.util.DB; +import org.compiere.util.DisplayType; import org.compiere.util.Env; /** @@ -193,15 +194,15 @@ public class PackRollProcess extends SvrProcess { int v_AD_Reference_ID = backup.getAD_Reference_ID(); // Update columns that are Strings adjusting // for single quotes - if (v_AD_Reference_ID == 10 - || v_AD_Reference_ID == 14 - || v_AD_Reference_ID == 34 - || v_AD_Reference_ID == 17 + if (v_AD_Reference_ID == DisplayType.String + || v_AD_Reference_ID == DisplayType.Text + || v_AD_Reference_ID == DisplayType.Memo + || v_AD_Reference_ID == DisplayType.List // Carlos Ruiz globalqss, special // treatment for EntityType // it's a Table reference but must // be treated as String - || (v_AD_Reference_ID == 18 && columnName + || (v_AD_Reference_ID == DisplayType.Table && columnName .equalsIgnoreCase("EntityType"))) { if (backup.getColValue().toString().equals("null")) { ;// Ignore null values @@ -216,8 +217,8 @@ public class PackRollProcess extends SvrProcess { parameters = new Object[]{backup.getColValue()}; } // Update true/false columns - } else if (v_AD_Reference_ID == 20 - || v_AD_Reference_ID == 28) { + } else if (v_AD_Reference_ID == DisplayType.YesNo + || v_AD_Reference_ID == DisplayType.Button) { sqlC = new StringBuffer("UPDATE " + tableName @@ -231,15 +232,15 @@ public class PackRollProcess extends SvrProcess { } // Update columns that are Strings adjusting // for single quotes - else if (v_AD_Reference_ID == 13 - || v_AD_Reference_ID == 18 - || v_AD_Reference_ID == 19 - || v_AD_Reference_ID == 21 - || v_AD_Reference_ID == 25 - || v_AD_Reference_ID == 27 - || v_AD_Reference_ID == 30 - || v_AD_Reference_ID == 31 - || v_AD_Reference_ID == 35) + else if (v_AD_Reference_ID == DisplayType.ID + || v_AD_Reference_ID == DisplayType.Table + || v_AD_Reference_ID == DisplayType.TableDir + || v_AD_Reference_ID == DisplayType.Location + || v_AD_Reference_ID == DisplayType.Account + || v_AD_Reference_ID == DisplayType.Color + || v_AD_Reference_ID == DisplayType.Search + || v_AD_Reference_ID == DisplayType.Locator + || v_AD_Reference_ID == DisplayType.PAttribute) { sqlC = new StringBuffer("UPDATE " @@ -252,10 +253,10 @@ public class PackRollProcess extends SvrProcess { parameters = new Object[]{backup.getColValue()}; } // Update columns that are numbers - else if (v_AD_Reference_ID == 11 - || v_AD_Reference_ID == 12 - || v_AD_Reference_ID == 22 - || v_AD_Reference_ID == 29) + else if (v_AD_Reference_ID == DisplayType.Integer + || v_AD_Reference_ID == DisplayType.Amount + || v_AD_Reference_ID == DisplayType.Number + || v_AD_Reference_ID == DisplayType.Quantity) { sqlC = new StringBuffer("UPDATE " + tableName @@ -267,8 +268,8 @@ public class PackRollProcess extends SvrProcess { parameters = new Object[]{backup.getColValue()}; } // Update columns that are dates - else if (v_AD_Reference_ID == 15 - || v_AD_Reference_ID == 16) + else if (v_AD_Reference_ID == DisplayType.Date + || v_AD_Reference_ID == DisplayType.DateTime) { Timestamp ts = null; try { From c4d6e259b24e77883a38a7b93aac2c77b936bcd1 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Thu, 16 May 2019 17:58:42 +0200 Subject: [PATCH 2/5] IDEMPIERE-2389:Print format and Report type selection on process dialog - do not set HTML as default, let the SysConfig keys for ZK_REPORT_FORM_OUTPUT_TYPE and ZK_REPORT_TABLE_OUTPUT_TYPE take place --- .../src/org/adempiere/webui/apps/AbstractProcessDialog.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/AbstractProcessDialog.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/AbstractProcessDialog.java index f584ec7e13..93a2455718 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/AbstractProcessDialog.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/AbstractProcessDialog.java @@ -575,7 +575,7 @@ public abstract class AbstractProcessDialog extends Window implements IProcessUI freportType.appendItem("PDF", "PDF"); freportType.appendItem("Excel", "XLS"); } - freportType.setSelectedIndex(0); + freportType.setSelectedIndex(-1); String where = "AD_Process_ID = ? AND AD_User_ID = ? AND Name IS NULL "; @@ -597,7 +597,7 @@ public abstract class AbstractProcessDialog extends Window implements IProcessUI if (freportType != null && instance != null) { if (instance.getReportType() == null) - freportType.setValue("HTML"); + freportType.setSelectedIndex(-1); else freportType.setValue(instance.getReportType()); } From ba13d8584ea0f008a48ce50fb90a4889ea0e2a0d Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Sat, 18 May 2019 12:54:37 +0200 Subject: [PATCH 3/5] IDEMPIERE-2479 fix a problem with switching from columnnary reports to form back and forth - index out of bounds - suppresscolumns is just intended for columnnary reports --- .../src/org/adempiere/pdf/Document.java | 5 ++-- .../src/org/compiere/print/ReportEngine.java | 24 +++++++++++++------ .../compiere/print/layout/LayoutEngine.java | 3 +++ 3 files changed, 23 insertions(+), 9 deletions(-) diff --git a/org.adempiere.base/src/org/adempiere/pdf/Document.java b/org.adempiere.base/src/org/adempiere/pdf/Document.java index 9d315d4168..8f875be188 100644 --- a/org.adempiere.base/src/org/adempiere/pdf/Document.java +++ b/org.adempiere.base/src/org/adempiere/pdf/Document.java @@ -21,6 +21,7 @@ import java.io.File; import java.io.FileOutputStream; import java.io.OutputStream; +import org.adempiere.exceptions.AdempiereException; import org.compiere.model.MSysConfig; import com.itextpdf.text.FontFactory; @@ -86,7 +87,7 @@ public class Document { document.close(); } catch (Exception e) { - e.printStackTrace(); + throw new AdempiereException(e); } } @@ -96,7 +97,7 @@ public class Document { try { writePDF(pageable, new FileOutputStream(result)); } catch (Exception e) { - e.printStackTrace(); + throw new AdempiereException(e); } return result; diff --git a/org.adempiere.base/src/org/compiere/print/ReportEngine.java b/org.adempiere.base/src/org/compiere/print/ReportEngine.java index f8577f1ee5..bd87d854da 100644 --- a/org.adempiere.base/src/org/compiere/print/ReportEngine.java +++ b/org.adempiere.base/src/org/compiere/print/ReportEngine.java @@ -60,6 +60,7 @@ import javax.print.event.PrintServiceAttributeEvent; import javax.print.event.PrintServiceAttributeListener; import javax.xml.transform.stream.StreamResult; +import org.adempiere.exceptions.AdempiereException; import org.adempiere.pdf.Document; import org.adempiere.print.export.PrintDataExcelExporter; import org.apache.ecs.XhtmlDocument; @@ -578,6 +579,7 @@ queued-job-count = 0 (class javax.print.attribute.standard.QueuedJobCount) catch (Exception e) { log.log(Level.SEVERE, "(f)", e); + throw new AdempiereException(e); } return false; } // createHTML @@ -674,7 +676,11 @@ queued-job-count = 0 (class javax.print.attribute.standard.QueuedJobCount) tbody.setNeedClosingTag(false); Boolean [] colSuppressRepeats = m_layout == null || m_layout.colSuppressRepeats == null? LayoutEngine.getColSuppressRepeats(m_printFormat):m_layout.colSuppressRepeats; - Object [] preValues = new Object [colSuppressRepeats.length]; + Object [] preValues = null; + if (colSuppressRepeats != null){ + preValues = new Object [colSuppressRepeats.length]; + } + int printColIndex = -1; // for all rows (-1 = header row) for (int row = -1; row < m_printData.getRowCount(); row++) @@ -732,7 +738,7 @@ queued-job-count = 0 (class javax.print.attribute.standard.QueuedJobCount) Object obj = m_printData.getNode(Integer.valueOf(item.getAD_Column_ID())); if (obj == null){ td.addElement(" "); - if (colSuppressRepeats[printColIndex]){ + if (colSuppressRepeats != null && colSuppressRepeats[printColIndex]){ preValues[printColIndex] = null; } } @@ -741,7 +747,7 @@ queued-job-count = 0 (class javax.print.attribute.standard.QueuedJobCount) PrintDataElement pde = (PrintDataElement) obj; String value = pde.getValueDisplay(language); // formatted - if (colSuppressRepeats[printColIndex]){ + if (colSuppressRepeats != null && colSuppressRepeats[printColIndex]){ if (value.equals(preValues[printColIndex])){ td.addElement(" "); continue; @@ -858,6 +864,7 @@ queued-job-count = 0 (class javax.print.attribute.standard.QueuedJobCount) catch (Exception e) { log.log(Level.SEVERE, "(w)", e); + throw new AdempiereException(e); } return false; } // createHTML @@ -916,7 +923,10 @@ queued-job-count = 0 (class javax.print.attribute.standard.QueuedJobCount) try { Boolean [] colSuppressRepeats = m_layout == null || m_layout.colSuppressRepeats == null? LayoutEngine.getColSuppressRepeats(m_printFormat):m_layout.colSuppressRepeats; - Object [] preValues = new Object [colSuppressRepeats.length]; + Object [] preValues = null; + if (colSuppressRepeats != null){ + preValues = new Object [colSuppressRepeats.length]; + } int printColIndex = -1; // for all rows (-1 = header row) for (int row = -1; row < m_printData.getRowCount(); row++) @@ -948,7 +958,7 @@ queued-job-count = 0 (class javax.print.attribute.standard.QueuedJobCount) Object obj = m_printData.getNode(Integer.valueOf(item.getAD_Column_ID())); String data = ""; if (obj == null){ - if (colSuppressRepeats[printColIndex]){ + if (colSuppressRepeats != null && colSuppressRepeats[printColIndex]){ preValues[printColIndex] = null; } } @@ -960,7 +970,7 @@ queued-job-count = 0 (class javax.print.attribute.standard.QueuedJobCount) else data = pde.getValueDisplay(language); // formatted - if (colSuppressRepeats[printColIndex]){ + if (colSuppressRepeats != null && colSuppressRepeats[printColIndex]){ if (data.equals(preValues[printColIndex])){ continue; }else{ @@ -1149,7 +1159,7 @@ queued-job-count = 0 (class javax.print.attribute.standard.QueuedJobCount) catch (Exception e) { log.log(Level.SEVERE, "PDF", e); - return false; + throw new AdempiereException(e); } File file2 = new File(fileName); diff --git a/org.adempiere.base/src/org/compiere/print/layout/LayoutEngine.java b/org.adempiere.base/src/org/compiere/print/layout/LayoutEngine.java index 4e551fb4c8..69916c91e2 100644 --- a/org.adempiere.base/src/org/compiere/print/layout/LayoutEngine.java +++ b/org.adempiere.base/src/org/compiere/print/layout/LayoutEngine.java @@ -250,6 +250,7 @@ public class LayoutEngine implements Pageable, Printable, Doc public void setPrintFormat (MPrintFormat format, boolean doLayout) { m_format = format; + this.colSuppressRepeats = null; // Initial & Default Settings m_printCtx = new Properties(format.getCtx()); @@ -1980,6 +1981,8 @@ public class LayoutEngine implements Pageable, Printable, Doc } public static Boolean [] getColSuppressRepeats (MPrintFormat format){ + if (format.isForm()) + return null; List colSuppressRepeats = new ArrayList<>(); for (int c = 0; c < format.getItemCount(); c++) { From d2fc1f0d57ddb67cbac606cc0286f2215957f643 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Sat, 18 May 2019 12:55:57 +0200 Subject: [PATCH 4/5] IDEMPIERE-3972 Core problems with big numbers --- org.adempiere.base/src/org/compiere/model/MStatusLine.java | 2 +- .../src/org/adempiere/webui/component/WListItemRenderer.java | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/org.adempiere.base/src/org/compiere/model/MStatusLine.java b/org.adempiere.base/src/org/compiere/model/MStatusLine.java index 58c3fa163f..3b314dfa61 100644 --- a/org.adempiere.base/src/org/compiere/model/MStatusLine.java +++ b/org.adempiere.base/src/org/compiere/model/MStatusLine.java @@ -217,7 +217,7 @@ public class MStatusLine extends X_AD_StatusLine Format fmt = fmts[idx]; Object obj; if (fmt instanceof DecimalFormat || fmt instanceof ChoiceFormat) { - obj = rs.getDouble(idx+1); + obj = rs.getBigDecimal(idx+1); } else if (fmt instanceof SimpleDateFormat) { obj = rs.getTimestamp(idx+1); } else { diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/WListItemRenderer.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/WListItemRenderer.java index 9a9776755c..c9b9558cf7 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/WListItemRenderer.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/WListItemRenderer.java @@ -288,7 +288,7 @@ public class WListItemRenderer implements ListitemRenderer, EventListene } else { - listcell.setLabel(format.format(((Number)field).doubleValue())); + listcell.setLabel(format.format(field)); ZkCssHelper.appendStyle(listcell, "text-align: right"); } } From f0a1c63495377fff06578da6bb13ce589d8a6de0 Mon Sep 17 00:00:00 2001 From: sjeffen Date: Sun, 12 May 2019 09:31:06 +0200 Subject: [PATCH 5/5] IDEMPIERE-3968 cph::erp true false translation of role information dialog --- org.adempiere.base/src/org/compiere/model/MRole.java | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/org.adempiere.base/src/org/compiere/model/MRole.java b/org.adempiere.base/src/org/compiere/model/MRole.java index 7236f91476..577bbbf5ab 100644 --- a/org.adempiere.base/src/org/compiere/model/MRole.java +++ b/org.adempiere.base/src/org/compiere/model/MRole.java @@ -594,8 +594,8 @@ public final class MRole extends X_AD_Role { StringBuilder sb = new StringBuilder(); sb.append(Msg.translate(ctx, "AD_Role_ID")).append("=").append(getName()) - .append(" - ").append(Msg.translate(ctx, "IsCanExport")).append("=").append(isCanExport()) - .append(" - ").append(Msg.translate(ctx, "IsCanReport")).append("=").append(isCanReport()) + .append(" - ").append(Msg.translate(ctx, "IsCanExport")).append("=").append(Msg.translate(ctx,String.valueOf(isCanExport()))) + .append(" - ").append(Msg.translate(ctx, "IsCanReport")).append("=").append(Msg.translate(ctx,String.valueOf(isCanReport()))) .append(Env.NL).append(Env.NL); // for (int i = 0; i < m_orgAccess.length; i++)