From 0e58005d6fbedfc24258c50984dae88896163abb Mon Sep 17 00:00:00 2001 From: Carlos Ruiz Date: Thu, 1 Jul 2021 16:14:46 +0200 Subject: [PATCH] IDEMPIERE-4853 Process to copy a Packout definition (FHCA-859) (#756) * IDEMPIERE-4853 Process to copy a Packout definition (FHCA-859) * IDEMPIERE-4853 Process to copy a Packout definition (FHCA-859) Do not copy inactive details (as suggested by hengsin) --- .../oracle/202106302004_IDEMPIERE-4853.sql | 39 +++++++++ .../202106302004_IDEMPIERE-4853.sql | 36 +++++++++ .../org/compiere/process/CopyFromPackOut.java | 80 +++++++++++++++++++ .../src/org/compiere/model/MPackageExp.java | 39 ++++++++- 4 files changed, 190 insertions(+), 4 deletions(-) create mode 100644 migration/i8.2/oracle/202106302004_IDEMPIERE-4853.sql create mode 100644 migration/i8.2/postgresql/202106302004_IDEMPIERE-4853.sql create mode 100644 org.adempiere.base.process/src/org/compiere/process/CopyFromPackOut.java diff --git a/migration/i8.2/oracle/202106302004_IDEMPIERE-4853.sql b/migration/i8.2/oracle/202106302004_IDEMPIERE-4853.sql new file mode 100644 index 0000000000..b7428e4275 --- /dev/null +++ b/migration/i8.2/oracle/202106302004_IDEMPIERE-4853.sql @@ -0,0 +1,39 @@ +SET SQLBLANKLINES ON +SET DEFINE OFF + +-- IDEMPIERE-4853 Process to copy a Packout definition (FHCA-859) +-- Jun 30, 2021, 7:59:32 PM CEST +INSERT INTO AD_Process (AD_Process_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,Description,IsReport,Value,IsDirectPrint,Classname,AccessLevel,EntityType,Statistic_Count,Statistic_Seconds,IsBetaFunctionality,ShowHelp,CopyFromProcess,AD_Process_UU,AllowMultipleExecution) VALUES (200133,0,0,'Y',TO_DATE('2021-06-30 19:59:31','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-06-30 19:59:31','YYYY-MM-DD HH24:MI:SS'),100,'Copy from Pack Out','Copy Package Details from another Pack Out','N','CopyFromPackOut','N','org.compiere.process.CopyFromPackOut','6','D',0,0,'N','Y','N','65392ae4-8a3e-4a6e-a4ca-e665102df00a','P') +; + +-- Jun 30, 2021, 7:59:58 PM CEST +INSERT INTO AD_ToolBarButton (AD_Client_ID,AD_Org_ID,Created,CreatedBy,ComponentName,IsActive,AD_ToolBarButton_ID,Name,Updated,UpdatedBy,IsCustomization,AD_ToolBarButton_UU,Action,AD_Tab_ID,AD_Process_ID,SeqNo,EntityType) VALUES (0,0,TO_DATE('2021-06-30 19:59:57','YYYY-MM-DD HH24:MI:SS'),100,'CopyFromPackOut','Y',200113,'CopyFromPackOut',TO_DATE('2021-06-30 19:59:57','YYYY-MM-DD HH24:MI:SS'),100,'N','a4e828bd-7fd5-4aa0-acf1-ba5dc91891d8','W',50005,200133,10,'D') +; + +-- Jun 30, 2021, 8:02:52 PM CEST +INSERT INTO AD_Process_Para (AD_Process_Para_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,AD_Process_ID,SeqNo,AD_Reference_ID,AD_Reference_Value_ID,IsRange,FieldLength,IsMandatory,ColumnName,IsCentrallyMaintained,EntityType,AD_Element_ID,AD_Process_Para_UU,IsEncrypted,IsAutocomplete) VALUES (200353,0,0,'Y',TO_DATE('2021-06-30 20:02:52','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-06-30 20:02:52','YYYY-MM-DD HH24:MI:SS'),100,'Package Exp.',200133,10,30,NULL,'N',22,'N','AD_Package_Exp_ID','Y','D',50018,'7130b395-15d3-4c42-a598-190704860f7e','N','N') +; + +-- Jun 30, 2021, 8:03:01 PM CEST +UPDATE AD_Process_Para SET IsMandatory='Y',Updated=TO_DATE('2021-06-30 20:03:01','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_Para_ID=200353 +; + +-- Jun 30, 2021, 8:34:36 PM CEST +INSERT INTO AD_Val_Rule (AD_Val_Rule_ID,Name,Type,Code,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Val_Rule_UU) VALUES (200151,'AD_Package_Exp_ID except the current','S','AD_Package_Exp.AD_Package_Exp_ID!=@AD_Package_Exp_ID@',0,0,'Y',TO_DATE('2021-06-30 20:34:35','YYYY-MM-DD HH24:MI:SS'),100,TO_DATE('2021-06-30 20:34:35','YYYY-MM-DD HH24:MI:SS'),100,'D','c33608e1-4124-4ec4-9eb3-7144d7ebb45d') +; + +-- Jun 30, 2021, 8:34:43 PM CEST +UPDATE AD_Process_Para SET AD_Val_Rule_ID=200151,Updated=TO_DATE('2021-06-30 20:34:43','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_Para_ID=200353 +; + +-- Jun 30, 2021, 8:51:25 PM CEST +UPDATE AD_Column SET DefaultValue='NULL',Updated=TO_DATE('2021-06-30 20:51:25','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=50106 +; + +-- Jun 30, 2021, 8:51:44 PM CEST +UPDATE AD_Column SET DefaultValue='NULL',Updated=TO_DATE('2021-06-30 20:51:44','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=213804 +; + +SELECT register_migration_script('202106302004_IDEMPIERE-4853.sql') FROM dual +; + diff --git a/migration/i8.2/postgresql/202106302004_IDEMPIERE-4853.sql b/migration/i8.2/postgresql/202106302004_IDEMPIERE-4853.sql new file mode 100644 index 0000000000..c3557a4ff4 --- /dev/null +++ b/migration/i8.2/postgresql/202106302004_IDEMPIERE-4853.sql @@ -0,0 +1,36 @@ +-- IDEMPIERE-4853 Process to copy a Packout definition (FHCA-859) +-- Jun 30, 2021, 7:59:32 PM CEST +INSERT INTO AD_Process (AD_Process_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,Description,IsReport,Value,IsDirectPrint,Classname,AccessLevel,EntityType,Statistic_Count,Statistic_Seconds,IsBetaFunctionality,ShowHelp,CopyFromProcess,AD_Process_UU,AllowMultipleExecution) VALUES (200133,0,0,'Y',TO_TIMESTAMP('2021-06-30 19:59:31','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-06-30 19:59:31','YYYY-MM-DD HH24:MI:SS'),100,'Copy from Pack Out','Copy Package Details from another Pack Out','N','CopyFromPackOut','N','org.compiere.process.CopyFromPackOut','6','D',0,0,'N','Y','N','65392ae4-8a3e-4a6e-a4ca-e665102df00a','P') +; + +-- Jun 30, 2021, 7:59:58 PM CEST +INSERT INTO AD_ToolBarButton (AD_Client_ID,AD_Org_ID,Created,CreatedBy,ComponentName,IsActive,AD_ToolBarButton_ID,Name,Updated,UpdatedBy,IsCustomization,AD_ToolBarButton_UU,"action",AD_Tab_ID,AD_Process_ID,SeqNo,EntityType) VALUES (0,0,TO_TIMESTAMP('2021-06-30 19:59:57','YYYY-MM-DD HH24:MI:SS'),100,'CopyFromPackOut','Y',200113,'CopyFromPackOut',TO_TIMESTAMP('2021-06-30 19:59:57','YYYY-MM-DD HH24:MI:SS'),100,'N','a4e828bd-7fd5-4aa0-acf1-ba5dc91891d8','W',50005,200133,10,'D') +; + +-- Jun 30, 2021, 8:02:52 PM CEST +INSERT INTO AD_Process_Para (AD_Process_Para_ID,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,Name,AD_Process_ID,SeqNo,AD_Reference_ID,AD_Reference_Value_ID,IsRange,FieldLength,IsMandatory,ColumnName,IsCentrallyMaintained,EntityType,AD_Element_ID,AD_Process_Para_UU,IsEncrypted,IsAutocomplete) VALUES (200353,0,0,'Y',TO_TIMESTAMP('2021-06-30 20:02:52','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-06-30 20:02:52','YYYY-MM-DD HH24:MI:SS'),100,'Package Exp.',200133,10,30,NULL,'N',22,'N','AD_Package_Exp_ID','Y','D',50018,'7130b395-15d3-4c42-a598-190704860f7e','N','N') +; + +-- Jun 30, 2021, 8:03:01 PM CEST +UPDATE AD_Process_Para SET IsMandatory='Y',Updated=TO_TIMESTAMP('2021-06-30 20:03:01','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_Para_ID=200353 +; + +-- Jun 30, 2021, 8:34:36 PM CEST +INSERT INTO AD_Val_Rule (AD_Val_Rule_ID,Name,Type,Code,AD_Client_ID,AD_Org_ID,IsActive,Created,CreatedBy,Updated,UpdatedBy,EntityType,AD_Val_Rule_UU) VALUES (200151,'AD_Package_Exp_ID except the current','S','AD_Package_Exp.AD_Package_Exp_ID!=@AD_Package_Exp_ID@',0,0,'Y',TO_TIMESTAMP('2021-06-30 20:34:35','YYYY-MM-DD HH24:MI:SS'),100,TO_TIMESTAMP('2021-06-30 20:34:35','YYYY-MM-DD HH24:MI:SS'),100,'D','c33608e1-4124-4ec4-9eb3-7144d7ebb45d') +; + +-- Jun 30, 2021, 8:34:43 PM CEST +UPDATE AD_Process_Para SET AD_Val_Rule_ID=200151,Updated=TO_TIMESTAMP('2021-06-30 20:34:43','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_Para_ID=200353 +; + +-- Jun 30, 2021, 8:51:25 PM CEST +UPDATE AD_Column SET DefaultValue='NULL',Updated=TO_TIMESTAMP('2021-06-30 20:51:25','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=50106 +; + +-- Jun 30, 2021, 8:51:44 PM CEST +UPDATE AD_Column SET DefaultValue='NULL',Updated=TO_TIMESTAMP('2021-06-30 20:51:44','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Column_ID=213804 +; + +SELECT register_migration_script('202106302004_IDEMPIERE-4853.sql') FROM dual +; + diff --git a/org.adempiere.base.process/src/org/compiere/process/CopyFromPackOut.java b/org.adempiere.base.process/src/org/compiere/process/CopyFromPackOut.java new file mode 100644 index 0000000000..ab6236a9ec --- /dev/null +++ b/org.adempiere.base.process/src/org/compiere/process/CopyFromPackOut.java @@ -0,0 +1,80 @@ +/*********************************************************************** + * This file is part of iDempiere ERP Open Source * + * http://www.idempiere.org * + * * + * Copyright (C) Contributors * + * * + * This program is free software; you can redistribute it and/or * + * modify it under the terms of the GNU General Public License * + * as published by the Free Software Foundation; either version 2 * + * of the License, or (at your option) any later version. * + * * + * This program is distributed in the hope that it will be useful, * + * but WITHOUT ANY WARRANTY; without even the implied warranty of * + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * + * GNU General Public License for more details. * + * * + * You should have received a copy of the GNU General Public License * + * along with this program; if not, write to the Free Software * + * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, * + * MA 02110-1301, USA. * + * * + * Contributors: * + * - Carlos Ruiz (sponsored by FH) * + **********************************************************************/ +package org.compiere.process; + +import java.util.logging.Level; + +import org.compiere.model.MPackageExp; + +/** + * Copy Package Details from another Pack Out + */ +public class CopyFromPackOut extends SvrProcess { + + /* Package Exp. */ + private int p_AD_Package_Exp_ID = 0; + + /** + * Prepare - e.g., get Parameters. + */ + @Override + protected void prepare() { + for (ProcessInfoParameter para : getParameter()) { + String name = para.getParameterName(); + switch (name) { + case "AD_Package_Exp_ID": + p_AD_Package_Exp_ID = para.getParameterAsInt(); + break; + default: + if (log.isLoggable(Level.INFO)) + log.log(Level.INFO, "Custom Parameter: " + name + "=" + para.getInfo()); + break; + } + } + } + + /** + * Perform process. + * + * @return Message (clear text) + * @throws Exception if not successful + */ + protected String doIt() throws Exception { + int to_AD_Package_Exp_ID = getRecord_ID(); + if (log.isLoggable(Level.INFO)) + log.info("From AD_Package_Exp_ID=" + p_AD_Package_Exp_ID + " to " + to_AD_Package_Exp_ID); + if (to_AD_Package_Exp_ID == 0) + throw new IllegalArgumentException("Target AD_Package_Exp_ID == 0"); + if (p_AD_Package_Exp_ID == 0) + throw new IllegalArgumentException("Source AD_Package_Exp_ID == 0"); + MPackageExp from = new MPackageExp(getCtx(), p_AD_Package_Exp_ID, get_TrxName()); + MPackageExp to = new MPackageExp(getCtx(), to_AD_Package_Exp_ID, get_TrxName()); + // + int no = to.copyDetailsFrom(from); + // + return "@Copied@=" + no; + } // doIt + +} // CopyFromOrder diff --git a/org.adempiere.base/src/org/compiere/model/MPackageExp.java b/org.adempiere.base/src/org/compiere/model/MPackageExp.java index db9af6ea33..00303b9402 100644 --- a/org.adempiere.base/src/org/compiere/model/MPackageExp.java +++ b/org.adempiere.base/src/org/compiere/model/MPackageExp.java @@ -18,6 +18,7 @@ package org.compiere.model; import java.sql.ResultSet; +import java.util.List; import java.util.Properties; import org.compiere.util.DB; @@ -32,12 +33,11 @@ import org.compiere.util.DB; *
  • BF [ 1826273 ] Error when creating MPackageExp */ public class MPackageExp extends X_AD_Package_Exp -{ - +{ /** * */ - private static final long serialVersionUID = -8923634972273479831L; + private static final long serialVersionUID = -6295261491885604619L; /** * MPackageExp @@ -75,5 +75,36 @@ public class MPackageExp extends X_AD_Package_Exp return false; return true; } // afterDelete - + + /** + * @param from the source MPackageExp to copy the details + * @return + */ + public int copyDetailsFrom(MPackageExp from) { + int count = 0; + for (MPackageExpDetail fromDetail : from.getDetails()) { + MPackageExpDetail toDetail = new MPackageExpDetail(getCtx(), 0, get_TrxName()); + PO.copyValues(fromDetail, toDetail, getAD_Client_ID(), getAD_Org_ID()); + toDetail.setAD_Package_Exp_ID(getAD_Package_Exp_ID()); + toDetail.saveEx(); + count++; + } + return count; + } // copyDetailsFrom + + /** + * Get the details of a packout definition + * @return array of details + */ + private List getDetails() { + final String where = "AD_Package_Exp_ID=?"; + final String orderBy = "Line, AD_Package_Exp_ID"; + List list = new Query(getCtx(), MPackageExpDetail.Table_Name, where, get_TrxName()) + .setParameters(getAD_Package_Exp_ID()) + .setOrderBy(orderBy) + .setOnlyActiveRecords(true) + .list(); + return list; + } + } // MPackageExp