BF2003790 BOM Verify - root insert error
This commit is contained in:
parent
a5a40bdb81
commit
7f3483d363
|
@ -0,0 +1,171 @@
|
|||
/******************************************************************************
|
||||
* Product: Adempiere ERP & CRM Smart Business Solution *
|
||||
* Copyright (C) 1999-2006 ComPiere, Inc. All Rights Reserved. *
|
||||
* This program is free software; you can redistribute it and/or modify it *
|
||||
* under the terms version 2 of the GNU General Public License as published *
|
||||
* by the Free Software Foundation. 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., *
|
||||
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. *
|
||||
* For the text or an alternative of this public license, you may reach us *
|
||||
* ComPiere, Inc., 2620 Augustine Dr. #245, Santa Clara, CA 95054, USA *
|
||||
* or via info@compiere.org or http://www.compiere.org/license.html *
|
||||
* Portions created by Carlos Ruiz are Copyright (C) 2005 QSS Ltda.
|
||||
* Contributor(s): Carlos Ruiz (globalqss)
|
||||
*****************************************************************************/
|
||||
package org.eevolution.process;
|
||||
|
||||
import java.sql.PreparedStatement;
|
||||
import java.sql.ResultSet;
|
||||
import java.sql.SQLException;
|
||||
import java.util.logging.Level;
|
||||
|
||||
import org.compiere.model.X_M_Product;
|
||||
import org.compiere.process.ProcessInfoParameter;
|
||||
import org.compiere.process.SvrProcess;
|
||||
import org.compiere.util.AdempiereUserError;
|
||||
import org.compiere.util.CLogger;
|
||||
import org.compiere.util.DB;
|
||||
import org.compiere.util.Env;
|
||||
import org.compiere.util.ValueNamePair;
|
||||
import org.eevolution.model.MPPProductBOM;
|
||||
import org.eevolution.model.MPPProductBOMLine;
|
||||
|
||||
/**
|
||||
* Title: Check BOM Structure (free of cycles) Description: Tree cannot contain
|
||||
* BOMs which are already referenced
|
||||
*
|
||||
* @author Tony Snook (tspc)
|
||||
*
|
||||
*/
|
||||
public class PP_Product_BOM_Check extends SvrProcess
|
||||
{
|
||||
|
||||
/** The Record */
|
||||
private int p_Record_ID = 0;
|
||||
|
||||
/**
|
||||
* Prepare - e.g., get Parameters.
|
||||
*/
|
||||
protected void prepare()
|
||||
{
|
||||
ProcessInfoParameter[] para = getParameter();
|
||||
for (int i = 0; i < para.length; i++)
|
||||
{
|
||||
String name = para[i].getParameterName();
|
||||
if (para[i].getParameter() == null)
|
||||
;
|
||||
else
|
||||
log.log(Level.SEVERE, "Unknown Parameter: " + name);
|
||||
}
|
||||
p_Record_ID = getRecord_ID();
|
||||
} // prepare
|
||||
|
||||
/**
|
||||
* Process
|
||||
*
|
||||
* @return message
|
||||
* @throws Exception
|
||||
*/
|
||||
protected String doIt() throws Exception
|
||||
{
|
||||
|
||||
int bomid = 0;
|
||||
int lowlevel = 0;
|
||||
|
||||
log.info("Check BOM Structure");
|
||||
|
||||
// Record ID is M_Product_ID of product to be tested
|
||||
X_M_Product xp = new X_M_Product(Env.getCtx(), p_Record_ID, get_TrxName());
|
||||
|
||||
if (!xp.isBOM())
|
||||
{
|
||||
log.info("Product is not a BOM");
|
||||
// No BOM - should not happen, but no problem
|
||||
return "OK";
|
||||
}
|
||||
|
||||
// Check Parent Level
|
||||
MPPProductBOMLine bomline = new MPPProductBOMLine(getCtx(), 0, get_TrxName());
|
||||
|
||||
try
|
||||
{
|
||||
lowlevel = bomline.getLowLevel(p_Record_ID);
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
raiseError("BOM Loop Error: ", e.getCause().getLocalizedMessage());
|
||||
}
|
||||
xp.setLowLevel(lowlevel);
|
||||
xp.setIsVerified(true);
|
||||
xp.save(get_TrxName());
|
||||
|
||||
// Get BOM ID for default BOM (where BOM search key equals Product
|
||||
// search key)
|
||||
String sql = new String("SELECT PP_Product_BOM_ID FROM PP_Product_BOM pb " + "LEFT JOIN M_Product p ON pb.M_Product_ID = p.M_Product_ID "
|
||||
+ "WHERE pb.M_Product_ID = ? AND pb.value = p.value ");
|
||||
PreparedStatement pstmt = null;
|
||||
ResultSet rs = null;
|
||||
try
|
||||
{
|
||||
pstmt = DB.prepareStatement(sql, get_TrxName());
|
||||
pstmt.setInt(1, p_Record_ID);
|
||||
rs = pstmt.executeQuery();
|
||||
if (rs.next())
|
||||
bomid = rs.getInt(1);
|
||||
else
|
||||
raiseError("No Default BOM found: ", "Check BOM Parent search key");
|
||||
}
|
||||
catch (SQLException e)
|
||||
{
|
||||
log.severe("Error getting BOM_ID for product: " + e + "\n" + sql);
|
||||
return "@Error@";
|
||||
}
|
||||
finally
|
||||
{
|
||||
rs.close();
|
||||
pstmt.close();
|
||||
}
|
||||
|
||||
// Check All BOM Lines
|
||||
MPPProductBOM tbom = new MPPProductBOM(getCtx(), bomid, get_TrxName());
|
||||
if (tbom.getM_Product_ID() != 0)
|
||||
{
|
||||
MPPProductBOMLine[] tbomlines = tbom.getLines();
|
||||
for (MPPProductBOMLine tbomline : tbomlines)
|
||||
{
|
||||
xp = new X_M_Product(Env.getCtx(), tbomline.getM_Product_ID(), get_TrxName());
|
||||
lowlevel = 0;
|
||||
try
|
||||
{
|
||||
lowlevel = bomline.getLowLevel(tbomline.getM_Product_ID());
|
||||
}
|
||||
catch (Exception e)
|
||||
{
|
||||
raiseError("BOM Loop Error: ", e.getLocalizedMessage());
|
||||
}
|
||||
xp.setLowLevel(lowlevel);
|
||||
xp.setIsVerified(true);
|
||||
xp.save(get_TrxName());
|
||||
}
|
||||
}
|
||||
return "OK";
|
||||
} // doIt
|
||||
|
||||
private void raiseError(String string, String hint) throws Exception
|
||||
{
|
||||
DB.rollback(false, get_TrxName());
|
||||
X_M_Product xp = new X_M_Product(getCtx(), p_Record_ID, null); // parent
|
||||
xp.setIsVerified(false); // set BOM not verified
|
||||
xp.save();
|
||||
String msg = string;
|
||||
ValueNamePair pp = CLogger.retrieveError();
|
||||
if (pp != null) msg = pp.getName() + " - ";
|
||||
msg += hint;
|
||||
throw new AdempiereUserError(msg);
|
||||
}
|
||||
|
||||
} // M_Product_BOM_Check
|
|
@ -0,0 +1,25 @@
|
|||
-- Jul 7, 2008 1:24:00 PM EST
|
||||
-- Default comment for updating dictionary
|
||||
UPDATE AD_Process SET Classname='org.eevolution.process.PP_Product_BOM_Check', Value='PP_Product_BOM',Updated=TO_DATE('2008-07-07 13:24:00','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_ID=136
|
||||
;
|
||||
|
||||
-- Jul 7, 2008 1:26:22 PM EST
|
||||
-- Default comment for updating dictionary
|
||||
UPDATE AD_Process SET Description='Verify BOM Structure and Update Low Level',Updated=TO_DATE('2008-07-07 13:26:22','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_ID=136
|
||||
;
|
||||
|
||||
-- Jul 7, 2008 1:26:22 PM EST
|
||||
-- Default comment for updating dictionary
|
||||
UPDATE AD_Process_Trl SET IsTranslated='N' WHERE AD_Process_ID=136
|
||||
;
|
||||
|
||||
-- Jul 7, 2008 1:28:22 PM EST
|
||||
-- Default comment for updating dictionary
|
||||
UPDATE AD_Field SET Description='Verify BOM Structure and Update Low Level', DisplayLogic='@IsSummary@=''N'' & @IsBOM@=''Y''',Updated=TO_DATE('2008-07-07 13:28:22','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=3747
|
||||
;
|
||||
|
||||
-- Jul 7, 2008 1:28:22 PM EST
|
||||
-- Default comment for updating dictionary
|
||||
UPDATE AD_Field_Trl SET IsTranslated='N' WHERE AD_Field_ID=3747
|
||||
;
|
||||
|
|
@ -0,0 +1,25 @@
|
|||
-- Jul 7, 2008 1:24:00 PM EST
|
||||
-- Default comment for updating dictionary
|
||||
UPDATE AD_Process SET Classname='org.eevolution.process.PP_Product_BOM_Check', Value='PP_Product_BOM',Updated=TO_TIMESTAMP('2008-07-07 13:24:00','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_ID=136
|
||||
;
|
||||
|
||||
-- Jul 7, 2008 1:26:22 PM EST
|
||||
-- Default comment for updating dictionary
|
||||
UPDATE AD_Process SET Description='Verify BOM Structure and Update Low Level',Updated=TO_TIMESTAMP('2008-07-07 13:26:22','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Process_ID=136
|
||||
;
|
||||
|
||||
-- Jul 7, 2008 1:26:22 PM EST
|
||||
-- Default comment for updating dictionary
|
||||
UPDATE AD_Process_Trl SET IsTranslated='N' WHERE AD_Process_ID=136
|
||||
;
|
||||
|
||||
-- Jul 7, 2008 1:28:22 PM EST
|
||||
-- Default comment for updating dictionary
|
||||
UPDATE AD_Field SET Description='Verify BOM Structure and Update Low Level', DisplayLogic='@IsSummary@=''N'' & @IsBOM@=''Y''',Updated=TO_TIMESTAMP('2008-07-07 13:28:22','YYYY-MM-DD HH24:MI:SS'),UpdatedBy=100 WHERE AD_Field_ID=3747
|
||||
;
|
||||
|
||||
-- Jul 7, 2008 1:28:22 PM EST
|
||||
-- Default comment for updating dictionary
|
||||
UPDATE AD_Field_Trl SET IsTranslated='N' WHERE AD_Field_ID=3747
|
||||
;
|
||||
|
Loading…
Reference in New Issue