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));
}
}