using System; using System.Data; using System.Data.Common; using Wellan.Data; using Wellan.Common; /// /// 薪資加減項資料處理類別 /// public class RsajDAC : Wellan.Data.WDAC { public RsajDAC() { } public RsajDAC(string connectionConfig, string connectionConfigName) : this() { this._connectionConfig = connectionConfig; this._connectionConfigName = connectionConfigName; } public RsajDAC(WQuery query) { this._query = query; } /// /// 取得某年月、某人員薪資加減項紀錄 /// /// 年月 /// 人員編號 /// 專案年度編號 /// 要加入的交易 public DataTable GetRSAJ(DateTime yymm, string rseno, string rspyn, DbTransaction tran) { DbCommand cmd = Query.NewCommand( @"SELECT RSAMT, RSDOC FROM RSAJ WHERE RSENO=@RSENO AND RSPYN=@RSPYN AND RSYMM = @YYMM"); cmd.Parameters.Add(Query.NewParameter("RSENO", rseno)); cmd.Parameters.Add(Query.NewParameter("RSPYN", rspyn)); cmd.Parameters.Add(Query.NewParameter("YYMM", yymm)); cmd.Connection = tran.Connection; cmd.Transaction = tran; DbDataAdapter da = Query.NewDataAdapter(cmd); DataTable result = new DataTable(); da.Fill(result); return result; } /// /// 寫特休結算薪資加減項 /// /// /// /// /// /// public string WriteAnnualLeaveSalary(DateTime yymm, string rseno, string rspyn, int rsamt, string rsdoc) { DbCommand cmd = Query.NewCommand(); var rsren = GetAnnualLeaveSalaryREN(yymm, rseno, rspyn); if (string.IsNullOrEmpty(rsren) && rsamt > 0) { cmd.CommandText = @"INSERT INTO RSAJ (TRDAT, TRMOD, TRUSR, RSREN, RSENO, RSPYN, RSYMM, RSAMT, RSDOC, APPNO) VALUES (@TRDAT, 'INSERT', @TRUSR, @RSREN, @RSENO, @RSPYN, @RSYMM, @RSAMT, @RSDOC, 1)"; cmd.Parameters.Clear(); cmd.Parameters.Add(Query.NewParameter("TRDAT", DateTime.UtcNow.AddHours(8))); cmd.Parameters.Add(Query.NewParameter("TRUSR", UserId)); cmd.Parameters.Add(Query.NewParameter("RSREN", WGuard1.WNextRen(yymm, "RSAJ", "RSREN", "YYYYMM\"F\"<9999>", "", null))); cmd.Parameters.Add(Query.NewParameter("RSENO", rseno)); cmd.Parameters.Add(Query.NewParameter("RSPYN", rspyn)); cmd.Parameters.Add(Query.NewParameter("RSYMM", yymm)); cmd.Parameters.Add(Query.NewParameter("RSAMT", rsamt)); cmd.Parameters.Add(Query.NewParameter("RSDOC", rsdoc)); Query.ExecuteNonQuery(cmd); } else if (rsamt == 0) { cmd.CommandText = @"DELETE FROM RSAJ WHERE RSREN = @RSREN"; cmd.Parameters.Add(Query.NewParameter("RSREN", rsren)); Query.ExecuteNonQuery(cmd); } else { cmd.CommandText = @"UPDATE RSAJ SET TRDAT = @TRDAT , TRMOD = 'UPDATE' , TRUSR = @TRUSR , RSENO = @RSENO , RSPYN = @RSPYN , RSYMM = @RSYMM , RSAMT = @RSAMT , RSDOC = @RSDOC , APPNO = APPNO + 1 WHERE RSREN = @RSREN"; cmd.Parameters.Clear(); cmd.Parameters.Add(Query.NewParameter("TRDAT", DateTime.UtcNow.AddHours(8))); cmd.Parameters.Add(Query.NewParameter("TRUSR", UserId)); cmd.Parameters.Add(Query.NewParameter("RSENO", rseno)); cmd.Parameters.Add(Query.NewParameter("RSPYN", rspyn)); cmd.Parameters.Add(Query.NewParameter("RSYMM", yymm)); cmd.Parameters.Add(Query.NewParameter("RSAMT", rsamt)); cmd.Parameters.Add(Query.NewParameter("RSDOC", rsdoc)); cmd.Parameters.Add(Query.NewParameter("RSREN", rsren)); Query.ExecuteNonQuery(cmd); } return rsren; } public string GetAnnualLeaveSalaryREN(DateTime yymm, string rseno, string rspyn) { DbCommand cmd = Query.NewCommand( @"SELECT RSREN FROM RSAJ WHERE RSENO=@RSENO AND RSPYN=@RSPYN AND RSYMM=@RSYMM AND RSREN LIKE '______F____'"); cmd.Parameters.Add(Query.NewParameter("RSENO", rseno)); cmd.Parameters.Add(Query.NewParameter("RSPYN", rspyn)); cmd.Parameters.Add(Query.NewParameter("RSYMM", yymm)); return GetStringValue(Query.ExecuteScalar(cmd)); } }