/***********************************************************************
* 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. *
**********************************************************************/
package org.idempiere.fa.model;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.Properties;
import java.util.logging.Level;
import org.compiere.model.CalloutEngine;
import org.compiere.model.GridField;
import org.compiere.model.GridTab;
import org.compiere.model.MAsset;
import org.compiere.util.DB;
import org.compiere.util.Env;
/**
* Callout for MAsset
*/
public class CalloutAsset extends CalloutEngine {
public String location (Properties ctx, int WindowNo, GridTab mTab, GridField mField, Object value, Object oldValue)
{
Integer locator = (Integer)value;
if (locator == null || locator <= 0)
return "";
if (isCalloutActive())
return "";
//
//TODO - found missing but MAsset table is asking for this in 3 location fields.
//
return "";
}
public String locator (Properties ctx, int WindowNo, GridTab mTab, GridField mField, Object value, Object oldValue)
{
Integer locator = (Integer)value;
if (locator == null || locator <= 0)
return "";
if (isCalloutActive())
return "";
//
//TODO - found missing but MAsset table is asking for this in 3 location fields.
//
return "";
}
public String asset(Properties ctx, int WindowNo, GridTab mTab, GridField mField, Object value)
{
if (value != null && MAsset.COLUMNNAME_A_Asset_ID.equals(mField.getColumnName()))
{
MAsset asset = new MAsset(ctx, (Integer) value, null);
if (asset != null)
mTab.setValue(MAsset.COLUMNNAME_M_Product_ID, asset.getM_Product_ID());
}
return "";
}
/**
* Table_Period. Used to set the Manual Period Field. This allows
* the Spread Field to be displayed when there is a code that
* has been setup as Yearly.
* The string in the Callout field is:
* com.compiere.custom.CalloutEngine.Table_Period
*
* @param ctx Context
* @param WindowNo current Window No
* @param mTab Model Tab
* @param mField Model Field
* @param value The new value
* @param oldValue The old value
* @return error message or "" if OK
*/
public String Table_Period (Properties ctx, int WindowNo,
GridTab mTab, GridField mField, Object value, Object oldValue)
{
Integer A_Depreciation_Table_Header_ID = (Integer)value;
PreparedStatement pstmt = null;
ResultSet rs = null;
try
{
if (A_Depreciation_Table_Header_ID != null){
String SQL = "SELECT A_Term "
+ "FROM A_Depreciation_Table_Header "
+ "WHERE A_Depreciation_Table_Header_ID='"
+A_Depreciation_Table_Header_ID
+"'";
pstmt = DB.prepareStatement(SQL, null); // arhipac: compatibility
rs = pstmt.executeQuery();
if (rs.next())
{
// Charges - Set Context
Env.setContext(ctx, WindowNo, "A_DEPRECIATION_MANUAL_PERIOD", rs.getString("A_Term"));
mTab.setValue ("A_DEPRECIATION_MANUAL_PERIOD", rs.getString("A_Term"));
}
}
}
catch (SQLException e)
{
if (log.isLoggable(Level.INFO)) log.info("PeriodType "+ e);
return e.getLocalizedMessage();
}
finally
{
DB.close(rs, pstmt);
rs = null;
pstmt = null;
}
return "";
} // Period Type
/**
* Field_Clear. Used to set the Manual Period Field. This allows
* the Spread Field to be displayed when there is a code that
* has been setup as Yearly.
* The string in the Callout field is:
* com.compiere.custom.CalloutEngine.Table_Period
*
* @param ctx Context
* @param WindowNo current Window No
* @param mTab Model Tab
* @param mField Model Field
* @param value The new value
* @param oldValue The old value
* @return error message or "" if OK
*/
public String Field_Clear (Properties ctx, int WindowNo,
GridTab mTab, GridField mField, Object value, Object oldValue)
{
Object A_Depreciation_ID = value;
PreparedStatement pstmt = null;
ResultSet rs = null;
try
{
String SQL = "SELECT DepreciationType "
+ "FROM A_Depreciation "
+ "WHERE A_Depreciation_ID="
+ A_Depreciation_ID;
pstmt = DB.prepareStatement(SQL, null); // arhipac: compatibility
rs = pstmt.executeQuery();
if (rs.next())
{
// Charges - Set Context
String depType = rs.getString("DepreciationType");
if ("TAB".equals(depType) || "MAN".equals(depType))
{
Env.setContext(ctx, WindowNo, "A_DEPRECIATION_MANUAL_PERIOD", "");
mTab.setValue ("A_Depreciation_Manual_Period", null);
mTab.setValue ("A_Depreciation_Manual_Amount", null);
mTab.setValue ("A_Depreciation_Table_Header_ID", null);
}
if (rs.getString("DepreciationType")== "TAB")
{
mTab.setValue ("A_Depreciation_Manual_Amount", null);
}
if (rs.getString("DepreciationType")== "MAN")
{
mTab.setValue ("A_Depreciation_Table_Header_ID", null);
}
}
}
catch (SQLException e)
{
if (log.isLoggable(Level.INFO)) log.info("PeriodType "+ e);
return e.getLocalizedMessage();
}
finally
{
DB.close(rs, pstmt);
rs = null;
pstmt = null;
}
return "";
} // Period Type
}