From 731ae053a882ae45838cdf364eec6c301c341b2d Mon Sep 17 00:00:00 2001 From: Heng Sin Low Date: Wed, 13 Sep 2017 16:35:03 +0800 Subject: [PATCH] IDEMPIERE-3485 Report/Process: Unique constraint exception after save parameter --- .../src/org/compiere/model/MPInstancePara.java | 15 +++++++++++++++ .../webui/apps/ProcessParameterPanel.java | 2 +- 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/org.adempiere.base/src/org/compiere/model/MPInstancePara.java b/org.adempiere.base/src/org/compiere/model/MPInstancePara.java index 2510e73c8a..08f3b1199b 100644 --- a/org.adempiere.base/src/org/compiere/model/MPInstancePara.java +++ b/org.adempiere.base/src/org/compiere/model/MPInstancePara.java @@ -232,4 +232,19 @@ public class MPInstancePara extends X_AD_PInstance_Para } return -1; } + + /** + * Get existing AD_PInstance_Para record or create a new one if not found + * @param ctx + * @param AD_PInstance_ID + * @param SeqNo + */ + public static MPInstancePara getOrCreate(Properties ctx, int AD_PInstance_ID, int SeqNo) + { + Query query = new Query(ctx, Table_Name, "AD_PInstance_ID=? AND SeqNo=?", null); + MPInstancePara para = query.setParameters(AD_PInstance_ID, SeqNo).first(); + if (para == null) + para = new MPInstancePara(ctx, AD_PInstance_ID, SeqNo); + return para; + } } // MPInstance_Para 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 a12dfaa695..f5da8c2809 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 @@ -520,7 +520,7 @@ public class ProcessParameterPanel extends Panel implements result2 = editor2.getValue(); // Create Parameter - MPInstancePara para = new MPInstancePara(Env.getCtx(), + MPInstancePara para = MPInstancePara.getOrCreate(Env.getCtx(), m_processInfo.getAD_PInstance_ID(), i); GridField mField = (GridField) m_mFields.get(i); para.setParameterName(mField.getColumnName());