From 5cd8d937e2101413b8fd72cba377c22bac2c8064 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Sat, 16 Mar 2024 16:03:48 +0100 Subject: [PATCH] IDEMPIERE-6072 Record ID Editor not working well on detail tabs with multi-ID key (#2270) * IDEMPIERE-6072 Record ID Editor not working well on detail tabs with multi-ID key * - add fix for the case when Record_ID is the link column to parent tab * - add fix for the case when Record_ID is the link column to parent tab --- .../src/org/adempiere/base/callout/TableIDCallout.java | 4 ++++ .../src/org/adempiere/webui/window/WRecordIDDialog.java | 2 +- 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/org.adempiere.base.callout/src/org/adempiere/base/callout/TableIDCallout.java b/org.adempiere.base.callout/src/org/adempiere/base/callout/TableIDCallout.java index d39914f596..4e3317bbee 100644 --- a/org.adempiere.base.callout/src/org/adempiere/base/callout/TableIDCallout.java +++ b/org.adempiere.base.callout/src/org/adempiere/base/callout/TableIDCallout.java @@ -47,6 +47,10 @@ public class TableIDCallout implements IColumnCallout { @Override public String start(Properties ctx, int WindowNo, GridTab mTab, GridField mField, Object value, Object oldValue) { + // do not trigger change if the table didn't change + if (oldValue != null && value != null && oldValue.equals(value)) + return null; + GridField recordId = mTab.getField("Record_ID"); if (recordId != null) { mTab.setValue(recordId, null); diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/WRecordIDDialog.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/WRecordIDDialog.java index 6af88b304d..b67c14b87e 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/WRecordIDDialog.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/WRecordIDDialog.java @@ -168,7 +168,7 @@ public class WRecordIDDialog extends Window implements EventListener, Val parentTextBox.setReadonly(true); MTable parentTable = MTable.get(editor.getGridField().getGridTab().getAD_Table_ID()); Serializable parentRecordId; - if (parentTable.isUUIDKeyTable()) + if (! parentTable.isIDKeyTable()) parentRecordId = (Serializable) editor.getGridField().getGridTab().getValue(PO.getUUIDColumnName(parentTable.getTableName())); else parentRecordId = editor.getGridField().getGridTab().getRecord_ID();