using System;
using System.Data;
using System.Configuration;
using System.Data.Common;
using System.Collections;
using System.Text;
using System.ComponentModel;
using Wellan.Data;
///
/// 勞健保紀錄與異動紀錄的資料存取類別
///
[DataObject(true)]
public class RpirDAC : Wellan.Data.WDAC
{
private DbCommand cmdSelectRpirRpren;
private DbCommand cmdSelectRpib;
private DbCommand cmdSelectRpir;
private DbCommand cmdSelectRpibOne;
private DbCommand cmdSelectRpirOne;
private DbCommand cmdSelectRpib1;
// private DbCommand cmdSelectRpib2;
private string sqlSelectRpib1;
private string orderSelectRpib1;
public RpirDAC()
{
cmdSelectRpib = Query.NewCommand("SELECT TOP 1 A.*, B.BPNME, B.BPBDY, B.BPIDN FROM RPIB A JOIN BPSNView B ON A.RPENO=B.BPENO WHERE A.RPREN=@RPREN ORDER BY A.RPITM DESC");
cmdSelectRpib.Parameters.Add(Query.NewParameter("RPREN", DbType.String));
cmdSelectRpir = Query.NewCommand("SELECT A.*, 0 RPITM, A.RPSDT RPBDT, B.BPNME, B.BPBDY, B.BPIDN FROM RPIR A JOIN BPSNView B ON A.RPENO=B.BPENO WHERE A.RPREN=@RPREN");
cmdSelectRpir.Parameters.Add(Query.NewParameter("RPREN", DbType.String));
cmdSelectRpibOne = Query.NewCommand("SELECT A.*, B.BPNME, B.BPBDY, B.BPIDN FROM RPIB A JOIN BPSNView B ON A.RPENO=B.BPENO WHERE A.RPREN=@RPREN AND A.RPITM=@RPITM");
cmdSelectRpibOne.Parameters.Add(Query.NewParameter("RPREN", DbType.String));
cmdSelectRpibOne.Parameters.Add(Query.NewParameter("RPITM", DbType.Int32));
cmdSelectRpirOne = Query.NewCommand("SELECT A.*, 0 RPITM, A.RPSDT RPBDT, B.BPNME, B.BPBDY, B.BPIDN FROM RPIR A JOIN BPSNView B ON A.RPENO=B.BPENO WHERE A.RPREN=@RPREN");
cmdSelectRpirOne.Parameters.Add(Query.NewParameter("RPREN", DbType.String));
cmdSelectRpib1 = Query.NewCommand();
sqlSelectRpib1 =
@"SELECT RPREN, 0 AS RPITM, RPSDT RPBDT,
RPENO, RPSDT, RPEDT, RPSLY, RPAMT, RPAM2, RPAM3, RPFMY, RPFM1, RPFM2, RPFM3, RPSLA,
RPDIS, RPDIH, RPOLD, RPNAT, RPPTP, RPLIS, RPHIS, RPDOC, RPCPY, RPOVR, RPFMD, RPXDT, RPOPT, RPIR.APPNO,
RPIR.TRUSR,
BPSNView.BPNME, BPSNView.BPBDY, BPSNView.BPIDN
FROM RPIR
JOIN BPSNView ON RPIR.RPENO = BPSNView.BPENO
WHERE RPREN = @RPREN
UNION
SELECT RPREN, RPITM, RPBDT,
RPENO, RPSDT, RPEDT, RPSLY, RPAMT, RPAM2, RPAM3, RPFMY, RPFM1, RPFM2, RPFM3, RPSLA,
RPDIS, RPDIH, RPOLD, RPNAT, RPPTP, RPLIS, RPHIS, RPDOC, RPCPY, RPOVR, RPFMD, RPXDT, RPOPT, RPIB.APPNO,
RPIB.TRUSR,
BPSNView.BPNME, BPSNView.BPBDY, BPSNView.BPIDN
FROM RPIB
JOIN BPSNView ON RPIB.RPENO = BPSNView.BPENO
WHERE RPREN = @RPREN";
orderSelectRpib1 = "ORDER BY RPBDT DESC, RPITM DESC";
cmdSelectRpib1.Parameters.Add(Query.NewParameter("RPREN", DbType.String));
//cmdSelectRpib2 = Query.NewCommand(
// @"SELECT RPREN, RPITM, RPBDT, RPENO, RPSDT, RPEDT, RPSLY, RPAMT, RPFMY, RPFM1, RPFM2, RPFM3, RPSLA,
// RPDIS, RPDIH, RPOLD, RPNAT, RPPTP, RPLIS, RPHIS, RPDOC, RPCPY, RPOVR, RPFMD, RPXDT, RPOPT, RPIB.APPNO,
// RPIB.TRUSR,
// BPSNView.BPNME, BPSNView.BPBDY, BPSNView.BPIDN
// FROM RPIB
// JOIN BPSNView ON RPIB.RPENO=BPSNView.BPENO
// WHERE RPREN=@RPREN
// ORDER BY RPBDT");
//cmdSelectRpib2.Parameters.Add(Query.NewParameter("RPREN", DbType.String));
//cmdSelectRpib2.Parameters.Add(Query.NewParameter("RPXDT1", DbType.Date));
//cmdSelectRpib2.Parameters.Add(Query.NewParameter("RPXDT2", DbType.Date));
}
public RpirDAC(string connectionConfig, string connectionConfigName)
: this()
{
this._connectionConfig = connectionConfig;
this._connectionConfigName = connectionConfigName;
}
public RpirDAC(WQuery query) : this()
{
this._query = query;
}
private DataTable NewResult()
{
var result = new DataTable();
result.Columns.Add("RPREN", typeof(String));
result.Columns.Add("RPITM", typeof(Int32));
result.Columns.Add("RPBDT", typeof(DateTime));
result.Columns.Add("RPENO", typeof(String));
result.Columns.Add("BPNME", typeof(String));
result.Columns.Add("BPBDY", typeof(DateTime));
result.Columns.Add("BPIDN", typeof(String));
result.Columns.Add("RPSDT", typeof(DateTime));
result.Columns.Add("RPEDT", typeof(DateTime));
result.Columns.Add("RPSLY", typeof(Int32));
result.Columns.Add("RPAMT", typeof(Int32));
result.Columns.Add("RPAM2", typeof(Int32));
result.Columns.Add("RPAM3", typeof(Int32));
result.Columns.Add("RPFMY", typeof(Int32));
result.Columns.Add("RPFM1", typeof(Int32));
result.Columns.Add("RPFM2", typeof(Int32));
result.Columns.Add("RPFM3", typeof(Int32));
result.Columns.Add("RPSLA", typeof(Int32));
result.Columns.Add("RPDIS", typeof(String));
result.Columns.Add("RPDIH", typeof(String));
result.Columns.Add("RPOLD", typeof(String));
result.Columns.Add("RPNAT", typeof(String));
result.Columns.Add("RPPTP", typeof(String));
result.Columns.Add("RPLIS", typeof(String));
result.Columns.Add("RPHIS", typeof(String));
result.Columns.Add("RPDOC", typeof(String));
result.Columns.Add("RPCPY", typeof(String));
result.Columns.Add("RPOVR", typeof(String));
result.Columns.Add("RPFMD", typeof(String));
result.Columns.Add("RPFMD_PREV", typeof(String));
result.Columns.Add("RPXDT", typeof(DateTime));
result.Columns.Add("RPOPT", typeof(String));
result.Columns.Add("APPNO", typeof(Int32));
result.Columns.Add("TRUSR", typeof(String));
result.Columns.Add("RPSDT_Changed", typeof(Char));
result.Columns.Add("RPEDT_Changed", typeof(Char));
result.Columns.Add("RPSLY_Changed", typeof(Char));
result.Columns.Add("RPAMT_Changed", typeof(Char));
result.Columns.Add("RPAM2_Changed", typeof(Char));
result.Columns.Add("RPAM3_Changed", typeof(Char));
result.Columns.Add("RPFMY_Changed", typeof(Char));
result.Columns.Add("RPFM1_Changed", typeof(Char));
result.Columns.Add("RPFM2_Changed", typeof(Char));
result.Columns.Add("RPFM3_Changed", typeof(Char));
result.Columns.Add("RPSLA_Changed", typeof(Char));
result.Columns.Add("RPDIS_Changed", typeof(Char));
result.Columns.Add("RPDIH_Changed", typeof(Char));
result.Columns.Add("RPOLD_Changed", typeof(Char));
result.Columns.Add("RPNAT_Changed", typeof(Char));
result.Columns.Add("RPPTP_Changed", typeof(Char));
result.Columns.Add("RPLIS_Changed", typeof(Char));
result.Columns.Add("RPHIS_Changed", typeof(Char));
result.Columns.Add("RPCPY_Changed", typeof(Char));
result.Columns.Add("RPOVR_Changed", typeof(Char));
result.Columns.Add("RPFMD_Changed", typeof(Char));
result.Columns.Add("RPXDT_Changed", typeof(Char));
result.Columns.Add("RPOPT_Changed", typeof(Char));
result.Columns.Add("異動類別", typeof(String));
result.Columns.Add("RPFMY_ChangeCount", typeof(Int32));
result.Columns.Add("RPFM1_ChangeCount", typeof(Int32));
result.Columns.Add("RPFM2_ChangeCount", typeof(Int32));
result.Columns.Add("RPFM3_ChangeCount", typeof(Int32));
return result;
}
///
/// 填入資料紀錄
///
///
private void FillResult(DataTable result, DataRow source)
{
result.Rows.Add(NewRow(result, source));
}
public DataRow NewRow(DataTable result, DataRow source)
{
DataRow newRow = result.NewRow();
newRow["RPREN"] = source["RPREN"];
newRow["RPITM"] = source["RPITM"];
newRow["RPBDT"] = source["RPBDT"];
newRow["RPENO"] = source["RPENO"];
newRow["BPNME"] = source["BPNME"];
newRow["BPBDY"] = source["BPBDY"];
newRow["BPIDN"] = source["BPIDN"];
newRow["RPSDT"] = source["RPSDT"];
newRow["RPEDT"] = source["RPEDT"];
newRow["RPSLY"] = source["RPSLY"];
newRow["RPAMT"] = source["RPAMT"];
newRow["RPAM2"] = source["RPAM2"];
newRow["RPAM3"] = source["RPAM3"];
newRow["RPFMY"] = source["RPFMY"];
newRow["RPFM1"] = source["RPFM1"];
newRow["RPFM2"] = source["RPFM2"];
newRow["RPFM3"] = source["RPFM3"];
newRow["RPSLA"] = source["RPSLA"];
newRow["RPDIS"] = source["RPDIS"];
newRow["RPDIH"] = source["RPDIH"];
newRow["RPOLD"] = source["RPOLD"];
newRow["RPNAT"] = source["RPNAT"];
newRow["RPPTP"] = source["RPPTP"];
newRow["RPLIS"] = source["RPLIS"];
newRow["RPHIS"] = source["RPHIS"];
newRow["RPDOC"] = source["RPDOC"];
newRow["RPCPY"] = source["RPCPY"];
newRow["RPOVR"] = source["RPOVR"];
newRow["RPFMD"] = source["RPFMD"];
newRow["RPFMD_PREV"] = DBNull.Value;
newRow["RPXDT"] = source["RPXDT"];
newRow["RPOPT"] = source["RPOPT"];
newRow["APPNO"] = source["APPNO"];
newRow["TRUSR"] = source["TRUSR"];
newRow["RPSDT_Changed"] = 'N';
newRow["RPEDT_Changed"] = 'N';
newRow["RPSLY_Changed"] = 'N';
newRow["RPAMT_Changed"] = 'N';
newRow["RPAM2_Changed"] = 'N';
newRow["RPAM3_Changed"] = 'N';
newRow["RPFMY_Changed"] = 'N';
newRow["RPFM1_Changed"] = 'N';
newRow["RPFM2_Changed"] = 'N';
newRow["RPFM3_Changed"] = 'N';
newRow["RPSLA_Changed"] = 'N';
newRow["RPDIS_Changed"] = 'N';
newRow["RPDIH_Changed"] = 'N';
newRow["RPOLD_Changed"] = 'N';
newRow["RPNAT_Changed"] = 'N';
newRow["RPPTP_Changed"] = 'N';
newRow["RPLIS_Changed"] = 'N';
newRow["RPHIS_Changed"] = 'N';
newRow["RPCPY_Changed"] = 'N';
newRow["RPOVR_Changed"] = 'N';
newRow["RPFMD_Changed"] = 'N';
newRow["RPXDT_Changed"] = 'N';
newRow["RPOPT_Changed"] = 'N';
newRow["RPFMY_ChangeCount"] = 0;
newRow["RPFM1_ChangeCount"] = 0;
newRow["RPFM2_ChangeCount"] = 0;
newRow["RPFM3_ChangeCount"] = 0;
return newRow;
}
///
/// 比較不同點
///
/// 物件一
/// 物件二
private Char FieldDiff(object obj1, object obj2)
{
string s1 = obj1 != DBNull.Value ? obj1.ToString() : "";
string s2 = obj2 != DBNull.Value ? obj2.ToString() : "";
if (s1.CompareTo(s2) != 0)
return 'Y';
else
return 'N';
}
///
/// 填入資料紀錄,以及不同點
///
/// 目前紀錄
/// 前一筆紀錄
private void FillResult(DataTable result, DataRow current, DataRow prev)
{
DataRow newRow = result.NewRow();
string 異動類別 = "其他";
newRow["RPREN"] = current["RPREN"];
newRow["RPITM"] = current["RPITM"];
newRow["RPBDT"] = current["RPBDT"];
newRow["RPENO"] = current["RPENO"];
newRow["BPNME"] = current["BPNME"];
newRow["BPBDY"] = current["BPBDY"];
newRow["BPIDN"] = current["BPIDN"];
newRow["RPSDT"] = current["RPSDT"];
newRow["RPEDT"] = current["RPEDT"];
newRow["RPSLY"] = current["RPSLY"];
newRow["RPAMT"] = current["RPAMT"];
newRow["RPAM2"] = current["RPAM2"];
newRow["RPAM3"] = current["RPAM3"];
newRow["RPFMY"] = current["RPFMY"];
newRow["RPFM1"] = current["RPFM1"];
newRow["RPFM2"] = current["RPFM2"];
newRow["RPFM3"] = current["RPFM3"];
newRow["RPSLA"] = current["RPSLA"];
newRow["RPDIS"] = current["RPDIS"];
newRow["RPDIH"] = current["RPDIH"];
newRow["RPOLD"] = current["RPOLD"];
newRow["RPNAT"] = current["RPNAT"];
newRow["RPPTP"] = current["RPPTP"];
newRow["RPLIS"] = current["RPLIS"];
newRow["RPHIS"] = current["RPHIS"];
newRow["RPDOC"] = current["RPDOC"];
newRow["RPCPY"] = current["RPCPY"];
newRow["RPOVR"] = current["RPOVR"];
newRow["RPFMD"] = current["RPFMD"];
newRow["RPFMD_PREV"] = prev["RPFMD"];
newRow["RPXDT"] = current["RPXDT"];
newRow["RPOPT"] = current["RPOPT"];
newRow["APPNO"] = current["APPNO"];
newRow["TRUSR"] = current["TRUSR"];
newRow["RPSDT_Changed"] = FieldDiff(current["RPSDT"], prev["RPSDT"]);
newRow["RPEDT_Changed"] = FieldDiff(current["RPEDT"], prev["RPEDT"]);
newRow["RPSLY_Changed"] = FieldDiff(current["RPSLY"], prev["RPSLY"]);
newRow["RPAMT_Changed"] = FieldDiff(current["RPAMT"], prev["RPAMT"]);
newRow["RPAM2_Changed"] = FieldDiff(current["RPAM2"], prev["RPAM2"]);
newRow["RPAM3_Changed"] = FieldDiff(current["RPAM3"], prev["RPAM3"]);
newRow["RPFMY_Changed"] = FieldDiff(current["RPFMY"], prev["RPFMY"]);
newRow["RPFM1_Changed"] = FieldDiff(current["RPFM1"], prev["RPFM1"]);
newRow["RPFM2_Changed"] = FieldDiff(current["RPFM2"], prev["RPFM2"]);
newRow["RPFM3_Changed"] = FieldDiff(current["RPFM3"], prev["RPFM3"]);
newRow["RPSLA_Changed"] = FieldDiff(current["RPSLA"], prev["RPSLA"]);
newRow["RPDIS_Changed"] = FieldDiff(current["RPDIS"], prev["RPDIS"]);
newRow["RPDIH_Changed"] = FieldDiff(current["RPDIH"], prev["RPDIH"]);
newRow["RPOLD_Changed"] = FieldDiff(current["RPOLD"], prev["RPOLD"]);
newRow["RPNAT_Changed"] = FieldDiff(current["RPNAT"], prev["RPNAT"]);
newRow["RPPTP_Changed"] = FieldDiff(current["RPPTP"], prev["RPPTP"]);
newRow["RPLIS_Changed"] = FieldDiff(current["RPLIS"], prev["RPLIS"]);
newRow["RPHIS_Changed"] = FieldDiff(current["RPHIS"], prev["RPHIS"]);
newRow["RPCPY_Changed"] = FieldDiff(current["RPCPY"], prev["RPCPY"]);
newRow["RPOVR_Changed"] = FieldDiff(current["RPOVR"], prev["RPOVR"]);
newRow["RPFMD_Changed"] = FieldDiff(current["RPFMD"], prev["RPFMD"]);
newRow["RPXDT_Changed"] = FieldDiff(current["RPXDT"], prev["RPXDT"]);
newRow["RPOPT_Changed"] = FieldDiff(current["RPOPT"], prev["RPOPT"]);
newRow["RPFMY_ChangeCount"] = Convert.ToInt32(current["RPFMY"]) - Convert.ToInt32(prev["RPFMY"]);
newRow["RPFM1_ChangeCount"] = Convert.ToInt32(current["RPFM1"]) - Convert.ToInt32(prev["RPFM1"]);
newRow["RPFM2_ChangeCount"] = Convert.ToInt32(current["RPFM2"]) - Convert.ToInt32(prev["RPFM2"]);
newRow["RPFM3_ChangeCount"] = Convert.ToInt32(current["RPFM3"]) - Convert.ToInt32(prev["RPFM3"]);
if (string.IsNullOrEmpty(newRow["RPOPT"].ToString()))
{
if (GetStringValue(newRow["RPSDT_Changed"]) == "Y")
異動類別 = "加保";
else if (GetStringValue(newRow["RPEDT_Changed"]) == "Y")
異動類別 = "退保";
else if (GetStringValue(newRow["RPSLY_Changed"]) == "Y" ||
GetStringValue(newRow["RPAMT_Changed"]) == "Y")
異動類別 = "薪資調整";
//else if (GetStringValue(newRow["RPFMY_Changed"]) == "Y" ||
// GetStringValue(newRow["RPFM1_Changed"]) == "Y" ||
// GetStringValue(newRow["RPFM2_Changed"]) == "Y" ||
// GetStringValue(newRow["RPFM3_Changed"]) == "Y")
// 異動類別 = "眷屬調整";
else if (GetInt32Value(newRow["RPFMY_ChangeCount"]) > 0 ||
GetInt32Value(newRow["RPFM1_ChangeCount"]) > 0 ||
GetInt32Value(newRow["RPFM2_ChangeCount"]) > 0 ||
GetInt32Value(newRow["RPFM3_ChangeCount"]) > 0)
異動類別 = "眷屬加保";
else if (GetInt32Value(newRow["RPFMY_ChangeCount"]) < 0 ||
GetInt32Value(newRow["RPFM1_ChangeCount"]) < 0 ||
GetInt32Value(newRow["RPFM2_ChangeCount"]) < 0 ||
GetInt32Value(newRow["RPFM3_ChangeCount"]) < 0)
異動類別 = "眷屬退保";
else if (GetStringValue(newRow["RPOVR_Changed"]) == "Y")
異動類別 = "其他";
newRow["RPOPT"] = 異動類別;
}
result.Rows.Add(newRow);
}
///
/// 取得勞健保(異動)紀錄
///
/// 查詢條件:員工編號
/// 查詢條件:員工姓名
[DataObjectMethod(DataObjectMethodType.Select)]
public DataTable Select(string RPENO, string BPNME)
{
if (cmdSelectRpirRpren == null)
cmdSelectRpirRpren = Query.NewCommand();
cmdSelectRpirRpren.Parameters.Clear();
// 清空輸出資料表
var result = NewResult();
// 抓出所有的單號
StringBuilder sb = new StringBuilder();
sb.Append("SELECT A.RPREN FROM RPIR A INNER JOIN BPSNView B ON A.RPENO=B.BPENO WHERE 1=1 ");
if (RPENO != null && RPENO.Length > 0)
{
sb.Append(" AND A.RPENO LIKE @RPENO ");
cmdSelectRpirRpren.Parameters.Add(Query.NewParameter("RPENO", RPENO + "%"));
}
if (BPNME != null && BPNME.Length > 0)
{
sb.Append(" AND B.BPNME LIKE @BPNME ");
cmdSelectRpirRpren.Parameters.Add(Query.NewParameter("BPNME", BPNME + "%"));
}
cmdSelectRpirRpren.CommandText = sb.ToString();
DataTable rpirTmp = Query.Select(cmdSelectRpirRpren);
DataTable rpibTmp;
// 一筆一筆的抓出應該顯示的資料
foreach (DataRow rpirRow in rpirTmp.Rows)
{
// 依照單號,抓出最後一筆異動
cmdSelectRpib.Parameters[0].Value = rpirRow[0];
rpibTmp = Query.Select(cmdSelectRpib);
// 有異動資料,填入異動資料
if (rpibTmp.Rows.Count != 0)
{
FillResult(result, rpibTmp.Rows[0]);
}
// 沒有異動資料,填入原始資料
else
{
cmdSelectRpir.Parameters[0].Value = rpirRow[0];
rpibTmp = Query.Select(cmdSelectRpir);
FillResult(result, rpibTmp.Rows[0]);
}
}
return result;
}
///
/// 取得勞健保(異動)紀錄分頁查詢
///
/// 查詢條件:員工編號
/// 查詢條件:員工姓名
[DataObjectMethod(DataObjectMethodType.Select)]
public DataTable SelectPage(
int startRowIndex,
int maximumRows,
string RPENO,
string BPNME,
DateTime RPXDT1,
DateTime RPXDT2,
string RPOPT,
DateTime RPBDT1,
DateTime RPBDT2,
string orderBy
)
{
if (cmdSelectRpirRpren == null)
cmdSelectRpirRpren = Query.NewCommand();
cmdSelectRpirRpren.Parameters.Clear();
// 清空輸出資料表
var result = NewResult();
// 抓出所有的單號
StringBuilder sbRPIR = new StringBuilder();
StringBuilder sbRPIB = new StringBuilder();
sbRPIR.Append("SELECT A.RPREN FROM RPIR A INNER JOIN BPSNView B ON A.RPENO=B.BPENO WHERE 1=1 ");
sbRPIB.Append("SELECT A.RPREN FROM RPIB A INNER JOIN BPSNView B ON A.RPENO=B.BPENO WHERE 1=1 ");
if (!string.IsNullOrEmpty(RPENO))
{
sbRPIR.Append(" AND A.RPENO LIKE @RPENO ");
sbRPIB.Append(" AND A.RPENO LIKE @RPENO ");
cmdSelectRpirRpren.Parameters.Add(Query.NewParameter("RPENO", RPENO + "%"));
}
if (!string.IsNullOrEmpty(BPNME))
{
sbRPIR.Append(" AND B.BPNME LIKE @BPNME ");
sbRPIB.Append(" AND B.BPNME LIKE @BPNME ");
cmdSelectRpirRpren.Parameters.Add(Query.NewParameter("BPNME", BPNME + "%"));
}
if (RPXDT1.Ticks > 0 && RPXDT2.Ticks > 0)
{
sbRPIR.Append(" AND A.RPXDT >= @RPXDT1 AND A.RPXDT < @RPXDT2 ");
sbRPIB.Append(" AND A.RPXDT >= @RPXDT1 AND A.RPXDT < @RPXDT2 ");
cmdSelectRpirRpren.Parameters.Add(Query.NewParameter("RPXDT1", RPXDT1));
cmdSelectRpirRpren.Parameters.Add(Query.NewParameter("RPXDT2", RPXDT2.AddDays(1)));
}
else if (RPXDT1.Ticks > 0 && RPXDT2.Ticks == 0)
{
sbRPIR.Append(" AND A.RPXDT >= @RPXDT1 ");
sbRPIB.Append(" AND A.RPXDT >= @RPXDT1 ");
cmdSelectRpirRpren.Parameters.Add(Query.NewParameter("RPXDT1", RPXDT1));
}
else if (RPXDT1.Ticks == 0 && RPXDT2.Ticks > 0)
{
sbRPIR.Append(" AND A.RPXDT < @RPXDT2 ");
sbRPIB.Append(" AND A.RPXDT < @RPXDT2 ");
cmdSelectRpirRpren.Parameters.Add(Query.NewParameter("RPXDT2", RPXDT2.AddDays(1)));
}
if (!string.IsNullOrEmpty(RPOPT))
{
var rpopts = RPOPT.Split(',');
var paramNames = new string[rpopts.Length];
for (int i = 0; i < rpopts.Length; i++)
{
paramNames[i] = string.Format("@RPOPT{0}", i + 1);
}
sbRPIR.Append(string.Format(" AND A.RPOPT IN ({0}) ", string.Join(", ", paramNames)));
sbRPIB.Append(string.Format(" AND A.RPOPT IN ({0}) ", string.Join(", ", paramNames)));
for (int i = 0; i < rpopts.Length; i++)
{
cmdSelectRpirRpren.Parameters.Add(Query.NewParameter(string.Format("RPOPT{0}", i + 1), rpopts[i]));
}
}
if (RPBDT1.Ticks > 0 && RPBDT2.Ticks > 0)
{
sbRPIR.Append(" AND A.RPSDT >= @RPBDT1 AND A.RPSDT < @RPBDT2 ");
sbRPIB.Append(" AND A.RPBDT >= @RPBDT1 AND A.RPBDT < @RPBDT2 ");
cmdSelectRpirRpren.Parameters.Add(Query.NewParameter("RPBDT1", RPBDT1));
cmdSelectRpirRpren.Parameters.Add(Query.NewParameter("RPBDT2", RPBDT2.AddDays(1)));
}
else if (RPBDT1.Ticks > 0 && RPBDT2.Ticks == 0)
{
sbRPIR.Append(" AND A.RPSDT >= @RPBDT1 ");
sbRPIB.Append(" AND A.RPBDT >= @RPBDT1 ");
cmdSelectRpirRpren.Parameters.Add(Query.NewParameter("RPBDT1", RPBDT1));
}
else if (RPBDT1.Ticks == 0 && RPBDT2.Ticks > 0)
{
sbRPIR.Append(" AND A.RPSDT < @RPBDT2 ");
sbRPIB.Append(" AND A.RPBDT < @RPBDT2 ");
cmdSelectRpirRpren.Parameters.Add(Query.NewParameter("RPBDT2", RPBDT2.AddDays(1)));
}
if (string.IsNullOrEmpty(orderBy))
orderBy = "A.RPREN ASC";
cmdSelectRpirRpren.Parameters.Add(Query.NewParameter("STARTROWINDEX", startRowIndex));
cmdSelectRpirRpren.CommandText = String.Format(
@"SELECT TOP {0} * FROM
(SELECT A.RPREN
, ROW_NUMBER() OVER (ORDER BY {3}) AS ROWID
FROM ({1} UNION {2}) A
) AS TMP1 WHERE ROWID > @STARTROWINDEX"
, maximumRows, sbRPIR.ToString(), sbRPIB.ToString(), orderBy
);
DataTable rpirTmp = Query.Select(cmdSelectRpirRpren);
DataTable rpibTmp;
// 一筆一筆的抓出應該顯示的資料
foreach (DataRow rpirRow in rpirTmp.Rows)
{
// 依照單號,抓出最後一筆異動
cmdSelectRpib.Parameters[0].Value = rpirRow["RPREN"];
rpibTmp = Query.Select(cmdSelectRpib);
// 有異動資料,填入異動資料
if (rpibTmp.Rows.Count != 0)
{
FillResult(result, rpibTmp.Rows[0]);
}
// 沒有異動資料,填入原始資料
else
{
cmdSelectRpir.Parameters[0].Value = rpirRow["RPREN"];
rpibTmp = Query.Select(cmdSelectRpir);
FillResult(result, rpibTmp.Rows[0]);
}
}
return result;
}
///
/// 取得勞健保(異動)紀錄數量
///
/// 查詢條件:員工編號
/// 查詢條件:員工姓名
[DataObjectMethod(DataObjectMethodType.Select)]
public int SelectCount(string RPENO, string BPNME, DateTime RPXDT1, DateTime RPXDT2, string RPOPT, DateTime RPBDT1, DateTime RPBDT2, string orderBy)
{
if (cmdSelectRpirRpren == null)
cmdSelectRpirRpren = Query.NewCommand();
cmdSelectRpirRpren.Parameters.Clear();
StringBuilder sbRPIR = new StringBuilder();
StringBuilder sbRPIB = new StringBuilder();
sbRPIR.Append("SELECT A.RPREN FROM RPIR A INNER JOIN BPSNView B ON A.RPENO=B.BPENO WHERE 1=1 ");
sbRPIB.Append("SELECT A.RPREN FROM RPIB A INNER JOIN BPSNView B ON A.RPENO=B.BPENO WHERE 1=1 ");
if (!string.IsNullOrEmpty(RPENO))
{
sbRPIR.Append(" AND A.RPENO LIKE @RPENO ");
sbRPIB.Append(" AND A.RPENO LIKE @RPENO ");
cmdSelectRpirRpren.Parameters.Add(Query.NewParameter("RPENO", RPENO + "%"));
}
if (!string.IsNullOrEmpty(BPNME))
{
sbRPIR.Append(" AND B.BPNME LIKE @BPNME ");
sbRPIB.Append(" AND B.BPNME LIKE @BPNME ");
cmdSelectRpirRpren.Parameters.Add(Query.NewParameter("BPNME", BPNME + "%"));
}
if (RPXDT1.Ticks > 0 && RPXDT2.Ticks > 0)
{
sbRPIR.Append(" AND A.RPXDT >= @RPXDT1 AND A.RPXDT < @RPXDT2 ");
sbRPIB.Append(" AND A.RPXDT >= @RPXDT1 AND A.RPXDT < @RPXDT2 ");
cmdSelectRpirRpren.Parameters.Add(Query.NewParameter("RPXDT1", RPXDT1));
cmdSelectRpirRpren.Parameters.Add(Query.NewParameter("RPXDT2", RPXDT2.AddDays(1)));
}
else if (RPXDT1.Ticks > 0 && RPXDT2.Ticks == 0)
{
sbRPIR.Append(" AND A.RPXDT >= @RPXDT1 ");
sbRPIB.Append(" AND A.RPXDT >= @RPXDT1 ");
cmdSelectRpirRpren.Parameters.Add(Query.NewParameter("RPXDT1", RPXDT1));
}
else if (RPXDT1.Ticks == 0 && RPXDT2.Ticks > 0)
{
sbRPIR.Append(" AND A.RPXDT < @RPXDT2 ");
sbRPIB.Append(" AND A.RPXDT < @RPXDT2 ");
cmdSelectRpirRpren.Parameters.Add(Query.NewParameter("RPXDT2", RPXDT2.AddDays(1)));
}
if (!string.IsNullOrEmpty(RPOPT))
{
var rpopts = RPOPT.Split(',');
var paramNames = new string[rpopts.Length];
for (int i = 0; i < rpopts.Length; i++)
{
paramNames[i] = string.Format("@RPOPT{0}", i + 1);
}
sbRPIR.Append(string.Format(" AND A.RPOPT IN ({0}) ", string.Join(", ", paramNames)));
sbRPIB.Append(string.Format(" AND A.RPOPT IN ({0}) ", string.Join(", ", paramNames)));
for (int i = 0; i < rpopts.Length; i++)
{
cmdSelectRpirRpren.Parameters.Add(Query.NewParameter(string.Format("RPOPT{0}", i + 1), rpopts[i]));
}
}
if (RPBDT1.Ticks > 0 && RPBDT2.Ticks > 0)
{
sbRPIR.Append(" AND A.RPSDT >= @RPBDT1 AND A.RPSDT < @RPBDT2 ");
sbRPIB.Append(" AND A.RPBDT >= @RPBDT1 AND A.RPBDT < @RPBDT2 ");
cmdSelectRpirRpren.Parameters.Add(Query.NewParameter("RPBDT1", RPBDT1));
cmdSelectRpirRpren.Parameters.Add(Query.NewParameter("RPBDT2", RPBDT2.AddDays(1)));
}
else if (RPBDT1.Ticks > 0 && RPBDT2.Ticks == 0)
{
sbRPIR.Append(" AND A.RPSDT >= @RPBDT1 ");
sbRPIB.Append(" AND A.RPBDT >= @RPBDT1 ");
cmdSelectRpirRpren.Parameters.Add(Query.NewParameter("RPBDT1", RPBDT1));
}
else if (RPBDT1.Ticks == 0 && RPBDT2.Ticks > 0)
{
sbRPIR.Append(" AND A.RPSDT < @RPBDT2 ");
sbRPIB.Append(" AND A.RPBDT < @RPBDT2 ");
cmdSelectRpirRpren.Parameters.Add(Query.NewParameter("RPBDT2", RPBDT2.AddDays(1)));
}
cmdSelectRpirRpren.CommandText = String.Format(
@"SELECT COUNT(*) FROM ({0} UNION {1}) A"
, sbRPIR.ToString(), sbRPIB.ToString()
);
return WDAC.GetInt32Value(Query.ExecuteScalar(cmdSelectRpirRpren));
}
///
/// 取得勞健保(異動)紀錄單號在第幾筆
///
/// 查詢條件:員工編號
/// 查詢條件:員工姓名
public int SelectRPRENIndex(
string RPREN,
string RPENO,
string BPNME,
DateTime RPXDT1,
DateTime RPXDT2,
string RPOPT,
DateTime RPBDT1,
DateTime RPBDT2
)
{
if (cmdSelectRpirRpren == null)
cmdSelectRpirRpren = Query.NewCommand();
cmdSelectRpirRpren.Parameters.Clear();
// 抓出所有的單號
StringBuilder sbRPIR = new StringBuilder();
StringBuilder sbRPIB = new StringBuilder();
sbRPIR.Append("SELECT A.RPREN FROM RPIR A INNER JOIN BPSNView B ON A.RPENO=B.BPENO WHERE 1=1 ");
sbRPIB.Append("SELECT A.RPREN FROM RPIB A INNER JOIN BPSNView B ON A.RPENO=B.BPENO WHERE 1=1 ");
if (!string.IsNullOrEmpty(RPENO))
{
sbRPIR.Append(" AND A.RPENO LIKE @RPENO ");
sbRPIB.Append(" AND A.RPENO LIKE @RPENO ");
cmdSelectRpirRpren.Parameters.Add(Query.NewParameter("RPENO", RPENO + "%"));
}
if (!string.IsNullOrEmpty(BPNME))
{
sbRPIR.Append(" AND B.BPNME LIKE @BPNME ");
sbRPIB.Append(" AND B.BPNME LIKE @BPNME ");
cmdSelectRpirRpren.Parameters.Add(Query.NewParameter("BPNME", BPNME + "%"));
}
if (RPXDT1.Ticks > 0 && RPXDT2.Ticks > 0)
{
sbRPIR.Append(" AND A.RPXDT >= @RPXDT1 AND A.RPXDT < @RPXDT2 ");
sbRPIB.Append(" AND A.RPXDT >= @RPXDT1 AND A.RPXDT < @RPXDT2 ");
cmdSelectRpirRpren.Parameters.Add(Query.NewParameter("RPXDT1", RPXDT1));
cmdSelectRpirRpren.Parameters.Add(Query.NewParameter("RPXDT2", RPXDT2.AddDays(1)));
}
else if (RPXDT1.Ticks > 0 && RPXDT2.Ticks == 0)
{
sbRPIR.Append(" AND A.RPXDT >= @RPXDT1 ");
sbRPIB.Append(" AND A.RPXDT >= @RPXDT1 ");
cmdSelectRpirRpren.Parameters.Add(Query.NewParameter("RPXDT1", RPXDT1));
}
else if (RPXDT1.Ticks == 0 && RPXDT2.Ticks > 0)
{
sbRPIR.Append(" AND A.RPXDT < @RPXDT2 ");
sbRPIB.Append(" AND A.RPXDT < @RPXDT2 ");
cmdSelectRpirRpren.Parameters.Add(Query.NewParameter("RPXDT2", RPXDT2.AddDays(1)));
}
if (!string.IsNullOrEmpty(RPOPT))
{
var rpopts = RPOPT.Split(',');
var paramNames = new string[rpopts.Length];
for (int i = 0; i < rpopts.Length; i++)
{
paramNames[i] = string.Format("@RPOPT{0}", i + 1);
}
sbRPIR.Append(string.Format(" AND A.RPOPT IN ({0}) ", string.Join(", ", paramNames)));
sbRPIB.Append(string.Format(" AND A.RPOPT IN ({0}) ", string.Join(", ", paramNames)));
for (int i = 0; i < rpopts.Length; i++)
{
cmdSelectRpirRpren.Parameters.Add(Query.NewParameter(string.Format("RPOPT{0}", i + 1), rpopts[i]));
}
}
if (RPBDT1.Ticks > 0 && RPBDT2.Ticks > 0)
{
sbRPIR.Append(" AND A.RPSDT >= @RPBDT1 AND A.RPSDT < @RPBDT2 ");
sbRPIB.Append(" AND A.RPBDT >= @RPBDT1 AND A.RPBDT < @RPBDT2 ");
cmdSelectRpirRpren.Parameters.Add(Query.NewParameter("RPBDT1", RPBDT1));
cmdSelectRpirRpren.Parameters.Add(Query.NewParameter("RPBDT2", RPBDT2.AddDays(1)));
}
else if (RPBDT1.Ticks > 0 && RPBDT2.Ticks == 0)
{
sbRPIR.Append(" AND A.RPSDT >= @RPBDT1 ");
sbRPIB.Append(" AND A.RPBDT >= @RPBDT1 ");
cmdSelectRpirRpren.Parameters.Add(Query.NewParameter("RPBDT1", RPBDT1));
}
else if (RPBDT1.Ticks == 0 && RPBDT2.Ticks > 0)
{
sbRPIR.Append(" AND A.RPSDT < @RPBDT2 ");
sbRPIB.Append(" AND A.RPBDT < @RPBDT2 ");
cmdSelectRpirRpren.Parameters.Add(Query.NewParameter("RPBDT2", RPBDT2.AddDays(1)));
}
cmdSelectRpirRpren.CommandText = String.Format(
@"SELECT ROWID - 1 FROM
(SELECT A.RPREN
, ROW_NUMBER() OVER (ORDER BY A.RPREN ASC) AS ROWID
FROM ({0} UNION {1}) A
) AS TMP1 WHERE RPREN = @RPREN"
, sbRPIR.ToString(), sbRPIB.ToString()
);
cmdSelectRpirRpren.Parameters.Add(Query.NewParameter("RPREN", RPREN));
var o = Query.ExecuteScalar(cmdSelectRpirRpren);
if (o is int || o is Int64)
return WDAC.GetInt32Value(o);
return -1;
}
///
/// 取得最近一筆勞健保(異動)紀錄
///
/// 單號
/// 異動次數
[DataObjectMethod(DataObjectMethodType.Select)]
public DataTable SelectOne(string RPREN, int RPITM)
{
return SelectOne(RPREN, RPITM, null);
}
///
/// 取得最近一筆勞健保(異動)紀錄
///
/// 單號
/// 異動次數
public DataTable SelectOne(string RPREN, int RPITM, DbTransaction tran)
{
var result = NewResult();
if (RPREN != null && RPREN.Length > 0)
{
if (RPITM == 0)
{
cmdSelectRpirOne.Parameters[0].Value = RPREN;
DataTable tmp;
if (tran == null)
tmp = Query.Select(cmdSelectRpirOne);
else
tmp = Query.Select(cmdSelectRpirOne, tran);
if (tmp.Rows.Count > 0)
FillResult(result,tmp.Rows[0]);
}
else
{
cmdSelectRpibOne.Parameters[0].Value = RPREN;
cmdSelectRpibOne.Parameters[1].Value = RPITM;
DataTable tmp;
if (tran == null)
tmp = Query.Select(cmdSelectRpibOne);
else
tmp = Query.Select(cmdSelectRpibOne, tran);
if (tmp.Rows.Count > 0)
FillResult(result,tmp.Rows[0]);
}
}
return result;
}
///
/// 取出異動紀錄
///
///
///
[DataObjectMethod(DataObjectMethodType.Select)]
public DataTable SelectRPIB(string RPREN)
{
return SelectRPIB(RPREN, null, null, false);
}
///
/// 取出異動紀錄
///
///
///
[DataObjectMethod(DataObjectMethodType.Select)]
public DataTable SelectRPIB(string RPREN, DbTransaction tran, string orderBy, bool assending)
{
var result = NewResult();
if (RPREN != null && RPREN.Length > 0)
{
if (string.IsNullOrEmpty(orderBy))
{
cmdSelectRpib1.CommandText = string.Format("{0} {1}", sqlSelectRpib1, orderSelectRpib1);
}
else
{
cmdSelectRpib1.CommandText = string.Format("{0} order by {1}", sqlSelectRpib1, orderBy);
}
cmdSelectRpib1.Parameters[0].Value = RPREN;
DataTable tmp;
if (tran != null)
tmp = Query.Select(cmdSelectRpib1, tran);
else
tmp = Query.Select(cmdSelectRpib1);
if (assending)
{
for (int i = 0; i < tmp.Rows.Count; i++)
{
if (i != 0)
FillResult(result, tmp.Rows[i], tmp.Rows[i - 1]);
else
FillResult(result, tmp.Rows[i]);
}
}
else
{
for (int i = 0; i < tmp.Rows.Count; i++)
{
if (i < tmp.Rows.Count - 1)
FillResult(result, tmp.Rows[i], tmp.Rows[i + 1]);
else
FillResult(result, tmp.Rows[i]);
}
}
}
return result;
}
///
/// 取出起始日期至結束日期之間,勞健保異動紀錄
///
///
///
///
///
///
//public DataTable SelectRPIBMonth(string RPREN, DateTime startDay, DateTime endDay, DbTransaction tran)
//{
// var result = NewResult();
// if (RPREN != null && RPREN.Length > 0)
// {
// cmdSelectRpib2.Parameters[0].Value = RPREN;
// cmdSelectRpib2.Parameters[1].Value = startDay;
// cmdSelectRpib2.Parameters[2].Value = endDay;
// DataTable tmp = Query.Select(cmdSelectRpib2, tran);
// for (int i = 0; i < tmp.Rows.Count; i++)
// {
// if (i != 0)
// FillResult(result, tmp.Rows[i], tmp.Rows[i - 1]);
// else
// FillResult(result, tmp.Rows[i]);
// }
// }
// return result;
//}
///
/// 取出單筆異動紀錄
///
///
///
[DataObjectMethod(DataObjectMethodType.Select)]
public DataTable SelectRPIBOne(string RPREN, int RPITM)
{
var result = NewResult();
if (RPREN != null && RPREN.Length > 0)
{
cmdSelectRpib1.CommandText = string.Format("{0} {1}", sqlSelectRpib1, orderSelectRpib1);
cmdSelectRpib1.Parameters[0].Value = RPREN;
DataTable tmp = Query.Select(cmdSelectRpib1);
for (int i = 0; i < tmp.Rows.Count; i++)
{
if (Convert.ToInt32(tmp.Rows[i]["RPITM"]) == RPITM)
{
//if (i != 0)
// FillResult(result, tmp.Rows[i], tmp.Rows[i - 1]);
//else
// FillResult(result, tmp.Rows[i]);
if (i < tmp.Rows.Count - 1)
FillResult(result, tmp.Rows[i], tmp.Rows[i + 1]);
else
FillResult(result, tmp.Rows[i]);
}
}
}
return result;
}
///
/// 取得下一個異動次數
///
/// 單號
private int NextRPITM(string RPREN)
{
DbCommand cmd = Query.NewCommand("SELECT ISNULL(MAX(RPITM), 0) + 1 FROM RPIB WHERE RPREN=@RPREN");
cmd.Parameters.Add(Query.NewParameter("RPREN", RPREN));
int Result;
ExecuteScalar(cmd, out Result);
return Result;
}
///
/// 加入一筆紀錄,自動判斷該加入的是加退保紀錄還是異動紀錄
///
[DataObjectMethod(DataObjectMethodType.Insert)]
public int Insert(string RPREN, int RPITM, DateTime RPBDT, string RPENO, DateTime RPSDT, DateTime RPEDT,
int RPSLY, int RPAMT, int RPAM2, int RPAM3, int RPFMY, int RPFM1, int RPFM2, int RPFM3, int RPSLA, string RPDIS, string RPDIH,
string RPOLD, string RPNAT, string RPPTP, string RPLIS, string RPHIS, string RPDOC, string RPCPY, string RPOVR,
string RPFMD, DateTime RPXDT, string RPOPT,
string TRUSR)
{
DbCommand cmdInsert = Query.NewCommand();
if (RPITM == 0)
{
cmdInsert.CommandText =
@"INSERT INTO RPIR
(RPREN, RPENO, RPSDT, RPEDT, RPSLY, RPAMT, RPAM2, RPAM3, RPFMY, RPFM1, RPFM2, RPFM3, RPSLA,
RPDIS, RPDIH, RPOLD, RPNAT, RPPTP, RPLIS, RPHIS, RPDOC, RPCPY, RPOVR, RPFMD,
RPXDT, RPOPT,
APPNO, TRDAT, TRMOD, TRUSR)
VALUES
(@RPREN, @RPENO, @RPSDT, @RPEDT, @RPSLY, @RPAMT, @RPAM2, @RPAM3, @RPFMY, @RPFM1, @RPFM2, @RPFM3, @RPSLA,
@RPDIS, @RPDIH, @RPOLD, @RPNAT, @RPPTP, @RPLIS, @RPHIS, @RPDOC, @RPCPY, @RPOVR, @RPFMD,
@RPXDT, @RPOPT,
1, GETDATE(), 'INSERT', @TRUSR)";
AddParam(cmdInsert, "RPREN", RPREN);
AddParam(cmdInsert, "RPENO", RPENO);
AddParam(cmdInsert, "RPSDT", RPSDT);
AddParam(cmdInsert, "RPEDT", RPEDT);
AddParam(cmdInsert, "RPSLY", RPSLY);
AddParam(cmdInsert, "RPAMT", RPAMT);
AddParam(cmdInsert, "RPAM2", RPAM2);
AddParam(cmdInsert, "RPAM3", RPAM3);
AddParam(cmdInsert, "RPFMY", RPFMY);
AddParam(cmdInsert, "RPFM1", RPFM1);
AddParam(cmdInsert, "RPFM2", RPFM2);
AddParam(cmdInsert, "RPFM3", RPFM3);
AddParam(cmdInsert, "RPSLA", RPSLA);
AddParam(cmdInsert, "RPDIS", RPDIS);
AddParam(cmdInsert, "RPDIH", RPDIH);
AddParam(cmdInsert, "RPOLD", RPOLD);
AddParam(cmdInsert, "RPNAT", RPNAT);
AddParam(cmdInsert, "RPPTP", RPPTP);
AddParam(cmdInsert, "RPLIS", RPLIS);
AddParam(cmdInsert, "RPHIS", RPHIS);
AddParam(cmdInsert, "RPDOC", RPDOC);
AddParam(cmdInsert, "RPCPY", RPCPY);
AddParam(cmdInsert, "RPOVR", RPOVR);
AddParam(cmdInsert, "RPFMD", RPFMD);
AddParam(cmdInsert, "RPXDT", RPXDT);
AddParam(cmdInsert, "RPOPT", RPOPT);
AddParam(cmdInsert, "TRUSR", TRUSR);
}
else
{
cmdInsert.CommandText =
@"INSERT INTO RPIB
(RPREN, RPITM, RPBDT, RPENO, RPSDT, RPEDT, RPSLY, RPAMT, RPAM2, RPAM3, RPFMY, RPFM1, RPFM2, RPFM3, RPSLA,
RPDIS, RPDIH, RPOLD, RPNAT, RPPTP, RPLIS, RPHIS, RPDOC, RPCPY, RPOVR, RPFMD, RPXDT, RPOPT,
APPNO, TRDAT, TRMOD, TRUSR)
VALUES
(@RPREN, @RPITM, @RPBDT, @RPENO, @RPSDT, @RPEDT, @RPSLY, @RPAMT, @RPAM2, @RPAM3, @RPFMY, @RPFM1, @RPFM2, @RPFM3, @RPSLA,
@RPDIS, @RPDIH, @RPOLD, @RPNAT, @RPPTP, @RPLIS, @RPHIS, @RPDOC, @RPCPY, @RPOVR, @RPFMD, @RPXDT, @RPOPT,
1, GETDATE(), 'INSERT', @TRUSR)";
AddParam(cmdInsert, "RPREN", RPREN);
AddParam(cmdInsert, "RPITM", NextRPITM(RPREN));
AddParam(cmdInsert, "RPBDT", RPBDT);
AddParam(cmdInsert, "RPENO", RPENO);
AddParam(cmdInsert, "RPSDT", RPSDT);
AddParam(cmdInsert, "RPEDT", RPEDT);
AddParam(cmdInsert, "RPSLY", RPSLY);
AddParam(cmdInsert, "RPAMT", RPAMT);
AddParam(cmdInsert, "RPAM2", RPAM2);
AddParam(cmdInsert, "RPAM3", RPAM3);
AddParam(cmdInsert, "RPFMY", RPFMY);
AddParam(cmdInsert, "RPFM1", RPFM1);
AddParam(cmdInsert, "RPFM2", RPFM2);
AddParam(cmdInsert, "RPFM3", RPFM3);
AddParam(cmdInsert, "RPSLA", RPSLA);
AddParam(cmdInsert, "RPDIS", RPDIS);
AddParam(cmdInsert, "RPDIH", RPDIH);
AddParam(cmdInsert, "RPOLD", RPOLD);
AddParam(cmdInsert, "RPNAT", RPNAT);
AddParam(cmdInsert, "RPPTP", RPPTP);
AddParam(cmdInsert, "RPLIS", RPLIS);
AddParam(cmdInsert, "RPHIS", RPHIS);
AddParam(cmdInsert, "RPDOC", RPDOC);
AddParam(cmdInsert, "RPCPY", RPCPY);
AddParam(cmdInsert, "RPOVR", RPOVR);
AddParam(cmdInsert, "RPFMD", RPFMD);
AddParam(cmdInsert, "RPXDT", RPXDT);
AddParam(cmdInsert, "RPOPT", RPOPT);
AddParam(cmdInsert, "TRUSR", TRUSR);
}
return Query.ExecuteNonQuery(cmdInsert);
}
///
/// 更正
///
[DataObjectMethod(DataObjectMethodType.Update)]
public int Update(string RPREN, int RPITM, DateTime RPBDT, string RPENO, DateTime RPSDT, DateTime RPEDT,
int RPSLY, int RPAMT, int RPAM2, int RPAM3, int RPFMY, int RPFM1, int RPFM2, int RPFM3, int RPSLA, string RPDIS, string RPDIH,
string RPOLD, string RPNAT, string RPPTP, string RPLIS, string RPHIS, string RPDOC, string RPCPY, string RPOVR,
string RPFMD, DateTime RPXDT, string RPOPT,
string TRUSR,
string OLD_RPREN, int OLD_RPITM, int OLD_APPNO, int APPNO)
{
DbCommand cmdUpdate = Query.NewCommand();
if (OLD_RPITM == 0)
{
cmdUpdate.CommandText =
@"UPDATE RPIR SET
RPREN = @RPREN,
RPENO = @RPENO,
RPSDT = @RPSDT,
RPEDT = @RPEDT,
RPSLY = @RPSLY,
RPAMT = @RPAMT,
RPAM2 = @RPAM2,
RPAM3 = @RPAM3,
RPFMY = @RPFMY,
RPFM1 = @RPFM1,
RPFM2 = @RPFM2,
RPFM3 = @RPFM3,
RPSLA = @RPSLA,
RPDIS = @RPDIS,
RPDIH = @RPDIH,
RPOLD = @RPOLD,
RPNAT = @RPNAT,
RPPTP = @RPPTP,
RPLIS = @RPLIS,
RPHIS = @RPHIS,
RPDOC = @RPDOC,
RPCPY = @RPCPY,
RPOVR = @RPOVR,
RPFMD = @RPFMD,
RPXDT = @RPXDT,
RPOPT = @RPOPT,
APPNO = APPNO + 1,
TRDAT = GETDATE(),
TRMOD = 'UPDATE',
TRUSR = @TRUSR
WHERE RPREN = @OLD_RPREN
AND APPNO = @OLD_APPNO";
AddParam(cmdUpdate, "RPREN", RPREN);
AddParam(cmdUpdate, "RPENO", RPENO);
AddParam(cmdUpdate, "RPSDT", RPSDT);
AddParam(cmdUpdate, "RPEDT", RPEDT);
AddParam(cmdUpdate, "RPSLY", RPSLY);
AddParam(cmdUpdate, "RPAMT", RPAMT);
AddParam(cmdUpdate, "RPAM2", RPAM2);
AddParam(cmdUpdate, "RPAM3", RPAM3);
AddParam(cmdUpdate, "RPFMY", RPFMY);
AddParam(cmdUpdate, "RPFM1", RPFM1);
AddParam(cmdUpdate, "RPFM2", RPFM2);
AddParam(cmdUpdate, "RPFM3", RPFM3);
AddParam(cmdUpdate, "RPSLA", RPSLA);
AddParam(cmdUpdate, "RPDIS", RPDIS);
AddParam(cmdUpdate, "RPDIH", RPDIH);
AddParam(cmdUpdate, "RPOLD", RPOLD);
AddParam(cmdUpdate, "RPNAT", RPNAT);
AddParam(cmdUpdate, "RPPTP", RPPTP);
AddParam(cmdUpdate, "RPLIS", RPLIS);
AddParam(cmdUpdate, "RPHIS", RPHIS);
AddParam(cmdUpdate, "RPDOC", RPDOC);
AddParam(cmdUpdate, "RPCPY", RPCPY);
AddParam(cmdUpdate, "RPOVR", RPOVR);
AddParam(cmdUpdate, "RPFMD", RPFMD);
AddParam(cmdUpdate, "RPXDT", RPXDT);
AddParam(cmdUpdate, "RPOPT", RPOPT);
AddParam(cmdUpdate, "TRUSR", TRUSR);
AddParam(cmdUpdate, "OLD_RPREN", OLD_RPREN);
AddParam(cmdUpdate, "OLD_APPNO", OLD_APPNO);
}
else
{
cmdUpdate.CommandText =
@"UPDATE RPIB SET
RPREN = @RPREN,
RPITM = @RPITM,
RPBDT = @RPBDT,
RPENO = @RPENO,
RPSDT = @RPSDT,
RPEDT = @RPEDT,
RPSLY = @RPSLY,
RPAMT = @RPAMT,
RPAM2 = @RPAM2,
RPAM3 = @RPAM3,
RPFMY = @RPFMY,
RPFM1 = @RPFM1,
RPFM2 = @RPFM2,
RPFM3 = @RPFM3,
RPSLA = @RPSLA,
RPDIS = @RPDIS,
RPDIH = @RPDIH,
RPOLD = @RPOLD,
RPNAT = @RPNAT,
RPPTP = @RPPTP,
RPLIS = @RPLIS,
RPHIS = @RPHIS,
RPDOC = @RPDOC,
RPCPY = @RPCPY,
RPOVR = @RPOVR,
RPFMD = @RPFMD,
RPXDT = @RPXDT,
RPOPT = @RPOPT,
APPNO = APPNO + 1,
TRDAT = GETDATE(),
TRMOD = 'UPDATE',
TRUSR = @TRUSR
WHERE RPREN = @OLD_RPREN
AND RPITM = @OLD_RPITM
AND APPNO = @OLD_APPNO";
AddParam(cmdUpdate, "RPREN", RPREN);
AddParam(cmdUpdate, "RPITM", RPITM);
AddParam(cmdUpdate, "RPBDT", RPBDT);
AddParam(cmdUpdate, "RPENO", RPENO);
AddParam(cmdUpdate, "RPSDT", RPSDT);
AddParam(cmdUpdate, "RPEDT", RPEDT);
AddParam(cmdUpdate, "RPSLY", RPSLY);
AddParam(cmdUpdate, "RPAMT", RPAMT);
AddParam(cmdUpdate, "RPAM2", RPAM2);
AddParam(cmdUpdate, "RPAM3", RPAM3);
AddParam(cmdUpdate, "RPFMY", RPFMY);
AddParam(cmdUpdate, "RPFM1", RPFM1);
AddParam(cmdUpdate, "RPFM2", RPFM2);
AddParam(cmdUpdate, "RPFM3", RPFM3);
AddParam(cmdUpdate, "RPSLA", RPSLA);
AddParam(cmdUpdate, "RPDIS", RPDIS);
AddParam(cmdUpdate, "RPDIH", RPDIH);
AddParam(cmdUpdate, "RPOLD", RPOLD);
AddParam(cmdUpdate, "RPNAT", RPNAT);
AddParam(cmdUpdate, "RPPTP", RPPTP);
AddParam(cmdUpdate, "RPLIS", RPLIS);
AddParam(cmdUpdate, "RPHIS", RPHIS);
AddParam(cmdUpdate, "RPDOC", RPDOC);
AddParam(cmdUpdate, "RPCPY", RPCPY);
AddParam(cmdUpdate, "RPOVR", RPOVR);
AddParam(cmdUpdate, "RPFMD", RPFMD);
AddParam(cmdUpdate, "RPXDT", RPXDT);
AddParam(cmdUpdate, "RPOPT", RPOPT);
AddParam(cmdUpdate, "TRUSR", TRUSR);
AddParam(cmdUpdate, "OLD_RPREN", OLD_RPREN);
AddParam(cmdUpdate, "OLD_RPITM", OLD_RPITM);
AddParam(cmdUpdate, "OLD_APPNO", OLD_APPNO);
}
return Query.ExecuteNonQuery(cmdUpdate);
}
///
/// 刪除一筆紀錄,自動判斷該加入的是加退保紀錄還是異動紀錄
///
[DataObjectMethod(DataObjectMethodType.Delete)]
public int Delete(string OLD_RPREN, int OLD_RPITM, int OLD_APPNO)
{
OLD_RPREN = OLD_RPREN != null ? OLD_RPREN : "";
DbCommand cmdDelete = Query.NewCommand();
if (OLD_RPITM == 0)
{
cmdDelete.CommandText =
@"DELETE FROM RPIR
WHERE RPREN = @OLD_RPREN
AND APPNO = @OLD_APPNO";
AddParam(cmdDelete, "OLD_RPREN", OLD_RPREN);
AddParam(cmdDelete, "OLD_APPNO", OLD_APPNO);
}
else
{
cmdDelete.CommandText =
@"DELETE FROM RPIB
WHERE RPREN = @OLD_RPREN
AND RPITM = @OLD_RPITM
AND APPNO = @OLD_APPNO";
AddParam(cmdDelete, "OLD_RPREN", OLD_RPREN);
AddParam(cmdDelete, "OLD_RPITM", OLD_RPITM);
AddParam(cmdDelete, "OLD_APPNO", OLD_APPNO);
}
return Query.ExecuteNonQuery(cmdDelete);
}
public void CompareChanged(DataRow current, DataRow prev)
{
current.BeginEdit();
current["RPSDT_Changed"] = FieldDiff(current["RPSDT"], prev["RPSDT"]);
current["RPEDT_Changed"] = FieldDiff(current["RPEDT"], prev["RPEDT"]);
current["RPSLY_Changed"] = FieldDiff(current["RPSLY"], prev["RPSLY"]);
current["RPAMT_Changed"] = FieldDiff(current["RPAMT"], prev["RPAMT"]);
current["RPAM2_Changed"] = FieldDiff(current["RPAM2"], prev["RPAM2"]);
current["RPAM3_Changed"] = FieldDiff(current["RPAM3"], prev["RPAM3"]);
current["RPFMY_Changed"] = FieldDiff(current["RPFMY"], prev["RPFMY"]);
current["RPFM1_Changed"] = FieldDiff(current["RPFM1"], prev["RPFM1"]);
current["RPFM2_Changed"] = FieldDiff(current["RPFM2"], prev["RPFM2"]);
current["RPFM3_Changed"] = FieldDiff(current["RPFM3"], prev["RPFM3"]);
current["RPSLA_Changed"] = FieldDiff(current["RPSLA"], prev["RPSLA"]);
current["RPDIS_Changed"] = FieldDiff(current["RPDIS"], prev["RPDIS"]);
current["RPDIH_Changed"] = FieldDiff(current["RPDIH"], prev["RPDIH"]);
current["RPOLD_Changed"] = FieldDiff(current["RPOLD"], prev["RPOLD"]);
current["RPNAT_Changed"] = FieldDiff(current["RPNAT"], prev["RPNAT"]);
current["RPPTP_Changed"] = FieldDiff(current["RPPTP"], prev["RPPTP"]);
current["RPLIS_Changed"] = FieldDiff(current["RPLIS"], prev["RPLIS"]);
current["RPHIS_Changed"] = FieldDiff(current["RPHIS"], prev["RPHIS"]);
current["RPCPY_Changed"] = FieldDiff(current["RPCPY"], prev["RPCPY"]);
current["RPOVR_Changed"] = FieldDiff(current["RPOVR"], prev["RPOVR"]);
current["RPFMD_Changed"] = FieldDiff(current["RPFMD"], prev["RPFMD"]);
current["RPXDT_Changed"] = FieldDiff(current["RPXDT"], prev["RPXDT"]);
current["RPOPT_Changed"] = FieldDiff(current["RPOPT"], prev["RPOPT"]);
current["RPFMY_ChangeCount"] = Convert.ToInt32(current["RPFMY"]) - Convert.ToInt32(prev["RPFMY"]);
current["RPFM1_ChangeCount"] = Convert.ToInt32(current["RPFM1"]) - Convert.ToInt32(prev["RPFM1"]);
current["RPFM2_ChangeCount"] = Convert.ToInt32(current["RPFM2"]) - Convert.ToInt32(prev["RPFM2"]);
current["RPFM3_ChangeCount"] = Convert.ToInt32(current["RPFM3"]) - Convert.ToInt32(prev["RPFM3"]);
current.EndEdit();
}
}