From d3d194f80d29a38c7d1285f981e897fb74ee4c4c Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Sun, 15 Mar 2015 13:18:37 -0500 Subject: [PATCH 01/10] IDEMPIERE-2277 WindowCopy process should handle translation / based on patch from Nicolas Micoud (nmicoud) --- .../src/org/compiere/process/TabCopy.java | 42 +++++++++++++- .../src/org/compiere/process/WindowCopy.java | 58 ++++++++++++++++++- 2 files changed, 96 insertions(+), 4 deletions(-) diff --git a/org.adempiere.base.process/src/org/compiere/process/TabCopy.java b/org.adempiere.base.process/src/org/compiere/process/TabCopy.java index fa9a07f369..5b2a75c0b3 100644 --- a/org.adempiere.base.process/src/org/compiere/process/TabCopy.java +++ b/org.adempiere.base.process/src/org/compiere/process/TabCopy.java @@ -21,6 +21,7 @@ import java.util.logging.Level; import org.compiere.model.MField; import org.compiere.model.MTab; import org.compiere.util.AdempiereUserError; +import org.compiere.util.DB; /** @@ -62,6 +63,40 @@ public class TabCopy extends SvrProcess */ protected String doIt() throws Exception { + final String sqluptrltab = "" + + "UPDATE ad_tab_trl " + + "SET name = (SELECT name " + + " FROM ad_tab_trl t2 " + + " WHERE t2.ad_tab_id = ? AND t2.ad_language = ad_tab_trl.ad_language), " + + " description = (SELECT description " + + " FROM ad_tab_trl t2 " + + " WHERE t2.ad_tab_id = ? AND t2.ad_language = ad_tab_trl.ad_language), " + + " help = (SELECT help " + + " FROM ad_tab_trl t2 " + + " WHERE t2.ad_tab_id = ? AND t2.ad_language = ad_tab_trl.ad_language), " + + " commitwarning = (SELECT commitwarning " + + " FROM ad_tab_trl t2 " + + " WHERE t2.ad_tab_id = ? AND t2.ad_language = ad_tab_trl.ad_language), " + + " istranslated = (SELECT istranslated " + + " FROM ad_tab_trl t2 " + + " WHERE t2.ad_tab_id = ? AND t2.ad_language = ad_tab_trl.ad_language) " + + "WHERE ad_tab_id = ?"; + final String sqluptrlfld = "" + + "UPDATE ad_field_trl " + + "SET name = (SELECT name " + + " FROM ad_field_trl t2 " + + " WHERE t2.ad_field_id = ? AND t2.ad_language = ad_field_trl.ad_language), " + + " description = (SELECT description " + + " FROM ad_field_trl t2 " + + " WHERE t2.ad_field_id = ? AND t2.ad_language = ad_field_trl.ad_language), " + + " help = (SELECT help " + + " FROM ad_field_trl t2 " + + " WHERE t2.ad_field_id = ? AND t2.ad_language = ad_field_trl.ad_language), " + + " istranslated = (SELECT istranslated " + + " FROM ad_field_trl t2 " + + " WHERE t2.ad_field_id = ? AND t2.ad_language = ad_field_trl.ad_language) " + + "WHERE ad_field_id = ?"; + if (log.isLoggable(Level.INFO)) log.info("To AD_Tab_ID=" + p_AD_TabTo_ID + ", From=" + p_AD_TabFrom_ID); MTab from = new MTab (getCtx(), p_AD_TabFrom_ID, get_TrxName()); if (from.get_ID() == 0) @@ -71,6 +106,7 @@ public class TabCopy extends SvrProcess throw new AdempiereUserError("@NotFound@ (to<-) @AD_Tab_ID@"); if (from.getAD_Table_ID() != to.getAD_Table_ID()) throw new AdempiereUserError("@Error@ @AD_Table_ID@"); + DB.executeUpdateEx(sqluptrltab, new Object[]{from.get_ID(),from.get_ID(),from.get_ID(),from.get_ID(),from.get_ID(),to.get_ID()}, get_TrxName()); int count = 0; for (MField oldField : from.getFields(false, get_TrxName())) @@ -78,10 +114,12 @@ public class TabCopy extends SvrProcess MField newField = new MField (to, oldField); if (! oldField.isActive()) newField.setIsActive(false); - if (newField.save()) + if (newField.save()) { + DB.executeUpdateEx(sqluptrlfld, new Object[]{oldField.get_ID(),oldField.get_ID(),oldField.get_ID(),oldField.get_ID(),newField.get_ID()}, get_TrxName()); count++; - else + } else { throw new AdempiereUserError("@Error@ @AD_Field_ID@"); + } } StringBuilder msgreturn = new StringBuilder("@Copied@ #").append(count); return msgreturn.toString(); diff --git a/org.adempiere.base.process/src/org/compiere/process/WindowCopy.java b/org.adempiere.base.process/src/org/compiere/process/WindowCopy.java index 422bb62554..cf792ecfec 100644 --- a/org.adempiere.base.process/src/org/compiere/process/WindowCopy.java +++ b/org.adempiere.base.process/src/org/compiere/process/WindowCopy.java @@ -22,6 +22,7 @@ import org.compiere.model.MField; import org.compiere.model.MTab; import org.compiere.model.MWindow; import org.compiere.util.AdempiereUserError; +import org.compiere.util.DB; /** @@ -63,6 +64,55 @@ public class WindowCopy extends SvrProcess */ protected String doIt() throws Exception { + final String sqluptrlwin = "" + + "UPDATE ad_window_trl " + + "SET name = (SELECT name " + + " FROM ad_window_trl t2 " + + " WHERE t2.ad_window_id = ? AND t2.ad_language = ad_window_trl.ad_language), " + + " description = (SELECT description " + + " FROM ad_window_trl t2 " + + " WHERE t2.ad_window_id = ? AND t2.ad_language = ad_window_trl.ad_language), " + + " help = (SELECT help " + + " FROM ad_window_trl t2 " + + " WHERE t2.ad_window_id = ? AND t2.ad_language = ad_window_trl.ad_language), " + + " istranslated = (SELECT istranslated " + + " FROM ad_window_trl t2 " + + " WHERE t2.ad_window_id = ? AND t2.ad_language = ad_window_trl.ad_language) " + + "WHERE ad_window_id = ?"; + final String sqluptrltab = "" + + "UPDATE ad_tab_trl " + + "SET name = (SELECT name " + + " FROM ad_tab_trl t2 " + + " WHERE t2.ad_tab_id = ? AND t2.ad_language = ad_tab_trl.ad_language), " + + " description = (SELECT description " + + " FROM ad_tab_trl t2 " + + " WHERE t2.ad_tab_id = ? AND t2.ad_language = ad_tab_trl.ad_language), " + + " help = (SELECT help " + + " FROM ad_tab_trl t2 " + + " WHERE t2.ad_tab_id = ? AND t2.ad_language = ad_tab_trl.ad_language), " + + " commitwarning = (SELECT commitwarning " + + " FROM ad_tab_trl t2 " + + " WHERE t2.ad_tab_id = ? AND t2.ad_language = ad_tab_trl.ad_language), " + + " istranslated = (SELECT istranslated " + + " FROM ad_tab_trl t2 " + + " WHERE t2.ad_tab_id = ? AND t2.ad_language = ad_tab_trl.ad_language) " + + "WHERE ad_tab_id = ?"; + final String sqluptrlfld = "" + + "UPDATE ad_field_trl " + + "SET name = (SELECT name " + + " FROM ad_field_trl t2 " + + " WHERE t2.ad_field_id = ? AND t2.ad_language = ad_field_trl.ad_language), " + + " description = (SELECT description " + + " FROM ad_field_trl t2 " + + " WHERE t2.ad_field_id = ? AND t2.ad_language = ad_field_trl.ad_language), " + + " help = (SELECT help " + + " FROM ad_field_trl t2 " + + " WHERE t2.ad_field_id = ? AND t2.ad_language = ad_field_trl.ad_language), " + + " istranslated = (SELECT istranslated " + + " FROM ad_field_trl t2 " + + " WHERE t2.ad_field_id = ? AND t2.ad_language = ad_field_trl.ad_language) " + + "WHERE ad_field_id = ?"; + if (log.isLoggable(Level.INFO)) log.info("doIt - To AD_Window_ID=" + p_AD_WindowTo_ID + ", From=" + p_AD_WindowFrom_ID); MWindow from = new MWindow (getCtx(), p_AD_WindowFrom_ID, get_TrxName()); if (from.get_ID() == 0) @@ -70,6 +120,7 @@ public class WindowCopy extends SvrProcess MWindow to = new MWindow (getCtx(), p_AD_WindowTo_ID, get_TrxName()); if (to.get_ID() == 0) throw new AdempiereUserError("@NotFound@ (to<-) @AD_Window_ID@"); + DB.executeUpdateEx(sqluptrlwin, new Object[]{from.get_ID(),from.get_ID(),from.get_ID(),from.get_ID(),to.get_ID()}, get_TrxName()); int tabCount = 0; int fieldCount = 0; @@ -80,6 +131,7 @@ public class WindowCopy extends SvrProcess MTab newTab = new MTab (to, oldTab); if (newTab.save()) { + DB.executeUpdateEx(sqluptrltab, new Object[]{oldTab.get_ID(),oldTab.get_ID(),oldTab.get_ID(),oldTab.get_ID(),oldTab.get_ID(),newTab.get_ID()}, get_TrxName()); tabCount++; // Copy Fields for (MField oldField : oldTab.getFields(false, get_TrxName())) @@ -87,10 +139,12 @@ public class WindowCopy extends SvrProcess MField newField = new MField (newTab, oldField); if (! oldField.isActive()) newField.setIsActive(false); - if (newField.save()) + if (newField.save()) { + DB.executeUpdateEx(sqluptrlfld, new Object[]{oldField.get_ID(),oldField.get_ID(),oldField.get_ID(),oldField.get_ID(),newField.get_ID()}, get_TrxName()); fieldCount++; - else + } else { throw new AdempiereUserError("@Error@ @AD_Field_ID@"); + } } } else From e8723e62e0ec471f9abc78f860a41e87042e2359 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Wed, 18 Mar 2015 14:55:04 -0500 Subject: [PATCH 02/10] IDEMPIERE-2516 iDempiere monitor shows inactive clients (maintenance mode / active sessions) / thanks to Nicolas Micoud (nmicoud) --- .../src/org/compiere/model/MClient.java | 14 +++++- .../src/org/compiere/util/Login.java | 4 +- .../org/compiere/web/AdempiereMonitor.java | 46 +++++++++++++------ 3 files changed, 48 insertions(+), 16 deletions(-) diff --git a/org.adempiere.base/src/org/compiere/model/MClient.java b/org.adempiere.base/src/org/compiere/model/MClient.java index b31296eb92..4a6a020c1f 100644 --- a/org.adempiere.base/src/org/compiere/model/MClient.java +++ b/org.adempiere.base/src/org/compiere/model/MClient.java @@ -56,7 +56,7 @@ public class MClient extends X_AD_Client /** * */ - private static final long serialVersionUID = -4479164806149932775L; + private static final long serialVersionUID = -4420908648355523008L; /** * Get client @@ -82,7 +82,19 @@ public class MClient extends X_AD_Client */ public static MClient[] getAll (Properties ctx) { + return getAll(ctx, ""); + } // getAll + + /** + * Get all clients + * @param ctx context + * @param order by clause + * @return clients + */ + public static MClient[] getAll (Properties ctx, String orderBy) + { List list = new Query(ctx,I_AD_Client.Table_Name,null,null) + .setOrderBy(orderBy) .list(); for(MClient client:list ){ s_cache.put (new Integer (client.getAD_Client_ID()), client); diff --git a/org.adempiere.base/src/org/compiere/util/Login.java b/org.adempiere.base/src/org/compiere/util/Login.java index e994927b0d..f98d31dd7a 100644 --- a/org.adempiere.base/src/org/compiere/util/Login.java +++ b/org.adempiere.base/src/org/compiere/util/Login.java @@ -771,7 +771,9 @@ public class Login // IDEMPIERE-1717 Maintenance mode if (! MRole.get(m_ctx, AD_Role_ID).isAccessAdvanced()) { - if (MSysConfig.getBooleanValue(MSysConfig.SYSTEM_IN_MAINTENANCE_MODE, false, AD_Client_ID)) + if (MSysConfig.getBooleanValue(MSysConfig.SYSTEM_IN_MAINTENANCE_MODE, false, 0)) + return Msg.getMsg(m_ctx, "SystemInMaintenance"); + if (AD_Client_ID != 0 && MSysConfig.getBooleanValue(MSysConfig.SYSTEM_IN_MAINTENANCE_MODE, false, AD_Client_ID)) return Msg.getMsg(m_ctx, "SystemInMaintenance"); } diff --git a/org.adempiere.server/src/main/servlet/org/compiere/web/AdempiereMonitor.java b/org.adempiere.server/src/main/servlet/org/compiere/web/AdempiereMonitor.java index d1f24988bf..b48c4218e7 100644 --- a/org.adempiere.server/src/main/servlet/org/compiere/web/AdempiereMonitor.java +++ b/org.adempiere.server/src/main/servlet/org/compiere/web/AdempiereMonitor.java @@ -65,6 +65,7 @@ import org.compiere.model.AdempiereProcessorLog; import org.compiere.model.MClient; import org.compiere.model.MSession; import org.compiere.model.MStore; +import org.compiere.model.MSysConfig; import org.compiere.model.MSystem; import org.compiere.model.Query; import org.compiere.server.AdempiereServerGroup; @@ -95,7 +96,8 @@ public class AdempiereMonitor extends HttpServlet /** * */ - private static final long serialVersionUID = -387582087015910664L; + private static final long serialVersionUID = -7455613826465213838L; + /** Logger */ private static CLogger log = CLogger.getCLogger(AdempiereMonitor.class); /** The Server */ @@ -1005,7 +1007,7 @@ public class AdempiereMonitor extends HttpServlet table.setCellPadding(2); // line = new tr(); - MClient[] clients = MClient.getAll(ctx); + MClient[] clients = MClient.getAll(ctx, "AD_Client_ID"); line.addElement(new th().addElement("Client #" + clients.length + " - EMail Test:")); p = new p(); for (int i = 0; i < clients.length; i++) @@ -1044,6 +1046,8 @@ public class AdempiereMonitor extends HttpServlet p = new p(); for (int i = 0; i < clients.length; i++) { MClient client = clients[i]; + if (!client.isActive()) + continue; if (i > 0) p.addElement(" - "); int count = 0; @@ -1059,20 +1063,34 @@ public class AdempiereMonitor extends HttpServlet table.addElement(line); // line = new tr(); - int inMaintenanceClients[] = DB.getIDsEx(null, "SELECT AD_Client_ID FROM AD_SysConfig WHERE Name = 'SYSTEM_IN_MAINTENANCE_MODE' AND Value = 'Y'"); - line.addElement(new th().addElement("Maintenance Mode #"+inMaintenanceClients.length)); + + boolean isSystemInMaintenance = MSysConfig.getBooleanValue(MSysConfig.SYSTEM_IN_MAINTENANCE_MODE, false, 0); + List inMaintenanceClients = new ArrayList(); + if (isSystemInMaintenance) + line.addElement(new th().addElement("Maintenance Mode")); + else { + int possiblyInMaintenanceClients[] = DB.getIDsEx(null, "SELECT AD_Client_ID FROM AD_SysConfig WHERE AD_Client_ID!=0 AND IsActive='Y' AND Name=?", MSysConfig.SYSTEM_IN_MAINTENANCE_MODE); + for (int clientId : possiblyInMaintenanceClients) { + boolean isTenantInMaintenance = MSysConfig.getBooleanValue(MSysConfig.SYSTEM_IN_MAINTENANCE_MODE, false, clientId); + if (isTenantInMaintenance) + inMaintenanceClients.add(clientId); + } + line.addElement(new th().addElement("Maintenance Mode #"+inMaintenanceClients.size())); + } + p = new p(); - if (inMaintenanceClients.length > 0) { - for (int i = 0; i < clients.length; i++) { - MClient client = clients[i]; - if (i > 0) + if (isSystemInMaintenance) + p.addElement("All clients are in maintenance mode"); + else if (inMaintenanceClients.size() > 0) { + boolean first = true; + for (int clientID : inMaintenanceClients) { + MClient client = MClient.get(ctx, clientID); + if (!client.isActive()) + continue; + if (!first) p.addElement(" - "); - for (int clientID : inMaintenanceClients) { - if (client.getAD_Client_ID() == clientID) - p.addElement(client.getName() + " : Yes"); - else - p.addElement(client.getName() + " : No"); - } + p.addElement(client.getName()); + first = false; } } else From 751eb917f27434c69ad8066723c7ef1bf0ab72a8 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Wed, 18 Mar 2015 22:36:39 -0500 Subject: [PATCH 03/10] IDEMPIERE-2526 Posting to multiple accounting schemas with Only Organization is broken --- org.adempiere.base/src/org/compiere/acct/Doc.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/org.adempiere.base/src/org/compiere/acct/Doc.java b/org.adempiere.base/src/org/compiere/acct/Doc.java index 8a146028cc..2146930363 100644 --- a/org.adempiere.base/src/org/compiere/acct/Doc.java +++ b/org.adempiere.base/src/org/compiere/acct/Doc.java @@ -528,6 +528,10 @@ public abstract class Doc // post p_Status = postLogic (); } + else + { + //p_Status = STATUS_Posted; // skipped is OK + } } catch (Exception e) { From 5e7ee1ae81d7c9d717bfa1819aa7a769759c63d5 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Wed, 18 Mar 2015 22:38:30 -0500 Subject: [PATCH 04/10] IDEMPIERE-2526 Posting to multiple accounting schemas with Only Organization is broken --- org.adempiere.base/src/org/compiere/acct/Doc.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/org.adempiere.base/src/org/compiere/acct/Doc.java b/org.adempiere.base/src/org/compiere/acct/Doc.java index 2146930363..8480060046 100644 --- a/org.adempiere.base/src/org/compiere/acct/Doc.java +++ b/org.adempiere.base/src/org/compiere/acct/Doc.java @@ -530,7 +530,7 @@ public abstract class Doc } else { - //p_Status = STATUS_Posted; // skipped is OK + p_Status = STATUS_Posted; // skipped is OK } } catch (Exception e) From c1fe36259af3556a4971d25f4bcb1f79dfb75943 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Sun, 22 Mar 2015 17:22:55 -0500 Subject: [PATCH 05/10] IDEMPIERE-1900 iDempiere Debian Installer / thanks to Max for reporting https://groups.google.com/d/msg/idempiere/a3HrHAez1_E/t3HwPgo6MmcJ --- .../utils.unix/unix/DebianInstaller/DEBIAN/control | 2 +- .../utils.unix/unix/DebianInstaller/etc/init.d/idempiere | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/org.adempiere.server-feature/utils.unix/unix/DebianInstaller/DEBIAN/control b/org.adempiere.server-feature/utils.unix/unix/DebianInstaller/DEBIAN/control index 7f06f3f823..97c1ed7883 100644 --- a/org.adempiere.server-feature/utils.unix/unix/DebianInstaller/DEBIAN/control +++ b/org.adempiere.server-feature/utils.unix/unix/DebianInstaller/DEBIAN/control @@ -1,5 +1,5 @@ Package: idempiere -Version: 2.0 +Version: 2.1 Section: web Priority: extra Architecture: all diff --git a/org.adempiere.server-feature/utils.unix/unix/DebianInstaller/etc/init.d/idempiere b/org.adempiere.server-feature/utils.unix/unix/DebianInstaller/etc/init.d/idempiere index e3371ef1fb..c867b864d5 100755 --- a/org.adempiere.server-feature/utils.unix/unix/DebianInstaller/etc/init.d/idempiere +++ b/org.adempiere.server-feature/utils.unix/unix/DebianInstaller/etc/init.d/idempiere @@ -244,7 +244,7 @@ configure_perform() ! echo "Done" fi - grep ${ADEMPIERE_WEB_PORT} ${IDEMPIERE_HOME}/plugins/org.adempiere.tomcat.config_2.0.0/META-INF/tomcat/server.xml > /dev/null 2>&1 + grep ${ADEMPIERE_WEB_PORT} ${IDEMPIERE_HOME}/plugins/org.adempiere.tomcat.config_2.1.0/META-INF/tomcat/server.xml > /dev/null 2>&1 if [ $? -ne 0 ] then echo "Error deploying iDempiere, please verify and try again" From 1e85ef81ad4332a105989fdc1222db6070b8de81 Mon Sep 17 00:00:00 2001 From: Nicolas Micoud Date: Mon, 23 Mar 2015 14:40:37 -0500 Subject: [PATCH 06/10] IDEMPIERE-2072 get number of non business days between 2 dates / fix NPE --- org.adempiere.base/src/org/compiere/util/TimeUtil.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/org.adempiere.base/src/org/compiere/util/TimeUtil.java b/org.adempiere.base/src/org/compiere/util/TimeUtil.java index 68eeeb5e24..83bf44d58c 100644 --- a/org.adempiere.base/src/org/compiere/util/TimeUtil.java +++ b/org.adempiere.base/src/org/compiere/util/TimeUtil.java @@ -866,7 +866,7 @@ public class TimeUtil calEnd.set(Calendar.MILLISECOND, 0); while (cal.before(calEnd) || cal.equals(calEnd)) { - if (!nbd.contains(new Timestamp(cal.getTimeInMillis()))) { + if (nbd == null || !nbd.contains(new Timestamp(cal.getTimeInMillis()))) { if (cal.get(Calendar.DAY_OF_WEEK) != Calendar.SATURDAY && cal.get(Calendar.DAY_OF_WEEK) != Calendar.SUNDAY) { retValue++; } From 54daecd2187177c18b96f9a45d86ee428fa5de8f Mon Sep 17 00:00:00 2001 From: Deepak Pansheriya Date: Wed, 25 Mar 2015 19:20:01 +0530 Subject: [PATCH 07/10] IDEMPIERE-2483: Fixing NPE --- org.adempiere.base/src/org/compiere/print/ReportEngine.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/org.adempiere.base/src/org/compiere/print/ReportEngine.java b/org.adempiere.base/src/org/compiere/print/ReportEngine.java index 6a232aaa45..4599ebeaf7 100644 --- a/org.adempiere.base/src/org/compiere/print/ReportEngine.java +++ b/org.adempiere.base/src/org/compiere/print/ReportEngine.java @@ -684,7 +684,7 @@ queued-job-count = 0 (class javax.print.attribute.standard.QueuedJobCount) Record_ID = -1; } Boolean canAccess = null; - if (Record_ID >= 0) { + if (Record_ID >= 0 && mTable != null) { int AD_Window_ID = Env.getZoomWindowID(mTable.get_ID(), Record_ID); canAccess = MRole.getDefault().getWindowAccess(AD_Window_ID); } From b20eccf1abef78fd0966053128548df58c2449b8 Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Wed, 25 Mar 2015 11:49:07 -0500 Subject: [PATCH 08/10] IDEMPIERE-1900 iDempiere Debian Installer / thanks to V Brunner for reporting https://groups.google.com/d/msg/idempiere/WbaMAPfK6QM/OY0aa6Xh1yUJ --- .../utils.unix/unix/DebianInstaller/DEBIAN/control | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/org.adempiere.server-feature/utils.unix/unix/DebianInstaller/DEBIAN/control b/org.adempiere.server-feature/utils.unix/unix/DebianInstaller/DEBIAN/control index 97c1ed7883..760e3bf735 100644 --- a/org.adempiere.server-feature/utils.unix/unix/DebianInstaller/DEBIAN/control +++ b/org.adempiere.server-feature/utils.unix/unix/DebianInstaller/DEBIAN/control @@ -3,7 +3,7 @@ Version: 2.1 Section: web Priority: extra Architecture: all -Pre-Depends: openjdk-7-jdk|openjdk-6-jdk, postgresql-9.3|postgresql-9.2|postgresql-9.1, postgresql-contrib, adduser +Pre-Depends: openjdk-7-jdk|openjdk-6-jdk, postgresql-9.4|postgresql-9.3|postgresql-9.2|postgresql-9.1, postgresql-contrib, adduser Suggests: firefox Installed-Size: 968668 Maintainer: Carlos Ruiz From 23a9ccd7e0e59d1ddc2c081e1c3e9dfc35f4cfe1 Mon Sep 17 00:00:00 2001 From: Deepak Pansheriya Date: Wed, 25 Mar 2015 13:13:15 +0530 Subject: [PATCH 09/10] IDEMPIERE-2540:Allowing Vendor qty break to specify breaks for all customers --- .../oracle/201503251255_IDEMPIERE-2540.sql | 28 +++++++++++++++++++ .../201503251255_IDEMPIERE-2540.sql | 25 +++++++++++++++++ .../org/compiere/model/MProductPricing.java | 14 +++++----- 3 files changed, 60 insertions(+), 7 deletions(-) create mode 100644 migration/i2.1/oracle/201503251255_IDEMPIERE-2540.sql create mode 100644 migration/i2.1/postgresql/201503251255_IDEMPIERE-2540.sql diff --git a/migration/i2.1/oracle/201503251255_IDEMPIERE-2540.sql b/migration/i2.1/oracle/201503251255_IDEMPIERE-2540.sql new file mode 100644 index 0000000000..c0ff655952 --- /dev/null +++ b/migration/i2.1/oracle/201503251255_IDEMPIERE-2540.sql @@ -0,0 +1,28 @@ +SET SQLBLANKLINES ON +SET DEFINE OFF + +-- IDEMPIERE-2540: Allowing Vendor qty break to specify breaks for all customers +-- Mar 25, 2015 12:46:56 PM IST +UPDATE AD_Column SET IsMandatory='N',Updated=TO_DATE('2015-03-25 12:46:56','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=56928 +; + +-- Mar 25, 2015 12:46:59 PM IST +ALTER TABLE M_ProductPriceVendorBreak MODIFY C_BPartner_ID NUMBER(10) DEFAULT NULL +; + +-- Mar 25, 2015 12:47:00 PM IST +ALTER TABLE M_ProductPriceVendorBreak MODIFY C_BPartner_ID NULL +; + +-- Mar 25, 2015 12:47:00 PM IST +ALTER TABLE M_ProductPriceVendorBreak DROP CONSTRAINT cbpartner_mproductpricevendorb +; + +-- Mar 25, 2015 12:47:00 PM IST +ALTER TABLE M_ProductPriceVendorBreak ADD CONSTRAINT cbpartner_mproductpricevendorb FOREIGN KEY (C_BPartner_ID) REFERENCES c_bpartner(c_bpartner_id) DEFERRABLE INITIALLY DEFERRED +; + +SELECT register_migration_script('201503251255_IDEMPIERE-2540') FROM dual +; + + diff --git a/migration/i2.1/postgresql/201503251255_IDEMPIERE-2540.sql b/migration/i2.1/postgresql/201503251255_IDEMPIERE-2540.sql new file mode 100644 index 0000000000..91ae3b6dc5 --- /dev/null +++ b/migration/i2.1/postgresql/201503251255_IDEMPIERE-2540.sql @@ -0,0 +1,25 @@ +-- IDEMPIERE-2540: Allowing Vendor qty break to specify breaks for all customers +-- Mar 25, 2015 12:46:56 PM IST +UPDATE AD_Column SET IsMandatory='N',Updated=TO_TIMESTAMP('2015-03-25 12:46:56','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=56928 +; + +-- Mar 25, 2015 12:46:59 PM IST +INSERT INTO t_alter_column values('m_productpricevendorbreak','C_BPartner_ID','NUMERIC(10)',null,'NULL') +; + +-- Mar 25, 2015 12:47:00 PM IST +INSERT INTO t_alter_column values('m_productpricevendorbreak','C_BPartner_ID',null,'NULL',null) +; + +-- Mar 25, 2015 12:47:00 PM IST +ALTER TABLE M_ProductPriceVendorBreak DROP CONSTRAINT cbpartner_mproductpricevendorb +; + +-- Mar 25, 2015 12:47:00 PM IST +ALTER TABLE M_ProductPriceVendorBreak ADD CONSTRAINT cbpartner_mproductpricevendorb FOREIGN KEY (C_BPartner_ID) REFERENCES c_bpartner(c_bpartner_id) DEFERRABLE INITIALLY DEFERRED +; + +SELECT register_migration_script('201503251255_IDEMPIERE-2540') FROM dual +; + + diff --git a/org.adempiere.base/src/org/compiere/model/MProductPricing.java b/org.adempiere.base/src/org/compiere/model/MProductPricing.java index d309ff80ae..da08e5ecc8 100644 --- a/org.adempiere.base/src/org/compiere/model/MProductPricing.java +++ b/org.adempiere.base/src/org/compiere/model/MProductPricing.java @@ -52,7 +52,7 @@ public class MProductPricing m_Qty = Qty; m_isSOTrx = isSOTrx; int thereAreVendorBreakRecords = DB.getSQLValue(null, - "SELECT count(M_Product_ID) FROM M_ProductPriceVendorBreak WHERE M_Product_ID=? AND C_BPartner_ID=?", + "SELECT count(M_Product_ID) FROM M_ProductPriceVendorBreak WHERE M_Product_ID=? AND (C_BPartner_ID=? OR C_BPartner_ID is NULL)", m_M_Product_ID, m_C_BPartner_ID); m_useVendorBreak = thereAreVendorBreakRecords > 0; } // MProductPricing @@ -440,9 +440,9 @@ public class MProductPricing + " AND pp.IsActive='Y'" + " AND p.M_Product_ID=?" // #1 + " AND pv.M_PriceList_Version_ID=?" // #2 - + " AND pp.C_BPartner_ID=?" // #3 + + " AND (pp.C_BPartner_ID=? OR pp.C_BPartner_ID is NULL)" // #3 + " AND ?>=pp.BreakValue" // #4 - + " ORDER BY BreakValue DESC"; + + " ORDER BY pp.C_BPartner_ID, BreakValue DESC"; m_calculated = false; PreparedStatement pstmt = null; ResultSet rs = null; @@ -561,9 +561,9 @@ public class MProductPricing + " AND pp.IsActive='Y'" + " AND p.M_Product_ID=?" // #1 + " AND pv.M_PriceList_ID=?" // #2 - + " AND pp.C_BPartner_ID=?" // #3 + + " AND (pp.C_BPartner_ID=? OR pp.C_BPartner_ID is NULL)" // #3 + " AND ?>=pp.BreakValue" // #4 - + " ORDER BY pv.ValidFrom DESC, BreakValue DESC"; + + " ORDER BY pp.C_BPartner_ID, pv.ValidFrom DESC, BreakValue DESC"; m_calculated = false; if (m_PriceDate == null) m_PriceDate = new Timestamp (System.currentTimeMillis()); @@ -646,9 +646,9 @@ public class MProductPricing + " AND pp.IsActive='Y'" + " AND p.M_Product_ID=?" // #1 + " AND pl.M_PriceList_ID=?" // #2 - + " AND pp.C_BPartner_ID=?" // #3 + + " AND (pp.C_BPartner_ID=? OR pp.C_BPartner_ID is NULL)" // #3 + " AND ?>=pp.BreakValue" // #4 - + " ORDER BY pv.ValidFrom DESC, BreakValue DESC"; + + " ORDER BY pp.C_BPartner_ID, pv.ValidFrom DESC, BreakValue DESC"; m_calculated = false; if (m_PriceDate == null) m_PriceDate = new Timestamp (System.currentTimeMillis()); From b084a3995002ef73b7b55d5cd79507f08d34480c Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Wed, 25 Mar 2015 18:47:05 -0500 Subject: [PATCH 10/10] IDEMPIERE-2540 Allowing Vendor qty break to specify breaks for all customers / peer review --- migration/i2.1/oracle/201503251255_IDEMPIERE-2540.sql | 2 +- migration/i2.1/postgresql/201503251255_IDEMPIERE-2540.sql | 2 +- .../src/org/compiere/model/CalloutOrder.java | 7 +++++++ 3 files changed, 9 insertions(+), 2 deletions(-) diff --git a/migration/i2.1/oracle/201503251255_IDEMPIERE-2540.sql b/migration/i2.1/oracle/201503251255_IDEMPIERE-2540.sql index c0ff655952..081b2c0691 100644 --- a/migration/i2.1/oracle/201503251255_IDEMPIERE-2540.sql +++ b/migration/i2.1/oracle/201503251255_IDEMPIERE-2540.sql @@ -22,7 +22,7 @@ ALTER TABLE M_ProductPriceVendorBreak DROP CONSTRAINT cbpartner_mproductpriceven ALTER TABLE M_ProductPriceVendorBreak ADD CONSTRAINT cbpartner_mproductpricevendorb FOREIGN KEY (C_BPartner_ID) REFERENCES c_bpartner(c_bpartner_id) DEFERRABLE INITIALLY DEFERRED ; -SELECT register_migration_script('201503251255_IDEMPIERE-2540') FROM dual +SELECT register_migration_script('201503251255_IDEMPIERE-2540.sql') FROM dual ; diff --git a/migration/i2.1/postgresql/201503251255_IDEMPIERE-2540.sql b/migration/i2.1/postgresql/201503251255_IDEMPIERE-2540.sql index 91ae3b6dc5..942d6502a0 100644 --- a/migration/i2.1/postgresql/201503251255_IDEMPIERE-2540.sql +++ b/migration/i2.1/postgresql/201503251255_IDEMPIERE-2540.sql @@ -19,7 +19,7 @@ ALTER TABLE M_ProductPriceVendorBreak DROP CONSTRAINT cbpartner_mproductpriceven ALTER TABLE M_ProductPriceVendorBreak ADD CONSTRAINT cbpartner_mproductpricevendorb FOREIGN KEY (C_BPartner_ID) REFERENCES c_bpartner(c_bpartner_id) DEFERRABLE INITIALLY DEFERRED ; -SELECT register_migration_script('201503251255_IDEMPIERE-2540') FROM dual +SELECT register_migration_script('201503251255_IDEMPIERE-2540.sql') FROM dual ; diff --git a/org.adempiere.base.callout/src/org/compiere/model/CalloutOrder.java b/org.adempiere.base.callout/src/org/compiere/model/CalloutOrder.java index 0ff22e3ca8..515ab3419c 100644 --- a/org.adempiere.base.callout/src/org/compiere/model/CalloutOrder.java +++ b/org.adempiere.base.callout/src/org/compiere/model/CalloutOrder.java @@ -1101,7 +1101,14 @@ public class CalloutOrder extends CalloutEngine if (log.isLoggable(Level.FINE)) log.fine("QtyChanged -> PriceActual=" + pp.getPriceStd() + ", PriceEntered=" + PriceEntered + ", Discount=" + pp.getDiscount()); PriceActual = pp.getPriceStd(); + PriceEntered = pp.getPriceStd(); + Discount = pp.getDiscount(); + PriceLimit = pp.getPriceLimit(); + PriceList = pp.getPriceList(); + mTab.setValue("PriceList", pp.getPriceList()); + mTab.setValue("PriceLimit", pp.getPriceLimit()); mTab.setValue("PriceActual", pp.getPriceStd()); + mTab.setValue("PriceEntered", pp.getPriceStd()); mTab.setValue("Discount", pp.getDiscount()); mTab.setValue("PriceEntered", PriceEntered); Env.setContext(ctx, WindowNo, "DiscountSchema", pp.isDiscountSchema() ? "Y" : "N");