EchoTex_Payroll/HRM.DA/DA/Tax/IncomeTaxDA.cs

464 lines
24 KiB
C#
Raw Permalink Normal View History

2024-10-14 10:01:49 +06:00
using System;
using Ease.Core.Model;
using Ease.Core.DataAccess;
using HRM.BO;
using Ease.Core.Utility;
using System.Collections.Generic;
using System.Data;
namespace HRM.DA
{
internal class IncomeTaxDA
{
#region Constructor
private IncomeTaxDA()
{
}
#endregion
#region Insert function
internal static void Insert(TransactionContext tc, IncomeTax item, EnumIncomeTaxDataFrom saveto)
{
if (saveto != EnumIncomeTaxDataFrom.ProcessedData)
{
tc.ExecuteNonQuery(
"INSERT INTO %q ( employeeID, itemId, previousAmount, thisMonthAmount, projectedAmount, thisyeartotal, position, description, Itemcode, side)" +
" VALUES( %n, %n, %n, %n, %n, %n, %n, %s, %n, %n)", IncomeTaxDA.GetTableName(saveto),
item.EmployeeID, item.ItemID, item.PreviousAmount, item.ThisMonthAmount, item.ProjectedAmount,
item.TotalAmount, item.Position, item.Description, item.ItemGroup, item.Side);
}
else
{
tc.ExecuteNonQuery(
"INSERT INTO %q ( employeeID, itemId, totalAmount, taxParamID, position, description, Itemcode, side, UserID)" +
" VALUES(%n, %n, %n, %n, %n, %s, %n, %n, %n)", IncomeTaxDA.GetTableName(saveto),
item.EmployeeID, item.ItemID,
item.TotalAmount, item.TaxParameterID, item.Position,
item.Description, item.ItemGroup, item.Side, item.CreatedBy);
}
}
internal static void InsertforEdit(TransactionContext tc, IncomeTax item, EnumIncomeTaxDataFrom saveto)
{
if (saveto != EnumIncomeTaxDataFrom.ProcessedData)
{
tc.ExecuteNonQuery(
"INSERT INTO %q ( employeeID, itemId, previousAmount, thisMonthAmount, projectedAmount, thisyeartotal, position, description, Itemcode, side,ModifiedBy,ModifiedDate)" +
" VALUES( %n, %n, %n, %n, %n, %n, %n, %s, %n, %n,%n,%d)", IncomeTaxDA.GetTableName(saveto),
item.EmployeeID, item.ItemID, item.PreviousAmount, item.ThisMonthAmount, item.ProjectedAmount,
item.TotalAmount, item.Position, item.Description, item.ItemGroup, item.Side, item.ModifiedBy,
item.ModifiedDate);
}
else
{
tc.ExecuteNonQuery(
"INSERT INTO %q ( employeeID, itemId, totalAmount, taxParamID, position, description, Itemcode, side, UserID,ModifiedBy,ModifiedDate)" +
" VALUES(%n, %n, %n, %n, %n, %s, %n, %n, %n,%n,%d)", IncomeTaxDA.GetTableName(saveto),
item.EmployeeID, item.ItemID,
item.TotalAmount, item.TaxParameterID, item.Position,
item.Description, item.ItemGroup, item.Side, item.CreatedBy, item.ModifiedBy, item.ModifiedDate);
}
}
#endregion
#region Update function
internal static void Update(TransactionContext tc, IncomeTax item, EnumIncomeTaxDataFrom editto)
{
if (editto != EnumIncomeTaxDataFrom.ProcessedData)
{
string sql = SQLParser.MakeSQL(
"UPDATE %q SET previousAmount=%n, thisMonthAmount=%n, projectedAmount=%n, thisyeartotal=%n, position=%n, description=%s, side=%n, ModifiedBy=%n, ModifiedDate=%d" +
" WHERE EmployeeId=%n AND ItemCode=%n AND ItemId=%n", IncomeTaxDA.GetTableName(editto),
item.PreviousAmount, item.ThisMonthAmount, item.ProjectedAmount,
item.TotalAmount, item.Position,
item.Description, item.Side, DataReader.GetNullValue(item.ModifiedBy),
DataReader.GetNullValue(item.ModifiedDate), item.EmployeeID, item.ItemGroup, item.ItemID);
tc.ExecuteNonQuery(sql);
}
else
{
//tc.ExecuteNonQuery(
// "UPDATE %q SET totalAmount=%n, taxParamID=%n, position=%n, description=%s, side=%n, ModifiedBy=%n, ModifiedDate=%d" +
// " WHERE EmployeeId=%n AND Itemcode=%n AND ItemId=%n", IncomeTaxDA.GetTableName(editto),
// item.TotalAmount,
// item.TaxParameterID, item.Position, item.Description,
// item.Side, item.ModifiedBy, item.ModifiedDate,
// item.EmployeeID, item.ItemGroup, item.ItemID);
tc.ExecuteNonQuery(
"UPDATE %q SET totalAmount=%n, description=%s" +
" WHERE EmployeeId=%n AND Itemcode=%n AND ItemId=%n", IncomeTaxDA.GetTableName(editto),
item.TotalAmount,
item.Description,
item.EmployeeID, item.ItemGroup, item.ItemID);
}
}
internal static void UpdateTaxAmountFromSalary(TransactionContext tc, double nAmount, int employeeid)
{
tc.ExecuteNonQuery("UPDATE SalaryTempIT SET ThisMonthAmount=%n " +
" WHERE EmployeeId=%n AND Itemcode=%n AND ItemId=%n", nAmount,
employeeid, EnumIncomeTaxItemGroup.Tax_Deducted, (int)EnumIncomeTaxItemGroup.Tax_Deducted);
}
public static void UpdateOT(TransactionContext tc, OTProcess otProcess)
{
tc.ExecuteNonQuery("UPDATE INCOMETAXTEMP SET ThisMonthAmount=%n " +
" WHERE EmployeeId=%n AND Itemcode=%n AND ItemId=%n", otProcess.Amount,
otProcess.EmployeeID, (int)EnumIncomeTaxItemGroup.TimeCard, 1);
}
internal static void UndoOT(TransactionContext tc)
{
tc.ExecuteNonQuery("UPDATE INCOMETAXTEMP SET ThisMonthAmount=%n " +
" WHERE Itemcode=%n AND ItemId=%n", 0, (int)EnumIncomeTaxItemGroup.TimeCard, 1);
}
#endregion
#region Get Function
internal static IDataReader GetFromRunningYear(TransactionContext tc, int employeeId,
EnumIncomeTaxDataFrom dataFrom)
{
return tc.ExecuteReader("SELECT * FROM %q where employeeID=%n ORDER BY Position", GetTableName(dataFrom),
employeeId);
}
internal static IDataReader GetFromRunningYearByEmployeeIds(TransactionContext tc, string sEmployeeId,
EnumIncomeTaxDataFrom dataFrom)
{
return tc.ExecuteReader("SELECT * FROM %q where employeeID in (%q) ORDER BY Position", GetTableName(dataFrom),
sEmployeeId);
}
internal static bool hasTaxDataInSalaryTemp(TransactionContext tc, int employeeId)
{
object isprocessed = tc.ExecuteScalar(@"select SUM(cnt) from (
select count(*) cnt from SALARYTEMPIT WHERE EmployeeID =%n
UNION
select count(*) cnt from BONUSTEMPIT WHERE EmployeeID =%n ) a
", employeeId, employeeId);
if (isprocessed == DBNull.Value)
return false;
if (Convert.ToInt32(isprocessed) == 0) return false;
else return true;
}
internal static EnumIncomeTaxDataFrom TaxDataFrom(TransactionContext tc, int employeeId)
{
object isprocessed = tc.ExecuteScalar(@"if exists(select * from SALARYTEMPIT where EmployeeID =%n ) select 3
else begin if exists(select * from BONUSTEMPIT where EmployeeID =%n )
select 4 else select 2 end ", employeeId, employeeId);
if (isprocessed == DBNull.Value)
return EnumIncomeTaxDataFrom.ProcessTempData;
return (EnumIncomeTaxDataFrom) Convert.ToInt32(isprocessed);
}
internal static bool hasTaxDataInSalaryTemp(TransactionContext tc, string empids)
{
object isprocessed = tc.ExecuteScalar(@"select SUM(cnt) from(
select count(*) cnt from SALARYTEMPIT WHERE EmployeeID IN (%q)
UNION
select count(*) cnt from BONUSTEMPIT WHERE EmployeeID IN (%q) ) a
", empids, empids);
if (isprocessed == DBNull.Value)
return false;
if (Convert.ToInt32(isprocessed) == 0) return false;
else return true;
}
internal static DataSet GetByEmpID(TransactionContext tc, EnumIncomeTaxDataFrom dataFrom, int employeeId)
{
DataSet oIncomeTaxs = new DataSet();
try
{
//oIncomeTaxs = tc.ExecuteDataSet("SELECT STI.EMPLOYEEID,STI.ITEMCODE,STI.ItemId,STI.DESCRIPTION IncomeHead,STI.PREVIOUSAMOUNT PaidTillDate,STI.THISMONTHAMOUNT ThisMonth,STI.PROJECTEDAMOUNT Projected,STI.THISYEARTOTAL AmountPerAnnum,STI.POSITION,STI.SIDE"
// + " FROM SALARYTEMPIT STI WHERE STI.EMPLOYEEID=%n ORDER BY STI.SIDE", employeeId);
oIncomeTaxs = tc.ExecuteDataSet(
"SELECT * FROM (SELECT STI.EMPLOYEEID, STI.ITEMCODE, STI.ItemId, STI.DESCRIPTION IncomeHead, STI.PREVIOUSAMOUNT PaidTillDate,STI.THISMONTHAMOUNT ThisMonth,STI.PROJECTEDAMOUNT Projected,STI.THISYEARTOTAL AmountPerAnnum,STI.POSITION,STI.SIDE"
+ " FROM %q STI WHERE STI.EMPLOYEEID=%n AND side != 7) rowData1 LEFT OUTER join"
+ " (SELECT STI.ITEMCODE, (STI.PREVIOUSAMOUNT + STI.THISMONTHAMOUNT + STI.PROJECTEDAMOUNT) Exempted ,STI.SIDE"
+ " FROM %q STI WHERE STI.EMPLOYEEID=%n AND side = 7) rowData2 ON rowData1.ITEMCODE - 1 = rowData2.ITEMCODE AND rowData1.Side + 1 = rowData2.Side AND rowData1.Side = 6 ORDER BY rowData1.Position",
GetTableName(dataFrom), employeeId, GetTableName(dataFrom), employeeId);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
return oIncomeTaxs;
}
internal static DataSet GetByEmpIDTaxTemp(TransactionContext tc, int employeeId, int nTaxparamID)
{
DataSet oIncomeTaxs = new DataSet();
try
{
//oIncomeTaxs = tc.ExecuteDataSet("SELECT STI.EMPLOYEEID,STI.ITEMCODE,STI.ItemId,STI.DESCRIPTION IncomeHead,STI.PREVIOUSAMOUNT PaidTillDate,STI.THISMONTHAMOUNT ThisMonth,STI.PROJECTEDAMOUNT Projected,STI.THISYEARTOTAL AmountPerAnnum,STI.POSITION,STI.SIDE"
// + " FROM SALARYTEMPIT STI WHERE STI.EMPLOYEEID=%n ORDER BY STI.SIDE", employeeId);
oIncomeTaxs = tc.ExecuteDataSet("select * from IncomeTaxYearly where employeeID=%n and taxparamid=%n",
employeeId, nTaxparamID);
}
catch (Exception ex)
{
throw new Exception(ex.Message);
}
return oIncomeTaxs;
}
internal static DataSet GetEmpIDforOthTax(TransactionContext tc, EnumIncomeTaxDataFrom dataFrom, int employeeId)
{
DataSet oIncomeTaxs = new DataSet();
try
{
oIncomeTaxs = tc.ExecuteDataSet(
"SELECT * FROM (SELECT STI.EMPLOYEEID, STI.ITEMCODE, STI.ItemId, STI.DESCRIPTION IncomeHead, STI.PREVIOUSAMOUNT PaidTillDate,STI.THISMONTHAMOUNT ThisMonth,STI.PROJECTEDAMOUNT Projected,STI.THISYEARTOTAL AmountPerAnnum,STI.POSITION,STI.SIDE"
+ " FROM %q STI WHERE STI.EMPLOYEEID=%n AND side != 7) rowData1 LEFT OUTER join"
+ " (SELECT STI.ITEMCODE, (STI.PREVIOUSAMOUNT + STI.THISMONTHAMOUNT + STI.PROJECTEDAMOUNT) Exempted ,STI.SIDE"
+ " FROM %q STI WHERE STI.EMPLOYEEID=%n AND side = 7) rowData2 ON rowData1.ITEMCODE - 1 = rowData2.ITEMCODE AND rowData1.Side + 1 = rowData2.Side AND rowData1.Side = 6 ORDER BY rowData1.Position",
GetTableName(dataFrom), employeeId, GetTableName(dataFrom), employeeId);
}
//rowData1.ItemCode desc
catch (Exception ex)
{
throw new Exception(ex.Message);
}
return oIncomeTaxs;
}
internal static void DeleteTempData(TransactionContext tc, EnumIncomeTaxDataFrom datafor, int nEmpID, EnumIncomeTaxItemGroup ItemGroup, int ItemID)
{
string sSQL = SQLParser.MakeSQL("DELETE FROM %q WHERE employeeID=%n and itemId=%n and Itemcode=%n", GetTableName(datafor), nEmpID, ItemID, ItemGroup);
tc.ExecuteNonQuery(sSQL);
}
internal static IDataReader Get(TransactionContext tc, EnumIncomeTaxDataFrom dataFrom, string sEmpIDs, int nTaxParamID)
{
if (EnumIncomeTaxDataFrom.SalaryITTempData == dataFrom || EnumIncomeTaxDataFrom.ProcessTempData == dataFrom)
{
string sql = SQLParser.MakeSQL("SELECT * FROM %q where employeeID IN(%q) ORDER BY Position,EMPLOYEEID", GetTableName(dataFrom), sEmpIDs);
return tc.ExecuteReader(sql);
}
else
{
string sql = SQLParser.MakeSQL("SELECT * FROM %q where employeeID IN(%q) and TAXPARAMID=%n ORDER BY EMPLOYEEID, Position", GetTableName(dataFrom), sEmpIDs, nTaxParamID);
return tc.ExecuteReader(sql);
}
}
internal static IDataReader Get(TransactionContext tc, EnumIncomeTaxDataFrom dataFrom, int payrollTypeID)
{
// do not change order by items, many function are using this order-by
//string sql = SQLParser.MakeSQL("SELECT %q.* FROM %q, Employee where Employee.EmployeeId=%q.EmployeeID and "
// + " Employee.PayrollTypeid=%n Order by Employee.EmployeeNo, position",
// GetTableName(dataFrom), GetTableName(dataFrom), GetTableName(dataFrom), payrollTypeID);
string sql = SQLParser.MakeSQL("SELECT %q.* FROM %q JOIN Employee ON Employee.EmployeeId=%q.EmployeeID where "
+ " Employee.PayrollTypeid=%n Order by Employee.EmployeeNo, position",
GetTableName(dataFrom), GetTableName(dataFrom), GetTableName(dataFrom), payrollTypeID);
return tc.ExecuteReader(sql);
}
internal static IDataReader Get(TransactionContext tc, EnumIncomeTaxDataFrom dataFrom, string empids,
int payrollTypeID, int? taxparamid )
{
if (dataFrom == EnumIncomeTaxDataFrom.ProcessedData && taxparamid == null)
throw new Exception("tax parameterid can't be null");
string sSql = SQLParser.MakeSQL(@"SELECT i.* FROM INCOMETAXTEMP i
INNER JOIN EMPLOYEE e ON e.EMPLOYEEID=i.EMPLOYEEID
WHERE e.PAYROLLTYPEID=%n AND i.EMPLOYEEID in (%q) ORDER BY i.ITEMID desc",
payrollTypeID, empids);
return tc.ExecuteReader(sSql);
}
internal static IDataReader Get(TransactionContext tc, EnumIncomeTaxDataFrom dataFrom, int nEmpID,
int nTaxParamID)
{
if (EnumIncomeTaxDataFrom.BonusITTempData == dataFrom || EnumIncomeTaxDataFrom.SalaryITTempData == dataFrom || EnumIncomeTaxDataFrom.ProcessTempData == dataFrom)
{
string sql = SQLParser.MakeSQL("SELECT * FROM %q where employeeID=%n ORDER BY Position",
GetTableName(dataFrom), nEmpID);
return tc.ExecuteReader("SELECT * FROM %q where employeeID=%n ORDER BY Position",
GetTableName(dataFrom), nEmpID);
}
else
{
string sql =
SQLParser.MakeSQL("SELECT * FROM %q where employeeID=%n and TAXPARAMID=%n ORDER BY Position",
GetTableName(dataFrom), nEmpID, nTaxParamID);
return tc.ExecuteReader("SELECT * FROM %q where employeeID=%n and TAXPARAMID=%n ORDER BY Position",
GetTableName(dataFrom), nEmpID, nTaxParamID);
}
}
internal static IDataReader Get(TransactionContext tc, EnumIncomeTaxDataFrom dataFrom, int nEmpID,
EnumIncomeTaxItemGroup groupCode, int itemID)
{
return tc.ExecuteReader("SELECT * FROM %q where EmployeeID=%n AND ItemCode=%n AND itemId=%n",
GetTableName(dataFrom),
nEmpID, groupCode, itemID);
}
internal static IDataReader Get(TransactionContext tc, EnumIncomeTaxDataFrom dataFrom, string sEmpIds,
EnumIncomeTaxItemGroup groupCode, int itemID)
{
return tc.ExecuteReader("SELECT * FROM %q where EmployeeID IN (%q) AND ItemCode=%n AND itemId=%n",
GetTableName(dataFrom),
sEmpIds, groupCode, itemID);
}
internal static IDataReader GetPrvYear(TransactionContext tc,
EnumIncomeTaxDataFrom dataFrom, int parameterId,
EnumIncomeTaxItemGroup groupCode, int ItemId)
{
string sql = SQLParser.MakeSQL(@"SELECT * FROM %q where taxparamid=%n and ItemCode=%n, itemId=%n",
GetTableName(dataFrom),
parameterId, groupCode, ItemId);
return tc.ExecuteReader(sql);
}
internal static IDataReader GetPrvYear(TransactionContext tc, int parameterId, int payrollTypeID)
{
// Please do not change/remove Order by Items, many function has been written on this order by.
return tc.ExecuteReader("SELECT %q.* FROM %q, Employee where Employee.EmployeeId=%q.EmployeeID and "
+ " Employee.PayrollTypeid=%n and taxparamid=%n Order by Employee.EmployeeNo, position",
GetTableName(EnumIncomeTaxDataFrom.ProcessedData), GetTableName(EnumIncomeTaxDataFrom.ProcessedData),
GetTableName(EnumIncomeTaxDataFrom.ProcessedData), payrollTypeID, parameterId);
}
public static string GetTableName(EnumIncomeTaxDataFrom dataFrom)
{
string tableName = "INCOMETAXTEMP";
switch (dataFrom)
{
case EnumIncomeTaxDataFrom.ProcessedData:
tableName = "INCOMETAXYEARLY";
break;
case EnumIncomeTaxDataFrom.ProcessTempData:
tableName = "INCOMETAXTEMP";
break;
case EnumIncomeTaxDataFrom.SalaryITTempData:
tableName = "SALARYTEMPIT";
break;
case EnumIncomeTaxDataFrom.BonusITTempData:
tableName = "BONUSTEMPIT";
break;
default:
break;
}
return tableName;
}
#endregion
#region Delete function
internal static void Delete(TransactionContext tc, int nEmpID, EnumIncomeTaxDataFrom datafor,
EnumIncomeTaxItemGroup ItemGroup, int ItemID)
{
tc.ExecuteNonQuery("DELETE FROM %q WHERE employeeID=%n and itemId=%n and Itemcode=%n",
GetTableName(datafor), nEmpID, ItemID, ItemGroup);
}
internal static void Delete(TransactionContext tc, int nEmpID, EnumIncomeTaxDataFrom deletefrom)
{
tc.ExecuteNonQuery("DELETE FROM %q WHERE employeeID=%n ", GetTableName(deletefrom), nEmpID);
}
internal static void Delete(TransactionContext tc, string EmpIDs, EnumIncomeTaxDataFrom deletefrom)
{
tc.ExecuteNonQuery("DELETE FROM %q WHERE employeeID in (%q) ", GetTableName(deletefrom), EmpIDs);
}
internal static void DeleteYearlyData(TransactionContext tc, int nTaxParamID, int payrollTypeID)
{
tc.ExecuteNonQuery(
"DELETE FROM %q WHERE taxParamID=%n AND EmployeeID In ( Select employeeID From Employee Where PayrollTypeID=%n)",
GetTableName(EnumIncomeTaxDataFrom.ProcessedData), nTaxParamID, payrollTypeID);
}
internal static void DeleteTaxTempData(TransactionContext tc, EnumIncomeTaxDataFrom datafrom, int payrollTypeID)
{
tc.ExecuteNonQuery(
"DELETE FROM %q WHERE EmployeeID In ( Select employeeID From Employee Where PayrollTypeID=%n)",
GetTableName(datafrom), payrollTypeID);
}
internal static void DeleteCurrYearData(TransactionContext tc, int payrollTypeID)
{
tc.ExecuteNonQuery(
"DELETE FROM %q WHERE EmployeeID In ( Select employeeID From Employee Where PayrollTypeID=%n)",
GetTableName(EnumIncomeTaxDataFrom.ProcessTempData), payrollTypeID);
}
internal static void DeleteYearlyData(TransactionContext tc, int nTaxParamID, EnumIncomeTaxDataFrom datafor,
int nEmpID)
{
tc.ExecuteNonQuery("DELETE FROM %q WHERE TaxParamID=%n and employeeID=%n ", GetTableName(datafor),
nTaxParamID, nEmpID);
}
internal static void DeleteYearlyData(TransactionContext tc, int nTaxParamID, EnumIncomeTaxDataFrom datafor,
int nEmpID, EnumIncomeTaxItemGroup ItemGroup, int ItemID)
{
tc.ExecuteNonQuery("DELETE FROM %q WHERE TaxParamID=%n and employeeID=%n and itemId=%n and Itemcode=%n",
GetTableName(datafor), nTaxParamID, nEmpID, ItemID, ItemGroup);
}
internal static void DeleteAll(TransactionContext tc)
{
tc.ExecuteNonQuery("DELETE FROM INCOMETAXTEMP");
}
internal static IDataReader GetByYear(TransactionContext tc, int parameterId, EnumIncomeTaxDataFrom dataFrom,
int payrollTypeID)
{
// Please do not change/remove Order by Items, many function has been written on this order by.
return tc.ExecuteReader("SELECT %q.* FROM %q, Employee where Employee.EmployeeId=%q.EmployeeID and "
+ " Employee.PayrollTypeid=%n Order by Employee.EmployeeNo, position",
GetTableName(dataFrom), GetTableName(dataFrom), GetTableName(dataFrom), payrollTypeID);
}
internal static DataSet GetTaxRefreshedData(TransactionContext tc, DateTime fromDate, DateTime toDate)
{
// Please do not change/remove Order by Items, many function has been written on this order by.
// return tc.ExecuteDataSet(@" SELECT s.EMPLOYEEID, sd.ITEMCODE, sd.ITEMID, sum(changedAmount) AMOUNT, 'salary' DTYPE FROM SALARYMONTHLY s, salarymonthlydetail sd WHERE s.SALARYMONTHLYID=sd.SALARYMONTHLYID and
// s.SALARYMONTH between %d AND %d AND sd.ITEMGROUP =1 GROUP BY s.EMPLOYEEID, sd.ITEMID , sd.ITEMCODE
// union
// SELECT s.EMPLOYEEID, sd.ITEMCODE, sd.ITEMID, sum(changedAmount) AMOUNT, 'tax' FROM SALARYMONTHLY s, salarymonthlydetail sd WHERE s.SALARYMONTHLYID=sd.SALARYMONTHLYID and
// s.SALARYMONTH between %d AND %d AND sd.ITEMGROUP =3 AND (itemid=-129 OR itemid=-128) GROUP BY s.EMPLOYEEID, sd.ITEMID , sd.ITEMCODE
// union
// SELECT b.EMPLOYEEID, 0, b.BONUSID, sum(b.CHANGEBONUSAMOUNT) AMOUNT, 'bonus' FROM BONUSPROCESSDETAIL b WHERE b.DISBURSEDATE between %d AND %d GROUP BY b.EMPLOYEEID, b.BONUSID ORDER BY EMPLOYEEID
//
// ", fromDate,toDate,fromDate,toDate,fromDate,toDate);
return tc.ExecuteDataSet(
@" SELECT s.EMPLOYEEID, sd.ITEMCODE, sd.ITEMID, sum(changedAmount) AMOUNT, 'salary' DTYPE FROM SALARYMONTHLY s, salarymonthlydetail sd WHERE s.SALARYMONTHLYID=sd.SALARYMONTHLYID and
s.SALARYMONTH between %d AND %d AND sd.ITEMGROUP =1 GROUP BY s.EMPLOYEEID, sd.ITEMID , sd.ITEMCODE
union
SELECT s.EMPLOYEEID, sd.ITEMCODE, sd.ITEMID, sum(changedAmount) AMOUNT, 'tax' FROM SALARYMONTHLY s, salarymonthlydetail sd WHERE s.SALARYMONTHLYID=sd.SALARYMONTHLYID and
s.SALARYMONTH between %d AND %d AND sd.ITEMGROUP =3 AND (ITEMCODE=-129 OR ITEMCODE=-128) GROUP BY s.EMPLOYEEID, sd.ITEMID , sd.ITEMCODE
union
SELECT b.EMPLOYEEID, 0, b.BONUSID, sum(b.CHANGEBONUSAMOUNT) AMOUNT, 'bonus' FROM BONUSPROCESSDETAIL b WHERE b.DISBURSEDATE between %d AND %d GROUP BY b.EMPLOYEEID, b.BONUSID ORDER BY EMPLOYEEID
", fromDate, toDate, fromDate, toDate, fromDate, toDate);
}
#endregion
}
}