using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Data; using Ease.CoreV35.DataAccess; using Payroll.BO; namespace Payroll.Service { public class MiscellaneousDatasetDA { internal static IDataReader GetByGlobalID(TransactionContext tc, string GPDPID) { string sql = SQLParser.MakeSQL(@"Select EmployeeID From Employee Where GlobalID = %s", GPDPID); return tc.ExecuteReader(sql); } internal static DataSet GetEmpGrossPay(TransactionContext tc, DateTime dSMonthDate, string sEmpID) { DataSet rootDataset = new DataSet(); DataSet tempdataset = new DataSet(); try { string queryGross = SQLParser.MakeSQL(@"select E.EmployeeNo, E.Name,Sum(A.amount) as GrossAmount,a.LOCATIONID,E.DESIGNATIONID,E.DEPARTMENTID from( select S.EmployeeID, Sum(sd.changedamount) as Amount,S.LOCATIONID from SALARYMONTHLY S, SalaryMonthlyDetail Sd where S.SalaryMonthlyID=Sd.SalaryMonthlyID AND S.SalaryMonth=%d and Sd.ItemGroup IN (1, 8) AND S.EmployeeID IN(%q) group by S.EmployeeID,S.LOCATIONID UNION select S.EmployeeID, -Sum(sd.changedamount) as Amount,S.LOCATIONID from SALARYMONTHLY S,SalaryMonthlyDetail Sd where S.SalaryMonthlyID=Sd.SalaryMonthlyID AND S.SalaryMonth=%d and Sd.ItemGroup IN (2) AND S.EmployeeID IN(%q) group by S.EmployeeID,S.LOCATIONID) A, Employee E where A.EmployeeID = E.EmployeeID group by E.EmployeeNo, E.Name,a.LOCATIONID,E.DESIGNATIONID,E.DEPARTMENTID", dSMonthDate, sEmpID, dSMonthDate, sEmpID); tempdataset = tc.ExecuteDataSet(queryGross); tempdataset.Tables[0].TableName = "TotalGross"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); string queryTotalDeduction = SQLParser.MakeSQL(@"select E.EmployeeNo, E.Name, Sum(A.amount) as DeductionAmount,A.LOCATIONID,E.DESIGNATIONID,E.DEPARTMENTID from ( select S.EmployeeID, Sum(sd.changedamount) as Amount,S.LOCATIONID from SALARYMONTHLY S,SalaryMonthlyDetail Sd where S.SalaryMonthlyID=Sd.SalaryMonthlyID AND S.SalaryMonth=%d and Sd.ItemGroup IN (2,3) AND S.EmployeeID IN(%q) group by S.EmployeeID,S.LOCATIONID)A, Employee E where A.EmployeeID = E.EmployeeID group by E.EmployeeNo, E.Name,A.LOCATIONID,E.DESIGNATIONID, E.DEPARTMENTID ", dSMonthDate, sEmpID); tempdataset = tc.ExecuteDataSet(queryTotalDeduction); tempdataset.Tables[0].TableName = "TotalDeduction"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); } catch (Exception ex) { throw new Exception(ex.Message); } return rootDataset; } internal static DataSet GetTotalOPI(TransactionContext tc, string oPIItem, DateTime _SalaryMonth, string sEmpID) { DataSet oTotalOPI = new DataSet(); string sQuary = SQLParser.MakeSQL("SELECT e.EmployeeNo,e.DEPARTMENTID, e.Name as EmpName," + " e.DESIGNATIONID,e.BRANCHID, Sum(opdi.NetAmount) as OPIAmount" + " FROM Employee e, " + " OPIItem oi, OPIProcess op, OPIProcessDetail opd, OPIProcessDetailItem opdi " + " WHERE op.OPIMonth >= %d AND op.OPIMonth <= %d " + " AND e.EmployeeId IN(%q) AND op.OPIProcessID = opd.OPIProcessID" + " AND e.EmployeeId = opd.EmployeeId AND opd.OPIProcessDetailId = opdi.OPIProcessDetailId" + " AND oi.OPIItemId = opdi.OPIItemId " + " GROUP BY e.EmployeeId, e.EmployeeNo, e.Name,e.DEPARTMENTID,e.DESIGNATIONID," + " e.BRANCHID ORDER BY e.EmployeeNo", GlobalFunctions.FirstDateOfMonth(_SalaryMonth), GlobalFunctions.LastDateOfMonth(_SalaryMonth), sEmpID, oPIItem); oTotalOPI = tc.ExecuteDataSet(sQuary); return oTotalOPI; } internal static DataSet GetEmpDeduction(TransactionContext tc, DateTime dSMonthDate, string sEmpID) { DataSet rootDataset = new DataSet(); DataSet tempdataset = new DataSet(); try { string deductItem = SQLParser.MakeSQL("select A.EmployeeNo,A.CIFNo, A.Name,A.GName,A.GCode,A.SequenceNo,A.DName,A.Description, " + " SUM(A.changedamount) Amount,A.Department,A.Branch,A.DEPARTMENTID,A.ITEMCODE,A.ITEMGROUP,A.ITEMID " + " from (" + " select S.EmployeeID, E.EmployeeNo, E.Name,E.GLOBALID as CIFNo, " + " sd.ItemGroup,sd.ItemCode, sd.ItemID, sd.Description,sd.Position, " + " sd.changedamount,G.DESCRIPTION as GName,G.Code as GCode,G.SequenceNo,D.Name as DName ," + " DE.DESCRIPTION as Department,L.DESCRIPTION as Branch,DE.DEPARTMENTID" + " from Grades G,DESIGNATION D,Employee E, SALARYMONTHLY S, SalaryMonthlyDetail Sd,DEPARTMENT as DE," + " LOCATION as L " + " where G.GradeID= E.GradeID AND D.DESIGNATIONID=E.DESIGNATIONID " + " AND E.employeeID=S.EmployeeID AND S.SalaryMonthlyID=Sd.SalaryMonthlyID " + " AND S.SalaryMonth=%d and Sd.ItemGroup=3 " + " AND L.LOCATIONID=S.LOCATIONID and DE.DEPARTMENTID=S.DEPARTMENTID" + " AND S.EmployeeID IN(%q) " + " union " + " select S.EmployeeID, E.EmployeeNo, E.Name, sd.ItemGroup,sd.ItemCode,E.GLOBALID as CIFNo, " + " sd.ItemID, sd.Description,sd.Position, -sd.changedamount,G.DESCRIPTION as GName," + " G.Code as GCode,G.sequenceNo,D.Name as DName,DE.DESCRIPTION as Department,L.DESCRIPTION as Branch,DE.DEPARTMENTID " + " from Grades G,DESIGNATION D,Employee E, " + " SALARYMONTHLY S, SalaryMonthlyDetail Sd,DEPARTMENT as DE,LOCATION as L " + " where G.GradeID= E.GradeID " + " AND D.DESIGNATIONID=E.DESIGNATIONID AND E.employeeID=S.EmployeeID " + " AND DE.DEPARTMENTID=S.DEPARTMENTID AND L.LOCATIONID=S.LOCATIONID " + " AND S.SalaryMonthlyID=Sd.SalaryMonthlyID AND S.SalaryMonth=%d" + " and Sd.ItemGroup=2 AND S.EmployeeID IN(%q) " + " ) A " + " group by A.EmployeeID, A.EmployeeNo, A.Name,A.GName,A.SequenceNo,A.GCode,A.CIFNo," + " A.DName, A.ItemCode, A.ItemID,A.ITEMGROUP, A.Description,A.Position ,A.Department,A.Branch,A.DEPARTMENTID " + " order by A.EmployeeNo", dSMonthDate, sEmpID, dSMonthDate, sEmpID); tempdataset = tc.ExecuteDataSet(deductItem); tempdataset.Tables[0].TableName = "DeductItem"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); string query6 = SQLParser.MakeSQL("select E.EmployeeNo, E.Name,A.GName,A.GCode,A.SequenceNo,A.DName,A.Department," + " 'Total Deduction' as Description, Sum(A.amount) as amount,A.Branch,A.DEPARTMENTID " + " ,E.GLOBALID as CIFNo from" + " ( select S.EmployeeID, Sum(sd.changedamount) as Amount,G.DESCRIPTION as GName," + " G.Code as GCode,G.SequenceNo,D.Name as DName,DE.DEPARTMENTID," + " DE.DESCRIPTION as Department,L.DESCRIPTION as Branch " + " from DEPARTMENT DE,LOCATION L," + " GRADES G,DESIGNATION D,SALARYMONTHLY S,SalaryMonthlyDetail Sd" + " where S.SalaryMonthlyID=Sd.SalaryMonthlyID AND S.SalaryMonth=%d" + " AND S.DEPARTMENTID=DE.DEPARTMENTID AND S.LOCATIONID = L.LOCATIONID" + " AND G.GRADEID=S.GRADEID AND D.DESIGNATIONID=S.DESIGNATIONID " + " and Sd.ItemGroup IN (2,3) AND S.EmployeeID IN(%q)" + " group by S.EmployeeID,G.DESCRIPTION,G.SequenceNo,G.Code,D.Name,DE.DESCRIPTION," + " L.DESCRIPTION,DE.DEPARTMENTID ) A, Employee E " + " where A.EmployeeID = E.EmployeeID " + " group by E.EmployeeNo, E.Name,A.GName,A.SequenceNo,A.GCode,A.DName ,A.Department," + " A.Branch,A.DEPARTMENTID,E.GLOBALID order by E.EmployeeNo", dSMonthDate, sEmpID); tempdataset = tc.ExecuteDataSet(query6); tempdataset.Tables[0].TableName = "TotalDeduction"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); } catch (Exception ex) { throw new Exception(ex.Message); } return rootDataset; } internal static DataSet GetCashChequePaymentReport(TransactionContext tc, DateTime SMonth, string PaymentMode) { DataSet paymentDataset = new DataSet(); try { if (PaymentMode == "Cash Payment") { string queryCashPayment = SQLParser.MakeSQL(@"SELECT e.EMPLOYEENO, e.[NAME], dept.[DESCRIPTION] Department, desig.[NAME] Designation, smd.changedAmount Amount FROM SALARYMONTHLY s INNER JOIN EMPLOYEE e ON e.EMPLOYEEID=s.EMPLOYEEID INNER JOIN SALARYMONTHLYDETAIL smd ON s.SALARYMONTHLYID=smd.SALARYMONTHLYID LEFT JOIN DEPARTMENT dept ON dept.DEPARTMENTID=e.DEPARTMENTID LEFT JOIN DESIGNATION desig ON desig.DESIGNATIONID=e.DESIGNATIONID WHERE s.SalaryMonth=%d AND smd.ITEMGROUP=5 AND smd.ITEMID=-132 AND s.ACCOUNTNO<>'' Order BY e.EMPLOYEENO ASC", SMonth); paymentDataset = tc.ExecuteDataSet(queryCashPayment); } else { string queryChequePayment = SQLParser.MakeSQL(@"SELECT e.EMPLOYEENO, e.[NAME], dept.[DESCRIPTION] Department, s.rccode Designation, smd.changedAmount Amount FROM SALARYMONTHLY s INNER JOIN EMPLOYEE e ON e.EMPLOYEEID=s.EMPLOYEEID INNER JOIN SALARYMONTHLYDETAIL smd ON s.SALARYMONTHLYID=smd.SALARYMONTHLYID LEFT JOIN DEPARTMENT dept ON dept.DEPARTMENTID=e.DEPARTMENTID WHERE s.SalaryMonth=%d AND smd.ITEMGROUP=5 AND smd.ITEMID=-132 AND s.ACCOUNTNO='' Order BY e.EMPLOYEENO ASC", SMonth); paymentDataset = tc.ExecuteDataSet(queryChequePayment); } } catch (Exception ex) { throw new Exception(ex.Message); } return paymentDataset; } internal static DataSet GetCashChequePaymentReportBonus(TransactionContext tc, DateTime SMonth, string PaymentMode) { DataSet paymentDataset = new DataSet(); try { string queryChequePayment = SQLParser.MakeSQL(@"SELECT e.EMPLOYEENO, e.[NAME], dept.[DESCRIPTION] Department, '' Designation, bpd.BonusAmount-bpd.TaxAmount Amount FROM BONUSPROCESS bp INNER JOIN bonusprocessdetail bpd ON bp.BONUSPROCESSID=bpd.BonusProcessID INNER JOIN EMPLOYEE e ON e.EMPLOYEEID=bpd.EMPLOYEEID LEFT JOIN DEPARTMENT dept ON dept.DEPARTMENTID=e.DEPARTMENTID WHERE bp.BONUSID=1 AND bp.DISBURSEDATE BETWEEN %d AND %d AND e.ACCOUNTNO='' Order BY e.EMPLOYEENO ASC", GlobalFunctions.FirstDateOfMonth(SMonth), GlobalFunctions.LastDateOfMonth(SMonth)); paymentDataset = tc.ExecuteDataSet(queryChequePayment); } catch (Exception ex) { throw new Exception(ex.Message); } return paymentDataset; } internal static DataSet GetBranchWiseSalary(TransactionContext tc, DateTime dSMonthDate, string sEmpID) { DataSet rootDataset = new DataSet(); DataSet tempdataset = new DataSet(); try { string queryGross = SQLParser.MakeSQL(@"Select Sum(A.amount) as GrossAmount,E.DEPARTMENTID , A.LOCATIONID from( select S.EmployeeID,Sum(sd.changedamount) as Amount,S.LOCATIONID from SALARYMONTHLY S, SalaryMonthlyDetail Sd where S.SalaryMonthlyID=Sd.SalaryMonthlyID AND S.SalaryMonth=%d and Sd.ItemGroup IN (1, 8) AND S.EmployeeID IN(%q) group by S.EmployeeID,S.LOCATIONID UNION select S.EmployeeID, -Sum(sd.changedamount) as Amount,S.LOCATIONID from SALARYMONTHLY S,SalaryMonthlyDetail Sd where S.SalaryMonthlyID=Sd.SalaryMonthlyID AND S.SalaryMonth=%d and Sd.ItemGroup IN (2) AND S.EmployeeID IN(%q) group by S.EmployeeID,S.LOCATIONID) A, Employee E where A.EmployeeID = E.EmployeeID group by A.LOCATIONID,E.DEPARTMENTID order by A.LocationID,E.DEPARTMENTID", dSMonthDate, sEmpID, dSMonthDate, sEmpID); tempdataset = tc.ExecuteDataSet(queryGross); tempdataset.Tables[0].TableName = "TotalGross"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); string sFestiveBonus = SQLParser.MakeSQL(@"Select Sum(A.amount) as FestivalBonus, E.DEPARTMENTID, A.LOCATIONID from( select S.EmployeeID, Sum(sd.changedamount) as Amount,S.LOCATIONID from SALARYMONTHLY S, SalaryMonthlyDetail Sd where S.SalaryMonthlyID=Sd.SalaryMonthlyID AND S.SalaryMonth=%d and Sd.ItemGroup IN (1, 8) and ITEMID in (4) AND ITEMCODE in(-113) AND S.EmployeeID IN(%q) group by S.EmployeeID,S.LOCATIONID UNION select S.EmployeeID, -Sum(sd.changedamount) as Amount,S.LOCATIONID from SALARYMONTHLY S,SalaryMonthlyDetail Sd where S.SalaryMonthlyID=Sd.SalaryMonthlyID AND S.SalaryMonth=%d and Sd.ItemGroup IN (2) AND ITEMID in (4) AND ITEMCODE in(-113) AND S.EmployeeID IN(%q) group by S.EmployeeID,S.LOCATIONID) A, Employee E where A.EmployeeID = E.EmployeeID group by A.LOCATIONID,E.DEPARTMENTID order by A.LOCATIONID,E.DEPARTMENTID", dSMonthDate, sEmpID, dSMonthDate, sEmpID); tempdataset = tc.ExecuteDataSet(sFestiveBonus); tempdataset.Tables[0].TableName = "FestivalBonus"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); string sPerformanceBonus = SQLParser.MakeSQL(@"Select Sum(A.amount) as PerformBonus,E.DEPARTMENTID, A.LOCATIONID from( select S.EmployeeID, Sum(sd.changedamount) as Amount,S.LOCATIONID from SALARYMONTHLY S, SalaryMonthlyDetail Sd where S.SalaryMonthlyID=Sd.SalaryMonthlyID AND S.SalaryMonth=%d and Sd.ItemGroup IN (1, 8) and ITEMID in (4) AND ITEMCODE in(-113) AND S.EmployeeID IN(%q) group by S.EmployeeID,S.LOCATIONID UNION select S.EmployeeID, -Sum(sd.changedamount) as Amount,S.LOCATIONID from SALARYMONTHLY S,SalaryMonthlyDetail Sd where S.SalaryMonthlyID=Sd.SalaryMonthlyID AND S.SalaryMonth=%d and Sd.ItemGroup IN (2) AND ITEMID in (4) AND ITEMCODE in(-113) AND S.EmployeeID IN(%q) group by S.EmployeeID,S.LOCATIONID) A, Employee E where A.EmployeeID = E.EmployeeID group by A.LOCATIONID,E.DEPARTMENTID order by A.LOCATIONID,E.DEPARTMENTID", dSMonthDate, sEmpID, dSMonthDate, sEmpID); tempdataset = tc.ExecuteDataSet(sPerformanceBonus); tempdataset.Tables[0].TableName = "PerformanceBonus"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); string queryTotalDeduction = SQLParser.MakeSQL(@"select A.LOCATIONID, Sum(A.amount) as DeductionAmount, E.DEPARTMENTID from ( select S.EmployeeID, Sum(sd.changedamount) as Amount,S.LOCATIONID from SALARYMONTHLY S,SalaryMonthlyDetail Sd where S.SalaryMonthlyID=Sd.SalaryMonthlyID AND S.SalaryMonth=%d and Sd.ItemGroup IN (2,3) AND S.EmployeeID IN(%q) group by S.EmployeeID,S.LOCATIONID)A, Employee E where A.EmployeeID = E.EmployeeID group by A.LOCATIONID,E.DEPARTMENTID order by A.LOCATIONID,E.DEPARTMENTID", dSMonthDate, sEmpID); tempdataset = tc.ExecuteDataSet(queryTotalDeduction); tempdataset.Tables[0].TableName = "TotalDeduction"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); } catch (Exception ex) { throw new Exception(ex.Message); } return rootDataset; } internal static DataSet GetCCWiseSalaryDetails(TransactionContext tc, DateTime dSMonthDate, string sEmpID) { DataSet rootDataset = new DataSet(); DataSet tempdataset = new DataSet(); try { string sSQL = SQLParser.MakeSQL(@"select A.EmployeeNo, A.Name,A.GName,A.DName,A.GCode,A.CRGDes,A.SequenceNO, A.Description, SUM(A.amonut) amount,A.PERCENTAGE,A.DEPARTMENTID,A.LocationID from (select S.EmployeeID, E.EmployeeNo, E.Name, sd.ItemGroup,sd.ItemCode, sd.ItemID, sd.Description,sd.Position, sd.changedamount*SEMCC.PERCENTAGE/100 as amonut, SEMCC.PERCENTAGE, G.DESCRIPTION as GName,D.Name as DName,G.Code as GCode,G.SequenceNo, E.DEPARTMENTID,E.LocationID, CC.DESCRIPTION as CRGDes from Grades G,CRG as CC,SALARYEMPCOSTCENTER as SEMCC , DESIGNATION D,Employee E, SALARYMONTHLY S, SalaryMonthlyDetail Sd where G.GradeID= E.GradeID AND S.EMPLOYEEID=SEMCC.EMPLOYEEID AND CC.CRGID=SEMCC.COSTCENTERID AND D.DESIGNATIONID=E.DESIGNATIONID AND E.employeeID=S.EmployeeID AND S.SalaryMonthlyID=Sd.SalaryMonthlyID AND SD.SALARYMONTHLYID=SEMCC.SALARYMONTHLYID AND S.SalaryMonth=%d and Sd.ItemGroup in(8,4) AND sd.ItemCode not in(-133) AND S.EmployeeID IN(%q) union select S.EmployeeID, E.EmployeeNo, E.Name, sd.ItemGroup,sd.ItemCode, sd.ItemID, sd.Description,sd.Position,sd.changedamount*SEMCC.PERCENTAGE/100 as amonut, SEMCC.PERCENTAGE, G.DESCRIPTION as GName, D.Name as DName,G.Code as GCode,G.SequenceNo, E.DEPARTMENTID,E.LocationID, CC.DESCRIPTION as CRGDes from Grades G,CRG as CC, SALARYEMPCOSTCENTER as SEMCC, DESIGNATION D,Employee E, SALARYMONTHLY S, SalaryMonthlyDetail Sd where G.GradeID= E.GradeID AND S.EMPLOYEEID=SEMCC.EMPLOYEEID AND CC.CRGID=SEMCC.COSTCENTERID AND D.DESIGNATIONID=E.DESIGNATIONID AND E.employeeID=S.EmployeeID AND SD.SALARYMONTHLYID=SEMCC.SALARYMONTHLYID AND S.SalaryMonthlyID=Sd.SalaryMonthlyID AND S.SalaryMonth=%d and Sd.ItemGroup in(1,4) AND sd.ItemCode not in(-133) AND S.EmployeeID IN(%q) ) A group by A.EmployeeID, A.EmployeeNo, A.Name,A.GName,A.DName,A.SequenceNo,A.GCode, A.CRGDes, A.ItemCode, A.ItemID, A.Description,A.Position ,A.PERCENTAGE,A.DEPARTMENTID, A.LocationID order by A.EmployeeNo,A.CRGDes,A.Position,A.SequenceNo,A.GCode", dSMonthDate, sEmpID, dSMonthDate, sEmpID, dSMonthDate, sEmpID); tempdataset = tc.ExecuteDataSet(sSQL); tempdataset.Tables[0].TableName = "GrossItem"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); string queryGross = SQLParser.MakeSQL(@"select E.EmployeeNo, E.Name,A.GName,A.GCode,A.SequenceNo,A.DName,'Gross Pay' as Description, Sum(A.amount) as amount,A.CRGDes,A.PERCENTAGE,E.DEPARTMENTID,E.LocationID from ( select S.EmployeeID, Sum(sd.changedamount)*EMPC.PERCENTAGE/100 as Amount, G.DESCRIPTION as GName, G.Code as GCode,G.SequenceNo,D.Name as DName,CC.DESCRIPTION as CRGDes,EMPC.PERCENTAGE from SALARYMONTHLY S,Grades G,DESIGNATION D, SalaryMonthlyDetail Sd, CRG CC,EMPCOSTCENTER EMPC where S.SalaryMonthlyID=Sd.SalaryMonthlyID AND G.GRADEID=S.GRADEID AND D.DESIGNATIONID=S.DESIGNATIONID AND S.SalaryMonth=%d and Sd.ItemGroup IN (1, 8) AND S.EmployeeID IN(%q) And S.EMPLOYEEID=EMPC.EMPLOYEEID AND EMPC.COSTCENTERID=CC.CRGID group by S.EmployeeID,G.DESCRIPTION,G.SequenceNo,G.Code,D.Name ,CC.DESCRIPTION ,EMPC.PERCENTAGE UNION select S.EmployeeID, -Sum(sd.changedamount)* EMPC.PERCENTAGE/100 as Amount,G.DESCRIPTION as GName, G.Code as GCode,G.sequenceNo,D.Name as DName,CC.DESCRIPTION as CRGDes,EMPC.PERCENTAGE from GRADES G,DESIGNATION D,SALARYMONTHLY S, SalaryMonthlyDetail Sd,CRG CC,EMPCOSTCENTER EMPC where S.SalaryMonthlyID=Sd.SalaryMonthlyID AND S.SalaryMonth=%d AND G.GRADEID=S.GRADEID AND D.DESIGNATIONID=S.DESIGNATIONID and Sd.ItemGroup IN (2) AND S.EmployeeID IN(%q) And S.EMPLOYEEID=EMPC.EMPLOYEEID AND EMPC.COSTCENTERID=CC.CRGID group by S.EmployeeID,G.DESCRIPTION,G.SequenceNo,G.Code,D.Name,CC.DESCRIPTION,EMPC.PERCENTAGE ) A, Employee E where A.EmployeeID = E.EmployeeID group by E.EmployeeNo, E.Name,A.GName,A.SequenceNo,A.GCode,A.DName,A.CRGDes,A.PERCENTAGE,E.DEPARTMENTID,E.LocationID order by E.EmployeeNo", dSMonthDate, sEmpID, dSMonthDate, sEmpID); tempdataset = tc.ExecuteDataSet(queryGross); tempdataset.Tables[0].TableName = "TotalGross"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); } catch (Exception ex) { throw new Exception(ex.Message); } return rootDataset; } internal static DataSet GetDividionWiseReport(TransactionContext tc, DateTime dSMonthDate, string sEmpID) { DataSet rootDataset = new DataSet(); DataSet tempdataset = new DataSet(); try { string queryGross = SQLParser.MakeSQL(@"Select E.EMPLOYEEID,E.EmployeeNo, E.Name,Sum(A.amount) as GrossAmount,A.LocationID,E.BRANCHID,E.DESIGNATIONID, E.DEPARTMENTID from( select S.EmployeeID,Sum(sd.changedamount) as Amount,S.LOCATIONID from SALARYMONTHLY S, SalaryMonthlyDetail Sd where S.SalaryMonthlyID=Sd.SalaryMonthlyID AND S.SalaryMonth=%d and Sd.ItemGroup IN (1, 8) AND S.EmployeeID IN(%q) group by S.EmployeeID,S.LOCATIONID UNION select S.EmployeeID, -Sum(sd.changedamount) as Amount,S.LOCATIONID from SALARYMONTHLY S,SalaryMonthlyDetail Sd where S.SalaryMonthlyID=Sd.SalaryMonthlyID AND S.SalaryMonth=%d and Sd.ItemGroup IN (2) AND S.EmployeeID IN(%q) group by S.EmployeeID,S.LOCATIONID) A, Employee E where A.EmployeeID = E.EmployeeID group by E.EMPLOYEEID,E.EmployeeNo, E.Name,A.LocationID,E.BRANCHID, E.DESIGNATIONID,E.DEPARTMENTID order by E.EmployeeNo", dSMonthDate, sEmpID, dSMonthDate, sEmpID); tempdataset = tc.ExecuteDataSet(queryGross); tempdataset.Tables[0].TableName = "TotalGross"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); string sFestiveBonus = SQLParser.MakeSQL(@"Select E.EmployeeNo, E.Name,Sum(A.amount) as FestivalBonus, A.LocationID , E.BRANCHID,E.DESIGNATIONID, E.DEPARTMENTID from( select S.EmployeeID, Sum(sd.changedamount) as Amount,S.LOCATIONID from SALARYMONTHLY S, SalaryMonthlyDetail Sd where S.SalaryMonthlyID=Sd.SalaryMonthlyID AND S.SalaryMonth=%d and Sd.ItemGroup IN (1, 8) and ITEMID in (4) AND ITEMCODE in(-113) AND S.EmployeeID IN(%q) group by S.EmployeeID,S.LOCATIONID UNION select S.EmployeeID, -Sum(sd.changedamount) as Amount,S.LOCATIONID from SALARYMONTHLY S,SalaryMonthlyDetail Sd where S.SalaryMonthlyID=Sd.SalaryMonthlyID AND S.SalaryMonth=%d and Sd.ItemGroup IN (2) AND ITEMID in (4) AND ITEMCODE in(-113) AND S.EmployeeID IN(%q) group by S.EmployeeID,S.LOCATIONID ) A, Employee E where A.EmployeeID = E.EmployeeID group by E.EmployeeNo, E.Name,E.BRANCHID,E.DESIGNATIONID, E.DEPARTMENTID,A.LocationID order by E.EmployeeNo", dSMonthDate, sEmpID, dSMonthDate, sEmpID); tempdataset = tc.ExecuteDataSet(sFestiveBonus); tempdataset.Tables[0].TableName = "FestivalBonus"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); string sPerformanceBonus = SQLParser.MakeSQL(@"Select E.EmployeeNo, E.Name,Sum(A.amount) as PerformBonus,A.LocationID , E.BRANCHID,E.DESIGNATIONID, E.DEPARTMENTID from( select S.EmployeeID, Sum(sd.changedamount) as Amount,S.LOCATIONID from SALARYMONTHLY S, SalaryMonthlyDetail Sd where S.SalaryMonthlyID=Sd.SalaryMonthlyID AND S.SalaryMonth=%d and Sd.ItemGroup IN (1, 8) and ITEMID in (4) AND ITEMCODE in(-113) AND S.EmployeeID IN(%q) group by S.EmployeeID,S.LOCATIONID UNION select S.EmployeeID, -Sum(sd.changedamount) as Amount,S.LOCATIONID from SALARYMONTHLY S,SalaryMonthlyDetail Sd where S.SalaryMonthlyID=Sd.SalaryMonthlyID AND S.SalaryMonth=%d and Sd.ItemGroup IN (2) AND ITEMID in (4) AND ITEMCODE in(-113) AND S.EmployeeID IN(%q) group by S.EmployeeID,S.LOCATIONID ) A, Employee E where A.EmployeeID = E.EmployeeID group by E.EmployeeNo, E.Name,A.LocationID , E.BRANCHID,E.DESIGNATIONID, E.DEPARTMENTID order by E.EmployeeNo", dSMonthDate, sEmpID, dSMonthDate, sEmpID); tempdataset = tc.ExecuteDataSet(sPerformanceBonus); tempdataset.Tables[0].TableName = "PerformanceBonus"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); string SCoPFContri = SQLParser.MakeSQL(@"Select E.EmployeeNo, E.Name,Sum(A.changedamount) as CoPFContri, A.LOCATIONID , E.BRANCHID,E.DESIGNATIONID, E.DEPARTMENTID from( select S.EmployeeID,sd.changedamount,S.LOCATIONID from SALARYMONTHLY S, SalaryMonthlyDetail Sd where S.SalaryMonthlyID=Sd.SalaryMonthlyID AND S.SalaryMonth=%d and Sd.ItemGroup=3 AND S.EmployeeID IN(%q) AND sd.ITEMCODE in(-128) ) A, Employee E where A.EmployeeID = E.EmployeeID group by E.EmployeeNo, E.Name,A.LocationID , E.BRANCHID,E.DESIGNATIONID, E.DEPARTMENTID order by E.EmployeeNo", dSMonthDate, sEmpID); tempdataset = tc.ExecuteDataSet(SCoPFContri); tempdataset.Tables[0].TableName = "CoPFContribution"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); string queryTotalDeduction = SQLParser.MakeSQL(@"select E.EmployeeNo, E.Name, Sum(A.amount) as DeductionAmount,A.LocationID ,E.BRANCHID,E.DESIGNATIONID, E.DEPARTMENTID from ( select S.EmployeeID, Sum(sd.changedamount) as Amount,S.LOCATIONID from SALARYMONTHLY S,SalaryMonthlyDetail Sd where S.SalaryMonthlyID=Sd.SalaryMonthlyID AND S.SalaryMonth=%d and Sd.ItemGroup IN (2,3) AND S.EmployeeID IN(%q) group by S.EmployeeID,S.LOCATIONID)A, Employee E where A.EmployeeID = E.EmployeeID group by E.EmployeeNo, E.Name,A.LocationID ,E.BRANCHID,E.DESIGNATIONID , E.DEPARTMENTID order by E.EmployeeNo ", dSMonthDate, sEmpID); tempdataset = tc.ExecuteDataSet(queryTotalDeduction); tempdataset.Tables[0].TableName = "TotalDeduction"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); } catch (Exception ex) { throw new Exception(ex.Message); } return rootDataset; } internal static DataSet GetSalaryPaySlipData(TransactionContext tc, DateTime dMonth, string sEmpID) { DataSet tempDataSet = new DataSet(); try { string query = SQLParser.MakeSQL(@"select * from ( SELECT e.EMPLOYEENO, e.[NAME], desig.[NAME] Designation, dept.[DESCRIPTION] Department, smd.[DESCRIPTION], ISNULL(Sum(CONVERT(bigint, smd.CHANGEDAMOUNT)),0) AS Amount FROM SALARYMONTHLYDETAIL smd LEFT JOIN SALARYMONTHLY sm ON sm.SALARYMONTHLYID= smd.SALARYMONTHLYID LEFT JOIN EMPLOYEE e ON e.EMPLOYEEID= sm.EMPLOYEEID LEFT JOIN DEPARTMENT dept ON dept.DEPARTMENTID = e.DEPARTMENTID LEFT JOIN DESIGNATION desig ON desig.DESIGNATIONID = e.DESIGNATIONID WHERE sm.SalaryMonth = %d AND sm.EMPLOYEEID IN (%q) GROUP BY e.EMPLOYEENO, E.[NAME], desig.[NAME], Dept.[DESCRIPTION], smd.[DESCRIPTION] ) src pivot ( SUM(Amount) for Description in ( [Children Education Allowances], [Medical Allowances], [UnAuthorized Leave Days],[Other Allowances], [Manager's Incentive], [Entertainment Allowances], [Conveyance Allowances],[Basic],[Officer's Leave Fare Allowances],[Motor Bike (Penalty) Deduction], [PF], [Provident Fund Loan],[Provident Fund Loan balance], [Provident Fund Loan interest], [House Rent Allowances], [Other Deductions],[Special Allowance],[Gift for Anniversary],[Article Loan],[Manager's Medical Allowances], [Expiry Product], [Income Tax]) ) piv;", dMonth,sEmpID); tempDataSet = tc.ExecuteDataSet(query); } catch (Exception ex) { throw new Exception(ex.Message); } return tempDataSet; } internal static DataSet GetExpensesPaySlipData(TransactionContext tc, DateTime fromDate, DateTime toDate, string sEmpID) { DataSet tempDataSet = new DataSet(); try { string query = SQLParser.MakeSQL(@"SELECT * from (SELECT e.EmployeeNo, e.Name as EmpName,e.Tinno,e.JoiningDate,e.OUTPAYACCOUNTNO,e.PaymentMode, d.[DESCRIPTION] AS Department, desig.[NAME] AS Designation,g.Code Grade, oi.Name as OPIItem, ISNULL(Sum(CONVERT(bigint, opdi.NetAmount)),0) AS Amount FROM OPIItem oi LEFT JOIN OPIProcessDetailItem opdi ON oi.OPIItemId = opdi.OPIItemId LEFT JOIN OPIProcessDetail opd ON opd.OPIProcessDetailId = opdi.OPIProcessDetailId LEFT JOIN OPIProcess op ON op.OPIProcessID = opd.OPIProcessID LEFT JOIN Employee e ON e.EMPLOYEEID = opd.EmployeeId LEFT JOIN DEPARTMENT d ON d.DEPARTMENTID = e.DEPARTMENTID LEFT JOIN Designation desig ON desig.DESIGNATIONID = e.DESIGNATIONID LEFT JOIN Grades g on g.GradeId=e.GradeId WHERE op.OPIMonth >= %d AND op.OPIMonth <= %d AND e.EmployeeId IN(%q) GROUP BY e.EmployeeNo, e.Name, d.[DESCRIPTION], desig.[NAME], g.Code,oi.[Name],e.Tinno,e.JoiningDate,e.OUTPAYACCOUNTNO,e.PaymentMode ) src pivot ( SUM(Amount) for OPIItem in ( [Utility Expenses], [Leave Fare Assistance Expense], [Medical Expenses],[Servant Allowances], [Car Allowances/ Expenses], [Driver Allowances], [Security Allowances],[Worker’s Profit Participation Fund],[Manager’s Telephone Expenses],[Telephone Expenses (Mobile Bill)], [Mobile Set], [Group Insurance],[Other Expenses]) ) piv;", fromDate, toDate, sEmpID); tempDataSet = tc.ExecuteDataSet(query); } catch (Exception ex) { throw new Exception(ex.Message); } return tempDataSet; } internal static DataSet GetCTCDetail(TransactionContext tc, DateTime dSMonthDate, string sEmpID) { DataSet rootDataset = new DataSet(); DataSet tempdataset = new DataSet(); try { string queryGross = SQLParser.MakeSQL(@"select E.EmployeeID, E.EmployeeNo,E.GLOBALID as CIFNo, E.Name,A.GName,A.GCode,A.SequenceNo, E.DESIGNATIONID,'GrossPay' as Description, Sum(A.amount) as amount,A.CRGDes,A.PERCENTAGE,E.DEPARTMENTID,A.LOCATIONID from ( select S.EmployeeID, Sum(sd.changedamount)*EMPC.PERCENTAGE/100 as Amount,S.LOCATIONID, G.DESCRIPTION as GName, G.Code as GCode,G.SequenceNo,D.Name as DName,CC.DESCRIPTION as CRGDes,EMPC.PERCENTAGE from SALARYMONTHLY S,Grades G,DESIGNATION D, SalaryMonthlyDetail Sd, CRG CC,EMPCOSTCENTER EMPC where S.SalaryMonthlyID=Sd.SalaryMonthlyID AND G.GRADEID=S.GRADEID AND D.DESIGNATIONID=S.DESIGNATIONID AND S.SalaryMonth=%d and Sd.ItemGroup IN (1, 8) AND S.EmployeeID IN(%q) And S.EMPLOYEEID=EMPC.EMPLOYEEID AND EMPC.COSTCENTERID=CC.CRGID group by S.EmployeeID,G.DESCRIPTION,G.SequenceNo,G.Code,D.Name ,CC.DESCRIPTION ,EMPC.PERCENTAGE,S.LOCATIONID UNION select S.EmployeeID, -Sum(sd.changedamount)* EMPC.PERCENTAGE/100 as Amount,S.LOCATIONID,G.DESCRIPTION as GName, G.Code as GCode,G.sequenceNo,D.Name as DName,CC.DESCRIPTION as CRGDes,EMPC.PERCENTAGE from GRADES G,DESIGNATION D,SALARYMONTHLY S, SalaryMonthlyDetail Sd,CRG CC,EMPCOSTCENTER EMPC where S.SalaryMonthlyID=Sd.SalaryMonthlyID AND S.SalaryMonth=%d AND G.GRADEID=S.GRADEID AND D.DESIGNATIONID=S.DESIGNATIONID and Sd.ItemGroup IN (2) AND S.EmployeeID IN(%q) And S.EMPLOYEEID=EMPC.EMPLOYEEID AND EMPC.COSTCENTERID=CC.CRGID group by S.EmployeeID,G.DESCRIPTION,G.SequenceNo,G.Code,D.Name,CC.DESCRIPTION,EMPC.PERCENTAGE,S.LOCATIONID ) A, Employee E where A.EmployeeID = E.EmployeeID group by E.EmployeeID,E.EmployeeNo, E.Name,A.GName,A.SequenceNo,A.GCode,E.DESIGNATIONID,A.CRGDes,A.LOCATIONID, A.PERCENTAGE,E.DEPARTMENTID,E.GLOBALID order by E.EmployeeNo", dSMonthDate, sEmpID, dSMonthDate, sEmpID); tempdataset = tc.ExecuteDataSet(queryGross); tempdataset.Tables[0].TableName = "TotalGross"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); string sFestiveBonus = SQLParser.MakeSQL(@"Select E.EmployeeNo, E.Name,Sum(A.amount) as FestivalBonus,A.LOCATIONID, E.BRANCHID,E.DESIGNATIONID, E.DEPARTMENTID from( select S.EmployeeID, Sum(sd.changedamount) as Amount,S.LOCATIONID from SALARYMONTHLY S, SalaryMonthlyDetail Sd where S.SalaryMonthlyID=Sd.SalaryMonthlyID AND S.SalaryMonth=%d and Sd.ItemGroup IN (1, 8) and ITEMID in (4) AND ITEMCODE in(-113) AND S.EmployeeID IN(%q) group by S.EmployeeID,S.LOCATIONID UNION select S.EmployeeID, -Sum(sd.changedamount) as Amount,S.LOCATIONID from SALARYMONTHLY S,SalaryMonthlyDetail Sd where S.SalaryMonthlyID=Sd.SalaryMonthlyID AND S.SalaryMonth=%d and Sd.ItemGroup IN (2) AND ITEMID in (4) AND ITEMCODE in(-113) AND S.EmployeeID IN(%q) group by S.EmployeeID,S.LOCATIONID) A, Employee E where A.EmployeeID = E.EmployeeID group by E.EmployeeNo, E.Name,A.LOCATIONID, E.BRANCHID,E.DESIGNATIONID,E.DEPARTMENTID order by E.EmployeeNo", dSMonthDate, sEmpID, dSMonthDate, sEmpID); tempdataset = tc.ExecuteDataSet(sFestiveBonus); tempdataset.Tables[0].TableName = "FestivalBonus"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); string sPerformanceBonus = SQLParser.MakeSQL(@"Select E.EmployeeNo, E.Name,Sum(A.amount) as PerformBonus,A.LOCATIONID,E.DESIGNATIONID, E.DEPARTMENTID from( select S.EmployeeID, Sum(sd.changedamount) as Amount,S.LOCATIONID from SALARYMONTHLY S, SalaryMonthlyDetail Sd where S.SalaryMonthlyID=Sd.SalaryMonthlyID AND S.SalaryMonth=%d and Sd.ItemGroup IN (1, 8) and ITEMID in (4) AND ITEMCODE in(-113) AND S.EmployeeID IN(%q) group by S.EmployeeID,S.LOCATIONID UNION select S.EmployeeID, -Sum(sd.changedamount) as Amount,S.LOCATIONID from SALARYMONTHLY S,SalaryMonthlyDetail Sd where S.SalaryMonthlyID=Sd.SalaryMonthlyID AND S.SalaryMonth=%d and Sd.ItemGroup IN (2) AND ITEMID in (4) AND ITEMCODE in(-113) AND S.EmployeeID IN(%q) group by S.EmployeeID,S.LOCATIONID) A, Employee E where A.EmployeeID = E.EmployeeID group by E.EmployeeNo, E.Name,A.LOCATIONID,E.DESIGNATIONID,E.DEPARTMENTID order by E.EmployeeNo", dSMonthDate, sEmpID, dSMonthDate, sEmpID); tempdataset = tc.ExecuteDataSet(sPerformanceBonus); tempdataset.Tables[0].TableName = "PerformanceBonus"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); string SCoPFContri = SQLParser.MakeSQL(@"Select E.EmployeeNo, E.Name,Sum(A.amount) as CoPFContri,A.LOCATIONID,E.DESIGNATIONID, E.DEPARTMENTID from( select S.EmployeeID, Sum(sd.changedamount) as Amount,S.LOCATIONID from SALARYMONTHLY S, SalaryMonthlyDetail Sd where S.SalaryMonthlyID=Sd.SalaryMonthlyID AND S.SalaryMonth=%d and Sd.ItemGroup IN (3) AND S.EmployeeID IN(%q) AND Sd.ITEMCODE in(-128) group by S.EmployeeID,S.LOCATIONID ) A, Employee E where A.EmployeeID = E.EmployeeID group by E.EmployeeNo, E.Name,A.LOCATIONID,E.DESIGNATIONID,E.DEPARTMENTID order by E.EmployeeNo", dSMonthDate, sEmpID, dSMonthDate, sEmpID); tempdataset = tc.ExecuteDataSet(SCoPFContri); tempdataset.Tables[0].TableName = "CoPFContribution"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); string queryTotalDeduction = SQLParser.MakeSQL(@"select E.EmployeeNo, E.Name, Sum(A.amount) as DeductionAmount,A.LOCATIONID,E.DESIGNATIONID,E.DEPARTMENTID from ( select S.EmployeeID, Sum(sd.changedamount) as Amount,S.LOCATIONID from SALARYMONTHLY S,SalaryMonthlyDetail Sd where S.SalaryMonthlyID=Sd.SalaryMonthlyID AND S.SalaryMonth=%d and Sd.ItemGroup IN (2,3) AND S.EmployeeID IN(%q) group by S.EmployeeID,S.LOCATIONID)A, Employee E where A.EmployeeID = E.EmployeeID group by E.EmployeeNo, E.Name,A.LOCATIONID,E.DESIGNATIONID,E.DEPARTMENTID order by E.EmployeeNo", dSMonthDate, sEmpID); tempdataset = tc.ExecuteDataSet(queryTotalDeduction); tempdataset.Tables[0].TableName = "TotalDeduction"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); } catch (Exception ex) { throw new Exception(ex.Message); } return rootDataset; } internal static DataSet GetIncrement(TransactionContext tc, DateTime dSMonthDate, string sEmpID) { DataSet rootDataset = new DataSet(); DataSet tempdataset = new DataSet(); try { string queryGross = SQLParser.MakeSQL(@"Select distinct E.EMPLOYEEID,E.EmployeeNo, E.Name,Sum(A.amount) as GrossAmount,A.LOCATIONID, E.DESIGNATIONID, E.DEPARTMENTID,A.CRGDes,A.CRGID,A.PERCENTAGE from( select S.EmployeeID,Sum(sd.changedamount)*SEMPCC.PERCENTAGE/100 as amount, CC.DESCRIPTION as CRGDes,CC.CRGID,SEMPCC.PERCENTAGE,S.LOCATIONID from SALARYMONTHLY S, SalaryMonthlyDetail Sd,SALARYEMPCOSTCENTER SEMPCC,CRG CC where S.SalaryMonthlyID=Sd.SalaryMonthlyID AND S.SalaryMonth=%d and Sd.ItemGroup IN (1, 8) And S.EMPLOYEEID=SEMPCC.EMPLOYEEID AND CC.CRGID=SEMPCC.COSTCENTERID AND S.EmployeeID IN(%q) group by S.EmployeeID,CC.DESCRIPTION,CC.CRGID,SEMPCC.PERCENTAGE,S.LOCATIONID UNION select S.EmployeeID, -Sum(sd.changedamount)*SEMPCC.PERCENTAGE/100 as amount,CC.DESCRIPTION as CRGDes,CC.CRGID, SEMPCC.PERCENTAGE,S.LOCATIONID from SALARYMONTHLY S,SalaryMonthlyDetail Sd,SALARYEMPCOSTCENTER SEMPCC,CRG CC where S.SalaryMonthlyID=Sd.SalaryMonthlyID AND S.SalaryMonth=%d and Sd.ItemGroup IN (2) And S.EMPLOYEEID=SEMPCC.EMPLOYEEID AND CC.CRGID=SEMPCC.COSTCENTERID AND S.EmployeeID IN(%q) group by S.EmployeeID,CC.DESCRIPTION,CC.CRGID,SEMPCC.PERCENTAGE,S.LOCATIONID) A, Employee E where A.EmployeeID = E.EmployeeID group by E.EMPLOYEEID,E.EmployeeNo, E.Name,A.LOCATIONID,E.DESIGNATIONID,E.DEPARTMENTID, A.CRGDes,A.PERCENTAGE,A.CRGID order by E.EmployeeNo", dSMonthDate, sEmpID, dSMonthDate, sEmpID); tempdataset = tc.ExecuteDataSet(queryGross); tempdataset.Tables[0].TableName = "TotalGross"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); string queryBasic = SQLParser.MakeSQL(@"Select E.EMPLOYEEID,E.EmployeeNo, E.Name,A.amount as BasicAmount, A.LOCATIONID,E.DESIGNATIONID, E.DEPARTMENTID ,A.CRGDes,A.CRGID,A.PERCENTAGE from( select S.EmployeeID,Sum(sd.changedamount)*SEMPCC.PERCENTAGE/100 as Amount,CC.DESCRIPTION as CRGDes,CC.CRGID , SEMPCC.PERCENTAGE,S.LOCATIONID from SALARYMONTHLY S, SalaryMonthlyDetail Sd ,SALARYEMPCOSTCENTER SEMPCC,CRG CC where S.SalaryMonthlyID=Sd.SalaryMonthlyID AND S.SalaryMonth=%d and Sd.ItemGroup IN (1, 8) and ITEMID in (-101) And S.EMPLOYEEID=SEMPCC.EMPLOYEEID AND CC.CRGID=SEMPCC.COSTCENTERID AND S.EmployeeID IN(%q) group by S.EmployeeID, CC.DESCRIPTION,CC.CRGID,SEMPCC.PERCENTAGE,S.LOCATIONID UNION select S.EmployeeID, -Sum(sd.changedamount)*SEMPCC.PERCENTAGE/100 as amount,CC.DESCRIPTION as CRGDes,CC.CRGID, SEMPCC.PERCENTAGE,S.LOCATIONID from SALARYMONTHLY S,SalaryMonthlyDetail Sd ,SALARYEMPCOSTCENTER SEMPCC,CRG CC where S.SalaryMonthlyID=Sd.SalaryMonthlyID AND S.SalaryMonth=%d and Sd.ItemGroup IN (2) AND ITEMID in (-101) AND S.EmployeeID IN(%q) group by S.EmployeeID,CC.DESCRIPTION,CC.CRGID,SEMPCC.PERCENTAGE,S.LOCATIONID)A, Employee E where A.EmployeeID = E.EmployeeID group by E.EMPLOYEEID,E.EmployeeNo, E.Name,A.LOCATIONID,A.amount, E.DESIGNATIONID,E.DEPARTMENTID ,A.CRGDes,A.PERCENTAGE,A.CRGID order by E.EmployeeNo", dSMonthDate, sEmpID, dSMonthDate, sEmpID); tempdataset = tc.ExecuteDataSet(queryBasic); tempdataset.Tables[0].TableName = "Basic"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); string sFestiveBonus = SQLParser.MakeSQL(@" Select E.EmployeeNo, E.Name,Sum(A.amount) as FestivalBonus, A.LOCATIONID,E.DESIGNATIONID, E.DEPARTMENTID,A.CRGDes,A.CRGID,A.PERCENTAGE from( select S.EmployeeID, Sum(sd.changedamount)*SEMPCC.PERCENTAGE/100 as Amount,CC.DESCRIPTION as CRGDes,CC.CRGID, SEMPCC.PERCENTAGE,S.LOCATIONID from SALARYMONTHLY S, SalaryMonthlyDetail Sd ,SALARYEMPCOSTCENTER SEMPCC,CRG CC where S.SalaryMonthlyID=Sd.SalaryMonthlyID AND S.SalaryMonth=%d and Sd.ItemGroup IN (1, 8) and ITEMID in (4) AND ITEMCODE in(-113) And S.EMPLOYEEID=SEMPCC.EMPLOYEEID AND CC.CRGID=SEMPCC.COSTCENTERID AND S.EmployeeID IN(%q) group by S.EmployeeID,CC.DESCRIPTION,CC.CRGID,SEMPCC.PERCENTAGE,S.LOCATIONID UNION select S.EmployeeID, -Sum(sd.changedamount)*SEMPCC.PERCENTAGE/100 as Amount,CC.DESCRIPTION as CRGDes,CC.CRGID,SEMPCC.PERCENTAGE ,S.LOCATIONID from SALARYMONTHLY S,SalaryMonthlyDetail Sd,SALARYEMPCOSTCENTER SEMPCC,CRG CC where S.SalaryMonthlyID=Sd.SalaryMonthlyID AND S.SalaryMonth=%d and Sd.ItemGroup IN (2) AND ITEMID in (4) AND ITEMCODE in(-113) And S.EMPLOYEEID=SEMPCC.EMPLOYEEID AND CC.CRGID=SEMPCC.COSTCENTERID AND S.EmployeeID IN(%q) group by S.EmployeeID,CC.DESCRIPTION,CC.CRGID,SEMPCC.PERCENTAGE,S.LOCATIONID ) A, Employee E where A.EmployeeID = E.EmployeeID group by E.EmployeeNo, E.Name, A.LOCATIONID,E.DESIGNATIONID,E.DEPARTMENTID,A.CRGDes,A.PERCENTAGE,A.CRGID order by E.EmployeeNo", dSMonthDate, sEmpID, dSMonthDate, sEmpID); tempdataset = tc.ExecuteDataSet(sFestiveBonus); tempdataset.Tables[0].TableName = "FestivalBonus"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); string SCoPFContri = SQLParser.MakeSQL(@" Select E.EmployeeNo, E.Name,Sum(A.amount) as CoPFContri,A.LOCATIONID,E.DESIGNATIONID, E.DEPARTMENTID,A.CRGDes,A.CRGID,A.PERCENTAGE from( select S.EmployeeID, Sum(sd.changedamount)*SEMPCC.PERCENTAGE/100 as Amount,CC.DESCRIPTION as CRGDes, CC.CRGID,SEMPCC.PERCENTAGE,S.LOCATIONID from SALARYMONTHLY S, SalaryMonthlyDetail Sd,SALARYEMPCOSTCENTER SEMPCC,CRG CC where S.SalaryMonthlyID=Sd.SalaryMonthlyID AND S.SalaryMonth=%d and Sd.ItemGroup IN (3) And S.EMPLOYEEID=SEMPCC.EMPLOYEEID AND CC.CRGID=SEMPCC.COSTCENTERID AND S.EmployeeID IN(%q) group by S.EmployeeID,CC.DESCRIPTION,CC.CRGID,SEMPCC.PERCENTAGE,S.LOCATIONID ) A, Employee E where A.EmployeeID = E.EmployeeID group by E.EmployeeNo, E.Name,A.LOCATIONID,E.DESIGNATIONID,E.DEPARTMENTID, A.CRGDes,A.PERCENTAGE,A.CRGID order by E.EmployeeNo", dSMonthDate, sEmpID, dSMonthDate, sEmpID); tempdataset = tc.ExecuteDataSet(SCoPFContri); tempdataset.Tables[0].TableName = "CoPFContribution"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); } catch (Exception ex) { throw new Exception(ex.Message); } return rootDataset; } internal static DataSet GetADHeadReport(TransactionContext tc, DateTime dSMonthDate, string checkItem, string itemcode) { DataSet rootDataset = new DataSet(); DataSet tempdataset = new DataSet(); try { string sAllowanceDeduct = SQLParser.MakeSQL("select S.EMPLOYEEID,S.LOCATIONID,Sd.DESCRIPTION,Sum(Sd.CHANGEDAMOUNT) as Amount" + " from SALARYMONTHLY S,SALARYMONTHLYDETAIL Sd" + " where S.SALARYMONTHLYID=SD.SALARYMONTHLYID AND S.SalaryMonth=%d %q) %q)" + " group by S.EMPLOYEEID,S.LOCATIONID,Sd.DESCRIPTION", dSMonthDate, checkItem, itemcode); tempdataset = tc.ExecuteDataSet(sAllowanceDeduct); tempdataset.Tables[0].TableName = "HeadAllowanceDeduct"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); } catch (Exception ex) { throw new Exception(ex.Message); } return rootDataset; } internal static DataSet GetBEFTNform(TransactionContext tc, DateTime dmonth, string ids) { DataSet oBEFTNdataSet = new DataSet(); try { string query = SQLParser.MakeSQL(@"SELECT s.SalaryMonth, br.CODE BranchCode, e.ACCOUNTNO, sd.CHANGEDAMOUNT AS Amount, e.[NAME] FROM SALARYMONTHLYDETAIL sd LEFT JOIN SALARYMONTHLY s ON s.SALARYMONTHLYID=sd.SALARYMONTHLYID LEFT JOIN Employee e ON e.EMPLOYEEID= s.EMPLOYEEID LEFT JOIN BRANCHES br ON br.BRANCHID = s.BRANCHID WHERE sd.ITEMGROUP=5 AND s.SalaryMonth = %d AND s.ACCOUNTNO<>'' AND br.BRANCHID IN (%q) ", dmonth, ids); oBEFTNdataSet = tc.ExecuteDataSet(query); } catch (Exception e) { throw new Exception(e.Message); } return oBEFTNdataSet; } internal static DataSet GetOPIHeadReport(TransactionContext tc, DateTime dSMonthDate, string checkItem) { DataSet rootDataset = new DataSet(); DataSet tempdataset = new DataSet(); try { //string sOPI = SQLParser.MakeSQL("Select D.EmployeeID,D.LocationID,I.Description,(I.ChangeNetAmount)as Amount from OPIProcess O," // + " OPIProcessDetail D, OPIProcessDetailItem I Where " // + " O.OPIMonth=%d AND I.OPIProcessDetailID=D.OPIProcessDetailID" // + " AND O.OPIProcessID= D.OPIProcessID %q)" // + " ORDER BY D.OPIProcessDetailID, OPIItemID", dSMonthDate, checkItem); string sOPI = SQLParser.MakeSQL("Select D.EmployeeID,D.LocationID,I.Description,(I.ChangeNetAmount)as Amount,oi.SequenceNO" + " from OPIProcess O, OPIProcessDetail D, OPIProcessDetailItem I,OpiItem oi " + " Where O.OPIMonth=%d AND I.OPIProcessDetailID=D.OPIProcessDetailID " + " AND O.OPIProcessID= D.OPIProcessID %q)" + " AND I.OPIItemID=oi.OpiItemID " + " ORDER BY D.OPIProcessDetailID, I.OPIItemID", dSMonthDate, checkItem); tempdataset = tc.ExecuteDataSet(sOPI); tempdataset.Tables[0].TableName = "HeadOPI"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); } catch (Exception ex) { throw new Exception(ex.Message); } return rootDataset; } internal static DataSet GetBranchWiseSalaryDetails(TransactionContext tc, DateTime dSMonthDate, string sEmpID) { DataSet rootDataset = new DataSet(); DataSet tempdataset = new DataSet(); try { string sSQL = SQLParser.MakeSQL(@"select sd.Description,SUM(sd.changedamount) Amount,S.DEPARTMENTID,S.LOCATIONID, sd.ItemGroup,sd.ITEMCODE,sd.ITEMID from SALARYMONTHLYDETAIL sd inner join SALARYMONTHLY S on sd.SALARYMONTHLYID=S.SALARYMONTHLYID where S.SalaryMonth=%d and sd.ITEMGROUP in(1,2,8) AND sd.ItemCode not in(-133) AND S.EmployeeID IN(%q) group by sd.DESCRIPTION,S.DEPARTMENTID,S.LOCATIONID,sd.ITEMCODE,sd.ITEMGROUP,sd.ITEMID order by S.LOCATIONID,S.DEPARTMENTID", dSMonthDate, sEmpID); tempdataset = tc.ExecuteDataSet(sSQL); tempdataset.Tables[0].TableName = "Branch"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); } catch (Exception ex) { throw new Exception(ex.Message); } return rootDataset; } internal static DataSet GetTotalBranchWiseOPI(TransactionContext tc, string str, DateTime dSMonthDate, string sEmpID) { DataSet rootDataset = new DataSet(); DataSet tempdataset = new DataSet(); try { string sSQL = SQLParser.MakeSQL(@" SELECT opd.DEPARTMENTID,opd.LOCATIONID,oi.OPIItemId, oi.Name as OPIItem, Sum(opdi.NetAmount) as Amount FROM OPIItem oi, OPIProcess op, OPIProcessDetail opd, OPIProcessDetailItem opdi WHERE op.OPIMonth >= %d AND op.OPIMonth <=%d AND opd.EmployeeId IN(%q) AND op.OPIProcessID = opd.OPIProcessID AND opd.OPIProcessDetailId = opdi.OPIProcessDetailId AND oi.OPIItemId = opdi.OPIItemId GROUP BY opd.LOCATIONID,opd.DEPARTMENTID, oi.OPIItemId, oi.Name ORDER BY opd.LOCATIONID,opd.DEPARTMENTID", GlobalFunctions.FirstDateOfMonth(dSMonthDate), GlobalFunctions.LastDateOfMonth(dSMonthDate), sEmpID); tempdataset = tc.ExecuteDataSet(sSQL); tempdataset.Tables[0].TableName = "BranchOPI"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); } catch (Exception ex) { throw new Exception(ex.Message); } return rootDataset; } internal static DataSet GetTotalOPIForBranch(TransactionContext tc, string oPIItem, DateTime _SalaryMonth, string sEmpID) { DataSet oTotalOPI = new DataSet(); string sQuary = SQLParser.MakeSQL(@"SELECT opd.DEPARTMENTID,opd.LocationID, Sum(opdi.NetAmount) as OPIAmount FROM OPIItem oi, OPIProcess op, OPIProcessDetail opd, OPIProcessDetailItem opdi WHERE op.OPIMonth >= %d AND op.OPIMonth <= %d AND opd.EmployeeId IN(%q) AND op.OPIProcessID = opd.OPIProcessID AND opd.OPIProcessDetailId = opdi.OPIProcessDetailId AND oi.OPIItemId = opdi.OPIItemId GROUP BY opd.LocationID,opd.DEPARTMENTID ORDER BY opd.LocationID,opd.DEPARTMENTID", GlobalFunctions.FirstDateOfMonth(_SalaryMonth), GlobalFunctions.LastDateOfMonth(_SalaryMonth), sEmpID, oPIItem); oTotalOPI = tc.ExecuteDataSet(sQuary); return oTotalOPI; } internal static DataSet GetBranchWiseEmpDeduction(TransactionContext tc, DateTime _SalaryMonth, string sEmpID) { DataSet rootDataset = new DataSet(); DataSet tempdataset = new DataSet(); try { string sSQL = SQLParser.MakeSQL(@"Select SMD.DESCRIPTION,SUM(SMD.CHANGEDAMOUNT) as Amount , SMD.ITEMGROUP,SM.DEPARTMENTID,SM.LOCATIONID,SMD.ITEMID,SMD.ITEMCODE from SALARYMONTHLYDETAIL SMD,SALARYMONTHLY SM where SM.EMPLOYEEID in(%q) AND SMD.ITEMGROUP IN(3) AND SM.SALARYMONTH=%d AND SM.SALARYMONTHLYID=SMD.SALARYMONTHLYID AND SMD.CHANGEDAMOUNT<>0 GROUP by SMD.ITEMGROUP,SMD.ITEMID,SMD.ITEMCODE, SMD.DESCRIPTION, SM.DEPARTMENTID,SM.LOCATIONID order by SM.LOCATIONID,SM.DEPARTMENTID asc", sEmpID, _SalaryMonth); tempdataset = tc.ExecuteDataSet(sSQL); tempdataset.Tables[0].TableName = "BranchDeduction"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); } catch (Exception ex) { throw new Exception(ex.Message); } return rootDataset; } internal static DataSet GetLineManager(TransactionContext tc, string empId) { DataSet dSet = new DataSet(); string sql = SQLParser.MakeSQL(@"SELECT Employee.Name FROM Employee, (SELECT EmployeeID FROM OrganEmployee oe WHERE oe.NodeID = ( SELECT ParentID FROM Organogram o WHERE o.OrganogramID= (SELECT NodeID FROM OrganEmployee oe WHERE EmployeeID=%n))) tab1 WHERE Employee.EMPLOYEEID=tab1.EmployeeID", empId); dSet = tc.ExecuteDataSet(sql); return dSet; } internal static DataSet GetCCWiseFinance(TransactionContext tc, DateTime dSMonthDate, string sEmpID) { DataSet rootDataset = new DataSet(); DataSet tempdataset = new DataSet(); try { string GrossItem = SQLParser.MakeSQL(@"select A.Description,SUM(A.amount) as Amount,A.DEPARTMENTID, A.LOCATIONID,A.ItemGroup,A.ITEMCODE,A.ITEMID,A.CRGID,A.CostCenter from (Select S.LOCATIONID,S.DEPARTMENTID,sd.Description,(sd.CHANGEDAMOUNT*EMPCC.PERCENTAGE/100)as amount, sd.ItemGroup,sd.ITEMCODE,sd.ITEMID,CC.CRGID,CC.Description as CostCenter from SALARYMONTHLYDETAIL sd ,SALARYMONTHLY S,SALARYEMPCOSTCENTER EMPCC,CRG CC Where sd.SALARYMONTHLYID=S.SALARYMONTHLYID AND S.SALARYMONTHLYID=EMPCC.SALARYMONTHLYID AND EMPCC.COSTCENTERID=CC.CRGID AND S.SalaryMonth=%d and sd.ITEMGROUP in(1,8) AND sd.ItemCode not in(-133) AND S.EmployeeID IN(%q))A group by A.Description,A.DEPARTMENTID,A.LOCATIONID,A.ItemGroup,A.ITEMCODE, A.ITEMID,A.CRGID,A.CostCenter order by A.LOCATIONID,A.CRGID,A.DEPARTMENTID", dSMonthDate, sEmpID); tempdataset = tc.ExecuteDataSet(GrossItem); tempdataset.Tables[0].TableName = "GrossItem"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); string DeductItem = SQLParser.MakeSQL(@"select A.Description,SUM(A.amount) as Amount,A.DEPARTMENTID, A.LOCATIONID,A.ItemGroup,A.ITEMCODE,A.ITEMID,A.CRGID,A.CostCenter from (Select S.LOCATIONID,S.DEPARTMENTID,sd.Description,(sd.CHANGEDAMOUNT*EMPCC.PERCENTAGE/100)as amount, sd.ItemGroup,sd.ITEMCODE,sd.ITEMID,CC.CRGID,CC.Description as CostCenter from SALARYMONTHLYDETAIL sd ,SALARYMONTHLY S,SALARYEMPCOSTCENTER EMPCC,CRG CC Where sd.SALARYMONTHLYID=S.SALARYMONTHLYID AND S.SALARYMONTHLYID=EMPCC.SALARYMONTHLYID AND EMPCC.COSTCENTERID=CC.CRGID AND sd.CHANGEDAMOUNT<>0 AND S.SalaryMonth=%d and sd.ITEMGROUP in(3) AND S.EmployeeID IN(%q))A group by A.Description,A.DEPARTMENTID,A.LOCATIONID,A.ItemGroup,A.ITEMCODE, A.ITEMID,A.CRGID,A.CostCenter order by A.LOCATIONID,A.CRGID,A.DEPARTMENTID", dSMonthDate, sEmpID); tempdataset = tc.ExecuteDataSet(DeductItem); tempdataset.Tables[0].TableName = "DeductItem"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); string opiItem = SQLParser.MakeSQL(@"select A.Description,SUM(A.amount) as Amount,A.DEPARTMENTID, A.LOCATIONID,A.CRGID,A.CostCenter,A.SequenceNO from (Select opd.LOCATIONID,opd.DEPARTMENTID,opdi.Description,(opdi.NetAmount*EMPCC.PERCENTAGE/100)as amount, CC.CRGID,CC.Description as CostCenter,oi.SequenceNO from OPIItem oi, OPIProcess op, OPIProcessDetail opd,SALARYEMPCOSTCENTER EMPCC, CRG CC,OPIProcessDetailItem opdi Where op.OPIMonth == %d AND opd.EmployeeId IN(%q) AND op.OPIProcessID = opd.OPIProcessID AND opd.EmployeeId = EMPCC.EMPLOYEEID AND EMPCC.COSTCENTERID=CC.CRGID AND opd.OPIProcessDetailId = opdi.OPIProcessDetailId AND oi.OPIItemId = opdi.OPIItemId )A group by A.Description,A.DEPARTMENTID,A.LOCATIONID,A.CRGID,A.CostCenter,A.SequenceNO order by A.LOCATIONID,A.CRGID,A.DEPARTMENTID", dSMonthDate, sEmpID); tempdataset = tc.ExecuteDataSet(opiItem); tempdataset.Tables[0].TableName = "OPIItem"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); } catch (Exception ex) { throw new Exception(ex.Message); } return rootDataset; } internal static DataSet GetNewCCWiseSalaryDetails(TransactionContext tc, DateTime dSMonthDate, string sEmpID) { DataSet rootDataset = new DataSet(); DataSet tempdataset = new DataSet(); try { string GrossItem = SQLParser.MakeSQL(@"select A.EmployeeNo, A.Name,A.Designation,A.CRGDes,A.CRGID,A.ItemCode, A.ItemID,A.ItemGroup, A.Description, SUM(A.amonut) Amount,A.PERCENTAGE,A.DEPARTMENTID,A.Location from (select E.EmployeeNo, E.Name, sd.ItemGroup,sd.ItemCode, sd.ItemID, sd.Description, sd.changedamount*SEMCC.PERCENTAGE/100 as amonut, SEMCC.PERCENTAGE,D.Name as Designation,L.DESCRIPTION as Location, S.DEPARTMENTID, CC.DESCRIPTION as CRGDes,CC.CRGID from CRG as CC,LOCATION as L,SALARYEMPCOSTCENTER as SEMCC , DESIGNATION D,Employee E, SALARYMONTHLY S, SalaryMonthlyDetail Sd where S.EMPLOYEEID=SEMCC.EMPLOYEEID AND CC.CRGID=SEMCC.COSTCENTERID AND D.DESIGNATIONID=E.DESIGNATIONID AND E.employeeID=S.EmployeeID AND S.SalaryMonthlyID=Sd.SalaryMonthlyID AND SD.SALARYMONTHLYID=SEMCC.SALARYMONTHLYID AND S.SalaryMonth=%d and Sd.ItemGroup in(8) AND S.LOCATIONID=L.LOCATIONID AND S.EmployeeID IN(%q) union select E.EmployeeNo, E.Name, sd.ItemGroup,sd.ItemCode, sd.ItemID, sd.Description,sd.changedamount*SEMCC.PERCENTAGE/100 as amonut, SEMCC.PERCENTAGE, D.Name as Designation,L.DESCRIPTION as Location, S.DEPARTMENTID,CC.DESCRIPTION as CRGDes,CC.CRGID from CRG as CC,LOCATION as L, SALARYEMPCOSTCENTER as SEMCC,DESIGNATION D,Employee E,SALARYMONTHLY S, SalaryMonthlyDetail Sd where S.EMPLOYEEID=SEMCC.EMPLOYEEID AND CC.CRGID=SEMCC.COSTCENTERID AND D.DESIGNATIONID=E.DESIGNATIONID AND E.employeeID=S.EmployeeID AND SD.SALARYMONTHLYID=SEMCC.SALARYMONTHLYID AND S.SalaryMonthlyID=Sd.SalaryMonthlyID AND S.SalaryMonth=%d and Sd.ItemGroup in(1) AND S.LOCATIONID=L.LOCATIONID AND S.EmployeeID IN(%q) ) A group by A.EmployeeNo, A.Name,A.Designation,A.ItemGroup,A.Location,A.CRGID, A.CRGDes, A.ItemCode, A.ItemID, A.Description ,A.PERCENTAGE,A.DEPARTMENTID,A.Location order by A.CRGID,A.DEPARTMENTID", dSMonthDate, sEmpID, dSMonthDate, sEmpID); tempdataset = tc.ExecuteDataSet(GrossItem); tempdataset.Tables[0].TableName = "GrossItem"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); } catch (Exception ex) { throw new Exception(ex.Message); } return rootDataset; } internal static DataSet GetCCWiseOPIDetails(TransactionContext tc, DateTime dSMonthDate, string sEmpID) { DataSet rootDataset = new DataSet(); DataSet tempdataset = new DataSet(); try { string opiItem = SQLParser.MakeSQL(@"select distinct A.Description,A.amount as Amount,A.DEPARTMENTID,A.Designation, A.LOCATION,A.CRGID,A.CostCenter,A.SequenceNO,A.EMPLOYEENO,A.NAME,A.PERCENTAGE from (Select opd.DEPARTMENTID,opdi.Description,(opdi.NetAmount*EMPCC.PERCENTAGE/100)as amount, CC.CRGID,CC.Description as CostCenter,oi.SequenceNO,L.DESCRIPTION as LOCATION, E.EMPLOYEENO,E.NAME,D.NAME as Designation,EMPCC.PERCENTAGE from OPIItem oi, OPIProcess op, OPIProcessDetail opd,SALARYEMPCOSTCENTER EMPCC, CRG CC,OPIProcessDetailItem opdi,EMPLOYEE E,LOCATION L,DESIGNATION D Where op.OPIMonth = %d AND opd.EmployeeId IN(%q) AND op.OPIProcessID = opd.OPIProcessID AND opd.EmployeeId=E.EmployeeId AND opd.EmployeeId = EMPCC.EMPLOYEEID AND EMPCC.COSTCENTERID=CC.CRGID AND opd.OPIProcessDetailId = opdi.OPIProcessDetailId AND E.LOCATIONID=L.LOCATIONID AND oi.OPIItemId = opdi.OPIItemId AND opd.DESIGNATIONID=D.DESIGNATIONID)A order by A.CRGID,A.DEPARTMENTID", dSMonthDate, sEmpID); tempdataset = tc.ExecuteDataSet(opiItem); tempdataset.Tables[0].TableName = "OPIItem"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); } catch (Exception ex) { throw new Exception(ex.Message); } return rootDataset; } internal static DataSet GetCCWiseSummary(TransactionContext tc, DateTime dSMonthDate, string sEmpID) { DataSet rootDataset = new DataSet(); DataSet tempdataset = new DataSet(); try { string totalGross = SQLParser.MakeSQL(@"Select A.CostCenter,A.CRGID,A.DEPARTMENTID,E.Role,sum(A.amount)as Amount from( select S.EmployeeID,Sum(sd.changedamount)*EMPCC.PERCENTAGE/100 as amount, S.DEPARTMENTID,CC.DESCRIPTION as CostCenter,CC.CRGID from SALARYMONTHLY S,SalaryMonthlyDetail Sd,SALARYEMPCOSTCENTER EMPCC,CRG CC where S.SalaryMonthlyID=Sd.SalaryMonthlyID AND S.SalaryMonth=%d and Sd.ItemGroup IN (1, 8) AND S.SALARYMONTHLYID=EMPCC.SALARYMONTHLYID AND EMPCC.COSTCENTERID=CC.CRGID AND S.EmployeeID IN(%q) group by S.EmployeeID,S.DEPARTMENTID,CC.DESCRIPTION,CC.CRGID,EMPCC.PERCENTAGE)A,Employee E where A.EmployeeID = E.EmployeeID group by A.CostCenter,A.CRGID,A.DEPARTMENTID,E.Role order by A.CRGID,A.DEPARTMENTID", dSMonthDate, sEmpID); tempdataset = tc.ExecuteDataSet(totalGross); tempdataset.Tables[0].TableName = "TotalGross"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); string totalOPI = SQLParser.MakeSQL(@"select A.CostCenter,A.CRGID,A.DEPARTMENTID,A.Role,sum(A.amount)as Amount from (select opd.EmployeeID,Sum(opdi.NetAmount)*EMPCC.PERCENTAGE/100 as amount, opd.DEPARTMENTID,CC.DESCRIPTION as CostCenter,CC.CRGID,E.Role from OPIItem oi, OPIProcess op, OPIProcessDetail opd,SALARYEMPCOSTCENTER EMPCC, CRG CC,OPIProcessDetailItem opdi,EMPLOYEE E Where op.OPIMonth =%d AND opd.EmployeeId IN(%q) AND op.OPIProcessID = opd.OPIProcessID AND opd.EmployeeId=E.EmployeeId AND opd.EmployeeId = EMPCC.EMPLOYEEID AND EMPCC.COSTCENTERID=CC.CRGID AND opd.OPIProcessDetailId = opdi.OPIProcessDetailId AND oi.OPIItemId = opdi.OPIItemId group by opd.EmployeeID,EMPCC.PERCENTAGE,opd.DEPARTMENTID,CC.DESCRIPTION,CC.CRGID,E.Role)A group by A.CostCenter,A.CRGID,A.DEPARTMENTID,A.Role order by A.CRGID,A.DEPARTMENTID", dSMonthDate, sEmpID); tempdataset = tc.ExecuteDataSet(totalOPI); tempdataset.Tables[0].TableName = "TotalOPI"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); string coContri = SQLParser.MakeSQL(@"Select A.CostCenter,A.CRGID,A.DEPARTMENTID,E.Role,sum(A.amount)as Amount from( select S.EmployeeID,Sum(sd.changedamount)*EMPCC.PERCENTAGE/100 as amount, S.DEPARTMENTID,CC.DESCRIPTION as CostCenter,CC.CRGID from SALARYMONTHLY S,SalaryMonthlyDetail Sd,SALARYEMPCOSTCENTER EMPCC,CRG CC where S.SalaryMonthlyID=Sd.SalaryMonthlyID AND S.SalaryMonth=%d and Sd.ItemGroup IN(3)AND sd.ITEMCODE in(-128) AND S.SALARYMONTHLYID=EMPCC.SALARYMONTHLYID AND EMPCC.COSTCENTERID=CC.CRGID AND S.EmployeeID IN(%q) group by S.EmployeeID,S.DEPARTMENTID,CC.DESCRIPTION,CC.CRGID,EMPCC.PERCENTAGE)A,Employee E where A.EmployeeID = E.EmployeeID group by A.CostCenter,A.CRGID,A.DEPARTMENTID,E.Role order by A.CRGID,A.DEPARTMENTID", dSMonthDate, sEmpID); tempdataset = tc.ExecuteDataSet(coContri); tempdataset.Tables[0].TableName = "CoContri"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); } catch (Exception ex) { throw new Exception(ex.Message); } return rootDataset; } internal static DataSet GetItemWiseSalary(TransactionContext tc, string sEmpID, DateTime _SalaryMonth, DateTime toDate, string sSQL) { DataSet rootDataset = new DataSet(); DataSet tempdataset = new DataSet(); try { string SSalary = SQLParser.MakeSQL(@"select E.EmployeeNo,E.Name,S.SalaryMonth,sum(smd.ChangedAmount) as Amount from SalaryMonthly s inner join Employee E on S.EmployeeID=E.EmployeeID inner join SalaryMonthlyDetail smd on S.SalaryMonthlyID=smd.SalaryMonthlyID where S.EmployeeID in(%q) %q And S.SalaryMonth between %d and %d group by E.EmployeeNo,E.Name,S.SalaryMonth order by E.EmployeeNo,S.SalaryMonth", sEmpID, sSQL, _SalaryMonth, toDate); tempdataset = tc.ExecuteDataSet(SSalary); tempdataset.Tables[0].TableName = "ItemWiseSalary"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); } catch (Exception ex) { throw new Exception(ex.Message); } return rootDataset; } internal static DataSet GetEmpIndSalarySheet(TransactionContext tc, string sEmpID, string _months) { DataSet rootDataset = new DataSet(); DataSet tempdataset = new DataSet(); try { string query1 = SQLParser.MakeSQL(@"select A.EmployeeNo, A.Name,A.GName,A.DName,A.GCode,A.JoiningDate,A.SequenceNo, A.Description,A.SalaryMonth, SUM(A.changedamount) Amount from(select S.EmployeeID, E.EmployeeNo, E.Name,E.JoiningDate, sd.ItemGroup,sd.ItemCode,S.SalaryMonth, sd.ItemID, sd.Description,sd.Position, sd.changedamount,G.DESCRIPTION as GName,D.Name as DName,G.Code as GCode,G.SequenceNo from Grades G,DESIGNATION D,Employee E, SALARYMONTHLY S, SalaryMonthlyDetail Sd where G.GradeID= S.GradeID AND D.DESIGNATIONID=E.DESIGNATIONID AND E.employeeID=S.EmployeeID AND S.SalaryMonthlyID=Sd.SalaryMonthlyID AND S.SalaryMonth in(%q) and Sd.ItemGroup in(8) AND sd.ItemCode not in(-133) AND S.EmployeeID IN(%q) UNION select S.EmployeeID, E.EmployeeNo, E.Name,E.JoiningDate, sd.ItemGroup,sd.ItemCode,S.SalaryMonth,sd.ItemID, sd.Description,sd.Position, sd.changedamount,G.DESCRIPTION as GName,D.Name as DName,G.Code as GCode,G.SequenceNo from Grades G,DESIGNATION D,Employee E, SALARYMONTHLY S, SalaryMonthlyDetail Sd where G.GradeID= S.GradeID AND D.DESIGNATIONID=E.DESIGNATIONID AND E.employeeID=S.EmployeeID AND S.SalaryMonthlyID=Sd.SalaryMonthlyID AND S.SalaryMonth in(%q) and Sd.ItemGroup in(1) AND sd.ItemCode not in(-133) AND S.EmployeeID IN(%q) ) A group by A.EmployeeID, A.EmployeeNo, A.Name,A.GName,A.DName,A.SequenceNo,A.GCode, A.ItemCode,A.SalaryMonth, A.ItemID, A.Description,A.Position,A.JoiningDate order by A.SalaryMonth,A.Position,A.EmployeeNo,A.SequenceNo,A.GCode", _months, sEmpID, _months, sEmpID); tempdataset = tc.ExecuteDataSet(query1); tempdataset.Tables[0].TableName = "GrossItem"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); string query2 = SQLParser.MakeSQL(@"select E.EmployeeNo, E.Name,E.JoiningDate,A.GName,A.GCode,A.SequenceNo,A.DName,'Total Gross' as Description, Sum(A.amount) as amount,A.SalaryMonth from( select S.EmployeeID, Sum(sd.changedamount) as Amount, G.DESCRIPTION as GName,G.Code as GCode,G.SequenceNo,D.Name as DName,S.SalaryMonth from SALARYMONTHLY S,Grades G,DESIGNATION D, SalaryMonthlyDetail Sd where S.SalaryMonthlyID=Sd.SalaryMonthlyID AND G.GRADEID=S.GRADEID AND D.DESIGNATIONID=S.DESIGNATIONID AND S.SalaryMonth in(%q) and Sd.ItemGroup IN (1, 8) AND S.EmployeeID IN(%q) group by S.EmployeeID,G.DESCRIPTION,G.SequenceNo,G.Code,D.Name,S.SalaryMonth UNION select S.EmployeeID, -Sum(sd.changedamount) as Amount,G.DESCRIPTION as GName, G.Code as GCode,G.sequenceNo,D.Name as DName,S.SalaryMonth from GRADES G,DESIGNATION D,SALARYMONTHLY S, SalaryMonthlyDetail Sd where S.SalaryMonthlyID=Sd.SalaryMonthlyID AND S.SalaryMonth in(%q) AND G.GRADEID=S.GRADEID AND D.DESIGNATIONID=S.DESIGNATIONID and Sd.ItemGroup IN (2) AND S.EmployeeID IN(%q) group by S.EmployeeID,G.DESCRIPTION,G.SequenceNo,G.Code,D.Name,S.SalaryMonth ) A, Employee E where A.EmployeeID = E.EmployeeID group by E.EmployeeNo, E.Name,A.GName,A.SequenceNo,A.GCode,A.DName,E.JoiningDate,A.SalaryMonth", _months, sEmpID, _months, sEmpID); tempdataset = tc.ExecuteDataSet(query2); tempdataset.Tables[0].TableName = "TotalGross"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); string query3 = SQLParser.MakeSQL(@"select A.EmployeeNo, A.Name,A.JoiningDate,A.GName,A.GCode,A.SequenceNo,A.DName, A.Description, SUM(A.changedamount) Amount,A.ItemCode,A.ItemID ,A.SalaryMonth from (select S.EmployeeID, E.EmployeeNo, E.Name,E.JoiningDate,sd.ItemGroup,sd.ItemCode,S.SalaryMonth, sd.ItemID, sd.Description,sd.Position, sd.changedamount,G.DESCRIPTION as GName,G.Code as GCode,G.SequenceNo,D.Name as DName from Grades G,DESIGNATION D,Employee E, SALARYMONTHLY S, SalaryMonthlyDetail Sd where G.GradeID= S.GradeID AND D.DESIGNATIONID=E.DESIGNATIONID AND E.employeeID=S.EmployeeID AND S.SalaryMonthlyID=Sd.SalaryMonthlyID AND S.SalaryMonth in(%q) and Sd.ItemGroup=3 AND S.EmployeeID IN(%q) union select S.EmployeeID, E.EmployeeNo, E.Name,E.JoiningDate,sd.ItemGroup,sd.ItemCode,S.SalaryMonth, sd.ItemID, sd.Description,sd.Position, -sd.changedamount,G.DESCRIPTION as GName,G.Code as GCode,G.sequenceNo,D.Name as DName from Grades G,DESIGNATION D,Employee E, SALARYMONTHLY S, SalaryMonthlyDetail Sd where G.GradeID= S.GradeID AND D.DESIGNATIONID=E.DESIGNATIONID AND E.employeeID=S.EmployeeID AND S.SalaryMonthlyID=Sd.SalaryMonthlyID AND S.SalaryMonth in(%q) and Sd.ItemGroup=2 AND S.EmployeeID IN(%q) ) A group by A.EmployeeID, A.EmployeeNo, A.Name,A.GName,A.SequenceNo,A.GCode,A.DName,A.SalaryMonth, A.ItemCode, A.ItemID, A.Description,A.Position,A.JoiningDate order by A.SalaryMonth,A.EmployeeNo,A.Position,A.SequenceNo,A.GCode", _months, sEmpID, _months, sEmpID); tempdataset = tc.ExecuteDataSet(query3); tempdataset.Tables[0].TableName = "DeductItem"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); string query4 = SQLParser.MakeSQL(@"select A.EmployeeNo, A.Name,A.GName,A.GCode,A.SequenceNo, A.DName, A.Description, SUM(A.changedamount) Amount,A.SalaryMonth from ( select S.EmployeeID, E.EmployeeNo, E.Name, sd.ItemGroup,sd.ItemCode, sd.ItemID, sd.Description,sd.Position, sd.changedamount,S.SalaryMonth, G.DESCRIPTION as GName,G.Code as GCode,G.SequenceNo,D.Name as DName from Grades G,DESIGNATION D,Employee E, SALARYMONTHLY S, SalaryMonthlyDetail Sd where G.GradeID= S.GradeID AND D.DESIGNATIONID=E.DESIGNATIONID AND E.employeeID=S.EmployeeID AND S.SalaryMonthlyID=Sd.SalaryMonthlyID AND S.SalaryMonth in(%q) and Sd.ITEMCODE =-133 AND S.EmployeeID IN(%q) UNION select S.EmployeeID, E.EmployeeNo, E.Name, sd.ItemGroup, sd.ItemCode, sd.ItemID, sd.Description,sd.Position, sd.changedamount,S.SalaryMonth, G.DESCRIPTION as GName,G.Code as GCode,G.SequenceNo,D.Name as DName from Grades G,DESIGNATION D,Employee E, SALARYMONTHLY S, SalaryMonthlyDetail Sd where G.GradeID= S.GradeID AND D.DESIGNATIONID=E.DESIGNATIONID AND E.employeeID=S.EmployeeID AND S.SalaryMonthlyID=Sd.SalaryMonthlyID AND S.SalaryMonth in(%q) and Sd.ITEMCODE =-133 AND S.EmployeeID IN(%q) ) A group by A.EmployeeID, A.EmployeeNo, A.Name,A.GName,A.SequenceNo,A.GCode,A.DName, A.ItemCode, A.ItemID, A.Description,A.Position,A.SalaryMonth order by A.SalaryMonth,A.Position,A.SequenceNo,A.GCode,A.EmployeeNo", _months, sEmpID, _months, sEmpID); tempdataset = tc.ExecuteDataSet(query4); tempdataset.Tables[0].TableName = "LeaveDays"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); string query5 = SQLParser.MakeSQL(@"select E.EmployeeNo, E.Name,A.GName,A.GCode,A.sequenceNo,A.DName, 'UnAuthorized' as Description, Sum(A.amount) as amount,A.SalaryMonth from ( select S.EmployeeID, Sum(sd.changedamount) as Amount,G.DESCRIPTION as GName, G.Code as GCode,G.SequenceNo,D.Name as DName,S.SalaryMonth from GRADES G,DESIGNATION D,SALARYMONTHLY S,SalaryMonthlyDetail Sd where S.SalaryMonthlyID=Sd.SalaryMonthlyID AND S.SalaryMonth in(%q) AND G.GRADEID=S.GRADEID AND D.DESIGNATIONID=S.DESIGNATIONID and Sd.ItemGroup IN (2) AND S.EmployeeID IN(%q) group by S.EmployeeID,G.DESCRIPTION,G.SequenceNo,G.Code,D.Name,S.SalaryMonth ) A, Employee E where A.EmployeeID = E.EmployeeID group by E.EmployeeNo,E.Name,A.GName,A.SequenceNo,A.GCode,A.DName,A.SalaryMonth", _months, sEmpID); tempdataset = tc.ExecuteDataSet(query5); tempdataset.Tables[0].TableName = "UnAuthorized"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); string query6 = SQLParser.MakeSQL(@"select E.EmployeeNo, E.Name,E.JoiningDate,A.GName,A.GCode,A.SequenceNo,A.DName, 'Total Deduction' as Description, Sum(A.amount) as amount,A.SalaryMonth from( select S.EmployeeID, Sum(sd.changedamount) as Amount,S.SalaryMonth, G.DESCRIPTION as GName,G.Code as GCode,G.SequenceNo,D.Name as DName from GRADES G,DESIGNATION D,SALARYMONTHLY S,SalaryMonthlyDetail Sd where S.SalaryMonthlyID=Sd.SalaryMonthlyID AND S.SalaryMonth in(%q) AND G.GRADEID=S.GRADEID AND D.DESIGNATIONID=S.DESIGNATIONID and Sd.ItemGroup IN (2,3) AND S.EmployeeID IN(%q) group by S.EmployeeID,G.DESCRIPTION,G.SequenceNo,G.Code,D.Name,S.SalaryMonth ) A, Employee E where A.EmployeeID = E.EmployeeID group by E.EmployeeNo, E.Name,A.GName,A.SequenceNo,A.SalaryMonth, A.GCode,A.DName,E.JoiningDate order by A.SalaryMonth,E.EmployeeNo,A.sequenceno,A.GCode", _months, sEmpID); tempdataset = tc.ExecuteDataSet(query6); tempdataset.Tables[0].TableName = "TotalDeduction"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); string query7 = SQLParser.MakeSQL(@"Select E.EMPLOYEENO,E.NAME,E.JoiningDate,G.DESCRIPTION as GName,G.Code as GCode,S.SalaryMonth, G.SequenceNo,D.Name as DName ,'Net Pay' as Description,SD.CHANGEDAMOUNT as Amount from EMPLOYEE as E,GRADES as G,DESIGNATION D,SALARYMONTHLY as S,SALARYMONTHLYDETAIL as Sd where S.SalaryMonthlyID=Sd.SalaryMonthlyID AND S.SalaryMonth in(%q) AND G.GRADEID=S.GRADEID AND D.DESIGNATIONID=S.DESIGNATIONID AND E.EMPLOYEEID =S.EMPLOYEEID and Sd.ItemGroup IN (5) AND Sd.ItemCode IN(-132) AND S.EmployeeID IN(%q) order by S.SalaryMonth,E.EMPLOYEENO,G.SequenceNo,G.Code ", _months, sEmpID); tempdataset = tc.ExecuteDataSet(query7); tempdataset.Tables[0].TableName = "NetPay"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); string query8 = SQLParser.MakeSQL(@"Select E.EMPLOYEENO,E.NAME,E.JoiningDate,G.DESCRIPTION as GName,S.SalaryMonth, G.Code as GCode,G.SequenceNo,D.Name as DName ,'CPF' as Description,SD.CHANGEDAMOUNT as Amount from EMPLOYEE as E,GRADES as G,DESIGNATION D,SALARYMONTHLY as S,SALARYMONTHLYDETAIL as Sd where S.SalaryMonthlyID=Sd.SalaryMonthlyID AND S.SalaryMonth in(%q) AND G.GRADEID=S.GRADEID AND D.DESIGNATIONID=S.DESIGNATIONID AND E.EMPLOYEEID =S.EMPLOYEEID AND Sd.ItemGroup IN (3) AND Sd.ItemCode IN(-128) AND S.EmployeeID IN(%q) order by S.SalaryMonth,E.EMPLOYEENO,G.SequenceNo,G.Code ", _months, sEmpID); tempdataset = tc.ExecuteDataSet(query8); tempdataset.Tables[0].TableName = "CPF"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); } catch (Exception ex) { throw new Exception(ex.Message); } return rootDataset; } internal static DataSet GetPFLedger(TransactionContext tc, string sEmpID, DateTime FromDate, DateTime toDate) { DataSet rootDataset = new DataSet(); DataSet tempdataset = new DataSet(); try { string query1 = SQLParser.MakeSQL(@"Select A.Description,A.PFAmount,B.CPFAmount from (Select 'Opening' as Description,IsNull(sum(TranAmount),0) as PFAmount from PFTransaction PFT where TranDate < %d And TranType in(%n) and EmployeeID in (%q)) A , ( Select 'Opening' as Description, IsNull(sum(TranAmount),0) as CPFAmount from PFTransaction PFT where TranDate < %d And TranType in(%n) and EmployeeID in (%q)) B Where A.Description = B.Description", FromDate, (int)EnumPFTranType.PFAmount, sEmpID, FromDate, (int)EnumPFTranType.CPFAmount, sEmpID); // string query1 = SQLParser.MakeSQL(@"Select 'Opening' as Description,sum(TranAmount)as PFAmount,sum(TranAmount)as CPFAmount // from PFTransaction PFT where TranDate < %d // And TranType in(1,2) and EmployeeID in (%q)",FromDate,sEmpID); tempdataset = tc.ExecuteDataSet(query1); tempdataset.Tables[0].TableName = "Opening"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); string query2 = SQLParser.MakeSQL(@"Select A.TranDate as Description,A.PFAmount,B.CPFAmount from (Select TranDate,IsNull(sum(TranAmount),0)as PFAmount from PFTransaction PFT where TranDate between %d and %d And TranType in(%n) and EmployeeID in (%q) group by TranDate) A , ( Select TranDate, IsNull(sum(TranAmount),0) as CPFAmount from PFTransaction PFT where TranDate between %d and %d And TranType in(%n) and EmployeeID in (%q) group by TranDate) B Where A.TranDate = B.TranDate", FromDate, toDate, (int)EnumPFTranType.PFAmount, sEmpID, FromDate, toDate, (int)EnumPFTranType.CPFAmount, sEmpID); // string query2 = SQLParser.MakeSQL(@"Select distinct TranDate as Description,TranAmount as PFAmount,TranAmount as CPFAmount // from PFTransaction PFT where TranDate between %d and %d // And TranType in(1,2) and EmployeeID in (%q) // order by TranDate",FromDate,toDate,sEmpID); tempdataset = tc.ExecuteDataSet(query2); tempdataset.Tables[0].TableName = "TranDate"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); } catch (Exception ex) { throw new Exception(ex.Message); } return rootDataset; } internal static DataSet PrintEnvelop(TransactionContext tc, string sEmpID) { DataSet rootDataset = new DataSet(); DataSet tempdataset = new DataSet(); try { string query1 = SQLParser.MakeSQL(@"Select Distinct E.EmployeeNo,E.Name,D.Name as Designation,DE.DESCRIPTION as Department from Employee E,Designation D,DEPARTMENT DE where E.DesignationID= D.DesignationID and DE.DepartmentID = DE.DEPARTMENTID and E.EmployeeID in(%q) order by E.EmployeeNo", sEmpID); tempdataset = tc.ExecuteDataSet(query1); tempdataset.Tables[0].TableName = "Envelop"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); } catch (Exception ex) { throw new Exception(ex.Message); } return rootDataset; } internal static DataSet GetSalaryData(TransactionContext tc, string sEmpID, DateTime fromMonth, DateTime toMonth) { DataSet rootDataset = new DataSet(); DataSet tempdataset = new DataSet(); try { string query1 = SQLParser.MakeSQL(@"select sum(changedAmount) as Amount,ItemGroup, ItemCode, ItemID from salaryMonthly, salaryMonthlyDetail where salaryMonthly.salaryMonthlyid= salaryMonthlyDetail.salarymonthlyid" + " and salarymonth between %d and %d AND EmployeeID IN(%q) group by ItemGroup, ItemCode, ItemiD ", fromMonth, toMonth, sEmpID); tempdataset = tc.ExecuteDataSet(query1); tempdataset.Tables[0].TableName = "SalaryCertificate"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); string query2 = SQLParser.MakeSQL(@"select sum(changedAmount) as Amount,ItemGroup, ItemCode, ItemID from salaryMonthly, salaryMonthlyDetail where salaryMonthly.salaryMonthlyid= salaryMonthlyDetail.salarymonthlyid" + " and salarymonth between %d and %d AND EmployeeID IN(%q) AND ItemCode=-129 AND ItemID=-129 group by ItemGroup, ItemCode, ItemiD ", fromMonth, toMonth, sEmpID); tempdataset = tc.ExecuteDataSet(query2); tempdataset.Tables[0].TableName = "DeductItem"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); string query6 = SQLParser.MakeSQL(@"select sum(changedAmount) as Amount,ItemGroup, ItemCode, ItemID from salaryMonthly, salaryMonthlyDetail where salaryMonthly.salaryMonthlyid= salaryMonthlyDetail.salarymonthlyid" + " and salarymonth between %d and %d AND EmployeeID IN(%q) AND ItemCode=-129 AND ItemID=0 group by ItemGroup, ItemCode, ItemiD ", fromMonth, toMonth, sEmpID); tempdataset = tc.ExecuteDataSet(query6); tempdataset.Tables[0].TableName = "DeductItem2"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); string query3 = SQLParser.MakeSQL(@"select E.EmployeeNo, E.Name,E.JoiningDate, 'Bonus' as Description, Sum(A.Amount) as amount,Sum(A.taxamount) as taxamount,A.BonusID from( select B.EmployeeID, Sum(B.BonusAmount) as Amount,SUM(taxamount) as taxamount,B.BonusID from BONUSPROCESSDETAIL B where B.DisburseDate between %d and %d AND B.EmployeeID IN(%q) group by B.EmployeeID,B.BonusID ) A, Employee E where A.EmployeeID = E.EmployeeID group by E.EmployeeNo, E.Name, A.BonusID,E.JoiningDate order by E.EmployeeNo,A.BonusID", fromMonth, toMonth, sEmpID); tempdataset = tc.ExecuteDataSet(query3); tempdataset.Tables[0].TableName = "Bonus"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); } catch (Exception ex) { throw new Exception(ex.Message); } return rootDataset; } internal static DataSet GetSalarySheet(TransactionContext tc, string sEmpID, DateTime _SalaryMonth, DateTime toDate) { DataSet rootDataset = new DataSet(); DataSet tempdataset = new DataSet(); try { string query1 = SQLParser.MakeSQL(@"select A.EmployeeNo, A.Name,A.GName,A.DName,A.GCode,A.JoiningDate,A.SequenceNo, A.Description,A.ItemGroup,A.ItemCode,A.ItemID, SUM(A.changedamount) Amount from(select S.EmployeeID, E.EmployeeNo, E.Name,E.JoiningDate, sd.ItemGroup,sd.ItemCode, sd.ItemID, sd.Description,sd.Position, sd.changedamount,G.DESCRIPTION as GName,D.Name as DName,G.Code as GCode,G.SequenceNo from Grades G,DESIGNATION D,Employee E, SALARYMONTHLY S, SalaryMonthlyDetail Sd where G.GradeID= S.GradeID AND D.DESIGNATIONID=E.DESIGNATIONID AND E.employeeID=S.EmployeeID AND S.SalaryMonthlyID=Sd.SalaryMonthlyID AND S.SalaryMonth between %d and %d and Sd.ItemGroup in(8) AND sd.ItemCode not in(-133) AND S.EmployeeID IN(%q) UNION select S.EmployeeID, E.EmployeeNo, E.Name,E.JoiningDate, sd.ItemGroup,sd.ItemCode, sd.ItemID, sd.Description,sd.Position, sd.changedamount,G.DESCRIPTION as GName,D.Name as DName,G.Code as GCode, G.SequenceNo from Grades G,DESIGNATION D,Employee E, SALARYMONTHLY S, SalaryMonthlyDetail Sd where G.GradeID= S.GradeID AND D.DESIGNATIONID=E.DESIGNATIONID AND E.employeeID=S.EmployeeID AND S.SalaryMonthlyID=Sd.SalaryMonthlyID AND S.SalaryMonth between %d and %d and Sd.ItemGroup in(1) AND sd.ItemCode not in(-133) AND S.EmployeeID IN(%q) ) A group by A.EmployeeID, A.EmployeeNo, A.Name,A.GName,A.DName,A.SequenceNo,A.GCode, A.ItemCode, A.ItemID, A.Description,A.Position,A.JoiningDate,A.ItemGroup,A.ItemCode,A.ItemID order by A.EmployeeNo,A.SequenceNo,A.GCode", _SalaryMonth, toDate, sEmpID, _SalaryMonth, toDate, sEmpID); tempdataset = tc.ExecuteDataSet(query1); tempdataset.Tables[0].TableName = "SalaryCertificate"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); string query2 = SQLParser.MakeSQL(@"select E.EmployeeNo, E.Name,E.JoiningDate,A.GName,A.GCode,A.SequenceNo,A.DName, 'IncomeTax' as Description, Sum(A.amount) as amount from( select S.EmployeeID, Sum(sd.changedamount) as Amount, G.DESCRIPTION as GName,G.Code as GCode,G.SequenceNo,D.Name as DName from GRADES G,DESIGNATION D,SALARYMONTHLY S,SalaryMonthlyDetail Sd where S.SalaryMonthlyID=Sd.SalaryMonthlyID AND S.SalaryMonth between %d and %d AND G.GRADEID=S.GRADEID AND D.DESIGNATIONID=S.DESIGNATIONID and Sd.ItemGroup IN (2,3) AND S.EmployeeID IN(%q) group by S.EmployeeID,G.DESCRIPTION,G.SequenceNo,G.Code,D.Name ) A, Employee E where A.EmployeeID = E.EmployeeID group by E.EmployeeNo, E.Name,A.GName,A.SequenceNo, A.GCode,A.DName,E.JoiningDate order by E.EmployeeNo,A.sequenceno,A.GCode", _SalaryMonth, toDate, sEmpID); tempdataset = tc.ExecuteDataSet(query2); tempdataset.Tables[0].TableName = "DeductItem"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); string query3 = SQLParser.MakeSQL(@"select E.EmployeeNo, E.Name,E.JoiningDate, 'Bonus' as Description, Sum(A.Amount) as amount,A.BonusID from( select B.EmployeeID, Sum(B.BonusAmount) as Amount,B.BonusID from BONUSPROCESSDETAIL B where B.DisburseDate between %d and %d AND B.EmployeeID IN(%q) group by B.EmployeeID,B.BonusID ) A, Employee E where A.EmployeeID = E.EmployeeID group by E.EmployeeNo, E.Name, A.BonusID,E.JoiningDate order by E.EmployeeNo,A.BonusID", _SalaryMonth, toDate, sEmpID); tempdataset = tc.ExecuteDataSet(query3); tempdataset.Tables[0].TableName = "Bonus"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); } catch (Exception ex) { throw new Exception(ex.Message); } return rootDataset; } internal static DataSet GetEmpsFiscalYeartax(TransactionContext tc, string sEmpIDs, DateTime fromdate, DateTime toDate, int taxParamID) { DataSet rootDataset = new DataSet(); DataSet tempdataset = new DataSet(); try { string sSQuery = SQLParser.MakeSQL(@"Select E.EMPLOYEEID,sm.SalaryMonth as Fiscalmonth,smd.DESCRIPTION,smd.CHANGEDAMOUNT as Amount from dbo.SALARYMONTHLY sm inner join Employee E on E.EMPLOYEEID = sm.EmployeeId inner join dbo.SALARYMONTHLYDETAIL smd on sm.SALARYMONTHLYID = smd.SALARYMONTHLYID where sm.SalaryMonth between %d and %d and sm.EMPLOYEEID in(%q) and ItemGroup = 3 And ItemCode =-129 order by sm.EmployeeID,sm.SalaryMonth", fromdate, toDate, sEmpIDs); tempdataset = tc.ExecuteDataSet(sSQuery); tempdataset.Tables[0].TableName = "TaxSalary"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); string sBonustax = SQLParser.MakeSQL(@"Select bpd.EmployeeID ,bpd.Disbursedate as Fiscalmonth,'Bonus tax' as description,bpd.taxamount as Amount from dbo.BONUSPROCESSDETAIL bpd where bpd.DisburseDate between %d and %d and bpd.EmployeeID in(%q) order by bpd.Employeeid,bpd.DisburseDate", fromdate, toDate, sEmpIDs); tempdataset = tc.ExecuteDataSet(sBonustax); tempdataset.Tables[0].TableName = "TaxBonus"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); string sSettlementTax = SQLParser.MakeSQL(@"select fs.EmployeeID,E.ENDOFCONTRACTDATE as Fiscalmonth,'Settlement Tax' as Description, fs.TaxAmount as Amount from dbo.FSTran fs inner join Employee E on fs.EmployeeiD = E.EMPLOYEEID where E.ENDOFCONTRACTDATE between %d and %d and fs.EmployeeID in(%q) order by fs.Employeeid", fromdate, toDate, sEmpIDs); tempdataset = tc.ExecuteDataSet(sSettlementTax); tempdataset.Tables[0].TableName = "TaxSettlement"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); if (taxParamID == 0) { string sDeductedTax = SQLParser.MakeSQL(@"Select EmployeeID,ModifiedBy as FiscalMonth,'Tax Deducted' as Description,ThisYearTotal as Amount from INCOMETAXTEMP where Employeeid in(%q) and ItemCode=%n and ItemID=%n order by EmployeeID", sEmpIDs, EnumIncomeTaxItemGroup.Tax_Deducted, EnumIncomeTaxItemGroup.Tax_Deducted); tempdataset = tc.ExecuteDataSet(sDeductedTax); tempdataset.Tables[0].TableName = "TaxDeducted"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); string sIncreaseGrosstax = SQLParser.MakeSQL(@"Select EmployeeID,ModifiedBy as FiscalMonth,'Increase Gross Tax' as Description,ThisYearTotal as Amount from INCOMETAXTEMP where Employeeid in(%q) and ItemCode=%n and ItemID=%n order by EmployeeID", sEmpIDs, EnumIncomeTaxItemGroup.Tax_Gross_OtherAddable, EnumAllowOrDeduct.Allowance); tempdataset = tc.ExecuteDataSet(sIncreaseGrosstax); tempdataset.Tables[0].TableName = "TaxIncreaseGross"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); string sDecreaseGrossTax = SQLParser.MakeSQL(@"Select EmployeeID,ModifiedBy as FiscalMonth,'Decrease Gross Tax' as Description,ThisYearTotal as Amount from INCOMETAXTEMP where Employeeid in(%q) and ItemCode=%n and ItemID=%n order by EmployeeID", sEmpIDs, EnumIncomeTaxItemGroup.Tax_Gross_OtherRebate, EnumAllowOrDeduct.Deduction); tempdataset = tc.ExecuteDataSet(sDecreaseGrossTax); tempdataset.Tables[0].TableName = "TaxDecreaseGross"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); } else if (taxParamID > 0) { string sDeductedTax = SQLParser.MakeSQL(@"Select EmployeeID,ModifiedBy as FiscalMonth,'Tax Deducted' as Description,TotalAmount as Amount from INCOMETAXYEARLY where Employeeid in(%q) and ItemCode=%n and ItemID=%n and TaxParamID=%n order by EmployeeID", sEmpIDs, EnumIncomeTaxItemGroup.Tax_Deducted, EnumIncomeTaxItemGroup.Tax_Deducted, taxParamID); tempdataset = tc.ExecuteDataSet(sDeductedTax); tempdataset.Tables[0].TableName = "TaxDeducted"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); string sIncreaseGrosstax = SQLParser.MakeSQL(@"Select EmployeeID,ModifiedBy as FiscalMonth,'Increase Gross Tax' as Description,TotalAmount as Amount from INCOMETAXYEARLY where Employeeid in(%q) and ItemCode=%n and ItemID=%n and TaxParamID=%n order by EmployeeID", sEmpIDs, EnumIncomeTaxItemGroup.Tax_Gross_OtherAddable, EnumAllowOrDeduct.Allowance, taxParamID); tempdataset = tc.ExecuteDataSet(sIncreaseGrosstax); tempdataset.Tables[0].TableName = "TaxIncreaseGross"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); string sDecreaseGrossTax = SQLParser.MakeSQL(@"Select EmployeeID,ModifiedBy as FiscalMonth,'Decrease Gross Tax' as Description,TotalAmount as Amount from INCOMETAXYEARLY where Employeeid in(%q) and ItemCode=%n and ItemID=%n and TaxParamID=%n order by EmployeeID", sEmpIDs, EnumIncomeTaxItemGroup.Tax_Gross_OtherRebate, EnumAllowOrDeduct.Deduction, taxParamID); tempdataset = tc.ExecuteDataSet(sDecreaseGrossTax); tempdataset.Tables[0].TableName = "TaxDecreaseGross"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); } } catch (Exception ex) { throw new Exception(ex.Message); } return rootDataset; } internal static DataSet GetEmpstaxInvestment(TransactionContext tc, string sEmpIDs, int taxParamID) { DataSet rootDataset = new DataSet(); DataSet tempdataset = new DataSet(); string sItemCode = Convert.ToString((int)EnumIncomeTaxItemGroup.Company_Contri_PF) + "," + Convert.ToString((int)EnumIncomeTaxItemGroup.Annual_Salary_Income) + "," + Convert.ToString((int)EnumIncomeTaxItemGroup.Investment_Allowed); try { string sQuery = string.Empty; if (taxParamID == 0) { sQuery = SQLParser.MakeSQL(@"Select EmployeeID, sum(case When ItemCode = %n Then ThisYearTotal End)'Provident Fund', sum(case When ItemCode = %n Then ThisYearTotal End)'Salary Income', sum(case When ItemCode = %n Then ThisYearTotal End)'Investment Required' from Incometaxtemp Where EmployeeID in(%q) group by EmployeeID order by EmployeeID", (int)EnumIncomeTaxItemGroup.Company_Contri_PF, (int)EnumIncomeTaxItemGroup.Annual_Salary_Income, (int)EnumIncomeTaxItemGroup.Investment_Allowed, sEmpIDs); } else if (taxParamID > 0) { sQuery = SQLParser.MakeSQL(@"Select EmployeeID, sum(case When ItemCode = %n Then ThisYearTotal End)'Provident Fund', sum(case When ItemCode = %n Then ThisYearTotal End)'Salary Income', sum(case When ItemCode = %n Then ThisYearTotal End)'Investment Required' from IncometaxYearly Where EmployeeID in(%q) group by EmployeeID order by EmployeeID", (int)EnumIncomeTaxItemGroup.Company_Contri_PF, (int)EnumIncomeTaxItemGroup.Annual_Salary_Income, (int)EnumIncomeTaxItemGroup.Investment_Allowed, sEmpIDs); } tempdataset = tc.ExecuteDataSet(sQuery); tempdataset.Tables[0].TableName = "TaxInvestment"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); } catch (Exception ex) { throw new Exception(ex.Message); } return rootDataset; } internal static DataSet GetEmpstaxChallan(TransactionContext tc, string sEmpIDs, int taxParamId) { DataSet rootDataset = new DataSet(); DataSet tempdataset = new DataSet(); try { string sTaxChallan = SQLParser.MakeSQL(@"Select E.EmployeeNo,E.Name,D.Name as Designation,tc.ChallenNo,tc.DepositDate,tc.Amount from TaxChallan tc inner join Employee E on tc.EmployeeID = E.EmployeeiD inner join Designation D on E.DesignationID = D.DesignationID where tc.taxparamid=%n and tc.EmployeeiD in(%q) order by tc.EmployeeiD,tc.DepositDate,tc.ChallenNo", taxParamId, sEmpIDs); tempdataset = tc.ExecuteDataSet(sTaxChallan); tempdataset.Tables[0].TableName = "TaxChallan"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); } catch (Exception ex) { throw new Exception(ex.Message); } return rootDataset; } internal static DataSet GetEmployeesMasterData(TransactionContext tc, DateTime Fromdate, string sEmpID) { DataSet rootDataset = new DataSet(); DataSet tempdataset = new DataSet(); try { //Previous // string sSQLGrossItem = SQLParser.MakeSQL(@"Select E.EMPLOYEENO,E.NAME,P.Code as Unit,G.Code as Grade,d.DESCRIPTION as Department,d.ParentID, // des.NAME as Designation, // E.BIRTHDATE,E.JOININGDATE,E.DATEOFCONFIRMATION,E.GENDER,E.ENDOFCONTRACTDATE,E.EMAILADDRESS,EC.PRESENTMOBILE, // EC.EMERGENCYTELEPHONE,EC.PARMANENTADDRESS,EC.PRESENTADDRESS,E.FATHERNAME,E.MOTHERNAME,ES.NAME as SpouseName, // E.NationalID,E.ACCOUNTNO,EN.NAME as NomineeName1,EN.Name as NomineeName2, smd.Description, // SUM(smd.changedamount) Amount,'Salaries & Allowances(Taxable)' as GroupDescription,smd.POSITION // from Employee E // inner join Grades G on E.GradeID = G.GradeID // inner join Department d on E.DepartmentID = d.DepartmentID // LEFT JOIN Department p ON p.DEPARTMENTID = ISNULL(d.PARENTID,d.DEPARTMENTID) // inner join Designation des on E.DesignationID = des.DesignationID // left Outer join EMPCONTACT EC on E.EMPLOYEEID = EC.EMPLOYEEID // left Outer join EMPSPOUSE ES on E.EMPLOYEEID = ES.EMPLOYEEID // left Outer Join EMPNOMINEE EN on E.EMPLOYEEID = EN.EMPLOYEEID // inner join SalaryMonthly sm on E.EMPLOYEEID = sm.EmployeeID // inner join SalaryMonthlyDetail smd on smd.SalaryMonthlyID = sm.SalaryMonthlyID // where sm.SalaryMonth=%d and sm.EmployeeID in(%q) // and smd.ItemGroup in(1,8) // group by E.EMPLOYEENO,E.NAME,P.Code,G.Code,d.DESCRIPTION, des.NAME, // E.BIRTHDATE,E.JOININGDATE,E.DATEOFCONFIRMATION,E.GENDER,E.ENDOFCONTRACTDATE,E.EMAILADDRESS,EC.PRESENTMOBILE, // EC.EMERGENCYTELEPHONE,EC.PARMANENTADDRESS,EC.PRESENTADDRESS,E.FATHERNAME,E.MOTHERNAME,ES.NAME, // E.NationalID,E.ACCOUNTNO,EN.Name,EN.Name, smd.Description,smd.Position,d.ParentID // ORDER BY P.CODE", Fromdate, sEmpID); //new string sSQLGrossItem = SQLParser.MakeSQL(@"SELECT * from (Select E.EMPLOYEENO,E.NAME,P.Code as Unit,G.Code as Grade,d.DESCRIPTION as Department,d.ParentID, des.NAME as Designation, E.BIRTHDATE,E.JOININGDATE,E.DATEOFCONFIRMATION,E.GENDER,E.ENDOFCONTRACTDATE,E.EMAILADDRESS,EC.PRESENTMOBILE, EC.EMERGENCYTELEPHONE,EC.PARMANENTADDRESS,EC.PRESENTADDRESS,E.FATHERNAME,E.MOTHERNAME,ES.NAME as SpouseName, E.NationalID,E.ACCOUNTNO,EN.NAME as NomineeName1,EN.Name as NomineeName2, smd.Description, SUM(smd.changedamount) Amount,'Salaries & Allowances(Taxable)' as GroupDescription,smd.POSITION from Employee E inner join Grades G on E.GradeID = G.GradeID inner join Department d on E.DepartmentID = d.DepartmentID LEFT JOIN Department p ON p.DEPARTMENTID = ISNULL(d.PARENTID,d.DEPARTMENTID) inner join Designation des on E.DesignationID = des.DesignationID left Outer join EMPCONTACT EC on E.EMPLOYEEID = EC.EMPLOYEEID left Outer join EMPSPOUSE ES on E.EMPLOYEEID = ES.EMPLOYEEID left Outer Join EMPNOMINEE EN on E.EMPLOYEEID = EN.EMPLOYEEID inner join SalaryMonthly sm on E.EMPLOYEEID = sm.EmployeeID inner join SalaryMonthlyDetail smd on smd.SalaryMonthlyID = sm.SalaryMonthlyID where sm.SalaryMonth=%d and sm.EmployeeID in(%q) and smd.ItemGroup in(1,8) group by E.EMPLOYEENO,E.NAME,P.Code,G.Code,d.DESCRIPTION, des.NAME, E.BIRTHDATE,E.JOININGDATE,E.DATEOFCONFIRMATION,E.GENDER,E.ENDOFCONTRACTDATE,E.EMAILADDRESS,EC.PRESENTMOBILE, EC.EMERGENCYTELEPHONE,EC.PARMANENTADDRESS,EC.PRESENTADDRESS,E.FATHERNAME,E.MOTHERNAME,ES.NAME, E.NationalID,E.ACCOUNTNO,EN.Name,EN.Name, smd.Description,smd.Position,d.ParentID UNION Select E.EMPLOYEENO,E.NAME,P.Code as Unit,G.Code as Grade,d.DESCRIPTION as Department,d.ParentID, des.NAME as Designation, E.BIRTHDATE,E.JOININGDATE,E.DATEOFCONFIRMATION,E.GENDER,E.ENDOFCONTRACTDATE,E.EMAILADDRESS,EC.PRESENTMOBILE, EC.EMERGENCYTELEPHONE,EC.PARMANENTADDRESS,EC.PRESENTADDRESS,E.FATHERNAME,E.MOTHERNAME,ES.NAME as SpouseName, E.NationalID,E.ACCOUNTNO,EN.NAME as NomineeName1,EN.Name as NomineeName2, CASE WHEN smd.ITEMID=-128 THEN 'Provident Fund' ELSE smd.[DESCRIPTION] END [DESCRIPTION], SUM(smd.changedamount) Amount,'Salaries & Allowances(Taxable)' as GroupDescription,smd.POSITION from Employee E inner join Grades G on E.GradeID = G.GradeID inner join Department d on E.DepartmentID = d.DepartmentID LEFT JOIN Department p ON p.DEPARTMENTID = ISNULL(d.PARENTID,d.DEPARTMENTID) inner join Designation des on E.DesignationID = des.DesignationID left Outer join EMPCONTACT EC on E.EMPLOYEEID = EC.EMPLOYEEID left Outer join EMPSPOUSE ES on E.EMPLOYEEID = ES.EMPLOYEEID left Outer Join EMPNOMINEE EN on E.EMPLOYEEID = EN.EMPLOYEEID inner join SalaryMonthly sm on E.EMPLOYEEID = sm.EmployeeID inner join SalaryMonthlyDetail smd on smd.SalaryMonthlyID = sm.SalaryMonthlyID where sm.SalaryMonth=%d and sm.EmployeeID in(%q) and smd.ITEMID IN (-128) group by E.EMPLOYEENO,E.NAME,P.Code,G.Code,d.DESCRIPTION, des.NAME, E.BIRTHDATE,E.JOININGDATE,E.DATEOFCONFIRMATION,E.GENDER,E.ENDOFCONTRACTDATE,E.EMAILADDRESS,EC.PRESENTMOBILE, EC.EMERGENCYTELEPHONE,EC.PARMANENTADDRESS,EC.PRESENTADDRESS,E.FATHERNAME,E.MOTHERNAME,ES.NAME, E.NationalID,E.ACCOUNTNO,EN.Name,EN.Name, smd.Description,smd.Position,d.ParentID, smd.ITEMID) Tab1 ", Fromdate, sEmpID, Fromdate, sEmpID); tempdataset = tc.ExecuteDataSet(sSQLGrossItem); tempdataset.Tables[0].TableName = "GrossItem"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); //Previous // string sTotalGross = SQLParser.MakeSQL(@"Select E.EMPLOYEENO,E.NAME,P.Code as Unit,G.Code as Grade,d.DESCRIPTION as Department, // des.NAME as Designation,d.ParentID, // E.BIRTHDATE,E.JOININGDATE,E.DATEOFCONFIRMATION,E.GENDER,E.ENDOFCONTRACTDATE,E.EMAILADDRESS,EC.PRESENTMOBILE, // EC.EMERGENCYTELEPHONE,EC.PARMANENTADDRESS,EC.PRESENTADDRESS,E.FATHERNAME,E.MOTHERNAME,ES.NAME as SpouseName, // Max(smd.Position)as Position,E.NationalID,E.ACCOUNTNO,EN.NAME as NomineeName1,EN.Name as NomineeName2, // 'Total Gross'as Description, SUM(smd.changedamount) Amount,'Salaries & Allowances(Taxable)' as GroupDescription // from Employee E // inner join Grades G on E.GradeID = G.GradeID // inner join Department d on E.DepartmentID = d.DepartmentID // LEFT JOIN Department p ON p.DEPARTMENTID = ISNULL(d.PARENTID,d.DEPARTMENTID) // inner join Designation des on E.DesignationID = des.DesignationID // left Outer join EMPCONTACT EC on E.EMPLOYEEID = EC.EMPLOYEEID // left Outer join EMPSPOUSE ES on E.EMPLOYEEID = ES.EMPLOYEEID // left Outer Join EMPNOMINEE EN on E.EMPLOYEEID = EN.EMPLOYEEID // inner join SalaryMonthly sm on E.EMPLOYEEID = sm.EmployeeID // inner join SalaryMonthlyDetail smd on smd.SalaryMonthlyID = sm.SalaryMonthlyID // where sm.SalaryMonth=%d and sm.EmployeeID in(%q) // and smd.ItemGroup in(1,8) // group by E.EMPLOYEENO,E.NAME,P.Code,G.Code,d.DESCRIPTION, des.NAME, // E.BIRTHDATE,E.JOININGDATE,E.DATEOFCONFIRMATION,E.GENDER,E.ENDOFCONTRACTDATE,E.EMAILADDRESS,EC.PRESENTMOBILE, // EC.EMERGENCYTELEPHONE,EC.PARMANENTADDRESS,EC.PRESENTADDRESS,E.FATHERNAME,E.MOTHERNAME,ES.NAME, // E.NationalID,E.ACCOUNTNO,EN.Name,EN.Name,d.ParentID ORDER BY P.CODE", Fromdate, sEmpID); //New string sTotalGross = SQLParser.MakeSQL(@"SELECT tab1.EMPLOYEENO, tab1.[NAME], tab1.Unit,tab1.Grade, tab1.Department, tab1.Designation, tab1.ParentID, tab1.BIRTHDATE, tab1.JOININGDATE, tab1.DATEOFCONFIRMATION, tab1.GENDER, tab1.ENDOFCONTRACTDATE, tab1.EMAILADDRESS, tab1.PRESENTMOBILE, tab1.EMERGENCYTELEPHONE, tab1.PARMANENTADDRESS, tab1.PRESENTADDRESS, tab1.FATHERNAME,tab1.MOTHERNAME,tab1.SpouseName, tab1.NationalID,tab1.ACCOUNTNO,tab1.NomineeName1,tab1.NomineeName2, tab1.Description, SUM(tab1.Amount) Amount,tab1.GroupDescription From (Select E.EMPLOYEENO,E.NAME,P.Code as Unit,G.Code as Grade,d.DESCRIPTION as Department, des.NAME as Designation,d.ParentID, E.BIRTHDATE,E.JOININGDATE,E.DATEOFCONFIRMATION,E.GENDER,E.ENDOFCONTRACTDATE,E.EMAILADDRESS,EC.PRESENTMOBILE, EC.EMERGENCYTELEPHONE,EC.PARMANENTADDRESS,EC.PRESENTADDRESS,E.FATHERNAME,E.MOTHERNAME,ES.NAME as SpouseName, Max(smd.Position)as Position,E.NationalID,E.ACCOUNTNO,EN.NAME as NomineeName1,EN.Name as NomineeName2, 'Total Gross'as Description, SUM(smd.changedamount) Amount,'Salaries & Allowances(Taxable)' as GroupDescription from Employee E inner join Grades G on E.GradeID = G.GradeID inner join Department d on E.DepartmentID = d.DepartmentID LEFT JOIN Department p ON p.DEPARTMENTID = ISNULL(d.PARENTID,d.DEPARTMENTID) inner join Designation des on E.DesignationID = des.DesignationID left Outer join EMPCONTACT EC on E.EMPLOYEEID = EC.EMPLOYEEID left Outer join EMPSPOUSE ES on E.EMPLOYEEID = ES.EMPLOYEEID left Outer Join EMPNOMINEE EN on E.EMPLOYEEID = EN.EMPLOYEEID inner join SalaryMonthly sm on E.EMPLOYEEID = sm.EmployeeID inner join SalaryMonthlyDetail smd on smd.SalaryMonthlyID = sm.SalaryMonthlyID where sm.SalaryMonth=%d and sm.EmployeeID in(%q) and smd.ItemGroup in(1,8) group by E.EMPLOYEENO,E.NAME,P.Code,G.Code,d.DESCRIPTION, des.NAME, E.BIRTHDATE,E.JOININGDATE,E.DATEOFCONFIRMATION,E.GENDER,E.ENDOFCONTRACTDATE,E.EMAILADDRESS,EC.PRESENTMOBILE, EC.EMERGENCYTELEPHONE,EC.PARMANENTADDRESS,EC.PRESENTADDRESS,E.FATHERNAME,E.MOTHERNAME,ES.NAME, E.NationalID,E.ACCOUNTNO,EN.Name,EN.Name,d.ParentID UNION Select E.EMPLOYEENO,E.NAME,P.Code as Unit,G.Code as Grade,d.DESCRIPTION as Department, des.NAME as Designation,d.ParentID, E.BIRTHDATE,E.JOININGDATE,E.DATEOFCONFIRMATION,E.GENDER,E.ENDOFCONTRACTDATE,E.EMAILADDRESS,EC.PRESENTMOBILE, EC.EMERGENCYTELEPHONE,EC.PARMANENTADDRESS,EC.PRESENTADDRESS,E.FATHERNAME,E.MOTHERNAME,ES.NAME as SpouseName, Max(smd.Position)as Position,E.NationalID,E.ACCOUNTNO,EN.NAME as NomineeName1,EN.Name as NomineeName2, 'Total Gross'as Description, SUM(smd.changedamount) Amount,'Salaries & Allowances(Taxable)' as GroupDescription from Employee E inner join Grades G on E.GradeID = G.GradeID inner join Department d on E.DepartmentID = d.DepartmentID LEFT JOIN Department p ON p.DEPARTMENTID = ISNULL(d.PARENTID,d.DEPARTMENTID) inner join Designation des on E.DesignationID = des.DesignationID left Outer join EMPCONTACT EC on E.EMPLOYEEID = EC.EMPLOYEEID left Outer join EMPSPOUSE ES on E.EMPLOYEEID = ES.EMPLOYEEID left Outer Join EMPNOMINEE EN on E.EMPLOYEEID = EN.EMPLOYEEID inner join SalaryMonthly sm on E.EMPLOYEEID = sm.EmployeeID inner join SalaryMonthlyDetail smd on smd.SalaryMonthlyID = sm.SalaryMonthlyID where sm.SalaryMonth=%d and sm.EmployeeID in(%q) and smd.ITEMID in(-128) group by E.EMPLOYEENO,E.NAME,P.Code,G.Code,d.DESCRIPTION, des.NAME, E.BIRTHDATE,E.JOININGDATE,E.DATEOFCONFIRMATION,E.GENDER,E.ENDOFCONTRACTDATE,E.EMAILADDRESS,EC.PRESENTMOBILE, EC.EMERGENCYTELEPHONE,EC.PARMANENTADDRESS,EC.PRESENTADDRESS,E.FATHERNAME,E.MOTHERNAME,ES.NAME, E.NationalID,E.ACCOUNTNO,EN.Name,EN.Name,d.ParentID) Tab1 GROUP BY tab1.EMPLOYEENO, tab1.[NAME], tab1.Unit,tab1.Grade, tab1.Department, tab1.Designation, tab1.ParentID, tab1.BIRTHDATE, tab1.JOININGDATE, tab1.DATEOFCONFIRMATION, tab1.GENDER, tab1.ENDOFCONTRACTDATE, tab1.EMAILADDRESS, tab1.PRESENTMOBILE, tab1.EMERGENCYTELEPHONE, tab1.PARMANENTADDRESS, tab1.PRESENTADDRESS, tab1.FATHERNAME,tab1.MOTHERNAME,tab1.SpouseName, tab1.NationalID,tab1.ACCOUNTNO,tab1.NomineeName1,tab1.NomineeName2, tab1.Description, tab1.GroupDescription ", Fromdate, sEmpID, Fromdate, sEmpID); tempdataset = tc.ExecuteDataSet(sTotalGross); tempdataset.Tables[0].TableName = "TotalGross"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); string sOPIItem = SQLParser.MakeSQL(@"Select E.EMPLOYEENO,E.NAME, p.Code as Unit, G.Code as Grade,d.DESCRIPTION as Department, des.NAME as Designation,d.ParentID, E.BIRTHDATE,E.JOININGDATE,E.DATEOFCONFIRMATION,E.GENDER,E.ENDOFCONTRACTDATE,E.EMAILADDRESS,EC.PRESENTMOBILE, EC.EMERGENCYTELEPHONE,EC.PARMANENTADDRESS,EC.PRESENTADDRESS,E.FATHERNAME,E.MOTHERNAME,ES.NAME as SpouseName, E.NationalID,E.ACCOUNTNO,EN.NAME as NomineeName1,EN.Name as NomineeName2, opdi.Description, opdi.ChangeNetAmount as Amount,'Salaries Expenses' as GroupDescription from Employee E inner join Grades G on E.GradeID = G.GradeID inner join Department d on E.DepartmentID = d.DepartmentID LEFT JOIN Department p ON p.DEPARTMENTID = ISNULL(d.PARENTID,d.DEPARTMENTID) inner join Designation des on E.DesignationID = des.DesignationID left Outer join EMPCONTACT EC on E.EMPLOYEEID = EC.EMPLOYEEID left Outer join EMPSPOUSE ES on E.EMPLOYEEID = ES.EMPLOYEEID left Outer Join EMPNOMINEE EN on E.EMPLOYEEID = EN.EMPLOYEEID inner join OPIProcessDetail opd on E.EMPLOYEEID = opd.EmployeeID inner join OPIProcess op on op.OPIProcessID = opd.OPIProcessID inner join OPIProcessDetailItem opdi on opd.OPIProcessDetailID = opdi.OPIProcessDetailID where op.OPIMonth=%d and opd.EmployeeID in(%q) group by E.EMPLOYEENO,E.NAME, P.Code,G.Code,d.DESCRIPTION, des.NAME, E.BIRTHDATE,E.JOININGDATE,E.DATEOFCONFIRMATION,E.GENDER,E.ENDOFCONTRACTDATE,E.EMAILADDRESS,EC.PRESENTMOBILE, EC.EMERGENCYTELEPHONE,EC.PARMANENTADDRESS,EC.PRESENTADDRESS,E.FATHERNAME,E.MOTHERNAME,ES.NAME, E.NationalID,E.ACCOUNTNO,EN.Name,EN.Name,opdi.Description,opdi.ChangeNetAmount,d.ParentID ORDER BY p.CODE ", Fromdate, sEmpID); tempdataset = tc.ExecuteDataSet(sOPIItem); tempdataset.Tables[0].TableName = "OPIItem"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); string sTotalOPI = SQLParser.MakeSQL(@"Select E.EMPLOYEENO,E.NAME,p.Code as Unit,G.Code as Grade,d.DESCRIPTION as Department, des.NAME as Designation,d.ParentID, E.BIRTHDATE,E.JOININGDATE,E.DATEOFCONFIRMATION,E.GENDER,E.ENDOFCONTRACTDATE,E.EMAILADDRESS,EC.PRESENTMOBILE, EC.EMERGENCYTELEPHONE,EC.PARMANENTADDRESS,EC.PRESENTADDRESS,E.FATHERNAME,E.MOTHERNAME,ES.NAME as SpouseName, E.NationalID,E.ACCOUNTNO,EN.NAME as NomineeName1,EN.Name as NomineeName2, 'Total OPI' as Description,Sum(opdi.ChangeNetAmount) as Amount,'Salaries Expenses' as GroupDescription from Employee E inner join Grades G on E.GradeID = G.GradeID inner join Department d on E.DepartmentID = d.DepartmentID LEFT JOIN Department p ON p.DEPARTMENTID = ISNULL(d.PARENTID,d.DEPARTMENTID) inner join Designation des on E.DesignationID = des.DesignationID left Outer join EMPCONTACT EC on E.EMPLOYEEID = EC.EMPLOYEEID left Outer join EMPSPOUSE ES on E.EMPLOYEEID = ES.EMPLOYEEID left Outer Join EMPNOMINEE EN on E.EMPLOYEEID = EN.EMPLOYEEID inner join OPIProcessDetail opd on E.EMPLOYEEID = opd.EmployeeID inner join OPIProcess op on op.OPIProcessID = opd.OPIProcessID inner join OPIProcessDetailItem opdi on opd.OPIProcessDetailID = opdi.OPIProcessDetailID where op.OPIMonth=%d and opd.EmployeeID in(%q) group by E.EMPLOYEENO,E.NAME,P.Code,G.Code,d.DESCRIPTION,des.NAME, E.BIRTHDATE,E.JOININGDATE,E.DATEOFCONFIRMATION,E.GENDER,E.ENDOFCONTRACTDATE,E.EMAILADDRESS,EC.PRESENTMOBILE, EC.EMERGENCYTELEPHONE,EC.PARMANENTADDRESS,EC.PRESENTADDRESS,E.FATHERNAME,E.MOTHERNAME,ES.NAME, E.NationalID,E.ACCOUNTNO,EN.Name,EN.Name,opdi.Description,d.ParentID ORDER BY p.CODE", Fromdate, sEmpID); tempdataset = tc.ExecuteDataSet(sTotalOPI); tempdataset.Tables[0].TableName = "Total OPI"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); //Previous // string sDeductedItem = SQLParser.MakeSQL(@"Select E.EMPLOYEENO,E.NAME,p.Code as Unit,G.Code as Grade,d.DESCRIPTION as Department, // des.NAME as Designation,d.ParentID, // E.BIRTHDATE,E.JOININGDATE,E.DATEOFCONFIRMATION,E.GENDER,E.ENDOFCONTRACTDATE,E.EMAILADDRESS,EC.PRESENTMOBILE, // EC.EMERGENCYTELEPHONE,EC.PARMANENTADDRESS,EC.PRESENTADDRESS,E.FATHERNAME,E.MOTHERNAME,ES.NAME as SpouseName, // E.NationalID,E.ACCOUNTNO,EN.NAME as NomineeName1,EN.Name as NomineeName2,smd.Description, // smd.changedamount as Amount,'Deduction from Salary' as GroupDescription,smd.POSITION // from Employee E // inner join Grades G on E.GradeID = G.GradeID // inner join Department d on E.DepartmentID = d.DepartmentID // LEFT JOIN Department p ON p.DEPARTMENTID = ISNULL(d.PARENTID,d.DEPARTMENTID) // inner join Designation des on E.DesignationID = des.DesignationID // left Outer join EMPCONTACT EC on E.EMPLOYEEID = EC.EMPLOYEEID // left Outer join EMPSPOUSE ES on E.EMPLOYEEID = ES.EMPLOYEEID // left Outer Join EMPNOMINEE EN on E.EMPLOYEEID = EN.EMPLOYEEID // inner join SalaryMonthly sm on E.EMPLOYEEID = sm.EmployeeID // inner join SalaryMonthlyDetail smd on smd.SalaryMonthlyID = sm.SalaryMonthlyID // where sm.SalaryMonth=%d and sm.EmployeeID in(%q) // and smd.ItemGroup in(3) // group by E.EMPLOYEENO,E.NAME,P.Code,G.Code,d.DESCRIPTION,des.NAME, // E.BIRTHDATE,E.JOININGDATE,E.DATEOFCONFIRMATION,E.GENDER,E.ENDOFCONTRACTDATE,E.EMAILADDRESS,EC.PRESENTMOBILE, // EC.EMERGENCYTELEPHONE,EC.PARMANENTADDRESS,EC.PRESENTADDRESS,E.FATHERNAME,E.MOTHERNAME,ES.NAME, // E.NationalID,E.ACCOUNTNO,EN.Name,EN.Name,smd.Description, smd.changedamount,smd.POSITION,d.ParentID // ORDER BY P.CODE ", Fromdate, sEmpID); //New string sDeductedItem = SQLParser.MakeSQL(@"Select E.EMPLOYEENO,E.NAME,p.Code as Unit,G.Code as Grade,d.DESCRIPTION as Department, des.NAME as Designation,d.ParentID, E.BIRTHDATE,E.JOININGDATE,E.DATEOFCONFIRMATION,E.GENDER,E.ENDOFCONTRACTDATE,E.EMAILADDRESS,EC.PRESENTMOBILE, EC.EMERGENCYTELEPHONE,EC.PARMANENTADDRESS,EC.PRESENTADDRESS,E.FATHERNAME,E.MOTHERNAME,ES.NAME as SpouseName, E.NationalID,E.ACCOUNTNO,EN.NAME as NomineeName1,EN.Name as NomineeName2,CASE WHEN smd.ITEMID=-128 THEN 'Provident Fund-Both Contribution' ELSE smd.[DESCRIPTION] END [DESCRIPTION], CASE WHEN smd.ITEMID=-128 THEN SUM(smd.ChangedAmount*2) ELSE SUM(smd.ChangedAmount) END Amount,'Deduction from Salary' as GroupDescription,smd.POSITION from Employee E inner join Grades G on E.GradeID = G.GradeID inner join Department d on E.DepartmentID = d.DepartmentID LEFT JOIN Department p ON p.DEPARTMENTID = ISNULL(d.PARENTID,d.DEPARTMENTID) inner join Designation des on E.DesignationID = des.DesignationID left Outer join EMPCONTACT EC on E.EMPLOYEEID = EC.EMPLOYEEID left Outer join EMPSPOUSE ES on E.EMPLOYEEID = ES.EMPLOYEEID left Outer Join EMPNOMINEE EN on E.EMPLOYEEID = EN.EMPLOYEEID inner join SalaryMonthly sm on E.EMPLOYEEID = sm.EmployeeID inner join SalaryMonthlyDetail smd on smd.SalaryMonthlyID = sm.SalaryMonthlyID where sm.SalaryMonth=%d and sm.EmployeeID in(%q) and smd.ItemGroup in(3) group by E.EMPLOYEENO,E.NAME,P.Code,G.Code,d.DESCRIPTION,des.NAME, E.BIRTHDATE,E.JOININGDATE,E.DATEOFCONFIRMATION,E.GENDER,E.ENDOFCONTRACTDATE,E.EMAILADDRESS,EC.PRESENTMOBILE, EC.EMERGENCYTELEPHONE,EC.PARMANENTADDRESS,EC.PRESENTADDRESS,E.FATHERNAME,E.MOTHERNAME,ES.NAME, E.NationalID,E.ACCOUNTNO,EN.Name,EN.Name,smd.Description, smd.changedamount,smd.POSITION,d.ParentID, smd.ITEMID ORDER BY P.CODE ", Fromdate, sEmpID); tempdataset = tc.ExecuteDataSet(sDeductedItem); tempdataset.Tables[0].TableName = "Deducted Items"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); //Pervious // string sTotalDeduction = SQLParser.MakeSQL(@"Select E.EMPLOYEENO,E.NAME,P.Code as Unit,G.Code as Grade,d.DESCRIPTION as Department, // des.NAME as Designation,d.ParentID, // E.BIRTHDATE,E.JOININGDATE,E.DATEOFCONFIRMATION,E.GENDER,E.ENDOFCONTRACTDATE,E.EMAILADDRESS,EC.PRESENTMOBILE, // EC.EMERGENCYTELEPHONE,EC.PARMANENTADDRESS,EC.PRESENTADDRESS,E.FATHERNAME,E.MOTHERNAME,ES.NAME as SpouseName, // E.NationalID,E.ACCOUNTNO,EN.NAME as NomineeName1,EN.Name as NomineeName2,'Total Deduction' as Description, // Sum(smd.changedamount) as Amount,'Deduction from Salary' as GroupDescription // from Employee E // inner join Grades G on E.GradeID = G.GradeID // inner join Department d on E.DepartmentID = d.DepartmentID // LEFT JOIN Department p ON p.DEPARTMENTID = ISNULL(d.PARENTID,d.DEPARTMENTID) // inner join Designation des on E.DesignationID = des.DesignationID // left Outer join EMPCONTACT EC on E.EMPLOYEEID = EC.EMPLOYEEID // left Outer join EMPSPOUSE ES on E.EMPLOYEEID = ES.EMPLOYEEID // left Outer Join EMPNOMINEE EN on E.EMPLOYEEID = EN.EMPLOYEEID // inner join SalaryMonthly sm on E.EMPLOYEEID = sm.EmployeeID // inner join SalaryMonthlyDetail smd on smd.SalaryMonthlyID = sm.SalaryMonthlyID // where sm.SalaryMonth=%d and sm.EmployeeID in(%q) // and smd.ItemGroup in(3) // group by E.EMPLOYEENO,E.NAME,P.Code,G.Code,d.DESCRIPTION, des.NAME, // E.BIRTHDATE,E.JOININGDATE,E.DATEOFCONFIRMATION,E.GENDER,E.ENDOFCONTRACTDATE,E.EMAILADDRESS,EC.PRESENTMOBILE, // EC.EMERGENCYTELEPHONE,EC.PARMANENTADDRESS,EC.PRESENTADDRESS,E.FATHERNAME,E.MOTHERNAME,ES.NAME, // E.NationalID,E.ACCOUNTNO,EN.Name,EN.Name,d.ParentID // ORDER BY P.CODE", Fromdate, sEmpID); string sTotalDeduction = SQLParser.MakeSQL(@"Select E.EMPLOYEENO,E.NAME,P.Code as Unit,G.Code as Grade,d.DESCRIPTION as Department, des.NAME as Designation,d.ParentID, E.BIRTHDATE,E.JOININGDATE,E.DATEOFCONFIRMATION,E.GENDER,E.ENDOFCONTRACTDATE,E.EMAILADDRESS,EC.PRESENTMOBILE, EC.EMERGENCYTELEPHONE,EC.PARMANENTADDRESS,EC.PRESENTADDRESS,E.FATHERNAME,E.MOTHERNAME,ES.NAME as SpouseName, E.NationalID,E.ACCOUNTNO,EN.NAME as NomineeName1,EN.Name as NomineeName2,'Total Deduction' as Description, CASE WHEN smd.ITEMID=-128 THEN SUM(smd.ChangedAmount*2) ELSE SUM(smd.ChangedAmount) END Amount,'Deduction from Salary' as GroupDescription from Employee E inner join Grades G on E.GradeID = G.GradeID inner join Department d on E.DepartmentID = d.DepartmentID LEFT JOIN Department p ON p.DEPARTMENTID = ISNULL(d.PARENTID,d.DEPARTMENTID) inner join Designation des on E.DesignationID = des.DesignationID left Outer join EMPCONTACT EC on E.EMPLOYEEID = EC.EMPLOYEEID left Outer join EMPSPOUSE ES on E.EMPLOYEEID = ES.EMPLOYEEID left Outer Join EMPNOMINEE EN on E.EMPLOYEEID = EN.EMPLOYEEID inner join SalaryMonthly sm on E.EMPLOYEEID = sm.EmployeeID inner join SalaryMonthlyDetail smd on smd.SalaryMonthlyID = sm.SalaryMonthlyID where sm.SalaryMonth=%d and sm.EmployeeID in(%q) and smd.ItemGroup in(3) group by E.EMPLOYEENO,E.NAME,P.Code,G.Code,d.DESCRIPTION, des.NAME, E.BIRTHDATE,E.JOININGDATE,E.DATEOFCONFIRMATION,E.GENDER,E.ENDOFCONTRACTDATE,E.EMAILADDRESS,EC.PRESENTMOBILE, EC.EMERGENCYTELEPHONE,EC.PARMANENTADDRESS,EC.PRESENTADDRESS,E.FATHERNAME,E.MOTHERNAME,ES.NAME, E.NationalID,E.ACCOUNTNO,EN.Name,EN.Name,d.ParentID, smd.ITEMID ORDER BY P.CODE", Fromdate, sEmpID); tempdataset = tc.ExecuteDataSet(sTotalDeduction); tempdataset.Tables[0].TableName = "Total Deduction"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); string sNetPay = SQLParser.MakeSQL(@"Select tbGross.*,IsNull((IsNull(tbOPI.Amount,0)+tbGross.PreAmount - tbDeduction.Amount),0)as Amount from ( Select E.EMPLOYEENO,E.NAME,P.Code as Unit, G.Code as Grade,d.DESCRIPTION as Department, des.NAME as Designation,d.ParentID, E.BIRTHDATE,E.JOININGDATE,E.DATEOFCONFIRMATION,E.GENDER,E.ENDOFCONTRACTDATE,E.EMAILADDRESS,EC.PRESENTMOBILE, EC.EMERGENCYTELEPHONE,EC.PARMANENTADDRESS,EC.PRESENTADDRESS,E.FATHERNAME,E.MOTHERNAME,ES.NAME as SpouseName,Max(smd.Position)as Position, E.NationalID,E.ACCOUNTNO,EN.NAME as NomineeName1,EN.Name as NomineeName2, 'Net Salary'as Description, SUM(smd.changedamount) PreAmount,'' as GroupDescription from Employee E inner join Grades G on E.GradeID = G.GradeID inner join Department d on E.DepartmentID = d.DepartmentID LEFT JOIN Department p ON p.DEPARTMENTID = ISNULL(d.PARENTID,d.DEPARTMENTID) inner join Designation des on E.DesignationID = des.DesignationID left Outer join EMPCONTACT EC on E.EMPLOYEEID = EC.EMPLOYEEID left Outer join EMPSPOUSE ES on E.EMPLOYEEID = ES.EMPLOYEEID left Outer Join EMPNOMINEE EN on E.EMPLOYEEID = EN.EMPLOYEEID inner join SalaryMonthly sm on E.EMPLOYEEID = sm.EmployeeID inner join SalaryMonthlyDetail smd on smd.SalaryMonthlyID = sm.SalaryMonthlyID where sm.SalaryMonth=%d and sm.EmployeeID in(%q) and smd.ItemGroup in(1,8) group by E.EMPLOYEENO,E.NAME,P.Code, G.Code,d.DESCRIPTION,des.NAME, E.BIRTHDATE,E.JOININGDATE,E.DATEOFCONFIRMATION,E.GENDER,E.ENDOFCONTRACTDATE,E.EMAILADDRESS,EC.PRESENTMOBILE, EC.EMERGENCYTELEPHONE,EC.PARMANENTADDRESS,EC.PRESENTADDRESS,E.FATHERNAME,E.MOTHERNAME,ES.NAME, E.NationalID,E.ACCOUNTNO,EN.Name,EN.Name,d.ParentID)tbGross left join ( Select E.EMPLOYEENO,E.NAME,P.Code as Unit, G.Code as Grade,d.DESCRIPTION as Department, des.NAME as Designation,d.ParentID, E.BIRTHDATE,E.JOININGDATE,E.DATEOFCONFIRMATION,E.GENDER,E.ENDOFCONTRACTDATE,E.EMAILADDRESS,EC.PRESENTMOBILE, EC.EMERGENCYTELEPHONE,EC.PARMANENTADDRESS,EC.PRESENTADDRESS,E.FATHERNAME,E.MOTHERNAME,ES.NAME as SpouseName, E.NationalID,E.ACCOUNTNO,EN.NAME as NomineeName1,EN.Name as NomineeName2, 'Total OPI' as Description, Sum(opdi.ChangeNetAmount) as Amount,'' as GroupDescription from Employee E inner join Grades G on E.GradeID = G.GradeID inner join Department d on E.DepartmentID = d.DepartmentID LEFT JOIN Department p ON p.DEPARTMENTID = ISNULL(d.PARENTID,d.DEPARTMENTID) inner join Designation des on E.DesignationID = des.DesignationID left Outer join EMPCONTACT EC on E.EMPLOYEEID = EC.EMPLOYEEID left Outer join EMPSPOUSE ES on E.EMPLOYEEID = ES.EMPLOYEEID left Outer Join EMPNOMINEE EN on E.EMPLOYEEID = EN.EMPLOYEEID inner join OPIProcessDetail opd on E.EMPLOYEEID = opd.EmployeeID inner join OPIProcess op on op.OPIProcessID = opd.OPIProcessID inner join OPIProcessDetailItem opdi on opd.OPIProcessDetailID = opdi.OPIProcessDetailID where op.OPIMonth=%d and opd.EmployeeID in(%q) group by E.EMPLOYEENO,E.NAME, P.Code,G.Code,d.DESCRIPTION,des.NAME, E.BIRTHDATE,E.JOININGDATE,E.DATEOFCONFIRMATION,E.GENDER,E.ENDOFCONTRACTDATE,E.EMAILADDRESS,EC.PRESENTMOBILE, EC.EMERGENCYTELEPHONE,EC.PARMANENTADDRESS,EC.PRESENTADDRESS,E.FATHERNAME,E.MOTHERNAME,ES.NAME, E.NationalID,E.ACCOUNTNO,EN.Name,EN.Name,opdi.Description,d.ParentID)tbOPI on tbGross.EmployeeNo = tbOPI.EmployeeNo left join ( Select E.EMPLOYEENO,E.NAME,P.Code as Unit, G.Code as Grade,d.DESCRIPTION as Department, des.NAME as Designation,d.ParentID, E.BIRTHDATE,E.JOININGDATE,E.DATEOFCONFIRMATION,E.GENDER,E.ENDOFCONTRACTDATE,E.EMAILADDRESS,EC.PRESENTMOBILE, EC.EMERGENCYTELEPHONE,EC.PARMANENTADDRESS,EC.PRESENTADDRESS,E.FATHERNAME,E.MOTHERNAME,ES.NAME as SpouseName, E.NationalID,E.ACCOUNTNO,EN.NAME as NomineeName1,EN.Name as NomineeName2,'Total Deduction' as Description, Sum(smd.changedamount) as Amount,'' as GroupDescription from Employee E inner join Grades G on E.GradeID = G.GradeID inner join Department d on E.DepartmentID = d.DepartmentID LEFT JOIN Department p ON p.DEPARTMENTID = ISNULL(d.PARENTID,d.DEPARTMENTID) inner join Designation des on E.DesignationID = des.DesignationID left Outer join EMPCONTACT EC on E.EMPLOYEEID = EC.EMPLOYEEID left Outer join EMPSPOUSE ES on E.EMPLOYEEID = ES.EMPLOYEEID left Outer Join EMPNOMINEE EN on E.EMPLOYEEID = EN.EMPLOYEEID inner join SalaryMonthly sm on E.EMPLOYEEID = sm.EmployeeID inner join SalaryMonthlyDetail smd on smd.SalaryMonthlyID = sm.SalaryMonthlyID where sm.SalaryMonth=%d and sm.EmployeeID in(%q) and smd.ItemGroup in(3) group by E.EMPLOYEENO,E.NAME,P.Code, G.Code,d.DESCRIPTION,des.NAME, E.BIRTHDATE,E.JOININGDATE,E.DATEOFCONFIRMATION,E.GENDER,E.ENDOFCONTRACTDATE,E.EMAILADDRESS,EC.PRESENTMOBILE, EC.EMERGENCYTELEPHONE,EC.PARMANENTADDRESS,EC.PRESENTADDRESS,E.FATHERNAME,E.MOTHERNAME,ES.NAME, E.NationalID,E.ACCOUNTNO,EN.Name,EN.Name,d.ParentID) tbDeduction on tbGross.EMPLOYEENO = tbDeduction.EMPLOYEENO ", Fromdate, sEmpID, Fromdate, sEmpID, Fromdate, sEmpID); tempdataset = tc.ExecuteDataSet(sNetPay); tempdataset.Tables[0].TableName = "Net Pay"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); } catch (Exception ex) { throw new Exception(ex.Message); } return rootDataset; } internal static DataSet GetEmployeesPF(TransactionContext tc, DateTime dateTime, string sUnitID) { DataSet rootDataset = new DataSet(); DataSet tempdataset = new DataSet(); try { string sSQLPF = SQLParser.MakeSQL(@"Select distinct tb1.Department,tb1.EPF,tb1.CPF,tb1.ParentID,IsNull(tb3.PFLoan,0)PFLoan, IsNull(tb3.PFLoanInterest,0)PFLoanInterest,tb2.Description as Unit from ( SELECT Max(E.EMPLOYEEID)EmployeeID, Sum(Case WHEN pft.TranType= %n THEN pft.TRANAMOUNT ELSE 0 END)as EPF, Sum(Case WHEN pft.TranType= %n THEN pft.TRANAMOUNT ELSE 0 END)as CPF, D.DESCRIPTION as Department,D.ParentID from Department D Left Outer join Employee E on E.DepartmentID = D.DepartmentID inner join PFTransaction pft on e.EmployeeID = pft.EmployeeiD where pft.TranDate = %d group by D.DESCRIPTION,D.ParentID)tb1 left JOIN ( SELECT Max(sm.EMPLOYEEID)EmployeeID, SUM(CASE WHEN smd.ITEMCODE = %n AND smd.ITEMGROUP=%n AND smd.ITEMID = 1 THEN smd.CHANGEDAMOUNT ELSE 0 END) AS PFLoan, SUM(CASE WHEN smd.ITEMCODE=%n AND smd.ITEMGROUP=%n AND smd.ITEMID=1 THEN smd.CHANGEDAMOUNT ELSE 0 END) AS PFLoanInterest, D.DESCRIPTION as Department,D.ParentID from SalaryMonthly sm Left Outer join Department D on D.DepartmentID = sm.DepartmentID inner join Employee e on e.EmployeeID = sm.EmployeeiD INNER JOIN SALARYMONTHLYDETAIL smd ON sm.SALARYMONTHLYID = smd.SALARYMONTHLYID where sm.SalaryMonth = %d group by D.DESCRIPTION,D.ParentID )AS tb3 On tb1.Department=tb3.Department AND tb1.ParentID = tb3.ParentID inner join ( Select DepartmentID,Code,Description from Department where ParentID is Null)tb2 on tb1.ParentID=tb2.DepartmentID where tb1.ParentID in(%q)", (int)EnumPFTranType.PFAmount, (int)EnumPFTranType.CPFAmount, dateTime, (int)EnumSalaryItemCode.Loan_Monthly_Installment, (int)EnumSalaryGroup.Deductions, (int)EnumSalaryItemCode.Loan_Monthly_Interest, (int)EnumSalaryGroup.Deductions, dateTime, sUnitID); tempdataset = tc.ExecuteDataSet(sSQLPF); tempdataset.Tables[0].TableName = "PF"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); } catch (Exception ex) { throw new Exception(ex.Message); } return rootDataset; } internal static DataSet GetStuffListWithoutSalary(TransactionContext tc, DateTime fromdate, string sEmpID) { DataSet rootDataset = new DataSet(); DataSet tempdataset = new DataSet(); try { string sSQLStuffList = SQLParser.MakeSQL(@"SELECT E.EmployeeNo,E.[NAME],(D.[NAME])AS Designation, (De.[DESCRIPTION])AS Department,E.ACCOUNTNO,E.JOININGDATE,CC.DESCRIPTION AS CostCenter FROM EMPLOYEE E left JOIN Designation D ON E.DESIGNATIONID = D.DESIGNATIONID LEFT JOIN Department De ON E.DEPARTMENTID = De.DEPARTMENTID Left JOIN EMPCOSTCENTER empcc ON E.EMPLOYEEID = empcc.EMPLOYEEID INNER JOIN CRG CC ON CC.CRGID = empcc.COSTCENTERID WHERE e.EMPLOYEEID IN(%q) AND empcc.CurrentCC=1", sEmpID); tempdataset = tc.ExecuteDataSet(sSQLStuffList); tempdataset.Tables[0].TableName = "StuffList"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); } catch (Exception ex) { throw new Exception(ex.Message); } return rootDataset; } internal static DataSet GetEmployeesPF(TransactionContext tc, DateTime dateTime) { DataSet rootDataset = new DataSet(); DataSet tempdataset = new DataSet(); string sTranType = Convert.ToString((int)EnumPFTranType.PFAmount) + "," + Convert.ToString((int)EnumPFTranType.CPFAmount); try { string sSQLMonthlyPF = SQLParser.MakeSQL(@"SELECT t.EmployeeNo, t.[Name], t.THISMONTHBASIC, t.TotalGross, SUM(t.EPF) EPF, SUM(t.CPF) CPF,t.CostCenter,t.Designation,t.Department,t.JOININGDATE FROM ( SELECT e.EmployeeNo,e.Name,e.JOININGDATE,D.NAME AS Designation,Dep.DESCRIPTION AS Department, ISNULL(sm.THISMONTHBASIC,0) THISMONTHBASIC, IsNull(sm.ThisMonthBasic,0) as TotalGross, CASE WHEN pt.TRANTYPE = %n THEN pt.TRANAMOUNT ELSE 0 END AS EPF, CASE WHEN pt.TRANTYPE = %n THEN pt.TRANAMOUNT ELSE 0 END AS CPF, CC.DESCRIPTION AS CostCenter FROM PFTRANSACTION pt LEFT JOIN Employee e ON pt.EMPLOYEEID = e.EMPLOYEEID AND pt.TRANDATE = %d LEFT JOIN DESIGNATION D ON e.DESIGNATIONID = D.DESIGNATIONID LEFT JOIN DEPARTMENT Dep ON e.DEPARTMENTID = Dep.DEPARTMENTID LEFT JOIN EMPCOSTCENTER cmpcc ON e.EMPLOYEEID=cmpcc.EMPLOYEEID AND cmpcc.CurrentCC=1 INNER JOIN CRG CC ON cmpcc.CostCenterID = CC.CRGID LEFT JOIN SALARYMONTHLY sm ON sm.EMPLOYEEID = e.EMPLOYEEID AND sm.SalaryMonth = %d )t GROUP BY t.EmployeeNo, t.[Name], t.THISMONTHBASIC, t.TotalGross, t.CostCenter, t.JOININGDATE,t.Designation,t.Department" , (int)EnumPFTranType.PFAmount, (int)EnumPFTranType.CPFAmount, dateTime, dateTime); tempdataset = tc.ExecuteDataSet(sSQLMonthlyPF); tempdataset.Tables[0].TableName = "MonthlyPF"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); } catch (Exception ex) { throw new Exception(ex.Message); } return rootDataset; } internal static DataSet GetEmployeesPFNew(TransactionContext tc, DateTime Fromdate, DateTime Todate) { DataSet rootDataset = new DataSet(); DataSet tempdataset = new DataSet(); string sTranType = Convert.ToString((int)EnumPFTranType.PFAmount) + "," + Convert.ToString((int)EnumPFTranType.CPFAmount); try { // string sqlPFexception = SQLParser.MakeSQL(@"SELECT t.[Name],t.EmployeeNo,t.JOININGDATE, t.Designation,t.Department, t.TotalGross AS GrossSalary,ROUND (SUM(t.EPF),0)as EPF, Round(SUM(t.CPF),0) AS CPF, t.BIRTHDATE // FROM // ( // SELECT e.EmployeeNo,e.Name,e.JOININGDATE,e.BIRTHDATE, D.NAME AS Designation,Dep.DESCRIPTION AS Department, // ISNULL(sm.THISMONTHBASIC,0) THISMONTHBASIC, // IsNull(sm.ThisMonthBasic,0) as TotalGross, // CASE WHEN pt.TRANTYPE = %n THEN pt.TRANAMOUNT ELSE 0 END AS EPF, // CASE WHEN pt.TRANTYPE = %n THEN pt.TRANAMOUNT ELSE 0 END AS CPF, // // CC.DESCRIPTION AS CostCenter // FROM PFTRANSACTION pt // LEFT JOIN Employee e ON pt.EMPLOYEEID = e.EMPLOYEEID AND pt.TRANDATE BETWEEN %d AND %d // LEFT JOIN DESIGNATION D ON e.DESIGNATIONID = D.DESIGNATIONID // LEFT JOIN DEPARTMENT Dep ON e.DEPARTMENTID = Dep.DEPARTMENTID // LEFT JOIN EMPCOSTCENTER cmpcc ON e.EMPLOYEEID=cmpcc.EMPLOYEEID AND cmpcc.CurrentCC=1 // INNER JOIN CRG CC ON cmpcc.CostCenterID = CC.CRGID // LEFT JOIN SALARYMONTHLY sm ON sm.EMPLOYEEID = e.EMPLOYEEID AND sm.SalaryMonth = %d // Left JOIN SALARYMONTHLYDETAIL smd ON sm.SALARYMONTHLYID = smd.SALARYMONTHLYID AND smd.ITEMGROUP IN(1,8) // // )t // GROUP BY t.EmployeeNo, t.[Name], t.THISMONTHBASIC, t.TotalGross, t.CostCenter, // t.JOININGDATE,t.Designation,t.Department,t.BirthDate", (int)EnumPFTranType.PFAmount, (int)EnumPFTranType.CPFAmount, Fromdate, Todate, Todate); string sqlPfException = SQLParser.MakeSQL(@" SELECT t.[Name],t.EmployeeNo,t.JOININGDATE, t.Designation,t.Department, t.TotalGross AS GrossSalary,ROUND (SUM(t.EPF),0)as EPF, Round(SUM(t.CPF),0) AS CPF, t.BIRTHDATE FROM (SELECT e.EmployeeNo,e.Name,e.BIRTHDATE, e.JOININGDATE, D.NAME AS Designation,Dept.DESCRIPTION AS Department, CASE WHEN pt.TRANTYPE = %n THEN pt.TRANAMOUNT ELSE 0 END AS EPF, CASE WHEN pt.TRANTYPE = %n THEN pt.TRANAMOUNT ELSE 0 END AS CPF, ISNULL(s.THISMONTHBASIC,0) THISMONTHBASIC, IsNull(s.ThisMonthBasic,0) as TotalGross FROM SALARYMONTHLY s INNER JOIN EMPLOYEE e ON e.EMPLOYEEID= s.EMPLOYEEID INNER JOIN DESIGNATION d ON d.DESIGNATIONID= e.DESIGNATIONID INNER JOIN DEPARTMENT dept ON e.DEPARTMENTID = dept.DEPARTMENTID INNER JOIN EmpLifeCycle elc ON elc.EmployeeID=e.EMPLOYEEID INNER JOIN EMPCOSTCENTER cmpcc ON e.EMPLOYEEID=cmpcc.EMPLOYEEID AND cmpcc.CurrentCC=1 INNER JOIN CRG CC ON cmpcc.CostCenterID = CC.CRGID INNER JOIN SALARYMONTHLYDETAIL smd ON s.SALARYMONTHLYID = smd.SALARYMONTHLYID AND smd.ITEMGROUP IN(1,8) LEFT JOIN PFTRANSACTION pt ON pt.EMPLOYEEID=e.EMPLOYEEID WHERE s.SalaryMonth=%d AND elc.IsConfirm=1 AND elc.EffectDate BETWEEN %d AND %d)t GROUP BY t.EmployeeNo, t.[Name], t.THISMONTHBASIC, t.TotalGross, t.JOININGDATE,t.Designation,t.Department,t.BirthDate", (int)EnumPFTranType.PFAmount, (int)EnumPFTranType.CPFAmount, Todate, Fromdate, Todate); tempdataset = tc.ExecuteDataSet(sqlPfException); tempdataset.Tables[0].TableName = "PFandConfirmation"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); } catch (Exception ex) { throw new Exception(ex.Message); } return rootDataset; } internal static DataSet GetMonthlySalaryRevision(TransactionContext tc, DateTime Fromdate, DateTime Todate) { DataSet rootDataset = new DataSet(); DataSet tempdataset = new DataSet(); try { string mSalaryRevision = SQLParser.MakeSQL(@"Select Emp.NAME, Emp.EMPLOYEENO, Emp.JOININGDATE,DES.[NAME] AS Designation,Dep.[DESCRIPTION] AS department,gsa.BASICSALARY Present,ISNULL(gsat.BASICSALARY,0) as Prev from GRADESALARYASSIGNMENT as GSA LEFT JOIN GRADESALARYASSIGNMENT as GSAt ON gsat.EMPLOYEEID=gsa.EMPLOYEEID AND gsat.GRADESALARYID=gsa.GRADESALARYID-1 AND gsat.BASICSALARY<>gsa.BASICSALARY INNER JOIN EMPLOYEE Emp On GSA.EMPLOYEEID=Emp.EMPLOYEEID LEFT JOIN Designation DES On Emp.DESIGNATIONID = DES.DESIGNATIONID LEFT JOIN Department Dep ON Emp.DEPARTMENTID = Dep.DEPARTMENTID Where Emp.PayrollTypeId=1 AND GSA.EFFECTDATE between %d and %d AND gsat.BASICSALARY>0 ORDER BY emp.JOININGDATE DESC", Fromdate, Todate); tempdataset = tc.ExecuteDataSet(mSalaryRevision); tempdataset.Tables[0].TableName = "MonthlyPF"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); } catch (Exception e) { throw new Exception(e.Message, e); } return rootDataset; } internal static DataSet GetEmployeesPF(TransactionContext tc, DateTime Fromdate, DateTime Todate) { DataSet rootDataset = new DataSet(); DataSet tempdataset = new DataSet(); string sTranType = Convert.ToString((int)EnumPFTranType.PFAmount) + "," + Convert.ToString((int)EnumPFTranType.CPFAmount); try { string sSQLMonthlyPF = SQLParser.MakeSQL(@"SELECT t.EmployeeNo, t.[Name], t.THISMONTHBASIC, t.TotalGross, SUM(t.EPF)EPF, SUM(t.CPF)CPF,t.CostCenter,t.Designation,t.Department,t.JOININGDATE FROM ( SELECT e.EmployeeNo,e.Name,e.JOININGDATE,D.NAME AS Designation,Dep.DESCRIPTION AS Department, ISNULL(sm.THISMONTHBASIC,0)THISMONTHBASIC, IsNull(SUM(smd.ChangedAmount),0)as TotalGross, CASE WHEN pt.TRANTYPE = %n THEN pt.TRANAMOUNT ELSE 0 END AS EPF, CASE WHEN pt.TRANTYPE = %n THEN pt.TRANAMOUNT ELSE 0 END AS CPF, CC.DESCRIPTION AS CostCenter FROM PFTRANSACTION pt LEFT JOIN Employee e ON pt.EMPLOYEEID = e.EMPLOYEEID AND e.PFMEMBERSHIPDT BETWEEN %d AND %d LEFT JOIN DESIGNATION D ON e.DESIGNATIONID = D.DESIGNATIONID LEFT JOIN DEPARTMENT Dep ON e.DEPARTMENTID = Dep.DEPARTMENTID LEFT JOIN EMPCOSTCENTER cmpcc ON e.EMPLOYEEID=cmpcc.EMPLOYEEID AND cmpcc.CurrentCC=1 INNER JOIN CRG CC ON cmpcc.CostCenterID = CC.CRGID LEFT JOIN SALARYMONTHLY sm ON sm.EMPLOYEEID = e.EMPLOYEEID AND sm.SalaryMonth = %d Left JOIN SALARYMONTHLYDETAIL smd ON sm.SALARYMONTHLYID = smd.SALARYMONTHLYID AND smd.ITEMGROUP IN(1,8) GROUP BY e.EMPLOYEENO,e.[NAME],ISNULL(sm.THISMONTHBASIC,0),CC.DESCRIPTION,pt.TRANTYPE,pt.TRANDATE, pt.TRANAMOUNT,e.JOININGDATE,D.NAME,Dep.DESCRIPTION )t GROUP BY t.EmployeeNo, t.[Name], t.THISMONTHBASIC, t.TotalGross, t.CostCenter, t.JOININGDATE,t.Designation,t.Department", (int)EnumPFTranType.PFAmount, (int)EnumPFTranType.CPFAmount, Fromdate, Todate, Todate); tempdataset = tc.ExecuteDataSet(sSQLMonthlyPF); tempdataset.Tables[0].TableName = "MonthlyPF"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); } catch (Exception ex) { throw new Exception(ex.Message); } return rootDataset; } internal static DataSet GetSalarySummaryData(TransactionContext tc, DateTime dateTime, int deptId) { DataSet rootDataset = new DataSet(); DataSet tempdataset = new DataSet(); try { // string sSQLSalaryGross = SQLParser.MakeSQL(@"SELECT smd.Description ,SUM(smd.ChangedAmount)AS Amount,D.Description AS Department,P.CODE AS Unit // FROM SALARYMONTHLYDETAIL smd // left JOIN SALARYMONTHLY sm ON sm.SALARYMONTHLYID = smd.SALARYMONTHLYID // LEFT JOIN DEPARTMENT D ON sm.DEPARTMENTID = D.DEPARTMENTID // LEFT JOIN DEPARTMENT P ON D.PARENTID = P.DEPARTMENTID // WHERE sm.SalaryMonth = %d AND smd.ItemGroup IN(1,8) AND D.PARENTID=%n // GROUP BY smd.[DESCRIPTION],D.[DESCRIPTION],smd.POSITION, P.CODE // ORDER BY D.[DESCRIPTION],smd.POSITION", dateTime, deptId); string sSQLSalaryGross = SQLParser.MakeSQL(@"Select * from ( SELECT smd.Description ,SUM(smd.ChangedAmount)AS Amount,D.Description AS Department,P.CODE AS Unit FROM SALARYMONTHLYDETAIL smd left JOIN SALARYMONTHLY sm ON sm.SALARYMONTHLYID = smd.SALARYMONTHLYID LEFT JOIN DEPARTMENT D ON sm.DEPARTMENTID = D.DEPARTMENTID LEFT JOIN DEPARTMENT P ON D.PARENTID = P.DEPARTMENTID WHERE sm.SalaryMonth = %d AND smd.ItemGroup IN(8) AND smd.ITEMCODE NOT IN(-133) AND (d.PARENTID=%n OR d.DEPARTMENTID=%n) GROUP BY smd.[DESCRIPTION],D.[DESCRIPTION],smd.POSITION, P.CODE UNION SELECT smd.Description ,SUM(smd.ChangedAmount)AS Amount,D.Description AS Department,P.CODE AS Unit FROM SALARYMONTHLYDETAIL smd left JOIN SALARYMONTHLY sm ON sm.SALARYMONTHLYID = smd.SALARYMONTHLYID LEFT JOIN DEPARTMENT D ON sm.DEPARTMENTID = D.DEPARTMENTID LEFT JOIN DEPARTMENT P ON D.PARENTID = P.DEPARTMENTID WHERE sm.SalaryMonth = %d AND smd.ItemGroup IN(1) AND smd.ITEMCODE NOT IN(-133) AND (d.PARENTID=%n OR d.DEPARTMENTID=%n) GROUP BY smd.[DESCRIPTION],D.[DESCRIPTION],smd.POSITION, P.CODE UNION SELECT Tab2.[Description], Tab2.Amount, Tab2.Department, Tab2.Unit from (SELECT DISTINCT tab1.Department, SUM(tab1.Amount) Amount, tab1.[Description], tab1.Unit from(SELECT CASE WHEN smd.ITEMID=-128 THEN 'Provident Fund' ELSE smd.[DESCRIPTION] END [DESCRIPTION] ,SUM(smd.ChangedAmount)AS Amount,D.Description AS Department,P.CODE AS Unit FROM SALARYMONTHLYDETAIL smd left JOIN SALARYMONTHLY sm ON sm.SALARYMONTHLYID = smd.SALARYMONTHLYID LEFT JOIN DEPARTMENT D ON sm.DEPARTMENTID = D.DEPARTMENTID LEFT JOIN DEPARTMENT P ON D.PARENTID = P.DEPARTMENTID WHERE smd.ITEMID=-128 AND (d.PARENTID=%n OR d.DEPARTMENTID=%n) AND sm.SalaryMonth = %d GROUP BY smd.[DESCRIPTION],D.[DESCRIPTION],smd.POSITION, smd.ItemID, P.CODE)Tab1 GROUP BY tab1.[Description], tab1.Department, tab1.Unit) Tab2)Tab3 Order by Tab3.Department", dateTime, deptId, deptId, dateTime, deptId, deptId, deptId, deptId, dateTime); tempdataset = tc.ExecuteDataSet(sSQLSalaryGross); tempdataset.Tables[0].TableName = "SalaryGross"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); // string sSQLGrossTotal = SQLParser.MakeSQL(@"SELECT 'Total Gross' AS Description ,SUM(smd.ChangedAmount)AS Amount,D.Description AS Department, P.CODE AS Unit // FROM SALARYMONTHLYDETAIL smd // INNER JOIN SALARYMONTHLY sm ON sm.SALARYMONTHLYID = smd.SALARYMONTHLYID // LEFT JOIN DEPARTMENT D ON sm.DEPARTMENTID = D.DEPARTMENTID // LEFT JOIN DEPARTMENT P ON D.PARENTID = P.DEPARTMENTID // WHERE sm.SalaryMonth = %d AND smd.ITEMGROUP IN(1,8) and D.PARENTID=%n // GROUP BY D.[DESCRIPTION], P.CODE // ORDER BY D.[DESCRIPTION]", dateTime, deptId); string sSQLGrossTotal = SQLParser.MakeSQL(@"SELECT Tab2.[Description], Tab2.Amount, Tab2.Department, Tab2.Unit from (SELECT DISTINCT Tab1.Department, tab1.Unit, Tab1.[Description], SUM(Tab1.Amount) Amount FROM (SELECT 'Total Gross' AS Description ,SUM(smd.ChangedAmount)AS Amount,D.Description AS Department, P.CODE AS Unit FROM SALARYMONTHLYDETAIL smd INNER JOIN SALARYMONTHLY sm ON sm.SALARYMONTHLYID = smd.SALARYMONTHLYID LEFT JOIN DEPARTMENT D ON sm.DEPARTMENTID = D.DEPARTMENTID LEFT JOIN DEPARTMENT P ON D.PARENTID = P.DEPARTMENTID WHERE sm.SalaryMonth = %d AND smd.ITEMGROUP IN(1,8) and (d.PARENTID=%n OR d.DEPARTMENTID=%n) GROUP BY D.[DESCRIPTION], P.CODE UNION SELECT 'Total Gross' AS Description ,-SUM(smd.ChangedAmount)AS Amount,D.Description AS Department, P.CODE AS Unit FROM SALARYMONTHLYDETAIL smd INNER JOIN SALARYMONTHLY sm ON sm.SALARYMONTHLYID = smd.SALARYMONTHLYID LEFT JOIN DEPARTMENT D ON sm.DEPARTMENTID = D.DEPARTMENTID LEFT JOIN DEPARTMENT P ON D.PARENTID = P.DEPARTMENTID WHERE sm.SalaryMonth = %d AND smd.ITEMGROUP IN(2) and (d.PARENTID=%n OR d.DEPARTMENTID=%n) GROUP BY D.[DESCRIPTION], P.CODE UNION SELECT 'Total Gross' AS Description ,SUM(smd.ChangedAmount)AS Amount,D.Description AS Department, P.CODE AS Unit FROM SALARYMONTHLYDETAIL smd INNER JOIN SALARYMONTHLY sm ON sm.SALARYMONTHLYID = smd.SALARYMONTHLYID LEFT JOIN DEPARTMENT D ON sm.DEPARTMENTID = D.DEPARTMENTID LEFT JOIN DEPARTMENT P ON D.PARENTID = P.DEPARTMENTID WHERE sm.SalaryMonth = %d AND smd.ITEMID =-128 and (d.PARENTID=%n OR d.DEPARTMENTID=%n) GROUP BY D.[DESCRIPTION], P.CODE) Tab1 GROUP BY Tab1.[Description], Tab1.Department, Tab1.Unit) Tab2 ORDER BY Tab2.[DESCRIPTION]", dateTime, deptId, deptId, dateTime, deptId, deptId, dateTime, deptId, deptId); tempdataset = tc.ExecuteDataSet(sSQLGrossTotal); tempdataset.Tables[0].TableName = "GrossTotal"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); string sSQLOPIItems = SQLParser.MakeSQL(@"SELECT op.[Name] AS DESCRIPTION,Sum(opdi.ChangeNetAmount) AS Amount,D.[DESCRIPTION] AS Department, P.CODE AS Unit FROM OPIProcessDetailItem opdi LEFT JOIN OpiItem op ON opdi.OPIItemID = op.OpiItemID LEFT JOIN OPIProcessDetail opd ON opd.OPIProcessDetailID = opdi.OPIProcessDetailID LEFT JOIN OPIProcess opp ON opd.OPIProcessID = opp.OPIProcessID LEFT JOIN Department D ON opd.DepartmentID = D.DEPARTMENTID LEFT JOIN DEPARTMENT P ON D.PARENTID = P.DEPARTMENTID WHERE opp.OPIMonth = %d and (d.PARENTID=%n OR d.DEPARTMENTID=%n) GROUP BY op.[Name],D.[DESCRIPTION],op.SequenceNO, P.CODE ORDER BY D.[DESCRIPTION],op.SequenceNO", dateTime, deptId, deptId); tempdataset = tc.ExecuteDataSet(sSQLOPIItems); tempdataset.Tables[0].TableName = "OPIItems"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); string sSQLUnAuthor = SQLParser.MakeSQL(@"SELECT 'Unauthorized' AS Description, Sum(tab1.Amount) Amount, tab1.Department, tab1.Unit FROM (SELECT smd.Description ,SUM(smd.ChangedAmount)AS Amount,D.Description AS Department,P.CODE AS Unit FROM SALARYMONTHLYDETAIL smd left JOIN SALARYMONTHLY sm ON sm.SALARYMONTHLYID = smd.SALARYMONTHLYID LEFT JOIN DEPARTMENT D ON sm.DEPARTMENTID = D.DEPARTMENTID LEFT JOIN DEPARTMENT P ON D.PARENTID = P.DEPARTMENTID WHERE sm.SalaryMonth = %d AND smd.ItemGroup IN(2) AND (d.PARENTID=%n OR d.DEPARTMENTID=%n) GROUP BY smd.[DESCRIPTION],D.[DESCRIPTION],smd.POSITION, P.CODE) Tab1 GROUP BY tab1.Department, tab1.Unit", dateTime, deptId, deptId); tempdataset = tc.ExecuteDataSet(sSQLUnAuthor); tempdataset.Tables[0].TableName = "UnAuthorized"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); string sSQLTotalOPI = SQLParser.MakeSQL(@"SELECT 'Total OPI' AS Description,SUM(opdi.ChangeNetAmount)AS Amount,D.Description AS Department, P.CODE AS Unit FROM OPIProcessDetailItem opdi LEFT JOIN OpiItem op ON opdi.OPIItemID = op.OpiItemID LEFT JOIN OPIProcessDetail opd ON opd.OPIProcessDetailID = opdi.OPIProcessDetailID LEFT JOIN OPIProcess opp ON opd.OPIProcessID = opp.OPIProcessID LEFT JOIN Department D ON opd.DepartmentID = D.DEPARTMENTID LEFT JOIN DEPARTMENT P ON D.PARENTID = P.DEPARTMENTID WHERE opp.OPIMonth = %d and (d.PARENTID=%n OR d.DEPARTMENTID=%n) GROUP BY D.[DESCRIPTION], P.CODE ORDER BY D.[DESCRIPTION]", dateTime, deptId, deptId); tempdataset = tc.ExecuteDataSet(sSQLTotalOPI); tempdataset.Tables[0].TableName = "TotalOPI"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); // string sSQLGrandTotal = SQLParser.MakeSQL(@"SELECT 'Grand Total' AS DESCRIPTION,SUM(tab1.Amount)AS Amount,tab1.Department, tab1.Unit // FROM // (SELECT 'Total Gross' AS Description ,SUM(smd.ChangedAmount)AS Amount, // D.Description AS Department, P.CODE AS Unit // FROM SALARYMONTHLYDETAIL smd // INNER JOIN SALARYMONTHLY sm ON sm.SALARYMONTHLYID = smd.SALARYMONTHLYID // LEFT JOIN DEPARTMENT D ON sm.DEPARTMENTID = D.DEPARTMENTID // LEFT JOIN DEPARTMENT P ON D.PARENTID = P.DEPARTMENTID // WHERE sm.SalaryMonth = %d AND smd.ITEMGROUP IN(1,8) and D.PARENTID=%n // GROUP BY D.[DESCRIPTION], P.CODE // Union // SELECT 'Total OPI' AS Description,SUM(opdi.ChangeNetAmount)AS Amount, // D.Description AS Department, P.CODE AS Unit // FROM OPIProcessDetailItem opdi // LEFT JOIN OpiItem op ON opdi.OPIItemID = op.OpiItemID // LEFT JOIN OPIProcessDetail opd ON opd.OPIProcessDetailID = opdi.OPIProcessDetailID // LEFT JOIN OPIProcess opp ON opd.OPIProcessID = opp.OPIProcessID // LEFT JOIN Department D ON opd.DepartmentID = D.DEPARTMENTID // LEFT JOIN DEPARTMENT P ON D.PARENTID = P.DEPARTMENTID // WHERE opp.OPIMonth = %d and D.PARENTID=%n // GROUP BY D.[DESCRIPTION],P.CODE)tab1 // GROUP BY tab1.Department, tab1.Unit // Order By tab1.Department", dateTime, deptId, dateTime, deptId); string sSQLGrandTotal = SQLParser.MakeSQL(@"SELECT 'Grand Total' AS DESCRIPTION,SUM(tab1.Amount)AS Amount,tab1.Department, tab1.Unit FROM (SELECT Tab2.[Description], Tab2.Amount, Tab2.Department, Tab2.Unit from (SELECT DISTINCT Tab1.Department, tab1.Unit, Tab1.[Description], SUM(Tab1.Amount) Amount FROM (SELECT 'Total Gross' AS Description ,SUM(smd.ChangedAmount)AS Amount,D.Description AS Department, P.CODE AS Unit FROM SALARYMONTHLYDETAIL smd INNER JOIN SALARYMONTHLY sm ON sm.SALARYMONTHLYID = smd.SALARYMONTHLYID LEFT JOIN DEPARTMENT D ON sm.DEPARTMENTID = D.DEPARTMENTID LEFT JOIN DEPARTMENT P ON D.PARENTID = P.DEPARTMENTID WHERE sm.SalaryMonth = %d AND smd.ITEMGROUP IN(1,8) and (d.PARENTID=%n OR d.DEPARTMENTID=%n) GROUP BY D.[DESCRIPTION], P.CODE UNION SELECT 'Total Gross' AS Description ,SUM(smd.ChangedAmount)AS Amount,D.Description AS Department, P.CODE AS Unit FROM SALARYMONTHLYDETAIL smd INNER JOIN SALARYMONTHLY sm ON sm.SALARYMONTHLYID = smd.SALARYMONTHLYID LEFT JOIN DEPARTMENT D ON sm.DEPARTMENTID = D.DEPARTMENTID LEFT JOIN DEPARTMENT P ON D.PARENTID = P.DEPARTMENTID WHERE sm.SalaryMonth = %d AND smd.ITEMGROUP IN(2) and (d.PARENTID=%n OR d.DEPARTMENTID=%n) GROUP BY D.[DESCRIPTION], P.CODE UNION SELECT 'Total Gross' AS Description ,SUM(smd.ChangedAmount)AS Amount,D.Description AS Department, P.CODE AS Unit FROM SALARYMONTHLYDETAIL smd INNER JOIN SALARYMONTHLY sm ON sm.SALARYMONTHLYID = smd.SALARYMONTHLYID LEFT JOIN DEPARTMENT D ON sm.DEPARTMENTID = D.DEPARTMENTID LEFT JOIN DEPARTMENT P ON D.PARENTID = P.DEPARTMENTID WHERE sm.SalaryMonth = %d AND smd.ITEMID =-128 and (d.PARENTID=%n OR d.DEPARTMENTID=%n) GROUP BY D.[DESCRIPTION], P.CODE) Tab1 GROUP BY Tab1.[Description], Tab1.Department, Tab1.Unit) Tab2 Union SELECT 'Total OPI' AS Description,SUM(opdi.ChangeNetAmount)AS Amount, D.Description AS Department, P.CODE AS Unit FROM OPIProcessDetailItem opdi LEFT JOIN OpiItem op ON opdi.OPIItemID = op.OpiItemID LEFT JOIN OPIProcessDetail opd ON opd.OPIProcessDetailID = opdi.OPIProcessDetailID LEFT JOIN OPIProcess opp ON opd.OPIProcessID = opp.OPIProcessID LEFT JOIN Department D ON opd.DepartmentID = D.DEPARTMENTID LEFT JOIN DEPARTMENT P ON D.PARENTID = P.DEPARTMENTID WHERE opp.OPIMonth = %d and (d.PARENTID=%n OR d.DEPARTMENTID=%n) GROUP BY D.[DESCRIPTION],P.CODE)tab1 GROUP BY tab1.Department, tab1.Unit Order By tab1.Department", dateTime, deptId, deptId, dateTime, deptId, deptId, dateTime, deptId, deptId, dateTime, deptId, deptId); tempdataset = tc.ExecuteDataSet(sSQLGrandTotal); tempdataset.Tables[0].TableName = "GrandTotal"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); // string sSQLDeductedItems = SQLParser.MakeSQL(@"SELECT smd.Description ,SUM(smd.ChangedAmount)AS Amount,D.Description AS Department, P.CODE AS Unit // FROM SALARYMONTHLYDETAIL smd // left JOIN SALARYMONTHLY sm ON sm.SALARYMONTHLYID = smd.SALARYMONTHLYID // LEFT JOIN DEPARTMENT D ON sm.DEPARTMENTID = D.DEPARTMENTID // LEFT JOIN DEPARTMENT P ON D.PARENTID = P.DEPARTMENTID // WHERE sm.SalaryMonth = %d AND smd.ItemGroup IN(3) and D.PARENTID=%n // GROUP BY smd.[DESCRIPTION],D.[DESCRIPTION],smd.POSITION,P.CODE // ORDER BY D.[DESCRIPTION],smd.POSITION", dateTime, deptId); string sSQLDeductedItems = SQLParser.MakeSQL(@"SELECT CASE WHEN smd.ITEMID=-128 THEN 'Provident Fund-Both Contribution' ELSE smd.[DESCRIPTION] END [DESCRIPTION], CASE WHEN smd.ITEMID=-128 THEN SUM(smd.ChangedAmount*2) ELSE SUM(smd.ChangedAmount) END Amount, D.Description AS Department, P.CODE AS Unit FROM SALARYMONTHLYDETAIL smd left JOIN SALARYMONTHLY sm ON sm.SALARYMONTHLYID = smd.SALARYMONTHLYID LEFT JOIN DEPARTMENT D ON sm.DEPARTMENTID = D.DEPARTMENTID LEFT JOIN DEPARTMENT P ON D.PARENTID = P.DEPARTMENTID WHERE sm.SalaryMonth = %d AND smd.ItemGroup IN(3) and (d.PARENTID=%n OR d.DEPARTMENTID=%n) GROUP BY smd.[DESCRIPTION],D.[DESCRIPTION],smd.POSITION,P.CODE, smd.ITEMID", dateTime, deptId, deptId); tempdataset = tc.ExecuteDataSet(sSQLDeductedItems); tempdataset.Tables[0].TableName = "Deduction"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); // string sSQLTotalDeduction = SQLParser.MakeSQL(@"SELECT 'Total Deduction' AS Description ,SUM(smd.ChangedAmount)AS Amount,D.Description AS Department, P.CODE AS Unit // FROM SALARYMONTHLYDETAIL smd // INNER JOIN SALARYMONTHLY sm ON sm.SALARYMONTHLYID = smd.SALARYMONTHLYID // LEFT JOIN DEPARTMENT D ON sm.DEPARTMENTID = D.DEPARTMENTID // LEFT JOIN DEPARTMENT P ON D.PARENTID = P.DEPARTMENTID // WHERE sm.SalaryMonth = %d AND smd.ITEMGROUP IN(3) and D.PARENTID=%n // --AND smd.ITEMID NOT IN (-128) // GROUP BY D.[DESCRIPTION],P.CODE // ORDER BY D.[DESCRIPTION]", dateTime, deptId); string sSQLTotalDeduction = SQLParser.MakeSQL(@"SELECT 'Total Deduction' AS Description , CASE WHEN smd.ITEMID=-128 THEN SUM(smd.ChangedAmount*2) ELSE SUM(smd.ChangedAmount) END Amount, D.Description AS Department, P.CODE AS Unit FROM SALARYMONTHLYDETAIL smd INNER JOIN SALARYMONTHLY sm ON sm.SALARYMONTHLYID = smd.SALARYMONTHLYID LEFT JOIN DEPARTMENT D ON sm.DEPARTMENTID = D.DEPARTMENTID LEFT JOIN DEPARTMENT P ON D.PARENTID = P.DEPARTMENTID WHERE sm.SalaryMonth = %d AND smd.ITEMGROUP IN(3) and (d.PARENTID=%n OR d.DEPARTMENTID=%n) GROUP BY D.[DESCRIPTION],P.CODE, smd.ITEMID ORDER BY D.[DESCRIPTION]", dateTime, deptId, deptId); tempdataset = tc.ExecuteDataSet(sSQLTotalDeduction); tempdataset.Tables[0].TableName = "TotalDeduction"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); string sNetSalary = SQLParser.MakeSQL(@"SELECT 'Net Salary'AS Description,(t1.Amount - ISNULL(t2.Amount,0))AS Amount,t1.Department,t1.Unit FROM (SELECT 'Grand Total' AS DESCRIPTION,SUM(tab1.Amount)AS Amount,tab1.Department, tab1.Unit FROM (SELECT 'Total Gross' AS Description ,SUM(smd.ChangedAmount)AS Amount,D.Description AS Department, P.CODE AS Unit FROM SALARYMONTHLYDETAIL smd INNER JOIN SALARYMONTHLY sm ON sm.SALARYMONTHLYID = smd.SALARYMONTHLYID LEFT JOIN DEPARTMENT D ON sm.DEPARTMENTID = D.DEPARTMENTID LEFT JOIN DEPARTMENT P ON D.PARENTID = P.DEPARTMENTID WHERE sm.SalaryMonth = %d AND smd.ITEMGROUP IN(1,8) and (d.PARENTID=%n OR d.DEPARTMENTID=%n) GROUP BY D.[DESCRIPTION], P.CODE UNION SELECT 'Total Gross' AS Description ,SUM(smd.ChangedAmount)AS Amount,D.Description AS Department, P.CODE AS Unit FROM SALARYMONTHLYDETAIL smd INNER JOIN SALARYMONTHLY sm ON sm.SALARYMONTHLYID = smd.SALARYMONTHLYID LEFT JOIN DEPARTMENT D ON sm.DEPARTMENTID = D.DEPARTMENTID LEFT JOIN DEPARTMENT P ON D.PARENTID = P.DEPARTMENTID WHERE sm.SalaryMonth = %d AND smd.ITEMGROUP IN(2) and (d.PARENTID=%n OR d.DEPARTMENTID=%n) GROUP BY D.[DESCRIPTION], P.CODE Union SELECT 'Total OPI' AS Description,SUM(opdi.ChangeNetAmount)AS Amount,D.Description AS Department, P.CODE AS Unit FROM OPIProcessDetailItem opdi LEFT JOIN OpiItem op ON opdi.OPIItemID = op.OpiItemID LEFT JOIN OPIProcessDetail opd ON opd.OPIProcessDetailID = opdi.OPIProcessDetailID LEFT JOIN OPIProcess opp ON opd.OPIProcessID = opp.OPIProcessID LEFT JOIN Department D ON opd.DepartmentID = D.DEPARTMENTID LEFT JOIN DEPARTMENT P ON D.PARENTID = P.DEPARTMENTID WHERE opp.OPIMonth = %d and (d.PARENTID=%n OR d.DEPARTMENTID=%n) GROUP BY D.[DESCRIPTION], P.CODE)tab1 GROUP BY tab1.Department,tab1.Unit)t1 LEFT OUTER join (SELECT 'Total Deduction' AS Description ,SUM(smd.ChangedAmount)AS Amount,D.Description AS Department, P.CODE AS Unit FROM SALARYMONTHLYDETAIL smd INNER JOIN SALARYMONTHLY sm ON sm.SALARYMONTHLYID = smd.SALARYMONTHLYID LEFT JOIN DEPARTMENT D ON sm.DEPARTMENTID = D.DEPARTMENTID LEFT JOIN DEPARTMENT P ON D.PARENTID = P.DEPARTMENTID WHERE sm.SalaryMonth = %d AND smd.ITEMGROUP IN(3) and(d.PARENTID=%n OR d.DEPARTMENTID=%n) GROUP BY D.[DESCRIPTION], P.Code)t2 ON t1.Department = t2.Department ORDER BY t1.Department", dateTime, deptId, deptId, dateTime, deptId, deptId, dateTime, deptId, deptId, dateTime, deptId, deptId); tempdataset = tc.ExecuteDataSet(sNetSalary); tempdataset.Tables[0].TableName = "NetSalary"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); } catch (Exception ex) { throw new Exception(ex.Message); } return rootDataset; } internal static DataSet GetSalaryComparisonData(TransactionContext tc, DateTime _SalaryMonth, string sEmpID) { DataSet rootDataset = new DataSet(); DataSet tempdataset = new DataSet(); try { string sSQLSalaryComparison = SQLParser.MakeSQL(@"SELECT E.EMPLOYEENO,E.[NAME],(G.[DESCRIPTION]) AS Grade, (D.[DESCRIPTION])AS Department,DES.[NAME] AS Designation, SUM(Case When sm.SalaryMonth = %d AND smd.ITEMGROUP IN(1,8) THEN smd.CHANGEDAMOUNT ELSE 0 END)AS CurAmount, SUM(Case When sm.SalaryMonth = %d AND smd.ITEMGROUP IN(1,8) THEN smd.CHANGEDAMOUNT ELSE 0 END)AS PrvAmount FROM EMPLOYEE E LEFT JOIN Grades G ON E.GRADEID = G.GRADEID LEFT JOIN Department D ON E.DEPARTMENTID = D.DEPARTMENTID Left Join Designation DES ON E.DESIGNATIONID = DES.DESIGNATIONID LEFT JOIN SalaryMonthly sm ON E.EMPLOYEEID = sm.EMPLOYEEID LEFT JOIN SalaryMonthlyDetail smd ON sm.SALARYMONTHLYID = smd.SALARYMONTHLYID WHERE sm.EMPLOYEEID IN (%q) GROUP BY E.EMPLOYEENO,E.[NAME],G.[DESCRIPTION],D.[DESCRIPTION], DES.[NAME]", _SalaryMonth, GlobalFunctions.LastDateOfMonth(_SalaryMonth.AddMonths(-1)), sEmpID); tempdataset = tc.ExecuteDataSet(sSQLSalaryComparison); tempdataset.Tables[0].TableName = "SalaryComparison"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); } catch (Exception ex) { throw new Exception(ex.Message); } return rootDataset; } internal static DataSet GetEmpExperience(TransactionContext tc, int empid) { DataSet rootDataset = new DataSet(); DataSet tempdataset = new DataSet(); try { string sSQLExperience = SQLParser.MakeSQL(@"SELECT E.[NAME],E.FATHERNAME,E.MOTHERNAME,E.JOININGDATE,E.ENDOFCONTRACTDATE, E.Gender,D.[DESCRIPTION] AS Department,DES.[NAME] AS Designation FROM EMPLOYEE e Left Outer Join Department D ON E.DEPARTMENTID = D.DEPARTMENTID LEFT OUTER JOIN Designation DES ON E.DESIGNATIONID = DES.DESIGNATIONID WHERE E.EMPLOYEEID = %n", empid); tempdataset = tc.ExecuteDataSet(sSQLExperience); tempdataset.Tables[0].TableName = "Experience"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); } catch (Exception ex) { throw new Exception(ex.Message); } return rootDataset; } internal static DataSet GetEmpsAuditReport(TransactionContext tc, DateTime _SalaryMonth, string sEmpID) { DataSet rootDataset = new DataSet(); DataSet tempdataset = new DataSet(); try { string sSQLAudit = SQLParser.MakeSQL(@"SELECT E.EMPLOYEEID,E.EMPLOYEENO,E.[NAME],D.[DESCRIPTION] AS Department,DES.[NAME] AS Designation,G.[DESCRIPTION] AS Grade, smd.[DESCRIPTION],smd.CHANGEDAMOUNT AS Amount,smd.ITEMCODE,smd.ITEMGROUP,smd.ITEMID,E.JOININGDATE,E.BIRTHDATE FROM EMPLOYEE E LEFT JOIN Department D ON E.DEPARTMENTID = D.DEPARTMENTID LEFT JOIN Designation DES ON E.DESIGNATIONID = DES.DESIGNATIONID LEFT JOIN Grades G ON E.GRADEID = G.GRADEID LEFT JOIN SalaryMonthly sm On E.EMPLOYEEID = sm.EMPLOYEEID LEFT JOIN SalaryMonthlyDetail smd ON sm.SALARYMONTHLYID = smd.SALARYMONTHLYID WHERE sm.SalaryMonth = %d AND E.EMPLOYEEID IN(%q) ORDER BY E.EMPLOYEEID", _SalaryMonth, sEmpID); tempdataset = tc.ExecuteDataSet(sSQLAudit); tempdataset.Tables[0].TableName = "Audit"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); } catch (Exception ex) { throw new Exception(ex.Message); } return rootDataset; } internal static DataSet GetSalaryCertificateData(TransactionContext tc, int EmpID, int bankID) { DataSet rootDataset = new DataSet(); DataSet tempdataset = new DataSet(); string sItemCode = Convert.ToString((int)EnumSalaryItemCode.Loan_Monthly_Installment) + "," + Convert.ToString((int)EnumSalaryItemCode.Loan_Monthly_Interest); try { string sSQLAudit = SQLParser.MakeSQL(@"SELECT E.EMPLOYEENO,E.[NAME],E.JOININGDATE,E.ENDOFCONTRACTDATE,Br.[ADDRESS], DES.[NAME] AS Designation,Dep.[DESCRIPTION] AS Division,b.[NAME]AS Bank, Sum(CASE WHEN smd.ITEMGROUP=%n THEN smd.CHANGEDAMOUNT ELSE 0 END) AS GrossAmount, SUM(CASE WHEN smd.ITEMGROUP=%n AND smd.ITEMCODE IN(%q) THEN smd.CHANGEDAMOUNT ELSE 0 END)AS LoanAmount, SUM(CASE WHEN smd.ITEMGROUP=%n AND smd.ITEMCODE NOT IN (%q) THEN smd.CHANGEDAMOUNT ELSE 0 END) AS DeductAmount FROM Employee E INNER JOIN BRANCHES Br ON E.BRANCHID = Br.BRANCHID INNER JOIN BANKS b ON Br.BANKID = b.BANKID INNER JOIN DESIGNATION DES ON E.DESIGNATIONID = DES.DESIGNATIONID INNER JOIN DEPARTMENT Dep ON E.DEPARTMENTID = Dep.DEPARTMENTID INNER JOIN SALARYMONTHLY sm ON E.EMPLOYEEID = sm.EMPLOYEEID INNER JOIN SALARYMONTHLYDETAIL smd ON sm.SALARYMONTHLYID = smd.SALARYMONTHLYID WHERE sm.SalaryMonth=(SELECT MAX(SalaryMonth) FROM SALARYMONTHLY) AND E.EMPLOYEEID = %n AND B.BANKID = %n GROUP BY E.EMPLOYEENO,E.[NAME],E.JOININGDATE,E.ENDOFCONTRACTDATE, DES.[NAME],Dep.[DESCRIPTION],b.[NAME],Br.[ADDRESS]", (int)EnumSalaryGroup.Gross, (int)EnumSalaryGroup.Deductions, sItemCode, (int)EnumSalaryGroup.Deductions, sItemCode, EmpID, bankID); tempdataset = tc.ExecuteDataSet(sSQLAudit); tempdataset.Tables[0].TableName = "Bank"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); } catch (Exception ex) { throw new Exception(ex.Message); } return rootDataset; } internal static DataSet GetSalaryCertificateDataforOtherBank(TransactionContext tc, int EmpID, int bankID) { DataSet rootDataset = new DataSet(); DataSet tempdataset = new DataSet(); try { string sSQLAudit = SQLParser.MakeSQL(@"SELECT E.EMPLOYEENO,E.[NAME],E.JOININGDATE,E.ENDOFCONTRACTDATE,Br.[ADDRESS]AS BankAddress, DES.[NAME] AS Designation,b.[NAME]AS Bank,smd.ITEMGROUP, smd.CHANGEDAMOUNT AS Amount,smd.[DESCRIPTION] FROM Employee E INNER JOIN BRANCHES Br ON E.BRANCHID = Br.BRANCHID INNER JOIN BANKS b ON Br.BANKID = b.BANKID INNER JOIN DESIGNATION DES ON E.DESIGNATIONID = DES.DESIGNATIONID INNER JOIN SALARYMONTHLY sm ON E.EMPLOYEEID = sm.EMPLOYEEID INNER JOIN SALARYMONTHLYDETAIL smd ON sm.SALARYMONTHLYID = smd.SALARYMONTHLYID WHERE sm.SalaryMonth=(SELECT MAX(SalaryMonth) FROM SALARYMONTHLY) AND E.EMPLOYEEID = %n AND B.BANKID = %n GROUP BY E.EMPLOYEENO,E.[NAME],E.JOININGDATE,E.ENDOFCONTRACTDATE,smd.[DESCRIPTION], DES.[NAME],b.[NAME],Br.[ADDRESS],smd.CHANGEDAMOUNT,smd.POSITION,smd.ITEMGROUP ORDER BY smd.POSITION", EmpID, bankID); tempdataset = tc.ExecuteDataSet(sSQLAudit); tempdataset.Tables[0].TableName = "OtherBank"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); } catch (Exception ex) { throw new Exception(ex.Message); } return rootDataset; } internal static DataSet GetExceptionEmployeesPF(TransactionContext tc, DateTime fromdate, DateTime todate) { DataSet rootDataset = new DataSet(); DataSet tempdataset = new DataSet(); try { string sSQLAudit = SQLParser.MakeSQL(@"SELECT t.EmployeeNo, t.[Name],sum(t.TRANAMOUNT)AS PFAmount,t.Country, t.CostCenter,t.Designation,t.Department FROM ( SELECT e.EmployeeNo,e.Name,e.JOININGDATE,D.NAME AS Designation,Dep.DESCRIPTION AS Department, pt.TRANAMOUNT, CC.DESCRIPTION AS CostCenter,e2.PRESENTADDRESS AS Country FROM PFTRANSACTION pt LEFT JOIN PFException pfEx ON pt.EMPLOYEEID = pfex.EmployeeID LEFT JOIN Employee e ON pfex.EmployeeID = e.EMPLOYEEID AND pt.TRANDATE BETWEEN %d AND %d LEFT JOIN DESIGNATION D ON e.DESIGNATIONID = D.DESIGNATIONID INNER JOIN EMPCONTACT e2 ON e2.EMPLOYEEID=e.EMPLOYEEID LEFT JOIN DEPARTMENT Dep ON e.DEPARTMENTID = Dep.DEPARTMENTID LEFT JOIN EMPCOSTCENTER cmpcc ON e.EMPLOYEEID=cmpcc.EMPLOYEEID AND cmpcc.CurrentCC=1 INNER JOIN CRG CC ON cmpcc.CostCenterID = CC.CRGID )t GROUP BY t.EmployeeNo, t.[Name],t.CostCenter,t.Country, t.JOININGDATE,t.Designation,t.Department", fromdate, todate); tempdataset = tc.ExecuteDataSet(sSQLAudit); tempdataset.Tables[0].TableName = "ExceptionPF"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); } catch (Exception ex) { throw new Exception(ex.Message); } return rootDataset; } internal static DataSet GetBankPaymentSummaryData(TransactionContext tc, DateTime fromdate) { DataSet rootDataset = new DataSet(); DataSet tempdataset = new DataSet(); string sqlID = Convert.ToString((int)EnumSalaryItemCode.PF_Contribution)+","+ Convert.ToString(1); string sqlCode = Convert.ToString((int)EnumSalaryItemCode.PF_Contribution)+","+ Convert.ToString((int)EnumSalaryItemCode.Loan_Monthly_Installment)+","+Convert.ToString((int)EnumSalaryItemCode.Loan_Monthly_Interest); string groupID = Convert.ToString((int)EnumSalaryGroup.Gross) + "," + Convert.ToString((int)EnumSalaryGroup.Arrear); try { string sSQLBankPayment = SQLParser.MakeSQL(@"DECLARE @cols AS NVARCHAR(MAX), @colNames AS NVARCHAR(MAX), @query AS NVARCHAR(MAX) select @cols = STUFF((SELECT ',' + QUOTENAME(d.CODE) FROM department d WHERE d.PARENTID IS NULL FOR XML PATH(''), TYPE ).value('.', 'NVARCHAR(MAX)') ,1,1,'') select @colNames = STUFF((SELECT ', isnull(' + QUOTENAME(d.CODE) +', 0) as '+QUOTENAME(d.CODE) FROM department d WHERE d.PARENTID IS NULL FOR XML PATH(''), TYPE ).value('.', 'NVARCHAR(MAX)') ,1,1,'') set @query = 'SELECT Bank, ' + @colNames + ' from ( SELECT P.Bank,P.Unit,IsNull(P.Amount,0)AS Amount From (SELECT bank ,unit ,unitdescription,sum(amount)AS Amount FROM (SELECT b.[NAME] Bank,pd.CODE Unit,pd.description UnitDescription, SUM(smd.CHANGEDAMOUNT) Amount from salarymonthly sm,department d,salarymonthlydetail smd, DEPARTMENT pd,branches br, BANKS b WHERE sm.DEPARTMENTID=d.departmentid AND sm.SALARYMONTHLYID=smd.SALARYMONTHLYID AND d.PARENTID=pd.DEPARTMENTID AND sm.BRANCHID=br.BRANCHID AND br.BANKID=b.BANKID And sm.SalaryMonth = '%d' and smd.ItemGroup IN (%q) GROUP BY b.[NAME],pd.CODE,pd.description union SELECT b.[NAME] Bank,pd.CODE Unit,pd.description UnitDescription, SUM(opdi.ChangeNetAmount) Amount from OPIProcess op,department d,opiprocessdetail opd, opiprocessdetailItem opdi,DEPARTMENT pd,branches br, BANKS b WHERE opd.DEPARTMENTID=d.departmentid AND op.OPIProcessID=opd.OPIProcessID AND opd.OPIProcessDetailID=opdi.OPIProcessDetailID AND d.PARENTID=pd.DEPARTMENTID AND opd.BRANCHID=br.BRANCHID AND br.BANKID=b.BANKID And op.OPIMonth = '%d' GROUP BY b.[NAME],pd.CODE,pd.description) SM GROUP BY bank ,unit ,unitdescription )AS P ) x pivot ( max(x.Amount) for x.Unit in (' + @cols + ') ) p ' execute(@query)", fromdate, groupID, fromdate); tempdataset = tc.ExecuteDataSet(sSQLBankPayment); tempdataset.Tables[0].TableName = "BankPayment"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); string sSQLBankPayment1 = SQLParser.MakeSQL(@" DECLARE @cols AS NVARCHAR(MAX), @colNames AS NVARCHAR(MAX), @query AS NVARCHAR(MAX) select @cols = STUFF((SELECT ',' + QUOTENAME(d.CODE) FROM department d WHERE d.PARENTID IS NULL FOR XML PATH(''), TYPE ).value('.', 'NVARCHAR(MAX)') ,1,1,'') select @colNames = STUFF((SELECT ', isnull(' + QUOTENAME(d.CODE) +', 0) as '+QUOTENAME(d.CODE) FROM department d WHERE d.PARENTID IS NULL FOR XML PATH(''), TYPE ).value('.', 'NVARCHAR(MAX)') ,1,1,'') set @query = 'SELECT Description, ' + @colNames + ' from ( SELECT P.Description,P.Unit,IsNull(P.Amount,0)AS Amount From ( SELECT pd.CODE Unit,''Advance Income Tax'' AS Description, SUM(smd.CHANGEDAMOUNT) Amount from salarymonthly sm,department d,salarymonthlydetail smd, DEPARTMENT pd WHERE sm.DEPARTMENTID=d.departmentid AND sm.SALARYMONTHLYID=smd.SALARYMONTHLYID AND d.PARENTID=pd.DEPARTMENTID And sm.SalaryMonth='%d' and smd.ItemGroup = %n AND smd.ItemID = %n AND smd.ITEMCODE = %n GROUP BY pd.CODE UNION SELECT pd.CODE Unit,''Employees Provident Fund'' AS Description, SUM(smd.CHANGEDAMOUNT) Amount from salarymonthly sm,department d,salarymonthlydetail smd, DEPARTMENT pd WHERE sm.DEPARTMENTID=d.departmentid AND sm.SALARYMONTHLYID=smd.SALARYMONTHLYID AND d.PARENTID=pd.DEPARTMENTID And sm.SalaryMonth='%d' and smd.ItemGroup = %n AND smd.ItemID IN(%q) AND smd.ITEMCODE IN(%q) GROUP BY pd.CODE UNION SELECT pd.CODE Unit,''Article Loan'' AS Description, SUM(smd.CHANGEDAMOUNT) Amount from salarymonthly sm,department d,salarymonthlydetail smd, DEPARTMENT pd WHERE sm.DEPARTMENTID=d.departmentid AND sm.SALARYMONTHLYID=smd.SALARYMONTHLYID AND d.PARENTID=pd.DEPARTMENTID And sm.SalaryMonth='%d' and smd.ItemGroup = %n AND smd.ItemID = %n AND smd.ITEMCODE = %n GROUP BY pd.CODE )AS P ) d pivot ( max(d.Amount) for d.Unit IN(' + @cols + ') ) piv' execute(@query) ",fromdate,(int)EnumSalaryGroup.Deductions,(int)EnumSalaryItemCode.Inc_Tax_Deduction,(int)EnumSalaryItemCode.Inc_Tax_Deduction, fromdate, (int)EnumSalaryGroup.Deductions, sqlID, sqlCode,fromdate,(int)EnumSalaryGroup.Deductions, 19,(int)EnumSalaryItemCode.Deduction); tempdataset = tc.ExecuteDataSet(sSQLBankPayment1); tempdataset.Tables[0].TableName = "BankPaymentDeduct"; rootDataset.Tables.Add(tempdataset.Tables[0].Copy()); } catch (Exception ex) { throw new Exception(ex.Message); } return rootDataset; } internal static DataSet GetCashPaymentSummaryData(TransactionContext tc, DateTime fromdate) { DataSet cashPayDset = new DataSet(); string groupID = Convert.ToString((int)EnumSalaryGroup.Gross) + "," + Convert.ToString((int)EnumSalaryGroup.Arrear); string query = SQLParser.MakeSQL(@"SELECT EmployeeNo,NAME,Unit,UnitName,Department,Designation,SUM(Amount) AS Amount FROM (SELECT E.EMPLOYEENO,E.Name,pd.CODE Unit,pd.description UnitName,d.[DESCRIPTION] AS Department, DES.[NAME] AS Designation, Sum(smd.CHANGEDAMOUNT) AS Amount from salarymonthly sm,department d,Designation Des,salarymonthlydetail smd, DEPARTMENT pd,Employee E WHERE sm.DEPARTMENTID=d.departmentid AND sm.SALARYMONTHLYID=smd.SALARYMONTHLYID AND sm.EMPLOYEEID = E.EMPLOYEEID AND sm.DESIGNATIONID = DES.DESIGNATIONID AND d.PARENTID=pd.DEPARTMENTID And sm.SalaryMonth = %d and smd.ItemGroup IN (%q) AND sm.BRANCHID IS NULL GROUP BY E.EMPLOYEENO,E.Name,pd.CODE ,pd.description ,d.[DESCRIPTION],DES.[NAME] union SELECT E.EMPLOYEENO,E.Name,pd.CODE Unit,pd.description UnitName,d.[DESCRIPTION] AS Department, DES.[NAME] AS Designation, SUM(opdi.ChangeNetAmount) Amount from OPIProcess op,department d,opiprocessdetail opd, opiprocessdetailItem opdi, DEPARTMENT pd,Employee E,Designation Des WHERE opd.DEPARTMENTID=d.departmentid AND op.OPIProcessID=opd.OPIProcessID AND opd.OPIProcessDetailID=opdi.OPIProcessDetailID AND opd.EmployeeID = E.EMPLOYEEID AND opd.DesignationID = DES.DESIGNATIONID AND d.PARENTID=pd.DEPARTMENTID And op.OPIMonth = %d AND opd.BranchID IS NULL GROUP BY E.EMPLOYEENO,E.Name,pd.CODE ,pd.description ,d.[DESCRIPTION],DES.[NAME])t1 GROUP BY t1.EMPLOYEENO,t1.[Name],t1.Unit,t1.UnitName,t1.Department,t1.Designation ORDER BY t1.Unit", fromdate,groupID, fromdate); cashPayDset = tc.ExecuteDataSet(query); return cashPayDset; } } }