libero HR: Quality Assurance Task
* added proper serialVersionUID MHRConcept: * implement caching MHRConceptCategory: * added MHRMovement: * more helper methods * cleanup; removed deprecated methods MHRPayroll: * implement caching MRPeriod: * added MHRProcess: * huge refactoring * moved code from prepareIt to completeIt * use non-static variables & methods
This commit is contained in:
parent
17e5112943
commit
19cc25a39e
|
@ -75,7 +75,7 @@ public class Doc_Payroll extends Doc
|
||||||
private DocLine[] loadLines(MHRProcess process)
|
private DocLine[] loadLines(MHRProcess process)
|
||||||
{
|
{
|
||||||
ArrayList<DocLine> list = new ArrayList<DocLine>();
|
ArrayList<DocLine> list = new ArrayList<DocLine>();
|
||||||
MHRMovement[] lines = process.getLines(true, process.getHR_Process_ID());
|
MHRMovement[] lines = process.getLines(true);
|
||||||
for (int i = 0; i < lines.length; i++)
|
for (int i = 0; i < lines.length; i++)
|
||||||
{
|
{
|
||||||
MHRMovement line = lines[i];
|
MHRMovement line = lines[i];
|
||||||
|
|
|
@ -23,7 +23,10 @@ import java.util.Properties;
|
||||||
*/
|
*/
|
||||||
public class MHRAttribute extends X_HR_Attribute
|
public class MHRAttribute extends X_HR_Attribute
|
||||||
{
|
{
|
||||||
private static final long serialVersionUID = 1L;
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private static final long serialVersionUID = 3783311896401143394L;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @param ctx
|
* @param ctx
|
||||||
|
|
|
@ -36,7 +36,15 @@ import org.compiere.util.Util;
|
||||||
*/
|
*/
|
||||||
public class MHRConcept extends X_HR_Concept
|
public class MHRConcept extends X_HR_Concept
|
||||||
{
|
{
|
||||||
private static final long serialVersionUID = 1L;
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private static final long serialVersionUID = 8736925494645172953L;
|
||||||
|
|
||||||
|
/** Cache */
|
||||||
|
private static CCache<Integer, MHRConcept> s_cache = new CCache<Integer, MHRConcept>(Table_Name, 100);
|
||||||
|
/** Cache by Value */
|
||||||
|
private static CCache<String, MHRConcept> s_cacheValue = new CCache<String, MHRConcept>(Table_Name+"_Value", 100);
|
||||||
|
|
||||||
public static MHRConcept get(Properties ctx, int HR_Concept_ID)
|
public static MHRConcept get(Properties ctx, int HR_Concept_ID)
|
||||||
{
|
{
|
||||||
|
@ -59,8 +67,80 @@ public class MHRConcept extends X_HR_Concept
|
||||||
return concept;
|
return concept;
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Cache */
|
/**
|
||||||
private static CCache<Integer, MHRConcept> s_cache = new CCache<Integer, MHRConcept>(Table_Name, 100);
|
* Get Concept by Value
|
||||||
|
* @param ctx
|
||||||
|
* @param value
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
public static MHRConcept forValue(Properties ctx, String value)
|
||||||
|
{
|
||||||
|
if (Util.isEmpty(value, true))
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
int AD_Client_ID = Env.getAD_Client_ID(ctx);
|
||||||
|
final String key = AD_Client_ID+"#"+value;
|
||||||
|
MHRConcept concept = s_cacheValue.get(key);
|
||||||
|
if (concept != null)
|
||||||
|
{
|
||||||
|
return concept;
|
||||||
|
}
|
||||||
|
|
||||||
|
final String whereClause = COLUMNNAME_Value+"=? AND AD_Client_ID IN (?,?)";
|
||||||
|
concept = new Query(ctx, Table_Name, whereClause, null)
|
||||||
|
.setParameters(new Object[]{value, 0, AD_Client_ID})
|
||||||
|
.setOnlyActiveRecords(true)
|
||||||
|
.setOrderBy("AD_Client_ID DESC")
|
||||||
|
.first();
|
||||||
|
if (concept != null)
|
||||||
|
{
|
||||||
|
s_cacheValue.put(key, concept);
|
||||||
|
s_cache.put(concept.get_ID(), concept);
|
||||||
|
}
|
||||||
|
return concept;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get Employee's of Payroll Type
|
||||||
|
* @param payroll_id Payroll ID
|
||||||
|
* @param department_id Department ID
|
||||||
|
* @param employee_id Employee_ID
|
||||||
|
* @param sqlwhere Clause SQLWhere
|
||||||
|
* @return lines
|
||||||
|
*/
|
||||||
|
public static MHRConcept[] getConcepts (int payroll_id, int department_id, int employee_id, String sqlWhere)
|
||||||
|
{
|
||||||
|
Properties ctx = Env.getCtx();
|
||||||
|
List<Object> params = new ArrayList<Object>();
|
||||||
|
StringBuffer whereClause = new StringBuffer();
|
||||||
|
|
||||||
|
whereClause.append("AD_Client_ID=?");
|
||||||
|
params.add(Env.getAD_Client_ID(Env.getCtx()));
|
||||||
|
|
||||||
|
whereClause.append(" AND EXISTS (SELECT 1 FROM HR_Attribute a WHERE a.HR_Concept_ID=HR_Concept.HR_Concept_ID ")
|
||||||
|
.append(" AND (a.HR_Payroll_ID=? OR a.HR_Payroll_ID IS NULL) )");
|
||||||
|
params.add(payroll_id);
|
||||||
|
|
||||||
|
if (department_id != 0 )
|
||||||
|
{
|
||||||
|
whereClause.append(" AND HR_Concept.HR_Department_ID=?");
|
||||||
|
params.add(department_id);
|
||||||
|
}
|
||||||
|
|
||||||
|
if (Util.isEmpty(sqlWhere))
|
||||||
|
{
|
||||||
|
whereClause.append(sqlWhere);
|
||||||
|
}
|
||||||
|
|
||||||
|
List<MHRConcept> list = new Query(ctx, Table_Name, whereClause.toString(), null)
|
||||||
|
.setParameters(params)
|
||||||
|
.setOnlyActiveRecords(true)
|
||||||
|
.setOrderBy(COLUMNNAME_Value)
|
||||||
|
.list();
|
||||||
|
return list.toArray(new MHRConcept[list.size()]);
|
||||||
|
} // getConcept
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Standard Constructor
|
* Standard Constructor
|
||||||
|
@ -95,48 +175,6 @@ public class MHRConcept extends X_HR_Concept
|
||||||
super(ctx, rs, trxName);
|
super(ctx, rs, trxName);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get Employee's of Payroll Type
|
|
||||||
* @param payroll_id Payroll ID
|
|
||||||
* @param department_id Department ID
|
|
||||||
* @param employee_id Employee_ID
|
|
||||||
* @param sqlwhere Clause SQLWhere
|
|
||||||
* @return lines
|
|
||||||
*/
|
|
||||||
public static MHRConcept[] getConcepts (int payroll_id, int department_id, int employee_id, String sqlWhere)
|
|
||||||
{
|
|
||||||
Properties ctx = Env.getCtx();
|
|
||||||
List<Object> params = new ArrayList<Object>();
|
|
||||||
StringBuffer whereClause = new StringBuffer();
|
|
||||||
|
|
||||||
whereClause.append("IsActive='Y' AND AD_Client_ID=?");
|
|
||||||
params.add(Env.getAD_Client_ID(Env.getCtx()));
|
|
||||||
|
|
||||||
whereClause.append(" AND EXISTS (SELECT 1 FROM HR_Attribute a WHERE a.HR_Concept_ID=HR_Concept.HR_Concept_ID ")
|
|
||||||
.append(" AND (a.HR_Payroll_ID=? OR a.HR_Payroll_ID IS NULL) )");
|
|
||||||
params.add(payroll_id);
|
|
||||||
|
|
||||||
if (department_id != 0 )
|
|
||||||
{
|
|
||||||
whereClause.append(" AND HR_Concept.HR_Department_ID=?");
|
|
||||||
params.add(department_id);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (Util.isEmpty(sqlWhere))
|
|
||||||
{
|
|
||||||
whereClause.append(sqlWhere);
|
|
||||||
}
|
|
||||||
|
|
||||||
List<MHRConcept> list = new Query(ctx, Table_Name, whereClause.toString(), null)
|
|
||||||
.setParameters(params)
|
|
||||||
.setOrderBy(COLUMNNAME_Value)
|
|
||||||
.list();
|
|
||||||
return list.toArray(new MHRConcept[list.size()]);
|
|
||||||
} // getConcept
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public int getConceptAccountCR()
|
public int getConceptAccountCR()
|
||||||
{
|
{
|
||||||
String sql = " HR_Expense_Acct FROM HR_Concept c " +
|
String sql = " HR_Expense_Acct FROM HR_Concept c " +
|
||||||
|
|
|
@ -0,0 +1,91 @@
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package org.eevolution.model;
|
||||||
|
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.util.Properties;
|
||||||
|
|
||||||
|
import org.compiere.model.Query;
|
||||||
|
import org.compiere.util.CCache;
|
||||||
|
import org.compiere.util.Env;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* HR Concept Category
|
||||||
|
*
|
||||||
|
* @author Cristina Ghita, www.arhipac.ro
|
||||||
|
*/
|
||||||
|
public class MHRConceptCategory extends X_HR_Concept_Category
|
||||||
|
{
|
||||||
|
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private static final long serialVersionUID = 8470029939291479283L;
|
||||||
|
|
||||||
|
private static CCache<Integer, MHRConceptCategory> s_cache = new CCache<Integer, MHRConceptCategory>(Table_Name, 20);
|
||||||
|
private static CCache<String, MHRConceptCategory> s_cacheValue = new CCache<String, MHRConceptCategory>(Table_Name+"_Value", 20);
|
||||||
|
|
||||||
|
public static MHRConceptCategory get(Properties ctx, int HR_Concept_Category_ID)
|
||||||
|
{
|
||||||
|
if (HR_Concept_Category_ID <= 0)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
// Try cache
|
||||||
|
MHRConceptCategory cc = s_cache.get(HR_Concept_Category_ID);
|
||||||
|
if (cc != null)
|
||||||
|
{
|
||||||
|
return cc;
|
||||||
|
}
|
||||||
|
// Load from DB
|
||||||
|
cc = new MHRConceptCategory(ctx, HR_Concept_Category_ID, null);
|
||||||
|
if (cc.get_ID() != HR_Concept_Category_ID)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
if (cc != null)
|
||||||
|
{
|
||||||
|
s_cache.put(HR_Concept_Category_ID, cc);
|
||||||
|
}
|
||||||
|
return cc;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static MHRConceptCategory forValue(Properties ctx, String value)
|
||||||
|
{
|
||||||
|
if (value == null)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
final int AD_Client_ID = Env.getAD_Client_ID(ctx);
|
||||||
|
// Try cache
|
||||||
|
final String key = AD_Client_ID+"#"+value;
|
||||||
|
MHRConceptCategory cc = s_cacheValue.get(key);
|
||||||
|
if (cc != null)
|
||||||
|
{
|
||||||
|
return cc;
|
||||||
|
}
|
||||||
|
// Try database
|
||||||
|
final String whereClause = COLUMNNAME_Value+"=? AND AD_Client_ID IN (?,?)";
|
||||||
|
cc = new Query(ctx, Table_Name, whereClause, null)
|
||||||
|
.setParameters(new Object[]{value, 0, AD_Client_ID})
|
||||||
|
.setOnlyActiveRecords(true)
|
||||||
|
.setOrderBy("AD_Client_ID DESC")
|
||||||
|
.first();
|
||||||
|
if (cc != null)
|
||||||
|
{
|
||||||
|
s_cacheValue.put(key, cc);
|
||||||
|
s_cache.put(cc.get_ID(), cc);
|
||||||
|
}
|
||||||
|
return cc;
|
||||||
|
}
|
||||||
|
|
||||||
|
public MHRConceptCategory(Properties ctx, int HR_Concept_Category_ID, String trxName)
|
||||||
|
{
|
||||||
|
super(ctx, HR_Concept_Category_ID, trxName);
|
||||||
|
}
|
||||||
|
public MHRConceptCategory(Properties ctx, ResultSet rs, String trxName)
|
||||||
|
{
|
||||||
|
super(ctx, rs, trxName);
|
||||||
|
}
|
||||||
|
}
|
|
@ -27,7 +27,10 @@ import org.compiere.util.Env;
|
||||||
*/
|
*/
|
||||||
public class MHRDepartment extends X_HR_Department
|
public class MHRDepartment extends X_HR_Department
|
||||||
{
|
{
|
||||||
private static final long serialVersionUID = 1L;
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private static final long serialVersionUID = 83878114891519775L;
|
||||||
|
|
||||||
public static List<MHRDepartment> getAll(Properties ctx)
|
public static List<MHRDepartment> getAll(Properties ctx)
|
||||||
{
|
{
|
||||||
|
|
|
@ -32,9 +32,12 @@ import org.compiere.util.Env;
|
||||||
* @author Victor Perez
|
* @author Victor Perez
|
||||||
* @author Cristina Ghita, www.arhipac.ro
|
* @author Cristina Ghita, www.arhipac.ro
|
||||||
*/
|
*/
|
||||||
public class MHREmployee extends X_HR_Employee //--
|
public class MHREmployee extends X_HR_Employee
|
||||||
{
|
{
|
||||||
private static final long serialVersionUID = 1L;
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private static final long serialVersionUID = -7083160315471023587L;
|
||||||
|
|
||||||
public static MHREmployee get(Properties ctx, int HR_Employee_ID)
|
public static MHREmployee get(Properties ctx, int HR_Employee_ID)
|
||||||
{
|
{
|
||||||
|
|
|
@ -14,23 +14,27 @@
|
||||||
* Contributor(s): Victor Perez www.e-evolution.com *
|
* Contributor(s): Victor Perez www.e-evolution.com *
|
||||||
*****************************************************************************/
|
*****************************************************************************/
|
||||||
package org.eevolution.model;
|
package org.eevolution.model;
|
||||||
import java.sql.PreparedStatement;
|
import java.math.BigDecimal;
|
||||||
import java.sql.ResultSet;
|
import java.sql.ResultSet;
|
||||||
import java.util.ArrayList;
|
import java.sql.Timestamp;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
import java.util.logging.Level;
|
|
||||||
|
|
||||||
import org.compiere.util.DB;
|
import org.adempiere.exceptions.AdempiereException;
|
||||||
|
import org.compiere.util.Env;
|
||||||
|
import org.compiere.util.Util;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Payroll Concept for HRayroll Module
|
* Payroll Concept for HRayroll Module
|
||||||
*
|
*
|
||||||
* @author Oscar Gómez Islas
|
* @author Oscar Gómez Islas
|
||||||
* @version $Id: HRPayroll.java,v 1.0 2005/10/05 ogomezi
|
* @author Teo Sarca, www.arhipac.ro
|
||||||
*/
|
*/
|
||||||
public class MHRMovement extends X_HR_Movement
|
public class MHRMovement extends X_HR_Movement
|
||||||
{
|
{
|
||||||
private static final long serialVersionUID = 1L;
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private static final long serialVersionUID = 6705848510397126140L;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Standard Constructor
|
* Standard Constructor
|
||||||
|
@ -41,7 +45,7 @@ public class MHRMovement extends X_HR_Movement
|
||||||
public MHRMovement (Properties ctx, int HR_Movement_ID, String trxName)
|
public MHRMovement (Properties ctx, int HR_Movement_ID, String trxName)
|
||||||
{
|
{
|
||||||
super (ctx, HR_Movement_ID, trxName);
|
super (ctx, HR_Movement_ID, trxName);
|
||||||
} // HRConcept
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Load Constructor
|
* Load Constructor
|
||||||
|
@ -52,101 +56,72 @@ public class MHRMovement extends X_HR_Movement
|
||||||
public MHRMovement (Properties ctx, ResultSet rs, String trxName)
|
public MHRMovement (Properties ctx, ResultSet rs, String trxName)
|
||||||
{
|
{
|
||||||
super(ctx, rs, trxName);
|
super(ctx, rs, trxName);
|
||||||
} // End Load Constructor
|
}
|
||||||
|
|
||||||
|
public MHRMovement (MHRProcess proc, MHRConcept concept)
|
||||||
|
{
|
||||||
|
this(proc.getCtx(), 0, proc.get_TrxName());
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addAmount(BigDecimal amount)
|
||||||
|
{
|
||||||
|
setAmount(getAmount().add(amount != null ? amount : Env.ZERO));
|
||||||
|
}
|
||||||
|
|
||||||
|
public void addQty(BigDecimal qty)
|
||||||
|
{
|
||||||
|
setQty(getAmount().add(qty != null ? qty : Env.ZERO));
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get Employee's of Payroll Type
|
* @return true if all movement values (Amount, Qty, Text) are empty or negative
|
||||||
* @param payroll Payroll ID
|
|
||||||
* @param department Department ID
|
|
||||||
* @param employee Employee_ID
|
|
||||||
* @param sqlwhere Clause SQLWhere
|
|
||||||
* @return lines
|
|
||||||
*/
|
*/
|
||||||
public MHRMovement[] getmovEmployeeok (int payroll, int department, int employee, String sqlWhere)
|
public boolean isEmpty()
|
||||||
{
|
{
|
||||||
ArrayList<MHRMovement> list = new ArrayList<MHRMovement>();
|
return getQty().signum() < 0
|
||||||
String sql = "SELECT * FROM HR_Concept WHERE IsActive='Y' AND (HR_Payroll_ID=? OR HR_Payroll_ID IS NULL)";
|
&& getAmount().signum() < 0
|
||||||
if (department != 0 )
|
&& Util.isEmpty(getTextMsg());
|
||||||
sql += " AND HR_Department_ID = " + department + " ";
|
}
|
||||||
if (sqlWhere != null)
|
|
||||||
sql += sqlWhere;
|
|
||||||
sql += " ORDER BY Value";
|
|
||||||
PreparedStatement pstmt = null;
|
|
||||||
try {
|
|
||||||
pstmt = DB.prepareStatement(sql, get_TrxName());
|
|
||||||
pstmt.setInt(1, payroll);
|
|
||||||
ResultSet rs = pstmt.executeQuery();
|
|
||||||
while (rs.next())
|
|
||||||
{
|
|
||||||
MHRMovement concept = new MHRMovement(getCtx(), rs.getInt(1), get_TrxName());
|
|
||||||
list.add(concept);
|
|
||||||
}
|
|
||||||
rs.close();
|
|
||||||
pstmt.close();
|
|
||||||
pstmt = null;
|
|
||||||
}catch (Exception e)
|
|
||||||
{
|
|
||||||
log.log(Level.SEVERE, "getConcept's", e);
|
|
||||||
}
|
|
||||||
finally
|
|
||||||
{
|
|
||||||
try {
|
|
||||||
if (pstmt != null)
|
|
||||||
pstmt.close ();
|
|
||||||
}catch (Exception e)
|
|
||||||
{}
|
|
||||||
pstmt = null;
|
|
||||||
}
|
|
||||||
MHRMovement[] linesConcept = new MHRMovement[list.size()];
|
|
||||||
list.toArray(linesConcept);
|
|
||||||
return linesConcept;
|
|
||||||
} // getmovEmployee
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get Employee's of Payroll Type
|
* According to the concept type, it's saved in the column specified for the purpose
|
||||||
* @param payroll Payroll ID
|
* @param columnType column type (see MHRConcept.COLUMNTYPE_*)
|
||||||
* @param department Department ID
|
* @param value
|
||||||
* @param employee Employee_ID
|
|
||||||
* @param sqlwhere Clause SQLWhere
|
|
||||||
* @return lines
|
|
||||||
*/
|
*/
|
||||||
@Deprecated
|
public void setColumnValue(Object value)
|
||||||
public MHRMovement[] getMovementOk (int HR_Process_ID)
|
|
||||||
{
|
{
|
||||||
ArrayList<MHRMovement> list = new ArrayList<MHRMovement>();
|
final String columnType = getColumnType();
|
||||||
String sql = "SELECT * FROM HR_Movement m" +
|
if (MHRConcept.COLUMNTYPE_Quantity.equals(columnType))
|
||||||
" INNER JOIN HR_Concept_Acct ca ON (ca.HR_Concept_ID=m.HR_Concept_ID AND ca.IsActive = 'Y')"+
|
{
|
||||||
" WHERE HR_Process_ID=? AND (m.Qty <> 0 OR m.Amount <> 0) ";
|
BigDecimal qty = new BigDecimal(value.toString());
|
||||||
sql += " ORDER BY Value";
|
setQty(qty);
|
||||||
PreparedStatement pstmt = null;
|
setAmount(Env.ZERO);
|
||||||
try {
|
}
|
||||||
pstmt = DB.prepareStatement(sql, get_TrxName());
|
else if(MHRConcept.COLUMNTYPE_Amount.equals(columnType))
|
||||||
pstmt.setInt(1, HR_Process_ID);
|
{
|
||||||
ResultSet rs = pstmt.executeQuery();
|
BigDecimal amount = new BigDecimal(value.toString());
|
||||||
while (rs.next())
|
setAmount(amount);
|
||||||
|
setQty(Env.ZERO);
|
||||||
|
}
|
||||||
|
else if(MHRConcept.COLUMNTYPE_Text.equals(columnType))
|
||||||
|
{
|
||||||
|
setTextMsg(value.toString().trim());
|
||||||
|
}
|
||||||
|
else if(MHRConcept.COLUMNTYPE_Date.equals(columnType))
|
||||||
|
{
|
||||||
|
if (value instanceof Timestamp)
|
||||||
{
|
{
|
||||||
MHRMovement movement = new MHRMovement(getCtx(), rs.getInt(1), get_TrxName());
|
setServiceDate((Timestamp)value);
|
||||||
list.add(movement);
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
setServiceDate(Timestamp.valueOf(value.toString().trim().substring(0, 10)+ " 00:00:00.0"));
|
||||||
}
|
}
|
||||||
rs.close();
|
|
||||||
pstmt.close();
|
|
||||||
pstmt = null;
|
|
||||||
}catch (Exception e)
|
|
||||||
{
|
|
||||||
log.log(Level.SEVERE, "getConcept's", e);
|
|
||||||
}
|
}
|
||||||
finally
|
else
|
||||||
{
|
{
|
||||||
try {
|
throw new AdempiereException("@NotSupported@ @ColumnType@ - "+columnType);
|
||||||
if (pstmt != null)
|
|
||||||
pstmt.close ();
|
|
||||||
}catch (Exception e)
|
|
||||||
{}
|
|
||||||
pstmt = null;
|
|
||||||
}
|
}
|
||||||
MHRMovement[] movementLines = new MHRMovement[list.size()];
|
|
||||||
list.toArray(movementLines);
|
|
||||||
return movementLines;
|
|
||||||
} // getMovement
|
|
||||||
|
|
||||||
|
}
|
||||||
} // HRMovement
|
} // HRMovement
|
|
@ -19,15 +19,92 @@ import java.sql.ResultSet;
|
||||||
import java.util.Properties;
|
import java.util.Properties;
|
||||||
|
|
||||||
import org.compiere.model.MCalendar;
|
import org.compiere.model.MCalendar;
|
||||||
|
import org.compiere.model.Query;
|
||||||
|
import org.compiere.util.CCache;
|
||||||
|
import org.compiere.util.Env;
|
||||||
|
import org.compiere.util.Util;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Payroll for HRayroll Module
|
* Payroll for HRayroll Module
|
||||||
*
|
*
|
||||||
* @author Oscar Gómez Islas
|
* @author Oscar Gómez Islas
|
||||||
* @version $Id: HRPayroll.java,v 1.0 2005/10/05 ogomezi
|
* @version $Id: HRPayroll.java,v 1.0 2005/10/05 ogomezi
|
||||||
|
*
|
||||||
|
* @author Cristina Ghita, www.arhipac.ro
|
||||||
*/
|
*/
|
||||||
public class MHRPayroll extends X_HR_Payroll
|
public class MHRPayroll extends X_HR_Payroll
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private static final long serialVersionUID = -1407037967021019961L;
|
||||||
|
/** Cache */
|
||||||
|
private static CCache<Integer, MHRPayroll> s_cache = new CCache<Integer, MHRPayroll>(Table_Name, 10);
|
||||||
|
/** Cache */
|
||||||
|
private static CCache<String, MHRPayroll> s_cacheValue = new CCache<String, MHRPayroll>(Table_Name+"_Value", 10);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get Payroll by Value
|
||||||
|
* @param ctx
|
||||||
|
* @param value
|
||||||
|
* @return payroll
|
||||||
|
*/
|
||||||
|
public static MHRPayroll forValue(Properties ctx, String value)
|
||||||
|
{
|
||||||
|
if (Util.isEmpty(value, true))
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
int AD_Client_ID = Env.getAD_Client_ID(ctx);
|
||||||
|
final String key = AD_Client_ID+"#"+value;
|
||||||
|
MHRPayroll payroll = s_cacheValue.get(key);
|
||||||
|
if (payroll != null)
|
||||||
|
{
|
||||||
|
return payroll;
|
||||||
|
}
|
||||||
|
|
||||||
|
final String whereClause = COLUMNNAME_Value+"=? AND AD_Client_ID IN (?,?)";
|
||||||
|
payroll = new Query(ctx, Table_Name, whereClause, null)
|
||||||
|
.setParameters(new Object[]{value, 0, AD_Client_ID})
|
||||||
|
.setOnlyActiveRecords(true)
|
||||||
|
.setOrderBy("AD_Client_ID DESC")
|
||||||
|
.first();
|
||||||
|
if (payroll != null)
|
||||||
|
{
|
||||||
|
s_cacheValue.put(key, payroll);
|
||||||
|
s_cache.put(payroll.get_ID(), payroll);
|
||||||
|
}
|
||||||
|
return payroll;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get Payroll by ID
|
||||||
|
* @param ctx
|
||||||
|
* @param HR_Payroll_ID
|
||||||
|
* @return payroll
|
||||||
|
*/
|
||||||
|
public static MHRPayroll get(Properties ctx, int HR_Payroll_ID)
|
||||||
|
{
|
||||||
|
if (HR_Payroll_ID <= 0)
|
||||||
|
return null;
|
||||||
|
//
|
||||||
|
MHRPayroll payroll = s_cache.get(HR_Payroll_ID);
|
||||||
|
if (payroll != null)
|
||||||
|
return payroll;
|
||||||
|
//
|
||||||
|
payroll = new MHRPayroll(ctx, HR_Payroll_ID, null);
|
||||||
|
if (payroll.get_ID() != HR_Payroll_ID)
|
||||||
|
{
|
||||||
|
payroll = null;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
s_cache.put(HR_Payroll_ID, payroll);
|
||||||
|
}
|
||||||
|
return payroll;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Standard Constructor
|
* Standard Constructor
|
||||||
* @param ctx context
|
* @param ctx context
|
||||||
|
@ -62,5 +139,4 @@ public class MHRPayroll extends X_HR_Payroll
|
||||||
setClientOrg(calendar);
|
setClientOrg(calendar);
|
||||||
//setC_Calendar_ID(calendar.getC_Calendar_ID());
|
//setC_Calendar_ID(calendar.getC_Calendar_ID());
|
||||||
} // HRPayroll
|
} // HRPayroll
|
||||||
|
|
||||||
} // MPayroll
|
} // MPayroll
|
||||||
|
|
|
@ -32,7 +32,10 @@ import org.compiere.util.DB;
|
||||||
*/
|
*/
|
||||||
public class MHRPayrollConcept extends X_HR_PayrollConcept
|
public class MHRPayrollConcept extends X_HR_PayrollConcept
|
||||||
{
|
{
|
||||||
private static final long serialVersionUID = 1L;
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private static final long serialVersionUID = -4335196239535511224L;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Standard Constructor
|
* Standard Constructor
|
||||||
|
@ -84,18 +87,13 @@ public class MHRPayrollConcept extends X_HR_PayrollConcept
|
||||||
return list.toArray(new MHRPayrollConcept[list.size()]);
|
return list.toArray(new MHRPayrollConcept[list.size()]);
|
||||||
}
|
}
|
||||||
|
|
||||||
public MHRConcept getConcept()
|
|
||||||
{
|
|
||||||
return new MHRConcept(getCtx(),this.getHR_Concept_ID(),get_TrxName());
|
|
||||||
}
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected boolean beforeSave(boolean newRecord)
|
protected boolean beforeSave(boolean newRecord)
|
||||||
{
|
{
|
||||||
if (getSeqNo() == 0)
|
if (getSeqNo() == 0)
|
||||||
{
|
{
|
||||||
String sql = "SELECT COALESCE(MAX(SeqNo),0) FROM HR_PayrollConcept WHERE HR_Payroll_ID=?";
|
String sql = "SELECT COALESCE(MAX(SeqNo),0) FROM HR_PayrollConcept WHERE HR_Payroll_ID=?";
|
||||||
int lastSeqNo = DB.getSQLValue(get_TrxName(), sql, getHR_Payroll_ID());
|
int lastSeqNo = DB.getSQLValueEx(get_TrxName(), sql, getHR_Payroll_ID());
|
||||||
if (lastSeqNo < 0)
|
if (lastSeqNo < 0)
|
||||||
lastSeqNo = 0;
|
lastSeqNo = 0;
|
||||||
setSeqNo(lastSeqNo + 10);
|
setSeqNo(lastSeqNo + 10);
|
||||||
|
|
|
@ -0,0 +1,58 @@
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
package org.eevolution.model;
|
||||||
|
|
||||||
|
import java.sql.ResultSet;
|
||||||
|
import java.util.Properties;
|
||||||
|
|
||||||
|
import org.compiere.util.CCache;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* HR Period
|
||||||
|
* @author Teo Sarca, www.arhipac.ro
|
||||||
|
*/
|
||||||
|
public class MHRPeriod extends X_HR_Period
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private static final long serialVersionUID = -7787966459848200539L;
|
||||||
|
|
||||||
|
private static CCache<Integer, MHRPeriod> s_cache = new CCache<Integer, MHRPeriod>(Table_Name, 20);
|
||||||
|
|
||||||
|
public static MHRPeriod get(Properties ctx, int HR_Period_ID)
|
||||||
|
{
|
||||||
|
if (HR_Period_ID <= 0)
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
//
|
||||||
|
MHRPeriod period = s_cache.get(HR_Period_ID);
|
||||||
|
if (period != null)
|
||||||
|
{
|
||||||
|
return period;
|
||||||
|
}
|
||||||
|
// Try Load
|
||||||
|
period = new MHRPeriod(ctx, HR_Period_ID, null);
|
||||||
|
if (period.get_ID() == HR_Period_ID)
|
||||||
|
{
|
||||||
|
s_cache.put(HR_Period_ID, period);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
period = null;
|
||||||
|
}
|
||||||
|
return period;
|
||||||
|
}
|
||||||
|
|
||||||
|
public MHRPeriod(Properties ctx, int HR_Period_ID, String trxName)
|
||||||
|
{
|
||||||
|
super(ctx, HR_Period_ID, trxName);
|
||||||
|
}
|
||||||
|
public MHRPeriod(Properties ctx, ResultSet rs, String trxName)
|
||||||
|
{
|
||||||
|
super(ctx, rs, trxName);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
File diff suppressed because it is too large
Load Diff
|
@ -30,10 +30,14 @@ import org.compiere.util.TimeUtil;
|
||||||
* MHRYear Year for a Payroll
|
* MHRYear Year for a Payroll
|
||||||
*
|
*
|
||||||
* @author Oscar Gómez Islas
|
* @author Oscar Gómez Islas
|
||||||
* @version $Id: HRYear.java,v 1.0 2007/04/25 ogomezi
|
|
||||||
*/
|
*/
|
||||||
public class MHRYear extends X_HR_Year
|
public class MHRYear extends X_HR_Year
|
||||||
{
|
{
|
||||||
|
/**
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
private static final long serialVersionUID = -7789699154024839462L;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Standard Constructor
|
* Standard Constructor
|
||||||
* @param ctx context
|
* @param ctx context
|
||||||
|
|
Loading…
Reference in New Issue