From 33729acb640fd5872542bf39fc0251856471b8f1 Mon Sep 17 00:00:00 2001 From: Nicolas Micoud Date: Fri, 26 Jul 2019 18:00:26 +0200 Subject: [PATCH 1/6] IDEMPIERE-918 Allow to choose the reversal document for invoice - Add C_Invoice.RelatedInvoice_ID --- ...DEMPIERE-918_Invoice_RelatedInvoice_ID.sql | 46 +++++++++++++++++++ ...DEMPIERE-918_Invoice_RelatedInvoice_ID.sql | 43 +++++++++++++++++ .../process/InvoiceCreateCreditMemo.java | 29 ++++++------ .../src/org/compiere/model/I_C_Invoice.java | 11 +++++ .../src/org/compiere/model/X_C_Invoice.java | 27 ++++++++++- 5 files changed, 141 insertions(+), 15 deletions(-) create mode 100644 migration/i6.2/oracle/201907251130_IDEMPIERE-918_Invoice_RelatedInvoice_ID.sql create mode 100644 migration/i6.2/postgresql/201907251130_IDEMPIERE-918_Invoice_RelatedInvoice_ID.sql diff --git a/migration/i6.2/oracle/201907251130_IDEMPIERE-918_Invoice_RelatedInvoice_ID.sql b/migration/i6.2/oracle/201907251130_IDEMPIERE-918_Invoice_RelatedInvoice_ID.sql new file mode 100644 index 0000000000..63bad9a801 --- /dev/null +++ b/migration/i6.2/oracle/201907251130_IDEMPIERE-918_Invoice_RelatedInvoice_ID.sql @@ -0,0 +1,46 @@ +SET SQLBLANKLINES ON +SET DEFINE OFF + +-- IDEMPIERE-918 - add C_Invoice.RelatedInvoice_ID +-- 07/25/2019 11:08:54 +INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,PrintName,EntityType,AD_Element_UU) VALUES (203348,0,0,'Y',TO_DATE('2019-07-25 11:08:54','YYYY-MM-DD HH24:MI:SS'),0,TO_DATE('2019-07-25 11:08:54','YYYY-MM-DD HH24:MI:SS'),0,'RelatedInvoice_ID','Related Invoice','Related Invoice','D','30673d40-aeaa-4d46-b9aa-fd2d41ab90f8') +; + +-- 07/25/2019 11:10:03 +INSERT INTO AD_Column (AD_Column_ID,Version,Name,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Reference_Value_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (213967,0,'Related Invoice',318,'RelatedInvoice_ID',10,'N','N','N','N','N',0,'N',30,336,0,0,'Y',TO_DATE('2019-07-25 11:10:03','YYYY-MM-DD HH24:MI:SS'),0,TO_DATE('2019-07-25 11:10:03','YYYY-MM-DD HH24:MI:SS'),0,203348,'Y','N','D','N','N','N','Y','75158448-52e0-426b-a393-86141d86157e','N',0,'N','N','N','N') +; + +-- 07/25/2019 11:10:08 +UPDATE AD_Column SET FKConstraintName='RelatedInvoice_CInvoice', FKConstraintType='N',Updated=TO_DATE('2019-07-25 11:10:08','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Column_ID=213967 +; + +-- 07/25/2019 11:10:08 +ALTER TABLE C_Invoice ADD RelatedInvoice_ID NUMBER(10) DEFAULT NULL +; + +-- 07/25/2019 11:10:08 +ALTER TABLE C_Invoice ADD CONSTRAINT RelatedInvoice_CInvoice FOREIGN KEY (RelatedInvoice_ID) REFERENCES c_invoice(c_invoice_id) DEFERRABLE INITIALLY DEFERRED +; + +-- 07/25/2019 11:10:35 +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,ColumnSpan) VALUES (206135,'Related Invoice',263,213967,'Y',10,460,'N','N','N','N',0,0,'Y',TO_DATE('2019-07-25 11:10:35','YYYY-MM-DD HH24:MI:SS'),0,TO_DATE('2019-07-25 11:10:35','YYYY-MM-DD HH24:MI:SS'),0,'N','Y','D','ecbcf980-4cfe-4937-b31a-9e18e7e5767e','Y',450,2) +; + +-- 07/25/2019 11:10:44 +UPDATE AD_Field SET SeqNo=0, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2019-07-25 11:10:44','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Field_ID=204733 +; + +-- 07/25/2019 11:11:21 +UPDATE AD_Field SET DisplayLogic='@RelatedInvoice_ID@ > 0', IsReadOnly='Y', AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2019-07-25 11:11:21','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Field_ID=206135 +; + +-- 07/25/2019 11:11:38 +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,ColumnSpan) VALUES (206136,'Related Invoice',290,213967,'Y',10,440,'N','N','N','N',0,0,'Y',TO_DATE('2019-07-25 11:11:37','YYYY-MM-DD HH24:MI:SS'),0,TO_DATE('2019-07-25 11:11:37','YYYY-MM-DD HH24:MI:SS'),0,'N','Y','D','e0bb818f-dfc1-494c-a9c2-1d5f1a9c7945','Y',430,2) +; + +-- 07/25/2019 11:12:06 +UPDATE AD_Field SET DisplayLogic='@RelatedInvoice_ID@ > 0', IsReadOnly='Y', AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_DATE('2019-07-25 11:12:06','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Field_ID=206136 +; + +SELECT register_migration_script('201907251130_IDEMPIERE-918_Invoice_RelatedInvoice_ID.sql') FROM dual +; \ No newline at end of file diff --git a/migration/i6.2/postgresql/201907251130_IDEMPIERE-918_Invoice_RelatedInvoice_ID.sql b/migration/i6.2/postgresql/201907251130_IDEMPIERE-918_Invoice_RelatedInvoice_ID.sql new file mode 100644 index 0000000000..92b6a7277e --- /dev/null +++ b/migration/i6.2/postgresql/201907251130_IDEMPIERE-918_Invoice_RelatedInvoice_ID.sql @@ -0,0 +1,43 @@ +-- IDEMPIERE-918 - add C_Invoice.RelatedInvoice_ID +-- 07/25/2019 11:08:54 +INSERT INTO AD_Element (AD_Element_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,ColumnName,Name,PrintName,EntityType,AD_Element_UU) VALUES (203348,0,0,'Y',TO_TIMESTAMP('2019-07-25 11:08:54','YYYY-MM-DD HH24:MI:SS'),0,TO_TIMESTAMP('2019-07-25 11:08:54','YYYY-MM-DD HH24:MI:SS'),0,'RelatedInvoice_ID','Related Invoice','Related Invoice','D','30673d40-aeaa-4d46-b9aa-fd2d41ab90f8') +; + +-- 07/25/2019 11:10:03 +INSERT INTO AD_Column (AD_Column_ID,Version,Name,AD_Table_ID,ColumnName,FieldLength,IsKey,IsParent,IsMandatory,IsTranslated,IsIdentifier,SeqNo,IsEncrypted,AD_Reference_ID,AD_Reference_Value_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,AD_Element_ID,IsUpdateable,IsSelectionColumn,EntityType,IsSyncDatabase,IsAlwaysUpdateable,IsAutocomplete,IsAllowLogging,AD_Column_UU,IsAllowCopy,SeqNoSelection,IsToolbarButton,IsSecure,FKConstraintType,IsHtml) VALUES (213967,0,'Related Invoice',318,'RelatedInvoice_ID',10,'N','N','N','N','N',0,'N',30,336,0,0,'Y',TO_TIMESTAMP('2019-07-25 11:10:03','YYYY-MM-DD HH24:MI:SS'),0,TO_TIMESTAMP('2019-07-25 11:10:03','YYYY-MM-DD HH24:MI:SS'),0,203348,'Y','N','D','N','N','N','Y','75158448-52e0-426b-a393-86141d86157e','N',0,'N','N','N','N') +; + +-- 07/25/2019 11:10:08 +UPDATE AD_Column SET FKConstraintName='RelatedInvoice_CInvoice', FKConstraintType='N',Updated=TO_TIMESTAMP('2019-07-25 11:10:08','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Column_ID=213967 +; + +-- 07/25/2019 11:10:08 +ALTER TABLE C_Invoice ADD COLUMN RelatedInvoice_ID NUMERIC(10) DEFAULT NULL +; + +-- 07/25/2019 11:10:08 +ALTER TABLE C_Invoice ADD CONSTRAINT RelatedInvoice_CInvoice FOREIGN KEY (RelatedInvoice_ID) REFERENCES c_invoice(c_invoice_id) DEFERRABLE INITIALLY DEFERRED +; + +-- 07/25/2019 11:10:35 +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,ColumnSpan) VALUES (206135,'Related Invoice',263,213967,'Y',10,460,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2019-07-25 11:10:35','YYYY-MM-DD HH24:MI:SS'),0,TO_TIMESTAMP('2019-07-25 11:10:35','YYYY-MM-DD HH24:MI:SS'),0,'N','Y','D','ecbcf980-4cfe-4937-b31a-9e18e7e5767e','Y',450,2) +; + +-- 07/25/2019 11:10:44 +UPDATE AD_Field SET SeqNo=0, AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-07-25 11:10:44','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Field_ID=204733 +; + +-- 07/25/2019 11:11:21 +UPDATE AD_Field SET DisplayLogic='@RelatedInvoice_ID@ > 0', IsReadOnly='Y', AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-07-25 11:11:21','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Field_ID=206135 +; + +-- 07/25/2019 11:11:38 +INSERT INTO AD_Field (AD_Field_ID,Name,AD_Tab_ID,AD_Column_ID,IsDisplayed,DisplayLength,SeqNo,IsSameLine,IsHeading,IsFieldOnly,IsEncrypted,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,IsReadOnly,IsCentrallyMaintained,EntityType,AD_Field_UU,IsDisplayedGrid,SeqNoGrid,ColumnSpan) VALUES (206136,'Related Invoice',290,213967,'Y',10,440,'N','N','N','N',0,0,'Y',TO_TIMESTAMP('2019-07-25 11:11:37','YYYY-MM-DD HH24:MI:SS'),0,TO_TIMESTAMP('2019-07-25 11:11:37','YYYY-MM-DD HH24:MI:SS'),0,'N','Y','D','e0bb818f-dfc1-494c-a9c2-1d5f1a9c7945','Y',430,2) +; + +-- 07/25/2019 11:12:06 +UPDATE AD_Field SET DisplayLogic='@RelatedInvoice_ID@ > 0', IsReadOnly='Y', AD_Reference_Value_ID=NULL, AD_Val_Rule_ID=NULL, IsToolbarButton=NULL,Updated=TO_TIMESTAMP('2019-07-25 11:12:06','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=0 WHERE AD_Field_ID=206136 +; + +SELECT register_migration_script('201907251130_IDEMPIERE-918_Invoice_RelatedInvoice_ID.sql') FROM dual +; \ No newline at end of file diff --git a/org.adempiere.base.process/src/org/idempiere/process/InvoiceCreateCreditMemo.java b/org.adempiere.base.process/src/org/idempiere/process/InvoiceCreateCreditMemo.java index 498c62b019..e2c6d381ed 100644 --- a/org.adempiere.base.process/src/org/idempiere/process/InvoiceCreateCreditMemo.java +++ b/org.adempiere.base.process/src/org/idempiere/process/InvoiceCreateCreditMemo.java @@ -110,20 +110,14 @@ public class InvoiceCreateCreditMemo extends SvrProcess { throw new AdempiereException(Msg.getMsg(getCtx(), "CannotCreateCreditMemoFromCreditMemo")); } // Validate if there is already another credit memo for this invoice (via POReference) - final String sql = "" - + "SELECT C_Invoice_ID " - + "FROM C_Invoice i " - + " JOIN C_DocType dt ON ( i.C_DocType_ID = dt.C_DocType_ID ) " - + "WHERE i.POReference = ? " - + " AND dt.DocBaseType IN ( ?, ? ) " - + " AND i.C_BPartner_ID = ? " - + " AND i.AD_Client_ID = ? " - + " AND i.AD_Org_ID = ?"; - int id = DB.getSQLValue(get_TrxName(), sql, - invoice.getDocumentNo(), - MDocType.DOCBASETYPE_APCreditMemo, MDocType.DOCBASETYPE_ARCreditMemo, - invoice.getC_BPartner_ID(), - invoice.getAD_Client_ID(), invoice.getAD_Org_ID()); + + // TODO Carlos : 2 ways - using invoice own field or searching a credit memo + int id = 0; + if (invoice.getRelatedInvoice_ID() > 0) + id = invoice.getRelatedInvoice_ID(); + + id = DB.getSQLValueEx(get_TrxName(), "SELECT C_Invoice_ID FROM C_Invoice WHERE RelatedInvoice_ID = ?", invoice.getC_Invoice_ID()); + if (id > 0) { MInvoice actualCreditMemo = MInvoice.get(getCtx(), id); MDocType dtc = MDocType.get(getCtx(), actualCreditMemo.getC_DocTypeTarget_ID()); @@ -133,6 +127,12 @@ public class InvoiceCreateCreditMemo extends SvrProcess { MInvoice creditMemo = credit(); if (creditMemo != null) { + + // TODO Carlos - remove those 2 lines it if you think it's not a good idea to fill the field for the invoice + invoice.setRelatedInvoice_ID(creditMemo.getC_Invoice_ID()); + invoice.saveEx(); + + MDocType dtc = MDocType.get(getCtx(), creditMemo.getC_DocTypeTarget_ID()); addLog(0, null, null, dtc.getName() + " " + creditMemo.getDocumentNo(), MInvoice.Table_ID, creditMemo.getC_Invoice_ID()); } @@ -182,6 +182,7 @@ public class InvoiceCreateCreditMemo extends SvrProcess { StringBuilder msgadd = new StringBuilder("{->").append(invoice.getDocumentNo()).append(")"); creditMemo.addDescription(msgadd.toString()); creditMemo.setPOReference(invoice.getDocumentNo()); + creditMemo.setRelatedInvoice_ID(invoice.getC_Invoice_ID()); creditMemo.saveEx(get_TrxName()); // if (p_DocAction != null) { diff --git a/org.adempiere.base/src/org/compiere/model/I_C_Invoice.java b/org.adempiere.base/src/org/compiere/model/I_C_Invoice.java index 00835c4751..d354e697d7 100644 --- a/org.adempiere.base/src/org/compiere/model/I_C_Invoice.java +++ b/org.adempiere.base/src/org/compiere/model/I_C_Invoice.java @@ -816,6 +816,17 @@ public interface I_C_Invoice /** Get Referenced Invoice */ public int getRef_Invoice_ID(); + /** Column name RelatedInvoice_ID */ + public static final String COLUMNNAME_RelatedInvoice_ID = "RelatedInvoice_ID"; + + /** Set Related Invoice */ + public void setRelatedInvoice_ID (int RelatedInvoice_ID); + + /** Get Related Invoice */ + public int getRelatedInvoice_ID(); + + public org.compiere.model.I_C_Invoice getRelatedInvoice() throws RuntimeException; + /** Column name Reversal_ID */ public static final String COLUMNNAME_Reversal_ID = "Reversal_ID"; diff --git a/org.adempiere.base/src/org/compiere/model/X_C_Invoice.java b/org.adempiere.base/src/org/compiere/model/X_C_Invoice.java index ef5f27d3eb..fd7bbe712e 100644 --- a/org.adempiere.base/src/org/compiere/model/X_C_Invoice.java +++ b/org.adempiere.base/src/org/compiere/model/X_C_Invoice.java @@ -33,7 +33,7 @@ public class X_C_Invoice extends PO implements I_C_Invoice, I_Persistent /** * */ - private static final long serialVersionUID = 20190106L; + private static final long serialVersionUID = 20190725L; /** Standard Constructor */ public X_C_Invoice (Properties ctx, int C_Invoice_ID, String trxName) @@ -1454,6 +1454,31 @@ public class X_C_Invoice extends PO implements I_C_Invoice, I_Persistent return ii.intValue(); } + public org.compiere.model.I_C_Invoice getRelatedInvoice() throws RuntimeException + { + return (org.compiere.model.I_C_Invoice)MTable.get(getCtx(), org.compiere.model.I_C_Invoice.Table_Name) + .getPO(getRelatedInvoice_ID(), get_TrxName()); } + + /** Set Related Invoice. + @param RelatedInvoice_ID Related Invoice */ + public void setRelatedInvoice_ID (int RelatedInvoice_ID) + { + if (RelatedInvoice_ID < 1) + set_Value (COLUMNNAME_RelatedInvoice_ID, null); + else + set_Value (COLUMNNAME_RelatedInvoice_ID, Integer.valueOf(RelatedInvoice_ID)); + } + + /** Get Related Invoice. + @return Related Invoice */ + public int getRelatedInvoice_ID () + { + Integer ii = (Integer)get_Value(COLUMNNAME_RelatedInvoice_ID); + if (ii == null) + return 0; + return ii.intValue(); + } + public org.compiere.model.I_C_Invoice getReversal() throws RuntimeException { return (org.compiere.model.I_C_Invoice)MTable.get(getCtx(), org.compiere.model.I_C_Invoice.Table_Name) From 9d9eb132c4bbd5a8ffc5f5c2e784b6205a0e0b7f Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Fri, 26 Jul 2019 18:50:30 +0200 Subject: [PATCH 2/6] IDEMPIERE-918 Allow to choose the reversal document for invoice - peer review --- .../process/InvoiceCreateCreditMemo.java | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/org.adempiere.base.process/src/org/idempiere/process/InvoiceCreateCreditMemo.java b/org.adempiere.base.process/src/org/idempiere/process/InvoiceCreateCreditMemo.java index e2c6d381ed..132fe8679b 100644 --- a/org.adempiere.base.process/src/org/idempiere/process/InvoiceCreateCreditMemo.java +++ b/org.adempiere.base.process/src/org/idempiere/process/InvoiceCreateCreditMemo.java @@ -109,14 +109,8 @@ public class InvoiceCreateCreditMemo extends SvrProcess { if (invoice.isCreditMemo()) { throw new AdempiereException(Msg.getMsg(getCtx(), "CannotCreateCreditMemoFromCreditMemo")); } - // Validate if there is already another credit memo for this invoice (via POReference) - - // TODO Carlos : 2 ways - using invoice own field or searching a credit memo - int id = 0; - if (invoice.getRelatedInvoice_ID() > 0) - id = invoice.getRelatedInvoice_ID(); - - id = DB.getSQLValueEx(get_TrxName(), "SELECT C_Invoice_ID FROM C_Invoice WHERE RelatedInvoice_ID = ?", invoice.getC_Invoice_ID()); + // Validate if there is already another credit memo for this invoice + int id = DB.getSQLValueEx(get_TrxName(), "SELECT C_Invoice_ID FROM C_Invoice WHERE RelatedInvoice_ID = ?", invoice.getC_Invoice_ID()); if (id > 0) { MInvoice actualCreditMemo = MInvoice.get(getCtx(), id); @@ -127,12 +121,6 @@ public class InvoiceCreateCreditMemo extends SvrProcess { MInvoice creditMemo = credit(); if (creditMemo != null) { - - // TODO Carlos - remove those 2 lines it if you think it's not a good idea to fill the field for the invoice - invoice.setRelatedInvoice_ID(creditMemo.getC_Invoice_ID()); - invoice.saveEx(); - - MDocType dtc = MDocType.get(getCtx(), creditMemo.getC_DocTypeTarget_ID()); addLog(0, null, null, dtc.getName() + " " + creditMemo.getDocumentNo(), MInvoice.Table_ID, creditMemo.getC_Invoice_ID()); } From 96508b61f7bd4bf500d402a12045655304bc9741 Mon Sep 17 00:00:00 2001 From: hieplq Date: Thu, 25 Jul 2019 21:58:09 +0700 Subject: [PATCH 3/6] IDEMPIERE-1937:same for change password pannel SessionManager.logoutSession() clean current Execution, so Executions.getCurrent() return null so List browserLanguages = browserLanguages(Executions.getCurrent().getHeader("accept-language")); on LoginPanel make NPE --- .../src/org/adempiere/webui/panel/ChangePasswordPanel.java | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/ChangePasswordPanel.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/ChangePasswordPanel.java index b21860250b..d7fa01a425 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/ChangePasswordPanel.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/ChangePasswordPanel.java @@ -277,7 +277,7 @@ public class ChangePasswordPanel extends Window implements EventListener else if (event.getTarget().getId().equals(ConfirmPanel.A_CANCEL)) { SessionManager.logoutSession(); - wndLogin.loginCancelled(); + //wndLogin.loginCancelled(); } else if (event.getTarget() == txtNewPassword) { MPasswordRule pwdrule = MPasswordRule.getRules(Env.getCtx(), null); From 244718e2cf2cf5c25d9301efc56fbbe095ce1c71 Mon Sep 17 00:00:00 2001 From: Nicolas Micoud Date: Fri, 26 Jul 2019 20:22:44 +0200 Subject: [PATCH 4/6] IDEMPIERE-3939 Tree node label is not updated after update of record --- .../org/adempiere/webui/adwindow/ADTabpanel.java | 15 +++++++++++++++ 1 file changed, 15 insertions(+) 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 be30297045..07bd5f0ca4 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 @@ -1434,6 +1434,21 @@ DataStatusListener, IADTabpanel, IdSpace, IFieldEditorContainer if (isTreeDrivenByValue()) treePanel.prepareForRefresh(); } + + if ("Saved".equals(e.getAD_Message()) && model.find(null, gridTab.getRecord_ID()) != null && !isTreeDrivenByValue()) + { + DefaultTreeNode treeNode = model.find(null, gridTab.getRecord_ID()); + if (treeNode != null) { // + MTreeNode data = (MTreeNode) treeNode.getData(); + + String label = (isValueDisplayed() ? (gridTab.getValue("Value").toString() + " - ") : "") + gridTab.get_ValueAsString("Name"); + if (!data.getName().equals(label)) { + data.setName(label); + treeNode.setData(data); + } + } + } + if (refresh) { int AD_Tree_ID = Env.getContextAsInt (Env.getCtx(), getWindowNo(), "AD_Tree_ID", true); From c370554e308d2f0f216dc06d6875fd7498205bdc Mon Sep 17 00:00:00 2001 From: Nicolas Micoud Date: Fri, 26 Jul 2019 21:36:27 +0200 Subject: [PATCH 5/6] IDEMPIERE-4009 Pushing the Enter key on standard search panels don't have any effect --- .../WEB-INF/src/org/adempiere/webui/panel/InfoPanel.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/InfoPanel.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/InfoPanel.java index 8e01796548..43613aab58 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/InfoPanel.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/InfoPanel.java @@ -1973,6 +1973,9 @@ public abstract class InfoPanel extends Window implements EventListener, // do nothing when parameter not change and at window mode, or at dialog mode but select non record onOk(); } + else if (m_infoWindowID == 0 && event.getTarget() instanceof InfoGeneralPanel) { + onUserQuery(); + } }else if (event.getName().equals(Events.ON_CANCEL) || (event.getTarget().equals(this) && event.getName().equals(Events.ON_CLOSE))){ m_cancel = true; dispose(false); From 8c7ef5152144a4a6eab6665f95a2ff7ef06a15ad Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Fri, 26 Jul 2019 21:53:48 +0200 Subject: [PATCH 6/6] IDEMPIERE-2033 Add Reset button on CustomizeGridView panel / based on suggested patch from Nicolas Micoud (nmicoud) --- .../org/adempiere/webui/panel/CustomizeGridViewPanel.java | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/CustomizeGridViewPanel.java b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/CustomizeGridViewPanel.java index dca206fe57..07f29ebd0f 100644 --- a/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/CustomizeGridViewPanel.java +++ b/org.adempiere.ui.zk/WEB-INF/src/org/adempiere/webui/panel/CustomizeGridViewPanel.java @@ -51,6 +51,7 @@ import org.compiere.model.MTab; import org.compiere.model.Query; import org.compiere.model.X_AD_Tab_Customization; import org.compiere.util.CLogger; +import org.compiere.util.DB; import org.compiere.util.Env; import org.compiere.util.Msg; import org.compiere.util.NamePair; @@ -131,7 +132,7 @@ public class CustomizeGridViewPanel extends Panel private boolean uiCreated; private boolean m_saved = false; - private ConfirmPanel confirmPanel = new ConfirmPanel(true); + private ConfirmPanel confirmPanel = new ConfirmPanel(true, false, true, false, false, false); /** * Static Layout @@ -290,6 +291,9 @@ public class CustomizeGridViewPanel extends Panel } else if (event.getTarget().equals( confirmPanel.getButton(ConfirmPanel.A_CANCEL))) { getParent().detach(); + } else if (event.getTarget().equals(confirmPanel.getButton(ConfirmPanel.A_RESET))) { + tableSeqs.clear(); + loadData(); } }