From 7c43d80296bc2845b86889356b6571ac8bbe3868 Mon Sep 17 00:00:00 2001 From: hengsin Date: Mon, 7 Oct 2024 00:10:13 +0800 Subject: [PATCH 1/5] IDEMPIERE-6222 HTML report not rendering images for Image Format Type (#2475) * IDEMPIERE-6222 HTML report not rendering images for Image Format Type * IDEMPIERE-6222 HTML report not rendering images for Image Format Type - added null check --- .../compiere/print/layout/ImageElement.java | 4 + .../print/renderer/HTMLReportRenderer.java | 132 +++++++++++++++++- .../zk/datatable/DatatableReportRenderer.java | 130 ++++++++++++++++- 3 files changed, 262 insertions(+), 4 deletions(-) diff --git a/org.adempiere.base/src/org/compiere/print/layout/ImageElement.java b/org.adempiere.base/src/org/compiere/print/layout/ImageElement.java index 9f056c53bf..714845f555 100644 --- a/org.adempiere.base/src/org/compiere/print/layout/ImageElement.java +++ b/org.adempiere.base/src/org/compiere/print/layout/ImageElement.java @@ -55,6 +55,8 @@ public class ImageElement extends PrintElement */ public static ImageElement get (String imageURLString) { + if (imageURLString == null) + return null; Object key = imageURLString; ImageElement image = (ImageElement)s_cache.get(key); if (image == null) @@ -216,6 +218,8 @@ public ImageElement(int record_ID, boolean isAttachment) private URL getURL (String urlString) { URL url = null; + if (urlString == null) + return null; // not a URL - may be a resource if (urlString.indexOf("://") == -1) { diff --git a/org.adempiere.base/src/org/idempiere/print/renderer/HTMLReportRenderer.java b/org.adempiere.base/src/org/idempiere/print/renderer/HTMLReportRenderer.java index 93060cb569..dabfc5b2c0 100644 --- a/org.adempiere.base/src/org/idempiere/print/renderer/HTMLReportRenderer.java +++ b/org.adempiere.base/src/org/idempiere/print/renderer/HTMLReportRenderer.java @@ -24,26 +24,37 @@ import java.awt.Color; import java.awt.Font; import java.io.BufferedWriter; +import java.io.ByteArrayInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; +import java.io.IOException; import java.io.OutputStreamWriter; import java.io.PrintWriter; import java.io.Writer; +import java.net.URL; import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.util.ArrayList; +import java.util.Base64; import java.util.HashMap; +import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.Map.Entry; import java.util.logging.Level; +import javax.imageio.ImageIO; +import javax.imageio.ImageReader; + +import org.adempiere.base.Core; import org.adempiere.exceptions.AdempiereException; import org.apache.ecs.MultiPartElement; import org.apache.ecs.XhtmlDocument; import org.apache.ecs.xhtml.*; +import org.compiere.model.MAttachment; import org.compiere.model.MColumn; +import org.compiere.model.MImage; import org.compiere.model.MQuery; import org.compiere.model.MRole; import org.compiere.model.MStyle; @@ -73,6 +84,7 @@ import org.compiere.util.Util; import org.osgi.service.component.annotations.Component; +import com.google.common.io.ByteStreams; import com.google.common.net.MediaType; import com.googlecode.htmlcompressor.compressor.HtmlCompressor; @@ -631,7 +643,11 @@ else if (obj instanceof PrintDataElement) if (item.isSuppressNull() && obj != null && suppressMap.containsKey(printColIndex)) suppressMap.remove(printColIndex); - if (pde.getColumnName().endsWith("_ID") && extension != null && !isExport) + if (item.isTypeImage()) + { + printImageColumn(td, item, pde); + } + else if (pde.getColumnName().endsWith("_ID") && extension != null && !isExport) { boolean isZoom = false; if (item.getColumnName().equals("Record_ID")) { @@ -720,7 +736,9 @@ else if (obj instanceof PrintDataElement) } if (cssPrefix != null) { - if (DisplayType.isNumeric(pde.getDisplayType())) + if (item.isTypeImage()) + td.setClass(cssPrefix + "-image"); + else if (DisplayType.isNumeric(pde.getDisplayType())) td.setClass(cssPrefix + "-number"); else if (DisplayType.isDate(pde.getDisplayType())) td.setClass(cssPrefix + "-date"); @@ -736,6 +754,116 @@ else if (obj instanceof PrintData) log.log(Level.SEVERE, "Element not PrintData(Element) " + obj.getClass()); } + private static void printImageColumn(MultiPartElement td, MPrintFormatItem item, PrintDataElement pde) { + if (item.isImageField()) + { + Object data = pde.getValue(); + if (data != null) + { + if (pde.getDisplayType() == DisplayType.Image) + { + if (data instanceof Number number) + { + int id = number.intValue(); + MImage image = MImage.get(id); + byte[] imageData = image.getBinaryData(); + createDataURLImageElement(td, imageData, item); + } + } + else + { + String url = data.toString(); + // not a URL - may be a resource + if (url.indexOf("://") == -1) + { + ClassLoader cl = HTMLReportRenderer.class.getClassLoader(); + URL resource = cl.getResource(url); + if (resource != null) + createDataURLImageElement(td, resource, item); + resource = Core.getResourceFinder().getResource(url); + if (resource != null) + createDataURLImageElement(td, resource, item); + } + else + { + img image = new img(url); + td.addElementToRegistry(image); + applyHeightAndWidth(item, image); + } + } + } + } + else if (item.isImageIsAttached()) + { + MAttachment attachment = MAttachment.get(Env.getCtx(), MPrintFormatItem.Table_ID, item.get_ID(), null, null); + if (attachment != null) + { + if (attachment.getEntryCount() != 1) + { + log.log(Level.WARNING, "Need just 1 Attachment Entry = " + attachment.getEntryCount()); + return; + } + byte[] imageData = attachment.getEntryData(0); + createDataURLImageElement(td, imageData, item); + } + } + else if (!Util.isEmpty(item.getImageURL(), true)) + { + img image = new img(item.getImageURL()); + td.addElementToRegistry(image); + applyHeightAndWidth(item, image); + } + } + + private static void applyHeightAndWidth(MPrintFormatItem item, img image) { + StringBuilder style = new StringBuilder(); + if (item.getMaxHeight() > 0) + style.append("height:").append(item.getMaxHeight()).append("px;"); + if (item.getMaxWidth() > 0) + style.append("width:").append(item.getMaxWidth()).append("px;"); + if (style.length() > 0) + image.setStyle(style.toString()); + } + + private static void createDataURLImageElement(MultiPartElement td, URL url, MPrintFormatItem item) { + byte[] imageData = null; + try { + imageData = ByteStreams.toByteArray(url.openStream()); + createDataURLImageElement(td, imageData, item); + } catch (IOException e) { + log.log(Level.WARNING, e.getLocalizedMessage(), e); + } + } + + private static void createDataURLImageElement(MultiPartElement td, byte[] imageData, MPrintFormatItem item) { + String contentType = null; + Iterator readers = null; + try { + readers = ImageIO.getImageReaders(ImageIO.createImageInputStream(new ByteArrayInputStream(imageData))); + } catch (IOException e) { + log.log(Level.WARNING, e.getLocalizedMessage(), e); + return; + } + while(readers.hasNext()) { + ImageReader reader = readers.next(); + try { + contentType = reader.getFormatName(); + if (!Util.isEmpty(contentType)) + break; + } catch (IOException e) { + } + } + if (contentType != null) { + StringBuilder builder = new StringBuilder("data:") + .append(contentType) + .append(";base64,"); + builder.append(Base64.getEncoder().encodeToString(imageData)); + img image = new img(builder.toString()); + td.addElementToRegistry(image); + applyHeightAndWidth(item, image); + } + } + /** * Compress html content * @param src diff --git a/org.idempiere.zk.datatable/src/org/idempiere/zk/datatable/DatatableReportRenderer.java b/org.idempiere.zk.datatable/src/org/idempiere/zk/datatable/DatatableReportRenderer.java index d8b193ad8c..cc0d439df2 100644 --- a/org.idempiere.zk.datatable/src/org/idempiere/zk/datatable/DatatableReportRenderer.java +++ b/org.idempiere.zk.datatable/src/org/idempiere/zk/datatable/DatatableReportRenderer.java @@ -24,6 +24,7 @@ import java.awt.Font; import java.io.BufferedReader; import java.io.BufferedWriter; +import java.io.ByteArrayInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; @@ -39,17 +40,25 @@ import java.nio.file.Paths; import java.util.ArrayList; import java.util.Arrays; +import java.util.Base64; import java.util.HashMap; +import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.logging.Level; +import javax.imageio.ImageIO; +import javax.imageio.ImageReader; + +import org.adempiere.base.Core; import org.adempiere.exceptions.AdempiereException; import org.apache.ecs.MultiPartElement; import org.apache.ecs.XhtmlDocument; import org.apache.ecs.xhtml.*; +import org.compiere.model.MAttachment; import org.compiere.model.MColumn; import org.compiere.model.MElement; +import org.compiere.model.MImage; import org.compiere.model.MQuery; import org.compiere.model.MRole; import org.compiere.model.MStyle; @@ -78,6 +87,7 @@ import org.osgi.service.component.annotations.Component; import org.zkoss.zk.ui.Executions; +import com.google.common.io.ByteStreams; import com.google.common.net.MediaType; @Component(service = IReportRenderer.class, immediate = true) @@ -704,7 +714,11 @@ else if (obj instanceof PrintDataElement) if (item.isSuppressNull() && obj != null && suppressMap.containsKey(printColIndex)) suppressMap.remove(printColIndex); - if (pde.getColumnName().endsWith("_ID") && extension != null && !isExport) + if (item.isTypeImage()) + { + printImageColumn(td, item, pde); + } + else if (pde.getColumnName().endsWith("_ID") && extension != null && !isExport) { boolean isZoom = false; if (item.getColumnName().equals("Record_ID")) { @@ -793,7 +807,9 @@ else if (obj instanceof PrintDataElement) } if (cssPrefix != null) { - if (DisplayType.isNumeric(pde.getDisplayType())) + if (item.isTypeImage()) + td.setClass(cssPrefix + "-image"); + else if (DisplayType.isNumeric(pde.getDisplayType())) td.setClass(cssPrefix + "-number"); else if (DisplayType.isDate(pde.getDisplayType())) td.setClass(cssPrefix + "-date"); @@ -812,6 +828,116 @@ else if (obj instanceof PrintData) log.log(Level.SEVERE, "Element not PrintData(Element) " + obj.getClass()); } + private static void printImageColumn(MultiPartElement td, MPrintFormatItem item, PrintDataElement pde) { + if (item.isImageField()) + { + Object data = pde.getValue(); + if (data != null) + { + if (pde.getDisplayType() == DisplayType.Image) + { + if (data instanceof Number number) + { + int id = number.intValue(); + MImage image = MImage.get(id); + byte[] imageData = image.getBinaryData(); + createDataURLImageElement(td, imageData, item); + } + } + else + { + String url = data.toString(); + // not a URL - may be a resource + if (url.indexOf("://") == -1) + { + ClassLoader cl = HTMLReportRenderer.class.getClassLoader(); + URL resource = cl.getResource(url); + if (resource != null) + createDataURLImageElement(td, resource, item); + resource = Core.getResourceFinder().getResource(url); + if (resource != null) + createDataURLImageElement(td, resource, item); + } + else + { + img image = new img(url); + td.addElementToRegistry(image); + applyHeightAndWidth(item, image); + } + } + } + } + else if (item.isImageIsAttached()) + { + MAttachment attachment = MAttachment.get(Env.getCtx(), MPrintFormatItem.Table_ID, item.get_ID(), null, null); + if (attachment != null) + { + if (attachment.getEntryCount() != 1) + { + log.log(Level.WARNING, "Need just 1 Attachment Entry = " + attachment.getEntryCount()); + return; + } + byte[] imageData = attachment.getEntryData(0); + createDataURLImageElement(td, imageData, item); + } + } + else if (!Util.isEmpty(item.getImageURL(), true)) + { + img image = new img(item.getImageURL()); + td.addElementToRegistry(image); + applyHeightAndWidth(item, image); + } + } + + private static void applyHeightAndWidth(MPrintFormatItem item, img image) { + StringBuilder style = new StringBuilder(); + if (item.getMaxHeight() > 0) + style.append("height:").append(item.getMaxHeight()).append("px;"); + if (item.getMaxWidth() > 0) + style.append("width:").append(item.getMaxWidth()).append("px;"); + if (style.length() > 0) + image.setStyle(style.toString()); + } + + private static void createDataURLImageElement(MultiPartElement td, URL url, MPrintFormatItem item) { + byte[] imageData = null; + try { + imageData = ByteStreams.toByteArray(url.openStream()); + createDataURLImageElement(td, imageData, item); + } catch (IOException e) { + log.log(Level.WARNING, e.getLocalizedMessage(), e); + } + } + + private static void createDataURLImageElement(MultiPartElement td, byte[] imageData, MPrintFormatItem item) { + String contentType = null; + Iterator readers = null; + try { + readers = ImageIO.getImageReaders(ImageIO.createImageInputStream(new ByteArrayInputStream(imageData))); + } catch (IOException e) { + log.log(Level.WARNING, e.getLocalizedMessage(), e); + return; + } + while(readers.hasNext()) { + ImageReader reader = readers.next(); + try { + contentType = reader.getFormatName(); + if (!Util.isEmpty(contentType)) + break; + } catch (IOException e) { + } + } + if (contentType != null) { + StringBuilder builder = new StringBuilder("data:") + .append(contentType) + .append(";base64,"); + builder.append(Base64.getEncoder().encodeToString(imageData)); + img image = new img(builder.toString()); + td.addElementToRegistry(image); + applyHeightAndWidth(item, image); + } + } + /** * If isExport, embed script content, otherwise embed script url * @param doc From 47f62f4063676b3b311e508dc814dd9533a0f787 Mon Sep 17 00:00:00 2001 From: Zuhri Utama Date: Mon, 7 Oct 2024 18:12:55 +0700 Subject: [PATCH 2/5] IDEMPIERE-6210 : Dashboard Menu - not showed (#2477) --- .../WEB-INF/src/org/adempiere/webui/dashboard/DPMenuTree.java | 2 ++ 1 file changed, 2 insertions(+) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/dashboard/DPMenuTree.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/dashboard/DPMenuTree.java index 91615ed277..e0a2fe1fad 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/dashboard/DPMenuTree.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/dashboard/DPMenuTree.java @@ -15,6 +15,7 @@ package org.adempiere.webui.dashboard; import org.adempiere.webui.panel.MenuTreePanel; +import org.adempiere.webui.util.ZKUpdateUtil; /** * Dashboard gadget: Menu Tree @@ -37,6 +38,7 @@ public DPMenuTree() super(); menuTreePanel = new MenuTreePanel(this); + ZKUpdateUtil.setHeight(this, "100%"); } /** From d0ea295985dff7245bb463a75c299e8d7d96691a Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Mon, 7 Oct 2024 14:28:22 +0200 Subject: [PATCH 3/5] IDEMPIERE-4297 reorganize default dashboard (#2474) * IDEMPIERE-4297 reorganize default dashboard * - fix oracle issue (semicolon at the end of the SQL) --- .../oracle/202410031525_IDEMPIERE-4297.sql | 44 +++++++++++++++++++ .../202410031525_IDEMPIERE-4297.sql | 41 +++++++++++++++++ 2 files changed, 85 insertions(+) create mode 100644 migration/iD11/oracle/202410031525_IDEMPIERE-4297.sql create mode 100644 migration/iD11/postgresql/202410031525_IDEMPIERE-4297.sql diff --git a/migration/iD11/oracle/202410031525_IDEMPIERE-4297.sql b/migration/iD11/oracle/202410031525_IDEMPIERE-4297.sql new file mode 100644 index 0000000000..c165cba76b --- /dev/null +++ b/migration/iD11/oracle/202410031525_IDEMPIERE-4297.sql @@ -0,0 +1,44 @@ +-- IDEMPIERE-4297 organize dashboard +SELECT register_migration_script('202410031525_IDEMPIERE-4297.sql') FROM dual; + +SET SQLBLANKLINES ON +SET DEFINE OFF + +-- Oct 3, 2024, 3:31:34 PM CEST +UPDATE PA_DashboardContent SET ColumnNo=2,Updated=TO_TIMESTAMP('2024-10-03 15:31:34','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE PA_DashboardContent_ID=200005 +; + +-- Oct 3, 2024, 3:31:56 PM CEST +UPDATE PA_DashboardContent SET Line=1, ColumnNo=2,Updated=TO_TIMESTAMP('2024-10-03 15:31:56','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE PA_DashboardContent_ID=200002 +; + +-- Oct 3, 2024, 3:32:40 PM CEST +UPDATE PA_DashboardContent SET ColumnNo=4,Updated=TO_TIMESTAMP('2024-10-03 15:32:40','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE PA_DashboardContent_ID=50003 +; + +-- Oct 3, 2024, 3:32:54 PM CEST +UPDATE PA_DashboardContent SET Line=0, ColumnNo=1,Updated=TO_TIMESTAMP('2024-10-03 15:32:54','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE PA_DashboardContent_ID=50002 +; + +-- Oct 3, 2024, 3:33:54 PM CEST +UPDATE PA_DashboardContent SET Line=1, ColumnNo=1,Updated=TO_TIMESTAMP('2024-10-03 15:33:54','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE PA_DashboardContent_ID=200019 +; + +-- Oct 3, 2024, 3:34:26 PM CEST +UPDATE PA_DashboardContent SET Line=1, ColumnNo=0,Updated=TO_TIMESTAMP('2024-10-03 15:34:26','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE PA_DashboardContent_ID=200018 +; + +-- Oct 3, 2024, 3:34:57 PM CEST +UPDATE PA_DashboardContent SET Line=0, ColumnNo=3,Updated=TO_TIMESTAMP('2024-10-03 15:34:57','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE PA_DashboardContent_ID=50004 +; + +-- Oct 3, 2024, 3:55:12 PM CEST +UPDATE AD_StatusLine SET SQLStatement='SELECT + SUM(CASE WHEN EXTRACT(YEAR FROM Dateordered) = EXTRACT(YEAR FROM getdate()) THEN 1 ELSE 0 END) AS total_orders_current_year, + SUM(CASE WHEN EXTRACT(YEAR FROM Dateordered) = 2002 THEN 1 ELSE 0 END) AS total_orders_2002, + SUM(CASE WHEN EXTRACT(YEAR FROM Dateordered) = EXTRACT(YEAR FROM getdate()) THEN 1 ELSE 0 END) - + SUM(CASE WHEN EXTRACT(YEAR FROM Dateordered) = 2002 THEN 1 ELSE 0 END) AS difference +FROM c_order +WHERE issotrx=''Y'' AND ad_client_id= @#AD_Client_ID@',Updated=TO_TIMESTAMP('2024-10-03 15:55:12','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_StatusLine_ID=200024 +; + diff --git a/migration/iD11/postgresql/202410031525_IDEMPIERE-4297.sql b/migration/iD11/postgresql/202410031525_IDEMPIERE-4297.sql new file mode 100644 index 0000000000..fa042c7675 --- /dev/null +++ b/migration/iD11/postgresql/202410031525_IDEMPIERE-4297.sql @@ -0,0 +1,41 @@ +-- IDEMPIERE-4297 organize dashboard +SELECT register_migration_script('202410031525_IDEMPIERE-4297.sql') FROM dual; + +-- Oct 3, 2024, 3:31:34 PM CEST +UPDATE PA_DashboardContent SET ColumnNo=2,Updated=TO_TIMESTAMP('2024-10-03 15:31:34','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE PA_DashboardContent_ID=200005 +; + +-- Oct 3, 2024, 3:31:56 PM CEST +UPDATE PA_DashboardContent SET Line=1, ColumnNo=2,Updated=TO_TIMESTAMP('2024-10-03 15:31:56','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE PA_DashboardContent_ID=200002 +; + +-- Oct 3, 2024, 3:32:40 PM CEST +UPDATE PA_DashboardContent SET ColumnNo=4,Updated=TO_TIMESTAMP('2024-10-03 15:32:40','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE PA_DashboardContent_ID=50003 +; + +-- Oct 3, 2024, 3:32:54 PM CEST +UPDATE PA_DashboardContent SET Line=0, ColumnNo=1,Updated=TO_TIMESTAMP('2024-10-03 15:32:54','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE PA_DashboardContent_ID=50002 +; + +-- Oct 3, 2024, 3:33:54 PM CEST +UPDATE PA_DashboardContent SET Line=1, ColumnNo=1,Updated=TO_TIMESTAMP('2024-10-03 15:33:54','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE PA_DashboardContent_ID=200019 +; + +-- Oct 3, 2024, 3:34:26 PM CEST +UPDATE PA_DashboardContent SET Line=1, ColumnNo=0,Updated=TO_TIMESTAMP('2024-10-03 15:34:26','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE PA_DashboardContent_ID=200018 +; + +-- Oct 3, 2024, 3:34:57 PM CEST +UPDATE PA_DashboardContent SET Line=0, ColumnNo=3,Updated=TO_TIMESTAMP('2024-10-03 15:34:57','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE PA_DashboardContent_ID=50004 +; + +-- Oct 3, 2024, 3:55:12 PM CEST +UPDATE AD_StatusLine SET SQLStatement='SELECT + SUM(CASE WHEN EXTRACT(YEAR FROM Dateordered) = EXTRACT(YEAR FROM getdate()) THEN 1 ELSE 0 END) AS total_orders_current_year, + SUM(CASE WHEN EXTRACT(YEAR FROM Dateordered) = 2002 THEN 1 ELSE 0 END) AS total_orders_2002, + SUM(CASE WHEN EXTRACT(YEAR FROM Dateordered) = EXTRACT(YEAR FROM getdate()) THEN 1 ELSE 0 END) - + SUM(CASE WHEN EXTRACT(YEAR FROM Dateordered) = 2002 THEN 1 ELSE 0 END) AS difference +FROM c_order +WHERE issotrx=''Y'' AND ad_client_id= @#AD_Client_ID@',Updated=TO_TIMESTAMP('2024-10-03 15:55:12','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_StatusLine_ID=200024 +; + From 9bb80e6e2ff600e2b8aa694c368b41516fa72556 Mon Sep 17 00:00:00 2001 From: Nicolas Micoud <58596990+nmicoud@users.noreply.github.com> Date: Mon, 7 Oct 2024 15:01:48 +0200 Subject: [PATCH 4/5] IDEMPIERE-6196 - AD_SysConfig (#2479) --- .../oracle/202410071412_IDEMPIERE-6196.sql | 18 ++++++++++++++++++ .../postgresql/202410071412_IDEMPIERE-6196.sql | 15 +++++++++++++++ 2 files changed, 33 insertions(+) create mode 100644 migration/iD11/oracle/202410071412_IDEMPIERE-6196.sql create mode 100644 migration/iD11/postgresql/202410071412_IDEMPIERE-6196.sql diff --git a/migration/iD11/oracle/202410071412_IDEMPIERE-6196.sql b/migration/iD11/oracle/202410071412_IDEMPIERE-6196.sql new file mode 100644 index 0000000000..b733163f02 --- /dev/null +++ b/migration/iD11/oracle/202410071412_IDEMPIERE-6196.sql @@ -0,0 +1,18 @@ +-- IDEMPIERE-6196_SysConfig +SELECT register_migration_script('202410071412_IDEMPIERE-6196.sql') FROM dual; + +SET SQLBLANKLINES ON +SET DEFINE OFF + +-- Oct 7, 2024, 2:12:19 PM CEST +UPDATE AD_Column SET SeqNoSelection=10,Updated=TO_TIMESTAMP('2024-10-07 14:12:19','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=10 WHERE AD_Column_ID=50195 +; + +-- Oct 7, 2024, 2:12:23 PM CEST +UPDATE AD_Column SET SeqNoSelection=20,Updated=TO_TIMESTAMP('2024-10-07 14:12:23','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=10 WHERE AD_Column_ID=50197 +; + +-- Oct 7, 2024, 2:12:27 PM CEST +UPDATE AD_Column SET SeqNoSelection=30,Updated=TO_TIMESTAMP('2024-10-07 14:12:27','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=10 WHERE AD_Column_ID=50196 +; + diff --git a/migration/iD11/postgresql/202410071412_IDEMPIERE-6196.sql b/migration/iD11/postgresql/202410071412_IDEMPIERE-6196.sql new file mode 100644 index 0000000000..63bde69934 --- /dev/null +++ b/migration/iD11/postgresql/202410071412_IDEMPIERE-6196.sql @@ -0,0 +1,15 @@ +-- IDEMPIERE-6196_SysConfig +SELECT register_migration_script('202410071412_IDEMPIERE-6196.sql') FROM dual; + +-- Oct 7, 2024, 2:12:19 PM CEST +UPDATE AD_Column SET SeqNoSelection=10,Updated=TO_TIMESTAMP('2024-10-07 14:12:19','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=10 WHERE AD_Column_ID=50195 +; + +-- Oct 7, 2024, 2:12:23 PM CEST +UPDATE AD_Column SET SeqNoSelection=20,Updated=TO_TIMESTAMP('2024-10-07 14:12:23','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=10 WHERE AD_Column_ID=50197 +; + +-- Oct 7, 2024, 2:12:27 PM CEST +UPDATE AD_Column SET SeqNoSelection=30,Updated=TO_TIMESTAMP('2024-10-07 14:12:27','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=10 WHERE AD_Column_ID=50196 +; + From 04c3bb999b268c7d83f09731743fe344ce9f3382 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Mon, 7 Oct 2024 17:43:57 +0200 Subject: [PATCH 5/5] IDEMPIERE-6260 Posting error not creating Notice (#2478) --- org.adempiere.base/src/org/compiere/acct/Doc.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/org.adempiere.base/src/org/compiere/acct/Doc.java b/org.adempiere.base/src/org/compiere/acct/Doc.java index ad7f3637c6..af0c46959b 100644 --- a/org.adempiere.base/src/org/compiere/acct/Doc.java +++ b/org.adempiere.base/src/org/compiere/acct/Doc.java @@ -665,7 +665,7 @@ else if (isPosted()) String AD_MessageValue = "PostingError-" + p_Status; int AD_User_ID = p_po.getUpdatedBy(); MNote note = new MNote (getCtx(), AD_MessageValue, AD_User_ID, - getAD_Client_ID(), getAD_Org_ID(), p_po.get_TrxName()); + getAD_Client_ID(), getAD_Org_ID(), null); note.setRecord(p_po.get_Table_ID(), p_po.get_ID()); // Reference note.setReference(toString()); // Document