BF [ 2784194 ] Check Warehouse-Locator conflict

https://sourceforge.net/tracker/?func=detail&aid=2784194&group_id=176962&atid=879332
This commit is contained in:
teo_sarca 2009-04-30 08:15:28 +00:00
parent db9e81c387
commit ef72cfb284
2 changed files with 65 additions and 3 deletions

View File

@ -0,0 +1,43 @@
/******************************************************************************
* Product: Adempiere ERP & CRM Smart Business Solution *
* Copyright (C) 2009 SC ARHIPAC SERVICE SRL. 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. *
*****************************************************************************/
package org.adempiere.exceptions;
import org.compiere.model.I_M_Locator;
import org.compiere.model.I_M_Warehouse;
/**
* Throwed when a document warehouse does not match with document or document line locator.
* @author Teo Sarca, www.arhipac.ro
*/
public class WarehouseLocatorConflictException extends AdempiereException
{
/**
*
*/
private static final long serialVersionUID = 4812283712626432829L;
/**
* @param wh warehouse
* @param locator locator
* @param lineNo Document Line#
*/
public WarehouseLocatorConflictException(I_M_Warehouse wh, I_M_Locator locator, int lineNo)
{
super ("@WarehouseLocatorConflict@"
+" @M_Warehouse_ID@: "+(wh != null ? wh.getName() : "?")
+" @M_Locator_ID@: "+(locator != null ? locator.getValue() : "?")
+" @Line@: "+lineNo
);
}
}

View File

@ -22,6 +22,7 @@ import java.util.List;
import java.util.Properties;
import org.adempiere.exceptions.FillMandatoryException;
import org.adempiere.exceptions.WarehouseLocatorConflictException;
import org.compiere.util.DB;
import org.compiere.util.Env;
import org.compiere.util.Msg;
@ -32,6 +33,10 @@ import org.compiere.util.Util;
*
* @author Jorg Janke
* @version $Id: MInOutLine.java,v 1.5 2006/07/30 00:51:03 jjanke Exp $
*
* @author Teo Sarca, www.arhipac.ro
* <li>BF [ 2784194 ] Check Warehouse-Locator conflict
* https://sourceforge.net/tracker/?func=detail&aid=2784194&group_id=176962&atid=879332
*/
public class MInOutLine extends X_M_InOutLine
{
@ -254,12 +259,13 @@ public class MInOutLine extends X_M_InOutLine
* Set M_Locator_ID
* @param M_Locator_ID id
*/
@Override
public void setM_Locator_ID (int M_Locator_ID)
{
if (M_Locator_ID < 0)
throw new IllegalArgumentException ("M_Locator_ID is mandatory.");
// set to 0 explicitly to reset
set_Value ("M_Locator_ID", new Integer(M_Locator_ID));
set_Value (COLUMNNAME_M_Locator_ID, new Integer(M_Locator_ID));
} // setM_Locator_ID
/**
@ -275,7 +281,7 @@ public class MInOutLine extends X_M_InOutLine
// No Product
if (getM_Product_ID() == 0)
{
set_ValueNoCheck("M_Locator_ID", null);
set_ValueNoCheck(COLUMNNAME_M_Locator_ID, null);
return;
}
@ -492,7 +498,7 @@ public class MInOutLine extends X_M_InOutLine
if (getLine() == 0)
{
String sql = "SELECT COALESCE(MAX(Line),0)+10 FROM M_InOutLine WHERE M_InOut_ID=?";
int ii = DB.getSQLValue (get_TrxName(), sql, getM_InOut_ID());
int ii = DB.getSQLValueEx (get_TrxName(), sql, getM_InOut_ID());
setLine (ii);
}
// UOM
@ -520,6 +526,19 @@ public class MInOutLine extends X_M_InOutLine
}
}
// Validate Locator/Warehouse - teo_sarca, BF [ 2784194 ]
if (getM_Locator_ID() > 0)
{
MLocator locator = MLocator.get(getCtx(), getM_Locator_ID());
if (getM_Warehouse_ID() != locator.getM_Warehouse_ID())
{
throw new WarehouseLocatorConflictException(
MWarehouse.get(getCtx(), getM_Warehouse_ID()),
locator,
getLine());
}
}
// if (getC_Charge_ID() == 0 && getM_Product_ID() == 0)
// ;