From a128d9b3027a2dbbf94ac1561b79bf0661c37dea Mon Sep 17 00:00:00 2001 From: Heng Sin Low Date: Mon, 5 Aug 2013 01:22:46 +0800 Subject: [PATCH 01/57] IDEMPIERE-1238.detail edit not commit when next header record. --- .../src/org/adempiere/webui/adwindow/CompositeADTabbox.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/CompositeADTabbox.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/CompositeADTabbox.java index 50af43f98f..fab3968ef9 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/CompositeADTabbox.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/CompositeADTabbox.java @@ -660,7 +660,7 @@ public class CompositeADTabbox extends AbstractADTabbox if (detailTab != null) { //check data action String uuid = (String) execution.getAttribute(CompositeADTabbox.class.getName()+".dataAction"); - if (uuid != null && uuid.equals(detailTab.getUuid())) { + if (uuid != null && uuid.equals(detailTab.getUuid()) && detailTab.getGridTab().isCurrent()) { //refresh current row detailTab.getGridTab().dataRefresh(false); //keep focus From 099e1bf88034c2d2672feba0fe1c6c90fbd73732 Mon Sep 17 00:00:00 2001 From: Richard Morales Date: Sun, 4 Aug 2013 20:52:39 -0500 Subject: [PATCH 02/57] IDEMPIERE-1198 value in textbox isn't manipulation --- .../src/org/adempiere/webui/editor/WSearchEditor.java | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WSearchEditor.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WSearchEditor.java index 7c30d3667c..20c860ca78 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WSearchEditor.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WSearchEditor.java @@ -466,10 +466,12 @@ public class WSearchEditor extends WEditor implements ContextMenuListener, Value value = ((Object[])value)[0]; } - if (value == null && getValue() == null) + if (value == null && getValue() == null) { updated = true; - else if (value != null && value.equals(getValue())) + } else if (value != null && value.equals(getValue())) { updated = true; + getComponent().setText(lookup.getDisplay(value)); + } if (!updated) { setValue(value); From c59cc58eedf689e54819e85e28aa89c8a5441888 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Sun, 4 Aug 2013 21:27:13 -0500 Subject: [PATCH 03/57] IDEMPIERE-1183 Info Invoice window not setting Sales Trx flag / Based on patch from Richard Morales --- .../webui/factory/DefaultInfoFactory.java | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/factory/DefaultInfoFactory.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/factory/DefaultInfoFactory.java index f93a0cd528..b868cbaebc 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/factory/DefaultInfoFactory.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/factory/DefaultInfoFactory.java @@ -35,6 +35,7 @@ import org.adempiere.webui.panel.InfoPaymentPanel; import org.adempiere.webui.panel.InfoProductPanel; import org.compiere.model.GridField; import org.compiere.model.Lookup; +import org.compiere.model.MDocType; import org.compiere.model.MInfoWindow; import org.compiere.util.Env; @@ -49,11 +50,12 @@ public class DefaultInfoFactory implements IInfoFactory { public InfoPanel create(int WindowNo, String tableName, String keyColumn, String value, boolean multiSelection, String whereClause, int AD_InfoWindow_ID, boolean lookup) { InfoPanel info = null; + setSOTrxBasedOnDocType(WindowNo); if (tableName.equals("C_BPartner")) { info = new InfoBPartnerWindow(WindowNo, tableName, keyColumn, value, multiSelection, whereClause, AD_InfoWindow_ID, lookup); if (!info.loadedOK()) { - info = new InfoBPartnerPanel (value,WindowNo, !Env.getContext(Env.getCtx(),"IsSOTrx").equals("N"), + info = new InfoBPartnerPanel (value,WindowNo, !Env.getContext(Env.getCtx(), WindowNo, "IsSOTrx").equals("N"), multiSelection, whereClause, lookup); } } else if (tableName.equals("M_Product")) { @@ -123,7 +125,8 @@ public class DefaultInfoFactory implements IInfoFactory { String keyColumn, String queryValue, boolean multiSelection, String whereClause, int AD_InfoWindow_ID) { InfoPanel info = null; - + setSOTrxBasedOnDocType(lookup.getWindowNo()); + String col = lookup.getColumnName(); // fully qualified name if (col.indexOf('.') != -1) @@ -182,4 +185,12 @@ public class DefaultInfoFactory implements IInfoFactory { return null; } + private void setSOTrxBasedOnDocType(int WindowNo) { + int C_DocType_ID = Env.getContextAsInt(Env.getCtx(), WindowNo, "C_DocType_ID"); + if (C_DocType_ID != 0) { + MDocType dt = MDocType.get (Env.getCtx(), C_DocType_ID); + Env.setContext(Env.getCtx(), WindowNo, "IsSOTrx", dt.isSOTrx () ? "Y": "N"); + } + } + } From 6819bbc720b97a44465cd1b9bff4c8cd02ca9c06 Mon Sep 17 00:00:00 2001 From: Heng Sin Low Date: Mon, 5 Aug 2013 11:04:00 +0800 Subject: [PATCH 04/57] IDEMPIERE-1248 Performance Optimization: Eliminate the fire and processing of duplicate event. --- .../adempiere/webui/adwindow/ADTabpanel.java | 42 ++++++++++++++++--- .../webui/dashboard/DPPerformance.java | 18 ++++++-- .../webui/util/LogEventInterceptor.java | 16 ++++++- .../adempiere/webui/window/FindWindow.java | 7 +++- 4 files changed, 71 insertions(+), 12 deletions(-) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADTabpanel.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADTabpanel.java index a150807ec3..32d5e36568 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADTabpanel.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADTabpanel.java @@ -127,6 +127,10 @@ DataStatusListener, IADTabpanel, IdSpace, IFieldEditorContainer public static final String ON_DYNAMIC_DISPLAY_EVENT = "onDynamicDisplay"; + public static final String ON_DEFER_DYNAMIC_DISPLAY_EVENT = "onDeferDynamicDisplay"; + + public static final String ON_DEFER_DYNAMIC_DISPLAY_EVENT_ATTR = "onDeferDynamicDisplay.Event.Posted"; + /** * */ @@ -134,6 +138,8 @@ DataStatusListener, IADTabpanel, IdSpace, IFieldEditorContainer private static final String ON_DEFER_SET_SELECTED_NODE = "onDeferSetSelectedNode"; + private static final String ON_DEFER_SET_SELECTED_NODE_ATTR = "onDeferSetSelectedNode.Event.Posted"; + private static final CLogger logger; static @@ -217,6 +223,7 @@ DataStatusListener, IADTabpanel, IdSpace, IFieldEditorContainer }); addEventListener(ON_POST_INIT_EVENT, this); addEventListener(ON_SAVE_OPEN_PREFERENCE_EVENT, this); + addEventListener(ON_DEFER_DYNAMIC_DISPLAY_EVENT, this); } private void initComponents() @@ -654,8 +661,21 @@ DataStatusListener, IADTabpanel, IdSpace, IFieldEditorContainer * @param col */ @Override - public void dynamicDisplay (int col) + public void dynamicDisplay (int col) + { + //0 and -1 is same + if (col < 0) + col = 0; + if (getAttribute(ON_DEFER_DYNAMIC_DISPLAY_EVENT_ATTR+"_"+col) == null) + { + setAttribute(ON_DEFER_DYNAMIC_DISPLAY_EVENT_ATTR+"_"+col, Boolean.TRUE); + Events.postEvent(ON_DEFER_DYNAMIC_DISPLAY_EVENT, this, col); + } + } + + private void onDeferDynamicDisplay (int col) { + removeAttribute(ON_DEFER_DYNAMIC_DISPLAY_EVENT_ATTR+"_"+col); if (!gridTab.isOpen()) { return; @@ -796,10 +816,17 @@ DataStatusListener, IADTabpanel, IdSpace, IFieldEditorContainer } Events.sendEvent(this, new Event(ON_DYNAMIC_DISPLAY_EVENT, this)); - Events.echoEvent(ON_DEFER_SET_SELECTED_NODE, this, null); + echoDeferSetSelectedNodeEvent(); if (logger.isLoggable(Level.CONFIG)) logger.config(gridTab.toString() + " - fini - " + (col<=0 ? "complete" : "seletive")); } // dynamicDisplay + private void echoDeferSetSelectedNodeEvent() { + if (getAttribute(ON_DEFER_SET_SELECTED_NODE_ATTR) == null) { + setAttribute(ON_DEFER_SET_SELECTED_NODE_ATTR, Boolean.TRUE); + Events.echoEvent(ON_DEFER_SET_SELECTED_NODE, this, null); + } + } + /** * @return String */ @@ -957,7 +984,7 @@ DataStatusListener, IADTabpanel, IdSpace, IFieldEditorContainer } if (gridTab.getRecord_ID() > 0 && gridTab.isTreeTab() && treePanel != null) { - Events.echoEvent(ON_DEFER_SET_SELECTED_NODE, this, null); + echoDeferSetSelectedNodeEvent(); } Event event = new Event(ON_ACTIVATE_EVENT, this, activate); @@ -1006,6 +1033,7 @@ DataStatusListener, IADTabpanel, IdSpace, IFieldEditorContainer navigateTo((DefaultTreeNode)item.getValue()); } else if (ON_DEFER_SET_SELECTED_NODE.equals(event.getName())) { + removeAttribute(ON_DEFER_SET_SELECTED_NODE_ATTR); if (gridTab.getRecord_ID() >= 0 && gridTab.isTreeTab() && treePanel != null) { setSelectedNode(gridTab.getRecord_ID()); } @@ -1052,6 +1080,10 @@ DataStatusListener, IADTabpanel, IdSpace, IFieldEditorContainer Env.getCtx().setProperty("P"+windowId+"|"+adTabId+"|DetailPane.IsOpen", value ? "Y" : "N"); } } + else if (event.getName().equals(ON_DEFER_DYNAMIC_DISPLAY_EVENT)) { + Integer col = (Integer) event.getData(); + onDeferDynamicDisplay(col); + } } private void onSouthEvent(SouthEvent event) { @@ -1197,7 +1229,7 @@ DataStatusListener, IADTabpanel, IdSpace, IFieldEditorContainer if (AD_Tree_ID != 0) { if (treePanel.initTree(AD_Tree_ID, windowNo)) - Events.echoEvent(ON_DEFER_SET_SELECTED_NODE, this, null); + echoDeferSetSelectedNodeEvent(); else setSelectedNode(gridTab.getRecord_ID()); @@ -1282,7 +1314,7 @@ DataStatusListener, IADTabpanel, IdSpace, IFieldEditorContainer int[] path = model.getPath(treeNode); Treeitem ti = treePanel.getTree().renderItemByPath(path); if (ti.getPage() == null) { - Events.echoEvent(ON_DEFER_SET_SELECTED_NODE, this, null); + echoDeferSetSelectedNodeEvent(); } boolean changed = false; diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/dashboard/DPPerformance.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/dashboard/DPPerformance.java index b4de64c04e..9e80740a48 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/dashboard/DPPerformance.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/dashboard/DPPerformance.java @@ -29,6 +29,7 @@ import org.zkoss.zk.ui.util.Clients; */ public class DPPerformance extends DashboardPanel { + private static final String ON_POST_RENDER_ATTR = "onPostRender.Event.Posted"; /** * */ @@ -53,22 +54,31 @@ public class DPPerformance extends DashboardPanel { public void refresh(ServerPushTemplate template) { super.refresh(template); - if (Executions.getCurrent() != null) - Events.echoEvent("onPostRender", this, null); + if (Executions.getCurrent() != null) { + if (this.getAttribute(ON_POST_RENDER_ATTR) == null) { + setAttribute(ON_POST_RENDER_ATTR, Boolean.TRUE); + Events.echoEvent("onPostRender", this, null); + } + } } @Override public void onPageAttached(Page newpage, Page oldpage) { super.onPageAttached(newpage, oldpage); if (newpage != null) { - if (Executions.getCurrent() != null) - Events.echoEvent("onPostRender", this, null); + if (Executions.getCurrent() != null) { + if (this.getAttribute(ON_POST_RENDER_ATTR) == null) { + setAttribute(ON_POST_RENDER_ATTR, Boolean.TRUE); + Events.echoEvent("onPostRender", this, null); + } + } } } //adjust window height to match grid height public void onPostRender() { + removeAttribute(ON_POST_RENDER_ATTR); if (this.getFirstChild() != null) { Component grid = this.getFirstChild().getFirstChild(); diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/util/LogEventInterceptor.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/util/LogEventInterceptor.java index 25e5da9b98..9e2d3b3eb2 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/util/LogEventInterceptor.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/util/LogEventInterceptor.java @@ -3,6 +3,8 @@ */ package org.adempiere.webui.util; +import org.zkoss.zk.ui.Execution; +import org.zkoss.zk.ui.Executions; import org.zkoss.zk.ui.event.Event; import org.zkoss.zk.ui.util.EventInterceptor; @@ -35,8 +37,18 @@ public class LogEventInterceptor implements EventInterceptor { */ @Override public Event beforeProcessEvent(Event event) { - String locator = event.getTarget() != null ? event.getTarget().getWidgetAttribute("_zk_locator") : ""; - System.out.println("beforeProcessEvent, event="+event.getName()+",target="+event.getTarget()+",locator="+locator); + if (event.getTarget() != null) { + Execution execution = Executions.getCurrent(); + String uuid = event.getTarget().getUuid(); + String key = uuid + event.getName(); + if (execution.getAttribute(key) != null) { + System.out.println("Duplicate Event., event="+event.getName()+",target="+event.getTarget()); + } else { + execution.setAttribute(key, Boolean.TRUE); + String locator = event.getTarget() != null ? event.getTarget().getWidgetAttribute("_zk_locator") : ""; + System.out.println("beforeProcessEvent, event="+event.getName()+",target="+event.getTarget()+",locator="+locator); + } + } return event; } diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/FindWindow.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/FindWindow.java index 7f2b29b53b..24c6b0db59 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/FindWindow.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/FindWindow.java @@ -206,6 +206,7 @@ public class FindWindow extends Window implements EventListener, ValueCha private Properties m_findCtx; + private static final String ON_POST_VISIBLE_ATTR = "onPostVisible.Event.Posted"; /** * FindPanel Constructor @@ -2157,6 +2158,7 @@ public class FindWindow extends Window implements EventListener, ValueCha } public void OnPostVisible() { + removeAttribute(ON_POST_VISIBLE_ATTR); if (m_sEditors.size() > 0) Clients.response(new AuFocus(m_sEditors.get(0).getComponent())); } @@ -2180,7 +2182,10 @@ public class FindWindow extends Window implements EventListener, ValueCha public boolean setVisible(boolean visible) { boolean ret = super.setVisible(visible); if (visible) { - Events.echoEvent("OnPostVisible", this, null); + if (getAttribute(ON_POST_VISIBLE_ATTR) == null) { + setAttribute(ON_POST_VISIBLE_ATTR, Boolean.TRUE); + Events.echoEvent("OnPostVisible", this, null); + } } else { //auto detach detach(); From 570b5dd012acb25f25faa28971e3718e1aba120d Mon Sep 17 00:00:00 2001 From: Heng Sin Low Date: Mon, 5 Aug 2013 12:25:49 +0800 Subject: [PATCH 05/57] IDEMPIERE-1248 Performance Optimization: Eliminate the fire and processing of duplicate event. Fixed regression - post of dynamic display break lookup editor. --- .../adempiere/webui/adwindow/ADTabpanel.java | 21 ++++++++++--------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADTabpanel.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADTabpanel.java index 32d5e36568..29252dc8d7 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADTabpanel.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADTabpanel.java @@ -78,6 +78,7 @@ import org.compiere.util.Util; import org.zkoss.zk.au.out.AuFocus; import org.zkoss.zk.au.out.AuScript; import org.zkoss.zk.ui.Component; +import org.zkoss.zk.ui.Execution; import org.zkoss.zk.ui.Executions; import org.zkoss.zk.ui.HtmlBasedComponent; import org.zkoss.zk.ui.IdSpace; @@ -127,9 +128,9 @@ DataStatusListener, IADTabpanel, IdSpace, IFieldEditorContainer public static final String ON_DYNAMIC_DISPLAY_EVENT = "onDynamicDisplay"; - public static final String ON_DEFER_DYNAMIC_DISPLAY_EVENT = "onDeferDynamicDisplay"; + public static final String ON_DYNAMIC_DISPLAY_CALL_EVENT = "onDynamicDisplayCall"; - public static final String ON_DEFER_DYNAMIC_DISPLAY_EVENT_ATTR = "onDeferDynamicDisplay.Event.Posted"; + public static final String ON_DYNAMIC_DISPLAY_CALL_EVENT_ATTR = "onDynamicDisplayCall.Event.Posted"; /** * @@ -223,7 +224,7 @@ DataStatusListener, IADTabpanel, IdSpace, IFieldEditorContainer }); addEventListener(ON_POST_INIT_EVENT, this); addEventListener(ON_SAVE_OPEN_PREFERENCE_EVENT, this); - addEventListener(ON_DEFER_DYNAMIC_DISPLAY_EVENT, this); + addEventListener(ON_DYNAMIC_DISPLAY_CALL_EVENT, this); } private void initComponents() @@ -666,16 +667,16 @@ DataStatusListener, IADTabpanel, IdSpace, IFieldEditorContainer //0 and -1 is same if (col < 0) col = 0; - if (getAttribute(ON_DEFER_DYNAMIC_DISPLAY_EVENT_ATTR+"_"+col) == null) + Execution exec = Executions.getCurrent(); + if (exec.getAttribute(ON_DYNAMIC_DISPLAY_CALL_EVENT_ATTR+"_"+col) == null) { - setAttribute(ON_DEFER_DYNAMIC_DISPLAY_EVENT_ATTR+"_"+col, Boolean.TRUE); - Events.postEvent(ON_DEFER_DYNAMIC_DISPLAY_EVENT, this, col); + exec.setAttribute(ON_DYNAMIC_DISPLAY_CALL_EVENT_ATTR+"_"+col, Boolean.TRUE); + Events.sendEvent(ON_DYNAMIC_DISPLAY_CALL_EVENT, this, col); } } - private void onDeferDynamicDisplay (int col) + private void onDynamicDisplayCall (int col) { - removeAttribute(ON_DEFER_DYNAMIC_DISPLAY_EVENT_ATTR+"_"+col); if (!gridTab.isOpen()) { return; @@ -1080,9 +1081,9 @@ DataStatusListener, IADTabpanel, IdSpace, IFieldEditorContainer Env.getCtx().setProperty("P"+windowId+"|"+adTabId+"|DetailPane.IsOpen", value ? "Y" : "N"); } } - else if (event.getName().equals(ON_DEFER_DYNAMIC_DISPLAY_EVENT)) { + else if (event.getName().equals(ON_DYNAMIC_DISPLAY_CALL_EVENT)) { Integer col = (Integer) event.getData(); - onDeferDynamicDisplay(col); + onDynamicDisplayCall(col); } } From 7badfa1db98ab8931a767e53478e579cfb3892bf Mon Sep 17 00:00:00 2001 From: Heng Sin Low Date: Mon, 5 Aug 2013 12:26:32 +0800 Subject: [PATCH 06/57] IDEMPIERE-1240 exception "java.lang.NullPointerException" throws when select a Shipper in Shipment>Packages. --- .../src/org/compiere/model/CalloutPackage.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/org.adempiere.base.callout/src/org/compiere/model/CalloutPackage.java b/org.adempiere.base.callout/src/org/compiere/model/CalloutPackage.java index 6eae5300c9..72ee1df303 100644 --- a/org.adempiere.base.callout/src/org/compiere/model/CalloutPackage.java +++ b/org.adempiere.base.callout/src/org/compiere/model/CalloutPackage.java @@ -25,7 +25,7 @@ public class CalloutPackage extends CalloutEngine String dutiesShipperAccount = null; MInOut inout = new MInOut(ctx, inout_id, null); - if (inout.getFreightCharges().equals(MInOut.FREIGHTCHARGES_Prepaid) || inout.getFreightCharges().equals(MInOut.FREIGHTCHARGES_PrepaidAndBill)) + if (MInOut.FREIGHTCHARGES_Prepaid.equals(inout.getFreightCharges()) || MInOut.FREIGHTCHARGES_PrepaidAndBill.equals(inout.getFreightCharges())) { // 2. For charging to Velocity // ** If M_InOut.FreightCharges In ( D_PP, E_PPB) -- prepaid or prepaid and bill From 73bbb904703259d2fd584dd7b1da50a9537276d5 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Mon, 5 Aug 2013 00:12:23 -0500 Subject: [PATCH 07/57] IDEMPIERE-1138 Broadcast Message Problems / Based on patch from Richard Morales --- .../oracle/20131707164800_IDEMPIERE-1138.sql | 98 +++++++++++++++++++ .../20131707164800_IDEMPIERE-1138.sql | 95 ++++++++++++++++++ .../adempiere/model/MBroadcastMessage.java | 25 ++++- .../compiere/model/X_AD_BroadcastMessage.java | 10 +- .../idempiere/broadcast/BroadcastMsgUtil.java | 25 +++-- .../webui/panel/BroadcastMessageWindow.java | 23 +++-- 6 files changed, 251 insertions(+), 25 deletions(-) create mode 100644 migration/i1.0c-release/oracle/20131707164800_IDEMPIERE-1138.sql create mode 100644 migration/i1.0c-release/postgresql/20131707164800_IDEMPIERE-1138.sql diff --git a/migration/i1.0c-release/oracle/20131707164800_IDEMPIERE-1138.sql b/migration/i1.0c-release/oracle/20131707164800_IDEMPIERE-1138.sql new file mode 100644 index 0000000000..a5e1979a03 --- /dev/null +++ b/migration/i1.0c-release/oracle/20131707164800_IDEMPIERE-1138.sql @@ -0,0 +1,98 @@ +SET SQLBLANKLINES ON +SET DEFINE OFF + +-- Jul 16, 2013 5:50:07 PM COT +-- IDEMPIERE-1138 Broadcast Message Problems +UPDATE AD_Ref_List SET Value='E',Updated=TO_DATE('2013-07-16 17:50:07','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Ref_List_ID=200046 +; + +-- Jul 16, 2013 5:56:21 PM COT +-- IDEMPIERE-1138 Broadcast Message Problems +UPDATE AD_BroadcastMessage SET BroadcastFrequency='E' WHERE BroadcastFrequency='U' +; + +-- Jul 16, 2013 5:54:09 PM COT +-- IDEMPIERE-1138 Broadcast Message Problems +INSERT INTO AD_Ref_List (AD_Ref_List_ID,AD_Reference_ID,Description,Name,AD_Ref_List_UU,Value,Created,CreatedBy,Updated,UpdatedBy,IsActive,AD_Org_ID,AD_Client_ID,EntityType) VALUES (200156,200020,'Repeat it until the message has been acknowledged','Until Acknowledge','d6b87260-502d-4984-b9e3-8daafde1acd9','A',TO_DATE('2013-07-16 17:54:08','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2013-07-16 17:54:08','YYYY-MM-DD HH24:MI:SS'),100,'Y',0,0,'D') +; + +-- Jul 16, 2013 5:54:09 PM COT +-- IDEMPIERE-1138 Broadcast Message Problems +INSERT INTO AD_Ref_List_Trl (AD_Language,AD_Ref_List_ID, Description,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Ref_List_Trl_UU ) SELECT l.AD_Language,t.AD_Ref_List_ID, t.Description,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Ref_List t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Ref_List_ID=200156 AND NOT EXISTS (SELECT * FROM AD_Ref_List_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Ref_List_ID=t.AD_Ref_List_ID) +; + +-- Jul 16, 2013 5:56:21 PM COT +-- IDEMPIERE-1138 Broadcast Message Problems +INSERT INTO AD_Ref_List (AD_Ref_List_ID,AD_Reference_ID,Description,Name,AD_Ref_List_UU,Value,Created,CreatedBy,Updated,UpdatedBy,IsActive,AD_Org_ID,AD_Client_ID,EntityType) VALUES (200157,200020,'Repeat it until the message expires or until it has been acknowledged, whatever happens first','Until Expiration or Acknowledge','aa345f63-dfbe-4d18-aae4-e5ed06cd4407','O',TO_DATE('2013-07-16 17:56:21','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2013-07-16 17:56:21','YYYY-MM-DD HH24:MI:SS'),100,'Y',0,0,'U') +; + +-- Jul 16, 2013 5:56:21 PM COT +-- IDEMPIERE-1138 Broadcast Message Problems +INSERT INTO AD_Ref_List_Trl (AD_Language,AD_Ref_List_ID, Description,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Ref_List_Trl_UU ) SELECT l.AD_Language,t.AD_Ref_List_ID, t.Description,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Ref_List t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Ref_List_ID=200157 AND NOT EXISTS (SELECT * FROM AD_Ref_List_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Ref_List_ID=t.AD_Ref_List_ID) +; + +-- Jul 17, 2013 8:50:32 AM COT +-- IDEMPIERE-1138 Broadcast Message Problems +UPDATE AD_Field SET IsActive='N',Updated=TO_DATE('2013-07-17 08:50:32','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200882 +; + +-- Jul 17, 2013 8:50:51 AM COT +-- IDEMPIERE-1138 Broadcast Message Problems +UPDATE AD_Field SET DisplayLogic=NULL,Updated=TO_DATE('2013-07-17 08:50:51','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200881 +; + +-- Jul 17, 2013 8:50:59 AM COT +-- IDEMPIERE-1138 Broadcast Message Problems +UPDATE AD_Field SET IsDisplayed='N',Updated=TO_DATE('2013-07-17 08:50:59','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200881 +; + +-- Jul 17, 2013 8:54:47 AM COT +-- IDEMPIERE-1138 Broadcast Message Problems +UPDATE AD_Field SET DisplayLogic='@BroadcastType@!''I''',Updated=TO_DATE('2013-07-17 08:54:47','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200873 +; + +-- Jul 17, 2013 9:14:17 AM COT +-- IDEMPIERE-1138 Broadcast Message Problems +UPDATE AD_Field SET DisplayLogic='@BroadcastFrequency@=''E'' | @BroadcastFrequency@=''O''',Updated=TO_DATE('2013-07-17 09:14:17','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200879 +; + +-- Jul 17, 2013 3:18:50 PM COT +-- IDEMPIERE-1138 Broadcast Message Problems +INSERT INTO AD_Val_Rule (AD_Val_Rule_ID,EntityType,Name,Code,Type,AD_Val_Rule_UU,CreatedBy,UpdatedBy,Updated,Created,AD_Org_ID,IsActive,AD_Client_ID) VALUES (200051,'D','AD_BroadcastMessage - Combination','AD_Ref_List.Value NOT IN(SELECT CASE WHEN AD_Client_ID<>0 THEN ''E'' ELSE ''1'' END FROM AD_Client WHERE AD_Client_ID=@#AD_Client_ID@)','S','9c09aaee-c787-4f30-900e-25412968812a',100,100,TO_DATE('2013-07-17 15:18:49','YYYY-MM-DD HH24:MI:SS'),TO_DATE('2013-07-17 15:18:49','YYYY-MM-DD HH24:MI:SS'),0,'Y',0) +; + +-- Jul 17, 2013 3:19:09 PM COT +-- IDEMPIERE-1138 Broadcast Message Problems +UPDATE AD_Column SET AD_Val_Rule_ID=200051, IsToolbarButton='N',Updated=TO_DATE('2013-07-17 15:19:09','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=200989 +; + +-- Jul 17, 2013 4:29:38 PM COT +-- IDEMPIERE-1138 Broadcast Message Problems +UPDATE AD_Field SET Help='

1. Just Once : Message will be broadcasted one time. 

+

2. Until Acknowledge : Repeat it until the message has been acknowledged. 

+

3. Until Expiration or Acknowledge : Repeat it until the message expires or until it has been acknowledged, whatever happens first.

+

4. Until Expiration : Repeat it until message expiration value.

+',Updated=TO_DATE('2013-07-17 16:29:38','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200873 +; + +-- Jul 17, 2013 4:29:49 PM COT +-- IDEMPIERE-1138 Broadcast Message Problems +UPDATE AD_Column SET Help='

1. Just Once : Message will be broadcasted one time. 

+

2. Until Acknowledge : Repeat it until the message has been acknowledged. 

+

3. Until Expiration or Acknowledge : Repeat it until the message expires or until it has been acknowledged, whatever happens first.

+

4. Until Expiration : Repeat it until message expiration value.

+',Updated=TO_DATE('2013-07-17 16:29:49','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=200984 +; + +-- Jul 17, 2013 4:29:49 PM COT +-- IDEMPIERE-1138 Broadcast Message Problems +UPDATE AD_Field SET Name='Broadcast Frequency', Description='How Many Times Message Should be Broadcasted', Help='

1. Just Once : Message will be broadcasted one time. 

+

2. Until Acknowledge : Repeat it until the message has been acknowledged. 

+

3. Until Expiration or Acknowledge : Repeat it until the message expires or until it has been acknowledged, whatever happens first.

+

4. Until Expiration : Repeat it until message expiration value.

+' WHERE AD_Column_ID=200984 AND IsCentrallyMaintained='Y' +; + +SELECT register_migration_script('20131707164800_IDEMPIERE-1138.sql') FROM dual +; + diff --git a/migration/i1.0c-release/postgresql/20131707164800_IDEMPIERE-1138.sql b/migration/i1.0c-release/postgresql/20131707164800_IDEMPIERE-1138.sql new file mode 100644 index 0000000000..4aefe2812f --- /dev/null +++ b/migration/i1.0c-release/postgresql/20131707164800_IDEMPIERE-1138.sql @@ -0,0 +1,95 @@ +-- Jul 16, 2013 5:50:07 PM COT +-- IDEMPIERE-1138 Broadcast Message Problems +UPDATE AD_Ref_List SET Value='E',Updated=TO_TIMESTAMP('2013-07-16 17:50:07','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Ref_List_ID=200046 +; + +-- Jul 16, 2013 5:56:21 PM COT +-- IDEMPIERE-1138 Broadcast Message Problems +UPDATE AD_BroadcastMessage SET BroadcastFrequency='E' WHERE BroadcastFrequency='U' +; + +-- Jul 16, 2013 5:54:09 PM COT +-- IDEMPIERE-1138 Broadcast Message Problems +INSERT INTO AD_Ref_List (AD_Ref_List_ID,AD_Reference_ID,Description,Name,AD_Ref_List_UU,Value,Created,CreatedBy,Updated,UpdatedBy,IsActive,AD_Org_ID,AD_Client_ID,EntityType) VALUES (200156,200020,'Repeat it until the message has been acknowledged','Until Acknowledge','d6b87260-502d-4984-b9e3-8daafde1acd9','A',TO_TIMESTAMP('2013-07-16 17:54:08','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2013-07-16 17:54:08','YYYY-MM-DD HH24:MI:SS'),100,'Y',0,0,'D') +; + +-- Jul 16, 2013 5:54:09 PM COT +-- IDEMPIERE-1138 Broadcast Message Problems +INSERT INTO AD_Ref_List_Trl (AD_Language,AD_Ref_List_ID, Description,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Ref_List_Trl_UU ) SELECT l.AD_Language,t.AD_Ref_List_ID, t.Description,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Ref_List t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Ref_List_ID=200156 AND NOT EXISTS (SELECT * FROM AD_Ref_List_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Ref_List_ID=t.AD_Ref_List_ID) +; + +-- Jul 16, 2013 5:56:21 PM COT +-- IDEMPIERE-1138 Broadcast Message Problems +INSERT INTO AD_Ref_List (AD_Ref_List_ID,AD_Reference_ID,Description,Name,AD_Ref_List_UU,Value,Created,CreatedBy,Updated,UpdatedBy,IsActive,AD_Org_ID,AD_Client_ID,EntityType) VALUES (200157,200020,'Repeat it until the message expires or until it has been acknowledged, whatever happens first','Until Expiration or Acknowledge','aa345f63-dfbe-4d18-aae4-e5ed06cd4407','O',TO_TIMESTAMP('2013-07-16 17:56:21','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2013-07-16 17:56:21','YYYY-MM-DD HH24:MI:SS'),100,'Y',0,0,'U') +; + +-- Jul 16, 2013 5:56:21 PM COT +-- IDEMPIERE-1138 Broadcast Message Problems +INSERT INTO AD_Ref_List_Trl (AD_Language,AD_Ref_List_ID, Description,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Ref_List_Trl_UU ) SELECT l.AD_Language,t.AD_Ref_List_ID, t.Description,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Ref_List t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Ref_List_ID=200157 AND NOT EXISTS (SELECT * FROM AD_Ref_List_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Ref_List_ID=t.AD_Ref_List_ID) +; + +-- Jul 17, 2013 8:50:32 AM COT +-- IDEMPIERE-1138 Broadcast Message Problems +UPDATE AD_Field SET IsActive='N',Updated=TO_TIMESTAMP('2013-07-17 08:50:32','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200882 +; + +-- Jul 17, 2013 8:50:51 AM COT +-- IDEMPIERE-1138 Broadcast Message Problems +UPDATE AD_Field SET DisplayLogic=NULL,Updated=TO_TIMESTAMP('2013-07-17 08:50:51','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200881 +; + +-- Jul 17, 2013 8:50:59 AM COT +-- IDEMPIERE-1138 Broadcast Message Problems +UPDATE AD_Field SET IsDisplayed='N',Updated=TO_TIMESTAMP('2013-07-17 08:50:59','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200881 +; + +-- Jul 17, 2013 8:54:47 AM COT +-- IDEMPIERE-1138 Broadcast Message Problems +UPDATE AD_Field SET DisplayLogic='@BroadcastType@!''I''',Updated=TO_TIMESTAMP('2013-07-17 08:54:47','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200873 +; + +-- Jul 17, 2013 9:14:17 AM COT +-- IDEMPIERE-1138 Broadcast Message Problems +UPDATE AD_Field SET DisplayLogic='@BroadcastFrequency@=''E'' | @BroadcastFrequency@=''O''',Updated=TO_TIMESTAMP('2013-07-17 09:14:17','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200879 +; + +-- Jul 17, 2013 3:18:50 PM COT +-- IDEMPIERE-1138 Broadcast Message Problems +INSERT INTO AD_Val_Rule (AD_Val_Rule_ID,EntityType,Name,Code,Type,AD_Val_Rule_UU,CreatedBy,UpdatedBy,Updated,Created,AD_Org_ID,IsActive,AD_Client_ID) VALUES (200051,'D','AD_BroadcastMessage - Combination','AD_Ref_List.Value NOT IN(SELECT CASE WHEN AD_Client_ID<>0 THEN ''E'' ELSE ''1'' END FROM AD_Client WHERE AD_Client_ID=@#AD_Client_ID@)','S','9c09aaee-c787-4f30-900e-25412968812a',100,100,TO_TIMESTAMP('2013-07-17 15:18:49','YYYY-MM-DD HH24:MI:SS'),TO_TIMESTAMP('2013-07-17 15:18:49','YYYY-MM-DD HH24:MI:SS'),0,'Y',0) +; + +-- Jul 17, 2013 3:19:09 PM COT +-- IDEMPIERE-1138 Broadcast Message Problems +UPDATE AD_Column SET AD_Val_Rule_ID=200051, IsToolbarButton='N',Updated=TO_TIMESTAMP('2013-07-17 15:19:09','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=200989 +; + +-- Jul 17, 2013 4:29:38 PM COT +-- IDEMPIERE-1138 Broadcast Message Problems +UPDATE AD_Field SET Help='

1. Just Once : Message will be broadcasted one time. 

+

2. Until Acknowledge : Repeat it until the message has been acknowledged. 

+

3. Until Expiration or Acknowledge : Repeat it until the message expires or until it has been acknowledged, whatever happens first.

+

4. Until Expiration : Repeat it until message expiration value.

+',Updated=TO_TIMESTAMP('2013-07-17 16:29:38','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200873 +; + +-- Jul 17, 2013 4:29:49 PM COT +-- IDEMPIERE-1138 Broadcast Message Problems +UPDATE AD_Column SET Help='

1. Just Once : Message will be broadcasted one time. 

+

2. Until Acknowledge : Repeat it until the message has been acknowledged. 

+

3. Until Expiration or Acknowledge : Repeat it until the message expires or until it has been acknowledged, whatever happens first.

+

4. Until Expiration : Repeat it until message expiration value.

+',Updated=TO_TIMESTAMP('2013-07-17 16:29:49','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=200984 +; + +-- Jul 17, 2013 4:29:49 PM COT +-- IDEMPIERE-1138 Broadcast Message Problems +UPDATE AD_Field SET Name='Broadcast Frequency', Description='How Many Times Message Should be Broadcasted', Help='

1. Just Once : Message will be broadcasted one time. 

+

2. Until Acknowledge : Repeat it until the message has been acknowledged. 

+

3. Until Expiration or Acknowledge : Repeat it until the message expires or until it has been acknowledged, whatever happens first.

+

4. Until Expiration : Repeat it until message expiration value.

+' WHERE AD_Column_ID=200984 AND IsCentrallyMaintained='Y' +; + +SELECT register_migration_script('20131707164800_IDEMPIERE-1138.sql') FROM dual +; + diff --git a/org.adempiere.base/src/org/adempiere/model/MBroadcastMessage.java b/org.adempiere.base/src/org/adempiere/model/MBroadcastMessage.java index 7ec6eabda7..240c61e860 100644 --- a/org.adempiere.base/src/org/adempiere/model/MBroadcastMessage.java +++ b/org.adempiere.base/src/org/adempiere/model/MBroadcastMessage.java @@ -29,11 +29,11 @@ import org.compiere.util.Env; */ public class MBroadcastMessage extends X_AD_BroadcastMessage { - /** - * - */ - private static final long serialVersionUID = -6390563897422379468L; + * + */ + private static final long serialVersionUID = 1908264699133879072L; + static private CCache s_cache = new CCache("AD_BroadcastMessage", 30, 60); public MBroadcastMessage(Properties ctx, int AD_BroadcastMessage_ID, @@ -99,4 +99,21 @@ public class MBroadcastMessage extends X_AD_BroadcastMessage return false; } + /************************************************************************** + * Before Save + * @param newRecord new + * @return save + */ + protected boolean beforeSave (boolean newRecord) + { + if (BROADCASTTYPE_Immediate.equals(getBroadcastType())) { + setBroadcastFrequency(BROADCASTFREQUENCY_JustOnce); + } + boolean logack = + ( BROADCASTFREQUENCY_UntilAcknowledge.equals(getBroadcastFrequency()) + || BROADCASTFREQUENCY_UntilExpirationOrAcknowledge.equals(getBroadcastFrequency())); + setLogAcknowledge(logack); + return true; + } + } diff --git a/org.adempiere.base/src/org/compiere/model/X_AD_BroadcastMessage.java b/org.adempiere.base/src/org/compiere/model/X_AD_BroadcastMessage.java index ed809a6039..5fb9060c2a 100644 --- a/org.adempiere.base/src/org/compiere/model/X_AD_BroadcastMessage.java +++ b/org.adempiere.base/src/org/compiere/model/X_AD_BroadcastMessage.java @@ -30,7 +30,7 @@ public class X_AD_BroadcastMessage extends PO implements I_AD_BroadcastMessage, /** * */ - private static final long serialVersionUID = 20130626L; + private static final long serialVersionUID = 20130716L; /** Standard Constructor */ public X_AD_BroadcastMessage (Properties ctx, int AD_BroadcastMessage_ID, String trxName) @@ -171,8 +171,12 @@ public class X_AD_BroadcastMessage extends PO implements I_AD_BroadcastMessage, public static final int BROADCASTFREQUENCY_AD_Reference_ID=200020; /** Just Once = J */ public static final String BROADCASTFREQUENCY_JustOnce = "J"; - /** Until Expiration = U */ - public static final String BROADCASTFREQUENCY_UntilExpiration = "U"; + /** Until Expiration = E */ + public static final String BROADCASTFREQUENCY_UntilExpiration = "E"; + /** Until Acknowledge = A */ + public static final String BROADCASTFREQUENCY_UntilAcknowledge = "A"; + /** Until Expiration or Acknowledge = O */ + public static final String BROADCASTFREQUENCY_UntilExpirationOrAcknowledge = "O"; /** Set Broadcast Frequency. @param BroadcastFrequency How Many Times Message Should be Broadcasted diff --git a/org.adempiere.base/src/org/idempiere/broadcast/BroadcastMsgUtil.java b/org.adempiere.base/src/org/idempiere/broadcast/BroadcastMsgUtil.java index b9b9e86d0b..e4a3391a2a 100644 --- a/org.adempiere.base/src/org/idempiere/broadcast/BroadcastMsgUtil.java +++ b/org.adempiere.base/src/org/idempiere/broadcast/BroadcastMsgUtil.java @@ -27,6 +27,7 @@ import org.adempiere.exceptions.DBException; import org.adempiere.model.MBroadcastMessage; import org.compiere.Adempiere; import org.compiere.model.MNote; +import org.compiere.model.MUser; import org.compiere.util.CLogger; import org.compiere.util.DB; import org.compiere.util.Env; @@ -61,20 +62,20 @@ public class BroadcastMsgUtil // get list of users based on rule if (mbMessage.getTarget() != null) { String sql = "SELECT DISTINCT(AD_User_ID) FROM AD_User_Roles WHERE IsActive='Y'"; - // Role if (mbMessage.getTarget().equals(MBroadcastMessage.TARGET_Role)) { sql += " AND AD_Role_ID=" + mbMessage.getAD_Role_ID(); } else if (mbMessage.getTarget().equals(MBroadcastMessage.TARGET_User)) { sql += " AND AD_User_ID=" + mbMessage.getAD_User_ID(); } else if (mbMessage.getTarget().equals(MBroadcastMessage.TARGET_Client)) { - sql += " AND ad_client_id = " + mbMessage.getNotification_Client_ID(); - } + sql += " AND AD_Client_ID = " + Env.getAD_Client_ID(Env.getCtx()); + } // else Everybody doesn't need additional filtering int[] userIDs = DB.getIDsEx(null, sql); for (int userID : userIDs) { MNote note = new MNote(Env.getCtx(), 0, trxName); + note.setClientOrg(MUser.get(Env.getCtx(), userID).getAD_Client_ID(), 0); note.setAD_BroadcastMessage_ID(messageID); note.setAD_User_ID(userID); note.setAD_Message_ID(0); @@ -147,13 +148,17 @@ public class BroadcastMsgUtil * @param messageWindow */ public static void showPendingMessage(int AD_User_ID, IBroadcastMsgPopup messageWindow) { - String sql = "SELECT bm.AD_BroadcastMessage_ID " - + " FROM AD_Note n INNER JOIN AD_BroadcastMessage bm ON (bm.AD_BroadcastMessage_ID=n.AD_BroadcastMessage_ID) " - + " WHERE n.AD_User_ID=?" - + " AND n.AD_Client_ID=?" - + " AND (bm.BroadcastType='IL' OR bm.BroadcastType='L') " - + " AND bm.isPublished='Y' AND n.processed = 'N'" - + " AND ((bm.BroadcastFrequency='U' AND bm.Expired='N' AND (bm.expiration IS NULL OR bm.expiration > SYSDATE)) OR bm.BroadcastFrequency='J')"; + String sql = "" + + "SELECT bm.AD_BroadcastMessage_ID " + + "FROM AD_Note n " + + " INNER JOIN AD_BroadcastMessage bm " + + " ON ( bm.AD_BroadcastMessage_ID = n.AD_BroadcastMessage_ID ) " + + "WHERE n.AD_User_ID = ? " + + " AND n.AD_Client_ID = ? " + + " AND ( bm.BroadcastType = 'IL' OR bm.BroadcastType = 'L' ) " + + " AND bm.isPublished = 'Y' " + + " AND ( n.Processed = 'N' OR ( n.Processed = 'Y' AND bm.BroadcastFrequency = 'E' ) ) " + + " AND ( bm.Expired = 'N' AND ( bm.Expiration IS NULL OR bm.Expiration > SYSDATE ) ) "; ArrayList mbMessages = new ArrayList(); PreparedStatement pstmt = null; diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/BroadcastMessageWindow.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/BroadcastMessageWindow.java index e076a7f9af..4967f392ec 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/BroadcastMessageWindow.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/BroadcastMessageWindow.java @@ -293,15 +293,17 @@ public class BroadcastMessageWindow extends Window implements IBroadcastMsgPopup textMsgNo.setValue((currMsg+1)+"/"+noOfMsgs); textMsgContent.setContent(mbMessage.getBroadcastMessage()); - if(!isTest && mbMessage.isLogAcknowledge() && broadcastFrequency.equals(MBroadcastMessage.BROADCASTFREQUENCY_UntilExpiration)){ + if (!isTest && mbMessage.isLogAcknowledge()) { boolean ack = hashMessages.get(mbMessage.get_ID()); acknowledged.setChecked(ack); + acknowledged.setVisible(true); + } else if(mbMessage.isLogAcknowledge()) { acknowledged.setVisible(true); - }else if((broadcastFrequency.equals(MBroadcastMessage.BROADCASTFREQUENCY_JustOnce)) - || (mbMessage.getBroadcastType().equals(MBroadcastMessage.BROADCASTTYPE_Immediate))){ + } else if ( broadcastFrequency.equals(MBroadcastMessage.BROADCASTFREQUENCY_JustOnce) + || mbMessage.getBroadcastType().equals(MBroadcastMessage.BROADCASTTYPE_Immediate)) { acknowledged.setVisible(false); hashMessages.put(mbMessages.get(currMsg).get_ID(), true); - }else{ + } else { acknowledged.setVisible(false); } @@ -315,18 +317,19 @@ public class BroadcastMessageWindow extends Window implements IBroadcastMsgPopup public MNote getMNote(MBroadcastMessage mbMessage) { MNote note =null; if(!mbMessage.getBroadcastType().equals(MBroadcastMessage.BROADCASTTYPE_Immediate)){ - String sql = "SELECT * FROM AD_Note WHERE AD_BroadcastMessage_ID = ? AND AD_User_ID = ?"; + String sql = "SELECT * FROM AD_Note WHERE AD_BroadcastMessage_ID = ? AND AD_User_ID = ? AND AD_Client_ID = ?"; PreparedStatement pstmt = null; ResultSet rs=null; try { pstmt = DB.prepareStatement(sql, null); pstmt.setInt(1, mbMessage.get_ID()); pstmt.setInt(2, Env.getAD_User_ID(Env.getCtx())); + pstmt.setInt(3, Env.getAD_Client_ID(Env.getCtx())); rs = pstmt.executeQuery(); if(rs.next()) note = new MNote(Env.getCtx(), rs, null); } catch (Exception e) { - log.log(Level.SEVERE, "Note for the Mesaage Could not be retrieved ",e); + log.log(Level.SEVERE, "Note for the Message Could not be retrieved ",e); throw new DBException(e); }finally{ DB.close(rs, pstmt); @@ -340,7 +343,8 @@ public class BroadcastMessageWindow extends Window implements IBroadcastMsgPopup super.onClose(); if (!isTest) { if(mbMessages.size()==1){ - if ((mbMessages.get(0).getBroadcastFrequency().equals("J")) + if ((mbMessages.get(0).getBroadcastFrequency().equals(MBroadcastMessage.BROADCASTFREQUENCY_JustOnce)) + || (mbMessages.get(0).getBroadcastFrequency().equals(MBroadcastMessage.BROADCASTFREQUENCY_UntilExpiration)) || (mbMessages.get(0).getBroadcastType().equals(MBroadcastMessage.BROADCASTTYPE_Immediate))) { hashMessages.put(mbMessages.get(0).get_ID(), true); } @@ -349,7 +353,10 @@ public class BroadcastMessageWindow extends Window implements IBroadcastMsgPopup for (MBroadcastMessage mbMessage : mbMessages) { if(!mbMessage.getBroadcastType().equals(MBroadcastMessage.BROADCASTTYPE_Immediate)){ MNote note = getMNote(mbMessage); - note.setProcessed(hashMessages.get(mbMessage.get_ID())); + if (mbMessage.getBroadcastFrequency().equals(MBroadcastMessage.BROADCASTFREQUENCY_UntilExpiration)) + note.setProcessed(true); + else + note.setProcessed(hashMessages.get(mbMessage.get_ID())); if(hashMessages.get(mbMessage.get_ID())){ acknowedgedMsgs.add(mbMessage); } From fb95f9fca8a0d7691fe1bd1ba4fed658a12d7e43 Mon Sep 17 00:00:00 2001 From: Elaine Tan Date: Mon, 5 Aug 2013 15:59:20 +0800 Subject: [PATCH 08/57] IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window --- .../oracle/201308051548_IDEMPIERE-1229.sql | 292 ++++++++++++++++++ .../201308051548_IDEMPIERE-1229.sql | 292 ++++++++++++++++++ .../org/compiere/model/I_AD_PrintFormat.java | 15 + .../org/compiere/model/X_AD_PrintFormat.java | 30 +- .../src/org/compiere/print/MPrintFormat.java | 18 +- .../src/org/compiere/util/Env.java | 80 +++++ .../src/org/compiere/apps/AEnv.java | 76 +---- .../src/org/compiere/print/AReport.java | 16 +- .../src/org/compiere/print/Viewer.java | 7 + .../src/org/adempiere/webui/apps/AEnv.java | 73 +---- .../src/org/adempiere/webui/apps/WReport.java | 10 +- .../webui/panel/action/ReportAction.java | 6 +- .../webui/window/ZkReportViewer.java | 10 + .../src/org/compiere/print/ReportCtl.java | 16 +- 14 files changed, 786 insertions(+), 155 deletions(-) create mode 100644 migration/i1.0c-release/oracle/201308051548_IDEMPIERE-1229.sql create mode 100644 migration/i1.0c-release/postgresql/201308051548_IDEMPIERE-1229.sql diff --git a/migration/i1.0c-release/oracle/201308051548_IDEMPIERE-1229.sql b/migration/i1.0c-release/oracle/201308051548_IDEMPIERE-1229.sql new file mode 100644 index 0000000000..d0ed2045a7 --- /dev/null +++ b/migration/i1.0c-release/oracle/201308051548_IDEMPIERE-1229.sql @@ -0,0 +1,292 @@ +-- Aug 1, 2013 12:32:12 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +INSERT INTO AD_Column (SeqNoSelection,IsSyncDatabase,Version,AD_Table_ID,AD_Column_ID,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,AD_Reference_ID,IsKey,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsUpdateable,ColumnName,Description,Help,Name,IsAllowCopy,Updated,CreatedBy,AD_Org_ID,IsActive,Created,UpdatedBy,IsToolbarButton,IsAlwaysUpdateable,AD_Client_ID,EntityType,IsEncrypted,AD_Element_ID,IsSecure) VALUES (0,'N',0,493,210681,'N','N','N',0,'N',22,'N',19,'N','N','Y','01406b24-b108-4ef9-9533-688ceb8615c4','Y','AD_Window_ID','Data entry or display window','The Window field identifies a unique Window in the system.','Window','Y',TO_DATE('2013-08-01 12:32:11','YYYY-MM-DD HH24:MI:SS'),100,0,'Y',TO_DATE('2013-08-01 12:32:11','YYYY-MM-DD HH24:MI:SS'),100,'N','N',0,'D','N',143,'N') +; + +-- Aug 1, 2013 12:32:12 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Column_Trl_UU ) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=210681 AND NOT EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Column_ID=t.AD_Column_ID) +; + +-- Aug 1, 2013 12:32:17 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +ALTER TABLE AD_PrintFormat ADD AD_Window_ID NUMBER(10) DEFAULT NULL +; + +-- Aug 1, 2013 12:35:28 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +INSERT INTO AD_Field (IsEncrypted,AD_Tab_ID,DisplayLength,IsSameLine,IsHeading,AD_Column_ID,SeqNo,IsCentrallyMaintained,AD_Field_ID,IsReadOnly,EntityType,Name,AD_Field_UU,IsDisplayed,IsFieldOnly,UpdatedBy,AD_Org_ID,Created,CreatedBy,Updated,IsActive,IsDisplayedGrid,AD_Client_ID,ColumnSpan) VALUES ('N',425,36,'N','N',60458,220,'Y',202367,'N','D','AD_PrintFormat_UU','d856c59c-850d-4f62-98c2-b30edf36641b','N','N',100,0,TO_DATE('2013-08-01 12:35:27','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2013-08-01 12:35:27','YYYY-MM-DD HH24:MI:SS'),'Y','N',0,2) +; + +-- Aug 1, 2013 12:35:28 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +INSERT INTO AD_Field_Trl (AD_Language,AD_Field_ID, Help,Description,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Field_Trl_UU ) SELECT l.AD_Language,t.AD_Field_ID, t.Help,t.Description,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Field t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Field_ID=202367 AND NOT EXISTS (SELECT * FROM AD_Field_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Field_ID=t.AD_Field_ID) +; + +-- Aug 1, 2013 12:35:29 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +INSERT INTO AD_Field (IsEncrypted,AD_Tab_ID,DisplayLength,IsSameLine,IsHeading,AD_Column_ID,SeqNo,IsCentrallyMaintained,AD_Field_ID,IsReadOnly,Help,EntityType,Description,Name,AD_Field_UU,IsDisplayed,IsFieldOnly,UpdatedBy,AD_Org_ID,Created,CreatedBy,Updated,IsActive,AD_Client_ID,ColumnSpan) VALUES ('N',425,22,'N','N',210681,230,'Y',202368,'N','The Window field identifies a unique Window in the system.','D','Data entry or display window','Window','588d3710-0a9b-497d-a5fc-f03a565b8b2d','Y','N',100,0,TO_DATE('2013-08-01 12:35:28','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2013-08-01 12:35:28','YYYY-MM-DD HH24:MI:SS'),'Y',0,2) +; + +-- Aug 1, 2013 12:35:29 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +INSERT INTO AD_Field_Trl (AD_Language,AD_Field_ID, Help,Description,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Field_Trl_UU ) SELECT l.AD_Language,t.AD_Field_ID, t.Help,t.Description,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Field t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Field_ID=202368 AND NOT EXISTS (SELECT * FROM AD_Field_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Field_ID=t.AD_Field_ID) +; + +-- Aug 1, 2013 12:36:10 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET DisplayLength=14,Updated=TO_DATE('2013-08-01 12:36:10','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=202368 +; + +-- Aug 1, 2013 12:37:49 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N' WHERE AD_Field_ID=5666 +; + +-- Aug 1, 2013 12:37:49 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNoGrid=10,IsDisplayedGrid='Y' WHERE AD_Field_ID=5662 +; + +-- Aug 1, 2013 12:37:49 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNoGrid=20,IsDisplayedGrid='Y' WHERE AD_Field_ID=5664 +; + +-- Aug 1, 2013 12:37:49 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNoGrid=30,IsDisplayedGrid='Y' WHERE AD_Field_ID=5659 +; + +-- Aug 1, 2013 12:37:49 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNoGrid=40,IsDisplayedGrid='Y' WHERE AD_Field_ID=5665 +; + +-- Aug 1, 2013 12:37:49 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNoGrid=50,IsDisplayedGrid='Y' WHERE AD_Field_ID=5652 +; + +-- Aug 1, 2013 12:37:49 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNoGrid=60,IsDisplayedGrid='Y' WHERE AD_Field_ID=8291 +; + +-- Aug 1, 2013 12:37:49 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNoGrid=70,IsDisplayedGrid='Y' WHERE AD_Field_ID=5655 +; + +-- Aug 1, 2013 12:37:49 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNoGrid=80,IsDisplayedGrid='Y' WHERE AD_Field_ID=5744 +; + +-- Aug 1, 2013 12:37:49 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNoGrid=90,IsDisplayedGrid='Y' WHERE AD_Field_ID=5656 +; + +-- Aug 1, 2013 12:37:49 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNoGrid=100,IsDisplayedGrid='Y' WHERE AD_Field_ID=5651 +; + +-- Aug 1, 2013 12:37:49 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNoGrid=110,IsDisplayedGrid='Y' WHERE AD_Field_ID=5663 +; + +-- Aug 1, 2013 12:37:49 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNoGrid=120,IsDisplayedGrid='Y' WHERE AD_Field_ID=5653 +; + +-- Aug 1, 2013 12:37:49 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNoGrid=130,IsDisplayedGrid='Y' WHERE AD_Field_ID=5762 +; + +-- Aug 1, 2013 12:37:49 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNoGrid=140,IsDisplayedGrid='Y' WHERE AD_Field_ID=6503 +; + +-- Aug 1, 2013 12:37:49 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNoGrid=150,IsDisplayedGrid='Y' WHERE AD_Field_ID=5657 +; + +-- Aug 1, 2013 12:37:49 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNoGrid=160,IsDisplayedGrid='Y' WHERE AD_Field_ID=5661 +; + +-- Aug 1, 2013 12:37:49 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNoGrid=170,IsDisplayedGrid='Y' WHERE AD_Field_ID=5654 +; + +-- Aug 1, 2013 12:37:49 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNoGrid=180,IsDisplayedGrid='Y' WHERE AD_Field_ID=5658 +; + +-- Aug 1, 2013 12:37:49 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNoGrid=190,IsDisplayedGrid='Y' WHERE AD_Field_ID=50179 +; + +-- Aug 1, 2013 12:37:49 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNoGrid=200,IsDisplayedGrid='Y' WHERE AD_Field_ID=202368 +; + +-- Aug 1, 2013 12:37:49 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNoGrid=210,IsDisplayedGrid='Y' WHERE AD_Field_ID=52009 +; + +-- Aug 1, 2013 12:37:49 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNoGrid=220,IsDisplayedGrid='Y' WHERE AD_Field_ID=5660 +; + +-- Aug 1, 2013 12:37:49 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNoGrid=230,IsDisplayedGrid='Y' WHERE AD_Field_ID=52008 +; + +-- Aug 1, 2013 12:37:56 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNo=0,IsDisplayed='N' WHERE AD_Field_ID=202367 +; + +-- Aug 1, 2013 12:37:56 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNo=0,IsDisplayed='N' WHERE AD_Field_ID=5666 +; + +-- Aug 1, 2013 12:37:56 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNo=10,IsDisplayed='Y' WHERE AD_Field_ID=5662 +; + +-- Aug 1, 2013 12:37:56 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNo=20,IsDisplayed='Y' WHERE AD_Field_ID=5664 +; + +-- Aug 1, 2013 12:37:56 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNo=30,IsDisplayed='Y' WHERE AD_Field_ID=5659 +; + +-- Aug 1, 2013 12:37:56 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNo=40,IsDisplayed='Y' WHERE AD_Field_ID=5665 +; + +-- Aug 1, 2013 12:37:56 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNo=50,IsDisplayed='Y' WHERE AD_Field_ID=5652 +; + +-- Aug 1, 2013 12:37:56 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNo=60,IsDisplayed='Y' WHERE AD_Field_ID=8291 +; + +-- Aug 1, 2013 12:37:56 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNo=70,IsDisplayed='Y' WHERE AD_Field_ID=5655 +; + +-- Aug 1, 2013 12:37:56 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNo=80,IsDisplayed='Y' WHERE AD_Field_ID=5744 +; + +-- Aug 1, 2013 12:37:56 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNo=90,IsDisplayed='Y' WHERE AD_Field_ID=5656 +; + +-- Aug 1, 2013 12:37:56 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNo=100,IsDisplayed='Y' WHERE AD_Field_ID=5651 +; + +-- Aug 1, 2013 12:37:56 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNo=110,IsDisplayed='Y' WHERE AD_Field_ID=5663 +; + +-- Aug 1, 2013 12:37:56 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNo=120,IsDisplayed='Y' WHERE AD_Field_ID=5653 +; + +-- Aug 1, 2013 12:37:56 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNo=130,IsDisplayed='Y' WHERE AD_Field_ID=5762 +; + +-- Aug 1, 2013 12:37:56 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNo=140,IsDisplayed='Y' WHERE AD_Field_ID=6503 +; + +-- Aug 1, 2013 12:37:56 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNo=150,IsDisplayed='Y' WHERE AD_Field_ID=5657 +; + +-- Aug 1, 2013 12:37:56 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNo=160,IsDisplayed='Y' WHERE AD_Field_ID=5661 +; + +-- Aug 1, 2013 12:37:56 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNo=170,IsDisplayed='Y' WHERE AD_Field_ID=5654 +; + +-- Aug 1, 2013 12:37:56 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNo=180,IsDisplayed='Y' WHERE AD_Field_ID=5658 +; + +-- Aug 1, 2013 12:37:56 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNo=190,IsDisplayed='Y' WHERE AD_Field_ID=50179 +; + +-- Aug 1, 2013 12:37:56 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNo=200,IsDisplayed='Y' WHERE AD_Field_ID=202368 +; + +-- Aug 1, 2013 12:37:56 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNo=210,IsDisplayed='Y' WHERE AD_Field_ID=52009 +; + +-- Aug 1, 2013 12:37:56 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNo=220,IsDisplayed='Y' WHERE AD_Field_ID=5660 +; + +-- Aug 1, 2013 12:37:56 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNo=230,IsDisplayed='Y' WHERE AD_Field_ID=52008 +; + +-- Aug 1, 2013 12:38:10 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET IsSameLine='Y', XPosition=4,Updated=TO_DATE('2013-08-01 12:38:10','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=202368 +; + +SELECT register_migration_script('201308051548_IDEMPIERE-1229.sql') FROM dual +; \ No newline at end of file diff --git a/migration/i1.0c-release/postgresql/201308051548_IDEMPIERE-1229.sql b/migration/i1.0c-release/postgresql/201308051548_IDEMPIERE-1229.sql new file mode 100644 index 0000000000..c77a16a6d1 --- /dev/null +++ b/migration/i1.0c-release/postgresql/201308051548_IDEMPIERE-1229.sql @@ -0,0 +1,292 @@ +-- Aug 1, 2013 12:32:12 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +INSERT INTO AD_Column (SeqNoSelection,IsSyncDatabase,Version,AD_Table_ID,AD_Column_ID,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,AD_Reference_ID,IsKey,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsUpdateable,ColumnName,Description,Help,Name,IsAllowCopy,Updated,CreatedBy,AD_Org_ID,IsActive,Created,UpdatedBy,IsToolbarButton,IsAlwaysUpdateable,AD_Client_ID,EntityType,IsEncrypted,AD_Element_ID,IsSecure) VALUES (0,'N',0,493,210681,'N','N','N',0,'N',22,'N',19,'N','N','Y','01406b24-b108-4ef9-9533-688ceb8615c4','Y','AD_Window_ID','Data entry or display window','The Window field identifies a unique Window in the system.','Window','Y',TO_TIMESTAMP('2013-08-01 12:32:11','YYYY-MM-DD HH24:MI:SS'),100,0,'Y',TO_TIMESTAMP('2013-08-01 12:32:11','YYYY-MM-DD HH24:MI:SS'),100,'N','N',0,'D','N',143,'N') +; + +-- Aug 1, 2013 12:32:12 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Column_Trl_UU ) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=210681 AND NOT EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Column_ID=t.AD_Column_ID) +; + +-- Aug 1, 2013 12:32:17 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +ALTER TABLE AD_PrintFormat ADD COLUMN AD_Window_ID NUMERIC(10) DEFAULT NULL +; + +-- Aug 1, 2013 12:35:28 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +INSERT INTO AD_Field (IsEncrypted,AD_Tab_ID,DisplayLength,IsSameLine,IsHeading,AD_Column_ID,SeqNo,IsCentrallyMaintained,AD_Field_ID,IsReadOnly,EntityType,Name,AD_Field_UU,IsDisplayed,IsFieldOnly,UpdatedBy,AD_Org_ID,Created,CreatedBy,Updated,IsActive,IsDisplayedGrid,AD_Client_ID,ColumnSpan) VALUES ('N',425,36,'N','N',60458,220,'Y',202367,'N','D','AD_PrintFormat_UU','d856c59c-850d-4f62-98c2-b30edf36641b','N','N',100,0,TO_TIMESTAMP('2013-08-01 12:35:27','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2013-08-01 12:35:27','YYYY-MM-DD HH24:MI:SS'),'Y','N',0,2) +; + +-- Aug 1, 2013 12:35:28 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +INSERT INTO AD_Field_Trl (AD_Language,AD_Field_ID, Help,Description,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Field_Trl_UU ) SELECT l.AD_Language,t.AD_Field_ID, t.Help,t.Description,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Field t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Field_ID=202367 AND NOT EXISTS (SELECT * FROM AD_Field_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Field_ID=t.AD_Field_ID) +; + +-- Aug 1, 2013 12:35:29 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +INSERT INTO AD_Field (IsEncrypted,AD_Tab_ID,DisplayLength,IsSameLine,IsHeading,AD_Column_ID,SeqNo,IsCentrallyMaintained,AD_Field_ID,IsReadOnly,Help,EntityType,Description,Name,AD_Field_UU,IsDisplayed,IsFieldOnly,UpdatedBy,AD_Org_ID,Created,CreatedBy,Updated,IsActive,AD_Client_ID,ColumnSpan) VALUES ('N',425,22,'N','N',210681,230,'Y',202368,'N','The Window field identifies a unique Window in the system.','D','Data entry or display window','Window','588d3710-0a9b-497d-a5fc-f03a565b8b2d','Y','N',100,0,TO_TIMESTAMP('2013-08-01 12:35:28','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2013-08-01 12:35:28','YYYY-MM-DD HH24:MI:SS'),'Y',0,2) +; + +-- Aug 1, 2013 12:35:29 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +INSERT INTO AD_Field_Trl (AD_Language,AD_Field_ID, Help,Description,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Field_Trl_UU ) SELECT l.AD_Language,t.AD_Field_ID, t.Help,t.Description,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Field t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Field_ID=202368 AND NOT EXISTS (SELECT * FROM AD_Field_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Field_ID=t.AD_Field_ID) +; + +-- Aug 1, 2013 12:36:10 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET DisplayLength=14,Updated=TO_TIMESTAMP('2013-08-01 12:36:10','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=202368 +; + +-- Aug 1, 2013 12:37:49 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNoGrid=0,IsDisplayedGrid='N' WHERE AD_Field_ID=5666 +; + +-- Aug 1, 2013 12:37:49 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNoGrid=10,IsDisplayedGrid='Y' WHERE AD_Field_ID=5662 +; + +-- Aug 1, 2013 12:37:49 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNoGrid=20,IsDisplayedGrid='Y' WHERE AD_Field_ID=5664 +; + +-- Aug 1, 2013 12:37:49 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNoGrid=30,IsDisplayedGrid='Y' WHERE AD_Field_ID=5659 +; + +-- Aug 1, 2013 12:37:49 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNoGrid=40,IsDisplayedGrid='Y' WHERE AD_Field_ID=5665 +; + +-- Aug 1, 2013 12:37:49 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNoGrid=50,IsDisplayedGrid='Y' WHERE AD_Field_ID=5652 +; + +-- Aug 1, 2013 12:37:49 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNoGrid=60,IsDisplayedGrid='Y' WHERE AD_Field_ID=8291 +; + +-- Aug 1, 2013 12:37:49 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNoGrid=70,IsDisplayedGrid='Y' WHERE AD_Field_ID=5655 +; + +-- Aug 1, 2013 12:37:49 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNoGrid=80,IsDisplayedGrid='Y' WHERE AD_Field_ID=5744 +; + +-- Aug 1, 2013 12:37:49 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNoGrid=90,IsDisplayedGrid='Y' WHERE AD_Field_ID=5656 +; + +-- Aug 1, 2013 12:37:49 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNoGrid=100,IsDisplayedGrid='Y' WHERE AD_Field_ID=5651 +; + +-- Aug 1, 2013 12:37:49 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNoGrid=110,IsDisplayedGrid='Y' WHERE AD_Field_ID=5663 +; + +-- Aug 1, 2013 12:37:49 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNoGrid=120,IsDisplayedGrid='Y' WHERE AD_Field_ID=5653 +; + +-- Aug 1, 2013 12:37:49 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNoGrid=130,IsDisplayedGrid='Y' WHERE AD_Field_ID=5762 +; + +-- Aug 1, 2013 12:37:49 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNoGrid=140,IsDisplayedGrid='Y' WHERE AD_Field_ID=6503 +; + +-- Aug 1, 2013 12:37:49 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNoGrid=150,IsDisplayedGrid='Y' WHERE AD_Field_ID=5657 +; + +-- Aug 1, 2013 12:37:49 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNoGrid=160,IsDisplayedGrid='Y' WHERE AD_Field_ID=5661 +; + +-- Aug 1, 2013 12:37:49 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNoGrid=170,IsDisplayedGrid='Y' WHERE AD_Field_ID=5654 +; + +-- Aug 1, 2013 12:37:49 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNoGrid=180,IsDisplayedGrid='Y' WHERE AD_Field_ID=5658 +; + +-- Aug 1, 2013 12:37:49 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNoGrid=190,IsDisplayedGrid='Y' WHERE AD_Field_ID=50179 +; + +-- Aug 1, 2013 12:37:49 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNoGrid=200,IsDisplayedGrid='Y' WHERE AD_Field_ID=202368 +; + +-- Aug 1, 2013 12:37:49 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNoGrid=210,IsDisplayedGrid='Y' WHERE AD_Field_ID=52009 +; + +-- Aug 1, 2013 12:37:49 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNoGrid=220,IsDisplayedGrid='Y' WHERE AD_Field_ID=5660 +; + +-- Aug 1, 2013 12:37:49 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNoGrid=230,IsDisplayedGrid='Y' WHERE AD_Field_ID=52008 +; + +-- Aug 1, 2013 12:37:56 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNo=0,IsDisplayed='N' WHERE AD_Field_ID=202367 +; + +-- Aug 1, 2013 12:37:56 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNo=0,IsDisplayed='N' WHERE AD_Field_ID=5666 +; + +-- Aug 1, 2013 12:37:56 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNo=10,IsDisplayed='Y' WHERE AD_Field_ID=5662 +; + +-- Aug 1, 2013 12:37:56 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNo=20,IsDisplayed='Y' WHERE AD_Field_ID=5664 +; + +-- Aug 1, 2013 12:37:56 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNo=30,IsDisplayed='Y' WHERE AD_Field_ID=5659 +; + +-- Aug 1, 2013 12:37:56 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNo=40,IsDisplayed='Y' WHERE AD_Field_ID=5665 +; + +-- Aug 1, 2013 12:37:56 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNo=50,IsDisplayed='Y' WHERE AD_Field_ID=5652 +; + +-- Aug 1, 2013 12:37:56 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNo=60,IsDisplayed='Y' WHERE AD_Field_ID=8291 +; + +-- Aug 1, 2013 12:37:56 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNo=70,IsDisplayed='Y' WHERE AD_Field_ID=5655 +; + +-- Aug 1, 2013 12:37:56 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNo=80,IsDisplayed='Y' WHERE AD_Field_ID=5744 +; + +-- Aug 1, 2013 12:37:56 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNo=90,IsDisplayed='Y' WHERE AD_Field_ID=5656 +; + +-- Aug 1, 2013 12:37:56 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNo=100,IsDisplayed='Y' WHERE AD_Field_ID=5651 +; + +-- Aug 1, 2013 12:37:56 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNo=110,IsDisplayed='Y' WHERE AD_Field_ID=5663 +; + +-- Aug 1, 2013 12:37:56 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNo=120,IsDisplayed='Y' WHERE AD_Field_ID=5653 +; + +-- Aug 1, 2013 12:37:56 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNo=130,IsDisplayed='Y' WHERE AD_Field_ID=5762 +; + +-- Aug 1, 2013 12:37:56 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNo=140,IsDisplayed='Y' WHERE AD_Field_ID=6503 +; + +-- Aug 1, 2013 12:37:56 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNo=150,IsDisplayed='Y' WHERE AD_Field_ID=5657 +; + +-- Aug 1, 2013 12:37:56 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNo=160,IsDisplayed='Y' WHERE AD_Field_ID=5661 +; + +-- Aug 1, 2013 12:37:56 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNo=170,IsDisplayed='Y' WHERE AD_Field_ID=5654 +; + +-- Aug 1, 2013 12:37:56 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNo=180,IsDisplayed='Y' WHERE AD_Field_ID=5658 +; + +-- Aug 1, 2013 12:37:56 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNo=190,IsDisplayed='Y' WHERE AD_Field_ID=50179 +; + +-- Aug 1, 2013 12:37:56 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNo=200,IsDisplayed='Y' WHERE AD_Field_ID=202368 +; + +-- Aug 1, 2013 12:37:56 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNo=210,IsDisplayed='Y' WHERE AD_Field_ID=52009 +; + +-- Aug 1, 2013 12:37:56 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNo=220,IsDisplayed='Y' WHERE AD_Field_ID=5660 +; + +-- Aug 1, 2013 12:37:56 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET SeqNo=230,IsDisplayed='Y' WHERE AD_Field_ID=52008 +; + +-- Aug 1, 2013 12:38:10 PM SGT +-- IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window +UPDATE AD_Field SET IsSameLine='Y', XPosition=4,Updated=TO_TIMESTAMP('2013-08-01 12:38:10','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=202368 +; + +SELECT register_migration_script('201308051548_IDEMPIERE-1229.sql') FROM dual +; \ No newline at end of file diff --git a/org.adempiere.base/src/org/compiere/model/I_AD_PrintFormat.java b/org.adempiere.base/src/org/compiere/model/I_AD_PrintFormat.java index d5f2079b91..f8238a3281 100644 --- a/org.adempiere.base/src/org/compiere/model/I_AD_PrintFormat.java +++ b/org.adempiere.base/src/org/compiere/model/I_AD_PrintFormat.java @@ -174,6 +174,21 @@ public interface I_AD_PrintFormat public org.compiere.model.I_AD_Table getAD_Table() throws RuntimeException; + /** Column name AD_Window_ID */ + public static final String COLUMNNAME_AD_Window_ID = "AD_Window_ID"; + + /** Set Window. + * Data entry or display window + */ + public void setAD_Window_ID (int AD_Window_ID); + + /** Get Window. + * Data entry or display window + */ + public int getAD_Window_ID(); + + public org.compiere.model.I_AD_Window getAD_Window() throws RuntimeException; + /** Column name Args */ public static final String COLUMNNAME_Args = "Args"; diff --git a/org.adempiere.base/src/org/compiere/model/X_AD_PrintFormat.java b/org.adempiere.base/src/org/compiere/model/X_AD_PrintFormat.java index c8647d8b5a..342e1f6786 100644 --- a/org.adempiere.base/src/org/compiere/model/X_AD_PrintFormat.java +++ b/org.adempiere.base/src/org/compiere/model/X_AD_PrintFormat.java @@ -30,7 +30,7 @@ public class X_AD_PrintFormat extends PO implements I_AD_PrintFormat, I_Persiste /** * */ - private static final long serialVersionUID = 20130626L; + private static final long serialVersionUID = 20130801L; /** Standard Constructor */ public X_AD_PrintFormat (Properties ctx, int AD_PrintFormat_ID, String trxName) @@ -289,6 +289,34 @@ public class X_AD_PrintFormat extends PO implements I_AD_PrintFormat, I_Persiste return ii.intValue(); } + public org.compiere.model.I_AD_Window getAD_Window() throws RuntimeException + { + return (org.compiere.model.I_AD_Window)MTable.get(getCtx(), org.compiere.model.I_AD_Window.Table_Name) + .getPO(getAD_Window_ID(), get_TrxName()); } + + /** Set Window. + @param AD_Window_ID + Data entry or display window + */ + public void setAD_Window_ID (int AD_Window_ID) + { + if (AD_Window_ID < 1) + set_Value (COLUMNNAME_AD_Window_ID, null); + else + set_Value (COLUMNNAME_AD_Window_ID, Integer.valueOf(AD_Window_ID)); + } + + /** Get Window. + @return Data entry or display window + */ + public int getAD_Window_ID () + { + Integer ii = (Integer)get_Value(COLUMNNAME_AD_Window_ID); + if (ii == null) + return 0; + return ii.intValue(); + } + /** Set Args. @param Args Args */ public void setArgs (String Args) diff --git a/org.adempiere.base/src/org/compiere/print/MPrintFormat.java b/org.adempiere.base/src/org/compiere/print/MPrintFormat.java index 546311b9f3..c6ea706dac 100644 --- a/org.adempiere.base/src/org/compiere/print/MPrintFormat.java +++ b/org.adempiere.base/src/org/compiere/print/MPrintFormat.java @@ -61,7 +61,7 @@ public class MPrintFormat extends X_AD_PrintFormat /** * */ - private static final long serialVersionUID = -1378114118642378625L; + private static final long serialVersionUID = -4515887660012047223L; /** * Public Constructor. @@ -1159,19 +1159,20 @@ public class MPrintFormat extends X_AD_PrintFormat /** * @param AD_Table_ID + * @param AD_Window_ID * @param AD_Client_ID use -1 to retrieve from all client * @param trxName */ - public static RowSet getAccessiblePrintFormats (int AD_Table_ID, int AD_Client_ID, String trxName) + public static RowSet getAccessiblePrintFormats (int AD_Table_ID, int AD_Window_ID, int AD_Client_ID, String trxName) { RowSet rowSet = null; String sql = "SELECT AD_PrintFormat_ID, Name, AD_Client_ID " + "FROM AD_PrintFormat " + "WHERE AD_Table_ID=? AND IsTableBased='Y' "; + if (AD_Window_ID > 0) + sql += "AND (AD_Window_ID=? OR AD_Window_ID IS NULL) "; if (AD_Client_ID >= 0) - { - sql = sql + " AND AD_Client_ID = ? "; - } + sql += " AND AD_Client_ID = ? "; sql = sql + "ORDER BY AD_Client_ID DESC, IsDefault DESC, Name"; // Own First // sql = MRole.getDefault().addAccessSQL ( @@ -1180,9 +1181,12 @@ public class MPrintFormat extends X_AD_PrintFormat try { pstmt = DB.prepareStatement(sql, trxName); - pstmt.setInt(1, AD_Table_ID); + int count = 1; + pstmt.setInt(count++, AD_Table_ID); + if (AD_Window_ID > 0) + pstmt.setInt(count++, AD_Window_ID); if (AD_Client_ID >= 0) - pstmt.setInt(2, AD_Client_ID); + pstmt.setInt(count++, AD_Client_ID); rowSet = pstmt.getRowSet(); } catch (SQLException e) diff --git a/org.adempiere.base/src/org/compiere/util/Env.java b/org.adempiere.base/src/org/compiere/util/Env.java index f4a4e26ee4..359fe48646 100644 --- a/org.adempiere.base/src/org/compiere/util/Env.java +++ b/org.adempiere.base/src/org/compiere/util/Env.java @@ -56,8 +56,11 @@ import org.compiere.model.I_AD_Window; import org.compiere.model.MClient; import org.compiere.model.MColumn; import org.compiere.model.MLookupCache; +import org.compiere.model.MQuery; import org.compiere.model.MRole; import org.compiere.model.MSession; +import org.compiere.model.MTable; +import org.compiere.model.MZoomCondition; import org.compiere.model.PO; import org.compiere.process.ProcessInfo; import org.compiere.process.SvrProcess; @@ -1789,6 +1792,83 @@ public final class Env return Util.isEmpty(s) ? Adempiere.ADEMPIERE_R : s; } + public static int getZoomWindowID(MQuery query) + { + int AD_Window_ID = MZoomCondition.findZoomWindow(query); + if (AD_Window_ID <= 0) + { + String TableName = query.getTableName(); + int PO_Window_ID = 0; + String sql = "SELECT AD_Window_ID, PO_Window_ID FROM AD_Table WHERE TableName=?"; + PreparedStatement pstmt = null; + ResultSet rs = null; + try + { + pstmt = DB.prepareStatement(sql, null); + pstmt.setString(1, TableName); + rs = pstmt.executeQuery(); + if (rs.next()) + { + AD_Window_ID = rs.getInt(1); + PO_Window_ID = rs.getInt(2); + } + } + catch (SQLException e) + { + log.log(Level.SEVERE, sql, e); + } + finally + { + DB.close(rs, pstmt); + rs = null; + pstmt = null; + } + // Nothing to Zoom to + if (AD_Window_ID == 0) + return AD_Window_ID; + + // PO Zoom ? + boolean isSOTrx = true; + if (PO_Window_ID != 0) + { + isSOTrx = DB.isSOTrx(TableName, query.getWhereClause(false)); + if (!isSOTrx) + AD_Window_ID = PO_Window_ID; + } + + if (log.isLoggable(Level.CONFIG)) log.config(query + " (IsSOTrx=" + isSOTrx + ")"); + } + return AD_Window_ID; + } + + public static int getZoomWindowID(int AD_Table_ID, int Record_ID) + { + int AD_Window_ID = MZoomCondition.findZoomWindowByTableId(AD_Table_ID, Record_ID); + MTable table = MTable.get(Env.getCtx(), AD_Table_ID); + if (AD_Window_ID <= 0) + { + AD_Window_ID = table.getAD_Window_ID(); + // Nothing to Zoom to + if (AD_Window_ID == 0) + return AD_Window_ID; + + // PO Zoom ? + boolean isSOTrx = true; + if (table.getPO_Window_ID() != 0) + { + String whereClause = table.getTableName() + "_ID=" + Record_ID; + isSOTrx = DB.isSOTrx(table.getTableName(), whereClause); + if (!isSOTrx) + AD_Window_ID = table.getPO_Window_ID(); + } + + if (log.isLoggable(Level.CONFIG)) log.config(table.getTableName() + " - Record_ID=" + Record_ID + " (IsSOTrx=" + isSOTrx + ")"); + } + return AD_Window_ID; + } + + + /************************************************************************** * Static Variables */ diff --git a/org.adempiere.ui.swing/src/org/compiere/apps/AEnv.java b/org.adempiere.ui.swing/src/org/compiere/apps/AEnv.java index f75289a482..35c99fbd79 100644 --- a/org.adempiere.ui.swing/src/org/compiere/apps/AEnv.java +++ b/org.adempiere.ui.swing/src/org/compiere/apps/AEnv.java @@ -31,7 +31,6 @@ import java.awt.Window; import java.awt.event.ActionListener; import java.sql.PreparedStatement; import java.sql.ResultSet; -import java.sql.SQLException; import java.util.ArrayList; import java.util.HashSet; import java.util.Set; @@ -55,7 +54,6 @@ import org.compiere.model.MMenu; import org.compiere.model.MQuery; import org.compiere.model.MRole; import org.compiere.model.MTable; -import org.compiere.model.MZoomCondition; import org.compiere.process.DocumentEngine; import org.compiere.swing.CButton; import org.compiere.swing.CFrame; @@ -635,27 +633,12 @@ public final class AEnv */ public static void zoom (int AD_Table_ID, int Record_ID) { - int AD_Window_ID = MZoomCondition.findZoomWindowByTableId(AD_Table_ID, Record_ID); + int AD_Window_ID = Env.getZoomWindowID(AD_Table_ID, Record_ID); + // Nothing to Zoom to + if (AD_Window_ID == 0) + return; + MTable table = MTable.get(Env.getCtx(), AD_Table_ID); - if (AD_Window_ID <= 0) - { - AD_Window_ID = table.getAD_Window_ID(); - // Nothing to Zoom to - if (AD_Window_ID == 0) - return; - - // PO Zoom ? - boolean isSOTrx = true; - if (table.getPO_Window_ID() != 0) - { - String whereClause = table.getTableName() + "_ID=" + Record_ID; - isSOTrx = DB.isSOTrx(table.getTableName(), whereClause); - if (!isSOTrx) - AD_Window_ID = table.getPO_Window_ID(); - } - - if (log.isLoggable(Level.CONFIG)) log.config(table.getTableName() + " - Record_ID=" + Record_ID + " (IsSOTrx=" + isSOTrx + ")"); - } AWindow frame = new AWindow(null); if (!frame.initWindow(AD_Window_ID, MQuery.getEqualQuery(table.getTableName() + "_ID", Record_ID))) @@ -681,50 +664,11 @@ public final class AEnv if (query == null || query.getTableName() == null || query.getTableName().length() == 0) return; - int AD_Window_ID = MZoomCondition.findZoomWindow(query); - if (AD_Window_ID <= 0) - { - String TableName = query.getTableName(); - int PO_Window_ID = 0; - String sql = "SELECT AD_Window_ID, PO_Window_ID FROM AD_Table WHERE TableName=?"; - PreparedStatement pstmt = null; - ResultSet rs = null; - try - { - pstmt = DB.prepareStatement(sql, null); - pstmt.setString(1, TableName); - rs = pstmt.executeQuery(); - if (rs.next()) - { - AD_Window_ID = rs.getInt(1); - PO_Window_ID = rs.getInt(2); - } - } - catch (SQLException e) - { - log.log(Level.SEVERE, sql, e); - } - finally - { - DB.close(rs, pstmt); - rs = null; - pstmt = null; - } - // Nothing to Zoom to - if (AD_Window_ID == 0) - return; - - // PO Zoom ? - boolean isSOTrx = true; - if (PO_Window_ID != 0) - { - isSOTrx = DB.isSOTrx(TableName, query.getWhereClause(false)); - if (!isSOTrx) - AD_Window_ID = PO_Window_ID; - } - - if (log.isLoggable(Level.CONFIG)) log.config(query + " (IsSOTrx=" + isSOTrx + ")"); - } + int AD_Window_ID = Env.getZoomWindowID(query); + // Nothing to Zoom to + if (AD_Window_ID == 0) + return; + AWindow frame = new AWindow(null); if (!frame.initWindow(AD_Window_ID, query)) return; diff --git a/org.adempiere.ui.swing/src/org/compiere/print/AReport.java b/org.adempiere.ui.swing/src/org/compiere/print/AReport.java index a187425eda..27e39c2850 100644 --- a/org.adempiere.ui.swing/src/org/compiere/print/AReport.java +++ b/org.adempiere.ui.swing/src/org/compiere/print/AReport.java @@ -85,9 +85,13 @@ public class AReport implements ActionListener m_query = query; this.parent = parent; this.WindowNo = WindowNo; + + int AD_Window_ID = Env.getContextAsInt(Env.getCtx(), WindowNo, "_WinInfo_AD_Window_ID", true); + if (AD_Window_ID == 0) + AD_Window_ID = Env.getZoomWindowID(query); // See What is there - getPrintFormats (AD_Table_ID, invoker); + getPrintFormats (AD_Table_ID, AD_Window_ID, invoker); } // AReport /** @@ -115,9 +119,13 @@ public class AReport implements ActionListener this.parent = parent; this.WindowNo = WindowNo; this.m_whereExtended = whereExtended; + + int AD_Window_ID = Env.getContextAsInt(Env.getCtx(), WindowNo, "_WinInfo_AD_Window_ID", true); + if (AD_Window_ID == 0) + AD_Window_ID = Env.getZoomWindowID(query); // See What is there - getPrintFormats (AD_Table_ID, invoker); + getPrintFormats (AD_Table_ID, AD_Window_ID, invoker); } // AReport /** The Query */ @@ -141,10 +149,10 @@ public class AReport implements ActionListener * @param AD_Table_ID table * @param invoker component to display popup (optional) */ - private void getPrintFormats (int AD_Table_ID, JComponent invoker) + private void getPrintFormats (int AD_Table_ID, int AD_Window_ID, JComponent invoker) { int AD_Client_ID = Env.getAD_Client_ID(Env.getCtx()); - RowSet rowSet = MPrintFormat.getAccessiblePrintFormats(AD_Table_ID, -1, null); + RowSet rowSet = MPrintFormat.getAccessiblePrintFormats(AD_Table_ID, AD_Window_ID, -1, null); KeyNamePair pp = null; try { diff --git a/org.adempiere.ui.swing/src/org/compiere/print/Viewer.java b/org.adempiere.ui.swing/src/org/compiere/print/Viewer.java index 5642a18435..e9f265b7a4 100644 --- a/org.adempiere.ui.swing/src/org/compiere/print/Viewer.java +++ b/org.adempiere.ui.swing/src/org/compiere/print/Viewer.java @@ -429,6 +429,10 @@ public class Viewer extends CFrame comboReport.removeActionListener(this); comboReport.removeAllItems(); KeyNamePair selectValue = null; + + int AD_Window_ID = Env.getContextAsInt(Env.getCtx(), m_reportEngine.getWindowNo(), "_WinInfo_AD_Window_ID", true); + if (AD_Window_ID == 0) + AD_Window_ID = Env.getZoomWindowID(m_reportEngine.getQuery()); // fill Report Options String sql = MRole.getDefault().addAccessSQL( "SELECT AD_PrintFormat_ID, Name, Description " @@ -437,6 +441,7 @@ public class Viewer extends CFrame //Added Lines by Armen + "AND IsActive='Y' " //End of Added Lines + + (AD_Window_ID > 0 ? "AND (AD_Window_ID=? OR AD_Window_ID IS NULL) " : "") + "ORDER BY Name", "AD_PrintFormat", MRole.SQL_NOTQUALIFIED, MRole.SQL_RO); int AD_Table_ID = m_reportEngine.getPrintFormat().getAD_Table_ID(); @@ -446,6 +451,8 @@ public class Viewer extends CFrame { pstmt = DB.prepareStatement(sql, null); pstmt.setInt(1, AD_Table_ID); + if (AD_Window_ID > 0) + pstmt.setInt(2, AD_Window_ID); rs = pstmt.executeQuery(); while (rs.next()) { diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/AEnv.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/AEnv.java index 8cb085b765..cb106f9f4f 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/AEnv.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/AEnv.java @@ -24,9 +24,6 @@ import java.io.IOException; import java.lang.ref.WeakReference; import java.net.URI; import java.net.URISyntaxException; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.SQLException; import java.util.Enumeration; import java.util.HashMap; import java.util.List; @@ -155,24 +152,11 @@ public final class AEnv */ public static void zoom (int AD_Table_ID, int Record_ID) { - int AD_Window_ID = MZoomCondition.findZoomWindowByTableId(AD_Table_ID, Record_ID); + int AD_Window_ID = Env.getZoomWindowID(AD_Table_ID, Record_ID); + // Nothing to Zoom to + if (AD_Window_ID == 0) + return; MTable table = MTable.get(Env.getCtx(), AD_Table_ID); - if (AD_Window_ID <= 0) - { - - AD_Window_ID = table.getAD_Window_ID(); - // PO Zoom ? - boolean isSOTrx = true; - if (table.getPO_Window_ID() != 0) - { - String whereClause = table.getTableName() + "_ID=" + Record_ID; - isSOTrx = DB.isSOTrx(table.getTableName(), whereClause); - if (!isSOTrx) - AD_Window_ID = table.getPO_Window_ID(); - } - - if (log.isLoggable(Level.CONFIG)) log.config(table.getTableName() + " - Record_ID=" + Record_ID + " (IsSOTrx=" + isSOTrx + ")"); - } zoom(AD_Window_ID, MQuery.getEqualQuery(table.getKeyColumns()[0], Record_ID)); } // zoom @@ -431,56 +415,15 @@ public final class AEnv { if (query == null || query.getTableName() == null || query.getTableName().length() == 0) return; - int AD_Window_ID = MZoomCondition.findZoomWindow(query); - if (AD_Window_ID <= 0) - { - String TableName = query.getTableName(); - int PO_Window_ID = 0; - String sql = "SELECT AD_Window_ID, PO_Window_ID FROM AD_Table WHERE TableName=?"; - PreparedStatement pstmt = null; - ResultSet rs = null; - try - { - pstmt = DB.prepareStatement(sql, null); - pstmt.setString(1, TableName); - rs = pstmt.executeQuery(); - if (rs.next()) - { - AD_Window_ID = rs.getInt(1); - PO_Window_ID = rs.getInt(2); - } - } - catch (SQLException e) - { - log.log(Level.SEVERE, sql, e); - } - finally - { - DB.close(rs, pstmt); - rs = null; - pstmt = null; - } - // Nothing to Zoom to - if (AD_Window_ID == 0) - return; - - // PO Zoom ? - boolean isSOTrx = true; - if (PO_Window_ID != 0) - { - isSOTrx = DB.isSOTrx(TableName, query.getWhereClause(false)); - if (!isSOTrx) - AD_Window_ID = PO_Window_ID; - } - - if (log.isLoggable(Level.CONFIG)) log.config(query + " (IsSOTrx=" + isSOTrx + ")"); - } + int AD_Window_ID = Env.getZoomWindowID(query); + // Nothing to Zoom to + if (AD_Window_ID == 0) + return; zoom(AD_Window_ID, query); } - /** * Get ImageIcon. * diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/WReport.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/WReport.java index 752ebdd123..33006cd8d7 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/WReport.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/WReport.java @@ -100,8 +100,12 @@ public class WReport implements EventListener { this.WindowNo = WindowNo; this.whereExtended = whereExtended; + int AD_Window_ID = Env.getContextAsInt(Env.getCtx(), WindowNo, "_WinInfo_AD_Window_ID", true); + if (AD_Window_ID == 0) + AD_Window_ID = Env.getZoomWindowID(query); + // See What is there - getPrintFormats (AD_Table_ID); + getPrintFormats (AD_Table_ID, AD_Window_ID); } // AReport /** The Query */ @@ -124,10 +128,10 @@ public class WReport implements EventListener { * @param AD_Table_ID table * @param invoker component to display popup (optional) */ - private void getPrintFormats (int AD_Table_ID) + private void getPrintFormats (int AD_Table_ID, int AD_Window_ID) { int AD_Client_ID = Env.getAD_Client_ID(Env.getCtx()); - RowSet rowSet = MPrintFormat.getAccessiblePrintFormats(AD_Table_ID, -1, null); + RowSet rowSet = MPrintFormat.getAccessiblePrintFormats(AD_Table_ID, AD_Window_ID, -1, null); KeyNamePair pp = null; try { diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/action/ReportAction.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/action/ReportAction.java index e673269b9a..89b0254e0c 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/action/ReportAction.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/action/ReportAction.java @@ -89,7 +89,7 @@ public class ReportAction implements EventListener public ReportAction(AbstractADWindowContent panel) { this.panel = panel; - getPrintFormats(panel.getActiveGridTab().getAD_Table_ID()); + getPrintFormats(panel.getActiveGridTab().getAD_Table_ID(), panel.getActiveGridTab().getAD_Window_ID()); } public void show() @@ -447,12 +447,12 @@ public class ReportAction implements EventListener } } - private void getPrintFormats(int AD_Table_ID) + private void getPrintFormats(int AD_Table_ID, int AD_Window_ID) { printFormatList.clear(); int AD_Client_ID = Env.getAD_Client_ID(Env.getCtx()); - RowSet rowSet = MPrintFormat.getAccessiblePrintFormats(AD_Table_ID, -1, null); + RowSet rowSet = MPrintFormat.getAccessiblePrintFormats(AD_Table_ID, AD_Window_ID, -1, null); KeyNamePair pp = null; try { diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/ZkReportViewer.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/ZkReportViewer.java index 02904c466b..2480fb4e38 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/ZkReportViewer.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/ZkReportViewer.java @@ -360,6 +360,8 @@ public class ZkReportViewer extends Window implements EventListener, ITab south.appendChild(linkDiv); //m_WindowNo int AD_Window_ID = Env.getContextAsInt(Env.getCtx(), m_reportEngine.getWindowNo(), "_WinInfo_AD_Window_ID", true); + if (AD_Window_ID == 0) + AD_Window_ID = Env.getZoomWindowID(m_reportEngine.getQuery()); int AD_Process_ID = m_reportEngine.getPrintInfo() != null ? m_reportEngine.getPrintInfo().getAD_Process_ID() : 0; updateToolbarAccess(AD_Window_ID, AD_Process_ID); @@ -596,6 +598,11 @@ public class ZkReportViewer extends Window implements EventListener, ITab comboReport.removeEventListener(Events.ON_SELECT, this); comboReport.getItems().clear(); KeyNamePair selectValue = null; + + int AD_Window_ID = Env.getContextAsInt(Env.getCtx(), m_reportEngine.getWindowNo(), "_WinInfo_AD_Window_ID", true); + if (AD_Window_ID == 0) + AD_Window_ID = Env.getZoomWindowID(m_reportEngine.getQuery()); + // fill Report Options String sql = MRole.getDefault().addAccessSQL( "SELECT AD_PrintFormat_ID, Name, Description " @@ -604,6 +611,7 @@ public class ZkReportViewer extends Window implements EventListener, ITab //Added Lines by Armen + "AND IsActive='Y' " //End of Added Lines + + (AD_Window_ID > 0 ? "AND (AD_Window_ID=? OR AD_Window_ID IS NULL) " : "") + "ORDER BY Name", "AD_PrintFormat", MRole.SQL_NOTQUALIFIED, MRole.SQL_RO); int AD_Table_ID = m_reportEngine.getPrintFormat().getAD_Table_ID(); @@ -613,6 +621,8 @@ public class ZkReportViewer extends Window implements EventListener, ITab { pstmt = DB.prepareStatement(sql, null); pstmt.setInt(1, AD_Table_ID); + if (AD_Window_ID > 0) + pstmt.setInt(2, AD_Window_ID); rs = pstmt.executeQuery(); while (rs.next()) { diff --git a/org.adempiere.ui/src/org/compiere/print/ReportCtl.java b/org.adempiere.ui/src/org/compiere/print/ReportCtl.java index 08e75c5b20..f23ede203c 100644 --- a/org.adempiere.ui/src/org/compiere/print/ReportCtl.java +++ b/org.adempiere.ui/src/org/compiere/print/ReportCtl.java @@ -155,11 +155,11 @@ public class ReportCtl return startDocumentPrint(ReportEngine.DUNNING, pi.getRecord_ID(), parent, WindowNo, !pi.isPrintPreview()); else if (pi.getAD_Process_ID() == PROCESS_RPT_FINREPORT // Financial Report || pi.getAD_Process_ID() == PROCESS_RPT_FINSTATEMENT) // Financial Statement - return startFinReport (pi); + return startFinReport (pi, WindowNo); /******************** * Standard Report *******************/ - return startStandardReport (pi); + return startStandardReport (pi, WindowNo); } // create /************************************************************************** @@ -169,10 +169,10 @@ public class ReportCtl * @param IsDirectPrint if true, prints directly - otherwise View * @return true if OK */ - static public boolean startStandardReport (ProcessInfo pi, boolean IsDirectPrint) + static public boolean startStandardReport (ProcessInfo pi, int WindowNo, boolean IsDirectPrint) { pi.setPrintPreview(!IsDirectPrint); - return startStandardReport(pi); + return startStandardReport(pi, WindowNo); } /************************************************************************** @@ -187,7 +187,7 @@ public class ReportCtl * @param IsDirectPrint if true, prints directly - otherwise View * @return true if OK */ - static public boolean startStandardReport (ProcessInfo pi) + static public boolean startStandardReport (ProcessInfo pi, int WindowNo) { ReportEngine re = null; // @@ -202,6 +202,7 @@ public class ReportCtl MQuery query = MQuery.get (ctx, pi.getAD_PInstance_ID(), TableName); PrintInfo info = new PrintInfo(pi); re = new ReportEngine(ctx, format, query, info); + re.setWindowNo(WindowNo); createOutput(re, pi.isPrintPreview(), null); return true; } @@ -214,6 +215,7 @@ public class ReportCtl pi.setSummary("No ReportEngine"); return false; } + re.setWindowNo(WindowNo); } createOutput(re, pi.isPrintPreview(), null); @@ -225,7 +227,7 @@ public class ReportCtl * @param pi Process Info * @return true if OK */ - static public boolean startFinReport (ProcessInfo pi) + static public boolean startFinReport (ProcessInfo pi, int WindowNo) { @SuppressWarnings("unused") int AD_Client_ID = Env.getAD_Client_ID(Env.getCtx()); @@ -246,6 +248,7 @@ public class ReportCtl PrintInfo info = new PrintInfo(pi); ReportEngine re = new ReportEngine(Env.getCtx(), format, query, info); + re.setWindowNo(WindowNo); createOutput(re, pi.isPrintPreview(), null); return true; } // startFinReport @@ -311,6 +314,7 @@ public class ReportCtl { throw new AdempiereException("NoDocPrintFormat"); } + re.setWindowNo(WindowNo); if (customPrintFormat!=null) { // Use custom print format if available re.setPrintFormat(customPrintFormat); From 426909fd429e2d877130b202a9fdaa3ec91531de Mon Sep 17 00:00:00 2001 From: Heng Sin Low Date: Mon, 5 Aug 2013 17:12:56 +0800 Subject: [PATCH 09/57] IDEMPIERE-1242 NPE results in Calendar Year and Period window. --- .../webui/adwindow/AbstractADWindowContent.java | 3 +++ .../webui/adwindow/CompositeADTabbox.java | 9 +++++++++ .../webui/adwindow/GridTabRowRenderer.java | 16 ++++++++++++---- 3 files changed, 24 insertions(+), 4 deletions(-) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/AbstractADWindowContent.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/AbstractADWindowContent.java index 5fb2a71c22..5cbbd339c1 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/AbstractADWindowContent.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/AbstractADWindowContent.java @@ -2432,6 +2432,9 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements { final IADTabpanel adtabPanel = findADTabpanel(wButton); boolean startWOasking = false; + if (adtabPanel == null) { + return; + } final int table_ID = adtabPanel.getGridTab().getAD_Table_ID(); // Record_ID diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/CompositeADTabbox.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/CompositeADTabbox.java index fab3968ef9..01b410c1d2 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/CompositeADTabbox.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/CompositeADTabbox.java @@ -792,7 +792,16 @@ public class CompositeADTabbox extends AbstractADTabbox if (headerTab.getGridTab().isNew()) { tabPanel.resetDetailForNewParentRecord(); } else { + //maintain detail row position if possible + int currentRow = -1; + if (!tabPanel.getGridTab().isSortTab()) { + currentRow = tabPanel.getGridTab().getCurrentRow(); + } tabPanel.query(false, 0, 0); + if (currentRow >= 0 && currentRow != tabPanel.getGridTab().getCurrentRow() + && currentRow < tabPanel.getGridTab().getRowCount()) { + tabPanel.getGridTab().setCurrentRow(currentRow, false); + } } if (!tabPanel.isVisible()) { tabPanel.setVisible(true); diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/GridTabRowRenderer.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/GridTabRowRenderer.java index 572fd804a5..59251cc3a4 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/GridTabRowRenderer.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/GridTabRowRenderer.java @@ -20,6 +20,7 @@ import java.util.Map.Entry; import java.util.Properties; import org.adempiere.util.GridRowCtx; +import org.adempiere.webui.component.Button; import org.adempiere.webui.component.Checkbox; import org.adempiere.webui.component.EditorBox; import org.adempiere.webui.component.NumberBox; @@ -118,7 +119,6 @@ public class GridTabRowRenderer implements RowRenderer, RowRendererExt { if (buttonListener != null) { - ((WButtonEditor)editor).removeActionListener(buttonListener); ((WButtonEditor)editor).addActionListener(buttonListener); } else @@ -285,7 +285,11 @@ public class GridTabRowRenderer implements RowRenderer, RowRendererExt entry.getKey().removePropertyChangeListener(entry.getValue()); entry.getValue().removeValuechangeListener(dataBinder); - div.appendChild(component); + if (component.getParent() == null || component.getParent() != div) + div.appendChild(component); + else if (!component.isVisible()) { + component.setVisible(true); + } } } @@ -495,9 +499,13 @@ public class GridTabRowRenderer implements RowRenderer, RowRendererExt org.zkoss.zul.Column column = (org.zkoss.zul.Column) columns.getChildren().get(colIndex); if (column.isVisible()) { - Cell div = (Cell) currentRow.getChildren().get(colIndex); - div.getChildren().clear(); + Cell div = (Cell) currentRow.getChildren().get(colIndex); WEditor editor = getEditorCell(gridPanelFields[i]); + if (div.getChildren().isEmpty() || !(div.getChildren().get(0) instanceof Button)) + div.getChildren().clear(); + else if (!div.getChildren().isEmpty()) { + div.getChildren().get(0).setVisible(false); + } div.appendChild(editor.getComponent()); WEditorPopupMenu popupMenu = editor.getPopupMenu(); From 2345c884815e854af5548f42d14b1ff507f751d3 Mon Sep 17 00:00:00 2001 From: Elaine Tan Date: Mon, 5 Aug 2013 17:50:17 +0800 Subject: [PATCH 10/57] IDEMPIERE-1229 Purchase Order print format needs to be removed from SO window - maintain the old public method signature --- .../src/org/compiere/print/MPrintFormat.java | 12 +++++- .../src/org/compiere/print/ReportCtl.java | 42 +++++++++++++++++++ 2 files changed, 53 insertions(+), 1 deletion(-) diff --git a/org.adempiere.base/src/org/compiere/print/MPrintFormat.java b/org.adempiere.base/src/org/compiere/print/MPrintFormat.java index c6ea706dac..8576718045 100644 --- a/org.adempiere.base/src/org/compiere/print/MPrintFormat.java +++ b/org.adempiere.base/src/org/compiere/print/MPrintFormat.java @@ -61,7 +61,7 @@ public class MPrintFormat extends X_AD_PrintFormat /** * */ - private static final long serialVersionUID = -4515887660012047223L; + private static final long serialVersionUID = 2826550741107576964L; /** * Public Constructor. @@ -1157,6 +1157,16 @@ public class MPrintFormat extends X_AD_PrintFormat } //end vpj-cd e-evolution + /** + * @param AD_Table_ID + * @param AD_Client_ID use -1 to retrieve from all client + * @param trxName + */ + public static RowSet getAccessiblePrintFormats (int AD_Table_ID, int AD_Client_ID, String trxName) + { + return getAccessiblePrintFormats(AD_Table_ID, -1, AD_Client_ID, trxName); + } + /** * @param AD_Table_ID * @param AD_Window_ID diff --git a/org.adempiere.ui/src/org/compiere/print/ReportCtl.java b/org.adempiere.ui/src/org/compiere/print/ReportCtl.java index f23ede203c..dbac1f4ef1 100644 --- a/org.adempiere.ui/src/org/compiere/print/ReportCtl.java +++ b/org.adempiere.ui/src/org/compiere/print/ReportCtl.java @@ -169,6 +169,19 @@ public class ReportCtl * @param IsDirectPrint if true, prints directly - otherwise View * @return true if OK */ + static public boolean startStandardReport (ProcessInfo pi, boolean IsDirectPrint) + { + return startStandardReport(pi, -1, IsDirectPrint); + } + + /************************************************************************** + * Start Standard Report. + * - Get Table Info & submit + * @param pi Process Info + * @param WindowNo The windows number which invoked the printing + * @param IsDirectPrint if true, prints directly - otherwise View + * @return true if OK + */ static public boolean startStandardReport (ProcessInfo pi, int WindowNo, boolean IsDirectPrint) { pi.setPrintPreview(!IsDirectPrint); @@ -187,6 +200,24 @@ public class ReportCtl * @param IsDirectPrint if true, prints directly - otherwise View * @return true if OK */ + static public boolean startStandardReport (ProcessInfo pi) + { + return startStandardReport(pi, -1); + } + + /************************************************************************** + * Start Standard Report. + * - Get Table Info & submit.
+ * A report can be created from: + *
    + *
  1. attached MPrintFormat, if any (see {@link ProcessInfo#setTransientObject(Object)}, {@link ProcessInfo#setSerializableObject(java.io.Serializable)} + *
  2. process information (AD_Process.AD_PrintFormat_ID, AD_Process.AD_ReportView_ID) + *
+ * @param pi Process Info + * @param WindowNo The windows number which invoked the printing + * @param IsDirectPrint if true, prints directly - otherwise View + * @return true if OK + */ static public boolean startStandardReport (ProcessInfo pi, int WindowNo) { ReportEngine re = null; @@ -227,6 +258,17 @@ public class ReportCtl * @param pi Process Info * @return true if OK */ + static public boolean startFinReport (ProcessInfo pi) + { + return startFinReport(pi, -1); + } + + /** + * Start Financial Report. + * @param pi Process Info + * @param WindowNo The windows number which invoked the printing + * @return true if OK + */ static public boolean startFinReport (ProcessInfo pi, int WindowNo) { @SuppressWarnings("unused") From 25d58a3f8d090932a7b050241a343092bb922593 Mon Sep 17 00:00:00 2001 From: Heng Sin Low Date: Mon, 5 Aug 2013 20:48:09 +0800 Subject: [PATCH 11/57] IDEMPIERE-1235 Add API to support the sharing of non-transactional connection within a single execution thread. Added simple sanity check ( isclosed ) for connection. --- .../db/util/AutoCommitConnectionBroker.java | 20 ++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/org.adempiere.base/src/org/idempiere/db/util/AutoCommitConnectionBroker.java b/org.adempiere.base/src/org/idempiere/db/util/AutoCommitConnectionBroker.java index a8243e9471..1041e34dd1 100644 --- a/org.adempiere.base/src/org/idempiere/db/util/AutoCommitConnectionBroker.java +++ b/org.adempiere.base/src/org/idempiere/db/util/AutoCommitConnectionBroker.java @@ -38,15 +38,17 @@ public class AutoCommitConnectionBroker { */ public static Connection getConnection() { ConnectionReference connReference = threadLocalConnection.get(); - if (connReference != null) { - connReference.referenceCount++; - return connReference.connection; - } else { - Connection connection = DB.createConnection(true, false, Connection.TRANSACTION_READ_COMMITTED); - connReference = new ConnectionReference(connection); - threadLocalConnection.set(connReference); - return connection; - } + try { + if (connReference != null && !connReference.connection.isClosed()) { + connReference.referenceCount++; + return connReference.connection; + } + } catch (SQLException e) {} + + Connection connection = DB.createConnection(true, false, Connection.TRANSACTION_READ_COMMITTED); + connReference = new ConnectionReference(connection); + threadLocalConnection.set(connReference); + return connection; } /** From 19661cd2549d4b063382d842756b821e1e71a5fb Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Mon, 5 Aug 2013 12:48:45 -0500 Subject: [PATCH 12/57] IDEMPIERE-1197 in advanced, when select empty item in column name, throw java.lang.NullPointerException / based on patch from Richard Morales --- .../WEB-INF/src/org/adempiere/webui/window/FindWindow.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/FindWindow.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/FindWindow.java index 24c6b0db59..47266feae2 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/FindWindow.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/FindWindow.java @@ -1019,7 +1019,7 @@ public class FindWindow extends Window implements EventListener, ValueCha if (listbox.getId().equals(listColumn.getId())) { ListItem column = listColumn.getSelectedItem(); - if (column != null) + if (column != null && column.getValue().toString().length() > 0) { addOperators(column, listOperator); } From bd6236850d39e5a17f03b0f13dec2cc1100439fd Mon Sep 17 00:00:00 2001 From: Juliana Corredor Date: Mon, 5 Aug 2013 13:16:51 -0500 Subject: [PATCH 13/57] IDEMPIERE-1241 problem with advanced search colum posted --- .../adempiere/webui/window/FindWindow.java | 25 +++++++++++++------ 1 file changed, 17 insertions(+), 8 deletions(-) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/FindWindow.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/FindWindow.java index 47266feae2..dbdc999e4b 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/FindWindow.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/FindWindow.java @@ -62,6 +62,7 @@ import org.adempiere.webui.component.Window; import org.adempiere.webui.editor.WEditor; import org.adempiere.webui.editor.WNumberEditor; import org.adempiere.webui.editor.WStringEditor; +import org.adempiere.webui.editor.WTableDirEditor; import org.adempiere.webui.editor.WebEditorFactory; import org.adempiere.webui.event.DialogEvents; import org.adempiere.webui.event.ValueChangeEvent; @@ -73,7 +74,9 @@ import org.compiere.model.GridField; import org.compiere.model.GridFieldVO; import org.compiere.model.GridTab; import org.compiere.model.MColumn; +import org.compiere.model.MLookup; import org.compiere.model.MLookupFactory; +import org.compiere.model.MLookupInfo; import org.compiere.model.MProduct; import org.compiere.model.MQuery; import org.compiere.model.MRole; @@ -1663,18 +1666,24 @@ public class FindWindow extends Window implements EventListener, ValueCha { editor = new WNumberEditor(findField); } - else if (findField.getDisplayType() == DisplayType.Button) + else if (findField.getDisplayType() == DisplayType.Button) { - if (columnName.endsWith("_ID")) - { - editor = new WNumberEditor(findField); - } else { - editor = new WStringEditor(findField); - } + if (findField.getAD_Reference_Value_ID() > 0) { + MLookupInfo info = MLookupFactory.getLookup_List(Env.getLanguage(Env.getCtx()), findField.getAD_Reference_Value_ID()); + MLookup mLookup = new MLookup(info, 0); + editor = new WTableDirEditor(columnName, false,false, true, mLookup); + findField.addPropertyChangeListener(editor); + + } else { + if (columnName.endsWith("_ID")) { + editor = new WNumberEditor(findField); + } else { + editor = new WStringEditor(findField); + } + } } else { - //reload lookupinfo for find window if (DisplayType.isLookup(findField.getDisplayType()) ) { From 2eb2c0ef2c58782668b2d60a1d4fbcf9011e306b Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Mon, 5 Aug 2013 16:06:05 -0500 Subject: [PATCH 14/57] IDEMPIERE-1225 QuickEntry informs that no location has been introduced when in fact it has been --- .../src/org/adempiere/webui/grid/WQuickEntry.java | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/grid/WQuickEntry.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/grid/WQuickEntry.java index f04875a62a..b4b0e348f0 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/grid/WQuickEntry.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/grid/WQuickEntry.java @@ -23,6 +23,7 @@ import org.adempiere.webui.component.ConfirmPanel; import org.adempiere.webui.component.Label; import org.adempiere.webui.component.Window; import org.adempiere.webui.editor.WEditor; +import org.adempiere.webui.editor.WLocationEditor; import org.adempiere.webui.editor.WebEditorFactory; import org.adempiere.webui.event.ValueChangeEvent; import org.adempiere.webui.event.ValueChangeListener; @@ -466,11 +467,18 @@ public class WQuickEntry extends Window implements EventListener, ValueCh int idx = quickEditors.indexOf(evt.getSource()); if (idx >= 0) { GridField field = quickFields.get(idx); + WEditor editor = quickEditors.get(idx); GridTab gridTab = field.getGridTab(); String columnName = field.getColumnName(); // process dependencies and callouts for the changed field - field.getGridTab().setValue(field, evt.getNewValue()); - gridTab.processFieldChange(field); + if (evt.getSource() instanceof WLocationEditor && evt.getNewValue() == null && editor.getValue() != null) { + // ignore first call of WLocationEditor valuechange set to null + // it will be called later with correct value + // see WLocationEditor firing twice ValueChangeEvent (first with null and then with value) + } else { + field.setValue(evt.getNewValue(), field.getGridTab().getTableModel().isInserting()); + gridTab.processFieldChange(field); + } // Refresh the list on dependant fields ArrayList dependants = gridTab.getDependantFields(columnName); for (GridField dependentField : dependants) From a14fd8642faf5c3c96b39f5be6dc35042df58f4c Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Mon, 5 Aug 2013 17:49:37 -0500 Subject: [PATCH 15/57] IDEMPIERE-1025 Improve translation for custom tables / based on patch from Richard Morales --- .../oracle/201308051741_IDEMPIERE-1025.sql | 8 ++++++++ .../201308051741_IDEMPIERE-1025.sql | 8 ++++++++ .../src/org/compiere/dbPort/Convert.java | 2 ++ .../src/org/compiere/model/MColumn.java | 6 ++++++ .../pipo2/handler/AdElementHandler.java | 12 ++++-------- .../handler/CommonTranslationHandler.java | 19 +++++++++++++------ .../pipo2/handler/FieldElementHandler.java | 12 +++++++++--- .../handler/FieldGroupElementHandler.java | 15 +++++---------- .../pipo2/handler/FormElementHandler.java | 12 +++++++++++- .../pipo2/handler/MenuElementHandler.java | 19 ++++++++++++++++++- .../pipo2/handler/MessageElementHandler.java | 18 ++++++++++++++++-- .../PrintFormatItemElementHandler.java | 11 +++++++++++ .../pipo2/handler/ProcessElementHandler.java | 17 +++++++++++++---- .../handler/ProcessParaElementHandler.java | 11 +++++++++++ .../handler/ReferenceElementHandler.java | 11 ++++++++--- .../handler/ReferenceListElementHandler.java | 12 +++++++++++- .../pipo2/handler/TabElementHandler.java | 8 ++++++++ .../pipo2/handler/TaskElementHandler.java | 11 +++++++++++ .../pipo2/handler/WindowElementHandler.java | 9 +++++++-- .../pipo2/handler/WorkflowElementHandler.java | 12 +++++++++--- .../handler/WorkflowNodeElementHandler.java | 12 +++++++++++- .../pipo2/AbstractElementHandler.java | 2 +- .../src/org/adempiere/pipo2/PackIn.java | 2 ++ .../src/org/adempiere/pipo2/PackOut.java | 2 ++ 24 files changed, 205 insertions(+), 46 deletions(-) create mode 100644 migration/i1.0c-release/oracle/201308051741_IDEMPIERE-1025.sql create mode 100644 migration/i1.0c-release/postgresql/201308051741_IDEMPIERE-1025.sql diff --git a/migration/i1.0c-release/oracle/201308051741_IDEMPIERE-1025.sql b/migration/i1.0c-release/oracle/201308051741_IDEMPIERE-1025.sql new file mode 100644 index 0000000000..1d981dd8a0 --- /dev/null +++ b/migration/i1.0c-release/oracle/201308051741_IDEMPIERE-1025.sql @@ -0,0 +1,8 @@ +-- Aug 5, 2013 5:41:02 PM COT +-- IDEMPIERE-1025 Improve translation for custom tables +UPDATE AD_SysConfig SET Value='Y',Updated=TO_DATE('2013-08-05 17:41:02','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_SysConfig_ID=50031 +; + +SELECT register_migration_script('201308051741_IDEMPIERE-1025.sql') FROM dual +; + diff --git a/migration/i1.0c-release/postgresql/201308051741_IDEMPIERE-1025.sql b/migration/i1.0c-release/postgresql/201308051741_IDEMPIERE-1025.sql new file mode 100644 index 0000000000..a8cc6f0095 --- /dev/null +++ b/migration/i1.0c-release/postgresql/201308051741_IDEMPIERE-1025.sql @@ -0,0 +1,8 @@ +-- Aug 5, 2013 5:41:02 PM COT +-- IDEMPIERE-1025 Improve translation for custom tables +UPDATE AD_SysConfig SET Value='Y',Updated=TO_TIMESTAMP('2013-08-05 17:41:02','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_SysConfig_ID=50031 +; + +SELECT register_migration_script('201308051741_IDEMPIERE-1025.sql') FROM dual +; + diff --git a/org.adempiere.base/src/org/compiere/dbPort/Convert.java b/org.adempiere.base/src/org/compiere/dbPort/Convert.java index 93afb6636c..48cd57a85a 100644 --- a/org.adempiere.base/src/org/compiere/dbPort/Convert.java +++ b/org.adempiere.base/src/org/compiere/dbPort/Convert.java @@ -538,6 +538,8 @@ public abstract class Convert return true; if (uppStmt.startsWith("UPDATE C_ACCTPROCESSOR SET DATENEXTRUN")) return true; + if (uppStmt.startsWith("UPDATE R_REQUESTPROCESSOR SET DATELASTRUN")) + return true; // Don't log DELETE FROM Some_Table WHERE AD_Table_ID=? AND Record_ID=? if (uppStmt.startsWith("DELETE FROM ") && uppStmt.endsWith(" WHERE AD_TABLE_ID=? AND RECORD_ID=?")) return true; diff --git a/org.adempiere.base/src/org/compiere/model/MColumn.java b/org.adempiere.base/src/org/compiere/model/MColumn.java index a4a98ca0f8..502c410d19 100644 --- a/org.adempiere.base/src/org/compiere/model/MColumn.java +++ b/org.adempiere.base/src/org/compiere/model/MColumn.java @@ -370,6 +370,10 @@ public class MColumn extends X_AD_Column { if (!success) return success; + + /* Fields must inherit translation from element, not from column + * changing it here is useless as SynchronizeTerminology get trl from column */ + /* // Update Fields if (!newRecord) { @@ -387,6 +391,8 @@ public class MColumn extends X_AD_Column if (log.isLoggable(Level.FINE)) log.fine("afterSave - Fields updated #" + no); } } + */ + return success; } // afterSave diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/AdElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/AdElementHandler.java index efed2fe277..d6fa1479fc 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/AdElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/AdElementHandler.java @@ -78,7 +78,7 @@ public class AdElementHandler extends AbstractElementHandler { element.unresolved = notfounds.toString(); return; } - + element.recordId = mElement.getAD_Element_ID(); if (mElement.is_new() || mElement.is_Changed()) { X_AD_Package_Imp_Detail impDetail = createImportDetail(ctx, element.qName, X_AD_Element.Table_Name, X_AD_Element.Table_ID); if (!mElement.is_new()) { @@ -92,8 +92,6 @@ public class AdElementHandler extends AbstractElementHandler { logImportDetail(ctx, impDetail, 1, mElement.getName(), mElement.get_ID(), action); - element.recordId = mElement.getAD_Element_ID(); - processedElements.add(mElement.getAD_Element_ID()); } else { @@ -123,7 +121,6 @@ public class AdElementHandler extends AbstractElementHandler { processedElements.add(adElement_id); X_AD_Element mAdElement = new X_AD_Element(ctx.ctx, adElement_id, null); - if (ctx.packOut.getFromDate() != null) { if (mAdElement.getUpdated().compareTo(ctx.packOut.getFromDate()) < 0) { return; @@ -136,11 +133,10 @@ public class AdElementHandler extends AbstractElementHandler { createAdElementBinding(ctx, document, mAdElement); PackOut packOut = ctx.packOut; - try{ + packOut.getCtx().ctx.put("Table_Name",X_AD_Element.Table_Name); + try { new CommonTranslationHandler().packOut(packOut,document,null,mAdElement.get_ID()); - } - catch(Exception e) - { + } catch(Exception e) { if (log.isLoggable(Level.INFO)) log.info(e.toString()); } diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/CommonTranslationHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/CommonTranslationHandler.java index 742568d0dc..07daff48fb 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/CommonTranslationHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/CommonTranslationHandler.java @@ -11,18 +11,17 @@ import javax.xml.transform.sax.TransformerHandler; import org.adempiere.exceptions.DBException; import org.adempiere.pipo2.AbstractElementHandler; -import org.adempiere.pipo2.PIPOContext; -import org.adempiere.pipo2.PoExporter; import org.adempiere.pipo2.Element; import org.adempiere.pipo2.ElementHandler; +import org.adempiere.pipo2.PIPOContext; import org.adempiere.pipo2.PackOut; +import org.adempiere.pipo2.PoExporter; +import org.compiere.model.MTable; import org.compiere.util.DB; import org.compiere.util.Env; import org.xml.sax.SAXException; import org.xml.sax.helpers.AttributesImpl; -import org.compiere.model.X_AD_Element; - public class CommonTranslationHandler extends AbstractElementHandler implements ElementHandler { public static final String CONTEXT_KEY_PARENT_TABLE = "currentParentTableForTranslation"; @@ -288,10 +287,18 @@ public class CommonTranslationHandler extends AbstractElementHandler implements return str.substring(1, str.length()-1); } + private boolean existTranslated(String Name) + { + if (MTable.getTable_ID(Name+"_Trl")>0) + return true; + else + return false; + } + public void packOut(PackOut packout, TransformerHandler packoutHandler, TransformerHandler docHandler,int recordId) throws Exception { - if("true".equals(packout.getCtx().ctx.getProperty("isHandleTranslations"))){ - Env.setContext(packout.getCtx().ctx, CommonTranslationHandler.CONTEXT_KEY_PARENT_TABLE,X_AD_Element.Table_Name); + if("Y".equals(packout.getCtx().ctx.getProperty("isHandleTranslations")) && existTranslated(packout.getCtx().ctx.getProperty("Table_Name"))){ + Env.setContext(packout.getCtx().ctx, CommonTranslationHandler.CONTEXT_KEY_PARENT_TABLE,packout.getCtx().ctx.getProperty("Table_Name")); Env.setContext(packout.getCtx().ctx, CommonTranslationHandler.CONTEXT_KEY_PARENT_RECORD_ID,recordId); this.create(packout.getCtx(), packoutHandler); packout.getCtx().ctx.remove(CommonTranslationHandler.CONTEXT_KEY_PARENT_TABLE); diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/FieldElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/FieldElementHandler.java index 32eb62667e..efd5451551 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/FieldElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/FieldElementHandler.java @@ -17,6 +17,7 @@ package org.adempiere.pipo2.handler; import java.util.List; +import java.util.logging.Level; import javax.xml.transform.sax.TransformerHandler; @@ -134,7 +135,7 @@ public class FieldElementHandler extends AbstractElementHandler { element.unresolved = notfounds.toString(); return; } - + element.recordId = mField.getAD_Field_ID(); if (mField.is_new() || mField.is_Changed()) { X_AD_Package_Imp_Detail impDetail = createImportDetail(ctx, element.qName, X_AD_Field.Table_Name, X_AD_Field.Table_ID); @@ -150,7 +151,6 @@ public class FieldElementHandler extends AbstractElementHandler { if (mField.save(getTrxName(ctx)) == true) { logImportDetail(ctx, impDetail, 1, mField.getName(), mField .get_ID(), action); - element.recordId = mField.getAD_Field_ID(); } else { logImportDetail(ctx, impDetail, 0, mField.getName(), mField .get_ID(), action); @@ -172,7 +172,6 @@ public class FieldElementHandler extends AbstractElementHandler { X_AD_Field m_Field = new X_AD_Field(ctx.ctx, AD_Field_ID, null); PackOut packOut = ctx.packOut; - try { if(m_Field.getAD_FieldGroup_ID() > 0) @@ -202,6 +201,13 @@ public class FieldElementHandler extends AbstractElementHandler { addTypeName(atts, "table"); document.startElement("", "", X_AD_Field.Table_Name, atts); createFieldBinding(ctx, document, m_Field); + packOut.getCtx().ctx.put("Table_Name",X_AD_Field.Table_Name); + try { + new CommonTranslationHandler().packOut(packOut,document,null,m_Field.get_ID()); + } catch(Exception e) { + if (log.isLoggable(Level.INFO)) log.info(e.toString()); + } + document.endElement("", "", X_AD_Field.Table_Name); } diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/FieldGroupElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/FieldGroupElementHandler.java index 4eb06680d0..e23a6324e5 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/FieldGroupElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/FieldGroupElementHandler.java @@ -83,6 +83,8 @@ public class FieldGroupElementHandler extends AbstractElementHandler { return; } + element.recordId = fieldGroup.getAD_FieldGroup_ID(); + if (fieldGroup.is_new() || fieldGroup.is_Changed()) { X_AD_Package_Imp_Detail impDetail = createImportDetail(ctx, element.qName, X_AD_FieldGroup.Table_Name, X_AD_FieldGroup.Table_ID); @@ -96,9 +98,6 @@ public class FieldGroupElementHandler extends AbstractElementHandler { if (fieldGroup.save(getTrxName(ctx)) == true) { logImportDetail(ctx, impDetail, 1, fieldGroup.getName(), fieldGroup.get_ID(), action); - - element.recordId = fieldGroup.getAD_FieldGroup_ID(); - processedFieldGroups.add(fieldGroup.getAD_FieldGroup_ID()); } else { @@ -138,16 +137,13 @@ public class FieldGroupElementHandler extends AbstractElementHandler { AttributesImpl atts = new AttributesImpl(); addTypeName(atts, "table"); document.startElement("", "", I_AD_FieldGroup.Table_Name, atts); - createAdElementBinding(ctx, document, fieldGroup); PackOut packOut = ctx.packOut; - - try{ + packOut.getCtx().ctx.put("Table_Name",X_AD_FieldGroup.Table_Name); + try { new CommonTranslationHandler().packOut(packOut,document,null,fieldGroup.get_ID()); - } - catch(Exception e) - { + } catch(Exception e) { if (log.isLoggable(Level.INFO)) log.info(e.toString()); } document.endElement("", "", I_AD_FieldGroup.Table_Name); @@ -169,7 +165,6 @@ public class FieldGroupElementHandler extends AbstractElementHandler { public void packOut(PackOut packout, TransformerHandler packoutHandler, TransformerHandler docHandler,int recordId) throws Exception { Env.setContext(packout.getCtx().ctx, X_AD_FieldGroup.COLUMNNAME_AD_FieldGroup_ID, recordId); - this.create(packout.getCtx(), packoutHandler); packout.getCtx().ctx.remove(X_AD_FieldGroup.COLUMNNAME_AD_FieldGroup_ID); } diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/FormElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/FormElementHandler.java index 0cf625922f..7b4ff2081d 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/FormElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/FormElementHandler.java @@ -19,6 +19,7 @@ package org.adempiere.pipo2.handler; import java.util.ArrayList; import java.util.List; +import java.util.logging.Level; import javax.xml.transform.sax.TransformerHandler; @@ -69,7 +70,7 @@ public class FormElementHandler extends AbstractElementHandler { element.unresolved = notfounds.toString(); return; } - + element.recordId = mForm.get_ID(); if (mForm.is_new() || mForm.is_Changed()) { X_AD_Package_Imp_Detail impDetail = createImportDetail(ctx, element.qName, X_AD_Form.Table_Name, X_AD_Form.Table_ID); @@ -116,6 +117,15 @@ public class FormElementHandler extends AbstractElementHandler { addTypeName(atts, "table"); document.startElement("","",I_AD_Form.Table_Name,atts); createFormBinding(ctx, document, m_Form); + + PackOut packOut = ctx.packOut; + packOut.getCtx().ctx.put("Table_Name",X_AD_Form.Table_Name); + try { + new CommonTranslationHandler().packOut(packOut,document,null,m_Form.get_ID()); + } catch(Exception e) { + if (log.isLoggable(Level.INFO)) log.info(e.toString()); + } + document.endElement("","",I_AD_Form.Table_Name); } diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/MenuElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/MenuElementHandler.java index b451809644..7667f5b78e 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/MenuElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/MenuElementHandler.java @@ -79,7 +79,7 @@ public class MenuElementHandler extends AbstractElementHandler { element.unresolved = notFounds.toString(); return; } - + element.recordId = mMenu.get_ID(); if (!mMenu.is_new() && !mMenu.is_Changed()) return; @@ -211,6 +211,15 @@ public class MenuElementHandler extends AbstractElementHandler { addTypeName(atts, "table"); document.startElement("", "", I_AD_Menu.Table_Name, atts); createMenuBinding(ctx, document, m_Menu); + + PackOut packOut = ctx.packOut; + packOut.getCtx().ctx.put("Table_Name",X_AD_Menu.Table_Name); + try { + new CommonTranslationHandler().packOut(packOut,document,null,m_Menu.get_ID()); + } catch(Exception e) { + if (log.isLoggable(Level.INFO)) log.info(e.toString()); + } + createModule(ctx, document, AD_Menu_ID); document.endElement("", "", I_AD_Menu.Table_Name); } @@ -260,6 +269,14 @@ public class MenuElementHandler extends AbstractElementHandler { addTypeName(atts, "table"); document.startElement("", "", I_AD_Menu.Table_Name, atts); createMenuBinding(ctx, document, m_Menu); + + packOut.getCtx().ctx.put("Table_Name",X_AD_Menu.Table_Name); + try { + new CommonTranslationHandler().packOut(packOut,document,null,m_Menu.get_ID()); + } catch(Exception e) { + if (log.isLoggable(Level.INFO)) log.info(e.toString()); + } + if (rs.getInt("AD_WINDOW_ID") > 0 || rs.getInt("AD_WORKFLOW_ID") > 0 || rs.getInt("AD_TASK_ID") > 0 diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/MessageElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/MessageElementHandler.java index 6250e729a2..5f734ac53e 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/MessageElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/MessageElementHandler.java @@ -18,6 +18,7 @@ package org.adempiere.pipo2.handler; import java.util.ArrayList; import java.util.List; +import java.util.logging.Level; import javax.xml.transform.sax.TransformerHandler; @@ -55,6 +56,11 @@ public class MessageElementHandler extends AbstractElementHandler { } PoFiller filler = new PoFiller(ctx, mMessage, element, this); List excludes = defaultExcludeList(X_AD_Message.Table_Name); + + if (messages.contains(mMessage.getAD_Message_ID())) { + element.skip = true; + return; + } List notfounds = filler.autoFill(excludes); if (notfounds.size() > 0) { @@ -62,7 +68,7 @@ public class MessageElementHandler extends AbstractElementHandler { element.unresolved = notfounds.toString(); return; } - + element.recordId = mMessage.getAD_Message_ID(); if (mMessage.is_new() || mMessage.is_Changed()) { X_AD_Package_Imp_Detail impDetail = createImportDetail(ctx, element.qName, X_AD_Message.Table_Name, X_AD_Message.Table_ID); @@ -102,7 +108,6 @@ public class MessageElementHandler extends AbstractElementHandler { messages.add(AD_Message_ID); AttributesImpl atts = new AttributesImpl(); X_AD_Message m_Message = new X_AD_Message (ctx.ctx, AD_Message_ID, null); - if (ctx.packOut.getFromDate() != null) { if (m_Message.getUpdated().compareTo(ctx.packOut.getFromDate()) < 0) { return; @@ -112,6 +117,15 @@ public class MessageElementHandler extends AbstractElementHandler { addTypeName(atts, "table"); document.startElement("","",I_AD_Message.Table_Name,atts); createMessageBinding(ctx,document,m_Message); + + PackOut packOut = ctx.packOut; + packOut.getCtx().ctx.put("Table_Name",X_AD_Message.Table_Name); + try { + new CommonTranslationHandler().packOut(packOut,document,null,m_Message.get_ID()); + } catch(Exception e) { + if (log.isLoggable(Level.INFO)) log.info(e.toString()); + } + document.endElement("","",I_AD_Message.Table_Name); } diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/PrintFormatItemElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/PrintFormatItemElementHandler.java index b0c14ca96d..d6991cd820 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/PrintFormatItemElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/PrintFormatItemElementHandler.java @@ -18,6 +18,7 @@ package org.adempiere.pipo2.handler; import java.util.List; +import java.util.logging.Level; import javax.xml.transform.sax.TransformerHandler; @@ -113,6 +114,7 @@ public class PrintFormatItemElementHandler extends AbstractElementHandler { return; } + element.recordId = mPrintFormatItem.get_ID(); if (mPrintFormatItem.is_new() || mPrintFormatItem.is_Changed()) { X_AD_Package_Imp_Detail impDetail = createImportDetail(ctx, element.qName, X_AD_PrintFormatItem.Table_Name, X_AD_PrintFormatItem.Table_ID); @@ -150,10 +152,19 @@ public class PrintFormatItemElementHandler extends AbstractElementHandler { } } + PackOut packOut = ctx.packOut; AttributesImpl atts = new AttributesImpl(); addTypeName(atts, "table"); document.startElement("", "", I_AD_PrintFormatItem.Table_Name, atts); createPrintFormatItemBinding(ctx, document, m_PrintFormatItem); + + packOut.getCtx().ctx.put("Table_Name",I_AD_PrintFormatItem.Table_Name); + try { + new CommonTranslationHandler().packOut(packOut,document,null,m_PrintFormatItem.get_ID()); + } catch(Exception e) { + if (log.isLoggable(Level.INFO)) log.info(e.toString()); + } + document.endElement("", "", I_AD_PrintFormatItem.Table_Name); } diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ProcessElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ProcessElementHandler.java index a8c3aa38b4..07449bcd19 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ProcessElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ProcessElementHandler.java @@ -18,6 +18,7 @@ package org.adempiere.pipo2.handler; import java.util.ArrayList; import java.util.List; +import java.util.logging.Level; import javax.xml.transform.sax.TransformerHandler; @@ -82,6 +83,7 @@ public class ProcessElementHandler extends AbstractElementHandler { return; } + element.recordId = mProcess.get_ID(); if (mProcess.is_new() || mProcess.is_Changed()) { X_AD_Package_Imp_Detail impDetail = createImportDetail(ctx, element.qName, X_AD_Process.Table_Name, X_AD_Process.Table_ID); @@ -96,7 +98,6 @@ public class ProcessElementHandler extends AbstractElementHandler { if (mProcess.save(getTrxName(ctx)) == true) { logImportDetail(ctx, impDetail, 1, mProcess.getName(), mProcess .get_ID(), action); - element.recordId = mProcess.getAD_Process_ID(); } else { logImportDetail(ctx, impDetail, 0, mProcess.getName(), mProcess .get_ID(), action); @@ -159,9 +160,17 @@ public class ProcessElementHandler extends AbstractElementHandler { } if (createElement) { - addTypeName(atts, "table"); - document.startElement("", "", I_AD_Process.Table_Name, atts); - createProcessBinding(ctx, document, m_Process); + addTypeName(atts, "table"); + document.startElement("", "", I_AD_Process.Table_Name, atts); + createProcessBinding(ctx, document, m_Process); + + packOut.getCtx().ctx.put("Table_Name",I_AD_Process.Table_Name); + try { + new CommonTranslationHandler().packOut(packOut,document,null,m_Process.get_ID()); + } catch(Exception e) { + if (log.isLoggable(Level.INFO)) log.info(e.toString()); + } + } Query query = new Query(ctx.ctx, "AD_Process_PARA", "AD_Process_ID = ?", getTrxName(ctx)); diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ProcessParaElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ProcessParaElementHandler.java index 4975772e7b..95ad9d8595 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ProcessParaElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ProcessParaElementHandler.java @@ -17,6 +17,7 @@ package org.adempiere.pipo2.handler; import java.util.List; +import java.util.logging.Level; import javax.xml.transform.sax.TransformerHandler; @@ -89,6 +90,7 @@ public class ProcessParaElementHandler extends AbstractElementHandler { return; } + element.recordId = mProcessPara.get_ID(); if (mProcessPara.is_new() || mProcessPara.is_Changed()) { X_AD_Package_Imp_Detail impDetail = createImportDetail(ctx, element.qName, X_AD_Process_Para.Table_Name, X_AD_Process_Para.Table_ID); @@ -143,6 +145,15 @@ public class ProcessParaElementHandler extends AbstractElementHandler { addTypeName(atts, "table"); document.startElement("", "", I_AD_Process_Para.Table_Name, atts); createProcessParaBinding(ctx, document, m_Processpara); + + PackOut packOut = ctx.packOut; + packOut.getCtx().ctx.put("Table_Name",I_AD_Process_Para.Table_Name); + try { + new CommonTranslationHandler().packOut(packOut,document,null,m_Processpara.get_ID()); + } catch(Exception e) { + if (log.isLoggable(Level.INFO)) log.info(e.toString()); + } + document.endElement("", "", I_AD_Process_Para.Table_Name); } diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ReferenceElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ReferenceElementHandler.java index e4f47aa047..3c3b9ea56b 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ReferenceElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ReferenceElementHandler.java @@ -77,7 +77,7 @@ public class ReferenceElementHandler extends AbstractElementHandler { element.unresolved = notfounds.toString(); return; } - + element.recordId = mReference.getAD_Reference_ID(); if (mReference.is_new() || mReference.is_Changed()) { X_AD_Package_Imp_Detail impDetail = createImportDetail(ctx, element.qName, X_AD_Reference.Table_Name, X_AD_Reference.Table_ID); @@ -96,7 +96,6 @@ public class ReferenceElementHandler extends AbstractElementHandler { logImportDetail(ctx, impDetail, 1, mReference.getName(), mReference.get_ID(), action); references.add(mReference.getAD_Reference_ID()); - element.recordId = mReference.getAD_Reference_ID(); } else { logImportDetail(ctx, impDetail, 0, mReference.getName(), mReference.get_ID(), action); @@ -130,11 +129,17 @@ public class ReferenceElementHandler extends AbstractElementHandler { createElement = false; } } - + PackOut packOut = ctx.packOut; + packOut.getCtx().ctx.put("Table_Name",X_AD_Reference.Table_Name); if (createElement) { addTypeName(atts, "table"); document.startElement("", "", I_AD_Reference.Table_Name, atts); createReferenceBinding(ctx, document, m_Reference); + try { + new CommonTranslationHandler().packOut(packOut,document,null,m_Reference.get_ID()); + } catch(Exception e) { + if (log.isLoggable(Level.INFO)) log.info(e.toString()); + } } if (m_Reference.getValidationType().compareTo("L") == 0) { diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ReferenceListElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ReferenceListElementHandler.java index 96457752f2..618568459e 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ReferenceListElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ReferenceListElementHandler.java @@ -17,6 +17,7 @@ package org.adempiere.pipo2.handler; import java.util.List; +import java.util.logging.Level; import javax.xml.transform.sax.TransformerHandler; @@ -77,7 +78,7 @@ public class ReferenceListElementHandler extends AbstractElementHandler { element.unresolved = notfounds.toString(); return; } - + element.recordId = mRefList.get_ID(); if (mRefList.is_new() || mRefList.is_Changed()) { X_AD_Package_Imp_Detail impDetail = createImportDetail(ctx, element.qName, X_AD_Ref_List.Table_Name, X_AD_Ref_List.Table_ID); @@ -120,6 +121,15 @@ public class ReferenceListElementHandler extends AbstractElementHandler { addTypeName(atts, "table"); document.startElement("", "", I_AD_Ref_List.Table_Name, atts); createRefListBinding(ctx, document, m_Ref_List); + + PackOut packOut = ctx.packOut; + packOut.getCtx().ctx.put("Table_Name",X_AD_Ref_List.Table_Name); + try { + new CommonTranslationHandler().packOut(packOut,document,null,m_Ref_List.get_ID()); + } catch(Exception e) { + if (log.isLoggable(Level.INFO)) log.info(e.toString()); + } + document.endElement("", "", I_AD_Ref_List.Table_Name); } diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/TabElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/TabElementHandler.java index 516130bc66..42b4c4f39b 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/TabElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/TabElementHandler.java @@ -140,6 +140,7 @@ public class TabElementHandler extends AbstractElementHandler { return; } + element.recordId = mTab.get_ID(); if (mTab.is_new() || mTab.is_Changed()) { X_AD_Package_Imp_Detail impDetail = createImportDetail(ctx, element.qName, X_AD_Tab.Table_Name, X_AD_Tab.Table_ID); @@ -185,6 +186,13 @@ public class TabElementHandler extends AbstractElementHandler { addTypeName(atts, "table"); document.startElement("","",I_AD_Tab.Table_Name,atts); createTabBinding(ctx,document,m_Tab); + + packOut.getCtx().ctx.put("Table_Name",X_AD_Tab.Table_Name); + try { + new CommonTranslationHandler().packOut(packOut,document,null,m_Tab.get_ID()); + } catch(Exception e) { + if (log.isLoggable(Level.INFO)) log.info(e.toString()); + } } //Fields tags. diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/TaskElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/TaskElementHandler.java index 5b20d96258..29b9849fa2 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/TaskElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/TaskElementHandler.java @@ -19,6 +19,7 @@ package org.adempiere.pipo2.handler; import java.util.ArrayList; import java.util.List; +import java.util.logging.Level; import javax.xml.transform.sax.TransformerHandler; @@ -69,6 +70,7 @@ public class TaskElementHandler extends AbstractElementHandler { return; } + element.recordId = mTask.get_ID(); if (mTask.is_new() || mTask.is_Changed()) { X_AD_Package_Imp_Detail impDetail = createImportDetail(ctx, element.qName, X_AD_Task.Table_Name, X_AD_Task.Table_ID); @@ -112,6 +114,15 @@ public class TaskElementHandler extends AbstractElementHandler { addTypeName(atts, "table"); document.startElement("", "", I_AD_Task.Table_Name, atts); createTaskBinding(ctx, document, m_Task); + + PackOut packOut = ctx.packOut; + packOut.getCtx().ctx.put("Table_Name",I_AD_Task.Table_Name); + try { + new CommonTranslationHandler().packOut(packOut,document,null,m_Task.get_ID()); + } catch(Exception e) { + if (log.isLoggable(Level.INFO)) log.info(e.toString()); + } + document.endElement("", "", I_AD_Task.Table_Name); } diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WindowElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WindowElementHandler.java index 07310a3ff5..d1e20c5b03 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WindowElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WindowElementHandler.java @@ -90,7 +90,7 @@ public class WindowElementHandler extends AbstractElementHandler { element.unresolved = notfounds.toString(); return; } - + element.recordId = mWindow.get_ID(); if (mWindow.is_new() || mWindow.is_Changed()) { X_AD_Package_Imp_Detail impDetail = createImportDetail(ctx, element.qName, X_AD_Window.Table_Name, X_AD_Window.Table_ID); @@ -104,7 +104,6 @@ public class WindowElementHandler extends AbstractElementHandler { if (mWindow.save(getTrxName(ctx)) == true) { logImportDetail(ctx, impDetail, 1, mWindow.getName(), mWindow .get_ID(), action); - element.recordId = mWindow.getAD_Window_ID(); windows.add(mWindow.getAD_Window_ID()); } else { logImportDetail(ctx, impDetail, 0, mWindow.getName(), mWindow @@ -164,6 +163,12 @@ public class WindowElementHandler extends AbstractElementHandler { addTypeName(atts, "table"); document.startElement("", "", I_AD_Window.Table_Name, atts); createWindowBinding(ctx, document, m_Window); + packOut.getCtx().ctx.put("Table_Name",X_AD_Window.Table_Name); + try { + new CommonTranslationHandler().packOut(packOut,document,null,m_Window.get_ID()); + } catch(Exception e) { + if (log.isLoggable(Level.INFO)) log.info(e.toString()); + } } // Tab Tag String sql = "SELECT AD_Tab_ID, AD_Table_ID FROM AD_TAB WHERE AD_WINDOW_ID = " diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WorkflowElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WorkflowElementHandler.java index c888a367ff..ea67fdd4d0 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WorkflowElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WorkflowElementHandler.java @@ -86,7 +86,7 @@ public class WorkflowElementHandler extends AbstractElementHandler { element.unresolved = notfounds.toString(); return; } - + element.recordId = mWorkflow.get_ID(); if (mWorkflow.is_new() || mWorkflow.is_Changed()) { X_AD_Package_Imp_Detail impDetail = createImportDetail(ctx, element.qName, X_AD_Workflow.Table_Name, X_AD_Workflow.Table_ID); @@ -103,7 +103,6 @@ public class WorkflowElementHandler extends AbstractElementHandler { logImportDetail(ctx,impDetail, 1, mWorkflow.getName(), mWorkflow .get_ID(), action); workflows.add(mWorkflow.getAD_Workflow_ID()); - element.recordId = mWorkflow.getAD_Workflow_ID(); } else { log.info("m_Workflow save failure"); logImportDetail(ctx, impDetail, 0, mWorkflow.getName(), mWorkflow @@ -160,7 +159,7 @@ public class WorkflowElementHandler extends AbstractElementHandler { X_AD_Package_Exp_Detail.COLUMNNAME_AD_Workflow_ID); if (workflows.contains(AD_Workflow_ID)) return; - + PackOut packOut = ctx.packOut; workflows.add(AD_Workflow_ID); int ad_wf_nodenext_id = 0; int ad_wf_nodenextcondition_id = 0; @@ -179,6 +178,13 @@ public class WorkflowElementHandler extends AbstractElementHandler { atts.addAttribute("", "", "type-name", "CDATA", "ad.workflow"); document.startElement("", "", I_AD_Workflow.Table_Name, atts); createWorkflowBinding(ctx, document, m_Workflow); + + packOut.getCtx().ctx.put("Table_Name",I_AD_Workflow.Table_Name); + try { + new CommonTranslationHandler().packOut(packOut,document,null,m_Workflow.get_ID()); + } catch(Exception e) { + if (log.isLoggable(Level.INFO)) log.info(e.toString()); + } } String sql = "SELECT AD_WF_Node_ID FROM AD_WF_Node WHERE AD_Workflow_ID = " diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WorkflowNodeElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WorkflowNodeElementHandler.java index 3618687714..05e15d9396 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WorkflowNodeElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WorkflowNodeElementHandler.java @@ -18,6 +18,7 @@ package org.adempiere.pipo2.handler; import java.util.List; +import java.util.logging.Level; import javax.xml.transform.sax.TransformerHandler; @@ -94,7 +95,7 @@ public class WorkflowNodeElementHandler extends AbstractElementHandler { element.unresolved = notfounds.toString(); return; } - + element.recordId = mWFNode.get_ID(); if (mWFNode.is_new() || mWFNode.is_Changed()) { X_AD_Package_Imp_Detail impDetail = createImportDetail(ctx, element.qName, X_AD_WF_Node.Table_Name, X_AD_WF_Node.Table_ID); @@ -141,6 +142,15 @@ public class WorkflowNodeElementHandler extends AbstractElementHandler { addTypeName(atts, "table"); document.startElement("", "", I_AD_WF_Node.Table_Name, atts); createWorkflowNodeBinding(ctx, document, m_WF_Node); + + PackOut packOut = ctx.packOut; + packOut.getCtx().ctx.put("Table_Name",I_AD_WF_Node.Table_Name); + try { + new CommonTranslationHandler().packOut(packOut,document,null,m_WF_Node.get_ID()); + } catch(Exception e) { + if (log.isLoggable(Level.INFO)) log.info(e.toString()); + } + document.endElement("", "", I_AD_WF_Node.Table_Name); } diff --git a/org.adempiere.pipo/src/org/adempiere/pipo2/AbstractElementHandler.java b/org.adempiere.pipo/src/org/adempiere/pipo2/AbstractElementHandler.java index d652b6d0bc..2919b41312 100644 --- a/org.adempiere.pipo/src/org/adempiere/pipo2/AbstractElementHandler.java +++ b/org.adempiere.pipo/src/org/adempiere/pipo2/AbstractElementHandler.java @@ -440,7 +440,7 @@ public abstract class AbstractElementHandler implements ElementHandler { */ protected boolean isHandleTranslations(Properties ctx) { - return "true".equalsIgnoreCase(Env.getContext(ctx, "isHandleTranslations")); + return "Y".equalsIgnoreCase(Env.getContext(ctx, "isHandleTranslations")); } /** diff --git a/org.adempiere.pipo/src/org/adempiere/pipo2/PackIn.java b/org.adempiere.pipo/src/org/adempiere/pipo2/PackIn.java index 33bb923834..1e29e41364 100644 --- a/org.adempiere.pipo/src/org/adempiere/pipo2/PackIn.java +++ b/org.adempiere.pipo/src/org/adempiere/pipo2/PackIn.java @@ -33,6 +33,7 @@ import java.util.logging.Level; import javax.xml.parsers.SAXParser; import javax.xml.parsers.SAXParserFactory; +import org.compiere.model.MSysConfig; import org.compiere.model.PO; import org.compiere.model.X_AD_Package_Imp_Detail; import org.compiere.util.CLogger; @@ -153,6 +154,7 @@ public class PackIn { context.trx = Trx.get(trxName, true); context.packIn = this; context.ctx = ctx; + context.ctx.setProperty("isHandleTranslations", MSysConfig.getValue(MSysConfig.TWOPACK_HANDLE_TRANSLATIONS)); handler.setCtx(context); handler.setProcess(this); SAXParserFactory factory = SAXParserFactory.newInstance(); diff --git a/org.adempiere.pipo/src/org/adempiere/pipo2/PackOut.java b/org.adempiere.pipo/src/org/adempiere/pipo2/PackOut.java index 4dbd6b05de..55bd0c53a6 100644 --- a/org.adempiere.pipo/src/org/adempiere/pipo2/PackOut.java +++ b/org.adempiere.pipo/src/org/adempiere/pipo2/PackOut.java @@ -40,6 +40,7 @@ import javax.xml.transform.sax.TransformerHandler; import javax.xml.transform.stream.StreamResult; import org.compiere.model.MClient; +import org.compiere.model.MSysConfig; import org.compiere.model.MTable; import org.compiere.util.CLogger; import org.compiere.util.Trx; @@ -296,6 +297,7 @@ public class PackOut private void initContext() { if (trxName != null) pipoContext.trx = Trx.get(trxName, true); + pipoContext.ctx.setProperty("isHandleTranslations", MSysConfig.getValue(MSysConfig.TWOPACK_HANDLE_TRANSLATIONS)); pipoContext.packOut = this; } From 83cfb7fdda71a50c09449560a19a22c278c0929a Mon Sep 17 00:00:00 2001 From: Richard Morales Date: Mon, 5 Aug 2013 18:01:48 -0500 Subject: [PATCH 16/57] IDEMPIERE-1025 Improve translation for custom tables --- .../src/org/compiere/install/Translation.java | 14 +++++++++++++- .../org/compiere/install/TranslationHandler.java | 14 ++++++++++++-- 2 files changed, 25 insertions(+), 3 deletions(-) diff --git a/org.adempiere.ui/src/org/compiere/install/Translation.java b/org.adempiere.ui/src/org/compiere/install/Translation.java index e8bdd4ce2b..e473f165c5 100644 --- a/org.adempiere.ui/src/org/compiere/install/Translation.java +++ b/org.adempiere.ui/src/org/compiere/install/Translation.java @@ -39,6 +39,7 @@ import javax.xml.transform.stream.StreamResult; import org.compiere.Adempiere; import org.compiere.model.MLanguage; +import org.compiere.model.MTable; import org.compiere.model.PO; import org.compiere.util.CLogger; import org.compiere.util.DB; @@ -46,6 +47,7 @@ import org.compiere.util.Env; import org.compiere.util.Language; import org.compiere.util.Login; import org.compiere.util.Msg; +import org.compiere.util.Util; import org.w3c.dom.Document; import org.w3c.dom.Element; @@ -82,6 +84,8 @@ public class Translation public static final String XML_ROW_TAG = "row"; /** XML Row Attribute ID */ public static final String XML_ROW_ATTRIBUTE_ID = "id"; + /** XML Row Attribute UUID */ + public static final String XML_ROW_ATTRIBUTE_UUID = "uuid"; /** XML Row Attribute Translated */ public static final String XML_ROW_ATTRIBUTE_TRANSLATED = "trl"; @@ -165,6 +169,7 @@ public class Translation if (isBaseLanguage) tableName = Base_Table; String keyColumn = Base_Table + "_ID"; + String uuidColumn = MTable.getUUIDColumnName(Base_Table); String[] trlColumns = getTrlColumns (Base_Table); // StringBuffer sql = null; @@ -193,6 +198,7 @@ public class Translation else sql.append("t.IsTranslated,"); sql.append("t.").append(keyColumn); // 2 + sql.append(", o.").append(uuidColumn); // 3 // for (int i = 0; i < trlColumns.length; i++) sql.append(", t.").append(trlColumns[i]) @@ -224,7 +230,13 @@ public class Translation while (rs.next()) { Element row = document.createElement (XML_ROW_TAG); - row.setAttribute(XML_ROW_ATTRIBUTE_ID, String.valueOf(rs.getInt(2))); // KeyColumn + int keyid = rs.getInt(2); + String uuid = rs.getString(3); + if (keyid <= MTable.MAX_OFFICIAL_ID || Util.isEmpty(uuid)) { + row.setAttribute(XML_ROW_ATTRIBUTE_ID, String.valueOf(keyid)); // KeyColumn + } else { + row.setAttribute(XML_ROW_ATTRIBUTE_UUID, String.valueOf(uuid)); // UUIDColumn + } row.setAttribute(XML_ROW_ATTRIBUTE_TRANSLATED, rs.getString(1)); // IsTranslated for (int i = 0; i < trlColumns.length; i++) { diff --git a/org.adempiere.ui/src/org/compiere/install/TranslationHandler.java b/org.adempiere.ui/src/org/compiere/install/TranslationHandler.java index 22870f688c..078cbcd7a9 100644 --- a/org.adempiere.ui/src/org/compiere/install/TranslationHandler.java +++ b/org.adempiere.ui/src/org/compiere/install/TranslationHandler.java @@ -55,6 +55,8 @@ public class TranslationHandler extends DefaultHandler private String m_updateSQL = null; /** Current ID */ private String m_curID = null; + /** Current UUID */ + private String m_curUUID = null; /** Translated Flag */ private String m_trl = null; /** Current ColumnName */ @@ -97,6 +99,7 @@ public class TranslationHandler extends DefaultHandler else if (qName.equals(Translation.XML_ROW_TAG)) { m_curID = attributes.getValue(Translation.XML_ROW_ATTRIBUTE_ID); + m_curUUID = attributes.getValue(Translation.XML_ROW_ATTRIBUTE_UUID); m_trl = attributes.getValue(Translation.XML_ROW_ATTRIBUTE_TRANSLATED); // log.finest( "ID=" + m_curID); m_sql = new StringBuffer(); @@ -154,8 +157,15 @@ public class TranslationHandler extends DefaultHandler m_sql.append(",IsTranslated='Y'"); } // Where section - m_sql.append(" WHERE ") - .append(m_TableName).append("_ID=").append(m_curID); + m_sql.append(" WHERE "); + if (m_curUUID != null) { + StringBuilder sql = new StringBuilder("SELECT ").append(m_TableName).append("_ID").append(" FROM ").append(m_TableName) + .append(" WHERE ").append(m_TableName).append("_UU =?"); + int ID = DB.getSQLValueEx(null, sql.toString(), m_curUUID); + m_sql.append(m_TableName).append("_ID=").append(ID); + } else { + m_sql.append(m_TableName).append("_ID=").append(m_curID); + } if (!m_isBaseLanguage) m_sql.append(" AND AD_Language='").append(m_AD_Language).append("'"); if (m_AD_Client_ID >= 0) From 4ef6a5d1638922758bc5948d8b9a3f3f699b6ac9 Mon Sep 17 00:00:00 2001 From: Heng Sin Low Date: Tue, 6 Aug 2013 07:56:01 +0800 Subject: [PATCH 17/57] IDEMPIERE-1248 Performance Optimization: Eliminate the fire and processing of duplicate event. Fixed problem with window that have no records ( reported by Carlos ). --- .../src/org/adempiere/webui/adwindow/ADTabpanel.java | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADTabpanel.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADTabpanel.java index 29252dc8d7..11dae34209 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADTabpanel.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADTabpanel.java @@ -667,10 +667,14 @@ DataStatusListener, IADTabpanel, IdSpace, IFieldEditorContainer //0 and -1 is same if (col < 0) col = 0; + int currentRow = getGridTab().isSortTab() ? 0 : getGridTab().getCurrentRow(); Execution exec = Executions.getCurrent(); - if (exec.getAttribute(ON_DYNAMIC_DISPLAY_CALL_EVENT_ATTR+"_"+col) == null) + StringBuilder builder = new StringBuilder(ON_DYNAMIC_DISPLAY_CALL_EVENT_ATTR).append("_") + .append(col).append("_").append(currentRow); + String key = builder.toString(); + if (exec.getAttribute(key) == null) { - exec.setAttribute(ON_DYNAMIC_DISPLAY_CALL_EVENT_ATTR+"_"+col, Boolean.TRUE); + exec.setAttribute(key, Boolean.TRUE); Events.sendEvent(ON_DYNAMIC_DISPLAY_CALL_EVENT, this, col); } } From 57169b0322b4f8df4543c88813a3ee7f6cc592c6 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Mon, 5 Aug 2013 18:59:24 -0500 Subject: [PATCH 18/57] IDEMPIERE-1210 Lookup factory not translating table_direct columns / Thanks to Naim Berisha for the tip --- org.adempiere.base/src/org/compiere/model/MLookupFactory.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/org.adempiere.base/src/org/compiere/model/MLookupFactory.java b/org.adempiere.base/src/org/compiere/model/MLookupFactory.java index 32722cefc0..992989a880 100644 --- a/org.adempiere.base/src/org/compiere/model/MLookupFactory.java +++ b/org.adempiere.base/src/org/compiere/model/MLookupFactory.java @@ -783,7 +783,7 @@ public class MLookupFactory private static StringBuilder getDisplayColumn(Language language, String tableName, ArrayList list) { - return getDisplayColumn(language, tableName, list, null); + return getDisplayColumn(language, tableName, list, tableName); } private static StringBuilder getDisplayColumn(Language language, From d1dea0fd02188a5f9057da4d1bc795f9f780b2f8 Mon Sep 17 00:00:00 2001 From: Heng Sin Low Date: Tue, 6 Aug 2013 12:29:19 +0800 Subject: [PATCH 19/57] IDEMPIERE-1248 Performance Optimization: Eliminate the fire and processing of duplicate event. Fixed problem with refresh after process call. --- .../adempiere/webui/adwindow/ADTabpanel.java | 25 +++++++++++- .../adwindow/AbstractADWindowContent.java | 39 ++++++++++++++++--- 2 files changed, 56 insertions(+), 8 deletions(-) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADTabpanel.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADTabpanel.java index 11dae34209..13d97fff56 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADTabpanel.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADTabpanel.java @@ -657,6 +657,25 @@ DataStatusListener, IADTabpanel, IdSpace, IFieldEditorContainer return new Space(); } + /** + * Turn on/off the processing of dynamic display call for current execution cycle. + * The system will ignore duplicate dynamic display request within the same execution cycle, + * this method can be use to alter that. + * @param enable + */ + public void toggleDynamicDisplay(boolean enable) { + Execution exec = Executions.getCurrent(); + int currentRow = getGridTab().isSortTab() ? 0 : getGridTab().getCurrentRow(); + StringBuilder builder = new StringBuilder(ON_DYNAMIC_DISPLAY_CALL_EVENT_ATTR) + .append("_").append(getUuid()) + .append("_").append(0) + .append("_").append(currentRow); + if (enable) + exec.removeAttribute(builder.toString()); + else + exec.setAttribute(builder.toString(), Boolean.TRUE); + } + /** * Validate display properties of fields of current row * @param col @@ -669,8 +688,10 @@ DataStatusListener, IADTabpanel, IdSpace, IFieldEditorContainer col = 0; int currentRow = getGridTab().isSortTab() ? 0 : getGridTab().getCurrentRow(); Execution exec = Executions.getCurrent(); - StringBuilder builder = new StringBuilder(ON_DYNAMIC_DISPLAY_CALL_EVENT_ATTR).append("_") - .append(col).append("_").append(currentRow); + StringBuilder builder = new StringBuilder(ON_DYNAMIC_DISPLAY_CALL_EVENT_ATTR) + .append("_").append(getUuid()) + .append("_").append(col) + .append("_").append(currentRow); String key = builder.toString(); if (exec.getAttribute(key) == null) { diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/AbstractADWindowContent.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/AbstractADWindowContent.java index 5cbbd339c1..1f32bd9541 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/AbstractADWindowContent.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/AbstractADWindowContent.java @@ -1559,20 +1559,47 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements @Override public void onCallback(Boolean result) { - adTabbox.getSelectedGridTab().dataRefreshAll(fireEvent, true); - adTabbox.getSelectedTabpanel().dynamicDisplay(0); - focusToActivePanel(); + afterRefresh(fireEvent); } }); } else { - adTabbox.getSelectedGridTab().dataRefreshAll(fireEvent, true); - adTabbox.getSelectedTabpanel().dynamicDisplay(0); - focusToActivePanel(); + afterRefresh(fireEvent); } } + /** + * @param fireEvent + */ + protected void afterRefresh(final boolean fireEvent) { + IADTabpanel headerTab = adTabbox.getSelectedTabpanel(); + IADTabpanel detailTab = adTabbox.getSelectedDetailADTabpanel(); + if (headerTab instanceof ADTabpanel) + { + ((ADTabpanel) headerTab).toggleDynamicDisplay(false); + } + if (detailTab != null && detailTab instanceof ADTabpanel) + { + ((ADTabpanel) detailTab).toggleDynamicDisplay(false); + } + adTabbox.getSelectedGridTab().dataRefreshAll(fireEvent, true); + if (headerTab instanceof ADTabpanel) + { + ((ADTabpanel) headerTab).toggleDynamicDisplay(true); + } + if (detailTab != null && detailTab instanceof ADTabpanel) + { + ((ADTabpanel) detailTab).toggleDynamicDisplay(true); + } + headerTab.dynamicDisplay(0); + if (detailTab != null) + { + detailTab.dynamicDisplay(0); + } + focusToActivePanel(); + } + /** * @see ToolbarListener#onRefresh() */ From 232649b55ed103ee62bc4a9bacb6c5bfe3a56ed7 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Tue, 6 Aug 2013 13:55:36 -0500 Subject: [PATCH 20/57] Fix minor problems with migration scripts --- .../i1.0c-release/oracle/201307052208_IDEMPIERE-1151.sql | 4 ---- .../i1.0c-release/oracle/201307190835_IDEMPIERE-528.sql | 5 ----- .../i1.0c-release/postgresql/201307052208_IDEMPIERE-1151.sql | 4 ---- .../i1.0c-release/postgresql/201307190835_IDEMPIERE-528.sql | 5 ----- 4 files changed, 18 deletions(-) diff --git a/migration/i1.0c-release/oracle/201307052208_IDEMPIERE-1151.sql b/migration/i1.0c-release/oracle/201307052208_IDEMPIERE-1151.sql index 6e6834f86f..f471d366d9 100644 --- a/migration/i1.0c-release/oracle/201307052208_IDEMPIERE-1151.sql +++ b/migration/i1.0c-release/oracle/201307052208_IDEMPIERE-1151.sql @@ -114,10 +114,6 @@ UPDATE AD_Column SET IsSecure='Y',Updated=TO_DATE('2013-07-05 22:15:16','YYYY-MM UPDATE AD_Column SET IsSecure='Y',Updated=TO_DATE('2013-07-05 22:15:42','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=4771 ; --- Jul 5, 2013 10:20:07 PM COT -UPDATE R_RequestProcessor SET DateLastRun=TO_DATE('2013-07-05 22:20:07','YYYY-MM-DD HH24:MI:SS'), DateNextRun=TO_DATE('2013-07-05 22:35:07','YYYY-MM-DD HH24:MI:SS'),Updated=TO_DATE('2013-07-05 22:20:07','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE R_RequestProcessor_ID=1000003 -; - -- Jul 5, 2013 10:29:14 PM COT UPDATE AD_Column SET IsSecure='Y',Updated=TO_DATE('2013-07-05 22:29:14','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=200972 ; diff --git a/migration/i1.0c-release/oracle/201307190835_IDEMPIERE-528.sql b/migration/i1.0c-release/oracle/201307190835_IDEMPIERE-528.sql index 234241b22c..688629cf58 100644 --- a/migration/i1.0c-release/oracle/201307190835_IDEMPIERE-528.sql +++ b/migration/i1.0c-release/oracle/201307190835_IDEMPIERE-528.sql @@ -474,11 +474,6 @@ UPDATE AD_Field SET SeqNo=60, IsDisplayed='Y', XPosition=1, ColumnSpan=3, NumLin UPDATE AD_Field SET SeqNo=70, IsDisplayed='Y', XPosition=1, ColumnSpan=2,Updated=TO_DATE('2013-07-19 17:12:29','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=201831 ; --- Jul 22, 2013 11:48:27 AM MYT --- IDEMPIERE-1042 Role Data Access -UPDATE AD_SysConfig SET Value='IDEMPIERE-528 Determine Zoom window depending on record',Updated=TO_DATE('2013-07-22 11:48:27','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_SysConfig_ID=50003 -; - -- Jul 22, 2013 11:50:07 AM MYT -- IDEMPIERE-528 Determine Zoom window depending on record INSERT INTO AD_Column (SeqNoSelection,IsSyncDatabase,Version,AD_Table_ID,AD_Column_ID,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,AD_Reference_ID,IsKey,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsUpdateable,ColumnName,Description,Help,Name,IsAllowCopy,Updated,CreatedBy,AD_Org_ID,IsActive,Created,UpdatedBy,IsToolbarButton,IsAlwaysUpdateable,AD_Client_ID,EntityType,IsEncrypted,AD_Element_ID) VALUES (0,'N',1,200066,210660,'Y','N','Y',0,'N',60,'Y',10,'N','N','Y','45deb4e7-a2a4-4aa5-9f32-05c2066e72cd','Y','Name','Alphanumeric identifier of the entity','The name of an entity (record) is used as an default search option in addition to the search key. The name is up to 60 characters in length.','Name','Y',TO_DATE('2013-07-22 11:50:03','YYYY-MM-DD HH24:MI:SS'),100,0,'Y',TO_DATE('2013-07-22 11:50:03','YYYY-MM-DD HH24:MI:SS'),100,'N','N',0,'D','N',469) diff --git a/migration/i1.0c-release/postgresql/201307052208_IDEMPIERE-1151.sql b/migration/i1.0c-release/postgresql/201307052208_IDEMPIERE-1151.sql index 0c95af4b21..9424430a43 100644 --- a/migration/i1.0c-release/postgresql/201307052208_IDEMPIERE-1151.sql +++ b/migration/i1.0c-release/postgresql/201307052208_IDEMPIERE-1151.sql @@ -114,10 +114,6 @@ UPDATE AD_Column SET IsSecure='Y',Updated=TO_TIMESTAMP('2013-07-05 22:15:16','YY UPDATE AD_Column SET IsSecure='Y',Updated=TO_TIMESTAMP('2013-07-05 22:15:42','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=4771 ; --- Jul 5, 2013 10:20:07 PM COT -UPDATE R_RequestProcessor SET DateLastRun=TO_TIMESTAMP('2013-07-05 22:20:07','YYYY-MM-DD HH24:MI:SS'), DateNextRun=TO_TIMESTAMP('2013-07-05 22:35:07','YYYY-MM-DD HH24:MI:SS'),Updated=TO_TIMESTAMP('2013-07-05 22:20:07','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE R_RequestProcessor_ID=1000003 -; - -- Jul 5, 2013 10:29:14 PM COT UPDATE AD_Column SET IsSecure='Y',Updated=TO_TIMESTAMP('2013-07-05 22:29:14','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=200972 ; diff --git a/migration/i1.0c-release/postgresql/201307190835_IDEMPIERE-528.sql b/migration/i1.0c-release/postgresql/201307190835_IDEMPIERE-528.sql index 387a2f7fb9..5983a4bb71 100644 --- a/migration/i1.0c-release/postgresql/201307190835_IDEMPIERE-528.sql +++ b/migration/i1.0c-release/postgresql/201307190835_IDEMPIERE-528.sql @@ -469,11 +469,6 @@ UPDATE AD_Field SET SeqNo=60, IsDisplayed='Y', XPosition=1, ColumnSpan=3, NumLin UPDATE AD_Field SET SeqNo=70, IsDisplayed='Y', XPosition=1, ColumnSpan=2,Updated=TO_TIMESTAMP('2013-07-19 17:12:29','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=201831 ; --- Jul 22, 2013 11:48:27 AM MYT --- IDEMPIERE-1042 Role Data Access -UPDATE AD_SysConfig SET Value='IDEMPIERE-528 Determine Zoom window depending on record',Updated=TO_TIMESTAMP('2013-07-22 11:48:27','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_SysConfig_ID=50003 -; - -- Jul 22, 2013 11:50:07 AM MYT -- IDEMPIERE-528 Determine Zoom window depending on record INSERT INTO AD_Column (SeqNoSelection,IsSyncDatabase,Version,AD_Table_ID,AD_Column_ID,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,AD_Reference_ID,IsKey,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsUpdateable,ColumnName,Description,Help,Name,IsAllowCopy,Updated,CreatedBy,AD_Org_ID,IsActive,Created,UpdatedBy,IsToolbarButton,IsAlwaysUpdateable,AD_Client_ID,EntityType,IsEncrypted,AD_Element_ID) VALUES (0,'N',1,200066,210660,'Y','N','Y',0,'N',60,'Y',10,'N','N','Y','45deb4e7-a2a4-4aa5-9f32-05c2066e72cd','Y','Name','Alphanumeric identifier of the entity','The name of an entity (record) is used as an default search option in addition to the search key. The name is up to 60 characters in length.','Name','Y',TO_TIMESTAMP('2013-07-22 11:50:03','YYYY-MM-DD HH24:MI:SS'),100,0,'Y',TO_TIMESTAMP('2013-07-22 11:50:03','YYYY-MM-DD HH24:MI:SS'),100,'N','N',0,'D','N',469) From 333c7f9a7f78c775365b98456cdac62936d5a920 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Tue, 6 Aug 2013 13:56:11 -0500 Subject: [PATCH 21/57] IDEMPIERE-1138 Broadcast Message Problems --- .../oracle/20130608133825_IDEMPIERE-1138.sql | 17 +++++++++++++++++ .../20130608133825_IDEMPIERE-1138.sql | 17 +++++++++++++++++ .../idempiere/broadcast/BroadcastMsgUtil.java | 6 +++++- .../webui/panel/BroadcastMessageWindow.java | 3 ++- 4 files changed, 41 insertions(+), 2 deletions(-) create mode 100644 migration/i1.0c-release/oracle/20130608133825_IDEMPIERE-1138.sql create mode 100644 migration/i1.0c-release/postgresql/20130608133825_IDEMPIERE-1138.sql diff --git a/migration/i1.0c-release/oracle/20130608133825_IDEMPIERE-1138.sql b/migration/i1.0c-release/oracle/20130608133825_IDEMPIERE-1138.sql new file mode 100644 index 0000000000..6833ad4f74 --- /dev/null +++ b/migration/i1.0c-release/oracle/20130608133825_IDEMPIERE-1138.sql @@ -0,0 +1,17 @@ +-- Aug 6, 2013 1:35:12 PM COT +-- IDEMPIERE-1138 Broadcast Message Problems +UPDATE AD_Column SET AD_Val_Rule_ID=158, IsToolbarButton='N',Updated=TO_DATE('2013-08-06 13:35:12','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=200990 +; + +-- Aug 6, 2013 1:36:09 PM COT +-- IDEMPIERE-1138 Broadcast Message Problems +INSERT INTO AD_Val_Rule (Code,AD_Val_Rule_ID,EntityType,Name,Type,AD_Val_Rule_UU,CreatedBy,UpdatedBy,Updated,Created,IsActive,AD_Org_ID,AD_Client_ID) VALUES ('AD_User.AD_User_ID IN (SELECT AD_User_ID FROM AD_User_Roles WHERE IsActive=''Y'' AND AD_User_Roles.AD_Client_ID=@#AD_Client_ID@)',200052,'D','AD_User of Client','S','db84ffe3-27c1-4a81-85f5-dcb3effecadd',100,100,TO_DATE('2013-08-06 13:36:08','YYYY-MM-DD HH24:MI:SS'),TO_DATE('2013-08-06 13:36:08','YYYY-MM-DD HH24:MI:SS'),'Y',0,0) +; + +-- Aug 6, 2013 1:36:29 PM COT +-- IDEMPIERE-1138 Broadcast Message Problems +UPDATE AD_Column SET AD_Val_Rule_ID=200052, IsToolbarButton='N',Updated=TO_DATE('2013-08-06 13:36:29','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=200991 +; + +SELECT register_migration_script('20130608133825_IDEMPIERE-1138.sql') FROM dual +; diff --git a/migration/i1.0c-release/postgresql/20130608133825_IDEMPIERE-1138.sql b/migration/i1.0c-release/postgresql/20130608133825_IDEMPIERE-1138.sql new file mode 100644 index 0000000000..1e79bb13b5 --- /dev/null +++ b/migration/i1.0c-release/postgresql/20130608133825_IDEMPIERE-1138.sql @@ -0,0 +1,17 @@ +-- Aug 6, 2013 1:35:12 PM COT +-- IDEMPIERE-1138 Broadcast Message Problems +UPDATE AD_Column SET AD_Val_Rule_ID=158, IsToolbarButton='N',Updated=TO_TIMESTAMP('2013-08-06 13:35:12','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=200990 +; + +-- Aug 6, 2013 1:36:09 PM COT +-- IDEMPIERE-1138 Broadcast Message Problems +INSERT INTO AD_Val_Rule (Code,AD_Val_Rule_ID,EntityType,Name,Type,AD_Val_Rule_UU,CreatedBy,UpdatedBy,Updated,Created,IsActive,AD_Org_ID,AD_Client_ID) VALUES ('AD_User.AD_User_ID IN (SELECT AD_User_ID FROM AD_User_Roles WHERE IsActive=''Y'' AND AD_User_Roles.AD_Client_ID=@#AD_Client_ID@)',200052,'D','AD_User of Client','S','db84ffe3-27c1-4a81-85f5-dcb3effecadd',100,100,TO_TIMESTAMP('2013-08-06 13:36:08','YYYY-MM-DD HH24:MI:SS'),TO_TIMESTAMP('2013-08-06 13:36:08','YYYY-MM-DD HH24:MI:SS'),'Y',0,0) +; + +-- Aug 6, 2013 1:36:29 PM COT +-- IDEMPIERE-1138 Broadcast Message Problems +UPDATE AD_Column SET AD_Val_Rule_ID=200052, IsToolbarButton='N',Updated=TO_TIMESTAMP('2013-08-06 13:36:29','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=200991 +; + +SELECT register_migration_script('20130608133825_IDEMPIERE-1138.sql') FROM dual +; diff --git a/org.adempiere.base/src/org/idempiere/broadcast/BroadcastMsgUtil.java b/org.adempiere.base/src/org/idempiere/broadcast/BroadcastMsgUtil.java index e4a3391a2a..ed261907fa 100644 --- a/org.adempiere.base/src/org/idempiere/broadcast/BroadcastMsgUtil.java +++ b/org.adempiere.base/src/org/idempiere/broadcast/BroadcastMsgUtil.java @@ -74,8 +74,12 @@ public class BroadcastMsgUtil int[] userIDs = DB.getIDsEx(null, sql); for (int userID : userIDs) { + MUser user = MUser.get(Env.getCtx(), userID); + if (! user.isActive()) + continue; MNote note = new MNote(Env.getCtx(), 0, trxName); - note.setClientOrg(MUser.get(Env.getCtx(), userID).getAD_Client_ID(), 0); + if (MBroadcastMessage.TARGET_Everybody.equals(mbMessage.getTarget())) + note.setClientOrg(user.getAD_Client_ID(), 0); note.setAD_BroadcastMessage_ID(messageID); note.setAD_User_ID(userID); note.setAD_Message_ID(0); diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/BroadcastMessageWindow.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/BroadcastMessageWindow.java index 4967f392ec..0f0f2ca4bc 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/BroadcastMessageWindow.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/BroadcastMessageWindow.java @@ -182,7 +182,8 @@ public class BroadcastMessageWindow extends Window implements IBroadcastMsgPopup for(int i=0; i Date: Tue, 6 Aug 2013 16:20:59 -0500 Subject: [PATCH 22/57] IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users / based on patch from Juliana Corredor --- db/ddlutils/oracle/views/AD_FIELD_V.sql | 2 +- db/ddlutils/oracle/views/AD_FIELD_VT.sql | 2 +- db/ddlutils/postgresql/views/AD_FIELD_V.sql | 48 +- db/ddlutils/postgresql/views/AD_FIELD_VT.sql | 55 +- .../oracle/20130801160000_IDEMPIERE-1160.sql | 517 ++++++++++++++++++ .../20130801160000_IDEMPIERE-1160.sql | 500 +++++++++++++++++ .../src/org/compiere/model/GridFieldVO.java | 22 +- .../src/org/compiere/model/GridTabVO.java | 27 +- .../src/org/compiere/model/I_AD_Field.java | 9 + .../src/org/compiere/model/I_AD_Role.java | 9 + .../src/org/compiere/model/X_AD_Field.java | 23 +- .../src/org/compiere/model/X_AD_Role.java | 23 +- .../src/org/compiere/util/Ini.java | 7 +- .../src/org/compiere/util/Login.java | 2 +- .../src/org/compiere/acct/AcctViewer.java | 3 +- .../src/org/compiere/apps/Preference.java | 8 - .../org/adempiere/webui/AdempiereWebUI.java | 1 - .../org/adempiere/webui/acct/WAcctViewer.java | 3 +- 18 files changed, 1172 insertions(+), 89 deletions(-) create mode 100644 migration/i1.0c-release/oracle/20130801160000_IDEMPIERE-1160.sql create mode 100644 migration/i1.0c-release/postgresql/20130801160000_IDEMPIERE-1160.sql diff --git a/db/ddlutils/oracle/views/AD_FIELD_V.sql b/db/ddlutils/oracle/views/AD_FIELD_V.sql index a3d519f0ac..6687f82522 100644 --- a/db/ddlutils/oracle/views/AD_FIELD_V.sql +++ b/db/ddlutils/oracle/views/AD_FIELD_V.sql @@ -24,7 +24,7 @@ CREATE OR REPLACE VIEW AD_FIELD_V AS f.seqnogrid, c.seqnoselection, f.xposition, f.columnspan, f.numlines, COALESCE(f.istoolbarbutton , c.istoolbarbutton ) As istoolbarbutton, - c.FormatPattern + c.FormatPattern, f.isadvancedfield FROM AD_FIELD f INNER JOIN AD_TAB t ON (f.AD_Tab_ID = t.AD_Tab_ID) LEFT OUTER JOIN AD_FIELDGROUP fg ON (f.AD_FieldGroup_ID = fg.AD_FieldGroup_ID) diff --git a/db/ddlutils/oracle/views/AD_FIELD_VT.sql b/db/ddlutils/oracle/views/AD_FIELD_VT.sql index 078ea01e23..49835e76c7 100644 --- a/db/ddlutils/oracle/views/AD_FIELD_VT.sql +++ b/db/ddlutils/oracle/views/AD_FIELD_VT.sql @@ -23,7 +23,7 @@ CREATE OR REPLACE VIEW AD_FIELD_VT AS f.seqnogrid, c.seqnoselection, f.xposition, f.columnspan, f.numlines, COALESCE(f.istoolbarbutton , c.istoolbarbutton ) As istoolbarbutton, - c.FormatPattern + c.FormatPattern, f.isadvancedfield FROM AD_FIELD f INNER JOIN AD_FIELD_TRL trl ON (f.AD_Field_ID = trl.AD_Field_ID) INNER JOIN AD_TAB t ON (f.AD_Tab_ID = t.AD_Tab_ID) diff --git a/db/ddlutils/postgresql/views/AD_FIELD_V.sql b/db/ddlutils/postgresql/views/AD_FIELD_V.sql index 897aa1bdaa..1978fc8eaf 100644 --- a/db/ddlutils/postgresql/views/AD_FIELD_V.sql +++ b/db/ddlutils/postgresql/views/AD_FIELD_V.sql @@ -1,30 +1,26 @@ -CREATE OR REPLACE VIEW ad_field_v AS - SELECT t.ad_window_id, f.ad_tab_id, f.ad_field_id, tbl.ad_table_id, f.ad_column_id, - f.name, f.description, f.help, f.isdisplayed, f.displaylogic, f.displaylength, f.seqno, - f.sortno, f.issameline, f.isheading, f.isfieldonly, f.isreadonly, f.isencrypted AS isencryptedfield, - f.obscuretype, c.columnname, c.columnsql, c.fieldlength, c.vformat, - COALESCE(f.defaultvalue, c.defaultvalue) AS defaultvalue, c.iskey, c.isparent, +CREATE OR REPLACE VIEW adempiere.ad_field_v AS + SELECT t.ad_window_id, f.ad_tab_id, f.ad_field_id, tbl.ad_table_id, f.ad_column_id, f.name, f.description, + f.help, f.isdisplayed, f.displaylogic, f.displaylength, f.seqno, f.sortno, f.issameline, f.isheading, + f.isfieldonly, f.isreadonly, f.isencrypted AS isencryptedfield, f.obscuretype, c.columnname, c.columnsql, + c.fieldlength, c.vformat, COALESCE(f.defaultvalue, c.defaultvalue) AS defaultvalue, c.iskey, c.isparent, COALESCE(f.ismandatory, c.ismandatory) AS ismandatory, c.isidentifier, c.istranslated, COALESCE(f.ad_reference_value_id, c.ad_reference_value_id) AS ad_reference_value_id, c.callout, COALESCE(f.ad_reference_id, c.ad_reference_id) AS ad_reference_id, COALESCE(f.ad_val_rule_id, c.ad_val_rule_id) AS ad_val_rule_id, c.ad_process_id, - COALESCE(f.Isalwaysupdateable , C.Isalwaysupdateable) As Isalwaysupdateable, - COALESCE(f.Readonlylogic, c.Readonlylogic ) As Readonlylogic, - COALESCE(f.Mandatorylogic , C.Mandatorylogic) As Mandatorylogic, - COALESCE(f.isupdateable, c.isupdateable) AS isupdateable, - c.isencrypted AS isencryptedcolumn, c.isselectioncolumn, tbl.tablename, c.valuemin, c.valuemax, - fg.name AS fieldgroup, vr.code AS validationcode, f.included_tab_id, fg.fieldgrouptype, fg.iscollapsedbydefault, - COALESCE(f.infofactoryclass, c.infofactoryclass) AS infofactoryclass, c.isautocomplete, - COALESCE(f.IsAllowCopy, c.IsAllowCopy) AS IsAllowCopy, - f.isdisplayedgrid, - f.seqnogrid, - c.seqnoselection, f.xposition, f.columnspan, f.numlines, - COALESCE(f.istoolbarbutton , c.istoolbarbutton ) As istoolbarbutton, - c.FormatPattern - FROM ad_field f - JOIN ad_tab t ON f.ad_tab_id = t.ad_tab_id - LEFT JOIN ad_fieldgroup fg ON f.ad_fieldgroup_id = fg.ad_fieldgroup_id - LEFT JOIN ad_column c ON f.ad_column_id = c.ad_column_id - JOIN ad_table tbl ON c.ad_table_id = tbl.ad_table_id - LEFT JOIN ad_val_rule vr ON vr.ad_val_rule_id = COALESCE(f.ad_val_rule_id, c.ad_val_rule_id) - WHERE f.isactive = 'Y'::bpchar AND c.isactive = 'Y'::bpchar; + COALESCE(f.isalwaysupdateable, c.isalwaysupdateable) AS isalwaysupdateable, + COALESCE(f.readonlylogic, c.readonlylogic) AS readonlylogic, + COALESCE(f.mandatorylogic, c.mandatorylogic) AS mandatorylogic, + COALESCE(f.isupdateable, c.isupdateable) AS isupdateable, c.isencrypted AS isencryptedcolumn, + c.isselectioncolumn, tbl.tablename, c.valuemin, c.valuemax, fg.name AS fieldgroup, + vr.code AS validationcode, f.included_tab_id, fg.fieldgrouptype, fg.iscollapsedbydefault, + COALESCE(f.infofactoryclass, c.infofactoryclass) AS infofactoryclass, c.isautocomplete, + COALESCE(f.isallowcopy, c.isallowcopy) AS isallowcopy, f.isdisplayedgrid, f.seqnogrid, c.seqnoselection, + f.xposition, f.columnspan, f.numlines, COALESCE(f.istoolbarbutton, c.istoolbarbutton) AS istoolbarbutton, + c.formatpattern, f.isadvancedfield + FROM adempiere.ad_field f + JOIN adempiere.ad_tab t ON f.ad_tab_id = t.ad_tab_id + LEFT JOIN adempiere.ad_fieldgroup fg ON f.ad_fieldgroup_id = fg.ad_fieldgroup_id + LEFT JOIN adempiere.ad_column c ON f.ad_column_id = c.ad_column_id + JOIN adempiere.ad_table tbl ON c.ad_table_id = tbl.ad_table_id + LEFT JOIN adempiere.ad_val_rule vr ON vr.ad_val_rule_id = COALESCE(f.ad_val_rule_id, c.ad_val_rule_id) + WHERE f.isactive = 'Y'::bpchar AND c.isactive = 'Y'::bpchar; \ No newline at end of file diff --git a/db/ddlutils/postgresql/views/AD_FIELD_VT.sql b/db/ddlutils/postgresql/views/AD_FIELD_VT.sql index 9e0d1fd25f..284b997c8f 100644 --- a/db/ddlutils/postgresql/views/AD_FIELD_VT.sql +++ b/db/ddlutils/postgresql/views/AD_FIELD_VT.sql @@ -1,28 +1,29 @@ -CREATE OR REPLACE VIEW ad_field_vt AS - SELECT trl.ad_language, t.ad_window_id, f.ad_tab_id, f.ad_field_id, tbl.ad_table_id, f.ad_column_id, trl.name, trl.description, - trl.help, f.isdisplayed, f.displaylogic, f.displaylength, f.seqno, f.sortno, f.issameline, f.isheading, f.isfieldonly, f.isreadonly, - f.isencrypted AS isencryptedfield, f.obscuretype, c.columnname, c.columnsql, c.fieldlength, c.vformat, COALESCE(f.defaultvalue, c.defaultvalue) AS defaultvalue, - c.iskey, c.isparent, COALESCE(f.ismandatory, c.ismandatory) AS ismandatory, c.isidentifier, c.istranslated, - COALESCE(f.ad_reference_value_id, c.ad_reference_value_id) AS ad_reference_value_id, c.callout, COALESCE(f.ad_reference_id, c.ad_reference_id) AS ad_reference_id, - COALESCE(f.ad_val_rule_id,c.ad_val_rule_id) AS ad_val_rule_id, c.ad_process_id, - COALESCE(f.Isalwaysupdateable,C.Isalwaysupdateable) As Isalwaysupdateable, - COALESCE(f.Readonlylogic,c.Readonlylogic) As Readonlylogic, - COALESCE(f.Mandatorylogic , C.Mandatorylogic) As Mandatorylogic, - COALESCE(f.isupdateable, c.isupdateable) AS isupdateable, - c.isencrypted AS isencryptedcolumn, c.isselectioncolumn, tbl.tablename, c.valuemin, c.valuemax, fgt.name AS fieldgroup, vr.code AS validationcode, - f.included_tab_id, fg.fieldgrouptype, fg.iscollapsedbydefault, COALESCE(f.infofactoryclass, c.infofactoryclass) AS infofactoryclass, c.isautocomplete, - COALESCE(f.IsAllowCopy, c.IsAllowCopy) AS IsAllowCopy, - f.isdisplayedgrid, - f.seqnogrid, - c.seqnoselection, f.xposition, f.columnspan, f.numlines, - COALESCE(f.istoolbarbutton , c.istoolbarbutton ) As istoolbarbutton, - c.FormatPattern - FROM ad_field f - JOIN ad_field_trl trl ON f.ad_field_id = trl.ad_field_id - JOIN ad_tab t ON f.ad_tab_id = t.ad_tab_id - LEFT JOIN ad_fieldgroup fg ON f.ad_fieldgroup_id = fg.ad_fieldgroup_id - LEFT JOIN ad_fieldgroup_trl fgt ON f.ad_fieldgroup_id = fgt.ad_fieldgroup_id AND trl.ad_language::text = fgt.ad_language::text - LEFT JOIN ad_column c ON f.ad_column_id = c.ad_column_id - JOIN ad_table tbl ON c.ad_table_id = tbl.ad_table_id - LEFT JOIN ad_val_rule vr ON vr.ad_val_rule_id = COALESCE(f.ad_val_rule_id, c.ad_val_rule_id) +CREATE OR REPLACE VIEW adempiere.ad_field_vt AS + SELECT trl.ad_language, t.ad_window_id, f.ad_tab_id, f.ad_field_id, tbl.ad_table_id, f.ad_column_id, + trl.name, trl.description, trl.help, f.isdisplayed, f.displaylogic, f.displaylength, f.seqno, f.sortno, + f.issameline, f.isheading, f.isfieldonly, f.isreadonly, f.isencrypted AS isencryptedfield, f.obscuretype, +c.columnname, c.columnsql, c.fieldlength, c.vformat, +COALESCE(f.defaultvalue, c.defaultvalue) AS defaultvalue, c.iskey, c.isparent, +COALESCE(f.ismandatory, c.ismandatory) AS ismandatory, c.isidentifier, c.istranslated, +COALESCE(f.ad_reference_value_id, c.ad_reference_value_id) AS ad_reference_value_id, c.callout, +COALESCE(f.ad_reference_id, c.ad_reference_id) AS ad_reference_id, +COALESCE(f.ad_val_rule_id, c.ad_val_rule_id) AS ad_val_rule_id, c.ad_process_id, +COALESCE(f.isalwaysupdateable, c.isalwaysupdateable) AS isalwaysupdateable, +COALESCE(f.readonlylogic, c.readonlylogic) AS readonlylogic, +COALESCE(f.mandatorylogic, c.mandatorylogic) AS mandatorylogic, +COALESCE(f.isupdateable, c.isupdateable) AS isupdateable, c.isencrypted AS isencryptedcolumn, +c.isselectioncolumn, tbl.tablename, c.valuemin, c.valuemax, fgt.name AS fieldgroup, vr.code AS validationcode, +f.included_tab_id, fg.fieldgrouptype, fg.iscollapsedbydefault, +COALESCE(f.infofactoryclass, c.infofactoryclass) AS infofactoryclass, c.isautocomplete, +COALESCE(f.isallowcopy, c.isallowcopy) AS isallowcopy, f.isdisplayedgrid, f.seqnogrid, c.seqnoselection, +f.xposition, f.columnspan, f.numlines, COALESCE(f.istoolbarbutton, c.istoolbarbutton) AS istoolbarbutton, +c.formatpattern, f.isadvancedfield + FROM adempiere.ad_field f + JOIN adempiere.ad_field_trl trl ON f.ad_field_id = trl.ad_field_id + JOIN adempiere.ad_tab t ON f.ad_tab_id = t.ad_tab_id + LEFT JOIN adempiere.ad_fieldgroup fg ON f.ad_fieldgroup_id = fg.ad_fieldgroup_id + LEFT JOIN adempiere.ad_fieldgroup_trl fgt ON f.ad_fieldgroup_id = fgt.ad_fieldgroup_id AND trl.ad_language::text = fgt.ad_language::text + LEFT JOIN adempiere.ad_column c ON f.ad_column_id = c.ad_column_id + JOIN adempiere.ad_table tbl ON c.ad_table_id = tbl.ad_table_id + LEFT JOIN adempiere.ad_val_rule vr ON vr.ad_val_rule_id = COALESCE(f.ad_val_rule_id, c.ad_val_rule_id) WHERE f.isactive = 'Y'::bpchar AND c.isactive = 'Y'::bpchar; diff --git a/migration/i1.0c-release/oracle/20130801160000_IDEMPIERE-1160.sql b/migration/i1.0c-release/oracle/20130801160000_IDEMPIERE-1160.sql new file mode 100644 index 0000000000..d684f355ef --- /dev/null +++ b/migration/i1.0c-release/oracle/20130801160000_IDEMPIERE-1160.sql @@ -0,0 +1,517 @@ +-- Jul 31, 2013 7:16:30 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +INSERT INTO AD_Element (ColumnName,AD_Element_ID,Name,PrintName,AD_Element_UU,Created,Updated,CreatedBy,AD_Org_ID,UpdatedBy,IsActive,AD_Client_ID,EntityType) VALUES ('IsAdvancedField',202574,'Advanced Field','Advanced Field','1ab899a3-278e-418a-b84e-fe5fc3f263b6',TO_DATE('2013-07-31 19:16:29','YYYY-MM-DD HH24:MI:SS'),TO_DATE('2013-07-31 19:16:29','YYYY-MM-DD HH24:MI:SS'),100,0,100,'Y',0,'D') +; + +-- Jul 31, 2013 7:16:30 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +INSERT INTO AD_Element_Trl (AD_Language,AD_Element_ID, Help,PO_Description,PO_Help,Name,Description,PrintName,PO_Name,PO_PrintName, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Element_Trl_UU ) SELECT l.AD_Language,t.AD_Element_ID, t.Help,t.PO_Description,t.PO_Help,t.Name,t.Description,t.PrintName,t.PO_Name,t.PO_PrintName, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Element t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Element_ID=202574 AND NOT EXISTS (SELECT * FROM AD_Element_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Element_ID=t.AD_Element_ID) +; + +-- Jul 31, 2013 7:17:38 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +INSERT INTO AD_Column (SeqNoSelection,IsSyncDatabase,Version,AD_Table_ID,AD_Column_ID,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,AD_Reference_ID,IsKey,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsUpdateable,ColumnName,DefaultValue,Name,IsAllowCopy,Updated,CreatedBy,AD_Org_ID,IsActive,Created,UpdatedBy,IsToolbarButton,IsAlwaysUpdateable,AD_Client_ID,EntityType,IsEncrypted,AD_Element_ID,IsSecure) VALUES (0,'N',0,107,210679,'N','N','N',0,'N',1,'N',20,'N','N','Y','45c86144-67dc-487b-a761-54774dd34388','Y','IsAdvancedField','N','Advanced Field','Y',TO_DATE('2013-07-31 19:17:38','YYYY-MM-DD HH24:MI:SS'),100,0,'Y',TO_DATE('2013-07-31 19:17:38','YYYY-MM-DD HH24:MI:SS'),100,'N','N',0,'D','N',202574,'N') +; + +-- Jul 31, 2013 7:17:38 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Column_Trl_UU ) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=210679 AND NOT EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Column_ID=t.AD_Column_ID) +; + +-- Jul 31, 2013 7:17:51 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +ALTER TABLE AD_Field ADD IsAdvancedField CHAR(1) DEFAULT 'N' CHECK (IsAdvancedField IN ('Y','N')) +; + +-- Jul 31, 2013 7:18:37 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +INSERT INTO AD_Field (IsEncrypted,AD_Tab_ID,DisplayLength,IsSameLine,IsHeading,AD_Column_ID,SeqNo,IsCentrallyMaintained,AD_Field_ID,IsReadOnly,EntityType,Name,AD_Field_UU,IsDisplayed,IsFieldOnly,UpdatedBy,AD_Org_ID,Created,CreatedBy,Updated,IsActive,XPosition,AD_Client_ID,ColumnSpan) VALUES ('N',107,1,'N','N',210679,400,'Y',202362,'N','D','Advanced Field','153209a5-5587-49dc-b587-51f236ebfd53','Y','N',100,0,TO_DATE('2013-07-31 19:18:36','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2013-07-31 19:18:36','YYYY-MM-DD HH24:MI:SS'),'Y',2,0,2) +; + +-- Jul 31, 2013 7:18:37 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +INSERT INTO AD_Field_Trl (AD_Language,AD_Field_ID, Help,Description,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Field_Trl_UU ) SELECT l.AD_Language,t.AD_Field_ID, t.Help,t.Description,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Field t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Field_ID=202362 AND NOT EXISTS (SELECT * FROM AD_Field_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Field_ID=t.AD_Field_ID) +; + +-- Jul 31, 2013 7:19:10 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=240, IsDisplayed='Y', XPosition=5,Updated=TO_DATE('2013-07-31 19:19:10','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=202362 +; + +-- Jul 31, 2013 7:19:10 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=250,Updated=TO_DATE('2013-07-31 19:19:10','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200350 +; + +-- Jul 31, 2013 7:19:10 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=260,Updated=TO_DATE('2013-07-31 19:19:10','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200348 +; + +-- Jul 31, 2013 7:19:10 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=270,Updated=TO_DATE('2013-07-31 19:19:10','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200349 +; + +-- Jul 31, 2013 7:19:10 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=280,Updated=TO_DATE('2013-07-31 19:19:10','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=13425 +; + +-- Jul 31, 2013 7:19:10 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=290,Updated=TO_DATE('2013-07-31 19:19:10','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200837 +; + +-- Jul 31, 2013 7:19:10 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=300,Updated=TO_DATE('2013-07-31 19:19:10','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=54402 +; + +-- Jul 31, 2013 7:19:10 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=310,Updated=TO_DATE('2013-07-31 19:19:10','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=54401 +; + +-- Jul 31, 2013 7:19:10 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=320,Updated=TO_DATE('2013-07-31 19:19:10','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200838 +; + +-- Jul 31, 2013 7:19:10 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=330,Updated=TO_DATE('2013-07-31 19:19:10','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200834 +; + +-- Jul 31, 2013 7:19:10 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=340,Updated=TO_DATE('2013-07-31 19:19:10','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=13424 +; + +-- Jul 31, 2013 7:19:10 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=350,Updated=TO_DATE('2013-07-31 19:19:10','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=62468 +; + +-- Jul 31, 2013 7:19:10 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=360,Updated=TO_DATE('2013-07-31 19:19:10','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=53280 +; + +-- Jul 31, 2013 7:19:10 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=370,Updated=TO_DATE('2013-07-31 19:19:10','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200836 +; + +-- Jul 31, 2013 7:19:10 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=380,Updated=TO_DATE('2013-07-31 19:19:10','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200835 +; + +-- Jul 31, 2013 7:19:10 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=390,Updated=TO_DATE('2013-07-31 19:19:10','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=136 +; + +-- Jul 31, 2013 7:19:10 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=400,Updated=TO_DATE('2013-07-31 19:19:10','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=139 +; + +-- Jul 31, 2013 7:20:24 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +INSERT INTO AD_Element (ColumnName,AD_Element_ID,Name,PrintName,AD_Element_UU,Created,Updated,CreatedBy,AD_Org_ID,UpdatedBy,IsActive,AD_Client_ID,EntityType) VALUES ('IsAccessAdvanced',202575,'Access Advanced ','Access Advanced ','2977102f-1399-4824-ba24-2b0c902aed64',TO_DATE('2013-07-31 19:20:23','YYYY-MM-DD HH24:MI:SS'),TO_DATE('2013-07-31 19:20:23','YYYY-MM-DD HH24:MI:SS'),100,0,100,'Y',0,'D') +; + +-- Jul 31, 2013 7:20:24 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +INSERT INTO AD_Element_Trl (AD_Language,AD_Element_ID, Help,PO_Description,PO_Help,Name,Description,PrintName,PO_Name,PO_PrintName, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Element_Trl_UU ) SELECT l.AD_Language,t.AD_Element_ID, t.Help,t.PO_Description,t.PO_Help,t.Name,t.Description,t.PrintName,t.PO_Name,t.PO_PrintName, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Element t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Element_ID=202575 AND NOT EXISTS (SELECT * FROM AD_Element_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Element_ID=t.AD_Element_ID) +; + +-- Jul 31, 2013 7:22:04 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +INSERT INTO AD_Column (SeqNoSelection,IsSyncDatabase,Version,AD_Table_ID,AD_Column_ID,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,AD_Reference_ID,IsKey,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsUpdateable,ColumnName,DefaultValue,Name,IsAllowCopy,Updated,CreatedBy,AD_Org_ID,IsActive,Created,UpdatedBy,IsToolbarButton,IsAlwaysUpdateable,AD_Client_ID,EntityType,IsEncrypted,AD_Element_ID,IsSecure) VALUES (0,'N',0,156,210680,'N','N','N',0,'N',1,'N',20,'N','N','Y','1827e3d1-f438-4d13-8162-1288ab34d2da','Y','IsAccessAdvanced','Y','Access Advanced ','Y',TO_DATE('2013-07-31 19:22:03','YYYY-MM-DD HH24:MI:SS'),100,0,'Y',TO_DATE('2013-07-31 19:22:03','YYYY-MM-DD HH24:MI:SS'),100,'N','N',0,'D','N',202575,'N') +; + +-- Jul 31, 2013 7:22:04 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Column_Trl_UU ) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=210680 AND NOT EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Column_ID=t.AD_Column_ID) +; + +-- Jul 31, 2013 7:22:19 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +ALTER TABLE AD_Role ADD IsAccessAdvanced CHAR(1) DEFAULT 'N' CHECK (IsAccessAdvanced IN ('Y','N')) +; + + +-- Jul 31, 2013 7:23:25 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +INSERT INTO AD_Field (IsEncrypted,AD_Tab_ID,DisplayLength,IsSameLine,IsHeading,AD_Column_ID,SeqNo,IsCentrallyMaintained,AD_Field_ID,IsReadOnly,EntityType,Name,AD_Field_UU,IsDisplayed,IsFieldOnly,UpdatedBy,AD_Org_ID,Created,CreatedBy,Updated,IsActive,XPosition,AD_Client_ID,ColumnSpan) VALUES ('N',119,1,'N','N',210680,480,'Y',202366,'N','D','Access Advanced ','f1ae60d9-680d-4764-a54e-2de52d65310e','Y','N',100,0,TO_DATE('2013-07-31 19:23:25','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2013-07-31 19:23:25','YYYY-MM-DD HH24:MI:SS'),'Y',2,0,2) +; + +-- Jul 31, 2013 7:23:25 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +INSERT INTO AD_Field_Trl (AD_Language,AD_Field_ID, Help,Description,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Field_Trl_UU ) SELECT l.AD_Language,t.AD_Field_ID, t.Help,t.Description,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Field t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Field_ID=202366 AND NOT EXISTS (SELECT * FROM AD_Field_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Field_ID=t.AD_Field_ID) +; + +-- Aug 1, 2013 3:19:25 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET DisplayLogic='@IsMasterRole@=N',Updated=TO_DATE('2013-08-01 15:19:25','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=202366 +; + +-- Aug 6, 2013 2:44:19 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=200, IsDisplayed='Y', XPosition=5,Updated=TO_DATE('2013-08-06 14:44:19','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=202362 +; + +-- Aug 6, 2013 2:44:19 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=210,Updated=TO_DATE('2013-08-06 14:44:19','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=142 +; + +-- Aug 6, 2013 2:44:19 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=220,Updated=TO_DATE('2013-08-06 14:44:19','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=8343 +; + +-- Aug 6, 2013 2:44:19 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=230,Updated=TO_DATE('2013-08-06 14:44:19','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=140 +; + +-- Aug 6, 2013 2:44:19 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=240,Updated=TO_DATE('2013-08-06 14:44:19','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=141 +; + +-- Aug 6, 2013 2:45:23 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=280, IsDisplayed='Y', XPosition=2,Updated=TO_DATE('2013-08-06 14:45:23','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=202366 +; + +-- Aug 6, 2013 2:45:23 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=290, IsDisplayed='Y', XPosition=5,Updated=TO_DATE('2013-08-06 14:45:23','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200071 +; + +-- Aug 6, 2013 2:45:23 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=300,Updated=TO_DATE('2013-08-06 14:45:23','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50168 +; + +-- Aug 6, 2013 2:45:23 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=310,Updated=TO_DATE('2013-08-06 14:45:23','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50178 +; + +-- Aug 6, 2013 2:45:24 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=320,Updated=TO_DATE('2013-08-06 14:45:24','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50176 +; + +-- Aug 6, 2013 2:45:24 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=330,Updated=TO_DATE('2013-08-06 14:45:24','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50170 +; + +-- Aug 6, 2013 2:45:24 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=340,Updated=TO_DATE('2013-08-06 14:45:24','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50174 +; + +-- Aug 6, 2013 2:45:24 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=350,Updated=TO_DATE('2013-08-06 14:45:24','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50173 +; + +-- Aug 6, 2013 2:45:24 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=360,Updated=TO_DATE('2013-08-06 14:45:24','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50172 +; + +-- Aug 6, 2013 2:45:24 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=370,Updated=TO_DATE('2013-08-06 14:45:24','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50175 +; + +-- Aug 6, 2013 2:45:24 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=380,Updated=TO_DATE('2013-08-06 14:45:24','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50169 +; + +-- Aug 6, 2013 2:45:24 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=390,Updated=TO_DATE('2013-08-06 14:45:24','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50177 +; + +update ad_tab set isadvancedtab='N' where isadvancedtab='Y' +; + +CREATE OR REPLACE VIEW AD_FIELD_V AS + SELECT t.AD_Window_ID, f.AD_Tab_ID, f.AD_Field_ID, tbl.AD_Table_ID, f.AD_Column_ID, + f.NAME, f.Description, f.Help, f.IsDisplayed, f.DisplayLogic, f.DisplayLength, + f.SeqNo, f.SortNo, f.IsSameLine, f.IsHeading, f.IsFieldOnly, f.IsReadOnly, + f.IsEncrypted AS IsEncryptedField, f.ObscureType, + c.ColumnName, c.ColumnSQL, c.FieldLength, c.VFormat, + COALESCE(f.DefaultValue, c.DefaultValue) AS DefaultValue, + c.IsKey, c.IsParent, + COALESCE(f.IsMandatory, c.IsMandatory) AS IsMandatory, + c.IsIdentifier, c.IsTranslated, COALESCE(f.AD_Reference_Value_ID, c.AD_Reference_Value_ID) AS AD_Reference_Value_ID, + c.Callout, COALESCE(f.AD_Reference_ID, c.AD_Reference_ID) AS AD_Reference_ID, + COALESCE(f.AD_Val_Rule_ID, c.AD_Val_Rule_ID) AS AD_Val_Rule_ID, c.AD_Process_ID, + COALESCE(f.Isalwaysupdateable , C.Isalwaysupdateable) As Isalwaysupdateable, + COALESCE(f.Readonlylogic, c.Readonlylogic ) As Readonlylogic, + COALESCE(f.Mandatorylogic , C.Mandatorylogic) As Mandatorylogic, + COALESCE(f.isupdateable, c.isupdateable) AS isupdateable, c.IsEncrypted AS IsEncryptedColumn, + c.IsSelectionColumn, + tbl.TableName, c.ValueMin, c.ValueMax, + fg.NAME AS FieldGroup, vr.Code AS ValidationCode, + f.Included_Tab_ID, fg.FieldGroupType, fg.IsCollapsedByDefault, + COALESCE(f.InfoFactoryClass, c.InfoFactoryClass) as InfoFactoryClass, + c.IsAutocomplete, COALESCE(f.IsAllowCopy, c.IsAllowCopy) AS IsAllowCopy, + f.isdisplayedgrid, + f.seqnogrid, + c.seqnoselection, f.xposition, f.columnspan, f.numlines, + COALESCE(f.istoolbarbutton , c.istoolbarbutton ) As istoolbarbutton, + c.FormatPattern, f.isadvancedfield +FROM AD_FIELD f + INNER JOIN AD_TAB t ON (f.AD_Tab_ID = t.AD_Tab_ID) + LEFT OUTER JOIN AD_FIELDGROUP fg ON (f.AD_FieldGroup_ID = fg.AD_FieldGroup_ID) + LEFT OUTER JOIN AD_COLUMN c ON (f.AD_Column_ID = c.AD_Column_ID) + INNER JOIN AD_TABLE tbl ON (c.AD_Table_ID = tbl.AD_Table_ID) + LEFT OUTER JOIN AD_VAL_RULE vr ON (vr.AD_Val_Rule_ID = COALESCE(f.AD_Val_Rule_ID, c.AD_Val_Rule_ID)) +WHERE f.IsActive = 'Y' + AND c.IsActive = 'Y' +; + +CREATE OR REPLACE VIEW AD_FIELD_VT AS + SELECT trl.AD_LANGUAGE, t.AD_Window_ID, f.AD_Tab_ID, f.AD_Field_ID, tbl.AD_Table_ID, f.AD_Column_ID, + trl.NAME, trl.Description, trl.Help, f.IsDisplayed, f.DisplayLogic, f.DisplayLength, + f.SeqNo, f.SortNo, f.IsSameLine, f.IsHeading, f.IsFieldOnly, f.IsReadOnly, + f.IsEncrypted AS IsEncryptedField, f.ObscureType, + c.ColumnName, c.ColumnSQL, c.FieldLength, c.VFormat, + COALESCE(f.DefaultValue, c.DefaultValue) AS DefaultValue, + c.IsKey, c.IsParent, + COALESCE(f.IsMandatory, c.IsMandatory) AS IsMandatory, + c.IsIdentifier, c.IsTranslated, COALESCE(f.AD_Reference_Value_ID, c.AD_Reference_Value_ID) AS AD_Reference_Value_ID, + c.Callout, COALESCE(f.AD_Reference_ID, c.AD_Reference_ID) AS AD_Reference_ID, + COALESCE(f.AD_Val_Rule_ID, c.AD_Val_Rule_ID) as AD_Val_Rule_ID, c.AD_Process_ID, + COALESCE(f.Isalwaysupdateable , C.Isalwaysupdateable) As Isalwaysupdateable, + COALESCE(f.Readonlylogic, c.Readonlylogic ) As Readonlylogic, + COALESCE(f.Mandatorylogic , C.Mandatorylogic) As Mandatorylogic, + COALESCE(f.isupdateable, c.isupdateable) AS isupdateable, c.IsEncrypted AS IsEncryptedColumn, c.IsSelectionColumn, + tbl.TableName, c.ValueMin, c.ValueMax, + fgt.NAME AS FieldGroup, vr.Code AS ValidationCode, + f.Included_Tab_ID, fg.FieldGroupType, fg.IsCollapsedByDefault, + COALESCE(f.InfoFactoryClass, c.InfoFactoryClass) as InfoFactoryClass, + c.IsAutocomplete, COALESCE(f.IsAllowCopy, c.IsAllowCopy) AS IsAllowCopy, + f.isdisplayedgrid, + f.seqnogrid, + c.seqnoselection, f.xposition, f.columnspan, f.numlines, + COALESCE(f.istoolbarbutton , c.istoolbarbutton ) As istoolbarbutton, + c.FormatPattern, f.isadvancedfield + FROM AD_FIELD f + INNER JOIN AD_FIELD_TRL trl ON (f.AD_Field_ID = trl.AD_Field_ID) + INNER JOIN AD_TAB t ON (f.AD_Tab_ID = t.AD_Tab_ID) + LEFT OUTER JOIN AD_FIELDGROUP fg ON (f.AD_FieldGroup_ID = fg.AD_FieldGroup_ID) + LEFT OUTER JOIN AD_FIELDGROUP_TRL fgt ON + (f.AD_FieldGroup_ID = fgt.AD_FieldGroup_ID AND trl.AD_LANGUAGE=fgt.AD_LANGUAGE) + LEFT OUTER JOIN AD_COLUMN c ON (f.AD_Column_ID = c.AD_Column_ID) + INNER JOIN AD_TABLE tbl ON (c.AD_Table_ID = tbl.AD_Table_ID) + LEFT OUTER JOIN AD_VAL_RULE vr ON (vr.AD_Val_Rule_ID=COALESCE(f.AD_Val_Rule_ID, c.AD_Val_Rule_ID)) + WHERE f.IsActive = 'Y' + AND c.IsActive = 'Y' +; + +-- Aug 6, 2013 2:52:33 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Role SET IsAccessAdvanced='Y',Updated=TO_DATE('2013-08-06 14:52:33','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Role_ID IN (0,102) +; + +-- Aug 6, 2013 3:23:57 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET IsAdvancedField='Y',Updated=TO_DATE('2013-08-06 15:23:57','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=10318 +; + +-- Aug 6, 2013 3:24:26 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET IsAdvancedField='Y',Updated=TO_DATE('2013-08-06 15:24:26','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=11024 +; + +-- Aug 6, 2013 3:24:51 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET IsAdvancedField='Y',Updated=TO_DATE('2013-08-06 15:24:51','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=54238 +; + +-- Aug 6, 2013 3:25:22 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET IsAdvancedField='Y',Updated=TO_DATE('2013-08-06 15:25:22','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=54680 +; + +-- Aug 6, 2013 3:25:56 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET IsAdvancedField='Y',Updated=TO_DATE('2013-08-06 15:25:56','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200948 +; + +-- Aug 6, 2013 3:26:01 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET IsAdvancedField='Y',Updated=TO_DATE('2013-08-06 15:26:01','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200949 +; + +-- Aug 6, 2013 3:26:43 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET IsAdvancedField='Y',Updated=TO_DATE('2013-08-06 15:26:43','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=56981 +; + +-- Aug 6, 2013 3:27:19 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET IsAdvancedField='Y',Updated=TO_DATE('2013-08-06 15:27:19','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=202366 +; + +-- Aug 6, 2013 3:28:06 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Tab SET IsAdvancedTab='Y',Updated=TO_DATE('2013-08-06 15:28:06','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Tab_ID=50003 +; + +-- Aug 6, 2013 3:28:09 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Tab SET IsAdvancedTab='Y',Updated=TO_DATE('2013-08-06 15:28:09','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Tab_ID=50004 +; + +-- Aug 6, 2013 3:28:13 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Tab SET IsAdvancedTab='Y',Updated=TO_DATE('2013-08-06 15:28:13','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Tab_ID=50002 +; + +-- Aug 6, 2013 3:28:23 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Tab SET IsInsertRecord='N', IsAdvancedTab='Y',Updated=TO_DATE('2013-08-06 15:28:23','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Tab_ID=50001 +; + +-- Aug 6, 2013 3:28:32 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Tab SET IsAdvancedTab='Y',Updated=TO_DATE('2013-08-06 15:28:32','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Tab_ID=50008 +; + +-- Aug 6, 2013 3:28:41 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Tab SET IsAdvancedTab='Y',Updated=TO_DATE('2013-08-06 15:28:41','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Tab_ID=50005 +; + +-- Aug 6, 2013 3:28:45 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Tab SET IsAdvancedTab='Y',Updated=TO_DATE('2013-08-06 15:28:45','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Tab_ID=50006 +; + +-- Aug 6, 2013 3:29:04 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Tab SET IsAdvancedTab='Y',Updated=TO_DATE('2013-08-06 15:29:04','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Tab_ID=505 +; + +-- Aug 6, 2013 3:29:25 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Tab SET IsAdvancedTab='Y',Updated=TO_DATE('2013-08-06 15:29:25','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Tab_ID=369 +; + +-- Aug 6, 2013 3:29:42 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Tab SET IsAdvancedTab='Y',Updated=TO_DATE('2013-08-06 15:29:42','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Tab_ID=150 +; + +-- Aug 6, 2013 3:29:46 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Tab SET IsAdvancedTab='Y',Updated=TO_DATE('2013-08-06 15:29:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Tab_ID=126 +; + +-- Aug 6, 2013 3:29:52 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Tab SET IsAdvancedTab='Y',Updated=TO_DATE('2013-08-06 15:29:52','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Tab_ID=310 +; + +-- Aug 6, 2013 3:30:30 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET IsAdvancedField='Y',Updated=TO_DATE('2013-08-06 15:30:30','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200406 +; + +-- Aug 6, 2013 3:30:51 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Tab SET IsAdvancedTab='Y',Updated=TO_DATE('2013-08-06 15:30:51','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Tab_ID=53066 +; + +-- Aug 6, 2013 3:30:54 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Tab SET IsAdvancedTab='Y',Updated=TO_DATE('2013-08-06 15:30:54','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Tab_ID=53067 +; + +-- Aug 6, 2013 3:31:08 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Tab SET IsAdvancedTab='Y',Updated=TO_DATE('2013-08-06 15:31:08','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Tab_ID=200032 +; + +-- Aug 6, 2013 3:31:34 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET IsAdvancedField='Y',Updated=TO_DATE('2013-08-06 15:31:34','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=5028 +; + +-- Aug 6, 2013 3:31:37 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET IsAdvancedField='Y',Updated=TO_DATE('2013-08-06 15:31:37','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=5029 +; + +-- Aug 6, 2013 3:32:00 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET IsAdvancedField='Y',Updated=TO_DATE('2013-08-06 15:32:00','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=5040 +; + +-- Aug 6, 2013 3:32:03 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET IsAdvancedField='Y',Updated=TO_DATE('2013-08-06 15:32:03','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200003 +; + +-- Aug 6, 2013 3:32:36 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET IsAdvancedField='Y',Updated=TO_DATE('2013-08-06 15:32:36','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=5053 +; + +-- Aug 6, 2013 3:32:50 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET IsAdvancedField='Y',Updated=TO_DATE('2013-08-06 15:32:50','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=11252 +; + +-- Aug 6, 2013 3:33:04 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET IsAdvancedField='Y',Updated=TO_DATE('2013-08-06 15:33:04','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200858 +; + +-- Aug 6, 2013 3:33:13 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET IsAdvancedField='Y',Updated=TO_DATE('2013-08-06 15:33:13','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200855 +; + +-- Aug 6, 2013 3:33:18 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET IsAdvancedField='Y',Updated=TO_DATE('2013-08-06 15:33:18','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=5054 +; + +-- Aug 6, 2013 3:33:21 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET IsAdvancedField='Y',Updated=TO_DATE('2013-08-06 15:33:21','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200849 +; + +-- Aug 6, 2013 3:33:26 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET IsAdvancedField='Y',Updated=TO_DATE('2013-08-06 15:33:26','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200851 +; + +-- Aug 6, 2013 3:33:29 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET IsAdvancedField='Y',Updated=TO_DATE('2013-08-06 15:33:29','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200852 +; + +-- Aug 6, 2013 3:33:34 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET IsAdvancedField='Y',Updated=TO_DATE('2013-08-06 15:33:34','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200854 +; + +SELECT register_migration_script('20130801160000_IDEMPIERE-1160.sql') FROM dual +; diff --git a/migration/i1.0c-release/postgresql/20130801160000_IDEMPIERE-1160.sql b/migration/i1.0c-release/postgresql/20130801160000_IDEMPIERE-1160.sql new file mode 100644 index 0000000000..2b195b9733 --- /dev/null +++ b/migration/i1.0c-release/postgresql/20130801160000_IDEMPIERE-1160.sql @@ -0,0 +1,500 @@ +-- Jul 31, 2013 7:16:30 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +INSERT INTO AD_Element (ColumnName,AD_Element_ID,Name,PrintName,AD_Element_UU,Created,Updated,CreatedBy,AD_Org_ID,UpdatedBy,IsActive,AD_Client_ID,EntityType) VALUES ('IsAdvancedField',202574,'Advanced Field','Advanced Field','1ab899a3-278e-418a-b84e-fe5fc3f263b6',TO_TIMESTAMP('2013-07-31 19:16:29','YYYY-MM-DD HH24:MI:SS'),TO_TIMESTAMP('2013-07-31 19:16:29','YYYY-MM-DD HH24:MI:SS'),100,0,100,'Y',0,'D') +; + +-- Jul 31, 2013 7:16:30 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +INSERT INTO AD_Element_Trl (AD_Language,AD_Element_ID, Help,PO_Description,PO_Help,Name,Description,PrintName,PO_Name,PO_PrintName, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Element_Trl_UU ) SELECT l.AD_Language,t.AD_Element_ID, t.Help,t.PO_Description,t.PO_Help,t.Name,t.Description,t.PrintName,t.PO_Name,t.PO_PrintName, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Element t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Element_ID=202574 AND NOT EXISTS (SELECT * FROM AD_Element_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Element_ID=t.AD_Element_ID) +; + +-- Jul 31, 2013 7:17:38 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +INSERT INTO AD_Column (SeqNoSelection,IsSyncDatabase,Version,AD_Table_ID,AD_Column_ID,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,AD_Reference_ID,IsKey,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsUpdateable,ColumnName,DefaultValue,Name,IsAllowCopy,Updated,CreatedBy,AD_Org_ID,IsActive,Created,UpdatedBy,IsToolbarButton,IsAlwaysUpdateable,AD_Client_ID,EntityType,IsEncrypted,AD_Element_ID,IsSecure) VALUES (0,'N',0,107,210679,'N','N','N',0,'N',1,'N',20,'N','N','Y','45c86144-67dc-487b-a761-54774dd34388','Y','IsAdvancedField','N','Advanced Field','Y',TO_TIMESTAMP('2013-07-31 19:17:38','YYYY-MM-DD HH24:MI:SS'),100,0,'Y',TO_TIMESTAMP('2013-07-31 19:17:38','YYYY-MM-DD HH24:MI:SS'),100,'N','N',0,'D','N',202574,'N') +; + +-- Jul 31, 2013 7:17:38 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Column_Trl_UU ) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=210679 AND NOT EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Column_ID=t.AD_Column_ID) +; + +-- Jul 31, 2013 7:17:51 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +ALTER TABLE AD_Field ADD COLUMN IsAdvancedField CHAR(1) DEFAULT 'N' CHECK (IsAdvancedField IN ('Y','N')) +; + +-- Jul 31, 2013 7:18:37 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +INSERT INTO AD_Field (IsEncrypted,AD_Tab_ID,DisplayLength,IsSameLine,IsHeading,AD_Column_ID,SeqNo,IsCentrallyMaintained,AD_Field_ID,IsReadOnly,EntityType,Name,AD_Field_UU,IsDisplayed,IsFieldOnly,UpdatedBy,AD_Org_ID,Created,CreatedBy,Updated,IsActive,XPosition,AD_Client_ID,ColumnSpan) VALUES ('N',107,1,'N','N',210679,400,'Y',202362,'N','D','Advanced Field','153209a5-5587-49dc-b587-51f236ebfd53','Y','N',100,0,TO_TIMESTAMP('2013-07-31 19:18:36','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2013-07-31 19:18:36','YYYY-MM-DD HH24:MI:SS'),'Y',2,0,2) +; + +-- Jul 31, 2013 7:18:37 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +INSERT INTO AD_Field_Trl (AD_Language,AD_Field_ID, Help,Description,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Field_Trl_UU ) SELECT l.AD_Language,t.AD_Field_ID, t.Help,t.Description,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Field t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Field_ID=202362 AND NOT EXISTS (SELECT * FROM AD_Field_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Field_ID=t.AD_Field_ID) +; + +-- Jul 31, 2013 7:19:10 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=240, IsDisplayed='Y', XPosition=5,Updated=TO_TIMESTAMP('2013-07-31 19:19:10','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=202362 +; + +-- Jul 31, 2013 7:19:10 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=250,Updated=TO_TIMESTAMP('2013-07-31 19:19:10','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200350 +; + +-- Jul 31, 2013 7:19:10 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=260,Updated=TO_TIMESTAMP('2013-07-31 19:19:10','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200348 +; + +-- Jul 31, 2013 7:19:10 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=270,Updated=TO_TIMESTAMP('2013-07-31 19:19:10','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200349 +; + +-- Jul 31, 2013 7:19:10 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=280,Updated=TO_TIMESTAMP('2013-07-31 19:19:10','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=13425 +; + +-- Jul 31, 2013 7:19:10 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=290,Updated=TO_TIMESTAMP('2013-07-31 19:19:10','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200837 +; + +-- Jul 31, 2013 7:19:10 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=300,Updated=TO_TIMESTAMP('2013-07-31 19:19:10','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=54402 +; + +-- Jul 31, 2013 7:19:10 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=310,Updated=TO_TIMESTAMP('2013-07-31 19:19:10','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=54401 +; + +-- Jul 31, 2013 7:19:10 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=320,Updated=TO_TIMESTAMP('2013-07-31 19:19:10','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200838 +; + +-- Jul 31, 2013 7:19:10 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=330,Updated=TO_TIMESTAMP('2013-07-31 19:19:10','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200834 +; + +-- Jul 31, 2013 7:19:10 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=340,Updated=TO_TIMESTAMP('2013-07-31 19:19:10','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=13424 +; + +-- Jul 31, 2013 7:19:10 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=350,Updated=TO_TIMESTAMP('2013-07-31 19:19:10','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=62468 +; + +-- Jul 31, 2013 7:19:10 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=360,Updated=TO_TIMESTAMP('2013-07-31 19:19:10','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=53280 +; + +-- Jul 31, 2013 7:19:10 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=370,Updated=TO_TIMESTAMP('2013-07-31 19:19:10','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200836 +; + +-- Jul 31, 2013 7:19:10 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=380,Updated=TO_TIMESTAMP('2013-07-31 19:19:10','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200835 +; + +-- Jul 31, 2013 7:19:10 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=390,Updated=TO_TIMESTAMP('2013-07-31 19:19:10','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=136 +; + +-- Jul 31, 2013 7:19:10 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=400,Updated=TO_TIMESTAMP('2013-07-31 19:19:10','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=139 +; + +-- Jul 31, 2013 7:20:24 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +INSERT INTO AD_Element (ColumnName,AD_Element_ID,Name,PrintName,AD_Element_UU,Created,Updated,CreatedBy,AD_Org_ID,UpdatedBy,IsActive,AD_Client_ID,EntityType) VALUES ('IsAccessAdvanced',202575,'Access Advanced ','Access Advanced ','2977102f-1399-4824-ba24-2b0c902aed64',TO_TIMESTAMP('2013-07-31 19:20:23','YYYY-MM-DD HH24:MI:SS'),TO_TIMESTAMP('2013-07-31 19:20:23','YYYY-MM-DD HH24:MI:SS'),100,0,100,'Y',0,'D') +; + +-- Jul 31, 2013 7:20:24 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +INSERT INTO AD_Element_Trl (AD_Language,AD_Element_ID, Help,PO_Description,PO_Help,Name,Description,PrintName,PO_Name,PO_PrintName, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Element_Trl_UU ) SELECT l.AD_Language,t.AD_Element_ID, t.Help,t.PO_Description,t.PO_Help,t.Name,t.Description,t.PrintName,t.PO_Name,t.PO_PrintName, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Element t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Element_ID=202575 AND NOT EXISTS (SELECT * FROM AD_Element_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Element_ID=t.AD_Element_ID) +; + +-- Jul 31, 2013 7:22:04 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +INSERT INTO AD_Column (SeqNoSelection,IsSyncDatabase,Version,AD_Table_ID,AD_Column_ID,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,AD_Reference_ID,IsKey,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsUpdateable,ColumnName,DefaultValue,Name,IsAllowCopy,Updated,CreatedBy,AD_Org_ID,IsActive,Created,UpdatedBy,IsToolbarButton,IsAlwaysUpdateable,AD_Client_ID,EntityType,IsEncrypted,AD_Element_ID,IsSecure) VALUES (0,'N',0,156,210680,'N','N','N',0,'N',1,'N',20,'N','N','Y','1827e3d1-f438-4d13-8162-1288ab34d2da','Y','IsAccessAdvanced','Y','Access Advanced ','Y',TO_TIMESTAMP('2013-07-31 19:22:03','YYYY-MM-DD HH24:MI:SS'),100,0,'Y',TO_TIMESTAMP('2013-07-31 19:22:03','YYYY-MM-DD HH24:MI:SS'),100,'N','N',0,'D','N',202575,'N') +; + +-- Jul 31, 2013 7:22:04 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Column_Trl_UU ) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=210680 AND NOT EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Column_ID=t.AD_Column_ID) +; + +-- Jul 31, 2013 7:22:19 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +ALTER TABLE AD_Role ADD COLUMN IsAccessAdvanced CHAR(1) DEFAULT 'N' CHECK (IsAccessAdvanced IN ('Y','N')) +; + + +-- Jul 31, 2013 7:23:25 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +INSERT INTO AD_Field (IsEncrypted,AD_Tab_ID,DisplayLength,IsSameLine,IsHeading,AD_Column_ID,SeqNo,IsCentrallyMaintained,AD_Field_ID,IsReadOnly,EntityType,Name,AD_Field_UU,IsDisplayed,IsFieldOnly,UpdatedBy,AD_Org_ID,Created,CreatedBy,Updated,IsActive,XPosition,AD_Client_ID,ColumnSpan) VALUES ('N',119,1,'N','N',210680,480,'Y',202366,'N','D','Access Advanced ','f1ae60d9-680d-4764-a54e-2de52d65310e','Y','N',100,0,TO_TIMESTAMP('2013-07-31 19:23:25','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2013-07-31 19:23:25','YYYY-MM-DD HH24:MI:SS'),'Y',2,0,2) +; + +-- Jul 31, 2013 7:23:25 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +INSERT INTO AD_Field_Trl (AD_Language,AD_Field_ID, Help,Description,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Field_Trl_UU ) SELECT l.AD_Language,t.AD_Field_ID, t.Help,t.Description,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Field t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Field_ID=202366 AND NOT EXISTS (SELECT * FROM AD_Field_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Field_ID=t.AD_Field_ID) +; + +-- Aug 1, 2013 3:19:25 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET DisplayLogic='@IsMasterRole@=N',Updated=TO_TIMESTAMP('2013-08-01 15:19:25','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=202366 +; + +-- Aug 6, 2013 2:44:19 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=200, IsDisplayed='Y', XPosition=5,Updated=TO_TIMESTAMP('2013-08-06 14:44:19','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=202362 +; + +-- Aug 6, 2013 2:44:19 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=210,Updated=TO_TIMESTAMP('2013-08-06 14:44:19','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=142 +; + +-- Aug 6, 2013 2:44:19 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=220,Updated=TO_TIMESTAMP('2013-08-06 14:44:19','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=8343 +; + +-- Aug 6, 2013 2:44:19 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=230,Updated=TO_TIMESTAMP('2013-08-06 14:44:19','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=140 +; + +-- Aug 6, 2013 2:44:19 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=240,Updated=TO_TIMESTAMP('2013-08-06 14:44:19','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=141 +; + +-- Aug 6, 2013 2:45:23 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=280, IsDisplayed='Y', XPosition=2,Updated=TO_TIMESTAMP('2013-08-06 14:45:23','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=202366 +; + +-- Aug 6, 2013 2:45:23 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=290, IsDisplayed='Y', XPosition=5,Updated=TO_TIMESTAMP('2013-08-06 14:45:23','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200071 +; + +-- Aug 6, 2013 2:45:23 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=300,Updated=TO_TIMESTAMP('2013-08-06 14:45:23','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50168 +; + +-- Aug 6, 2013 2:45:23 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=310,Updated=TO_TIMESTAMP('2013-08-06 14:45:23','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50178 +; + +-- Aug 6, 2013 2:45:24 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=320,Updated=TO_TIMESTAMP('2013-08-06 14:45:24','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50176 +; + +-- Aug 6, 2013 2:45:24 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=330,Updated=TO_TIMESTAMP('2013-08-06 14:45:24','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50170 +; + +-- Aug 6, 2013 2:45:24 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=340,Updated=TO_TIMESTAMP('2013-08-06 14:45:24','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50174 +; + +-- Aug 6, 2013 2:45:24 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=350,Updated=TO_TIMESTAMP('2013-08-06 14:45:24','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50173 +; + +-- Aug 6, 2013 2:45:24 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=360,Updated=TO_TIMESTAMP('2013-08-06 14:45:24','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50172 +; + +-- Aug 6, 2013 2:45:24 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=370,Updated=TO_TIMESTAMP('2013-08-06 14:45:24','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50175 +; + +-- Aug 6, 2013 2:45:24 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=380,Updated=TO_TIMESTAMP('2013-08-06 14:45:24','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50169 +; + +-- Aug 6, 2013 2:45:24 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET SeqNo=390,Updated=TO_TIMESTAMP('2013-08-06 14:45:24','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=50177 +; + +update ad_tab set isadvancedtab='N' where isadvancedtab='Y' +; + +CREATE OR REPLACE VIEW adempiere.ad_field_v AS + SELECT t.ad_window_id, f.ad_tab_id, f.ad_field_id, tbl.ad_table_id, f.ad_column_id, f.name, f.description, + f.help, f.isdisplayed, f.displaylogic, f.displaylength, f.seqno, f.sortno, f.issameline, f.isheading, + f.isfieldonly, f.isreadonly, f.isencrypted AS isencryptedfield, f.obscuretype, c.columnname, c.columnsql, + c.fieldlength, c.vformat, COALESCE(f.defaultvalue, c.defaultvalue) AS defaultvalue, c.iskey, c.isparent, + COALESCE(f.ismandatory, c.ismandatory) AS ismandatory, c.isidentifier, c.istranslated, + COALESCE(f.ad_reference_value_id, c.ad_reference_value_id) AS ad_reference_value_id, c.callout, + COALESCE(f.ad_reference_id, c.ad_reference_id) AS ad_reference_id, + COALESCE(f.ad_val_rule_id, c.ad_val_rule_id) AS ad_val_rule_id, c.ad_process_id, + COALESCE(f.isalwaysupdateable, c.isalwaysupdateable) AS isalwaysupdateable, + COALESCE(f.readonlylogic, c.readonlylogic) AS readonlylogic, + COALESCE(f.mandatorylogic, c.mandatorylogic) AS mandatorylogic, + COALESCE(f.isupdateable, c.isupdateable) AS isupdateable, c.isencrypted AS isencryptedcolumn, + c.isselectioncolumn, tbl.tablename, c.valuemin, c.valuemax, fg.name AS fieldgroup, + vr.code AS validationcode, f.included_tab_id, fg.fieldgrouptype, fg.iscollapsedbydefault, + COALESCE(f.infofactoryclass, c.infofactoryclass) AS infofactoryclass, c.isautocomplete, + COALESCE(f.isallowcopy, c.isallowcopy) AS isallowcopy, f.isdisplayedgrid, f.seqnogrid, c.seqnoselection, + f.xposition, f.columnspan, f.numlines, COALESCE(f.istoolbarbutton, c.istoolbarbutton) AS istoolbarbutton, + c.formatpattern, f.isadvancedfield + FROM adempiere.ad_field f + JOIN adempiere.ad_tab t ON f.ad_tab_id = t.ad_tab_id + LEFT JOIN adempiere.ad_fieldgroup fg ON f.ad_fieldgroup_id = fg.ad_fieldgroup_id + LEFT JOIN adempiere.ad_column c ON f.ad_column_id = c.ad_column_id + JOIN adempiere.ad_table tbl ON c.ad_table_id = tbl.ad_table_id + LEFT JOIN adempiere.ad_val_rule vr ON vr.ad_val_rule_id = COALESCE(f.ad_val_rule_id, c.ad_val_rule_id) + WHERE f.isactive = 'Y'::bpchar AND c.isactive = 'Y'::bpchar +; + +CREATE OR REPLACE VIEW adempiere.ad_field_vt AS + SELECT trl.ad_language, t.ad_window_id, f.ad_tab_id, f.ad_field_id, tbl.ad_table_id, f.ad_column_id, + trl.name, trl.description, trl.help, f.isdisplayed, f.displaylogic, f.displaylength, f.seqno, f.sortno, + f.issameline, f.isheading, f.isfieldonly, f.isreadonly, f.isencrypted AS isencryptedfield, f.obscuretype, +c.columnname, c.columnsql, c.fieldlength, c.vformat, +COALESCE(f.defaultvalue, c.defaultvalue) AS defaultvalue, c.iskey, c.isparent, +COALESCE(f.ismandatory, c.ismandatory) AS ismandatory, c.isidentifier, c.istranslated, +COALESCE(f.ad_reference_value_id, c.ad_reference_value_id) AS ad_reference_value_id, c.callout, +COALESCE(f.ad_reference_id, c.ad_reference_id) AS ad_reference_id, +COALESCE(f.ad_val_rule_id, c.ad_val_rule_id) AS ad_val_rule_id, c.ad_process_id, +COALESCE(f.isalwaysupdateable, c.isalwaysupdateable) AS isalwaysupdateable, +COALESCE(f.readonlylogic, c.readonlylogic) AS readonlylogic, +COALESCE(f.mandatorylogic, c.mandatorylogic) AS mandatorylogic, +COALESCE(f.isupdateable, c.isupdateable) AS isupdateable, c.isencrypted AS isencryptedcolumn, +c.isselectioncolumn, tbl.tablename, c.valuemin, c.valuemax, fgt.name AS fieldgroup, vr.code AS validationcode, +f.included_tab_id, fg.fieldgrouptype, fg.iscollapsedbydefault, +COALESCE(f.infofactoryclass, c.infofactoryclass) AS infofactoryclass, c.isautocomplete, +COALESCE(f.isallowcopy, c.isallowcopy) AS isallowcopy, f.isdisplayedgrid, f.seqnogrid, c.seqnoselection, +f.xposition, f.columnspan, f.numlines, COALESCE(f.istoolbarbutton, c.istoolbarbutton) AS istoolbarbutton, +c.formatpattern, f.isadvancedfield + FROM adempiere.ad_field f + JOIN adempiere.ad_field_trl trl ON f.ad_field_id = trl.ad_field_id + JOIN adempiere.ad_tab t ON f.ad_tab_id = t.ad_tab_id + LEFT JOIN adempiere.ad_fieldgroup fg ON f.ad_fieldgroup_id = fg.ad_fieldgroup_id + LEFT JOIN adempiere.ad_fieldgroup_trl fgt ON f.ad_fieldgroup_id = fgt.ad_fieldgroup_id AND trl.ad_language::text = fgt.ad_language::text + LEFT JOIN adempiere.ad_column c ON f.ad_column_id = c.ad_column_id + JOIN adempiere.ad_table tbl ON c.ad_table_id = tbl.ad_table_id + LEFT JOIN adempiere.ad_val_rule vr ON vr.ad_val_rule_id = COALESCE(f.ad_val_rule_id, c.ad_val_rule_id) + WHERE f.isactive = 'Y'::bpchar AND c.isactive = 'Y'::bpchar +; + +-- Aug 6, 2013 2:52:33 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Role SET IsAccessAdvanced='Y',Updated=TO_TIMESTAMP('2013-08-06 14:52:33','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Role_ID IN (0,102) +; + +-- Aug 6, 2013 3:23:57 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET IsAdvancedField='Y',Updated=TO_TIMESTAMP('2013-08-06 15:23:57','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=10318 +; + +-- Aug 6, 2013 3:24:26 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET IsAdvancedField='Y',Updated=TO_TIMESTAMP('2013-08-06 15:24:26','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=11024 +; + +-- Aug 6, 2013 3:24:51 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET IsAdvancedField='Y',Updated=TO_TIMESTAMP('2013-08-06 15:24:51','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=54238 +; + +-- Aug 6, 2013 3:25:22 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET IsAdvancedField='Y',Updated=TO_TIMESTAMP('2013-08-06 15:25:22','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=54680 +; + +-- Aug 6, 2013 3:25:56 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET IsAdvancedField='Y',Updated=TO_TIMESTAMP('2013-08-06 15:25:56','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200948 +; + +-- Aug 6, 2013 3:26:01 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET IsAdvancedField='Y',Updated=TO_TIMESTAMP('2013-08-06 15:26:01','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200949 +; + +-- Aug 6, 2013 3:26:43 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET IsAdvancedField='Y',Updated=TO_TIMESTAMP('2013-08-06 15:26:43','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=56981 +; + +-- Aug 6, 2013 3:27:19 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET IsAdvancedField='Y',Updated=TO_TIMESTAMP('2013-08-06 15:27:19','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=202366 +; + +-- Aug 6, 2013 3:28:06 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Tab SET IsAdvancedTab='Y',Updated=TO_TIMESTAMP('2013-08-06 15:28:06','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Tab_ID=50003 +; + +-- Aug 6, 2013 3:28:09 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Tab SET IsAdvancedTab='Y',Updated=TO_TIMESTAMP('2013-08-06 15:28:09','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Tab_ID=50004 +; + +-- Aug 6, 2013 3:28:13 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Tab SET IsAdvancedTab='Y',Updated=TO_TIMESTAMP('2013-08-06 15:28:13','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Tab_ID=50002 +; + +-- Aug 6, 2013 3:28:23 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Tab SET IsInsertRecord='N', IsAdvancedTab='Y',Updated=TO_TIMESTAMP('2013-08-06 15:28:23','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Tab_ID=50001 +; + +-- Aug 6, 2013 3:28:32 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Tab SET IsAdvancedTab='Y',Updated=TO_TIMESTAMP('2013-08-06 15:28:32','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Tab_ID=50008 +; + +-- Aug 6, 2013 3:28:41 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Tab SET IsAdvancedTab='Y',Updated=TO_TIMESTAMP('2013-08-06 15:28:41','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Tab_ID=50005 +; + +-- Aug 6, 2013 3:28:45 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Tab SET IsAdvancedTab='Y',Updated=TO_TIMESTAMP('2013-08-06 15:28:45','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Tab_ID=50006 +; + +-- Aug 6, 2013 3:29:04 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Tab SET IsAdvancedTab='Y',Updated=TO_TIMESTAMP('2013-08-06 15:29:04','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Tab_ID=505 +; + +-- Aug 6, 2013 3:29:25 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Tab SET IsAdvancedTab='Y',Updated=TO_TIMESTAMP('2013-08-06 15:29:25','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Tab_ID=369 +; + +-- Aug 6, 2013 3:29:42 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Tab SET IsAdvancedTab='Y',Updated=TO_TIMESTAMP('2013-08-06 15:29:42','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Tab_ID=150 +; + +-- Aug 6, 2013 3:29:46 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Tab SET IsAdvancedTab='Y',Updated=TO_TIMESTAMP('2013-08-06 15:29:46','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Tab_ID=126 +; + +-- Aug 6, 2013 3:29:52 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Tab SET IsAdvancedTab='Y',Updated=TO_TIMESTAMP('2013-08-06 15:29:52','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Tab_ID=310 +; + +-- Aug 6, 2013 3:30:30 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET IsAdvancedField='Y',Updated=TO_TIMESTAMP('2013-08-06 15:30:30','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200406 +; + +-- Aug 6, 2013 3:30:51 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Tab SET IsAdvancedTab='Y',Updated=TO_TIMESTAMP('2013-08-06 15:30:51','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Tab_ID=53066 +; + +-- Aug 6, 2013 3:30:54 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Tab SET IsAdvancedTab='Y',Updated=TO_TIMESTAMP('2013-08-06 15:30:54','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Tab_ID=53067 +; + +-- Aug 6, 2013 3:31:08 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Tab SET IsAdvancedTab='Y',Updated=TO_TIMESTAMP('2013-08-06 15:31:08','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Tab_ID=200032 +; + +-- Aug 6, 2013 3:31:34 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET IsAdvancedField='Y',Updated=TO_TIMESTAMP('2013-08-06 15:31:34','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=5028 +; + +-- Aug 6, 2013 3:31:37 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET IsAdvancedField='Y',Updated=TO_TIMESTAMP('2013-08-06 15:31:37','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=5029 +; + +-- Aug 6, 2013 3:32:00 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET IsAdvancedField='Y',Updated=TO_TIMESTAMP('2013-08-06 15:32:00','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=5040 +; + +-- Aug 6, 2013 3:32:03 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET IsAdvancedField='Y',Updated=TO_TIMESTAMP('2013-08-06 15:32:03','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200003 +; + +-- Aug 6, 2013 3:32:36 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET IsAdvancedField='Y',Updated=TO_TIMESTAMP('2013-08-06 15:32:36','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=5053 +; + +-- Aug 6, 2013 3:32:50 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET IsAdvancedField='Y',Updated=TO_TIMESTAMP('2013-08-06 15:32:50','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=11252 +; + +-- Aug 6, 2013 3:33:04 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET IsAdvancedField='Y',Updated=TO_TIMESTAMP('2013-08-06 15:33:04','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200858 +; + +-- Aug 6, 2013 3:33:13 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET IsAdvancedField='Y',Updated=TO_TIMESTAMP('2013-08-06 15:33:13','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200855 +; + +-- Aug 6, 2013 3:33:18 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET IsAdvancedField='Y',Updated=TO_TIMESTAMP('2013-08-06 15:33:18','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=5054 +; + +-- Aug 6, 2013 3:33:21 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET IsAdvancedField='Y',Updated=TO_TIMESTAMP('2013-08-06 15:33:21','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200849 +; + +-- Aug 6, 2013 3:33:26 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET IsAdvancedField='Y',Updated=TO_TIMESTAMP('2013-08-06 15:33:26','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200851 +; + +-- Aug 6, 2013 3:33:29 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET IsAdvancedField='Y',Updated=TO_TIMESTAMP('2013-08-06 15:33:29','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200852 +; + +-- Aug 6, 2013 3:33:34 PM COT +-- IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users +UPDATE AD_Field SET IsAdvancedField='Y',Updated=TO_TIMESTAMP('2013-08-06 15:33:34','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=200854 +; + +SELECT register_migration_script('20130801160000_IDEMPIERE-1160.sql') FROM dual +; diff --git a/org.adempiere.base/src/org/compiere/model/GridFieldVO.java b/org.adempiere.base/src/org/compiere/model/GridFieldVO.java index 9619af6d7c..fd909f9773 100644 --- a/org.adempiere.base/src/org/compiere/model/GridFieldVO.java +++ b/org.adempiere.base/src/org/compiere/model/GridFieldVO.java @@ -56,14 +56,24 @@ public class GridFieldVO implements Serializable public static String getSQL (Properties ctx) { // IsActive is part of View + MRole role = MRole.getDefault(ctx, true); + String advancedFilter=" AND IsAdvancedField='N' "; StringBuilder sql; - if (!Env.isBaseLanguage(ctx, "AD_Tab")) + if (!Env.isBaseLanguage(ctx, "AD_Tab")){ sql = new StringBuilder("SELECT * FROM AD_Field_vt WHERE AD_Tab_ID=?") - .append(" AND AD_Language='" + Env.getAD_Language(ctx) + "'") - .append(" ORDER BY IsDisplayed DESC, SeqNo"); - else - sql = new StringBuilder("SELECT * FROM AD_Field_v WHERE AD_Tab_ID=?") - .append(" ORDER BY IsDisplayed DESC, SeqNo"); + .append(" AND AD_Language='" + Env.getAD_Language(ctx) + "'"); + if (!role.isAccessAdvanced()) { + sql.append(advancedFilter); + } + sql.append(" ORDER BY IsDisplayed DESC, SeqNo"); + } + else{ + sql = new StringBuilder("SELECT * FROM AD_Field_v WHERE AD_Tab_ID=?"); + if (!role.isAccessAdvanced()) { + sql.append(advancedFilter); + } + sql.append(" ORDER BY IsDisplayed DESC, SeqNo"); + } return sql.toString(); } // getSQL diff --git a/org.adempiere.base/src/org/compiere/model/GridTabVO.java b/org.adempiere.base/src/org/compiere/model/GridTabVO.java index 682c144745..e0af3bf447 100644 --- a/org.adempiere.base/src/org/compiere/model/GridTabVO.java +++ b/org.adempiere.base/src/org/compiere/model/GridTabVO.java @@ -370,13 +370,26 @@ public class GridTabVO implements Evaluatee, Serializable + " AND ce.AD_Field_ID IS NULL " + " AND ce.ASP_Status = 'H')"; // Hide // View only returns IsActive='Y' - String sql = "SELECT * FROM AD_Tab_v WHERE AD_Window_ID=?" - + ASPFilter + " ORDER BY SeqNo"; - if (!Env.isBaseLanguage(ctx, "AD_Window")) - sql = "SELECT * FROM AD_Tab_vt WHERE AD_Window_ID=?" - + " AND AD_Language='" + Env.getAD_Language(ctx) + "'" - + ASPFilter + " ORDER BY SeqNo"; - return sql; + MRole role = MRole.getDefault(ctx, true); + String advancedFilter=" AND IsAdvancedTab='N' "; + StringBuilder sql; + if (!Env.isBaseLanguage(ctx, "AD_Window")) { + sql = new StringBuilder( "SELECT * FROM AD_Tab_vt WHERE AD_Window_ID=?"); + sql.append(" AND AD_Language='" + Env.getAD_Language(ctx) + "'") + .append(ASPFilter); + if (!role.isAccessAdvanced()) { + sql.append(advancedFilter); + } + sql.append(" ORDER BY SeqNo"); + }else{ + sql = new StringBuilder("SELECT * FROM AD_Tab_v WHERE AD_Window_ID=?"); + sql.append(ASPFilter) ; + if (!role.isAccessAdvanced()) { + sql.append(advancedFilter); + } + sql.append(" ORDER BY SeqNo"); + } + return sql.toString(); } // getSQL diff --git a/org.adempiere.base/src/org/compiere/model/I_AD_Field.java b/org.adempiere.base/src/org/compiere/model/I_AD_Field.java index c42e93f3de..a0b4221237 100644 --- a/org.adempiere.base/src/org/compiere/model/I_AD_Field.java +++ b/org.adempiere.base/src/org/compiere/model/I_AD_Field.java @@ -313,6 +313,15 @@ public interface I_AD_Field */ public boolean isActive(); + /** Column name IsAdvancedField */ + public static final String COLUMNNAME_IsAdvancedField = "IsAdvancedField"; + + /** Set IsAdvancedField */ + public void setIsAdvancedField (boolean IsAdvancedField); + + /** Get IsAdvancedField */ + public boolean isAdvancedField(); + /** Column name IsAllowCopy */ public static final String COLUMNNAME_IsAllowCopy = "IsAllowCopy"; diff --git a/org.adempiere.base/src/org/compiere/model/I_AD_Role.java b/org.adempiere.base/src/org/compiere/model/I_AD_Role.java index e5f6f6dc5f..fc64f9cfc4 100644 --- a/org.adempiere.base/src/org/compiere/model/I_AD_Role.java +++ b/org.adempiere.base/src/org/compiere/model/I_AD_Role.java @@ -300,6 +300,15 @@ public interface I_AD_Role */ public String getDescription(); + /** Column name IsAccessAdvanced */ + public static final String COLUMNNAME_IsAccessAdvanced = "IsAccessAdvanced"; + + /** Set IsAccessAdvanced */ + public void setIsAccessAdvanced (boolean IsAccessAdvanced); + + /** Get IsAccessAdvanced */ + public boolean isAccessAdvanced(); + /** Column name IsAccessAllOrgs */ public static final String COLUMNNAME_IsAccessAllOrgs = "IsAccessAllOrgs"; diff --git a/org.adempiere.base/src/org/compiere/model/X_AD_Field.java b/org.adempiere.base/src/org/compiere/model/X_AD_Field.java index f3ea2e3e35..18f9ab82ed 100644 --- a/org.adempiere.base/src/org/compiere/model/X_AD_Field.java +++ b/org.adempiere.base/src/org/compiere/model/X_AD_Field.java @@ -32,7 +32,7 @@ public class X_AD_Field extends PO implements I_AD_Field, I_Persistent /** * */ - private static final long serialVersionUID = 20130626L; + private static final long serialVersionUID = 20130801L; /** Standard Constructor */ public X_AD_Field (Properties ctx, int AD_Field_ID, String trxName) @@ -449,6 +449,27 @@ public class X_AD_Field extends PO implements I_AD_Field, I_Persistent return ii.intValue(); } + /** Set IsAdvancedField. + @param IsAdvancedField IsAdvancedField */ + public void setIsAdvancedField (boolean IsAdvancedField) + { + set_Value (COLUMNNAME_IsAdvancedField, Boolean.valueOf(IsAdvancedField)); + } + + /** Get IsAdvancedField. + @return IsAdvancedField */ + public boolean isAdvancedField () + { + Object oo = get_Value(COLUMNNAME_IsAdvancedField); + if (oo != null) + { + if (oo instanceof Boolean) + return ((Boolean)oo).booleanValue(); + return "Y".equals(oo); + } + return false; + } + /** IsAllowCopy AD_Reference_ID=319 */ public static final int ISALLOWCOPY_AD_Reference_ID=319; /** Yes = Y */ diff --git a/org.adempiere.base/src/org/compiere/model/X_AD_Role.java b/org.adempiere.base/src/org/compiere/model/X_AD_Role.java index b8d18adae1..5c7133f34a 100644 --- a/org.adempiere.base/src/org/compiere/model/X_AD_Role.java +++ b/org.adempiere.base/src/org/compiere/model/X_AD_Role.java @@ -32,7 +32,7 @@ public class X_AD_Role extends PO implements I_AD_Role, I_Persistent /** * */ - private static final long serialVersionUID = 20130626L; + private static final long serialVersionUID = 20130801L; /** Standard Constructor */ public X_AD_Role (Properties ctx, int AD_Role_ID, String trxName) @@ -555,6 +555,27 @@ public class X_AD_Role extends PO implements I_AD_Role, I_Persistent return (String)get_Value(COLUMNNAME_Description); } + /** Set IsAccessAdvanced . + @param IsAccessAdvanced IsAccessAdvanced */ + public void setIsAccessAdvanced (boolean IsAccessAdvanced) + { + set_Value (COLUMNNAME_IsAccessAdvanced, Boolean.valueOf(IsAccessAdvanced)); + } + + /** Get IsAccessAdvanced . + @return IsAccessAdvanced */ + public boolean isAccessAdvanced () + { + Object oo = get_Value(COLUMNNAME_IsAccessAdvanced); + if (oo != null) + { + if (oo instanceof Boolean) + return ((Boolean)oo).booleanValue(); + return "Y".equals(oo); + } + return false; + } + /** Set Access all Orgs. @param IsAccessAllOrgs Access all Organizations (no org access control) of the client diff --git a/org.adempiere.base/src/org/compiere/util/Ini.java b/org.adempiere.base/src/org/compiere/util/Ini.java index 21b8e5ac47..94853c1817 100644 --- a/org.adempiere.base/src/org/compiere/util/Ini.java +++ b/org.adempiere.base/src/org/compiere/util/Ini.java @@ -128,9 +128,6 @@ public final class Ini implements Serializable /** Show Acct Tabs */ public static final String P_SHOW_ACCT = "ShowAcct"; private static final boolean DEFAULT_SHOW_ACCT = true; - /** Show Advanced Tabs */ - public static final String P_SHOW_ADVANCED = "ShowAdvanced"; - private static final boolean DEFAULT_SHOW_ADVANCED = true; /** Show Translation Tabs */ public static final String P_SHOW_TRL = "ShowTrl"; private static final boolean DEFAULT_SHOW_TRL = false; @@ -196,7 +193,7 @@ public final class Ini implements Serializable P_UI_LOOK, P_UI_THEME, /* P_UI_FLAT,*/ P_A_COMMIT, P_A_LOGIN, P_A_NEW, P_ADEMPIERESYS, P_LOGMIGRATIONSCRIPT, P_SHOW_ACCT, P_SHOW_TRL, - P_SHOW_ADVANCED, P_CACHE_WINDOW, + P_CACHE_WINDOW, P_CONTEXT, P_TEMP_DIR, P_ROLE, P_CLIENT, P_ORG, P_PRINTER, P_WAREHOUSE, P_TODAY, P_PRINTPREVIEW, @@ -214,7 +211,7 @@ public final class Ini implements Serializable DEFAULT_UI_LOOK, DEFAULT_UI_THEME, /* DEFAULT_UI_FLAT?"Y":"N", */ DEFAULT_A_COMMIT?"Y":"N", DEFAULT_A_LOGIN?"Y":"N", DEFAULT_A_NEW?"Y":"N", DEFAULT_ADEMPIERESYS?"Y":"N", DEFAULT_LOGMIGRATIONSCRIPT?"Y":"N", DEFAULT_SHOW_ACCT?"Y":"N", DEFAULT_SHOW_TRL?"Y":"N", - DEFAULT_SHOW_ADVANCED?"Y":"N", DEFAULT_CACHE_WINDOW?"Y":"N", + DEFAULT_CACHE_WINDOW?"Y":"N", DEFAULT_CONTEXT, DEFAULT_TEMP_DIR, DEFAULT_ROLE, DEFAULT_CLIENT, DEFAULT_ORG, DEFAULT_PRINTER, DEFAULT_WAREHOUSE, DEFAULT_TODAY.toString(), DEFAULT_PRINTPREVIEW?"Y":"N", diff --git a/org.adempiere.base/src/org/compiere/util/Login.java b/org.adempiere.base/src/org/compiere/util/Login.java index 5f3b935b8e..9fe8fd4a40 100644 --- a/org.adempiere.base/src/org/compiere/util/Login.java +++ b/org.adempiere.base/src/org/compiere/util/Login.java @@ -838,7 +838,7 @@ public class Login else Env.setContext(m_ctx, "#ShowAcct", "N"); Env.setContext(m_ctx, "#ShowTrl", Ini.getProperty(Ini.P_SHOW_TRL)); - Env.setContext(m_ctx, "#ShowAdvanced", Ini.getProperty(Ini.P_SHOW_ADVANCED)); + Env.setContext(m_ctx, "#ShowAdvanced", MRole.getDefault().isAccessAdvanced()); String retValue = ""; int AD_Client_ID = Env.getContextAsInt(m_ctx, "#AD_Client_ID"); diff --git a/org.adempiere.ui.swing/src/org/compiere/acct/AcctViewer.java b/org.adempiere.ui.swing/src/org/compiere/acct/AcctViewer.java index 636c60833f..790fc12929 100644 --- a/org.adempiere.ui.swing/src/org/compiere/acct/AcctViewer.java +++ b/org.adempiere.ui.swing/src/org/compiere/acct/AcctViewer.java @@ -461,8 +461,7 @@ public class AcctViewer extends CFrame boolean visible = m_data.documentQuery && tabbedPane.getSelectedIndex() == 1; bRePost.setVisible(visible); bExport.setVisible(tabbedPane.getSelectedIndex() == 1); - if (Ini.isPropertyBool(Ini.P_SHOW_ADVANCED)) - forcePost.setVisible(visible); + forcePost.setVisible(visible); } // stateChanged diff --git a/org.adempiere.ui.swing/src/org/compiere/apps/Preference.java b/org.adempiere.ui.swing/src/org/compiere/apps/Preference.java index 3b8b12219f..ff3a781e8e 100644 --- a/org.adempiere.ui.swing/src/org/compiere/apps/Preference.java +++ b/org.adempiere.ui.swing/src/org/compiere/apps/Preference.java @@ -158,7 +158,6 @@ public final class Preference extends CDialog private CCheckBox storePassword = new CCheckBox(); private CCheckBox showTrl = new CCheckBox(); private CCheckBox showAcct = new CCheckBox(); - private CCheckBox showAdvanced = new CCheckBox(); private CCheckBox cacheWindow = new CCheckBox(); private CLabel lPrinter = new CLabel(); private CPrinter fPrinter = new CPrinter(); @@ -234,8 +233,6 @@ public final class Preference extends CDialog showTrl.setToolTipText(Msg.getMsg(Env.getCtx(), "ShowTrlTab", false)); showAcct.setText(Msg.getMsg(Env.getCtx(), "ShowAcctTab", true)); showAcct.setToolTipText(Msg.getMsg(Env.getCtx(), "ShowAcctTab", false)); - showAdvanced.setText(Msg.getMsg(Env.getCtx(), "ShowAdvancedTab", true)); - showAdvanced.setToolTipText(Msg.getMsg(Env.getCtx(), "ShowAdvancedTab", false)); cacheWindow.setText(Msg.getMsg(Env.getCtx(), "CacheWindow", true)); cacheWindow.setToolTipText(Msg.getMsg(Env.getCtx(), "CacheWindow", false)); lPrinter.setText(Msg.getMsg(Env.getCtx(), "Printer")); @@ -272,7 +269,6 @@ public final class Preference extends CDialog windowPanel.setLayout(new GridLayout(4, 2)); windowPanel.add(showAcct);showAcct.setBorder(insetBorder); windowPanel.add(showTrl);showTrl.setBorder(insetBorder); - windowPanel.add(showAdvanced);showAdvanced.setBorder(insetBorder); windowPanel.add(autoCommit);autoCommit.setBorder(insetBorder); windowPanel.add(autoNew);autoNew.setBorder(insetBorder); windowPanel.add(cacheWindow);cacheWindow.setBorder(insetBorder); @@ -495,7 +491,6 @@ public final class Preference extends CDialog } // Show Trl/Advanced Tab showTrl.setSelected(Ini.isPropertyBool(Ini.P_SHOW_TRL)); - showAdvanced.setSelected(Ini.isPropertyBool(Ini.P_SHOW_ADVANCED)); cacheWindow.setSelected(Ini.isCacheWindow()); @@ -571,9 +566,6 @@ public final class Preference extends CDialog // Show Trl Tab Ini.setProperty(Ini.P_SHOW_TRL, (showTrl.isSelected())); Env.setContext(Env.getCtx(), "#ShowTrl", (showTrl.isSelected())); - // Show Advanced Tab - Ini.setProperty(Ini.P_SHOW_ADVANCED, (showAdvanced.isSelected())); - Env.setContext(Env.getCtx(), "#ShowAdvanced", (showAdvanced.isSelected())); Ini.setProperty(Ini.P_CACHE_WINDOW, cacheWindow.isSelected()); diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/AdempiereWebUI.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/AdempiereWebUI.java index 4252ce3e50..5d628a1f47 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/AdempiereWebUI.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/AdempiereWebUI.java @@ -222,7 +222,6 @@ public class AdempiereWebUI extends Window implements EventListener, IWeb //enable full interface, relook into this when doing preference Env.setContext(ctx, "#ShowTrl", true); Env.setContext(ctx, "#ShowAcct", MRole.getDefault().isShowAcct()); - Env.setContext(ctx, "#ShowAdvanced", true); // to reload preferences when the user refresh the browser userPreference = loadUserPreference(Env.getAD_User_ID(ctx)); diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/acct/WAcctViewer.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/acct/WAcctViewer.java index 89e814bca3..42899d00b3 100755 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/acct/WAcctViewer.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/acct/WAcctViewer.java @@ -722,8 +722,7 @@ public class WAcctViewer extends Window implements EventListener bExport.setVisible(tabResult.isSelected()); bZoom.setVisible(tabResult.isSelected()); - if (Ini.isPropertyBool(Ini.P_SHOW_ADVANCED)) - forcePost.setVisible(visible); + forcePost.setVisible(visible); } // stateChanged /** From 40f6a34e2d52b4c73c54ed487f13a759dff5a324 Mon Sep 17 00:00:00 2001 From: Elaine Tan Date: Wed, 7 Aug 2013 16:02:59 +0800 Subject: [PATCH 23/57] IDEMPIERE-724 Zk: Make iDempiere theme more easily customizable - fix the theme resource url for calendar.zul path --- .../WEB-INF/src/org/adempiere/webui/panel/WSchedule.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/WSchedule.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/WSchedule.java index 3c7735bfc4..dd9ebb8548 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/WSchedule.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/WSchedule.java @@ -137,7 +137,7 @@ public class WSchedule extends Window implements EventListener { this.getChildren().clear(); - calendarContainer = Executions.createComponents(ThemeManager.getThemeResource("/zul/calendar/calendar.zul"), this, null); + calendarContainer = Executions.createComponents(ThemeManager.getThemeResource("zul/calendar/calendar.zul"), this, null); borderlayout = (Borderlayout) calendarContainer.getFellow("main"); borderlayout.setStyle("position: absolute; width: 98%; margin: auto;"); From 1dc923273d052c52f84eff3387e69321a09b367f Mon Sep 17 00:00:00 2001 From: Heng Sin Low Date: Wed, 7 Aug 2013 18:39:40 +0800 Subject: [PATCH 24/57] IDEMPIERE-304 Remove PREFERENCETYPE_AD_Reference_ID in generated X_ class. Only generate for official id. --- .../src/org/adempiere/util/ModelClassGenerator.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/org.adempiere.base/src/org/adempiere/util/ModelClassGenerator.java b/org.adempiere.base/src/org/adempiere/util/ModelClassGenerator.java index 55503b6d16..7d28198d13 100644 --- a/org.adempiere.base/src/org/adempiere/util/ModelClassGenerator.java +++ b/org.adempiere.base/src/org/adempiere/util/ModelClassGenerator.java @@ -37,6 +37,7 @@ import java.util.logging.Level; import org.adempiere.exceptions.DBException; import org.compiere.Adempiere; +import org.compiere.model.MTable; import org.compiere.util.CLogger; import org.compiere.util.DB; import org.compiere.util.DisplayType; @@ -601,9 +602,12 @@ public class ModelClassGenerator String columnName) { StringBuilder retValue = new StringBuilder(); - retValue.append("\n\t/** ").append(columnName).append(" AD_Reference_ID=").append(AD_Reference_ID) .append(" */") - .append("\n\tpublic static final int ").append(columnName.toUpperCase()) - .append("_AD_Reference_ID=").append(AD_Reference_ID).append(";"); + if (AD_Reference_ID <= MTable.MAX_OFFICIAL_ID) + { + retValue.append("\n\t/** ").append(columnName).append(" AD_Reference_ID=").append(AD_Reference_ID) .append(" */") + .append("\n\tpublic static final int ").append(columnName.toUpperCase()) + .append("_AD_Reference_ID=").append(AD_Reference_ID).append(";"); + } // boolean found = false; StringBuilder values = new StringBuilder("Reference_ID=") From 5e1637dbff7552252409d5c5ae3d5bed58433377 Mon Sep 17 00:00:00 2001 From: Heng Sin Low Date: Wed, 7 Aug 2013 21:14:06 +0800 Subject: [PATCH 25/57] IDEMPIERE-1199 No color on trees. Base on patch from Nicolas Micoud. --- .../org/adempiere/webui/component/SimpleTreeModel.java | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/SimpleTreeModel.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/SimpleTreeModel.java index fcf0857c53..6c27f640fe 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/SimpleTreeModel.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/component/SimpleTreeModel.java @@ -12,6 +12,7 @@ *****************************************************************************/ package org.adempiere.webui.component; +import java.awt.Color; import java.util.ArrayList; import java.util.Enumeration; import java.util.List; @@ -156,6 +157,15 @@ public class SimpleTreeModel extends org.zkoss.zul.DefaultTreeModel impl tr.setDroppable("true"); tr.addEventListener(Events.ON_DROP, this); } + + // Color + final MTreeNode mNode = (MTreeNode) ((DefaultTreeNode) node).getData(); + Color color = mNode.getColor(); + if (color != null){ + String hex = ZkCssHelper.createHexColorString(color); + ZkCssHelper.appendStyle(tc, "color: #" + hex); + } + // End color }else{ tr = ti.getTreerow(); tr.getChildren().clear(); From 390c89281cefb7531f8809657390f0cd24480097 Mon Sep 17 00:00:00 2001 From: Heng Sin Low Date: Thu, 8 Aug 2013 00:47:39 +0800 Subject: [PATCH 26/57] IDEMPIERE-1248 Performance Optimization: Eliminate the fire and processing of duplicate event. Backout optimization for dynamic display which is causing some regression. --- .../adempiere/webui/adwindow/ADTabpanel.java | 51 +------------------ .../adwindow/AbstractADWindowContent.java | 16 ------ 2 files changed, 1 insertion(+), 66 deletions(-) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADTabpanel.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADTabpanel.java index 13d97fff56..6ad7a36747 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADTabpanel.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADTabpanel.java @@ -78,7 +78,6 @@ import org.compiere.util.Util; import org.zkoss.zk.au.out.AuFocus; import org.zkoss.zk.au.out.AuScript; import org.zkoss.zk.ui.Component; -import org.zkoss.zk.ui.Execution; import org.zkoss.zk.ui.Executions; import org.zkoss.zk.ui.HtmlBasedComponent; import org.zkoss.zk.ui.IdSpace; @@ -127,11 +126,6 @@ DataStatusListener, IADTabpanel, IdSpace, IFieldEditorContainer public static final String ON_SWITCH_VIEW_EVENT = "onSwitchView"; public static final String ON_DYNAMIC_DISPLAY_EVENT = "onDynamicDisplay"; - - public static final String ON_DYNAMIC_DISPLAY_CALL_EVENT = "onDynamicDisplayCall"; - - public static final String ON_DYNAMIC_DISPLAY_CALL_EVENT_ATTR = "onDynamicDisplayCall.Event.Posted"; - /** * */ @@ -224,7 +218,6 @@ DataStatusListener, IADTabpanel, IdSpace, IFieldEditorContainer }); addEventListener(ON_POST_INIT_EVENT, this); addEventListener(ON_SAVE_OPEN_PREFERENCE_EVENT, this); - addEventListener(ON_DYNAMIC_DISPLAY_CALL_EVENT, this); } private void initComponents() @@ -658,50 +651,12 @@ DataStatusListener, IADTabpanel, IdSpace, IFieldEditorContainer } /** - * Turn on/off the processing of dynamic display call for current execution cycle. - * The system will ignore duplicate dynamic display request within the same execution cycle, - * this method can be use to alter that. - * @param enable - */ - public void toggleDynamicDisplay(boolean enable) { - Execution exec = Executions.getCurrent(); - int currentRow = getGridTab().isSortTab() ? 0 : getGridTab().getCurrentRow(); - StringBuilder builder = new StringBuilder(ON_DYNAMIC_DISPLAY_CALL_EVENT_ATTR) - .append("_").append(getUuid()) - .append("_").append(0) - .append("_").append(currentRow); - if (enable) - exec.removeAttribute(builder.toString()); - else - exec.setAttribute(builder.toString(), Boolean.TRUE); - } - - /** - * Validate display properties of fields of current row + * Validate display properties of fields of current row. * @param col */ @Override public void dynamicDisplay (int col) { - //0 and -1 is same - if (col < 0) - col = 0; - int currentRow = getGridTab().isSortTab() ? 0 : getGridTab().getCurrentRow(); - Execution exec = Executions.getCurrent(); - StringBuilder builder = new StringBuilder(ON_DYNAMIC_DISPLAY_CALL_EVENT_ATTR) - .append("_").append(getUuid()) - .append("_").append(col) - .append("_").append(currentRow); - String key = builder.toString(); - if (exec.getAttribute(key) == null) - { - exec.setAttribute(key, Boolean.TRUE); - Events.sendEvent(ON_DYNAMIC_DISPLAY_CALL_EVENT, this, col); - } - } - - private void onDynamicDisplayCall (int col) - { if (!gridTab.isOpen()) { return; @@ -1106,10 +1061,6 @@ DataStatusListener, IADTabpanel, IdSpace, IFieldEditorContainer Env.getCtx().setProperty("P"+windowId+"|"+adTabId+"|DetailPane.IsOpen", value ? "Y" : "N"); } } - else if (event.getName().equals(ON_DYNAMIC_DISPLAY_CALL_EVENT)) { - Integer col = (Integer) event.getData(); - onDynamicDisplayCall(col); - } } private void onSouthEvent(SouthEvent event) { diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/AbstractADWindowContent.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/AbstractADWindowContent.java index 1f32bd9541..d37e8343be 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/AbstractADWindowContent.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/AbstractADWindowContent.java @@ -1575,23 +1575,7 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements protected void afterRefresh(final boolean fireEvent) { IADTabpanel headerTab = adTabbox.getSelectedTabpanel(); IADTabpanel detailTab = adTabbox.getSelectedDetailADTabpanel(); - if (headerTab instanceof ADTabpanel) - { - ((ADTabpanel) headerTab).toggleDynamicDisplay(false); - } - if (detailTab != null && detailTab instanceof ADTabpanel) - { - ((ADTabpanel) detailTab).toggleDynamicDisplay(false); - } adTabbox.getSelectedGridTab().dataRefreshAll(fireEvent, true); - if (headerTab instanceof ADTabpanel) - { - ((ADTabpanel) headerTab).toggleDynamicDisplay(true); - } - if (detailTab != null && detailTab instanceof ADTabpanel) - { - ((ADTabpanel) detailTab).toggleDynamicDisplay(true); - } headerTab.dynamicDisplay(0); if (detailTab != null) { From fdee723aef7fc9cbcc04c7036489bb1e8791411f Mon Sep 17 00:00:00 2001 From: Heng Sin Low Date: Thu, 8 Aug 2013 00:52:22 +0800 Subject: [PATCH 27/57] IDEMPIERE-1248 Performance Optimization: Eliminate the fire and processing of duplicate event. Fixed bad method name. --- .../adempiere/webui/adwindow/AbstractADWindowContent.java | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/AbstractADWindowContent.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/AbstractADWindowContent.java index d37e8343be..633dd0492c 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/AbstractADWindowContent.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/AbstractADWindowContent.java @@ -1559,20 +1559,20 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements @Override public void onCallback(Boolean result) { - afterRefresh(fireEvent); + doOnRefresh(fireEvent); } }); } else { - afterRefresh(fireEvent); + doOnRefresh(fireEvent); } } /** * @param fireEvent */ - protected void afterRefresh(final boolean fireEvent) { + protected void doOnRefresh(final boolean fireEvent) { IADTabpanel headerTab = adTabbox.getSelectedTabpanel(); IADTabpanel detailTab = adTabbox.getSelectedDetailADTabpanel(); adTabbox.getSelectedGridTab().dataRefreshAll(fireEvent, true); From e7d2a7a2937dde946ca7c6cf503dac17b727427a Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Wed, 7 Aug 2013 14:02:45 -0500 Subject: [PATCH 28/57] IDEMPIERE-724 Zk: Make iDempiere theme more easily customizable - fix the theme resource url for calendar.zul path --- .../src/org/adempiere/webui/dashboard/CalendarWindow.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/dashboard/CalendarWindow.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/dashboard/CalendarWindow.java index 3123cc7e42..04c66a9cc9 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/dashboard/CalendarWindow.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/dashboard/CalendarWindow.java @@ -104,7 +104,7 @@ public class CalendarWindow extends Window implements EventListener { setTitle(Msg.getMsg(ctx,"Calendar")); setAttribute(Window.MODE_KEY, Window.MODE_EMBEDDED); - Component component = Executions.createComponents(ThemeManager.getThemeResource("/zul/calendar/calendar.zul"), this, null); + Component component = Executions.createComponents(ThemeManager.getThemeResource("zul/calendar/calendar.zul"), this, null); Borderlayout borderlayout = (Borderlayout) component.getFellow("main"); borderlayout.setStyle("position: absolute"); From bc2f43b3566bfa5ed5c34cbcc98e294027e33b85 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Wed, 7 Aug 2013 14:04:42 -0500 Subject: [PATCH 29/57] IDEMPIERE-1160 Hide potentially dangerous stuff from non-admin users / fix a NPE shown on logout after a non-access exception is thrown when opening window --- .../src/org/adempiere/webui/adwindow/ADWindow.java | 9 ++++++++- .../src/org/adempiere/webui/desktop/DefaultDesktop.java | 2 +- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADWindow.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADWindow.java index db1d86f882..0b29ecae2d 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADWindow.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADWindow.java @@ -24,7 +24,9 @@ import java.util.List; import java.util.Map; import java.util.Properties; +import org.adempiere.exceptions.AdempiereException; import org.adempiere.webui.desktop.IDesktop; +import org.adempiere.webui.exception.ApplicationException; import org.adempiere.webui.part.AbstractUIPart; import org.adempiere.webui.session.SessionManager; import org.compiere.model.MImage; @@ -88,7 +90,12 @@ public class ADWindow extends AbstractUIPart this.adWindowId = adWindowId; windowNo = SessionManager.getAppDesktop().registerWindow(this); this.query = query; - init(); + try { + init(); + } catch (Exception e) { + SessionManager.getAppDesktop().unregisterWindow(windowNo); + throw new ApplicationException(e.getMessage(), e); + } } private void init() diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/desktop/DefaultDesktop.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/desktop/DefaultDesktop.java index d45cc11356..7389d57016 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/desktop/DefaultDesktop.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/desktop/DefaultDesktop.java @@ -602,7 +602,7 @@ public class DefaultDesktop extends TabbedDesktop implements MenuListener, Seria if (windows != null) { for (int idx = 0; idx < windows.size(); idx++) { Object ad = windows.get(idx); - if (ad != null && ad instanceof ADWindow) { + if (ad != null && ad instanceof ADWindow && ((ADWindow)ad).getADWindowContent() != null) { if ( ((ADWindow)ad).getADWindowContent().isPendingChanges()) { return true; } From 6c03341bc4b333ab85011ed1082e113d9230f504 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Thu, 8 Aug 2013 01:02:41 -0500 Subject: [PATCH 30/57] IDEMPIERE-1256 2Pack exporting repeated elements --- .../pipo2/handler/ColumnElementHandler.java | 13 +++++++++++-- .../pipo2/handler/FieldElementHandler.java | 9 +++++++++ .../pipo2/handler/ImpFormatRowElementHandler.java | 6 ++++++ .../pipo2/handler/PreferenceElementHandler.java | 8 ++++++++ .../handler/PrintFormatItemElementHandler.java | 6 ++++++ .../pipo2/handler/PrintPaperElementHandler.java | 6 ++++++ .../pipo2/handler/ProcessParaElementHandler.java | 6 ++++++ .../pipo2/handler/ReportViewColElementHandler.java | 7 +++++++ .../adempiere/pipo2/handler/TabElementHandler.java | 6 ++++++ .../pipo2/handler/WorkflowNodeElementHandler.java | 6 ++++++ .../WorkflowNodeNextConditionElementHandler.java | 6 ++++++ .../handler/WorkflowNodeNextElementHandler.java | 6 ++++++ 12 files changed, 83 insertions(+), 2 deletions(-) diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ColumnElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ColumnElementHandler.java index 80828f2952..912e920828 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ColumnElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ColumnElementHandler.java @@ -20,16 +20,17 @@ import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.ResultSet; import java.sql.SQLException; +import java.util.ArrayList; import java.util.List; import java.util.logging.Level; import javax.xml.transform.sax.TransformerHandler; import org.adempiere.pipo2.AbstractElementHandler; -import org.adempiere.pipo2.PIPOContext; -import org.adempiere.pipo2.PoExporter; import org.adempiere.pipo2.Element; +import org.adempiere.pipo2.PIPOContext; import org.adempiere.pipo2.PackOut; +import org.adempiere.pipo2.PoExporter; import org.adempiere.pipo2.PoFiller; import org.adempiere.pipo2.exception.DatabaseAccessException; import org.adempiere.pipo2.exception.POSaveFailedException; @@ -49,6 +50,8 @@ import org.xml.sax.helpers.AttributesImpl; public class ColumnElementHandler extends AbstractElementHandler { + private List processedColumns = new ArrayList(); + public void startElement(PIPOContext ctx, Element element) throws SAXException { int success = 0; @@ -297,6 +300,12 @@ public class ColumnElementHandler extends AbstractElementHandler { throws SAXException { int AD_Column_ID = Env.getContextAsInt(ctx.ctx, X_AD_Column.COLUMNNAME_AD_Column_ID); + + if (processedColumns.contains(AD_Column_ID)) + return; + + processedColumns.add(AD_Column_ID); + AttributesImpl atts = new AttributesImpl(); X_AD_Column m_Column = new X_AD_Column(ctx.ctx, AD_Column_ID, getTrxName(ctx)); diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/FieldElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/FieldElementHandler.java index efd5451551..6924c31e4c 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/FieldElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/FieldElementHandler.java @@ -16,6 +16,7 @@ *****************************************************************************/ package org.adempiere.pipo2.handler; +import java.util.ArrayList; import java.util.List; import java.util.logging.Level; @@ -44,6 +45,8 @@ import org.xml.sax.helpers.AttributesImpl; public class FieldElementHandler extends AbstractElementHandler { + private List processedFields = new ArrayList(); + public void startElement(PIPOContext ctx, Element element) throws SAXException { String entitytype = getStringValue(element, "EntityType"); @@ -169,6 +172,12 @@ public class FieldElementHandler extends AbstractElementHandler { throws SAXException { int AD_Field_ID = Env.getContextAsInt(ctx.ctx, X_AD_Field.COLUMNNAME_AD_Field_ID); + + if (processedFields.contains(AD_Field_ID)) + return; + + processedFields.add(AD_Field_ID); + X_AD_Field m_Field = new X_AD_Field(ctx.ctx, AD_Field_ID, null); PackOut packOut = ctx.packOut; diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ImpFormatRowElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ImpFormatRowElementHandler.java index 653fed9b37..1383363de0 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ImpFormatRowElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ImpFormatRowElementHandler.java @@ -16,6 +16,7 @@ *****************************************************************************/ package org.adempiere.pipo2.handler; +import java.util.ArrayList; import java.util.List; import javax.xml.transform.sax.TransformerHandler; @@ -39,6 +40,8 @@ import org.xml.sax.helpers.AttributesImpl; public class ImpFormatRowElementHandler extends AbstractElementHandler { + private List formatrows = new ArrayList(); + public void startElement(PIPOContext ctx, Element element) throws SAXException { String action = null; @@ -151,6 +154,9 @@ public class ImpFormatRowElementHandler extends AbstractElementHandler { public void create(PIPOContext ctx, TransformerHandler document) throws SAXException { int AD_ImpFormat_Row_ID = Env.getContextAsInt(ctx.ctx, X_AD_ImpFormat_Row.COLUMNNAME_AD_ImpFormat_Row_ID); + if (formatrows.contains(AD_ImpFormat_Row_ID)) + return; + formatrows.add(AD_ImpFormat_Row_ID); X_AD_ImpFormat_Row m_ImpFormat_Row = new X_AD_ImpFormat_Row (ctx.ctx, AD_ImpFormat_Row_ID, getTrxName(ctx)); if (ctx.packOut.getFromDate() != null) { diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/PreferenceElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/PreferenceElementHandler.java index 296935d75f..c7af828a10 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/PreferenceElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/PreferenceElementHandler.java @@ -16,6 +16,7 @@ *****************************************************************************/ package org.adempiere.pipo2.handler; +import java.util.ArrayList; import java.util.List; import javax.xml.transform.sax.TransformerHandler; @@ -38,6 +39,8 @@ import org.xml.sax.helpers.AttributesImpl; public class PreferenceElementHandler extends AbstractElementHandler { + private ListprocessedPreferences = new ArrayList(); + public void startElement(PIPOContext ctx, Element element) throws SAXException { @@ -109,6 +112,11 @@ public class PreferenceElementHandler extends AbstractElementHandler { throws SAXException { int AD_Preference_ID = Env.getContextAsInt(ctx.ctx, X_AD_Preference.COLUMNNAME_AD_Preference_ID); + if (processedPreferences.contains(AD_Preference_ID)) + return; + + processedPreferences.add(AD_Preference_ID); + X_AD_Preference m_Preference = new X_AD_Preference(ctx.ctx, AD_Preference_ID, getTrxName(ctx)); diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/PrintFormatItemElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/PrintFormatItemElementHandler.java index d6991cd820..26c8573972 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/PrintFormatItemElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/PrintFormatItemElementHandler.java @@ -17,6 +17,7 @@ *****************************************************************************/ package org.adempiere.pipo2.handler; +import java.util.ArrayList; import java.util.List; import java.util.logging.Level; @@ -40,6 +41,8 @@ import org.xml.sax.helpers.AttributesImpl; public class PrintFormatItemElementHandler extends AbstractElementHandler { + private List formatitems = new ArrayList(); + public void startElement(PIPOContext ctx, Element element) throws SAXException { @@ -143,6 +146,9 @@ public class PrintFormatItemElementHandler extends AbstractElementHandler { throws SAXException { int AD_PrintFormatItem_ID = Env.getContextAsInt(ctx.ctx, X_AD_PrintFormatItem.COLUMNNAME_AD_PrintFormatItem_ID); + if (formatitems.contains(AD_PrintFormatItem_ID)) + return; + formatitems.add(AD_PrintFormatItem_ID); X_AD_PrintFormatItem m_PrintFormatItem = new X_AD_PrintFormatItem(ctx.ctx, AD_PrintFormatItem_ID, null); diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/PrintPaperElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/PrintPaperElementHandler.java index c2a55c6049..2d0d44a648 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/PrintPaperElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/PrintPaperElementHandler.java @@ -17,6 +17,7 @@ *****************************************************************************/ package org.adempiere.pipo2.handler; +import java.util.ArrayList; import java.util.List; import javax.xml.transform.sax.TransformerHandler; @@ -37,6 +38,8 @@ import org.xml.sax.helpers.AttributesImpl; public class PrintPaperElementHandler extends AbstractElementHandler { + private List papers = new ArrayList(); + public void startElement(PIPOContext ctx, Element element) throws SAXException { @@ -92,6 +95,9 @@ public class PrintPaperElementHandler extends AbstractElementHandler { throws SAXException { int AD_PrintPaper_ID = Env.getContextAsInt(ctx.ctx, X_AD_PrintPaper.COLUMNNAME_AD_PrintPaper_ID); + if (papers.contains(AD_PrintPaper_ID)) + return; + papers.add(AD_PrintPaper_ID); X_AD_PrintPaper printPaper = new X_AD_PrintPaper(ctx.ctx, AD_PrintPaper_ID, null); diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ProcessParaElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ProcessParaElementHandler.java index 95ad9d8595..d78f769c26 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ProcessParaElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ProcessParaElementHandler.java @@ -16,6 +16,7 @@ *****************************************************************************/ package org.adempiere.pipo2.handler; +import java.util.ArrayList; import java.util.List; import java.util.logging.Level; @@ -41,6 +42,8 @@ import org.xml.sax.helpers.AttributesImpl; public class ProcessParaElementHandler extends AbstractElementHandler { + private List processparas = new ArrayList(); + public void startElement(PIPOContext ctx, Element element) throws SAXException { List excludes = defaultExcludeList(X_AD_Process_Para.Table_Name); @@ -123,6 +126,9 @@ public class ProcessParaElementHandler extends AbstractElementHandler { throws SAXException { int AD_Process_Para_ID = Env.getContextAsInt(ctx.ctx, X_AD_Process_Para.COLUMNNAME_AD_Process_Para_ID); + if (processparas.contains(AD_Process_Para_ID)) + return; + processparas.add(AD_Process_Para_ID); X_AD_Process_Para m_Processpara = new X_AD_Process_Para(ctx.ctx, AD_Process_Para_ID, getTrxName(ctx)); diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ReportViewColElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ReportViewColElementHandler.java index fee37ccde9..a33cdf932e 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ReportViewColElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ReportViewColElementHandler.java @@ -16,6 +16,7 @@ *****************************************************************************/ package org.adempiere.pipo2.handler; +import java.util.ArrayList; import java.util.List; import javax.xml.transform.sax.TransformerHandler; @@ -40,6 +41,8 @@ import org.xml.sax.helpers.AttributesImpl; public class ReportViewColElementHandler extends AbstractElementHandler { + private List viewcols = new ArrayList(); + public void startElement(PIPOContext ctx, Element element) throws SAXException { List excludes = defaultExcludeList(X_AD_ReportView_Col.Table_Name); @@ -148,6 +151,10 @@ public class ReportViewColElementHandler extends AbstractElementHandler { throws SAXException { int AD_ReportView_Col_ID = Env.getContextAsInt(ctx.ctx, X_AD_ReportView_Col.COLUMNNAME_AD_ReportView_Col_ID); + if (viewcols.contains(AD_ReportView_Col_ID)) + return; + + viewcols.add(AD_ReportView_Col_ID); X_AD_ReportView_Col m_Reportview_Col = new X_AD_ReportView_Col(ctx.ctx, AD_ReportView_Col_ID, getTrxName(ctx)); diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/TabElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/TabElementHandler.java index 42b4c4f39b..ba48d51a47 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/TabElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/TabElementHandler.java @@ -18,6 +18,7 @@ package org.adempiere.pipo2.handler; import java.sql.PreparedStatement; import java.sql.ResultSet; +import java.util.ArrayList; import java.util.List; import java.util.logging.Level; @@ -50,6 +51,8 @@ public class TabElementHandler extends AbstractElementHandler { private FieldElementHandler fieldHandler = new FieldElementHandler(); + private List tabs = new ArrayList(); + public void startElement(PIPOContext ctx, Element element) throws SAXException { List excludes = defaultExcludeList(X_AD_Tab.Table_Name); @@ -173,6 +176,9 @@ public class TabElementHandler extends AbstractElementHandler { throws SAXException { PackOut packOut = ctx.packOut; int AD_Tab_ID = Env.getContextAsInt(ctx.ctx, "AD_Tab_ID"); + if (tabs.contains(AD_Tab_ID)) + return; + tabs.add(AD_Tab_ID); boolean createElement = true; X_AD_Tab m_Tab = new X_AD_Tab (ctx.ctx, AD_Tab_ID, getTrxName(ctx)); diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WorkflowNodeElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WorkflowNodeElementHandler.java index 05e15d9396..3fe14247cd 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WorkflowNodeElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WorkflowNodeElementHandler.java @@ -17,6 +17,7 @@ *****************************************************************************/ package org.adempiere.pipo2.handler; +import java.util.ArrayList; import java.util.List; import java.util.logging.Level; @@ -43,6 +44,8 @@ import org.xml.sax.helpers.AttributesImpl; public class WorkflowNodeElementHandler extends AbstractElementHandler { + private List nodes = new ArrayList(); + public void startElement(PIPOContext ctx, Element element) throws SAXException { List excludes = defaultExcludeList(X_AD_WF_Node.Table_Name); @@ -131,6 +134,9 @@ public class WorkflowNodeElementHandler extends AbstractElementHandler { throws SAXException { int AD_WF_Node_ID = Env.getContextAsInt(ctx.ctx, X_AD_WF_Node.COLUMNNAME_AD_WF_Node_ID); + if (nodes.contains(AD_WF_Node_ID)) + return; + nodes.add(AD_WF_Node_ID); AttributesImpl atts = new AttributesImpl(); MWFNode m_WF_Node = new MWFNode(ctx.ctx, AD_WF_Node_ID, getTrxName(ctx)); diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WorkflowNodeNextConditionElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WorkflowNodeNextConditionElementHandler.java index b7479f50a2..957b26ddc5 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WorkflowNodeNextConditionElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WorkflowNodeNextConditionElementHandler.java @@ -16,6 +16,7 @@ *****************************************************************************/ package org.adempiere.pipo2.handler; +import java.util.ArrayList; import java.util.List; import javax.xml.transform.sax.TransformerHandler; @@ -44,6 +45,8 @@ import org.xml.sax.helpers.AttributesImpl; public class WorkflowNodeNextConditionElementHandler extends AbstractElementHandler { + private List nextconds = new ArrayList(); + public void startElement(PIPOContext ctx, Element element) throws SAXException { List excludes = defaultExcludeList(X_AD_WF_NextCondition.Table_Name); @@ -154,6 +157,9 @@ public class WorkflowNodeNextConditionElementHandler extends public void create(PIPOContext ctx, TransformerHandler document) throws SAXException { int ad_wf_nodenextcondition_id = Env.getContextAsInt(ctx.ctx, "AD_WF_NextCondition_ID"); + if (nextconds.contains(ad_wf_nodenextcondition_id)) + return; + nextconds.add(ad_wf_nodenextcondition_id); MWFNextCondition m_WF_NodeNextCondition = new MWFNextCondition( ctx.ctx, ad_wf_nodenextcondition_id, null); if (ctx.packOut.getFromDate() != null) { diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WorkflowNodeNextElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WorkflowNodeNextElementHandler.java index bbe80bfda9..170f75bfd9 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WorkflowNodeNextElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WorkflowNodeNextElementHandler.java @@ -16,6 +16,7 @@ *****************************************************************************/ package org.adempiere.pipo2.handler; +import java.util.ArrayList; import java.util.List; import javax.xml.transform.sax.TransformerHandler; @@ -41,6 +42,8 @@ import org.xml.sax.helpers.AttributesImpl; public class WorkflowNodeNextElementHandler extends AbstractElementHandler { + private List nexts = new ArrayList(); + public void startElement(PIPOContext ctx, Element element) throws SAXException { List excludes = defaultExcludeList(MWFNodeNext.Table_Name); @@ -145,6 +148,9 @@ public class WorkflowNodeNextElementHandler extends AbstractElementHandler { public void create(PIPOContext ctx, TransformerHandler document) throws SAXException { int ad_wf_nodenext_id = Env.getContextAsInt(ctx.ctx, "AD_WF_NodeNext_ID"); + if (nexts.contains(ad_wf_nodenext_id)) + return; + nexts.add(ad_wf_nodenext_id); MWFNodeNext m_WF_NodeNext = new MWFNodeNext( ctx.ctx, ad_wf_nodenext_id, null); if (ctx.packOut.getFromDate() != null) { From b67f23135cf035845dcfb184b301d645665b7690 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Thu, 8 Aug 2013 02:01:29 -0500 Subject: [PATCH 31/57] IDEMPIERE-1256 2Pack exporting repeated elements / refactor to use common array - previous approach was not working as the array was local --- .../pipo2/handler/AdElementHandler.java | 5 +- .../handler/AttachmentElementHandler.java | 6 +- .../pipo2/handler/ColumnElementHandler.java | 8 +- .../handler/DynValRuleElementHandler.java | 10 +- .../handler/EntityTypeElementHandler.java | 7 +- .../pipo2/handler/FieldElementHandler.java | 12 +- .../handler/FieldGroupElementHandler.java | 5 +- .../pipo2/handler/FormElementHandler.java | 11 +- .../handler/ImpFormatElementHandler.java | 12 +- .../handler/ImpFormatRowElementHandler.java | 11 +- .../pipo2/handler/MenuElementHandler.java | 2 + .../pipo2/handler/MessageElementHandler.java | 5 +- .../handler/ModelValidatorElementHandler.java | 7 +- .../handler/ModificationElementHandler.java | 7 +- .../handler/PreferenceElementHandler.java | 13 +- .../handler/PrintFormatElementHandler.java | 12 +- .../PrintFormatItemElementHandler.java | 11 +- .../handler/PrintPaperElementHandler.java | 11 +- .../pipo2/handler/ProcessElementHandler.java | 7 +- .../handler/ProcessParaElementHandler.java | 11 +- .../handler/ReferenceElementHandler.java | 4 +- .../handler/ReferenceListElementHandler.java | 2 + .../handler/ReportViewColElementHandler.java | 10 +- .../handler/ReportViewElementHandler.java | 10 +- .../pipo2/handler/RoleElementHandler.java | 10 +- .../pipo2/handler/TabElementHandler.java | 10 +- .../pipo2/handler/TableElementHandler.java | 112 +++++++++--------- .../pipo2/handler/TaskElementHandler.java | 11 +- .../pipo2/handler/WindowElementHandler.java | 2 + .../pipo2/handler/WorkflowElementHandler.java | 3 +- .../handler/WorkflowNodeElementHandler.java | 11 +- ...rkflowNodeNextConditionElementHandler.java | 11 +- .../WorkflowNodeNextElementHandler.java | 11 +- .../src/org/adempiere/pipo2/PackOut.java | 10 ++ 34 files changed, 154 insertions(+), 236 deletions(-) diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/AdElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/AdElementHandler.java index d6fa1479fc..22ce68254f 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/AdElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/AdElementHandler.java @@ -114,12 +114,9 @@ public class AdElementHandler extends AbstractElementHandler { int adElement_id = Env.getContextAsInt(ctx.ctx, X_AD_Element.COLUMNNAME_AD_Element_ID); - - if (processedElements.contains(adElement_id)) + if (ctx.packOut.isExported(X_AD_Element.COLUMNNAME_AD_Element_ID+"|"+adElement_id)) return; - processedElements.add(adElement_id); - X_AD_Element mAdElement = new X_AD_Element(ctx.ctx, adElement_id, null); if (ctx.packOut.getFromDate() != null) { if (mAdElement.getUpdated().compareTo(ctx.packOut.getFromDate()) < 0) { diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/AttachmentElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/AttachmentElementHandler.java index b0bddf7e79..7573a5cedd 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/AttachmentElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/AttachmentElementHandler.java @@ -36,7 +36,6 @@ import org.compiere.model.X_AD_AttachmentNote; import org.compiere.model.X_AD_Package_Imp_Detail; import org.compiere.util.DB; import org.compiere.util.Env; - import org.xml.sax.SAXException; import org.xml.sax.helpers.AttributesImpl; @@ -127,12 +126,9 @@ public class AttachmentElementHandler extends AbstractElementHandler { int AD_Attachment_ID = Env.getContextAsInt(ctx.ctx, "AD_Attachment_ID"); - - if (attachments.contains(AD_Attachment_ID)) + if (ctx.packOut.isExported("AD_Attachment_ID"+"|"+AD_Attachment_ID)) return; - attachments.add(AD_Attachment_ID); - MAttachment mAttachment = new MAttachment(ctx.ctx, AD_Attachment_ID, getTrxName(ctx)); if (ctx.packOut.getFromDate() != null) { diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ColumnElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ColumnElementHandler.java index 912e920828..b309a99e12 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ColumnElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ColumnElementHandler.java @@ -20,7 +20,6 @@ import java.sql.Connection; import java.sql.DatabaseMetaData; import java.sql.ResultSet; import java.sql.SQLException; -import java.util.ArrayList; import java.util.List; import java.util.logging.Level; @@ -50,8 +49,6 @@ import org.xml.sax.helpers.AttributesImpl; public class ColumnElementHandler extends AbstractElementHandler { - private List processedColumns = new ArrayList(); - public void startElement(PIPOContext ctx, Element element) throws SAXException { int success = 0; @@ -300,12 +297,9 @@ public class ColumnElementHandler extends AbstractElementHandler { throws SAXException { int AD_Column_ID = Env.getContextAsInt(ctx.ctx, X_AD_Column.COLUMNNAME_AD_Column_ID); - - if (processedColumns.contains(AD_Column_ID)) + if (ctx.packOut.isExported(X_AD_Column.COLUMNNAME_AD_Column_ID+"|"+AD_Column_ID)) return; - processedColumns.add(AD_Column_ID); - AttributesImpl atts = new AttributesImpl(); X_AD_Column m_Column = new X_AD_Column(ctx.ctx, AD_Column_ID, getTrxName(ctx)); diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/DynValRuleElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/DynValRuleElementHandler.java index d18ee1bf5c..83a1f81b87 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/DynValRuleElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/DynValRuleElementHandler.java @@ -16,16 +16,15 @@ *****************************************************************************/ package org.adempiere.pipo2.handler; -import java.util.ArrayList; import java.util.List; import javax.xml.transform.sax.TransformerHandler; import org.adempiere.pipo2.AbstractElementHandler; -import org.adempiere.pipo2.PIPOContext; -import org.adempiere.pipo2.PoExporter; import org.adempiere.pipo2.Element; +import org.adempiere.pipo2.PIPOContext; import org.adempiere.pipo2.PackOut; +import org.adempiere.pipo2.PoExporter; import org.adempiere.pipo2.PoFiller; import org.adempiere.pipo2.exception.POSaveFailedException; import org.compiere.model.I_AD_Val_Rule; @@ -38,8 +37,6 @@ import org.xml.sax.helpers.AttributesImpl; public class DynValRuleElementHandler extends AbstractElementHandler { - private List rules = new ArrayList(); - public void startElement(PIPOContext ctx, Element element) throws SAXException { String entitytype = getStringValue(element, "EntityType"); if (isProcessElement(ctx.ctx, entitytype)) { @@ -99,9 +96,8 @@ public class DynValRuleElementHandler extends AbstractElementHandler { protected void create(PIPOContext ctx, TransformerHandler document) throws SAXException { int AD_Val_Rule_ID = Env.getContextAsInt(ctx.ctx, X_AD_Package_Exp_Detail.COLUMNNAME_AD_Val_Rule_ID); - if (rules.contains(AD_Val_Rule_ID)) + if (ctx.packOut.isExported(X_AD_Package_Exp_Detail.COLUMNNAME_AD_Val_Rule_ID+"|"+AD_Val_Rule_ID)) return; - rules.add(AD_Val_Rule_ID); X_AD_Val_Rule m_ValRule = new X_AD_Val_Rule (ctx.ctx, AD_Val_Rule_ID, null); if (ctx.packOut.getFromDate() != null) { diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/EntityTypeElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/EntityTypeElementHandler.java index 0574b272c3..b5948c5b4d 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/EntityTypeElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/EntityTypeElementHandler.java @@ -120,12 +120,9 @@ public class EntityTypeElementHandler extends AbstractElementHandler{ public void create(PIPOContext ctx, TransformerHandler document) throws SAXException { int AD_ElementType_ID = Env.getContextAsInt(ctx.ctx, X_AD_EntityType.COLUMNNAME_AD_EntityType_ID); - - if(entityTypes.contains(AD_ElementType_ID)) + if (ctx.packOut.isExported(X_AD_EntityType.COLUMNNAME_AD_EntityType_ID+"|"+AD_ElementType_ID)) return; - entityTypes.add(AD_ElementType_ID); - - + PackOut packOut = ctx.packOut; boolean createElement = true; diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/FieldElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/FieldElementHandler.java index 6924c31e4c..f3049f67a1 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/FieldElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/FieldElementHandler.java @@ -16,18 +16,17 @@ *****************************************************************************/ package org.adempiere.pipo2.handler; -import java.util.ArrayList; import java.util.List; import java.util.logging.Level; import javax.xml.transform.sax.TransformerHandler; import org.adempiere.pipo2.AbstractElementHandler; +import org.adempiere.pipo2.Element; import org.adempiere.pipo2.ElementHandler; import org.adempiere.pipo2.PIPOContext; -import org.adempiere.pipo2.PoExporter; -import org.adempiere.pipo2.Element; import org.adempiere.pipo2.PackOut; +import org.adempiere.pipo2.PoExporter; import org.adempiere.pipo2.PoFiller; import org.adempiere.pipo2.ReferenceUtils; import org.adempiere.pipo2.exception.POSaveFailedException; @@ -45,8 +44,6 @@ import org.xml.sax.helpers.AttributesImpl; public class FieldElementHandler extends AbstractElementHandler { - private List processedFields = new ArrayList(); - public void startElement(PIPOContext ctx, Element element) throws SAXException { String entitytype = getStringValue(element, "EntityType"); @@ -172,12 +169,9 @@ public class FieldElementHandler extends AbstractElementHandler { throws SAXException { int AD_Field_ID = Env.getContextAsInt(ctx.ctx, X_AD_Field.COLUMNNAME_AD_Field_ID); - - if (processedFields.contains(AD_Field_ID)) + if (ctx.packOut.isExported(X_AD_Field.COLUMNNAME_AD_Field_ID+"|"+AD_Field_ID)) return; - processedFields.add(AD_Field_ID); - X_AD_Field m_Field = new X_AD_Field(ctx.ctx, AD_Field_ID, null); PackOut packOut = ctx.packOut; diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/FieldGroupElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/FieldGroupElementHandler.java index e23a6324e5..453fd35b4d 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/FieldGroupElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/FieldGroupElementHandler.java @@ -120,12 +120,9 @@ public class FieldGroupElementHandler extends AbstractElementHandler { int fieldGroup_id = Env.getContextAsInt(ctx.ctx, X_AD_FieldGroup.COLUMNNAME_AD_FieldGroup_ID); - - if (processedFieldGroups.contains(fieldGroup_id)) + if (ctx.packOut.isExported(X_AD_FieldGroup.COLUMNNAME_AD_FieldGroup_ID+"|"+fieldGroup_id)) return; - processedFieldGroups.add(fieldGroup_id); - X_AD_FieldGroup fieldGroup = new X_AD_FieldGroup(ctx.ctx, fieldGroup_id, null); if (ctx.packOut.getFromDate() != null) { diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/FormElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/FormElementHandler.java index 7b4ff2081d..f58cee15cb 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/FormElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/FormElementHandler.java @@ -17,17 +17,16 @@ package org.adempiere.pipo2.handler; -import java.util.ArrayList; import java.util.List; import java.util.logging.Level; import javax.xml.transform.sax.TransformerHandler; import org.adempiere.pipo2.AbstractElementHandler; -import org.adempiere.pipo2.PIPOContext; -import org.adempiere.pipo2.PoExporter; import org.adempiere.pipo2.Element; +import org.adempiere.pipo2.PIPOContext; import org.adempiere.pipo2.PackOut; +import org.adempiere.pipo2.PoExporter; import org.adempiere.pipo2.PoFiller; import org.adempiere.pipo2.exception.POSaveFailedException; import org.compiere.model.I_AD_Form; @@ -41,8 +40,6 @@ import org.xml.sax.helpers.AttributesImpl; public class FormElementHandler extends AbstractElementHandler { - private List forms = new ArrayList(); - public void startElement(PIPOContext ctx, Element element) throws SAXException { List excludes = defaultExcludeList(X_AD_Form.Table_Name); @@ -102,9 +99,9 @@ public class FormElementHandler extends AbstractElementHandler { protected void create(PIPOContext ctx, TransformerHandler document) throws SAXException { int AD_Form_ID = Env.getContextAsInt(ctx.ctx, "AD_Form_ID"); - if (forms.contains(AD_Form_ID)) return; + if (ctx.packOut.isExported("AD_Form_ID"+"|"+AD_Form_ID)) + return; - forms.add(AD_Form_ID); X_AD_Form m_Form = new X_AD_Form (ctx.ctx, AD_Form_ID, null); if (ctx.packOut.getFromDate() != null) { diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ImpFormatElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ImpFormatElementHandler.java index dda587d4d3..de0c29c69a 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ImpFormatElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ImpFormatElementHandler.java @@ -18,17 +18,16 @@ package org.adempiere.pipo2.handler; import java.sql.PreparedStatement; import java.sql.ResultSet; -import java.util.ArrayList; import java.util.List; import java.util.logging.Level; import javax.xml.transform.sax.TransformerHandler; import org.adempiere.pipo2.AbstractElementHandler; -import org.adempiere.pipo2.PIPOContext; -import org.adempiere.pipo2.PoExporter; import org.adempiere.pipo2.Element; +import org.adempiere.pipo2.PIPOContext; import org.adempiere.pipo2.PackOut; +import org.adempiere.pipo2.PoExporter; import org.adempiere.pipo2.PoFiller; import org.adempiere.pipo2.exception.DatabaseAccessException; import org.adempiere.pipo2.exception.POSaveFailedException; @@ -46,8 +45,6 @@ public class ImpFormatElementHandler extends AbstractElementHandler { private ImpFormatRowElementHandler rowHandler = new ImpFormatRowElementHandler(); - private List formats = new ArrayList(); - public void startElement(PIPOContext ctx, Element element) throws SAXException { @@ -105,10 +102,9 @@ public class ImpFormatElementHandler extends AbstractElementHandler { throws SAXException { int import_id = Env.getContextAsInt(ctx.ctx, X_AD_Package_Exp_Detail.COLUMNNAME_AD_ImpFormat_ID); - - if (formats.contains(import_id)) + if (ctx.packOut.isExported(X_AD_Package_Exp_Detail.COLUMNNAME_AD_ImpFormat_ID+"|"+import_id)) return; - formats.add(import_id); + AttributesImpl atts = new AttributesImpl(); X_AD_ImpFormat m_ImpFormat = new X_AD_ImpFormat(ctx.ctx, import_id, null); diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ImpFormatRowElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ImpFormatRowElementHandler.java index 1383363de0..2a8f5c1045 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ImpFormatRowElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ImpFormatRowElementHandler.java @@ -16,16 +16,15 @@ *****************************************************************************/ package org.adempiere.pipo2.handler; -import java.util.ArrayList; import java.util.List; import javax.xml.transform.sax.TransformerHandler; import org.adempiere.pipo2.AbstractElementHandler; -import org.adempiere.pipo2.PIPOContext; -import org.adempiere.pipo2.PoExporter; import org.adempiere.pipo2.Element; +import org.adempiere.pipo2.PIPOContext; import org.adempiere.pipo2.PackOut; +import org.adempiere.pipo2.PoExporter; import org.adempiere.pipo2.PoFiller; import org.adempiere.pipo2.ReferenceUtils; import org.adempiere.pipo2.exception.POSaveFailedException; @@ -40,8 +39,6 @@ import org.xml.sax.helpers.AttributesImpl; public class ImpFormatRowElementHandler extends AbstractElementHandler { - private List formatrows = new ArrayList(); - public void startElement(PIPOContext ctx, Element element) throws SAXException { String action = null; @@ -154,9 +151,9 @@ public class ImpFormatRowElementHandler extends AbstractElementHandler { public void create(PIPOContext ctx, TransformerHandler document) throws SAXException { int AD_ImpFormat_Row_ID = Env.getContextAsInt(ctx.ctx, X_AD_ImpFormat_Row.COLUMNNAME_AD_ImpFormat_Row_ID); - if (formatrows.contains(AD_ImpFormat_Row_ID)) + if (ctx.packOut.isExported(X_AD_ImpFormat_Row.COLUMNNAME_AD_ImpFormat_Row_ID+"|"+AD_ImpFormat_Row_ID)) return; - formatrows.add(AD_ImpFormat_Row_ID); + X_AD_ImpFormat_Row m_ImpFormat_Row = new X_AD_ImpFormat_Row (ctx.ctx, AD_ImpFormat_Row_ID, getTrxName(ctx)); if (ctx.packOut.getFromDate() != null) { diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/MenuElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/MenuElementHandler.java index 7667f5b78e..54b3aca4d2 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/MenuElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/MenuElementHandler.java @@ -203,6 +203,8 @@ public class MenuElementHandler extends AbstractElementHandler { public void create(PIPOContext ctx, TransformerHandler document) throws SAXException { int AD_Menu_ID = Env.getContextAsInt(ctx.ctx, "AD_Menu_ID"); + if (ctx.packOut.isExported("AD_Menu_ID"+"|"+AD_Menu_ID)) + return; X_AD_Menu m_Menu = new X_AD_Menu(ctx.ctx, AD_Menu_ID, null); if (m_Menu.isSummary() == false) { createApplication(ctx, document, AD_Menu_ID); diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/MessageElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/MessageElementHandler.java index 5f734ac53e..b34e90e636 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/MessageElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/MessageElementHandler.java @@ -85,6 +85,7 @@ public class MessageElementHandler extends AbstractElementHandler { } if (mMessage.save(getTrxName(ctx)) == true){ logImportDetail (ctx, impDetail, 1, mMessage.getValue(), mMessage.get_ID(),action); + messages.add(mMessage.getAD_Message_ID()); } else{ logImportDetail (ctx, impDetail, 0, mMessage.getValue(), mMessage.get_ID(),action); @@ -103,9 +104,9 @@ public class MessageElementHandler extends AbstractElementHandler { public void create(PIPOContext ctx, TransformerHandler document) throws SAXException { int AD_Message_ID = Env.getContextAsInt(ctx.ctx, X_AD_Package_Exp_Detail.COLUMNNAME_AD_Message_ID); - if (messages.contains(AD_Message_ID)) + if (ctx.packOut.isExported(X_AD_Package_Exp_Detail.COLUMNNAME_AD_Message_ID+"|"+AD_Message_ID)) return; - messages.add(AD_Message_ID); + AttributesImpl atts = new AttributesImpl(); X_AD_Message m_Message = new X_AD_Message (ctx.ctx, AD_Message_ID, null); if (ctx.packOut.getFromDate() != null) { diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ModelValidatorElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ModelValidatorElementHandler.java index b3c06d2cec..6e93947853 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ModelValidatorElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ModelValidatorElementHandler.java @@ -99,12 +99,9 @@ public class ModelValidatorElementHandler extends AbstractElementHandler{ public void create(PIPOContext ctx, TransformerHandler document) throws SAXException { int ad_modelvalidator_id = Env.getContextAsInt(ctx.ctx, X_AD_ModelValidator.COLUMNNAME_AD_ModelValidator_ID); - - if (validators.contains(ad_modelvalidator_id)) + if (ctx.packOut.isExported(X_AD_ModelValidator.COLUMNNAME_AD_ModelValidator_ID+"|"+ad_modelvalidator_id)) return; - - validators.add(ad_modelvalidator_id); - + X_AD_ModelValidator validator = new X_AD_ModelValidator(ctx.ctx, ad_modelvalidator_id, null); if (ctx.packOut.getFromDate() != null) { diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ModificationElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ModificationElementHandler.java index 0a0e655921..8c349bae00 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ModificationElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ModificationElementHandler.java @@ -112,12 +112,9 @@ public class ModificationElementHandler extends AbstractElementHandler{ public void create(PIPOContext ctx, TransformerHandler document) throws SAXException { int ad_modification_id = Env.getContextAsInt(ctx.ctx, X_AD_Modification.COLUMNNAME_AD_Modification_ID); - - if (modifications.contains(ad_modification_id)) + if (ctx.packOut.isExported(X_AD_Modification.COLUMNNAME_AD_Modification_ID+"|"+ad_modification_id)) return; - - modifications.add(ad_modification_id); - + X_AD_Modification modification = new X_AD_Modification(ctx.ctx, ad_modification_id, null); if (ctx.packOut.getFromDate() != null) { diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/PreferenceElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/PreferenceElementHandler.java index c7af828a10..02c81b75cc 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/PreferenceElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/PreferenceElementHandler.java @@ -16,16 +16,15 @@ *****************************************************************************/ package org.adempiere.pipo2.handler; -import java.util.ArrayList; import java.util.List; import javax.xml.transform.sax.TransformerHandler; import org.adempiere.pipo2.AbstractElementHandler; -import org.adempiere.pipo2.PIPOContext; -import org.adempiere.pipo2.PoExporter; import org.adempiere.pipo2.Element; +import org.adempiere.pipo2.PIPOContext; import org.adempiere.pipo2.PackOut; +import org.adempiere.pipo2.PoExporter; import org.adempiere.pipo2.PoFiller; import org.adempiere.pipo2.exception.POSaveFailedException; import org.compiere.model.I_AD_Preference; @@ -39,8 +38,6 @@ import org.xml.sax.helpers.AttributesImpl; public class PreferenceElementHandler extends AbstractElementHandler { - private ListprocessedPreferences = new ArrayList(); - public void startElement(PIPOContext ctx, Element element) throws SAXException { @@ -112,11 +109,9 @@ public class PreferenceElementHandler extends AbstractElementHandler { throws SAXException { int AD_Preference_ID = Env.getContextAsInt(ctx.ctx, X_AD_Preference.COLUMNNAME_AD_Preference_ID); - if (processedPreferences.contains(AD_Preference_ID)) + if (ctx.packOut.isExported(X_AD_Preference.COLUMNNAME_AD_Preference_ID+"|"+AD_Preference_ID)) return; - - processedPreferences.add(AD_Preference_ID); - + X_AD_Preference m_Preference = new X_AD_Preference(ctx.ctx, AD_Preference_ID, getTrxName(ctx)); diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/PrintFormatElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/PrintFormatElementHandler.java index 529f48173d..dc4d362432 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/PrintFormatElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/PrintFormatElementHandler.java @@ -19,17 +19,16 @@ package org.adempiere.pipo2.handler; import java.sql.PreparedStatement; import java.sql.ResultSet; -import java.util.ArrayList; import java.util.List; import javax.xml.transform.sax.TransformerHandler; import org.adempiere.exceptions.DBException; import org.adempiere.pipo2.AbstractElementHandler; -import org.adempiere.pipo2.PIPOContext; -import org.adempiere.pipo2.PoExporter; import org.adempiere.pipo2.Element; +import org.adempiere.pipo2.PIPOContext; import org.adempiere.pipo2.PackOut; +import org.adempiere.pipo2.PoExporter; import org.adempiere.pipo2.PoFiller; import org.adempiere.pipo2.exception.POSaveFailedException; import org.compiere.model.I_AD_PrintFormat; @@ -48,8 +47,6 @@ import org.xml.sax.helpers.AttributesImpl; public class PrintFormatElementHandler extends AbstractElementHandler { - private List formats = new ArrayList(); - public void startElement(PIPOContext ctx, Element element) throws SAXException { @@ -103,10 +100,9 @@ public class PrintFormatElementHandler extends AbstractElementHandler { throws SAXException { int AD_PrintFormat_ID = Env.getContextAsInt(ctx.ctx, X_AD_Package_Exp_Detail.COLUMNNAME_AD_PrintFormat_ID); - - if (formats.contains(AD_PrintFormat_ID)) + if (ctx.packOut.isExported(X_AD_Package_Exp_Detail.COLUMNNAME_AD_PrintFormat_ID+"|"+AD_PrintFormat_ID)) return; - formats.add(AD_PrintFormat_ID); + AttributesImpl atts = new AttributesImpl(); MPrintFormat m_Printformat = new MPrintFormat(ctx.ctx, AD_PrintFormat_ID, null); diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/PrintFormatItemElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/PrintFormatItemElementHandler.java index 26c8573972..bd628aca30 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/PrintFormatItemElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/PrintFormatItemElementHandler.java @@ -17,17 +17,16 @@ *****************************************************************************/ package org.adempiere.pipo2.handler; -import java.util.ArrayList; import java.util.List; import java.util.logging.Level; import javax.xml.transform.sax.TransformerHandler; import org.adempiere.pipo2.AbstractElementHandler; -import org.adempiere.pipo2.PIPOContext; -import org.adempiere.pipo2.PoExporter; import org.adempiere.pipo2.Element; +import org.adempiere.pipo2.PIPOContext; import org.adempiere.pipo2.PackOut; +import org.adempiere.pipo2.PoExporter; import org.adempiere.pipo2.PoFiller; import org.adempiere.pipo2.ReferenceUtils; import org.adempiere.pipo2.exception.POSaveFailedException; @@ -41,8 +40,6 @@ import org.xml.sax.helpers.AttributesImpl; public class PrintFormatItemElementHandler extends AbstractElementHandler { - private List formatitems = new ArrayList(); - public void startElement(PIPOContext ctx, Element element) throws SAXException { @@ -146,9 +143,9 @@ public class PrintFormatItemElementHandler extends AbstractElementHandler { throws SAXException { int AD_PrintFormatItem_ID = Env.getContextAsInt(ctx.ctx, X_AD_PrintFormatItem.COLUMNNAME_AD_PrintFormatItem_ID); - if (formatitems.contains(AD_PrintFormatItem_ID)) + if (ctx.packOut.isExported(X_AD_PrintFormatItem.COLUMNNAME_AD_PrintFormatItem_ID+"|"+AD_PrintFormatItem_ID)) return; - formatitems.add(AD_PrintFormatItem_ID); + X_AD_PrintFormatItem m_PrintFormatItem = new X_AD_PrintFormatItem(ctx.ctx, AD_PrintFormatItem_ID, null); diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/PrintPaperElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/PrintPaperElementHandler.java index 2d0d44a648..43f169037c 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/PrintPaperElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/PrintPaperElementHandler.java @@ -17,16 +17,15 @@ *****************************************************************************/ package org.adempiere.pipo2.handler; -import java.util.ArrayList; import java.util.List; import javax.xml.transform.sax.TransformerHandler; import org.adempiere.pipo2.AbstractElementHandler; -import org.adempiere.pipo2.PIPOContext; -import org.adempiere.pipo2.PoExporter; import org.adempiere.pipo2.Element; +import org.adempiere.pipo2.PIPOContext; import org.adempiere.pipo2.PackOut; +import org.adempiere.pipo2.PoExporter; import org.adempiere.pipo2.PoFiller; import org.adempiere.pipo2.exception.POSaveFailedException; import org.compiere.model.I_AD_PrintPaper; @@ -38,8 +37,6 @@ import org.xml.sax.helpers.AttributesImpl; public class PrintPaperElementHandler extends AbstractElementHandler { - private List papers = new ArrayList(); - public void startElement(PIPOContext ctx, Element element) throws SAXException { @@ -95,9 +92,9 @@ public class PrintPaperElementHandler extends AbstractElementHandler { throws SAXException { int AD_PrintPaper_ID = Env.getContextAsInt(ctx.ctx, X_AD_PrintPaper.COLUMNNAME_AD_PrintPaper_ID); - if (papers.contains(AD_PrintPaper_ID)) + if (ctx.packOut.isExported(X_AD_PrintPaper.COLUMNNAME_AD_PrintPaper_ID+"|"+AD_PrintPaper_ID)) return; - papers.add(AD_PrintPaper_ID); + X_AD_PrintPaper printPaper = new X_AD_PrintPaper(ctx.ctx, AD_PrintPaper_ID, null); diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ProcessElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ProcessElementHandler.java index 07449bcd19..93cad5deb1 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ProcessElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ProcessElementHandler.java @@ -16,7 +16,6 @@ *****************************************************************************/ package org.adempiere.pipo2.handler; -import java.util.ArrayList; import java.util.List; import java.util.logging.Level; @@ -52,8 +51,6 @@ public class ProcessElementHandler extends AbstractElementHandler { private ProcessParaElementHandler paraHandler = new ProcessParaElementHandler(); - private List processes = new ArrayList(); - public void startElement(PIPOContext ctx, Element element) throws SAXException { String entitytype = getStringValue(element, "EntityType"); @@ -115,9 +112,9 @@ public class ProcessElementHandler extends AbstractElementHandler { public void create(PIPOContext ctx, TransformerHandler document) throws SAXException { int AD_Process_ID = Env.getContextAsInt(ctx.ctx, "AD_Process_ID"); - if (processes.contains(AD_Process_ID)) + if (ctx.packOut.isExported("AD_Process_ID"+"|"+AD_Process_ID)) return; - processes.add(AD_Process_ID); + PackOut packOut = ctx.packOut; X_AD_Process m_Process = new X_AD_Process(ctx.ctx, AD_Process_ID, getTrxName(ctx)); diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ProcessParaElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ProcessParaElementHandler.java index d78f769c26..ed803b27f4 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ProcessParaElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ProcessParaElementHandler.java @@ -16,18 +16,17 @@ *****************************************************************************/ package org.adempiere.pipo2.handler; -import java.util.ArrayList; import java.util.List; import java.util.logging.Level; import javax.xml.transform.sax.TransformerHandler; import org.adempiere.pipo2.AbstractElementHandler; +import org.adempiere.pipo2.Element; import org.adempiere.pipo2.ElementHandler; import org.adempiere.pipo2.PIPOContext; -import org.adempiere.pipo2.PoExporter; -import org.adempiere.pipo2.Element; import org.adempiere.pipo2.PackOut; +import org.adempiere.pipo2.PoExporter; import org.adempiere.pipo2.PoFiller; import org.adempiere.pipo2.ReferenceUtils; import org.adempiere.pipo2.exception.POSaveFailedException; @@ -42,8 +41,6 @@ import org.xml.sax.helpers.AttributesImpl; public class ProcessParaElementHandler extends AbstractElementHandler { - private List processparas = new ArrayList(); - public void startElement(PIPOContext ctx, Element element) throws SAXException { List excludes = defaultExcludeList(X_AD_Process_Para.Table_Name); @@ -126,9 +123,9 @@ public class ProcessParaElementHandler extends AbstractElementHandler { throws SAXException { int AD_Process_Para_ID = Env.getContextAsInt(ctx.ctx, X_AD_Process_Para.COLUMNNAME_AD_Process_Para_ID); - if (processparas.contains(AD_Process_Para_ID)) + if (ctx.packOut.isExported(X_AD_Process_Para.COLUMNNAME_AD_Process_Para_ID+"|"+AD_Process_Para_ID)) return; - processparas.add(AD_Process_Para_ID); + X_AD_Process_Para m_Processpara = new X_AD_Process_Para(ctx.ctx, AD_Process_Para_ID, getTrxName(ctx)); diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ReferenceElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ReferenceElementHandler.java index 3c3b9ea56b..557caaf24e 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ReferenceElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ReferenceElementHandler.java @@ -114,11 +114,9 @@ public class ReferenceElementHandler extends AbstractElementHandler { throws SAXException { int Reference_id = Env.getContextAsInt(ctx.ctx, X_AD_Reference.COLUMNNAME_AD_Reference_ID); - - if (references.contains(Reference_id)) + if (ctx.packOut.isExported(X_AD_Reference.COLUMNNAME_AD_Reference_ID+"|"+Reference_id)) return; - references.add(Reference_id); AttributesImpl atts = new AttributesImpl(); X_AD_Reference m_Reference = new X_AD_Reference(ctx.ctx, Reference_id, getTrxName(ctx)); diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ReferenceListElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ReferenceListElementHandler.java index 618568459e..3e05c6d50d 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ReferenceListElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ReferenceListElementHandler.java @@ -110,6 +110,8 @@ public class ReferenceListElementHandler extends AbstractElementHandler { throws SAXException { int AD_Ref_List_ID = Env.getContextAsInt(ctx.ctx, X_AD_Ref_List.COLUMNNAME_AD_Ref_List_ID); + if (ctx.packOut.isExported(X_AD_Ref_List.COLUMNNAME_AD_Ref_List_ID+"|"+AD_Ref_List_ID)) + return; X_AD_Ref_List m_Ref_List = new X_AD_Ref_List(ctx.ctx, AD_Ref_List_ID, getTrxName(ctx)); if (ctx.packOut.getFromDate() != null) { diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ReportViewColElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ReportViewColElementHandler.java index a33cdf932e..e042d50941 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ReportViewColElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ReportViewColElementHandler.java @@ -16,16 +16,15 @@ *****************************************************************************/ package org.adempiere.pipo2.handler; -import java.util.ArrayList; import java.util.List; import javax.xml.transform.sax.TransformerHandler; import org.adempiere.pipo2.AbstractElementHandler; -import org.adempiere.pipo2.PIPOContext; -import org.adempiere.pipo2.PoExporter; import org.adempiere.pipo2.Element; +import org.adempiere.pipo2.PIPOContext; import org.adempiere.pipo2.PackOut; +import org.adempiere.pipo2.PoExporter; import org.adempiere.pipo2.PoFiller; import org.adempiere.pipo2.ReferenceUtils; import org.adempiere.pipo2.exception.POSaveFailedException; @@ -41,8 +40,6 @@ import org.xml.sax.helpers.AttributesImpl; public class ReportViewColElementHandler extends AbstractElementHandler { - private List viewcols = new ArrayList(); - public void startElement(PIPOContext ctx, Element element) throws SAXException { List excludes = defaultExcludeList(X_AD_ReportView_Col.Table_Name); @@ -151,10 +148,9 @@ public class ReportViewColElementHandler extends AbstractElementHandler { throws SAXException { int AD_ReportView_Col_ID = Env.getContextAsInt(ctx.ctx, X_AD_ReportView_Col.COLUMNNAME_AD_ReportView_Col_ID); - if (viewcols.contains(AD_ReportView_Col_ID)) + if (ctx.packOut.isExported(X_AD_ReportView_Col.COLUMNNAME_AD_ReportView_Col_ID+"|"+AD_ReportView_Col_ID)) return; - viewcols.add(AD_ReportView_Col_ID); X_AD_ReportView_Col m_Reportview_Col = new X_AD_ReportView_Col(ctx.ctx, AD_ReportView_Col_ID, getTrxName(ctx)); diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ReportViewElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ReportViewElementHandler.java index d88fded70c..dc4e148d8f 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ReportViewElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ReportViewElementHandler.java @@ -18,18 +18,17 @@ package org.adempiere.pipo2.handler; import java.sql.PreparedStatement; import java.sql.ResultSet; -import java.util.ArrayList; import java.util.List; import javax.xml.transform.sax.TransformerHandler; import org.adempiere.exceptions.AdempiereException; import org.adempiere.pipo2.AbstractElementHandler; +import org.adempiere.pipo2.Element; import org.adempiere.pipo2.ElementHandler; import org.adempiere.pipo2.PIPOContext; -import org.adempiere.pipo2.PoExporter; -import org.adempiere.pipo2.Element; import org.adempiere.pipo2.PackOut; +import org.adempiere.pipo2.PoExporter; import org.adempiere.pipo2.PoFiller; import org.adempiere.pipo2.exception.POSaveFailedException; import org.compiere.model.I_AD_PrintFormat; @@ -48,8 +47,6 @@ public class ReportViewElementHandler extends AbstractElementHandler { private ReportViewColElementHandler columnHandler = new ReportViewColElementHandler(); - private List views = new ArrayList(); - public void startElement(PIPOContext ctx, Element element) throws SAXException { @@ -104,10 +101,9 @@ public class ReportViewElementHandler extends AbstractElementHandler { throws SAXException { PackOut packOut = ctx.packOut; int AD_ReportView_ID = Env.getContextAsInt(ctx.ctx, "AD_ReportView_ID"); - if (views.contains(AD_ReportView_ID)) + if (ctx.packOut.isExported("AD_ReportView_ID"+"|"+AD_ReportView_ID)) return; - views.add(AD_ReportView_ID); AttributesImpl atts = new AttributesImpl(); X_AD_ReportView m_Reportview = new X_AD_ReportView(ctx.ctx, AD_ReportView_ID, getTrxName(ctx)); diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/RoleElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/RoleElementHandler.java index 535cb299ae..ab4342004b 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/RoleElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/RoleElementHandler.java @@ -18,17 +18,16 @@ package org.adempiere.pipo2.handler; import java.sql.PreparedStatement; import java.sql.ResultSet; -import java.util.ArrayList; import java.util.List; import java.util.logging.Level; import javax.xml.transform.sax.TransformerHandler; import org.adempiere.pipo2.AbstractElementHandler; -import org.adempiere.pipo2.PIPOContext; -import org.adempiere.pipo2.PoExporter; import org.adempiere.pipo2.Element; +import org.adempiere.pipo2.PIPOContext; import org.adempiere.pipo2.PackOut; +import org.adempiere.pipo2.PoExporter; import org.adempiere.pipo2.PoFiller; import org.adempiere.pipo2.ReferenceUtils; import org.adempiere.pipo2.exception.DatabaseAccessException; @@ -51,8 +50,6 @@ import org.xml.sax.helpers.AttributesImpl; public class RoleElementHandler extends AbstractElementHandler { - private List roles = new ArrayList(); - private OrgRoleElementHandler orgHandler = new OrgRoleElementHandler(); private ProcessAccessElementHandler processHandler = new ProcessAccessElementHandler(); private UserRoleElementHandler userHandler = new UserRoleElementHandler(); @@ -117,9 +114,8 @@ public class RoleElementHandler extends AbstractElementHandler { throws SAXException { int Role_id = Env.getContextAsInt(ctx.ctx, X_AD_Package_Exp_Detail.COLUMNNAME_AD_Role_ID); - if (roles.contains(Role_id)) + if (ctx.packOut.isExported(X_AD_Package_Exp_Detail.COLUMNNAME_AD_Role_ID+"|"+Role_id)) return; - roles.add(Role_id); boolean createElement = true; X_AD_Role m_Role = new X_AD_Role(ctx.ctx, Role_id, null); diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/TabElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/TabElementHandler.java index ba48d51a47..584b3f0871 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/TabElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/TabElementHandler.java @@ -18,7 +18,6 @@ package org.adempiere.pipo2.handler; import java.sql.PreparedStatement; import java.sql.ResultSet; -import java.util.ArrayList; import java.util.List; import java.util.logging.Level; @@ -26,11 +25,11 @@ import javax.xml.transform.sax.TransformerHandler; import org.adempiere.exceptions.AdempiereException; import org.adempiere.pipo2.AbstractElementHandler; +import org.adempiere.pipo2.Element; import org.adempiere.pipo2.ElementHandler; import org.adempiere.pipo2.PIPOContext; -import org.adempiere.pipo2.PoExporter; -import org.adempiere.pipo2.Element; import org.adempiere.pipo2.PackOut; +import org.adempiere.pipo2.PoExporter; import org.adempiere.pipo2.PoFiller; import org.adempiere.pipo2.ReferenceUtils; import org.adempiere.pipo2.exception.DatabaseAccessException; @@ -51,8 +50,6 @@ public class TabElementHandler extends AbstractElementHandler { private FieldElementHandler fieldHandler = new FieldElementHandler(); - private List tabs = new ArrayList(); - public void startElement(PIPOContext ctx, Element element) throws SAXException { List excludes = defaultExcludeList(X_AD_Tab.Table_Name); @@ -176,9 +173,8 @@ public class TabElementHandler extends AbstractElementHandler { throws SAXException { PackOut packOut = ctx.packOut; int AD_Tab_ID = Env.getContextAsInt(ctx.ctx, "AD_Tab_ID"); - if (tabs.contains(AD_Tab_ID)) + if (ctx.packOut.isExported("AD_Tab_ID"+"|"+AD_Tab_ID)) return; - tabs.add(AD_Tab_ID); boolean createElement = true; X_AD_Tab m_Tab = new X_AD_Tab (ctx.ctx, AD_Tab_ID, getTrxName(ctx)); diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/TableElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/TableElementHandler.java index 3627e22d7f..11f6c4e901 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/TableElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/TableElementHandler.java @@ -123,74 +123,72 @@ public class TableElementHandler extends AbstractElementHandler { throws SAXException { int AD_Table_ID = Env.getContextAsInt(ctx.ctx, X_AD_Package_Exp_Detail.COLUMNNAME_AD_Table_ID); + if (ctx.packOut.isExported(X_AD_Package_Exp_Detail.COLUMNNAME_AD_Table_ID+"|"+AD_Table_ID)) + return; PackOut packOut = ctx.packOut; - boolean exported = isTableProcess(ctx, AD_Table_ID); AttributesImpl atts = new AttributesImpl(); - //Export table if not already done so - if (!exported){ - boolean createElement = true; - X_AD_Table m_Table = new X_AD_Table (ctx.ctx, AD_Table_ID, null); - if (ctx.packOut.getFromDate() != null) { - if (m_Table.getUpdated().compareTo(ctx.packOut.getFromDate()) < 0) { - createElement = false; - } - } - if (createElement) { - addTypeName(atts, "table"); - document.startElement("","",I_AD_Table.Table_Name,atts); - createTableBinding(ctx,document,m_Table); + boolean createElement = true; + X_AD_Table m_Table = new X_AD_Table (ctx.ctx, AD_Table_ID, null); + if (ctx.packOut.getFromDate() != null) { + if (m_Table.getUpdated().compareTo(ctx.packOut.getFromDate()) < 0) { + createElement = false; } + } + if (createElement) { + addTypeName(atts, "table"); + document.startElement("","",I_AD_Table.Table_Name,atts); + createTableBinding(ctx,document,m_Table); + } - String sql = "SELECT * FROM AD_Column WHERE AD_Table_ID = ? " + String sql = "SELECT * FROM AD_Column WHERE AD_Table_ID = ? " + " ORDER BY IsKey DESC, AD_Column_ID"; // Export key column as the first one - PreparedStatement pstmt = null; - ResultSet rs = null; + PreparedStatement pstmt = null; + ResultSet rs = null; - try { - pstmt = DB.prepareStatement (sql, getTrxName(ctx)); - pstmt.setInt(1, AD_Table_ID); - rs = pstmt.executeQuery(); + try { + pstmt = DB.prepareStatement (sql, getTrxName(ctx)); + pstmt.setInt(1, AD_Table_ID); + rs = pstmt.executeQuery(); - while (rs.next()){ - ElementHandler handler = packOut.getHandler("AD_Element"); - handler.packOut(packOut,document,null,rs.getInt(X_AD_Column.COLUMNNAME_AD_Element_ID)); + while (rs.next()){ + ElementHandler handler = packOut.getHandler("AD_Element"); + handler.packOut(packOut,document,null,rs.getInt(X_AD_Column.COLUMNNAME_AD_Element_ID)); - if (rs.getInt(X_AD_Package_Exp_Detail.COLUMNNAME_AD_Reference_ID)>0) - { - handler = packOut.getHandler("AD_Reference"); - handler.packOut(packOut,document,null,rs.getInt(X_AD_Package_Exp_Detail.COLUMNNAME_AD_Reference_ID)); - } - - if (rs.getInt("AD_Reference_Value_ID")>0) - { - handler = packOut.getHandler("AD_Reference"); - handler.packOut(packOut,document,null,rs.getInt("AD_Reference_Value_ID")); - } - - if (rs.getInt(X_AD_Package_Exp_Detail.COLUMNNAME_AD_Process_ID)>0) - { - handler = packOut.getHandler("AD_Process"); - handler.packOut(packOut,document,null,rs.getInt(X_AD_Package_Exp_Detail.COLUMNNAME_AD_Process_ID)); - } - - if (rs.getInt(X_AD_Package_Exp_Detail.COLUMNNAME_AD_Val_Rule_ID)>0) - { - handler = packOut.getHandler("AD_Val_Rule"); - handler.packOut(packOut,document,null,rs.getInt(X_AD_Package_Exp_Detail.COLUMNNAME_AD_Val_Rule_ID)); - } - - createColumn(ctx, document, rs.getInt("AD_Column_ID")); + if (rs.getInt(X_AD_Package_Exp_Detail.COLUMNNAME_AD_Reference_ID)>0) + { + handler = packOut.getHandler("AD_Reference"); + handler.packOut(packOut,document,null,rs.getInt(X_AD_Package_Exp_Detail.COLUMNNAME_AD_Reference_ID)); } - } catch (Exception e) { - throw new AdempiereException(e); - } finally { - DB.close(rs, pstmt); - } - - if (createElement) { - document.endElement("","",X_AD_Table.Table_Name); + + if (rs.getInt("AD_Reference_Value_ID")>0) + { + handler = packOut.getHandler("AD_Reference"); + handler.packOut(packOut,document,null,rs.getInt("AD_Reference_Value_ID")); + } + + if (rs.getInt(X_AD_Package_Exp_Detail.COLUMNNAME_AD_Process_ID)>0) + { + handler = packOut.getHandler("AD_Process"); + handler.packOut(packOut,document,null,rs.getInt(X_AD_Package_Exp_Detail.COLUMNNAME_AD_Process_ID)); + } + + if (rs.getInt(X_AD_Package_Exp_Detail.COLUMNNAME_AD_Val_Rule_ID)>0) + { + handler = packOut.getHandler("AD_Val_Rule"); + handler.packOut(packOut,document,null,rs.getInt(X_AD_Package_Exp_Detail.COLUMNNAME_AD_Val_Rule_ID)); + } + + createColumn(ctx, document, rs.getInt("AD_Column_ID")); } + } catch (Exception e) { + throw new AdempiereException(e); + } finally { + DB.close(rs, pstmt); + } + + if (createElement) { + document.endElement("","",X_AD_Table.Table_Name); } } diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/TaskElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/TaskElementHandler.java index 29b9849fa2..e336e0cc06 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/TaskElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/TaskElementHandler.java @@ -17,17 +17,16 @@ package org.adempiere.pipo2.handler; -import java.util.ArrayList; import java.util.List; import java.util.logging.Level; import javax.xml.transform.sax.TransformerHandler; import org.adempiere.pipo2.AbstractElementHandler; -import org.adempiere.pipo2.PIPOContext; -import org.adempiere.pipo2.PoExporter; import org.adempiere.pipo2.Element; +import org.adempiere.pipo2.PIPOContext; import org.adempiere.pipo2.PackOut; +import org.adempiere.pipo2.PoExporter; import org.adempiere.pipo2.PoFiller; import org.adempiere.pipo2.exception.POSaveFailedException; import org.compiere.model.I_AD_Task; @@ -40,8 +39,6 @@ import org.xml.sax.helpers.AttributesImpl; public class TaskElementHandler extends AbstractElementHandler { - private List tasks = new ArrayList(); - public void startElement(PIPOContext ctx, Element element) throws SAXException { List excludes = defaultExcludeList(X_AD_Task.Table_Name); @@ -101,9 +98,9 @@ public class TaskElementHandler extends AbstractElementHandler { public void create(PIPOContext ctx, TransformerHandler document) throws SAXException { int AD_Task_ID = Env.getContextAsInt(ctx.ctx, "AD_Task_ID"); - if (tasks.contains(AD_Task_ID)) + if (ctx.packOut.isExported("AD_Task_ID"+"|"+AD_Task_ID)) return; - tasks.add(AD_Task_ID); + X_AD_Task m_Task = new X_AD_Task(ctx.ctx, AD_Task_ID, null); if (ctx.packOut.getFromDate() != null) { if (m_Task.getUpdated().compareTo(ctx.packOut.getFromDate()) < 0) { diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WindowElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WindowElementHandler.java index d1e20c5b03..1a00beda9d 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WindowElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WindowElementHandler.java @@ -122,6 +122,8 @@ public class WindowElementHandler extends AbstractElementHandler { public void create(PIPOContext ctx, TransformerHandler document) throws SAXException { int AD_Window_ID = Env.getContextAsInt(ctx.ctx, "AD_Window_ID"); + if (ctx.packOut.isExported("AD_Window_ID"+"|"+AD_Window_ID)) + return; PackOut packOut = ctx.packOut; boolean createElement = true; diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WorkflowElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WorkflowElementHandler.java index ea67fdd4d0..b2597b1d05 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WorkflowElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WorkflowElementHandler.java @@ -157,10 +157,9 @@ public class WorkflowElementHandler extends AbstractElementHandler { throws SAXException { int AD_Workflow_ID = Env.getContextAsInt(ctx.ctx, X_AD_Package_Exp_Detail.COLUMNNAME_AD_Workflow_ID); - if (workflows.contains(AD_Workflow_ID)) + if (ctx.packOut.isExported(X_AD_Package_Exp_Detail.COLUMNNAME_AD_Workflow_ID+"|"+AD_Workflow_ID)) return; PackOut packOut = ctx.packOut; - workflows.add(AD_Workflow_ID); int ad_wf_nodenext_id = 0; int ad_wf_nodenextcondition_id = 0; AttributesImpl atts = new AttributesImpl(); diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WorkflowNodeElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WorkflowNodeElementHandler.java index 3fe14247cd..a9b73c2e47 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WorkflowNodeElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WorkflowNodeElementHandler.java @@ -17,17 +17,16 @@ *****************************************************************************/ package org.adempiere.pipo2.handler; -import java.util.ArrayList; import java.util.List; import java.util.logging.Level; import javax.xml.transform.sax.TransformerHandler; import org.adempiere.pipo2.AbstractElementHandler; -import org.adempiere.pipo2.PIPOContext; -import org.adempiere.pipo2.PoExporter; import org.adempiere.pipo2.Element; +import org.adempiere.pipo2.PIPOContext; import org.adempiere.pipo2.PackOut; +import org.adempiere.pipo2.PoExporter; import org.adempiere.pipo2.PoFiller; import org.adempiere.pipo2.ReferenceUtils; import org.adempiere.pipo2.exception.POSaveFailedException; @@ -44,8 +43,6 @@ import org.xml.sax.helpers.AttributesImpl; public class WorkflowNodeElementHandler extends AbstractElementHandler { - private List nodes = new ArrayList(); - public void startElement(PIPOContext ctx, Element element) throws SAXException { List excludes = defaultExcludeList(X_AD_WF_Node.Table_Name); @@ -134,9 +131,9 @@ public class WorkflowNodeElementHandler extends AbstractElementHandler { throws SAXException { int AD_WF_Node_ID = Env.getContextAsInt(ctx.ctx, X_AD_WF_Node.COLUMNNAME_AD_WF_Node_ID); - if (nodes.contains(AD_WF_Node_ID)) + if (ctx.packOut.isExported(X_AD_WF_Node.COLUMNNAME_AD_WF_Node_ID+"|"+AD_WF_Node_ID)) return; - nodes.add(AD_WF_Node_ID); + AttributesImpl atts = new AttributesImpl(); MWFNode m_WF_Node = new MWFNode(ctx.ctx, AD_WF_Node_ID, getTrxName(ctx)); diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WorkflowNodeNextConditionElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WorkflowNodeNextConditionElementHandler.java index 957b26ddc5..d3cfcc7b58 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WorkflowNodeNextConditionElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WorkflowNodeNextConditionElementHandler.java @@ -16,16 +16,15 @@ *****************************************************************************/ package org.adempiere.pipo2.handler; -import java.util.ArrayList; import java.util.List; import javax.xml.transform.sax.TransformerHandler; import org.adempiere.pipo2.AbstractElementHandler; -import org.adempiere.pipo2.PIPOContext; -import org.adempiere.pipo2.PoExporter; import org.adempiere.pipo2.Element; +import org.adempiere.pipo2.PIPOContext; import org.adempiere.pipo2.PackOut; +import org.adempiere.pipo2.PoExporter; import org.adempiere.pipo2.PoFiller; import org.adempiere.pipo2.ReferenceUtils; import org.adempiere.pipo2.exception.POSaveFailedException; @@ -45,8 +44,6 @@ import org.xml.sax.helpers.AttributesImpl; public class WorkflowNodeNextConditionElementHandler extends AbstractElementHandler { - private List nextconds = new ArrayList(); - public void startElement(PIPOContext ctx, Element element) throws SAXException { List excludes = defaultExcludeList(X_AD_WF_NextCondition.Table_Name); @@ -157,9 +154,9 @@ public class WorkflowNodeNextConditionElementHandler extends public void create(PIPOContext ctx, TransformerHandler document) throws SAXException { int ad_wf_nodenextcondition_id = Env.getContextAsInt(ctx.ctx, "AD_WF_NextCondition_ID"); - if (nextconds.contains(ad_wf_nodenextcondition_id)) + if (ctx.packOut.isExported("AD_WF_NextCondition_ID"+"|"+ad_wf_nodenextcondition_id)) return; - nextconds.add(ad_wf_nodenextcondition_id); + MWFNextCondition m_WF_NodeNextCondition = new MWFNextCondition( ctx.ctx, ad_wf_nodenextcondition_id, null); if (ctx.packOut.getFromDate() != null) { diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WorkflowNodeNextElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WorkflowNodeNextElementHandler.java index 170f75bfd9..40af8d8ede 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WorkflowNodeNextElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WorkflowNodeNextElementHandler.java @@ -16,16 +16,15 @@ *****************************************************************************/ package org.adempiere.pipo2.handler; -import java.util.ArrayList; import java.util.List; import javax.xml.transform.sax.TransformerHandler; import org.adempiere.pipo2.AbstractElementHandler; -import org.adempiere.pipo2.PIPOContext; -import org.adempiere.pipo2.PoExporter; import org.adempiere.pipo2.Element; +import org.adempiere.pipo2.PIPOContext; import org.adempiere.pipo2.PackOut; +import org.adempiere.pipo2.PoExporter; import org.adempiere.pipo2.PoFiller; import org.adempiere.pipo2.ReferenceUtils; import org.adempiere.pipo2.exception.POSaveFailedException; @@ -42,8 +41,6 @@ import org.xml.sax.helpers.AttributesImpl; public class WorkflowNodeNextElementHandler extends AbstractElementHandler { - private List nexts = new ArrayList(); - public void startElement(PIPOContext ctx, Element element) throws SAXException { List excludes = defaultExcludeList(MWFNodeNext.Table_Name); @@ -148,9 +145,9 @@ public class WorkflowNodeNextElementHandler extends AbstractElementHandler { public void create(PIPOContext ctx, TransformerHandler document) throws SAXException { int ad_wf_nodenext_id = Env.getContextAsInt(ctx.ctx, "AD_WF_NodeNext_ID"); - if (nexts.contains(ad_wf_nodenext_id)) + if (ctx.packOut.isExported("AD_WF_NodeNext_ID"+"|"+ad_wf_nodenext_id)) return; - nexts.add(ad_wf_nodenext_id); + MWFNodeNext m_WF_NodeNext = new MWFNodeNext( ctx.ctx, ad_wf_nodenext_id, null); if (ctx.packOut.getFromDate() != null) { diff --git a/org.adempiere.pipo/src/org/adempiere/pipo2/PackOut.java b/org.adempiere.pipo/src/org/adempiere/pipo2/PackOut.java index 55bd0c53a6..d403c8bd09 100644 --- a/org.adempiere.pipo/src/org/adempiere/pipo2/PackOut.java +++ b/org.adempiere.pipo/src/org/adempiere/pipo2/PackOut.java @@ -28,6 +28,7 @@ import java.io.OutputStream; import java.io.OutputStreamWriter; import java.io.UnsupportedEncodingException; import java.sql.Timestamp; +import java.util.ArrayList; import java.util.List; import java.util.Properties; import java.util.logging.Level; @@ -454,4 +455,13 @@ public class PackOut public void setCtx(Properties ctx) { pipoContext.ctx = ctx; } + + private List processedRecords = new ArrayList(); + public boolean isExported(String key) { + if (processedRecords.contains(key)) + return true; + processedRecords.add(key); + return false; + } + } // PackOut From fad6179c03b699219ccef473b4b2bc2e753875e5 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Thu, 8 Aug 2013 16:29:52 -0500 Subject: [PATCH 32/57] IDEMPIERE-1025 Improve translation for custom tables / failing on new as recordid was being set before savinb --- .../src/org/adempiere/pipo2/handler/AdElementHandler.java | 2 +- .../src/org/adempiere/pipo2/handler/FieldElementHandler.java | 1 + .../org/adempiere/pipo2/handler/FieldGroupElementHandler.java | 1 + .../src/org/adempiere/pipo2/handler/FormElementHandler.java | 1 + .../src/org/adempiere/pipo2/handler/MenuElementHandler.java | 1 + .../src/org/adempiere/pipo2/handler/MessageElementHandler.java | 1 + .../adempiere/pipo2/handler/PrintFormatItemElementHandler.java | 1 + .../src/org/adempiere/pipo2/handler/ProcessElementHandler.java | 1 + .../org/adempiere/pipo2/handler/ProcessParaElementHandler.java | 1 + .../org/adempiere/pipo2/handler/ReferenceElementHandler.java | 1 + .../adempiere/pipo2/handler/ReferenceListElementHandler.java | 1 + .../org/adempiere/pipo2/handler/SQLStatementElementHandler.java | 2 +- .../src/org/adempiere/pipo2/handler/TabElementHandler.java | 2 +- .../src/org/adempiere/pipo2/handler/TaskElementHandler.java | 1 + .../src/org/adempiere/pipo2/handler/WindowElementHandler.java | 1 + .../src/org/adempiere/pipo2/handler/WorkflowElementHandler.java | 1 + .../org/adempiere/pipo2/handler/WorkflowNodeElementHandler.java | 1 + 17 files changed, 17 insertions(+), 3 deletions(-) diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/AdElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/AdElementHandler.java index 22ce68254f..ea0aed24a0 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/AdElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/AdElementHandler.java @@ -78,7 +78,6 @@ public class AdElementHandler extends AbstractElementHandler { element.unresolved = notfounds.toString(); return; } - element.recordId = mElement.getAD_Element_ID(); if (mElement.is_new() || mElement.is_Changed()) { X_AD_Package_Imp_Detail impDetail = createImportDetail(ctx, element.qName, X_AD_Element.Table_Name, X_AD_Element.Table_ID); if (!mElement.is_new()) { @@ -100,6 +99,7 @@ public class AdElementHandler extends AbstractElementHandler { throw new POSaveFailedException("Failed to save Element " + mElement.getName()); } } + element.recordId = mElement.getAD_Element_ID(); } else { element.skip = true; } diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/FieldElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/FieldElementHandler.java index f3049f67a1..d189a205a4 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/FieldElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/FieldElementHandler.java @@ -151,6 +151,7 @@ public class FieldElementHandler extends AbstractElementHandler { if (mField.save(getTrxName(ctx)) == true) { logImportDetail(ctx, impDetail, 1, mField.getName(), mField .get_ID(), action); + element.recordId = mField.getAD_Field_ID(); } else { logImportDetail(ctx, impDetail, 0, mField.getName(), mField .get_ID(), action); diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/FieldGroupElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/FieldGroupElementHandler.java index 453fd35b4d..5ff20bcb03 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/FieldGroupElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/FieldGroupElementHandler.java @@ -99,6 +99,7 @@ public class FieldGroupElementHandler extends AbstractElementHandler { logImportDetail(ctx, impDetail, 1, fieldGroup.getName(), fieldGroup.get_ID(), action); processedFieldGroups.add(fieldGroup.getAD_FieldGroup_ID()); + element.recordId = fieldGroup.getAD_FieldGroup_ID(); } else { logImportDetail(ctx, impDetail, 0, fieldGroup.getName(), diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/FormElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/FormElementHandler.java index f58cee15cb..124aedb61a 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/FormElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/FormElementHandler.java @@ -82,6 +82,7 @@ public class FormElementHandler extends AbstractElementHandler { if (mForm.save(getTrxName(ctx)) == true){ logImportDetail (ctx, impDetail, 1, mForm.getName(), mForm.get_ID(), action); + element.recordId = mForm.get_ID(); } else{ logImportDetail (ctx, impDetail, 0, mForm.getName(), mForm.get_ID(), action); diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/MenuElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/MenuElementHandler.java index 54b3aca4d2..50560f026e 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/MenuElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/MenuElementHandler.java @@ -96,6 +96,7 @@ public class MenuElementHandler extends AbstractElementHandler { try { logImportDetail(ctx, impDetail, 1, mMenu.getName(), mMenu .get_ID(), action); + element.recordId = mMenu.get_ID(); } catch (SAXException e) { if (log.isLoggable(Level.INFO)) log.info("setmenu:" + e); } diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/MessageElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/MessageElementHandler.java index b34e90e636..c08904babe 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/MessageElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/MessageElementHandler.java @@ -86,6 +86,7 @@ public class MessageElementHandler extends AbstractElementHandler { if (mMessage.save(getTrxName(ctx)) == true){ logImportDetail (ctx, impDetail, 1, mMessage.getValue(), mMessage.get_ID(),action); messages.add(mMessage.getAD_Message_ID()); + element.recordId = mMessage.getAD_Message_ID(); } else{ logImportDetail (ctx, impDetail, 0, mMessage.getValue(), mMessage.get_ID(),action); diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/PrintFormatItemElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/PrintFormatItemElementHandler.java index bd628aca30..013e769bb2 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/PrintFormatItemElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/PrintFormatItemElementHandler.java @@ -128,6 +128,7 @@ public class PrintFormatItemElementHandler extends AbstractElementHandler { if (mPrintFormatItem.save(getTrxName(ctx)) == true) { logImportDetail(ctx, impDetail, 1, mPrintFormatItem.getName(), mPrintFormatItem.get_ID(), action); + element.recordId = mPrintFormatItem.get_ID(); } else { logImportDetail(ctx, impDetail, 0, mPrintFormatItem.getName(), mPrintFormatItem.get_ID(), action); diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ProcessElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ProcessElementHandler.java index 93cad5deb1..cd56c3b26e 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ProcessElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ProcessElementHandler.java @@ -95,6 +95,7 @@ public class ProcessElementHandler extends AbstractElementHandler { if (mProcess.save(getTrxName(ctx)) == true) { logImportDetail(ctx, impDetail, 1, mProcess.getName(), mProcess .get_ID(), action); + element.recordId = mProcess.get_ID(); } else { logImportDetail(ctx, impDetail, 0, mProcess.getName(), mProcess .get_ID(), action); diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ProcessParaElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ProcessParaElementHandler.java index ed803b27f4..22e3261757 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ProcessParaElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ProcessParaElementHandler.java @@ -105,6 +105,7 @@ public class ProcessParaElementHandler extends AbstractElementHandler { if (mProcessPara.save(getTrxName(ctx)) == true) { logImportDetail(ctx, impDetail, 1, mProcessPara.getColumnName(), mProcessPara.get_ID(), action); + element.recordId = mProcessPara.get_ID(); } else { logImportDetail(ctx, impDetail, 0, mProcessPara.getColumnName(), mProcessPara.get_ID(), action); diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ReferenceElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ReferenceElementHandler.java index 557caaf24e..be8fafc870 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ReferenceElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ReferenceElementHandler.java @@ -96,6 +96,7 @@ public class ReferenceElementHandler extends AbstractElementHandler { logImportDetail(ctx, impDetail, 1, mReference.getName(), mReference.get_ID(), action); references.add(mReference.getAD_Reference_ID()); + element.recordId = mReference.getAD_Reference_ID(); } else { logImportDetail(ctx, impDetail, 0, mReference.getName(), mReference.get_ID(), action); diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ReferenceListElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ReferenceListElementHandler.java index 3e05c6d50d..f0e68bc27a 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ReferenceListElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/ReferenceListElementHandler.java @@ -92,6 +92,7 @@ public class ReferenceListElementHandler extends AbstractElementHandler { if (mRefList.save(getTrxName(ctx)) == true) { logImportDetail(ctx, impDetail, 1, mRefList.getName(), mRefList.get_ID(), action); + element.recordId = mRefList.get_ID(); } else { logImportDetail(ctx, impDetail, 0, mRefList.getName(), mRefList.get_ID(), action); diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/SQLStatementElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/SQLStatementElementHandler.java index cdae44cef7..767b3e4364 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/SQLStatementElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/SQLStatementElementHandler.java @@ -51,7 +51,7 @@ public class SQLStatementElementHandler extends AbstractElementHandler { // NOTE Postgres needs to commit DDL statements // add a SQL command just with COMMIT if you want to simulate the Oracle behavior (commit on DDL) - // It is also recommended on postgres to add a COMMIT before any SQL statement that can fail + // It is also necessary on postgres to add a COMMIT before any SQL statement that can fail // for example a create index where is possible the index already exists pstmt = DB.prepareStatement(sql, getTrxName(ctx)); diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/TabElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/TabElementHandler.java index 584b3f0871..73c7a0c713 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/TabElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/TabElementHandler.java @@ -154,7 +154,7 @@ public class TabElementHandler extends AbstractElementHandler { } if (mTab.save(getTrxName(ctx)) == true){ logImportDetail (ctx, impDetail, 1, mTab.getName(), mTab.get_ID(),action); - element.recordId = mTab.getAD_Tab_ID(); + element.recordId = mTab.get_ID(); } else { logImportDetail (ctx, impDetail, 0, mTab.getName(), mTab.get_ID(),action); throw new POSaveFailedException("Failed to save Tab " + mTab.getName()); diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/TaskElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/TaskElementHandler.java index e336e0cc06..214fc0f181 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/TaskElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/TaskElementHandler.java @@ -81,6 +81,7 @@ public class TaskElementHandler extends AbstractElementHandler { if (mTask.save(getTrxName(ctx)) == true) { logImportDetail(ctx, impDetail, 1, mTask.getName(), mTask.get_ID(), action); + element.recordId = mTask.get_ID(); } else { logImportDetail(ctx, impDetail, 0, mTask.getName(), mTask.get_ID(), action); diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WindowElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WindowElementHandler.java index 1a00beda9d..6abaed21b8 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WindowElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WindowElementHandler.java @@ -105,6 +105,7 @@ public class WindowElementHandler extends AbstractElementHandler { logImportDetail(ctx, impDetail, 1, mWindow.getName(), mWindow .get_ID(), action); windows.add(mWindow.getAD_Window_ID()); + element.recordId = mWindow.get_ID(); } else { logImportDetail(ctx, impDetail, 0, mWindow.getName(), mWindow .get_ID(), action); diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WorkflowElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WorkflowElementHandler.java index b2597b1d05..68cf9142b4 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WorkflowElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WorkflowElementHandler.java @@ -103,6 +103,7 @@ public class WorkflowElementHandler extends AbstractElementHandler { logImportDetail(ctx,impDetail, 1, mWorkflow.getName(), mWorkflow .get_ID(), action); workflows.add(mWorkflow.getAD_Workflow_ID()); + element.recordId = mWorkflow.get_ID(); } else { log.info("m_Workflow save failure"); logImportDetail(ctx, impDetail, 0, mWorkflow.getName(), mWorkflow diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WorkflowNodeElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WorkflowNodeElementHandler.java index a9b73c2e47..ad187d908a 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WorkflowNodeElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/WorkflowNodeElementHandler.java @@ -112,6 +112,7 @@ public class WorkflowNodeElementHandler extends AbstractElementHandler { log.info("m_WFNode save success"); logImportDetail(ctx, impDetail, 1, mWFNode.getName(), mWFNode .get_ID(), action); + element.recordId = mWFNode.get_ID(); } else { log.info("m_WFNode save failure"); logImportDetail(ctx, impDetail, 0, mWFNode.getName(), mWFNode From 7e347cdbfcfa794d87001d977f30f1669d8cabd0 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Thu, 8 Aug 2013 17:56:28 -0500 Subject: [PATCH 33/57] minor - removing import warnings left from previous commits --- org.adempiere.ui.swing/src/org/compiere/acct/AcctViewer.java | 1 - .../WEB-INF/src/org/adempiere/webui/acct/WAcctViewer.java | 1 - .../WEB-INF/src/org/adempiere/webui/adwindow/ADWindow.java | 1 - 3 files changed, 3 deletions(-) diff --git a/org.adempiere.ui.swing/src/org/compiere/acct/AcctViewer.java b/org.adempiere.ui.swing/src/org/compiere/acct/AcctViewer.java index 790fc12929..76a11493f7 100644 --- a/org.adempiere.ui.swing/src/org/compiere/acct/AcctViewer.java +++ b/org.adempiere.ui.swing/src/org/compiere/acct/AcctViewer.java @@ -59,7 +59,6 @@ import org.compiere.util.CLogMgt; import org.compiere.util.CLogger; import org.compiere.util.DisplayType; import org.compiere.util.Env; -import org.compiere.util.Ini; import org.compiere.util.KeyNamePair; import org.compiere.util.Msg; import org.compiere.util.ValueNamePair; diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/acct/WAcctViewer.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/acct/WAcctViewer.java index 42899d00b3..538742630b 100755 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/acct/WAcctViewer.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/acct/WAcctViewer.java @@ -62,7 +62,6 @@ import org.compiere.report.core.RModelExcelExporter; import org.compiere.tools.FileUtil; import org.compiere.util.CLogger; import org.compiere.util.Env; -import org.compiere.util.Ini; import org.compiere.util.KeyNamePair; import org.compiere.util.Msg; import org.compiere.util.Util; diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADWindow.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADWindow.java index 0b29ecae2d..62d3e87af3 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADWindow.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADWindow.java @@ -24,7 +24,6 @@ import java.util.List; import java.util.Map; import java.util.Properties; -import org.adempiere.exceptions.AdempiereException; import org.adempiere.webui.desktop.IDesktop; import org.adempiere.webui.exception.ApplicationException; import org.adempiere.webui.part.AbstractUIPart; From d45691b14155dd031754579232128844799ea416 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Thu, 8 Aug 2013 17:58:28 -0500 Subject: [PATCH 34/57] IDEMPIERE-1258 Deleting a record is not refreshing recent items / based on patch from Richard Morales --- .../src/org/compiere/model/MRecentItem.java | 8 ++++---- .../adempiere/webui/adwindow/AbstractADWindowContent.java | 2 ++ 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/org.adempiere.base/src/org/compiere/model/MRecentItem.java b/org.adempiere.base/src/org/compiere/model/MRecentItem.java index f66b1ceb97..2dc37a3b8f 100644 --- a/org.adempiere.base/src/org/compiere/model/MRecentItem.java +++ b/org.adempiere.base/src/org/compiere/model/MRecentItem.java @@ -40,12 +40,12 @@ import org.osgi.service.event.Event; */ public class MRecentItem extends X_AD_RecentItem { - public static final String ON_RECENT_ITEM_CHANGED_TOPIC = "onRecentItemChanged"; - /** * */ - private static final long serialVersionUID = 8337619537799431984L; + private static final long serialVersionUID = 6899554875745832L; + + public static final String ON_RECENT_ITEM_CHANGED_TOPIC = "onRecentItemChanged"; /** Recent Item Cache */ private static CCache s_cache = new CCache(Table_Name, 10); @@ -189,7 +189,7 @@ public class MRecentItem extends X_AD_RecentItem publishChangedEvent(AD_User_ID); } - private static void publishChangedEvent(int AD_User_ID) { + public static void publishChangedEvent(int AD_User_ID) { IMessageService service = Service.locator().locate(IMessageService.class).getService(); if (service != null) { ITopic topic = service.getTopic(ON_RECENT_ITEM_CHANGED_TOPIC); diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/AbstractADWindowContent.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/AbstractADWindowContent.java index 633dd0492c..e3966e8c6f 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/AbstractADWindowContent.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/AbstractADWindowContent.java @@ -2006,6 +2006,7 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements adTabbox.getSelectedTabpanel().dynamicDisplay(0); focusToActivePanel(); + MRecentItem.publishChangedEvent(Env.getAD_User_ID(ctx)); } } }); @@ -2175,6 +2176,7 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements adTabbox.getSelectedTabpanel().dynamicDisplay(0); messagePanel.dispose(); + MRecentItem.publishChangedEvent(Env.getAD_User_ID(ctx)); } else { logger.fine("cancel"); } From 51c8295228e5c5e5fb4b9ead701949634afc0621 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Thu, 8 Aug 2013 18:00:22 -0500 Subject: [PATCH 35/57] IDEMPIERE-1236 Recent Items - Names do not reflect definitions from Window Customization --- .../src/org/compiere/model/MRecentItem.java | 10 ++++++++-- .../src/org/compiere/model/MUserDefWin.java | 11 +++++++---- 2 files changed, 15 insertions(+), 6 deletions(-) diff --git a/org.adempiere.base/src/org/compiere/model/MRecentItem.java b/org.adempiere.base/src/org/compiere/model/MRecentItem.java index 2dc37a3b8f..394d3ec490 100644 --- a/org.adempiere.base/src/org/compiere/model/MRecentItem.java +++ b/org.adempiere.base/src/org/compiere/model/MRecentItem.java @@ -276,8 +276,14 @@ public class MRecentItem extends X_AD_RecentItem } public String getLabel() { - MWindow win = new MWindow(getCtx(), getAD_Window_ID(), null); - String windowName = win.get_Translation("Name"); + String windowName; + MUserDefWin userDef = MUserDefWin.getBestMatch(getCtx(), getAD_Window_ID()); + if (userDef != null) { + windowName = userDef.getName(); + } else { + MWindow win = new MWindow(getCtx(), getAD_Window_ID(), null); + windowName = win.get_Translation("Name"); + } MTable table = MTable.get(getCtx(), getAD_Table_ID()); PO po = table.getPO(getRecord_ID(), null); if (po == null) { diff --git a/org.adempiere.base/src/org/compiere/model/MUserDefWin.java b/org.adempiere.base/src/org/compiere/model/MUserDefWin.java index 511b2eb0cf..22e2796e0e 100644 --- a/org.adempiere.base/src/org/compiere/model/MUserDefWin.java +++ b/org.adempiere.base/src/org/compiere/model/MUserDefWin.java @@ -108,9 +108,8 @@ public class MUserDefWin extends X_AD_UserDef_Win { // Check Cache Integer key = new Integer(window_ID); - MUserDefWin retValue = (MUserDefWin)s_cache.get(key); - if (retValue != null) - return retValue; + if (s_cache.containsKey(key)) + return s_cache.get(key); // parameters final int AD_Org_ID = Env.getAD_Org_ID(ctx); @@ -122,8 +121,10 @@ public class MUserDefWin extends X_AD_UserDef_Win // candidates MUserDefWin[] candidates = getAll(ctx, window_ID); - if (candidates == null) + if (candidates == null) { + s_cache.put(key, null); return null; + } final int size = candidates.length; int[] weight = new int[size]; @@ -177,10 +178,12 @@ public class MUserDefWin extends X_AD_UserDef_Win } if (weight[maxindex] > -1) { + MUserDefWin retValue = null; retValue=candidates[maxindex]; s_cache.put(key, retValue); return retValue; } else { + s_cache.put(key, null); return null; } } From 5f9e6834abbb420c1ed8c431876827a8e319f8a3 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Fri, 9 Aug 2013 08:14:40 -0500 Subject: [PATCH 36/57] IDEMPIERE-1138 Broadcast Message Problems / minor fix to migration script --- .../i1.0c-release/oracle/20131707164800_IDEMPIERE-1138.sql | 2 +- .../i1.0c-release/postgresql/20131707164800_IDEMPIERE-1138.sql | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/migration/i1.0c-release/oracle/20131707164800_IDEMPIERE-1138.sql b/migration/i1.0c-release/oracle/20131707164800_IDEMPIERE-1138.sql index a5e1979a03..1ff8ff0276 100644 --- a/migration/i1.0c-release/oracle/20131707164800_IDEMPIERE-1138.sql +++ b/migration/i1.0c-release/oracle/20131707164800_IDEMPIERE-1138.sql @@ -23,7 +23,7 @@ INSERT INTO AD_Ref_List_Trl (AD_Language,AD_Ref_List_ID, Description,Name, IsTra -- Jul 16, 2013 5:56:21 PM COT -- IDEMPIERE-1138 Broadcast Message Problems -INSERT INTO AD_Ref_List (AD_Ref_List_ID,AD_Reference_ID,Description,Name,AD_Ref_List_UU,Value,Created,CreatedBy,Updated,UpdatedBy,IsActive,AD_Org_ID,AD_Client_ID,EntityType) VALUES (200157,200020,'Repeat it until the message expires or until it has been acknowledged, whatever happens first','Until Expiration or Acknowledge','aa345f63-dfbe-4d18-aae4-e5ed06cd4407','O',TO_DATE('2013-07-16 17:56:21','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2013-07-16 17:56:21','YYYY-MM-DD HH24:MI:SS'),100,'Y',0,0,'U') +INSERT INTO AD_Ref_List (AD_Ref_List_ID,AD_Reference_ID,Description,Name,AD_Ref_List_UU,Value,Created,CreatedBy,Updated,UpdatedBy,IsActive,AD_Org_ID,AD_Client_ID,EntityType) VALUES (200157,200020,'Repeat it until the message expires or until it has been acknowledged, whatever happens first','Until Expiration or Acknowledge','aa345f63-dfbe-4d18-aae4-e5ed06cd4407','O',TO_DATE('2013-07-16 17:56:21','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2013-07-16 17:56:21','YYYY-MM-DD HH24:MI:SS'),100,'Y',0,0,'D') ; -- Jul 16, 2013 5:56:21 PM COT diff --git a/migration/i1.0c-release/postgresql/20131707164800_IDEMPIERE-1138.sql b/migration/i1.0c-release/postgresql/20131707164800_IDEMPIERE-1138.sql index 4aefe2812f..9328946efc 100644 --- a/migration/i1.0c-release/postgresql/20131707164800_IDEMPIERE-1138.sql +++ b/migration/i1.0c-release/postgresql/20131707164800_IDEMPIERE-1138.sql @@ -20,7 +20,7 @@ INSERT INTO AD_Ref_List_Trl (AD_Language,AD_Ref_List_ID, Description,Name, IsTra -- Jul 16, 2013 5:56:21 PM COT -- IDEMPIERE-1138 Broadcast Message Problems -INSERT INTO AD_Ref_List (AD_Ref_List_ID,AD_Reference_ID,Description,Name,AD_Ref_List_UU,Value,Created,CreatedBy,Updated,UpdatedBy,IsActive,AD_Org_ID,AD_Client_ID,EntityType) VALUES (200157,200020,'Repeat it until the message expires or until it has been acknowledged, whatever happens first','Until Expiration or Acknowledge','aa345f63-dfbe-4d18-aae4-e5ed06cd4407','O',TO_TIMESTAMP('2013-07-16 17:56:21','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2013-07-16 17:56:21','YYYY-MM-DD HH24:MI:SS'),100,'Y',0,0,'U') +INSERT INTO AD_Ref_List (AD_Ref_List_ID,AD_Reference_ID,Description,Name,AD_Ref_List_UU,Value,Created,CreatedBy,Updated,UpdatedBy,IsActive,AD_Org_ID,AD_Client_ID,EntityType) VALUES (200157,200020,'Repeat it until the message expires or until it has been acknowledged, whatever happens first','Until Expiration or Acknowledge','aa345f63-dfbe-4d18-aae4-e5ed06cd4407','O',TO_TIMESTAMP('2013-07-16 17:56:21','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2013-07-16 17:56:21','YYYY-MM-DD HH24:MI:SS'),100,'Y',0,0,'D') ; -- Jul 16, 2013 5:56:21 PM COT From 6de28338975fd8c43cf2e3c54e654a3d945e17c4 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Fri, 9 Aug 2013 10:56:19 -0500 Subject: [PATCH 37/57] IDEMPIERE-1232 Zoom condition fixes / IDEMPIERE-528 --- .../oracle/201308090826_IDEMPIERE-1232.sql | 64 +++++++++++++++++++ .../201308090826_IDEMPIERE-1232.sql | 64 +++++++++++++++++++ .../org/adempiere/process/UUIDGenerator.java | 3 +- .../org/compiere/model/MZoomCondition.java | 26 +++++--- .../webui/editor/WEditorPopupMenu.java | 21 +++++- 5 files changed, 164 insertions(+), 14 deletions(-) create mode 100644 migration/i1.0c-release/oracle/201308090826_IDEMPIERE-1232.sql create mode 100644 migration/i1.0c-release/postgresql/201308090826_IDEMPIERE-1232.sql diff --git a/migration/i1.0c-release/oracle/201308090826_IDEMPIERE-1232.sql b/migration/i1.0c-release/oracle/201308090826_IDEMPIERE-1232.sql new file mode 100644 index 0000000000..07cb4ac839 --- /dev/null +++ b/migration/i1.0c-release/oracle/201308090826_IDEMPIERE-1232.sql @@ -0,0 +1,64 @@ +-- Aug 9, 2013 8:16:28 AM COT +-- IDEMPIERE-1232 Zoom condition fixes +INSERT INTO AD_Element (ColumnName,AD_Element_ID,Name,PrintName,AD_Element_UU,Created,Updated,AD_Org_ID,CreatedBy,UpdatedBy,IsActive,AD_Client_ID,EntityType) VALUES ('AD_ZoomCondition_UU',202578,'AD_ZoomCondition_UU','AD_ZoomCondition_UU','7f562afd-d2c2-40cc-8f5f-fd71597f7621',TO_DATE('2013-08-09 08:16:19','YYYY-MM-DD HH24:MI:SS'),TO_DATE('2013-08-09 08:16:19','YYYY-MM-DD HH24:MI:SS'),0,100,100,'Y',0,'D') +; + +-- Aug 9, 2013 8:16:28 AM COT +INSERT INTO AD_Element_Trl (AD_Language,AD_Element_ID, Help,PO_Description,PO_Help,Name,Description,PrintName,PO_Name,PO_PrintName, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Element_Trl_UU ) SELECT l.AD_Language,t.AD_Element_ID, t.Help,t.PO_Description,t.PO_Help,t.Name,t.Description,t.PrintName,t.PO_Name,t.PO_PrintName, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Element t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Element_ID=202578 AND NOT EXISTS (SELECT * FROM AD_Element_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Element_ID=t.AD_Element_ID) +; + +-- Aug 9, 2013 8:16:28 AM COT +INSERT INTO AD_Column (Version,AD_Table_ID,AD_Column_ID,IsMandatory,IsTranslated,IsIdentifier,IsParent,FieldLength,IsSelectionColumn,AD_Reference_ID,IsKey,AD_Column_UU,IsUpdateable,ColumnName,Name,Updated,CreatedBy,AD_Org_ID,IsActive,Created,UpdatedBy,IsAlwaysUpdateable,AD_Client_ID,EntityType,IsEncrypted,AD_Element_ID) VALUES (1.0,200066,210683,'N','N','N','N',36,'N',10,'N','4748d5ef-fbba-458e-8947-8676fce31f72','Y','AD_ZoomCondition_UU','AD_ZoomCondition_UU',TO_DATE('2013-08-09 08:16:19','YYYY-MM-DD HH24:MI:SS'),100,0,'Y',TO_DATE('2013-08-09 08:16:19','YYYY-MM-DD HH24:MI:SS'),100,'N',0,'D','N',202578) +; + +-- Aug 9, 2013 8:16:28 AM COT +INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Column_Trl_UU ) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=210683 AND NOT EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Column_ID=t.AD_Column_ID) +; + +-- Aug 9, 2013 8:16:28 AM COT +ALTER TABLE AD_ZoomCondition ADD AD_ZoomCondition_UU NVARCHAR2(36) DEFAULT NULL +; + +-- Aug 9, 2013 8:16:29 AM COT +ALTER TABLE AD_ZoomCondition ADD CONSTRAINT AD_ZoomCondition_UU_idx UNIQUE (AD_ZoomCondition_UU) +; + +-- Aug 9, 2013 8:24:07 AM COT +UPDATE AD_ZoomCondition SET AD_ZoomCondition_UU='3962168d-caad-4057-b009-b5db798ce6d8' WHERE AD_ZoomCondition_ID=200001 +; + +-- Aug 9, 2013 8:24:07 AM COT +UPDATE AD_ZoomCondition SET AD_ZoomCondition_UU='9cc206f5-283f-428d-a3b5-9d8a7669d7e8' WHERE AD_ZoomCondition_ID=200002 +; + +-- Aug 9, 2013 9:35:21 AM COT +INSERT INTO AD_ZoomCondition (AD_Client_ID,AD_Org_ID,AD_Window_ID,AD_ZoomCondition_ID,Created,CreatedBy,IsActive,Updated,UpdatedBy,SeqNo,WhereClause,AD_Table_ID,Name,AD_ZoomCondition_UU) VALUES (0,0,53098,200003,TO_DATE('2013-08-09 09:35:14','YYYY-MM-DD HH24:MI:SS'),100,'Y',TO_DATE('2013-08-09 09:35:14','YYYY-MM-DD HH24:MI:SS'),100,10,'M_InOut.MovementType IN (''V-'')',319,'Return to Vendor','c4403f97-5fe3-4a70-a71a-006739d5d8cc') +; + +-- Aug 9, 2013 9:35:48 AM COT +INSERT INTO AD_ZoomCondition (AD_Client_ID,AD_Org_ID,AD_Window_ID,AD_ZoomCondition_ID,Created,CreatedBy,IsActive,Updated,UpdatedBy,SeqNo,WhereClause,AD_Table_ID,Name,AD_ZoomCondition_UU) VALUES (0,0,53097,200004,TO_DATE('2013-08-09 09:35:47','YYYY-MM-DD HH24:MI:SS'),100,'Y',TO_DATE('2013-08-09 09:35:47','YYYY-MM-DD HH24:MI:SS'),100,20,'M_InOut.MovementType IN (''C+'')',319,'Customer Return','c6c7fde3-2a9c-4eaf-8d22-fc2537de1678') +; + +-- Aug 9, 2013 9:38:48 AM COT +UPDATE AD_Tab SET Help='The Return to Vendor Line Tab defines the individual items in a Return to Vendor.', Name='Return to Vendor Line', Description='Return to Vendor Line',Updated=TO_DATE('2013-08-09 09:38:48','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Tab_ID=53277 +; + +-- Aug 9, 2013 9:39:06 AM COT +UPDATE AD_Tab SET Description='Optional Confirmations of Return to Vendor Lines',Updated=TO_DATE('2013-08-09 09:39:06','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Tab_ID=53278 +; + +-- Aug 9, 2013 9:40:05 AM COT +UPDATE AD_Field SET IsCentrallyMaintained='N', Help='The Return to Vendor', Description='Return to Vendor Document', Name='Return to Vendor',Updated=TO_DATE('2013-08-09 09:40:05','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=57900 +; + +-- Aug 9, 2013 9:40:45 AM COT +UPDATE AD_Tab SET Help='The Customer Return Line Tab defines the individual items in a Customer Return.', Name='Customer Return Line', Description='Customer Return Line',Updated=TO_DATE('2013-08-09 09:40:45','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Tab_ID=53272 +; + +-- Aug 9, 2013 9:41:08 AM COT +UPDATE AD_Field SET IsCentrallyMaintained='N', Help='The Customer Return', Description='Customer Return Document', Name='Customer Return',Updated=TO_DATE('2013-08-09 09:41:08','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=57761 +; + +SELECT register_migration_script('201308090826_IDEMPIERE-1232.sql') FROM dual +; + diff --git a/migration/i1.0c-release/postgresql/201308090826_IDEMPIERE-1232.sql b/migration/i1.0c-release/postgresql/201308090826_IDEMPIERE-1232.sql new file mode 100644 index 0000000000..2f18544128 --- /dev/null +++ b/migration/i1.0c-release/postgresql/201308090826_IDEMPIERE-1232.sql @@ -0,0 +1,64 @@ +-- Aug 9, 2013 8:16:28 AM COT +-- IDEMPIERE-1232 Zoom condition fixes +INSERT INTO AD_Element (ColumnName,AD_Element_ID,Name,PrintName,AD_Element_UU,Created,Updated,AD_Org_ID,CreatedBy,UpdatedBy,IsActive,AD_Client_ID,EntityType) VALUES ('AD_ZoomCondition_UU',202578,'AD_ZoomCondition_UU','AD_ZoomCondition_UU','7f562afd-d2c2-40cc-8f5f-fd71597f7621',TO_TIMESTAMP('2013-08-09 08:16:19','YYYY-MM-DD HH24:MI:SS'),TO_TIMESTAMP('2013-08-09 08:16:19','YYYY-MM-DD HH24:MI:SS'),0,100,100,'Y',0,'D') +; + +-- Aug 9, 2013 8:16:28 AM COT +INSERT INTO AD_Element_Trl (AD_Language,AD_Element_ID, Help,PO_Description,PO_Help,Name,Description,PrintName,PO_Name,PO_PrintName, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Element_Trl_UU ) SELECT l.AD_Language,t.AD_Element_ID, t.Help,t.PO_Description,t.PO_Help,t.Name,t.Description,t.PrintName,t.PO_Name,t.PO_PrintName, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Element t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Element_ID=202578 AND NOT EXISTS (SELECT * FROM AD_Element_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Element_ID=t.AD_Element_ID) +; + +-- Aug 9, 2013 8:16:28 AM COT +INSERT INTO AD_Column (Version,AD_Table_ID,AD_Column_ID,IsMandatory,IsTranslated,IsIdentifier,IsParent,FieldLength,IsSelectionColumn,AD_Reference_ID,IsKey,AD_Column_UU,IsUpdateable,ColumnName,Name,Updated,CreatedBy,AD_Org_ID,IsActive,Created,UpdatedBy,IsAlwaysUpdateable,AD_Client_ID,EntityType,IsEncrypted,AD_Element_ID) VALUES (1.0,200066,210683,'N','N','N','N',36,'N',10,'N','4748d5ef-fbba-458e-8947-8676fce31f72','Y','AD_ZoomCondition_UU','AD_ZoomCondition_UU',TO_TIMESTAMP('2013-08-09 08:16:19','YYYY-MM-DD HH24:MI:SS'),100,0,'Y',TO_TIMESTAMP('2013-08-09 08:16:19','YYYY-MM-DD HH24:MI:SS'),100,'N',0,'D','N',202578) +; + +-- Aug 9, 2013 8:16:28 AM COT +INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Column_Trl_UU ) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=210683 AND NOT EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Column_ID=t.AD_Column_ID) +; + +-- Aug 9, 2013 8:16:28 AM COT +ALTER TABLE AD_ZoomCondition ADD COLUMN AD_ZoomCondition_UU VARCHAR(36) DEFAULT NULL +; + +-- Aug 9, 2013 8:16:29 AM COT +ALTER TABLE AD_ZoomCondition ADD CONSTRAINT AD_ZoomCondition_UU_idx UNIQUE (AD_ZoomCondition_UU) +; + +-- Aug 9, 2013 8:24:07 AM COT +UPDATE AD_ZoomCondition SET AD_ZoomCondition_UU='3962168d-caad-4057-b009-b5db798ce6d8' WHERE AD_ZoomCondition_ID=200001 +; + +-- Aug 9, 2013 8:24:07 AM COT +UPDATE AD_ZoomCondition SET AD_ZoomCondition_UU='9cc206f5-283f-428d-a3b5-9d8a7669d7e8' WHERE AD_ZoomCondition_ID=200002 +; + +-- Aug 9, 2013 9:35:21 AM COT +INSERT INTO AD_ZoomCondition (AD_Client_ID,AD_Org_ID,AD_Window_ID,AD_ZoomCondition_ID,Created,CreatedBy,IsActive,Updated,UpdatedBy,SeqNo,WhereClause,AD_Table_ID,Name,AD_ZoomCondition_UU) VALUES (0,0,53098,200003,TO_TIMESTAMP('2013-08-09 09:35:14','YYYY-MM-DD HH24:MI:SS'),100,'Y',TO_TIMESTAMP('2013-08-09 09:35:14','YYYY-MM-DD HH24:MI:SS'),100,10,'M_InOut.MovementType IN (''V-'')',319,'Return to Vendor','c4403f97-5fe3-4a70-a71a-006739d5d8cc') +; + +-- Aug 9, 2013 9:35:48 AM COT +INSERT INTO AD_ZoomCondition (AD_Client_ID,AD_Org_ID,AD_Window_ID,AD_ZoomCondition_ID,Created,CreatedBy,IsActive,Updated,UpdatedBy,SeqNo,WhereClause,AD_Table_ID,Name,AD_ZoomCondition_UU) VALUES (0,0,53097,200004,TO_TIMESTAMP('2013-08-09 09:35:47','YYYY-MM-DD HH24:MI:SS'),100,'Y',TO_TIMESTAMP('2013-08-09 09:35:47','YYYY-MM-DD HH24:MI:SS'),100,20,'M_InOut.MovementType IN (''C+'')',319,'Customer Return','c6c7fde3-2a9c-4eaf-8d22-fc2537de1678') +; + +-- Aug 9, 2013 9:38:48 AM COT +UPDATE AD_Tab SET Help='The Return to Vendor Line Tab defines the individual items in a Return to Vendor.', Name='Return to Vendor Line', Description='Return to Vendor Line',Updated=TO_TIMESTAMP('2013-08-09 09:38:48','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Tab_ID=53277 +; + +-- Aug 9, 2013 9:39:06 AM COT +UPDATE AD_Tab SET Description='Optional Confirmations of Return to Vendor Lines',Updated=TO_TIMESTAMP('2013-08-09 09:39:06','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Tab_ID=53278 +; + +-- Aug 9, 2013 9:40:05 AM COT +UPDATE AD_Field SET IsCentrallyMaintained='N', Help='The Return to Vendor', Description='Return to Vendor Document', Name='Return to Vendor',Updated=TO_TIMESTAMP('2013-08-09 09:40:05','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=57900 +; + +-- Aug 9, 2013 9:40:45 AM COT +UPDATE AD_Tab SET Help='The Customer Return Line Tab defines the individual items in a Customer Return.', Name='Customer Return Line', Description='Customer Return Line',Updated=TO_TIMESTAMP('2013-08-09 09:40:45','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Tab_ID=53272 +; + +-- Aug 9, 2013 9:41:08 AM COT +UPDATE AD_Field SET IsCentrallyMaintained='N', Help='The Customer Return', Description='Customer Return Document', Name='Customer Return',Updated=TO_TIMESTAMP('2013-08-09 09:41:08','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=57761 +; + +SELECT register_migration_script('201308090826_IDEMPIERE-1232.sql') FROM dual +; + diff --git a/org.adempiere.base/src/org/adempiere/process/UUIDGenerator.java b/org.adempiere.base/src/org/adempiere/process/UUIDGenerator.java index 576a3d6217..86a871c80d 100644 --- a/org.adempiere.base/src/org/adempiere/process/UUIDGenerator.java +++ b/org.adempiere.base/src/org/adempiere/process/UUIDGenerator.java @@ -80,8 +80,6 @@ public class UUIDGenerator extends SvrProcess { tableName = "%"; else tableName = tableName.trim(); - if (!tableName.endsWith("%")) - tableName = tableName + "%"; String sql = "SELECT AD_Table_ID, TableName FROM AD_Table WHERE TableName LIKE ? AND IsView = 'N' AND IsActive='Y' ORDER BY TableName"; PreparedStatement stmt = null; ResultSet rs = null; @@ -219,6 +217,7 @@ public class UUIDGenerator extends SvrProcess { while (rs.next()) { if (AD_Column_ID > 0) { int recordId = rs.getInt(1); + // this line is to avoid users generating official UUIDs - comment it to do official migration script work if (recordId > MTable.MAX_OFFICIAL_ID) { UUID uuid = UUID.randomUUID(); DB.executeUpdateEx(updateSQL.toString(),new Object[]{uuid.toString(), recordId}, trx.getTrxName()); diff --git a/org.adempiere.base/src/org/compiere/model/MZoomCondition.java b/org.adempiere.base/src/org/compiere/model/MZoomCondition.java index 5876ff2337..85f34b0c82 100644 --- a/org.adempiere.base/src/org/compiere/model/MZoomCondition.java +++ b/org.adempiere.base/src/org/compiere/model/MZoomCondition.java @@ -111,15 +111,23 @@ public class MZoomCondition extends X_AD_ZoomCondition */ public static int findZoomWindowByWindowId(int AD_Window_ID, MQuery query) { - GridWindow window = GridWindow.get(Env.getCtx(), -1, AD_Window_ID); - if (window == null || window.getTabCount() == 0) - return 0; - - if (window.getTab(0).getTableName().equals(query.getZoomTableName())) { - return findZoomWindowByTableId(window.getTab(0).getAD_Table_ID(), query); + int tableID = DB.getSQLValueEx(null, + "SELECT t.AD_Table_ID " + + "FROM AD_Tab tab JOIN AD_Table t ON t.AD_Table_ID=tab.AD_Table_ID " + + "WHERE t.IsActive='Y' AND tab.IsActive='Y' AND tab.AD_Window_ID=? " + + "ORDER BY tab.SeqNo", + AD_Window_ID); + String tableName = null; + if (tableID > 0) { + tableName = MTable.get(Env.getCtx(), tableID).getTableName(); } - else - { + + if (tableName != null && tableName.equals(query.getZoomTableName())) { + return findZoomWindowByTableId(tableID, query); + } else { + GridWindow window = GridWindow.get(Env.getCtx(), -1, AD_Window_ID); + if (window == null || window.getTabCount() == 0) + return 0; //resolve zoom to detail int size = window.getTabCount(); GridTab gTab = null; @@ -202,7 +210,7 @@ public class MZoomCondition extends X_AD_ZoomCondition .append(" WHERE ") .append(whereClause) .append(" AND ") - .append(getWhereClause()); + .append(Env.parseContext(Env.getCtx(), 0, getWhereClause(), false, true)); int no = DB.getSQLValue(null, builder.toString()); return no == 1; diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WEditorPopupMenu.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WEditorPopupMenu.java index 9355fc1e66..9ec004d5fe 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WEditorPopupMenu.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WEditorPopupMenu.java @@ -114,16 +114,31 @@ public class WEditorPopupMenu extends Menupopup implements EventListener this.newEnabled = newRecord; this.updateEnabled = updateRecord; // Elaine 2009/02/16 - update record this.showLocation = showLocation; - if (lookup != null) { + + String tableName = null; + if (lookup != null && lookup.getColumnName() != null) + tableName = lookup.getColumnName().substring(0, lookup.getColumnName().indexOf(".")); + + if (lookup != null) { int winID = lookup.getZoom(); Boolean canAccess = MRole.getDefault().getWindowAccess(winID); if (winID <= 0 || canAccess == null || ! canAccess) { this.zoomEnabled = false; this.newEnabled = false; this.updateEnabled = false; + + // check possible zoom conditions to enable back zoom + for (int zoomCondWinID : + DB.getIDsEx(null, + "SELECT AD_Window_ID FROM AD_ZoomCondition WHERE IsActive='Y' AND AD_Table_ID IN (SELECT AD_Table_ID FROM AD_Table WHERE TableName=?)", + tableName)) { + Boolean canAccessZoom = MRole.getDefault().getWindowAccess(zoomCondWinID); + if (canAccessZoom != null && canAccessZoom) { + this.zoomEnabled = true; + break; + } + } } else { - int posPoint = lookup.getColumnName().indexOf("."); - String tableName = lookup.getColumnName().substring(0, posPoint); int cnt = DB.getSQLValueEx(null, "SELECT COUNT(*) " + "FROM AD_Field f " From 288c967594f0a1a7634e3336cec439b533af9b59 Mon Sep 17 00:00:00 2001 From: Heng Sin Low Date: Mon, 12 Aug 2013 14:40:17 +0800 Subject: [PATCH 38/57] IDEMPIERE-1232 Zoom condition fixes. 1) Fixed WFEditor.zoom not using zoom condition. 2) Added null check for the query parameter in AEnv.zoom methods 3) Fixed AEnv.zoom(AD_Window_ID, query) not using zoom condition. Added AEnv.showZoomWindow(AD_Window_ID, query) to replace the direct opening of zoom window usage. --- .../org/compiere/model/MZoomCondition.java | 74 +++++++++++-------- .../src/org/adempiere/webui/apps/AEnv.java | 18 ++++- .../org/adempiere/webui/apps/wf/WFEditor.java | 13 +--- 3 files changed, 57 insertions(+), 48 deletions(-) diff --git a/org.adempiere.base/src/org/compiere/model/MZoomCondition.java b/org.adempiere.base/src/org/compiere/model/MZoomCondition.java index 85f34b0c82..49f59e75d2 100644 --- a/org.adempiere.base/src/org/compiere/model/MZoomCondition.java +++ b/org.adempiere.base/src/org/compiere/model/MZoomCondition.java @@ -75,6 +75,9 @@ public class MZoomCondition extends X_AD_ZoomCondition private static int findZoomWindowByTableId(int AD_Table_ID, MQuery query) { + if (query == null) + return 0; + MZoomCondition[] conditions = MZoomCondition.getConditions(AD_Table_ID); if (conditions.length > 0) { @@ -111,6 +114,9 @@ public class MZoomCondition extends X_AD_ZoomCondition */ public static int findZoomWindowByWindowId(int AD_Window_ID, MQuery query) { + if (query == null) + return 0; + int tableID = DB.getSQLValueEx(null, "SELECT t.AD_Table_ID " + "FROM AD_Tab tab JOIN AD_Table t ON t.AD_Table_ID=tab.AD_Table_ID " + @@ -125,45 +131,49 @@ public class MZoomCondition extends X_AD_ZoomCondition if (tableName != null && tableName.equals(query.getZoomTableName())) { return findZoomWindowByTableId(tableID, query); } else { - GridWindow window = GridWindow.get(Env.getCtx(), -1, AD_Window_ID); - if (window == null || window.getTabCount() == 0) - return 0; - //resolve zoom to detail - int size = window.getTabCount(); - GridTab gTab = null; - for(int i = 0; i < size; i++) - { - if (window.getTab(i).getTableName().equals(query.getZoomTableName())) + try { + GridWindow window = GridWindow.get(Env.getCtx(), -1, AD_Window_ID); + if (window == null || window.getTabCount() == 0) + return 0; + //resolve zoom to detail + int size = window.getTabCount(); + GridTab gTab = null; + for(int i = 0; i < size; i++) { - gTab = window.getTab(i); - break; - } - } - if (gTab != null) - { - window.initTab(gTab.getTabNo()); - GridTab parentTab = gTab.getParentTab(); - int parentId = DB.getSQLValue(null, "SELECT " + gTab.getLinkColumnName() + " FROM " + gTab.getTableName() + " WHERE " + query.getWhereClause()); - if (parentId <= 0)return 0; - - while (parentTab != null) - { - window.initTab(parentTab.getTabNo()); - if (parentTab.getParentTab() != null) + if (window.getTab(i).getTableName().equals(query.getZoomTableName())) { - parentId = DB.getSQLValue(null, "SELECT " + parentTab.getLinkColumnName() + " FROM " + parentTab.getTableName() + " WHERE " - + parentTab.getTableName()+"_ID="+parentId); - if (parentId <= 0) return 0; - parentTab = parentTab.getParentTab(); + gTab = window.getTab(i); + break; } - else - { - if (parentTab == window.getTab(0)) + } + if (gTab != null) + { + window.initTab(gTab.getTabNo()); + GridTab parentTab = gTab.getParentTab(); + int parentId = DB.getSQLValue(null, "SELECT " + gTab.getLinkColumnName() + " FROM " + gTab.getTableName() + " WHERE " + query.getWhereClause()); + if (parentId <= 0)return 0; + + while (parentTab != null) + { + window.initTab(parentTab.getTabNo()); + if (parentTab.getParentTab() != null) { - return findZoomWindowByTableId(parentTab.getAD_Table_ID(), parentId); + parentId = DB.getSQLValue(null, "SELECT " + parentTab.getLinkColumnName() + " FROM " + parentTab.getTableName() + " WHERE " + + parentTab.getTableName()+"_ID="+parentId); + if (parentId <= 0) return 0; + parentTab = parentTab.getParentTab(); + } + else + { + if (parentTab == window.getTab(0)) + { + return findZoomWindowByTableId(parentTab.getAD_Table_ID(), parentId); + } } } } + } finally { + Env.clearWinContext(-1); } } return 0; diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/AEnv.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/AEnv.java index cb106f9f4f..6e40073b13 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/AEnv.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/AEnv.java @@ -387,10 +387,19 @@ public final class AEnv zoomQuery.setRecordCount(1); // guess } int windowId = lookup.getZoom(zoomQuery); - int zoomId = MZoomCondition.findZoomWindowByWindowId(windowId, zoomQuery); - zoom(zoomId > 0 ? zoomId : windowId, zoomQuery); + zoom(windowId, zoomQuery); } + /** + * open zoom window with query + * @param AD_Window_ID + * @param query + */ + public static void showZoomWindow(int AD_Window_ID, MQuery query) + { + SessionManager.getAppDesktop().showZoomWindow(AD_Window_ID, query); + } + /** * Zoom to a window with the provided window id and filters according to the * query @@ -399,7 +408,8 @@ public final class AEnv */ public static void zoom(int AD_Window_ID, MQuery query) { - SessionManager.getAppDesktop().showZoomWindow(AD_Window_ID, query); + int zoomId = MZoomCondition.findZoomWindowByWindowId(AD_Window_ID, query); + showZoomWindow(zoomId > 0 ? zoomId : AD_Window_ID, query); } public static void showWindow(Window win) @@ -421,7 +431,7 @@ public final class AEnv if (AD_Window_ID == 0) return; - zoom(AD_Window_ID, query); + showZoomWindow(AD_Window_ID, query); } /** diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/wf/WFEditor.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/wf/WFEditor.java index 2e768f1e36..6647c4c258 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/wf/WFEditor.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/wf/WFEditor.java @@ -19,7 +19,6 @@ import java.util.ArrayList; import java.util.List; import java.util.logging.Level; -import org.adempiere.exceptions.AdempiereException; import org.adempiere.webui.apps.AEnv; import org.adempiere.webui.component.ConfirmPanel; import org.adempiere.webui.component.ListItem; @@ -33,9 +32,7 @@ import org.adempiere.webui.panel.ADForm; import org.adempiere.webui.theme.ThemeManager; import org.compiere.apps.wf.WFGraphLayout; import org.compiere.apps.wf.WFNodeWidget; -import org.compiere.model.MQuery; import org.compiere.model.MRole; -import org.compiere.model.MTable; import org.compiere.util.DB; import org.compiere.util.Env; import org.compiere.util.KeyNamePair; @@ -445,15 +442,7 @@ public class WFEditor extends ADForm { private void zoom() { if (m_workflowId > 0) { - int AD_Window_ID = MTable.get(Env.getCtx(), MWorkflow.Table_ID).getAD_Window_ID(); - - if (AD_Window_ID <= 0) { - throw new AdempiereException("@NotFound@ @AD_Window_ID@"); - } - - MQuery query = null; - query = MQuery.getEqualQuery("AD_Workflow_ID", m_workflowId); - AEnv.zoom(AD_Window_ID, query); + AEnv.zoom(MWorkflow.Table_ID, m_workflowId); } } // zoom From 1052b6fc7a77981c24282ac209bd55657848dce4 Mon Sep 17 00:00:00 2001 From: Heng Sin Low Date: Mon, 12 Aug 2013 16:29:36 +0800 Subject: [PATCH 39/57] =?UTF-8?q?IDEMPIERE-1255=20Can=E2=80=99t=20create?= =?UTF-8?q?=20a=20record=20in=20Payment=20Processor=20window.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../oracle/201308120824_IDEMPIERE-1255.sql | 13 +++++++++++++ .../postgresql/201308120824_IDEMPIERE-1255.sql | 13 +++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 migration/i1.0c-release/oracle/201308120824_IDEMPIERE-1255.sql create mode 100644 migration/i1.0c-release/postgresql/201308120824_IDEMPIERE-1255.sql diff --git a/migration/i1.0c-release/oracle/201308120824_IDEMPIERE-1255.sql b/migration/i1.0c-release/oracle/201308120824_IDEMPIERE-1255.sql new file mode 100644 index 0000000000..8346d7e8be --- /dev/null +++ b/migration/i1.0c-release/oracle/201308120824_IDEMPIERE-1255.sql @@ -0,0 +1,13 @@ +-- Aug 12, 2013 4:21:30 PM MYT +-- IDEMPIERE-1207 Fixed inconsistent error message for well known database exception +UPDATE AD_Column SET DefaultValue='@#AD_Client_ID@',Updated=TO_DATE('2013-08-12 16:21:30','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=5163 +; + +-- Aug 12, 2013 4:21:53 PM MYT +-- IDEMPIERE-1207 Fixed inconsistent error message for well known database exception +UPDATE AD_Column SET DefaultValue='@#AD_Org_ID@',Updated=TO_DATE('2013-08-12 16:21:53','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=5164 +; + +SELECT register_migration_script('201308120824_IDEMPIERE-1255.sql') FROM dual +; + diff --git a/migration/i1.0c-release/postgresql/201308120824_IDEMPIERE-1255.sql b/migration/i1.0c-release/postgresql/201308120824_IDEMPIERE-1255.sql new file mode 100644 index 0000000000..6bab7dc18b --- /dev/null +++ b/migration/i1.0c-release/postgresql/201308120824_IDEMPIERE-1255.sql @@ -0,0 +1,13 @@ +-- Aug 12, 2013 4:21:30 PM MYT +-- IDEMPIERE-1207 Fixed inconsistent error message for well known database exception +UPDATE AD_Column SET DefaultValue='@#AD_Client_ID@',Updated=TO_TIMESTAMP('2013-08-12 16:21:30','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=5163 +; + +-- Aug 12, 2013 4:21:53 PM MYT +-- IDEMPIERE-1207 Fixed inconsistent error message for well known database exception +UPDATE AD_Column SET DefaultValue='@#AD_Org_ID@',Updated=TO_TIMESTAMP('2013-08-12 16:21:53','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=5164 +; + +SELECT register_migration_script('201308120824_IDEMPIERE-1255.sql') FROM dual +; + From 70db8e18af5dc72aa279be03906e454bcabf3bea Mon Sep 17 00:00:00 2001 From: Heng Sin Low Date: Mon, 12 Aug 2013 17:57:58 +0800 Subject: [PATCH 40/57] IDEMPIERE-1260 Error message saving Purchasing line on Product record. --- .../i1.0c-release/oracle/201308120955_IDEMPIERE-1260.sql | 8 ++++++++ .../postgresql/201308120955_IDEMPIERE-1260.sql | 8 ++++++++ 2 files changed, 16 insertions(+) create mode 100644 migration/i1.0c-release/oracle/201308120955_IDEMPIERE-1260.sql create mode 100644 migration/i1.0c-release/postgresql/201308120955_IDEMPIERE-1260.sql diff --git a/migration/i1.0c-release/oracle/201308120955_IDEMPIERE-1260.sql b/migration/i1.0c-release/oracle/201308120955_IDEMPIERE-1260.sql new file mode 100644 index 0000000000..8a68306864 --- /dev/null +++ b/migration/i1.0c-release/oracle/201308120955_IDEMPIERE-1260.sql @@ -0,0 +1,8 @@ +-- Aug 12, 2013 5:52:23 PM MYT +-- IDEMPIERE-1207 Fixed inconsistent error message for well known database exception +UPDATE AD_Column SET IsUpdateable='N', DefaultValue=NULL,Updated=TO_DATE('2013-08-12 17:52:23','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=2705 +; + +SELECT register_migration_script('201308120955_IDEMPIERE-1260.sql') FROM dual +; + diff --git a/migration/i1.0c-release/postgresql/201308120955_IDEMPIERE-1260.sql b/migration/i1.0c-release/postgresql/201308120955_IDEMPIERE-1260.sql new file mode 100644 index 0000000000..53cae453df --- /dev/null +++ b/migration/i1.0c-release/postgresql/201308120955_IDEMPIERE-1260.sql @@ -0,0 +1,8 @@ +-- Aug 12, 2013 5:52:23 PM MYT +-- IDEMPIERE-1207 Fixed inconsistent error message for well known database exception +UPDATE AD_Column SET IsUpdateable='N', DefaultValue=NULL,Updated=TO_TIMESTAMP('2013-08-12 17:52:23','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=2705 +; + +SELECT register_migration_script('201308120955_IDEMPIERE-1260.sql') FROM dual +; + From d09e29e342105e6d77b44a8163910c11bb94bba6 Mon Sep 17 00:00:00 2001 From: Heng Sin Low Date: Mon, 12 Aug 2013 18:59:11 +0800 Subject: [PATCH 41/57] IDEMPIERE-1233 Problem with using the Create Lines From process on the Material Receipt window. --- .../src/org/compiere/model/MWarehouse.java | 14 ++++++++++++++ .../webui/apps/form/WCreateFromShipmentUI.java | 2 ++ .../org/adempiere/webui/window/WLocatorDialog.java | 3 ++- 3 files changed, 18 insertions(+), 1 deletion(-) diff --git a/org.adempiere.base/src/org/compiere/model/MWarehouse.java b/org.adempiere.base/src/org/compiere/model/MWarehouse.java index 5ab89ff0f2..0514055579 100644 --- a/org.adempiere.base/src/org/compiere/model/MWarehouse.java +++ b/org.adempiere.base/src/org/compiere/model/MWarehouse.java @@ -193,6 +193,20 @@ public class MWarehouse extends X_M_Warehouse log.warning("No default locator for " + getName()); return locators[0]; } + else + { + String whereClause = "M_Warehouse_ID=?"; + List list = new Query(getCtx(), I_M_Locator.Table_Name, whereClause, null) + .setParameters(getM_Warehouse_ID()) + .setOnlyActiveRecords(false).list(); + if (!list.isEmpty()) + { + if (log.isLoggable(Level.INFO)) + log.info("All locator is inactive for " + getName()); + //Do not auto create if there are inactive locator since that could trigger unique key exception + return null; + } + } // No Locator - create one MLocator loc = new MLocator (this, "Standard"); loc.setIsDefault(true); diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WCreateFromShipmentUI.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WCreateFromShipmentUI.java index e0f282843e..1fd2d334a0 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WCreateFromShipmentUI.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/form/WCreateFromShipmentUI.java @@ -20,6 +20,7 @@ import java.util.List; import java.util.Vector; import java.util.logging.Level; +import org.adempiere.exceptions.AdempiereException; import org.adempiere.webui.apps.AEnv; import org.adempiere.webui.component.Checkbox; import org.adempiere.webui.component.Grid; @@ -80,6 +81,7 @@ public class WCreateFromShipmentUI extends CreateFromShipment implements EventLi { log.log(Level.SEVERE, "", e); setInitOK(false); + throw new AdempiereException(e.getMessage()); } AEnv.showWindow(window); } diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/WLocatorDialog.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/WLocatorDialog.java index fa7645c51e..569119a126 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/WLocatorDialog.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/WLocatorDialog.java @@ -312,7 +312,8 @@ public class WLocatorDialog extends Window implements EventListener //lstLocator.setModel(m_mLocator); //lstLocator.setValue(m_M_Locator_ID); - lstLocator.setSelectedIndex(0); + if (lstLocator.getItemCount() > 0) + lstLocator.setSelectedIndex(0); lstLocator.addEventListener(Events.ON_SELECT, this); displayLocator(); From 744329b375cdc081a2575de766a7ef0b72e15a56 Mon Sep 17 00:00:00 2001 From: Heng Sin Low Date: Tue, 13 Aug 2013 22:14:17 +0800 Subject: [PATCH 42/57] IDEMPIERE-1267 Temp password from "Forgot My Password" does not work. Accept patch from Richard Morales Herrera. --- .../src/org/adempiere/webui/panel/ResetPasswordPanel.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/ResetPasswordPanel.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/ResetPasswordPanel.java index af42ab737f..13a620b5c9 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/ResetPasswordPanel.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/ResetPasswordPanel.java @@ -492,7 +492,7 @@ public class ResetPasswordPanel extends Window implements EventListener protected boolean sendEmail(MUser to, String newPassword) { - MClient client = MClient.get(m_ctx, to.getAD_Client_ID()); + MClient client = MClient.get(m_ctx, 0);//change by: IDEMPIERE-1267 Temp password from "Forgot My Password" does not work StringBuilder sql = new StringBuilder("SELECT R_MailText_ID "); sql.append("FROM R_MailText "); From d06505315c4d4daca86375938a661ccea9c413f0 Mon Sep 17 00:00:00 2001 From: Heng Sin Low Date: Tue, 13 Aug 2013 22:47:06 +0800 Subject: [PATCH 43/57] IDEMPIERE-1268 Payment Allocation is getting deleted from completed Payment record. --- .../adempiere/webui/adwindow/AbstractADWindowContent.java | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/AbstractADWindowContent.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/AbstractADWindowContent.java index e3966e8c6f..ee8e104e9d 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/AbstractADWindowContent.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/AbstractADWindowContent.java @@ -1389,6 +1389,7 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements boolean changed = e.isChanged() || e.isInserting(); boolean readOnly = adTabbox.getSelectedGridTab().isReadOnly(); + boolean processed = "Y".equals(Env.getContext(Env.getCtx(), getWindowNo(), "Processed", true)); boolean insertRecord = !readOnly; if (!detailTab) { @@ -1401,7 +1402,7 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements } toolbar.enableNew(!changed && insertRecord && !tabPanel.getGridTab().isSortTab()); toolbar.enableRefresh(!changed); - toolbar.enableDelete(!changed && !readOnly && !tabPanel.getGridTab().isSortTab()); + toolbar.enableDelete(!changed && !readOnly && !tabPanel.getGridTab().isSortTab() && !processed); // if (readOnly && adTabbox.getSelectedGridTab().isAlwaysUpdateField()) { @@ -1410,7 +1411,7 @@ public abstract class AbstractADWindowContent extends AbstractUIPart implements } else { - adTabbox.updateDetailPaneToolbar(changed, readOnly); + adTabbox.updateDetailPaneToolbar(changed, readOnly || processed); } toolbar.enableIgnore(adTabbox.needSave(true, false) || adTabbox.getSelectedGridTab().isNew() || From f94aef8b9823e7643bd14d996cdf29d522eadbe8 Mon Sep 17 00:00:00 2001 From: Heng Sin Low Date: Tue, 13 Aug 2013 23:03:38 +0800 Subject: [PATCH 44/57] IDEMPIERE-1257 Attachment is allowing non-existant files. Accept patch from Richard Morales Herrera. --- .../WEB-INF/src/org/adempiere/webui/panel/WAttachment.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/WAttachment.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/WAttachment.java index aaa992178e..1581a1311d 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/WAttachment.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/WAttachment.java @@ -555,7 +555,7 @@ public class WAttachment extends Window implements EventListener } // onEvent private void processUploadMedia(Media media) { - if (media != null) + if (media != null && media.getByteData().length>0) { // pdfViewer.setContent(media); ; From ea449dbd6bb57d74549871b2631af0b9a5477a2f Mon Sep 17 00:00:00 2001 From: Heng Sin Low Date: Wed, 14 Aug 2013 15:04:17 +0800 Subject: [PATCH 45/57] IDEMPIERE-1259 Red mandatory label not cleared when moving to non-mandatory. --- .../org/adempiere/webui/adwindow/ADTabpanel.java | 13 +++++++------ .../adempiere/webui/apps/ProcessParameterPanel.java | 7 ++++++- .../src/org/adempiere/webui/editor/WEditor.java | 11 ++++++++--- 3 files changed, 21 insertions(+), 10 deletions(-) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADTabpanel.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADTabpanel.java index 6ad7a36747..bb5eaf4ec7 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADTabpanel.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/ADTabpanel.java @@ -668,11 +668,6 @@ DataStatusListener, IADTabpanel, IdSpace, IFieldEditorContainer collapsedGroups.add(group); } - for (WEditor comp : editors) - { - comp.updateLabelStyle(); - } - // Selective if (col > 0) { @@ -683,7 +678,12 @@ DataStatusListener, IADTabpanel, IdSpace, IFieldEditorContainer + columnName + " - Dependents=" + dependants.size()); if ( ! ( dependants.size() > 0 || changedField.getCallout().length() > 0 - || Core.findCallout(gridTab.getTableName(), columnName).size() > 0)) { + || Core.findCallout(gridTab.getTableName(), columnName).size() > 0)) + { + for (WEditor comp : editors) + { + comp.updateLabelStyle(); + } return; } } @@ -719,6 +719,7 @@ DataStatusListener, IADTabpanel, IdSpace, IFieldEditorContainer comp.setVisible(false); } } + comp.updateLabelStyle(); } // all components //hide row if all editor within the row is invisible diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/ProcessParameterPanel.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/ProcessParameterPanel.java index a294ba81f6..f6f11701e3 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/ProcessParameterPanel.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/apps/ProcessParameterPanel.java @@ -101,6 +101,7 @@ public class ProcessParameterPanel extends Panel implements this.width = width; // initComponent(); + addEventListener("onDynamicDisplay", this); } // ProcessParameterPanel private void initComponent() { @@ -566,6 +567,9 @@ public class ProcessParameterPanel extends Panel implements } } } + else if (event.getName().equals("onDynamicDisplay")) { + dynamicDisplay(); + } } /** @@ -623,7 +627,7 @@ public class ProcessParameterPanel extends Panel implements else Env.setContext(Env.getCtx(), m_WindowNo, name, value.toString()); - dynamicDisplay(); + Events.postEvent("onDynamicDisplay", this, (Object)null); } private void dynamicDisplay() { @@ -653,6 +657,7 @@ public class ProcessParameterPanel extends Panel implements m_wEditors2.get(i).setVisible(false); } } + editor.setMandatory(mField.isMandatory(true)); editor.updateLabelStyle(); } } diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WEditor.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WEditor.java index e47d057e3d..7170157386 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WEditor.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/editor/WEditor.java @@ -459,9 +459,14 @@ public abstract class WEditor implements EventListener, PropertyChangeLis */ public void setMandatory (boolean mandatory) { - this.mandatory = mandatory; - if (label != null) - label.setMandatory(mandatory); + if (this.mandatory != mandatory) + { + this.mandatory = mandatory; + if (label != null) + { + label.setMandatory(mandatory); + } + } } /** From b697fcbff1566c43bedf6b307b0aa886eeb7499f Mon Sep 17 00:00:00 2001 From: Heng Sin Low Date: Wed, 14 Aug 2013 15:50:56 +0800 Subject: [PATCH 46/57] IDEMPIERE-1228 use saved query with active column, make result empty record. Revert an optimization make at 5495274 for IDEMPIERE-1105 that break advance search for YesNo field. --- .../adempiere/webui/window/FindWindow.java | 79 +++++++++---------- 1 file changed, 39 insertions(+), 40 deletions(-) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/FindWindow.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/FindWindow.java index dbdc999e4b..ddc830a773 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/FindWindow.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/FindWindow.java @@ -612,54 +612,53 @@ public class FindWindow extends Window implements EventListener, ValueCha for (int i = 0; i < m_findFields.length; i++) { GridField mField = m_findFields[i]; + + if (mField.getVO().displayType == DisplayType.YesNo) { + // Make Yes-No searchable as list + GridFieldVO vo = mField.getVO(); + GridFieldVO ynvo = vo.clone(vo.ctx, vo.WindowNo, vo.TabNo, vo.AD_Window_ID, vo.AD_Tab_ID, vo.tabReadOnly); + ynvo.IsDisplayed = true; + ynvo.displayType = DisplayType.List; + ynvo.AD_Reference_Value_ID = REFERENCE_YESNO; - if (mField.isSelectionColumn()) { - if (mField.getVO().displayType == DisplayType.YesNo) { - // Make Yes-No searchable as list - GridFieldVO vo = mField.getVO(); - GridFieldVO ynvo = vo.clone(vo.ctx, vo.WindowNo, vo.TabNo, vo.AD_Window_ID, vo.AD_Tab_ID, vo.tabReadOnly); - ynvo.IsDisplayed = true; - ynvo.displayType = DisplayType.List; - ynvo.AD_Reference_Value_ID = REFERENCE_YESNO; + ynvo.lookupInfo = MLookupFactory.getLookupInfo (ynvo.ctx, ynvo.WindowNo, ynvo.AD_Column_ID, ynvo.displayType, + Env.getLanguage(ynvo.ctx), ynvo.ColumnName, ynvo.AD_Reference_Value_ID, + ynvo.IsParent, ynvo.ValidationCode); - ynvo.lookupInfo = MLookupFactory.getLookupInfo (ynvo.ctx, ynvo.WindowNo, ynvo.AD_Column_ID, ynvo.displayType, - Env.getLanguage(ynvo.ctx), ynvo.ColumnName, ynvo.AD_Reference_Value_ID, - ynvo.IsParent, ynvo.ValidationCode); + GridField ynfield = new GridField(ynvo); - GridField ynfield = new GridField(ynvo); + // replace the original field by the YN List field + m_findFields[i] = ynfield; + mField = ynfield; + } else if ( mField.getVO().displayType == DisplayType.Button ) { + // Make Buttons searchable + GridFieldVO vo = mField.getVO(); + if ( vo.AD_Reference_Value_ID > 0 ) + { + GridFieldVO postedvo = vo.clone(vo.ctx, vo.WindowNo, vo.TabNo, vo.AD_Window_ID, vo.AD_Tab_ID, vo.tabReadOnly); + postedvo.IsDisplayed = true; + postedvo.displayType = DisplayType.List; - // replace the original field by the YN List field - m_findFields[i] = ynfield; - mField = ynfield; - } else if ( mField.getVO().displayType == DisplayType.Button ) { - // Make Buttons searchable - GridFieldVO vo = mField.getVO(); - if ( vo.AD_Reference_Value_ID > 0 ) - { - GridFieldVO postedvo = vo.clone(vo.ctx, vo.WindowNo, vo.TabNo, vo.AD_Window_ID, vo.AD_Tab_ID, vo.tabReadOnly); - postedvo.IsDisplayed = true; - postedvo.displayType = DisplayType.List; + postedvo.lookupInfo = MLookupFactory.getLookupInfo (postedvo.ctx, postedvo.WindowNo, postedvo.AD_Column_ID, postedvo.displayType, + Env.getLanguage(postedvo.ctx), postedvo.ColumnName, postedvo.AD_Reference_Value_ID, + postedvo.IsParent, postedvo.ValidationCode); - postedvo.lookupInfo = MLookupFactory.getLookupInfo (postedvo.ctx, postedvo.WindowNo, postedvo.AD_Column_ID, postedvo.displayType, - Env.getLanguage(postedvo.ctx), postedvo.ColumnName, postedvo.AD_Reference_Value_ID, - postedvo.IsParent, postedvo.ValidationCode); + GridField postedfield = new GridField(postedvo); - GridField postedfield = new GridField(postedvo); - - // replace the original field by the Posted List field - m_findFields[i] = postedfield; - mField = postedfield; - } - } else { - // clone the field and clean gridtab - IDEMPIERE-1105 - GridField findField = (GridField) mField.clone(m_findCtx); - findField.setGridTab(null); - m_findFields[i] = findField; - mField = findField; - } + // replace the original field by the Posted List field + m_findFields[i] = postedfield; + mField = postedfield; + } + } else { + // clone the field and clean gridtab - IDEMPIERE-1105 + GridField findField = (GridField) mField.clone(m_findCtx); + findField.setGridTab(null); + m_findFields[i] = findField; + mField = findField; + } + if (mField.isSelectionColumn()) { gridFieldList.add(mField); } // isSelectionColumn - } // for all target tab fields From 7516f85d5544702ee19100665cccc0e2cce3d055 Mon Sep 17 00:00:00 2001 From: Heng Sin Low Date: Wed, 14 Aug 2013 17:37:27 +0800 Subject: [PATCH 47/57] IDEMPIERE-1188 Invoice Price Variance for Average PO Costing. --- db/ddlutils/oracle/views/M_CostMovement_V.sql | 5 +- .../postgresql/views/M_CostMovement_V.sql | 5 +- .../oracle/201308140925_IDEMPIERE-1188.sql | 53 +++++++++ .../201308140925_IDEMPIERE-1188.sql | 57 ++++++++++ .../src/org/compiere/acct/Doc_MatchInv.java | 104 +++++++++++++++--- .../org/compiere/model/I_M_CostDetail.java | 15 +++ .../src/org/compiere/model/MCostDetail.java | 70 ++++++++++++ .../org/compiere/model/X_M_CostDetail.java | 30 ++++- 8 files changed, 322 insertions(+), 17 deletions(-) create mode 100644 migration/i1.0c-release/oracle/201308140925_IDEMPIERE-1188.sql create mode 100644 migration/i1.0c-release/postgresql/201308140925_IDEMPIERE-1188.sql diff --git a/db/ddlutils/oracle/views/M_CostMovement_V.sql b/db/ddlutils/oracle/views/M_CostMovement_V.sql index 2adaf9fcab..c4dbbfb607 100644 --- a/db/ddlutils/oracle/views/M_CostMovement_V.sql +++ b/db/ddlutils/oracle/views/M_CostMovement_V.sql @@ -1,5 +1,8 @@ CREATE OR REPLACE VIEW m_costmovement_v AS -SELECT a.ad_client_id, a.ad_org_id, b.c_acctschema_id, a.m_costhistory_id, a.m_costtype_id, a.m_costelement_id, a.m_attributesetinstance_id, b.m_product_id, a.oldqty, a.newqty, a.oldcostprice, a.newcostprice, a.oldcqty, a.newcqty, a.oldcamt, a.newcamt, b.qty, b.amt, b.deltaqty, b.deltaamt, b.c_orderline_id, b.m_inoutline_id, b.c_invoiceline_id, b.m_movementline_id, b.m_inventoryline_id, b.m_productionline_id, b.c_projectissue_id, a.m_costdetail_id, b.description, a.created, a.createdby, a.updated, a.updatedby, a.isactive +SELECT a.ad_client_id, a.ad_org_id, b.c_acctschema_id, a.m_costhistory_id, a.m_costtype_id, a.m_costelement_id, a.m_attributesetinstance_id, + b.m_product_id, a.oldqty, a.newqty, a.oldcostprice, a.newcostprice, a.oldcqty, a.newcqty, a.oldcamt, a.newcamt, b.qty, b.amt, b.deltaqty, + b.deltaamt, b.c_orderline_id, b.m_inoutline_id, b.c_invoiceline_id, b.m_movementline_id, b.m_inventoryline_id, b.m_productionline_id, + b.c_projectissue_id, b.m_matchinv_id, a.m_costdetail_id, b.description, a.created, a.createdby, a.updated, a.updatedby, a.isactive FROM m_costhistory a JOIN m_costdetail b ON a.m_costdetail_id = b.m_costdetail_id ORDER BY a.m_costhistory_id diff --git a/db/ddlutils/postgresql/views/M_CostMovement_V.sql b/db/ddlutils/postgresql/views/M_CostMovement_V.sql index 2adaf9fcab..c4dbbfb607 100644 --- a/db/ddlutils/postgresql/views/M_CostMovement_V.sql +++ b/db/ddlutils/postgresql/views/M_CostMovement_V.sql @@ -1,5 +1,8 @@ CREATE OR REPLACE VIEW m_costmovement_v AS -SELECT a.ad_client_id, a.ad_org_id, b.c_acctschema_id, a.m_costhistory_id, a.m_costtype_id, a.m_costelement_id, a.m_attributesetinstance_id, b.m_product_id, a.oldqty, a.newqty, a.oldcostprice, a.newcostprice, a.oldcqty, a.newcqty, a.oldcamt, a.newcamt, b.qty, b.amt, b.deltaqty, b.deltaamt, b.c_orderline_id, b.m_inoutline_id, b.c_invoiceline_id, b.m_movementline_id, b.m_inventoryline_id, b.m_productionline_id, b.c_projectissue_id, a.m_costdetail_id, b.description, a.created, a.createdby, a.updated, a.updatedby, a.isactive +SELECT a.ad_client_id, a.ad_org_id, b.c_acctschema_id, a.m_costhistory_id, a.m_costtype_id, a.m_costelement_id, a.m_attributesetinstance_id, + b.m_product_id, a.oldqty, a.newqty, a.oldcostprice, a.newcostprice, a.oldcqty, a.newcqty, a.oldcamt, a.newcamt, b.qty, b.amt, b.deltaqty, + b.deltaamt, b.c_orderline_id, b.m_inoutline_id, b.c_invoiceline_id, b.m_movementline_id, b.m_inventoryline_id, b.m_productionline_id, + b.c_projectissue_id, b.m_matchinv_id, a.m_costdetail_id, b.description, a.created, a.createdby, a.updated, a.updatedby, a.isactive FROM m_costhistory a JOIN m_costdetail b ON a.m_costdetail_id = b.m_costdetail_id ORDER BY a.m_costhistory_id diff --git a/migration/i1.0c-release/oracle/201308140925_IDEMPIERE-1188.sql b/migration/i1.0c-release/oracle/201308140925_IDEMPIERE-1188.sql new file mode 100644 index 0000000000..2a95acce29 --- /dev/null +++ b/migration/i1.0c-release/oracle/201308140925_IDEMPIERE-1188.sql @@ -0,0 +1,53 @@ +-- Jul 22, 2013 8:56:39 PM MYT +-- IDEMPIERE-1188 Invoice Price Variance for Average PO Costing +INSERT INTO AD_Column (SeqNoSelection,IsSyncDatabase,Version,AD_Table_ID,AD_Column_ID,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,AD_Reference_ID,IsKey,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsUpdateable,ColumnName,Description,Name,IsAllowCopy,Updated,CreatedBy,AD_Org_ID,IsActive,Created,UpdatedBy,IsToolbarButton,IsAlwaysUpdateable,AD_Client_ID,EntityType,IsEncrypted,AD_Element_ID) VALUES (0,'N',1,808,210662,'N','N','N',0,'N',22,'N',30,'N','N','Y','c5983338-dac3-4173-ac05-81bc1bdb1ce7','N','M_MatchInv_ID','Match Shipment/Receipt to Invoice','Match Invoice','N',TO_DATE('2013-07-22 20:56:37','YYYY-MM-DD HH24:MI:SS'),100,0,'Y',TO_DATE('2013-07-22 20:56:37','YYYY-MM-DD HH24:MI:SS'),100,'N','N',0,'D','N',1689) +; + +-- Jul 22, 2013 8:56:39 PM MYT +-- IDEMPIERE-1188 Invoice Price Variance for Average PO Costing +INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Column_Trl_UU ) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=210662 AND NOT EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Column_ID=t.AD_Column_ID) +; + +-- Jul 22, 2013 8:56:45 PM MYT +-- IDEMPIERE-1188 Invoice Price Variance for Average PO Costing +ALTER TABLE M_CostDetail ADD M_MatchInv_ID NUMBER(10) DEFAULT NULL +; + +CREATE OR REPLACE VIEW m_costmovement_v AS +SELECT a.ad_client_id, a.ad_org_id, b.c_acctschema_id, a.m_costhistory_id, a.m_costtype_id, a.m_costelement_id, a.m_attributesetinstance_id, + b.m_product_id, a.oldqty, a.newqty, a.oldcostprice, a.newcostprice, a.oldcqty, a.newcqty, a.oldcamt, a.newcamt, b.qty, b.amt, b.deltaqty, + b.deltaamt, b.c_orderline_id, b.m_inoutline_id, b.c_invoiceline_id, b.m_movementline_id, b.m_inventoryline_id, b.m_productionline_id, + b.c_projectissue_id, b.m_matchinv_id, a.m_costdetail_id, b.description, a.created, a.createdby, a.updated, a.updatedby, a.isactive + FROM m_costhistory a + JOIN m_costdetail b ON a.m_costdetail_id = b.m_costdetail_id + ORDER BY a.m_costhistory_id +; + +-- Jul 23, 2013 7:55:31 AM MYT +-- IDEMPIERE-1188 Invoice Price Variance for Average PO Costing +INSERT INTO AD_Column (SeqNoSelection,IsSyncDatabase,Version,AD_Table_ID,AD_Column_ID,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,AD_Reference_ID,IsKey,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsUpdateable,ColumnName,Description,Name,IsAllowCopy,Updated,CreatedBy,AD_Org_ID,IsActive,Created,UpdatedBy,IsToolbarButton,IsAlwaysUpdateable,AD_Client_ID,EntityType,IsEncrypted,AD_Element_ID) VALUES (0,'N',1,200002,210663,'N','N','N',0,'N',22,'N',30,'N','N','Y','10f7d192-2c18-497c-bcf3-548f8546fd41','N','M_MatchInv_ID','Match Shipment/Receipt to Invoice','Match Invoice','N',TO_DATE('2013-07-23 07:55:29','YYYY-MM-DD HH24:MI:SS'),100,0,'Y',TO_DATE('2013-07-23 07:55:29','YYYY-MM-DD HH24:MI:SS'),100,'N','N',0,'D','N',1689) +; + +-- Jul 23, 2013 7:55:31 AM MYT +-- IDEMPIERE-1188 Invoice Price Variance for Average PO Costing +INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Column_Trl_UU ) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=210663 AND NOT EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Column_ID=t.AD_Column_ID) +; + +-- Jul 23, 2013 7:56:36 AM MYT +-- IDEMPIERE-1188 Invoice Price Variance for Average PO Costing +INSERT INTO AD_Field (NumLines,SortNo,IsEncrypted,AD_Tab_ID,DisplayLength,IsSameLine,IsHeading,AD_Column_ID,SeqNo,IsCentrallyMaintained,AD_Field_ID,IsReadOnly,EntityType,Description,Name,IsDisplayed,IsFieldOnly,AD_Field_UU,UpdatedBy,AD_Org_ID,Created,CreatedBy,Updated,IsActive,IsDisplayedGrid,SeqNoGrid,XPosition,IsQuickEntry,AD_Client_ID,ColumnSpan) VALUES (1,0,'N',200000,0,'N','N',210663,270,'Y',202340,'N','D','Match Shipment/Receipt to Invoice','Match Invoice','Y','N','624749f1-6544-45d7-a6b7-cebc6bcdfc93',100,0,TO_DATE('2013-07-23 07:56:34','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2013-07-23 07:56:34','YYYY-MM-DD HH24:MI:SS'),'Y','Y',270,1,'N',0,1) +; + +-- Jul 23, 2013 7:56:36 AM MYT +-- IDEMPIERE-1188 Invoice Price Variance for Average PO Costing +INSERT INTO AD_Field_Trl (AD_Language,AD_Field_ID, Help,Description,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Field_Trl_UU ) SELECT l.AD_Language,t.AD_Field_ID, t.Help,t.Description,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Field t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Field_ID=202340 AND NOT EXISTS (SELECT * FROM AD_Field_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Field_ID=t.AD_Field_ID) +; + +-- Jul 23, 2013 7:57:03 AM MYT +-- IDEMPIERE-1188 Invoice Price Variance for Average PO Costing +UPDATE AD_Field SET SeqNo=270, ColumnSpan=2,Updated=TO_DATE('2013-07-23 07:57:03','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=202340 +; + +SELECT register_migration_script('201308140925_IDEMPIERE-1188.sql') FROM dual +; + diff --git a/migration/i1.0c-release/postgresql/201308140925_IDEMPIERE-1188.sql b/migration/i1.0c-release/postgresql/201308140925_IDEMPIERE-1188.sql new file mode 100644 index 0000000000..3ae3dc7902 --- /dev/null +++ b/migration/i1.0c-release/postgresql/201308140925_IDEMPIERE-1188.sql @@ -0,0 +1,57 @@ +-- Jul 22, 2013 8:56:39 PM MYT +-- IDEMPIERE-1188 Invoice Price Variance for Average PO Costing +INSERT INTO AD_Column (SeqNoSelection,IsSyncDatabase,Version,AD_Table_ID,AD_Column_ID,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,AD_Reference_ID,IsKey,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsUpdateable,ColumnName,Description,Name,IsAllowCopy,Updated,CreatedBy,AD_Org_ID,IsActive,Created,UpdatedBy,IsToolbarButton,IsAlwaysUpdateable,AD_Client_ID,EntityType,IsEncrypted,AD_Element_ID) VALUES (0,'N',1,808,210662,'N','N','N',0,'N',22,'N',30,'N','N','Y','c5983338-dac3-4173-ac05-81bc1bdb1ce7','N','M_MatchInv_ID','Match Shipment/Receipt to Invoice','Match Invoice','N',TO_TIMESTAMP('2013-07-22 20:56:37','YYYY-MM-DD HH24:MI:SS'),100,0,'Y',TO_TIMESTAMP('2013-07-22 20:56:37','YYYY-MM-DD HH24:MI:SS'),100,'N','N',0,'D','N',1689) +; + +-- Jul 22, 2013 8:56:39 PM MYT +-- IDEMPIERE-1188 Invoice Price Variance for Average PO Costing +INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Column_Trl_UU ) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=210662 AND NOT EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Column_ID=t.AD_Column_ID) +; + +-- Jul 22, 2013 8:56:45 PM MYT +-- IDEMPIERE-1188 Invoice Price Variance for Average PO Costing +ALTER TABLE M_CostDetail ADD COLUMN M_MatchInv_ID NUMERIC(10) DEFAULT NULL +; + +DROP VIEW m_costmovement_v; + +CREATE VIEW m_costmovement_v AS +SELECT a.ad_client_id, a.ad_org_id, b.c_acctschema_id, a.m_costhistory_id, a.m_costtype_id, a.m_costelement_id, a.m_attributesetinstance_id, + b.m_product_id, a.oldqty, a.newqty, a.oldcostprice, a.newcostprice, a.oldcqty, a.newcqty, a.oldcamt, a.newcamt, b.qty, b.amt, b.deltaqty, + b.deltaamt, b.c_orderline_id, b.m_inoutline_id, b.c_invoiceline_id, b.m_movementline_id, b.m_inventoryline_id, b.m_productionline_id, + b.c_projectissue_id, b.m_matchinv_id, a.m_costdetail_id, b.description, a.created, a.createdby, a.updated, a.updatedby, a.isactive + FROM m_costhistory a + JOIN m_costdetail b ON a.m_costdetail_id = b.m_costdetail_id + ORDER BY a.m_costhistory_id +; + + + +-- Jul 23, 2013 7:55:31 AM MYT +-- IDEMPIERE-1188 Invoice Price Variance for Average PO Costing +INSERT INTO AD_Column (SeqNoSelection,IsSyncDatabase,Version,AD_Table_ID,AD_Column_ID,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsParent,FieldLength,IsSelectionColumn,AD_Reference_ID,IsKey,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsUpdateable,ColumnName,Description,Name,IsAllowCopy,Updated,CreatedBy,AD_Org_ID,IsActive,Created,UpdatedBy,IsToolbarButton,IsAlwaysUpdateable,AD_Client_ID,EntityType,IsEncrypted,AD_Element_ID) VALUES (0,'N',1,200002,210663,'N','N','N',0,'N',22,'N',30,'N','N','Y','10f7d192-2c18-497c-bcf3-548f8546fd41','N','M_MatchInv_ID','Match Shipment/Receipt to Invoice','Match Invoice','N',TO_TIMESTAMP('2013-07-23 07:55:29','YYYY-MM-DD HH24:MI:SS'),100,0,'Y',TO_TIMESTAMP('2013-07-23 07:55:29','YYYY-MM-DD HH24:MI:SS'),100,'N','N',0,'D','N',1689) +; + +-- Jul 23, 2013 7:55:31 AM MYT +-- IDEMPIERE-1188 Invoice Price Variance for Average PO Costing +INSERT INTO AD_Column_Trl (AD_Language,AD_Column_ID, Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Column_Trl_UU ) SELECT l.AD_Language,t.AD_Column_ID, t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Column t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Column_ID=210663 AND NOT EXISTS (SELECT * FROM AD_Column_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Column_ID=t.AD_Column_ID) +; + +-- Jul 23, 2013 7:56:36 AM MYT +-- IDEMPIERE-1188 Invoice Price Variance for Average PO Costing +INSERT INTO AD_Field (NumLines,SortNo,IsEncrypted,AD_Tab_ID,DisplayLength,IsSameLine,IsHeading,AD_Column_ID,SeqNo,IsCentrallyMaintained,AD_Field_ID,IsReadOnly,EntityType,Description,Name,IsDisplayed,IsFieldOnly,AD_Field_UU,UpdatedBy,AD_Org_ID,Created,CreatedBy,Updated,IsActive,IsDisplayedGrid,SeqNoGrid,XPosition,IsQuickEntry,AD_Client_ID,ColumnSpan) VALUES (1,0,'N',200000,0,'N','N',210663,270,'Y',202340,'N','D','Match Shipment/Receipt to Invoice','Match Invoice','Y','N','624749f1-6544-45d7-a6b7-cebc6bcdfc93',100,0,TO_TIMESTAMP('2013-07-23 07:56:34','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2013-07-23 07:56:34','YYYY-MM-DD HH24:MI:SS'),'Y','Y',270,1,'N',0,1) +; + +-- Jul 23, 2013 7:56:36 AM MYT +-- IDEMPIERE-1188 Invoice Price Variance for Average PO Costing +INSERT INTO AD_Field_Trl (AD_Language,AD_Field_ID, Help,Description,Name, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Field_Trl_UU ) SELECT l.AD_Language,t.AD_Field_ID, t.Help,t.Description,t.Name, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Field t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Field_ID=202340 AND NOT EXISTS (SELECT * FROM AD_Field_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Field_ID=t.AD_Field_ID) +; + +-- Jul 23, 2013 7:57:03 AM MYT +-- IDEMPIERE-1188 Invoice Price Variance for Average PO Costing +UPDATE AD_Field SET SeqNo=270, ColumnSpan=2,Updated=TO_TIMESTAMP('2013-07-23 07:57:03','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=202340 +; + +SELECT register_migration_script('201308140925_IDEMPIERE-1188.sql') FROM dual +; + diff --git a/org.adempiere.base/src/org/compiere/acct/Doc_MatchInv.java b/org.adempiere.base/src/org/compiere/acct/Doc_MatchInv.java index ef47927faa..f1bd5733ef 100644 --- a/org.adempiere.base/src/org/compiere/acct/Doc_MatchInv.java +++ b/org.adempiere.base/src/org/compiere/acct/Doc_MatchInv.java @@ -18,9 +18,12 @@ package org.compiere.acct; import java.math.BigDecimal; import java.sql.ResultSet; +import java.sql.SQLException; +import java.sql.Savepoint; import java.util.ArrayList; import java.util.logging.Level; +import org.adempiere.exceptions.AverageCostingZeroQtyException; import org.compiere.model.MAccount; import org.compiere.model.MAcctSchema; import org.compiere.model.MAcctSchemaElement; @@ -32,7 +35,9 @@ import org.compiere.model.MInvoice; import org.compiere.model.MInvoiceLine; import org.compiere.model.MMatchInv; import org.compiere.model.ProductCost; +import org.compiere.model.X_M_Cost; import org.compiere.util.Env; +import org.compiere.util.Trx; /** * Post MatchInv Documents. @@ -272,20 +277,7 @@ public class Doc_MatchInv extends Doc // Invoice Price Variance difference BigDecimal ipv = cr.getAcctBalance().add(dr.getAcctBalance()).negate(); - if (ipv.signum() != 0) - { - FactLine pv = fact.createLine(null, - m_pc.getAccount(ProductCost.ACCTTYPE_P_IPV, as), - as.getC_Currency_ID(), ipv); - pv.setC_Activity_ID(m_invoiceLine.getC_Activity_ID()); - pv.setC_Campaign_ID(m_invoiceLine.getC_Campaign_ID()); - pv.setC_Project_ID(m_invoiceLine.getC_Project_ID()); - pv.setC_ProjectPhase_ID(m_invoiceLine.getC_ProjectPhase_ID()); - pv.setC_ProjectTask_ID(m_invoiceLine.getC_ProjectTask_ID()); - pv.setC_UOM_ID(m_invoiceLine.getC_UOM_ID()); - pv.setUser1_ID(m_invoiceLine.getUser1_ID()); - pv.setUser2_ID(m_invoiceLine.getUser2_ID()); - } + processInvoicePriceVariance(as, fact, ipv); if (log.isLoggable(Level.FINE)) log.fine("IPV=" + ipv + "; Balance=" + fact.getSourceBalance()); String error = createMatchInvCostDetail(as); @@ -310,6 +302,90 @@ public class Doc_MatchInv extends Doc return facts; } // createFact + + /** + * @param as + * @param fact + * @param ipv + */ + protected void processInvoicePriceVariance(MAcctSchema as, Fact fact, + BigDecimal ipv) { + if (ipv.signum() == 0) return; + + FactLine pv = fact.createLine(null, + m_pc.getAccount(ProductCost.ACCTTYPE_P_IPV, as), + as.getC_Currency_ID(), ipv); + pv.setC_Activity_ID(m_invoiceLine.getC_Activity_ID()); + pv.setC_Campaign_ID(m_invoiceLine.getC_Campaign_ID()); + pv.setC_Project_ID(m_invoiceLine.getC_Project_ID()); + pv.setC_ProjectPhase_ID(m_invoiceLine.getC_ProjectPhase_ID()); + pv.setC_ProjectTask_ID(m_invoiceLine.getC_ProjectTask_ID()); + pv.setC_UOM_ID(m_invoiceLine.getC_UOM_ID()); + pv.setUser1_ID(m_invoiceLine.getUser1_ID()); + pv.setUser2_ID(m_invoiceLine.getUser2_ID()); + pv.setM_Product_ID(m_invoiceLine.getM_Product_ID()); + + MMatchInv matchInv = (MMatchInv)getPO(); + Trx trx = Trx.get(getTrxName(), false); + Savepoint savepoint = null; + boolean zeroQty = false; + try { + savepoint = trx.setSavepoint(null); + + if (!MCostDetail.createMatchInvoice(as, m_invoiceLine.getAD_Org_ID(), + m_invoiceLine.getM_Product_ID(), m_invoiceLine.getM_AttributeSetInstance_ID(), + matchInv.getM_MatchInv_ID(), 0, + ipv, BigDecimal.ZERO, "Invoice Price Variance", getTrxName())) { + throw new RuntimeException("Failed to create cost detail record."); + } + } catch (SQLException e) { + throw new RuntimeException(e.getLocalizedMessage(), e); + } catch (AverageCostingZeroQtyException e) { + zeroQty = true; + try { + trx.rollback(savepoint); + savepoint = null; + } catch (SQLException e1) { + throw new RuntimeException(e1.getLocalizedMessage(), e1); + } + } finally { + if (savepoint != null) { + try { + trx.releaseSavepoint(savepoint); + } catch (SQLException e) {} + } + } + + String costingMethod = m_pc.getProduct().getCostingMethod(as); + if (X_M_Cost.COSTINGMETHOD_AveragePO.equals(costingMethod)) { + MAccount account = zeroQty ? m_pc.getAccount(ProductCost.ACCTTYPE_P_AverageCostVariance, as) : m_pc.getAccount(ProductCost.ACCTTYPE_P_Asset, as); + + FactLine line = fact.createLine(null, + m_pc.getAccount(ProductCost.ACCTTYPE_P_IPV, as), + as.getC_Currency_ID(), ipv.negate()); + line.setC_Activity_ID(m_invoiceLine.getC_Activity_ID()); + line.setC_Campaign_ID(m_invoiceLine.getC_Campaign_ID()); + line.setC_Project_ID(m_invoiceLine.getC_Project_ID()); + line.setC_ProjectPhase_ID(m_invoiceLine.getC_ProjectPhase_ID()); + line.setC_ProjectTask_ID(m_invoiceLine.getC_ProjectTask_ID()); + line.setC_UOM_ID(m_invoiceLine.getC_UOM_ID()); + line.setUser1_ID(m_invoiceLine.getUser1_ID()); + line.setUser2_ID(m_invoiceLine.getUser2_ID()); + line.setM_Product_ID(m_invoiceLine.getM_Product_ID()); + + line = fact.createLine(null, account, as.getC_Currency_ID(), ipv); + line.setC_Activity_ID(m_invoiceLine.getC_Activity_ID()); + line.setC_Campaign_ID(m_invoiceLine.getC_Campaign_ID()); + line.setC_Project_ID(m_invoiceLine.getC_Project_ID()); + line.setC_ProjectPhase_ID(m_invoiceLine.getC_ProjectPhase_ID()); + line.setC_ProjectTask_ID(m_invoiceLine.getC_ProjectTask_ID()); + line.setC_UOM_ID(m_invoiceLine.getC_UOM_ID()); + line.setUser1_ID(m_invoiceLine.getUser1_ID()); + line.setUser2_ID(m_invoiceLine.getUser2_ID()); + line.setM_Product_ID(m_invoiceLine.getM_Product_ID()); + } + } + /** Verify if the posting involves two or more organizations @return true if there are more than one org involved on the posting */ diff --git a/org.adempiere.base/src/org/compiere/model/I_M_CostDetail.java b/org.adempiere.base/src/org/compiere/model/I_M_CostDetail.java index 910dfcbab6..abc5ffa28a 100644 --- a/org.adempiere.base/src/org/compiere/model/I_M_CostDetail.java +++ b/org.adempiere.base/src/org/compiere/model/I_M_CostDetail.java @@ -350,6 +350,21 @@ public interface I_M_CostDetail public org.compiere.model.I_M_InventoryLine getM_InventoryLine() throws RuntimeException; + /** Column name M_MatchInv_ID */ + public static final String COLUMNNAME_M_MatchInv_ID = "M_MatchInv_ID"; + + /** Set Match Invoice. + * Match Shipment/Receipt to Invoice + */ + public void setM_MatchInv_ID (int M_MatchInv_ID); + + /** Get Match Invoice. + * Match Shipment/Receipt to Invoice + */ + public int getM_MatchInv_ID(); + + public org.compiere.model.I_M_MatchInv getM_MatchInv() throws RuntimeException; + /** Column name M_MovementLine_ID */ public static final String COLUMNNAME_M_MovementLine_ID = "M_MovementLine_ID"; diff --git a/org.adempiere.base/src/org/compiere/model/MCostDetail.java b/org.adempiere.base/src/org/compiere/model/MCostDetail.java index d87d1e79af..673d58b1e7 100644 --- a/org.adempiere.base/src/org/compiere/model/MCostDetail.java +++ b/org.adempiere.base/src/org/compiere/model/MCostDetail.java @@ -464,6 +464,69 @@ public class MCostDetail extends X_M_CostDetail return ok; } // createProduction + /** + * @param as + * @param AD_Org_ID + * @param M_Product_ID + * @param M_AttributeSetInstance_ID + * @param M_MatchInv_ID + * @param M_CostElement_ID + * @param Amt + * @param Qty + * @param Description + * @param trxName + * @return true if no error + */ + public static boolean createMatchInvoice (MAcctSchema as, int AD_Org_ID, + int M_Product_ID, int M_AttributeSetInstance_ID, + int M_MatchInv_ID, int M_CostElement_ID, + BigDecimal Amt, BigDecimal Qty, + String Description, String trxName) + { + // Delete Unprocessed zero Differences + StringBuilder sql = new StringBuilder("DELETE M_CostDetail ") + .append("WHERE Processed='N' AND COALESCE(DeltaAmt,0)=0 AND COALESCE(DeltaQty,0)=0") + .append(" AND M_MatchInv_ID=").append(M_MatchInv_ID) + .append(" AND C_AcctSchema_ID =").append(as.getC_AcctSchema_ID()) + .append(" AND M_AttributeSetInstance_ID=").append(M_AttributeSetInstance_ID) + .append(" AND Coalesce(M_CostElement_ID,0)=").append(M_CostElement_ID); + + int no = DB.executeUpdate(sql.toString(), trxName); + if (no != 0) + if (s_log.isLoggable(Level.CONFIG)) s_log.config("Deleted #" + no); + MCostDetail cd = get (as.getCtx(), "M_MatchInv_ID=? AND Coalesce(M_CostElement_ID,0)="+M_CostElement_ID, + M_MatchInv_ID, M_AttributeSetInstance_ID, as.getC_AcctSchema_ID(), trxName); + // + if (cd == null) // createNew + { + cd = new MCostDetail (as, AD_Org_ID, + M_Product_ID, M_AttributeSetInstance_ID, + M_CostElement_ID, + Amt, Qty, Description, trxName); + cd.setM_MatchInv_ID(M_MatchInv_ID); + } + else + { + cd.setDeltaAmt(Amt.subtract(cd.getAmt())); + cd.setDeltaQty(Qty.subtract(cd.getQty())); + if (cd.isDelta()) + { + cd.setProcessed(false); + cd.setAmt(Amt); + cd.setQty(Qty); + } + else + return true; // nothing to do + } + boolean ok = cd.save(); + if (ok && !cd.isProcessed()) + { + ok = cd.process(); + } + if (s_log.isLoggable(Level.CONFIG)) s_log.config("(" + ok + ") " + cd); + return ok; + } // createMatchInvoice + /************************************************************************** * Get Cost Detail * @param ctx context @@ -1184,6 +1247,13 @@ public class MCostDetail extends X_M_CostDetail log.warning("QtyAdjust - " + ce + " - " + cost); } + else if (getM_MatchInv_ID() > 0) + { + if (ce.isAveragePO()) + { + cost.setWeightedAverage(amt, qty); + } + } else // unknown or no id { log.warning("Unknown Type: " + toString()); diff --git a/org.adempiere.base/src/org/compiere/model/X_M_CostDetail.java b/org.adempiere.base/src/org/compiere/model/X_M_CostDetail.java index 2358e6921e..0452400dd5 100644 --- a/org.adempiere.base/src/org/compiere/model/X_M_CostDetail.java +++ b/org.adempiere.base/src/org/compiere/model/X_M_CostDetail.java @@ -31,7 +31,7 @@ public class X_M_CostDetail extends PO implements I_M_CostDetail, I_Persistent /** * */ - private static final long serialVersionUID = 20130626L; + private static final long serialVersionUID = 20130722L; /** Standard Constructor */ public X_M_CostDetail (Properties ctx, int M_CostDetail_ID, String trxName) @@ -520,6 +520,34 @@ public class X_M_CostDetail extends PO implements I_M_CostDetail, I_Persistent return ii.intValue(); } + public org.compiere.model.I_M_MatchInv getM_MatchInv() throws RuntimeException + { + return (org.compiere.model.I_M_MatchInv)MTable.get(getCtx(), org.compiere.model.I_M_MatchInv.Table_Name) + .getPO(getM_MatchInv_ID(), get_TrxName()); } + + /** Set Match Invoice. + @param M_MatchInv_ID + Match Shipment/Receipt to Invoice + */ + public void setM_MatchInv_ID (int M_MatchInv_ID) + { + if (M_MatchInv_ID < 1) + set_ValueNoCheck (COLUMNNAME_M_MatchInv_ID, null); + else + set_ValueNoCheck (COLUMNNAME_M_MatchInv_ID, Integer.valueOf(M_MatchInv_ID)); + } + + /** Get Match Invoice. + @return Match Shipment/Receipt to Invoice + */ + public int getM_MatchInv_ID () + { + Integer ii = (Integer)get_Value(COLUMNNAME_M_MatchInv_ID); + if (ii == null) + return 0; + return ii.intValue(); + } + public org.compiere.model.I_M_MovementLine getM_MovementLine() throws RuntimeException { return (org.compiere.model.I_M_MovementLine)MTable.get(getCtx(), org.compiere.model.I_M_MovementLine.Table_Name) From 5861f8be722c983b6456aa356328abb553f7554f Mon Sep 17 00:00:00 2001 From: Heng Sin Low Date: Wed, 14 Aug 2013 18:12:26 +0800 Subject: [PATCH 48/57] IDEMPIERE-1243 It shall not be possible to change Organization on the Order Line. --- .../oracle/201308141244_IDEMPIERE-1243.sql | 27 +++++++++++++++++++ .../201308141244_IDEMPIERE-1243.sql | 27 +++++++++++++++++++ 2 files changed, 54 insertions(+) create mode 100644 migration/i1.0c-release/oracle/201308141244_IDEMPIERE-1243.sql create mode 100644 migration/i1.0c-release/postgresql/201308141244_IDEMPIERE-1243.sql diff --git a/migration/i1.0c-release/oracle/201308141244_IDEMPIERE-1243.sql b/migration/i1.0c-release/oracle/201308141244_IDEMPIERE-1243.sql new file mode 100644 index 0000000000..f803a46bfe --- /dev/null +++ b/migration/i1.0c-release/oracle/201308141244_IDEMPIERE-1243.sql @@ -0,0 +1,27 @@ +-- Aug 14, 2013 12:20:12 PM IST +-- IDEMPIERE-1243 It shall not be possible to change Organization on the Order Line +UPDATE AD_Field SET IsReadOnly='Y',Updated=TO_DATE('2013-08-14 12:20:12','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=2053 +; + +-- Aug 14, 2013 12:22:49 PM IST +-- IDEMPIERE-1243 It shall not be possible to change Organization on the Order Line +UPDATE AD_Column SET AD_Val_Rule_ID=189,Updated=TO_DATE('2013-08-14 12:22:49','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=2223 +; + +-- Aug 14, 2013 12:34:17 PM IST +-- IDEMPIERE-1243 It shall not be possible to change Organization on the Order Line +UPDATE AD_Field SET IsReadOnly='Y',Updated=TO_DATE('2013-08-14 12:34:17','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=3409 +; + +-- Aug 14, 2013 6:06:28 PM MYT +-- IDEMPIERE-1243 It shall not be possible to change Organization on the Order Line +UPDATE AD_Field SET IsReadOnly='Y',Updated=TO_DATE('2013-08-14 18:06:28','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=1129 +; + +-- Aug 14, 2013 6:10:37 PM MYT +-- IDEMPIERE-1243 It shall not be possible to change Organization on the Order Line +UPDATE AD_Field SET IsReadOnly='Y',Updated=TO_DATE('2013-08-14 18:10:37','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=3388 +; + +SELECT register_migration_script('201308141244_IDEMPIERE-1243.sql') FROM dual +; \ No newline at end of file diff --git a/migration/i1.0c-release/postgresql/201308141244_IDEMPIERE-1243.sql b/migration/i1.0c-release/postgresql/201308141244_IDEMPIERE-1243.sql new file mode 100644 index 0000000000..66071ab58f --- /dev/null +++ b/migration/i1.0c-release/postgresql/201308141244_IDEMPIERE-1243.sql @@ -0,0 +1,27 @@ +-- Aug 14, 2013 12:20:12 PM IST +-- IDEMPIERE-1243 It shall not be possible to change Organization on the Order Line +UPDATE AD_Field SET IsReadOnly='Y',Updated=TO_TIMESTAMP('2013-08-14 12:20:12','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=2053 +; + +-- Aug 14, 2013 12:22:49 PM IST +-- IDEMPIERE-1243 It shall not be possible to change Organization on the Order Line +UPDATE AD_Column SET AD_Val_Rule_ID=189,Updated=TO_TIMESTAMP('2013-08-14 12:22:49','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=2223 +; + +-- Aug 14, 2013 12:34:17 PM IST +-- IDEMPIERE-1243 It shall not be possible to change Organization on the Order Line +UPDATE AD_Field SET IsReadOnly='Y',Updated=TO_TIMESTAMP('2013-08-14 12:34:17','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=3409 +; + +-- Aug 14, 2013 6:06:28 PM MYT +-- IDEMPIERE-1243 It shall not be possible to change Organization on the Order Line +UPDATE AD_Field SET IsReadOnly='Y',Updated=TO_TIMESTAMP('2013-08-14 18:06:28','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=1129 +; + +-- Aug 14, 2013 6:10:37 PM MYT +-- IDEMPIERE-1243 It shall not be possible to change Organization on the Order Line +UPDATE AD_Field SET IsReadOnly='Y',Updated=TO_TIMESTAMP('2013-08-14 18:10:37','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=3388 +; + +SELECT register_migration_script('201308141244_IDEMPIERE-1243.sql') FROM dual +; \ No newline at end of file From dcce7558b028b51fd41e48644087be819ffc076d Mon Sep 17 00:00:00 2001 From: Heng Sin Low Date: Wed, 14 Aug 2013 22:43:30 +0800 Subject: [PATCH 49/57] IDEMPIERE-1271 Bug of read only logic for tab --- org.adempiere.base/src/org/compiere/model/GridField.java | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/org.adempiere.base/src/org/compiere/model/GridField.java b/org.adempiere.base/src/org/compiere/model/GridField.java index 92d7a4c3e4..73cc4df99f 100644 --- a/org.adempiere.base/src/org/compiere/model/GridField.java +++ b/org.adempiere.base/src/org/compiere/model/GridField.java @@ -432,6 +432,15 @@ public class GridField if (log.isLoggable(Level.FINEST)) log.finest(m_vo.ColumnName + " NO - TabRO=" + m_vo.tabReadOnly + ", FieldRO=" + m_vo.IsReadOnly); return false; } + + //check tab context + if (checkContext && getGridTab() != null) + { + if (getGridTab().isReadOnly()) + { + return false; + } + } // Not Updateable - only editable if new updateable row if (!m_vo.IsUpdateable && !m_inserting) From 7875807f04df92dad69d55139d4a1546997717f3 Mon Sep 17 00:00:00 2001 From: Heng Sin Low Date: Thu, 15 Aug 2013 01:04:47 +0800 Subject: [PATCH 50/57] IDEMPIERE-497 2Pack SQL Statement Handler improvements for Postgresql. Use savepoint to rollback just the sql statement. --- .../handler/SQLStatementElementHandler.java | 34 ++++++++++++------- 1 file changed, 22 insertions(+), 12 deletions(-) diff --git a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/SQLStatementElementHandler.java b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/SQLStatementElementHandler.java index 767b3e4364..4ba2cf0a1c 100644 --- a/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/SQLStatementElementHandler.java +++ b/org.adempiere.pipo.handlers/src/org/adempiere/pipo2/handler/SQLStatementElementHandler.java @@ -16,9 +16,9 @@ *****************************************************************************/ package org.adempiere.pipo2.handler; -import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.SQLException; +import java.sql.Savepoint; import java.sql.Statement; import java.util.logging.Level; @@ -33,6 +33,7 @@ import org.adempiere.pipo2.SQLElementParameters; import org.compiere.model.X_AD_Package_Imp_Detail; import org.compiere.util.DB; import org.compiere.util.Env; +import org.compiere.util.Trx; import org.xml.sax.SAXException; import org.xml.sax.helpers.AttributesImpl; @@ -46,13 +47,17 @@ public class SQLStatementElementHandler extends AbstractElementHandler { String sql = getStringValue(element, "statement"); if (sql.endsWith(";") && !(sql.toLowerCase().endsWith("end;"))) sql = sql.substring(0, sql.length() - 1); + Savepoint savepoint = null; PreparedStatement pstmt = null; try { // NOTE Postgres needs to commit DDL statements - // add a SQL command just with COMMIT if you want to simulate the Oracle behavior (commit on DDL) - - // It is also necessary on postgres to add a COMMIT before any SQL statement that can fail - // for example a create index where is possible the index already exists + // add a SQL command just with COMMIT if you want to simulate the Oracle behavior (commit on DDL) + // Use savepoint here so that SQL exception would not rollback the whole process + if (DB.isPostgreSQL()) + { + Trx trx = Trx.get(getTrxName(ctx), true); + savepoint = trx.setSavepoint(null); + } pstmt = DB.prepareStatement(sql, getTrxName(ctx)); if (DBType.equals("ALL")) { @@ -89,14 +94,13 @@ public class SQLStatementElementHandler extends AbstractElementHandler { } catch (Exception e) { if (DB.isPostgreSQL()) { // rollback immediately postgres on exception to avoid a wrong SQL stop the whole process - if (pstmt != null) { - Connection m_con = null; + if (savepoint != null) + { + Trx trx = Trx.get(getTrxName(ctx), false); try { - m_con = pstmt.getConnection(); - if (m_con != null && !m_con.getAutoCommit()) - m_con.rollback(); - } catch (SQLException ex) { - } + trx.rollback(savepoint); + } catch (SQLException e1) {} + savepoint = null; } } log.log(Level.SEVERE,"SQLSatement", e); @@ -106,6 +110,12 @@ public class SQLStatementElementHandler extends AbstractElementHandler { } finally { DB.close(pstmt); pstmt = null; + if (savepoint != null) { + Trx trx = Trx.get(getTrxName(ctx), false); + try { + trx.releaseSavepoint(savepoint); + } catch (SQLException e) {} + } } } From 77f36b2338504e726a0214cc4452639a24593931 Mon Sep 17 00:00:00 2001 From: Heng Sin Low Date: Thu, 15 Aug 2013 08:16:33 +0800 Subject: [PATCH 51/57] IDEMPIERE-1219 Error message when saving 2 default Tax Rates are not translated. --- .../oracle/201308141001_IDEMPIERE-1219.sql | 13 +++++++++++++ .../postgresql/201308141001_IDEMPIERE-1219.sql | 13 +++++++++++++ 2 files changed, 26 insertions(+) create mode 100644 migration/i1.0c-release/oracle/201308141001_IDEMPIERE-1219.sql create mode 100644 migration/i1.0c-release/postgresql/201308141001_IDEMPIERE-1219.sql diff --git a/migration/i1.0c-release/oracle/201308141001_IDEMPIERE-1219.sql b/migration/i1.0c-release/oracle/201308141001_IDEMPIERE-1219.sql new file mode 100644 index 0000000000..a147875568 --- /dev/null +++ b/migration/i1.0c-release/oracle/201308141001_IDEMPIERE-1219.sql @@ -0,0 +1,13 @@ +-- Aug 14, 2013 9:52:38 AM COT +-- IDEMPIERE-1219 Error message when saving 2 default Tax Rates are not translated +INSERT INTO AD_Message (MsgType,MsgText,AD_Message_ID,EntityType,AD_Message_UU,Value,IsActive,Updated,CreatedBy,UpdatedBy,AD_Org_ID,Created,AD_Client_ID) VALUES ('I','Only one @C_Tax_ID@ per @C_TaxCategory_ID@ can be marked as Default!',200220,'D','84a60603-8500-40be-a90f-f6c1bc16e827','OnlyOneTaxPerCategoryMarkedDefault','Y',TO_DATE('2013-08-14 09:52:37','YYYY-MM-DD HH24:MI:SS'),100,100,0,TO_DATE('2013-08-14 09:52:37','YYYY-MM-DD HH24:MI:SS'),0) +; + +-- Aug 14, 2013 9:52:38 AM COT +-- IDEMPIERE-1219 Error message when saving 2 default Tax Rates are not translated +INSERT INTO AD_Message_Trl (AD_Language,AD_Message_ID, MsgText,MsgTip, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Message_Trl_UU ) SELECT l.AD_Language,t.AD_Message_ID, t.MsgText,t.MsgTip, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Message t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Message_ID=200220 AND NOT EXISTS (SELECT * FROM AD_Message_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Message_ID=t.AD_Message_ID) +; + +SELECT register_migration_script('201308141001_IDEMPIERE-1269.sql') FROM dual +; + diff --git a/migration/i1.0c-release/postgresql/201308141001_IDEMPIERE-1219.sql b/migration/i1.0c-release/postgresql/201308141001_IDEMPIERE-1219.sql new file mode 100644 index 0000000000..fe20c0191d --- /dev/null +++ b/migration/i1.0c-release/postgresql/201308141001_IDEMPIERE-1219.sql @@ -0,0 +1,13 @@ +-- Aug 14, 2013 9:52:38 AM COT +-- IDEMPIERE-1219 Error message when saving 2 default Tax Rates are not translated +INSERT INTO AD_Message (MsgType,MsgText,AD_Message_ID,EntityType,AD_Message_UU,Value,IsActive,Updated,CreatedBy,UpdatedBy,AD_Org_ID,Created,AD_Client_ID) VALUES ('I','Only one @C_Tax_ID@ per @C_TaxCategory_ID@ can be marked as Default!',200220,'D','84a60603-8500-40be-a90f-f6c1bc16e827','OnlyOneTaxPerCategoryMarkedDefault','Y',TO_TIMESTAMP('2013-08-14 09:52:37','YYYY-MM-DD HH24:MI:SS'),100,100,0,TO_TIMESTAMP('2013-08-14 09:52:37','YYYY-MM-DD HH24:MI:SS'),0) +; + +-- Aug 14, 2013 9:52:38 AM COT +-- IDEMPIERE-1219 Error message when saving 2 default Tax Rates are not translated +INSERT INTO AD_Message_Trl (AD_Language,AD_Message_ID, MsgText,MsgTip, IsTranslated,AD_Client_ID,AD_Org_ID,Created,Createdby,Updated,UpdatedBy,AD_Message_Trl_UU ) SELECT l.AD_Language,t.AD_Message_ID, t.MsgText,t.MsgTip, 'N',t.AD_Client_ID,t.AD_Org_ID,t.Created,t.Createdby,t.Updated,t.UpdatedBy,Generate_UUID() FROM AD_Language l, AD_Message t WHERE l.IsActive='Y' AND l.IsSystemLanguage='Y' AND l.IsBaseLanguage='N' AND t.AD_Message_ID=200220 AND NOT EXISTS (SELECT * FROM AD_Message_Trl tt WHERE tt.AD_Language=l.AD_Language AND tt.AD_Message_ID=t.AD_Message_ID) +; + +SELECT register_migration_script('201308141001_IDEMPIERE-1269.sql') FROM dual +; + From 28f2fa1c068c88efeac2c860f5950173e1232698 Mon Sep 17 00:00:00 2001 From: Heng Sin Low Date: Thu, 15 Aug 2013 09:30:44 +0800 Subject: [PATCH 52/57] IDEMPIERE-528 Determine Zoom window depending on record. Add NPE check. --- .../src/org/compiere/model/MZoomCondition.java | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/org.adempiere.base/src/org/compiere/model/MZoomCondition.java b/org.adempiere.base/src/org/compiere/model/MZoomCondition.java index 49f59e75d2..af7beff98b 100644 --- a/org.adempiere.base/src/org/compiere/model/MZoomCondition.java +++ b/org.adempiere.base/src/org/compiere/model/MZoomCondition.java @@ -21,6 +21,7 @@ import java.util.Properties; import org.compiere.util.DB; import org.compiere.util.Env; +import org.compiere.util.Util; /** * Zoom Condition model @@ -102,7 +103,11 @@ public class MZoomCondition extends X_AD_ZoomCondition public static int findZoomWindow(MQuery query) { String tableName = query.getTableName(); + if (Util.isEmpty(tableName)) + return 0; MTable table = MTable.get(Env.getCtx(), tableName); + if (table == null) + return 0; return findZoomWindowByTableId(table.getAD_Table_ID(), query); } From 2ab43bafcdc3404ddddae8b4aee55d5a0361350b Mon Sep 17 00:00:00 2001 From: Heng Sin Low Date: Thu, 15 Aug 2013 09:43:52 +0800 Subject: [PATCH 53/57] IDEMPIERE-1275 Accounting Dimensions Navigation is broken. --- .../adempiere/webui/adwindow/BreadCrumb.java | 6 +- .../webui/adwindow/CompositeADTabbox.java | 68 +++++++++++++------ .../adempiere/webui/adwindow/IADTabbox.java | 3 +- 3 files changed, 56 insertions(+), 21 deletions(-) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/BreadCrumb.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/BreadCrumb.java index 43dd3dd491..40e60b9353 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/BreadCrumb.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/BreadCrumb.java @@ -492,5 +492,9 @@ public class BreadCrumb extends Div implements EventListener { public ToolBarButton getPreviousButton() { return btnPrevious; - } + } + + public boolean isEmpty() { + return layout == null || layout.getChildren().isEmpty(); + } } diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/CompositeADTabbox.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/CompositeADTabbox.java index 01b410c1d2..5400928da6 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/CompositeADTabbox.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/CompositeADTabbox.java @@ -349,9 +349,8 @@ public class CompositeADTabbox extends AbstractADTabbox if (layout.getChildren().isEmpty()) { layout.appendChild(tabPanel); - headerTab = tabPanel; - updateBreadCrumb(); - } else if (tabLabel.tabLevel <= 1) { + headerTab = tabPanel; + } else if (tabLabel.tabLevel == 1) { if (headerTab.getDetailPane() == null) { headerTab.setDetailPane(createDetailPane()); } else @@ -360,7 +359,7 @@ public class CompositeADTabbox extends AbstractADTabbox headerTab.getDetailPane().addADTabpanel(tabPanel, tabLabel); tabPanel.setDetailPaneMode(true); headerTab.getDetailPane().setVflex("true"); - } else { + } else if (tabLabel.tabLevel > 1){ headerTab.getDetailPane().addADTabpanel(tabPanel, tabLabel, false); tabPanel.setDetailPaneMode(true); headerTab.getDetailPane().setVflex("true"); @@ -372,6 +371,18 @@ public class CompositeADTabbox extends AbstractADTabbox tabPanel.getGridTab().addDataStatusListener(new SyncDataStatusListener(tabPanel)); } + @Override + public boolean updateSelectedIndex(int oldIndex, int newIndex) { + boolean b = super.updateSelectedIndex(oldIndex, newIndex); + if (b) { + BreadCrumb breadcrumb = getBreadCrumb(); + if (breadcrumb.isEmpty()) { + updateBreadCrumb(); + } + } + return b; + } + private void activateDetailIfVisible() { if (headerTab instanceof ADTabpanel) { ((ADTabpanel)headerTab).activateDetailIfVisible(); @@ -460,7 +471,7 @@ public class CompositeADTabbox extends AbstractADTabbox IADTabpanel tabPanel = tabPanelList.get(i); int tabLevel = tabPanel.getTabLevel(); ADTabListModel.ADTabLabel tabLabel = tabLabelList.get(i); - if ((tabLevel - currentLevel) == 1 || (tabLevel == 0 && currentLevel == 0)) { + if ((tabLevel - currentLevel) == 1) { tabIndex++; Object[] value = new Object[]{tabIndex, tabPanel, tabLabel, Boolean.TRUE}; list.add(value); @@ -593,20 +604,39 @@ public class CompositeADTabbox extends AbstractADTabbox } } } - for(int i = parentIndex+1; i < tabLabelList.size(); i++) { - if (i == selectedIndex) continue; - - tabLabel = tabLabelList.get(i); - if (tabLabel.tabLevel == headerTab.getTabLevel()) { - IADTabpanel adtab = tabPanelList.get(i); - if (adtab.getDisplayLogic() != null && adtab.getDisplayLogic().trim().length() > 0) { - if (!Evaluator.evaluateLogic(headerTab, adtab.getDisplayLogic())) { - continue; - } - } - links.put(Integer.toString(i), tabLabel.label); - } else if (tabLabel.tabLevel < headerTab.getTabLevel()) { - break; + if (headerTab.getTabLevel() == 0) + { + for(int i = 0; i < tabLabelList.size(); i++) { + if (i == selectedIndex) continue; + tabLabel = tabLabelList.get(i); + if (tabLabel.tabLevel == headerTab.getTabLevel()) { + IADTabpanel adtab = tabPanelList.get(i); + if (adtab.getDisplayLogic() != null && adtab.getDisplayLogic().trim().length() > 0) { + if (!Evaluator.evaluateLogic(headerTab, adtab.getDisplayLogic())) { + continue; + } + } + links.put(Integer.toString(i), tabLabel.label); + } + } + } + else + { + for(int i = parentIndex+1; i < tabLabelList.size(); i++) { + if (i == selectedIndex) continue; + + tabLabel = tabLabelList.get(i); + if (tabLabel.tabLevel == headerTab.getTabLevel()) { + IADTabpanel adtab = tabPanelList.get(i); + if (adtab.getDisplayLogic() != null && adtab.getDisplayLogic().trim().length() > 0) { + if (!Evaluator.evaluateLogic(headerTab, adtab.getDisplayLogic())) { + continue; + } + } + links.put(Integer.toString(i), tabLabel.label); + } else if (tabLabel.tabLevel < headerTab.getTabLevel()) { + break; + } } } diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/IADTabbox.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/IADTabbox.java index 519aa569ec..8beac408cf 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/IADTabbox.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/IADTabbox.java @@ -176,5 +176,6 @@ public interface IADTabbox extends UIPart { /** * @return true if all the tabs of detail pane have been linked up with adtabpanel */ - boolean isDetailPaneLoaded(); + public boolean isDetailPaneLoaded(); + } From 9528b69977aeacb9ec3139c4ca951b55c7f5add7 Mon Sep 17 00:00:00 2001 From: Heng Sin Low Date: Thu, 15 Aug 2013 14:45:32 +0800 Subject: [PATCH 54/57] IDEMPIERE-1219 Error message when saving 2 default Tax Rates are not translated. --- org.adempiere.base/src/org/compiere/model/MTax.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/org.adempiere.base/src/org/compiere/model/MTax.java b/org.adempiere.base/src/org/compiere/model/MTax.java index 2121ee92f6..579813968d 100644 --- a/org.adempiere.base/src/org/compiere/model/MTax.java +++ b/org.adempiere.base/src/org/compiere/model/MTax.java @@ -289,7 +289,7 @@ public class MTax extends X_C_Tax .setOnlyActiveRecords(true) .list(); if (list.size() >= 1) { - log.saveError("Error", Msg.parseTranslation(getCtx(), "Only one @C_Tax_ID@ per @C_TaxCategory_ID@ can be marked as Default!")); + log.saveError("Error", Msg.parseTranslation(getCtx(), Msg.getMsg(Env.getCtx(),"OnlyOneTaxPerCategoryMarkedDefault"))); return false; } } From 82ed66848da0ea884279cf7d0a196d15a6f02ebe Mon Sep 17 00:00:00 2001 From: Elaine Tan Date: Fri, 16 Aug 2013 15:34:06 +0800 Subject: [PATCH 55/57] IDEMPIERE-724 Zk: Make iDempiere theme more easily customizable - Refactoring to allowing theme to change the appearance of the about window --- .../adempiere/webui/window/AboutWindow.java | 68 ++++++++++--------- 1 file changed, 36 insertions(+), 32 deletions(-) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/AboutWindow.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/AboutWindow.java index 8d4eb06429..d6a8df384f 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/AboutWindow.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/window/AboutWindow.java @@ -82,11 +82,11 @@ public class AboutWindow extends Window implements EventListener { private Checkbox bErrorsOnly; private Listbox logTable; private Tabbox tabbox; - private Tabpanels tabPanels; + protected Tabpanels tabPanels; private Button btnDownload; private Button btnErrorEmail; private Button btnViewLog; - private Tab tabLog; + protected Tab tabLog; private Button btnAdempiereLog; @@ -119,6 +119,36 @@ public class AboutWindow extends Window implements EventListener { tabPanels.setHflex("1"); tabPanels.setVflex("1"); + initTabs(tabs); + + Button btnOk = ButtonFactory.createNamedButton(ConfirmPanel.A_OK); + btnOk.addEventListener(Events.ON_CLICK, this); + + Borderlayout borderlayout = new Borderlayout(); + this.appendChild(borderlayout); + borderlayout.setHflex("1"); + borderlayout.setVflex("1"); + + Center centerPane = new Center(); + centerPane.setSclass("dialog-content"); + centerPane.setAutoscroll(true); + borderlayout.appendChild(centerPane); + centerPane.appendChild(tabbox); + + South southPane = new South(); + southPane.setStyle("text-align: right"); + southPane.setSclass("dialog-footer"); + borderlayout.appendChild(southPane); + southPane.appendChild(btnOk); + + this.setBorder("normal"); + this.setWidth("600px"); + this.setHeight("450px"); + this.setShadow(true); + this.setAttribute(Window.MODE_KEY, Window.MODE_HIGHLIGHTED); + } + + protected void initTabs(Tabs tabs) { //about Tab tab = new Tab(); tab.setLabel(Msg.getMsg(Env.getCtx(), "About")); @@ -147,35 +177,9 @@ public class AboutWindow extends Window implements EventListener { tab.setParent(tabs); tabPanel = createTrace(); tabPanel.setParent(tabPanels); - - Button btnOk = ButtonFactory.createNamedButton(ConfirmPanel.A_OK); - btnOk.addEventListener(Events.ON_CLICK, this); - - Borderlayout borderlayout = new Borderlayout(); - this.appendChild(borderlayout); - borderlayout.setHflex("1"); - borderlayout.setVflex("1"); - - Center centerPane = new Center(); - centerPane.setSclass("dialog-content"); - centerPane.setAutoscroll(true); - borderlayout.appendChild(centerPane); - centerPane.appendChild(tabbox); - - South southPane = new South(); - southPane.setStyle("text-align: right"); - southPane.setSclass("dialog-footer"); - borderlayout.appendChild(southPane); - southPane.appendChild(btnOk); - - this.setBorder("normal"); - this.setWidth("600px"); - this.setHeight("450px"); - this.setShadow(true); - this.setAttribute(Window.MODE_KEY, Window.MODE_HIGHLIGHTED); } - private Tabpanel createTrace() { + protected Tabpanel createTrace() { Tabpanel tabPanel = new Tabpanel(); Vbox vbox = new Vbox(); LayoutUtils.addSclass("about-trace-panel", vbox); @@ -293,7 +297,7 @@ public class AboutWindow extends Window implements EventListener { tabLog.setLabel(Msg.getMsg(Env.getCtx(), "TraceInfo") + " (" + data.size() + ")"); } - private Tabpanel createInfo() { + protected Tabpanel createInfo() { Tabpanel tabPanel = new Tabpanel(); Div div = new Div(); LayoutUtils.addSclass("about-info-panel", div); @@ -308,7 +312,7 @@ public class AboutWindow extends Window implements EventListener { return tabPanel; } - private Tabpanel createCredit() { + protected Tabpanel createCredit() { Tabpanel tabPanel = new Tabpanel(); Div div = new Div(); LayoutUtils.addSclass("about-credit-panel", div); @@ -428,7 +432,7 @@ public class AboutWindow extends Window implements EventListener { return tabPanel; } - private Tabpanel createAbout() { + protected Tabpanel createAbout() { Tabpanel tabPanel = new Tabpanel(); Vbox vb = new Vbox(); From e679738649c94b8dbb5c70aa0c54043d7a90d50c Mon Sep 17 00:00:00 2001 From: Heng Sin Low Date: Fri, 16 Aug 2013 18:31:25 +0800 Subject: [PATCH 56/57] IDEMPIERE-1279 Grid column is often having default width that's too big. --- .../adempiere/webui/adwindow/GridView.java | 69 ++++++++++++------- 1 file changed, 44 insertions(+), 25 deletions(-) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/GridView.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/GridView.java index 6083bb24bc..0976282138 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/GridView.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/adwindow/GridView.java @@ -82,7 +82,7 @@ public class GridView extends Vbox implements EventListener, IdSpace, IFi private static final int MIN_COMBOBOX_WIDTH = 160; - private static final int MIN_NUMERIC_COL_WIDTH = 130; + private static final int MIN_NUMERIC_COL_WIDTH = 120; private static final String ATTR_ON_POST_SELECTED_ROW_CHANGED = "org.adempiere.webui.adwindow.GridView.onPostSelectedRowChanged"; @@ -166,7 +166,7 @@ public class GridView extends Vbox implements EventListener, IdSpace, IFi protected void createListbox() { listbox = new Grid(); listbox.setEmptyMessage(Util.cleanAmp(Msg.getMsg(Env.getCtx(), "FindZeroRecords"))); - listbox.setSizedByContent(true); + listbox.setSizedByContent(false); listbox.setVflex("1"); listbox.setHflex("1"); listbox.setSclass("adtab-grid"); @@ -296,7 +296,7 @@ public class GridView extends Vbox implements EventListener, IdSpace, IFi refreshing = true; listbox.setModel(listModel); updateListIndex(); - refreshing = false; + refreshing = false; } } @@ -424,34 +424,53 @@ public class GridView extends Vbox implements EventListener, IdSpace, IFi if (columnWidthMap != null && columnWidthMap.get(gridField[i].getAD_Field_ID()) != null) { column.setWidth(columnWidthMap.get(gridField[i].getAD_Field_ID())); } else { - int l = DisplayType.isNumeric(gridField[i].getDisplayType()) - ? 120 : gridField[i].getDisplayLength() * 9; - //special treatment for line - if (DisplayType.isNumeric(gridField[i].getDisplayType()) && "Line".equals(gridField[i].getColumnName())) - { - l = 60; - } - else - { - if (gridField[i].getHeader().length() * 9 > l) - l = gridField[i].getHeader().length() * 9; - if (l > MAX_COLUMN_WIDTH) - l = MAX_COLUMN_WIDTH; - else if ( l < MIN_COLUMN_WIDTH) - l = MIN_COLUMN_WIDTH; - if (gridField[i].getDisplayType() == DisplayType.Table || gridField[i].getDisplayType() == DisplayType.TableDir) + if (gridField[i].getDisplayType()==DisplayType.YesNo) { + //safe to use minimum width for checkbox + column.setHflex("min"); + } else if (DisplayType.isNumeric(gridField[i].getDisplayType()) && "Line".equals(gridField[i].getColumnName())) { + //special treatment for line + column.setHflex("min"); + } else { + int estimatedWidth = 0; + if (DisplayType.isNumeric(gridField[i].getDisplayType())) + estimatedWidth = MIN_NUMERIC_COL_WIDTH; + else if (DisplayType.isLookup(gridField[i].getDisplayType())) + estimatedWidth = MIN_COMBOBOX_WIDTH; + else if (DisplayType.isText(gridField[i].getDisplayType())) + estimatedWidth = gridField[i].getDisplayLength() * 8; + else + estimatedWidth = MIN_COLUMN_WIDTH; + + int headerWidth = (gridField[i].getHeader().length()+2) * 8; + if (headerWidth > estimatedWidth) + estimatedWidth = headerWidth; + + if (DisplayType.isLookup(gridField[i].getDisplayType())) { - if (l < MIN_COMBOBOX_WIDTH) - l = MIN_COMBOBOX_WIDTH; + if (headerWidth > MIN_COMBOBOX_WIDTH) + column.setHflex("min"); } else if (DisplayType.isNumeric(gridField[i].getDisplayType())) { - if (l < MIN_NUMERIC_COL_WIDTH) - l = MIN_NUMERIC_COL_WIDTH; + if (headerWidth > MIN_NUMERIC_COL_WIDTH) + column.setHflex("min"); + } + else if (!DisplayType.isText(gridField[i].getDisplayType())) + { + if (headerWidth > MIN_COLUMN_WIDTH) + column.setHflex("min"); + } + + //set estimated width if not using hflex=min + if (!"min".equals(column.getHflex())) { + if (estimatedWidth > MAX_COLUMN_WIDTH) + estimatedWidth = MAX_COLUMN_WIDTH; + else if ( estimatedWidth < MIN_COLUMN_WIDTH) + estimatedWidth = MIN_COLUMN_WIDTH; + column.setWidth(Integer.toString(estimatedWidth) + "px"); } } - column.setWidth(Integer.toString(l) + "px"); - } + } columns.appendChild(column); } } From 43dbfd7feb88b9f938bf4255b2d78ccb772e2239 Mon Sep 17 00:00:00 2001 From: Heng Sin Low Date: Fri, 16 Aug 2013 18:33:24 +0800 Subject: [PATCH 57/57] IDEMPIERE-1277 Exporting cxf package from web service to reuse same in SFAndroide. Accept patch from Deepak. --- org.idempiere.webservices/META-INF/MANIFEST.MF | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/org.idempiere.webservices/META-INF/MANIFEST.MF b/org.idempiere.webservices/META-INF/MANIFEST.MF index c90ddf514c..65a502b98d 100644 --- a/org.idempiere.webservices/META-INF/MANIFEST.MF +++ b/org.idempiere.webservices/META-INF/MANIFEST.MF @@ -155,6 +155,11 @@ Export-Package: javax.ws.rs, org.apache.commons.discovery.resource.classes, org.apache.commons.discovery.resource.names, org.apache.commons.discovery.tools, + org.apache.cxf, + org.apache.cxf.jaxws, + org.apache.cxf.jaxws.spring, + org.apache.cxf.transport.servlet, + org.apache.cxf.xmlbeans, org.apache.xmlbeans, org.apache.xmlbeans.impl.common, org.apache.xmlbeans.impl.config, @@ -208,5 +213,6 @@ Export-Package: javax.ws.rs, org.idempiere.adinterface, org.idempiere.webservices, org.idempiere.webservices.client, - org.idempiere.webservices.fault + org.idempiere.webservices.fault, + org.springframework.web.context Web-ContextPath: ADInterface