chore: 首次簽入 Thinkyu ASP.NET 專案
- 加入 Visual Studio / ASP.NET .gitignore - 排除建置輸出、IDE 設定、NuGet packages、大型 MSI 安裝檔
This commit is contained in:
@@ -0,0 +1,51 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.Common;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
using WebLib;
|
||||
|
||||
namespace Education
|
||||
{
|
||||
/// <summary>
|
||||
/// 通匯銀行資料
|
||||
/// </summary>
|
||||
public class BRML: DAC
|
||||
{
|
||||
public BRML()
|
||||
: base()
|
||||
{
|
||||
}
|
||||
|
||||
public BRML(DbConnection conn)
|
||||
: base(conn)
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
public NameValueList BankBranchList()
|
||||
{
|
||||
NameValueList result = new NameValueList();
|
||||
|
||||
NameValueList banks = new NameValueList();
|
||||
IDataList banklist = banks as IDataList;
|
||||
DbCommand cmdSelect = NewCommand("SELECT BCNUM AS Value, BCSNM as Name FROM BRML WHERE LEN(BCNUM) = 3");
|
||||
Select(cmdSelect, ref banklist);
|
||||
|
||||
foreach (NameValueItem bank in banks)
|
||||
{
|
||||
NameValueList branches = new NameValueList();
|
||||
IDataList branchlist = branches as IDataList;
|
||||
DbCommand cmdBranch = NewCommand("SELECT BCNUM AS Value, BCNAM as Name FROM BRML WHERE BCNUM LIKE @BCNUM AND LEN(BCNUM) > 3");
|
||||
AddParam(cmdBranch, "@BCNUM", $"{bank.Value}%");
|
||||
Select(cmdBranch, ref branchlist);
|
||||
|
||||
foreach (NameValueItem branch in branches)
|
||||
{
|
||||
result.Add($"{bank.Name}{branch.Name}", branch.Value);
|
||||
}
|
||||
}
|
||||
return result;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,736 @@
|
||||
//
|
||||
// 這個檔案是 付款設定 資料表的資料存取類別 檔案一
|
||||
// 請不要修改這個檔案,重新產生資料存取類別時,這個檔案會被覆蓋掉
|
||||
//
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Data.Common;
|
||||
using System.Linq;
|
||||
using System.Transactions;
|
||||
using WebLib;
|
||||
using System.Data.SqlClient;
|
||||
|
||||
namespace Education
|
||||
{
|
||||
///<summary>
|
||||
/// 付款設定 資料存取類別
|
||||
///</ summary>
|
||||
[DataObject]
|
||||
public partial class DAC_付款設定 : WebLib.DAC
|
||||
{
|
||||
private const string _tableName = "[付款設定]";
|
||||
private const string _allFields = "[編號], [講師_非講師編號], [生效日期], [憑證類別], [扣繳類別], [匯款戶名], [匯款帳號], [銀行分行], [銀行分行代碼], [備註], [DB_APPNO], [DB_CRDAT], [DB_CRUSR], [DB_TRDAT], [DB_TRUSR]";
|
||||
private string _orderBy = "[編號]";
|
||||
private string _select = "select " + _allFields;
|
||||
private string _insert = "[講師_非講師編號], [生效日期], [憑證類別], [扣繳類別], [匯款戶名], [匯款帳號], [銀行分行], [銀行分行代碼], [備註], [DB_APPNO], [DB_CRDAT], [DB_CRUSR], [DB_TRDAT], [DB_TRUSR]";
|
||||
private string _insertBak = "[編號], [講師_非講師編號], [生效日期], [憑證類別], [扣繳類別], [匯款戶名], [匯款帳號], [銀行分行], [銀行分行代碼], [備註], [DB_APPNO], [DB_CRDAT], [DB_CRUSR], [DB_TRDAT], [DB_TRUSR], [DB_TRMOD]";
|
||||
private string _insertValue = "@講師_非講師編號, @生效日期, @憑證類別, @扣繳類別, @匯款戶名, @匯款帳號, @銀行分行, @銀行分行代碼, @備註, @DB_APPNO, @DB_CRDAT, @DB_CRUSR, @DB_TRDAT, @DB_TRUSR";
|
||||
private string _insertBakValue = "@編號, @講師_非講師編號, @生效日期, @憑證類別, @扣繳類別, @匯款戶名, @匯款帳號, @銀行分行, @銀行分行代碼, @備註, @DB_APPNO, @DB_CRDAT, @DB_CRUSR, @DB_TRDAT, @DB_TRUSR, @DB_TRMOD";
|
||||
private string _from = " from " + _tableName + " ";
|
||||
private string _where = " where 1=1 ";
|
||||
private string _order = " order by [編號] ";
|
||||
|
||||
public DAC_付款設定()
|
||||
: base()
|
||||
{
|
||||
}
|
||||
|
||||
public DAC_付款設定(DbConnection conn)
|
||||
: base(conn)
|
||||
{
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public 付款設定List SelectAll(string orderBy = "")
|
||||
{
|
||||
付款設定List result = new 付款設定List();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = _select + _from + _where + (orderBy == null || orderBy.Length == 0 ? _order : " order by " + orderBy);
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
public int SelectAllCount()
|
||||
{
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = "select count(1) " + _from;
|
||||
int i;
|
||||
ExecuteScalar(cmdSelect, out i);
|
||||
return i;
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public 付款設定List SelectAllPage(int startRowIndex, int maximumRows, string orderBy = "")
|
||||
{
|
||||
付款設定List result = new 付款設定List();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText =
|
||||
String.Format("select top {0} * from (", maximumRows)
|
||||
+ "select " + _allFields
|
||||
+ ", row_number() over (order by " + (orderBy == null || orderBy.Length == 0 ? _orderBy : orderBy) + ") as rowid "
|
||||
+ _from + _where
|
||||
+ ") as TMP1 where rowid > @startRowIndex ";
|
||||
AddParam(cmdSelect, "startRowIndex", startRowIndex);
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public 付款設定List SelectOne(int 編號)
|
||||
{
|
||||
付款設定List result = new 付款設定List();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = _select + _from + _where
|
||||
+ " and 編號 = @編號 "
|
||||
;
|
||||
AddParam(cmdSelect, "編號", 編號);
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 給查詢畫面用的增加 Where 條件的方法
|
||||
///</summary>
|
||||
private void AddWhere(DbCommand cmdSelect, ref bool noInput, int? 編號, string 講師_非講師編號)
|
||||
{
|
||||
if (編號 != null)
|
||||
{
|
||||
noInput = false;
|
||||
cmdSelect.CommandText += " and 編號 = @編號 ";
|
||||
AddParam(cmdSelect, "編號", 編號);
|
||||
}
|
||||
|
||||
if (講師_非講師編號 != null && 講師_非講師編號.Length > 0)
|
||||
{
|
||||
noInput = false;
|
||||
cmdSelect.CommandText += " and 講師_非講師編號 like @講師_非講師編號 ";
|
||||
AddParam(cmdSelect, "講師_非講師編號", "%" + 講師_非講師編號 + "%");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 給查詢畫面用的 Select 方法
|
||||
///</summary>
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public 付款設定List Select(bool noInputReturnAll, int? 編號, string 講師_非講師編號, string orderBy = "")
|
||||
{
|
||||
付款設定List result = new 付款設定List();
|
||||
bool noInput = true;
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = _select + _from + _where;
|
||||
AddWhere(cmdSelect, ref noInput, 編號, 講師_非講師編號);
|
||||
cmdSelect.CommandText += (orderBy == null || orderBy.Length == 0 ? _order : " order by " + orderBy);
|
||||
|
||||
if (!noInputReturnAll && noInput)
|
||||
return result;
|
||||
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 給查詢畫面用的 SelectCount 方法
|
||||
///</summary>
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public int SelectCount(bool noInputReturnAll, int? 編號, string 講師_非講師編號, string orderBy = "")
|
||||
{
|
||||
bool noInput = true;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = "select count(1) " + _from + _where;
|
||||
AddWhere(cmdSelect, ref noInput, 編號, 講師_非講師編號);
|
||||
|
||||
if (!noInputReturnAll && noInput)
|
||||
return 0;
|
||||
|
||||
int i;
|
||||
ExecuteScalar(cmdSelect, out i);
|
||||
return i;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 給查詢畫面用的 SelectPage 方法
|
||||
///</summary>
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public 付款設定List SelectPage(bool noInputReturnAll, int startRowIndex, int maximumRows, int? 編號, string 講師_非講師編號, string orderBy = "")
|
||||
{
|
||||
付款設定List result = new 付款設定List();
|
||||
bool noInput = true;
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
|
||||
cmdSelect.CommandText =
|
||||
String.Format("select top {0} * from (", maximumRows)
|
||||
+ "select " + _allFields
|
||||
+ ", row_number() over (order by " + (orderBy == null || orderBy.Length == 0 ? _orderBy : orderBy) + ") as rowid "
|
||||
+ _from + _where;
|
||||
AddWhere(cmdSelect, ref noInput, 編號, 講師_非講師編號);
|
||||
cmdSelect.CommandText += ") as TMP1 where rowid > @startRowIndex ";
|
||||
AddParam(cmdSelect, "startRowIndex", startRowIndex);
|
||||
|
||||
if (!noInputReturnAll && noInput)
|
||||
return result;
|
||||
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Insert)]
|
||||
public 付款設定Item InsertOne(付款設定Item value)
|
||||
{
|
||||
using (TransactionScope ts = DAC.NewTransactionScope())
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!BeforeInsertOne(value))
|
||||
return value;
|
||||
DbCommand cmdInsert = NewCommand();
|
||||
cmdInsert.CommandText =
|
||||
"insert into [付款設定]"
|
||||
+ " (" + _insert + ")"
|
||||
+ "values "
|
||||
+ " (" + _insertValue + ");" + "select @@identity"
|
||||
;
|
||||
AddParam(cmdInsert, "講師_非講師編號", value.講師_非講師編號);
|
||||
AddParam(cmdInsert, "生效日期", value.生效日期);
|
||||
AddParam(cmdInsert, "憑證類別", value.憑證類別);
|
||||
AddParam(cmdInsert, "扣繳類別", value.扣繳類別);
|
||||
AddParam(cmdInsert, "匯款戶名", value.匯款戶名);
|
||||
AddParam(cmdInsert, "匯款帳號", value.匯款帳號);
|
||||
AddParam(cmdInsert, "銀行分行", value.銀行分行);
|
||||
AddParam(cmdInsert, "銀行分行代碼", value.銀行分行代碼);
|
||||
AddParam(cmdInsert, "備註", value.備註);
|
||||
AddParam(cmdInsert, "DB_APPNO", 1);
|
||||
AddParam(cmdInsert, "DB_CRDAT", DateTime.Now);
|
||||
AddParam(cmdInsert, "DB_CRUSR", CurrentUserId);
|
||||
AddParam(cmdInsert, "DB_TRDAT", DBNull.Value);
|
||||
AddParam(cmdInsert, "DB_TRUSR", DBNull.Value);
|
||||
int newId;
|
||||
ExecuteScalar(cmdInsert, out newId);
|
||||
value.編號 = newId;
|
||||
AfterInsertOne(value);
|
||||
ts.Complete();
|
||||
}
|
||||
catch (Exception error)
|
||||
{
|
||||
bool handled;
|
||||
OnInsertOneError(error, out handled);
|
||||
if(!handled)
|
||||
throw error;
|
||||
}
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Update)]
|
||||
public 付款設定Item UpdateOne(付款設定Item value)
|
||||
{
|
||||
using (TransactionScope ts = DAC.NewTransactionScope())
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!BeforeUpdateOne(value))
|
||||
return value;
|
||||
|
||||
付款設定List oldValues = SelectOne(value.編號);
|
||||
if (oldValues.Count == 0 || oldValues[0].DB_APPNO != value.DB_APPNO)
|
||||
{
|
||||
throw new DBConcurrencyException("在更新 \"付款設定\" 資料表時發生並行例外:找不到要更新的資料列");
|
||||
}
|
||||
else
|
||||
{
|
||||
DoBackup(oldValues[0], "UPDATE");
|
||||
}
|
||||
|
||||
DbCommand cmdUpdate = NewCommand();
|
||||
cmdUpdate.CommandText =
|
||||
@"update [付款設定]
|
||||
set
|
||||
[講師_非講師編號] = @講師_非講師編號 ,
|
||||
[生效日期] = @生效日期 ,
|
||||
[憑證類別] = @憑證類別 ,
|
||||
[扣繳類別] = @扣繳類別 ,
|
||||
[匯款戶名] = @匯款戶名 ,
|
||||
[匯款帳號] = @匯款帳號 ,
|
||||
[銀行分行] = @銀行分行 ,
|
||||
[銀行分行代碼] = @銀行分行代碼 ,
|
||||
[備註] = @備註 ,
|
||||
DB_APPNO = DB_APPNO + 1,
|
||||
DB_TRDAT = @DB_TRDAT,
|
||||
DB_TRUSR = @DB_TRUSR
|
||||
where 1=1
|
||||
and [編號] = @original_編號
|
||||
and DB_APPNO = @original_DB_APPNO
|
||||
";
|
||||
AddParam(cmdUpdate, "講師_非講師編號", value.講師_非講師編號);
|
||||
AddParam(cmdUpdate, "生效日期", value.生效日期);
|
||||
AddParam(cmdUpdate, "憑證類別", value.憑證類別);
|
||||
AddParam(cmdUpdate, "扣繳類別", value.扣繳類別);
|
||||
AddParam(cmdUpdate, "匯款戶名", value.匯款戶名);
|
||||
AddParam(cmdUpdate, "匯款帳號", value.匯款帳號);
|
||||
AddParam(cmdUpdate, "銀行分行", value.銀行分行);
|
||||
AddParam(cmdUpdate, "銀行分行代碼", value.銀行分行代碼);
|
||||
AddParam(cmdUpdate, "備註", value.備註);
|
||||
AddParam(cmdUpdate, "DB_TRDAT", DateTime.Now);
|
||||
AddParam(cmdUpdate, "DB_TRUSR", CurrentUserId);
|
||||
AddParam(cmdUpdate, "original_編號", value.編號);
|
||||
AddParam(cmdUpdate, "original_DB_APPNO", value.DB_APPNO);
|
||||
ExecuteNonQuery(cmdUpdate);
|
||||
AfterUpdateOne(value);
|
||||
ts.Complete();
|
||||
return value;
|
||||
}
|
||||
catch (Exception error)
|
||||
{
|
||||
bool handled;
|
||||
OnUpdateOneError(error, out handled);
|
||||
if(!handled)
|
||||
throw error;
|
||||
return value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Update)]
|
||||
public 付款設定Item UpdateOne(付款設定Item value, 付款設定Item original_value)
|
||||
{
|
||||
using (TransactionScope ts = DAC.NewTransactionScope())
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!BeforeUpdateOne(value, original_value))
|
||||
return value;
|
||||
|
||||
付款設定List oldValues = SelectOne(original_value.編號);
|
||||
if (oldValues.Count == 0 || oldValues[0].DB_APPNO != value.DB_APPNO)
|
||||
{
|
||||
throw new DBConcurrencyException("在更新 \"付款設定\" 資料表時發生並行例外:找不到要更新的資料列");
|
||||
}
|
||||
else
|
||||
{
|
||||
DoBackup(oldValues[0], "UPDATE");
|
||||
}
|
||||
|
||||
DbCommand cmdUpdate = NewCommand();
|
||||
cmdUpdate.CommandText =
|
||||
@"update [付款設定]
|
||||
set
|
||||
[講師_非講師編號] = @講師_非講師編號 ,
|
||||
[生效日期] = @生效日期 ,
|
||||
[憑證類別] = @憑證類別 ,
|
||||
[扣繳類別] = @扣繳類別 ,
|
||||
[匯款戶名] = @匯款戶名 ,
|
||||
[匯款帳號] = @匯款帳號 ,
|
||||
[銀行分行] = @銀行分行 ,
|
||||
[銀行分行代碼] = @銀行分行代碼 ,
|
||||
[備註] = @備註 ,
|
||||
DB_APPNO = DB_APPNO + 1,
|
||||
DB_TRDAT = @DB_TRDAT,
|
||||
DB_TRUSR = @DB_TRUSR
|
||||
where 1=1
|
||||
and [編號] = @original_編號
|
||||
and DB_APPNO = @original_DB_APPNO
|
||||
";
|
||||
AddParam(cmdUpdate, "講師_非講師編號", value.講師_非講師編號);
|
||||
AddParam(cmdUpdate, "生效日期", value.生效日期);
|
||||
AddParam(cmdUpdate, "憑證類別", value.憑證類別);
|
||||
AddParam(cmdUpdate, "扣繳類別", value.扣繳類別);
|
||||
AddParam(cmdUpdate, "匯款戶名", value.匯款戶名);
|
||||
AddParam(cmdUpdate, "匯款帳號", value.匯款帳號);
|
||||
AddParam(cmdUpdate, "銀行分行", value.銀行分行);
|
||||
AddParam(cmdUpdate, "銀行分行代碼", value.銀行分行代碼);
|
||||
AddParam(cmdUpdate, "備註", value.備註);
|
||||
AddParam(cmdUpdate, "DB_TRDAT", DateTime.Now);
|
||||
AddParam(cmdUpdate, "DB_TRUSR", CurrentUserId);
|
||||
AddParam(cmdUpdate, "original_編號", original_value.編號);
|
||||
AddParam(cmdUpdate, "original_DB_APPNO", original_value.DB_APPNO);
|
||||
ExecuteNonQuery(cmdUpdate);
|
||||
AfterUpdateOne(value, original_value);
|
||||
ts.Complete();
|
||||
return value;
|
||||
}
|
||||
catch (Exception error)
|
||||
{
|
||||
bool handled;
|
||||
OnUpdateOneError(error, out handled);
|
||||
if(!handled)
|
||||
throw error;
|
||||
return value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Delete)]
|
||||
public int DeleteOne(int 編號, int DB_APPNO)
|
||||
{
|
||||
using (TransactionScope ts = DAC.NewTransactionScope())
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!BeforeDeleteOne(編號, DB_APPNO))
|
||||
return -1;
|
||||
|
||||
付款設定List oldValues = SelectOne(編號);
|
||||
if (oldValues.Count == 0 || oldValues[0].DB_APPNO != DB_APPNO)
|
||||
{
|
||||
throw new DBConcurrencyException("在刪除 \"付款設定\" 資料表時發生並行例外:找不到要刪除的資料列");
|
||||
}
|
||||
else
|
||||
{
|
||||
DoBackup(oldValues[0], "DELETE");
|
||||
}
|
||||
|
||||
DbCommand cmdDelete = NewCommand();
|
||||
cmdDelete.CommandText =
|
||||
@"delete from [付款設定]
|
||||
where 1=1
|
||||
and 編號 = @編號
|
||||
and DB_APPNO = @DB_APPNO
|
||||
";
|
||||
AddParam(cmdDelete, "編號", 編號);
|
||||
AddParam(cmdDelete, "DB_APPNO", DB_APPNO);
|
||||
int rowsAffected = ExecuteNonQuery(cmdDelete);
|
||||
AfterDeleteOne(編號, DB_APPNO);
|
||||
ts.Complete();
|
||||
return rowsAffected;
|
||||
}
|
||||
catch (Exception error)
|
||||
{
|
||||
bool handled;
|
||||
OnDeleteOneError(error, out handled);
|
||||
if(!handled)
|
||||
throw error;
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Delete)]
|
||||
public int DeleteOne(付款設定Item value)
|
||||
{
|
||||
using (TransactionScope ts = DAC.NewTransactionScope())
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!BeforeDeleteOne(value))
|
||||
return -1;
|
||||
|
||||
付款設定List oldValues = SelectOne(value.編號);
|
||||
if (oldValues.Count == 0 || oldValues[0].DB_APPNO != value.DB_APPNO)
|
||||
{
|
||||
throw new DBConcurrencyException("在刪除 \"付款設定\" 資料表時發生並行例外:找不到要刪除的資料列");
|
||||
}
|
||||
else
|
||||
{
|
||||
DoBackup(oldValues[0], "DELETE");
|
||||
}
|
||||
|
||||
DbCommand cmdDelete = NewCommand();
|
||||
cmdDelete.CommandText =
|
||||
@"delete from [付款設定]
|
||||
where 1=1
|
||||
and 編號 = @編號
|
||||
and DB_APPNO = @DB_APPNO
|
||||
";
|
||||
AddParam(cmdDelete, "編號", value.編號);
|
||||
AddParam(cmdDelete, "DB_APPNO", value.DB_APPNO);
|
||||
int rowsAffected = ExecuteNonQuery(cmdDelete);
|
||||
AfterDeleteOne(value);
|
||||
ts.Complete();
|
||||
return rowsAffected;
|
||||
}
|
||||
catch (Exception error)
|
||||
{
|
||||
bool handled;
|
||||
OnDeleteOneError(error, out handled);
|
||||
if(!handled)
|
||||
throw error;
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsDuplicate(int 編號)
|
||||
{
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = "select count(1)" + _from + _where
|
||||
+ " and 編號 = @編號 "
|
||||
;
|
||||
AddParam(cmdSelect, "編號", 編號);
|
||||
int count;
|
||||
ExecuteScalar(cmdSelect, out count);
|
||||
return count > 0;
|
||||
}
|
||||
|
||||
public void DoBackup(付款設定Item value, string updateMode)
|
||||
{
|
||||
DbCommand cmdBak = NewCommand();
|
||||
cmdBak.CommandText =
|
||||
"insert into [付款設定_BAK]"
|
||||
+ " (" + _insertBak + ")"
|
||||
+ "values "
|
||||
+ " (" + _insertBakValue + ");"
|
||||
;
|
||||
AddParam(cmdBak, "編號", value.編號);
|
||||
AddParam(cmdBak, "講師_非講師編號", value.講師_非講師編號);
|
||||
AddParam(cmdBak, "生效日期", value.生效日期);
|
||||
AddParam(cmdBak, "憑證類別", value.憑證類別);
|
||||
AddParam(cmdBak, "扣繳類別", value.扣繳類別);
|
||||
AddParam(cmdBak, "匯款戶名", value.匯款戶名);
|
||||
AddParam(cmdBak, "匯款帳號", value.匯款帳號);
|
||||
AddParam(cmdBak, "銀行分行", value.銀行分行);
|
||||
AddParam(cmdBak, "銀行分行代碼", value.銀行分行代碼);
|
||||
AddParam(cmdBak, "備註", value.備註);
|
||||
AddParam(cmdBak, "DB_APPNO", value.DB_APPNO);
|
||||
AddParam(cmdBak, "DB_CRDAT", value.DB_CRDAT);
|
||||
AddParam(cmdBak, "DB_CRUSR", value.DB_CRUSR);
|
||||
AddParam(cmdBak, "DB_TRDAT", DateTime.Now);
|
||||
AddParam(cmdBak, "DB_TRUSR", CurrentUserId);
|
||||
AddParam(cmdBak, "DB_TRMOD", updateMode);
|
||||
ExecuteNonQuery(cmdBak);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
///<summary>
|
||||
///付款設定 資料集合類別
|
||||
///</summary>
|
||||
[Serializable]
|
||||
public partial class 付款設定List : List<付款設定Item>, IDataList
|
||||
{
|
||||
public void Fill(DbDataReader reader)
|
||||
{
|
||||
DAC.FillData<付款設定Item>(reader, this);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
///<summary>
|
||||
/// 付款設定 資料紀錄類別
|
||||
///</summary>
|
||||
[Serializable]
|
||||
public partial class 付款設定Item : DataItemBase
|
||||
{
|
||||
private int _編號;
|
||||
private string _講師_非講師編號;
|
||||
private DateTime _生效日期;
|
||||
private string _憑證類別;
|
||||
private string _扣繳類別;
|
||||
private string _匯款戶名;
|
||||
private string _匯款帳號;
|
||||
private string _銀行分行;
|
||||
private string _銀行分行代碼;
|
||||
private string _備註;
|
||||
|
||||
#region 資料欄位
|
||||
///<summary>
|
||||
/// 編號
|
||||
///</summary>
|
||||
[DataObjectField(true, false, false)]
|
||||
public int 編號
|
||||
{
|
||||
get
|
||||
{
|
||||
return _編號;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _編號)
|
||||
{
|
||||
_編號 = value;
|
||||
OnPropertyChanged("編號");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 講師/非講師編號
|
||||
///</summary>
|
||||
[DataObjectField(false, false, false, 10)]
|
||||
public string 講師_非講師編號
|
||||
{
|
||||
get
|
||||
{
|
||||
return _講師_非講師編號;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _講師_非講師編號)
|
||||
{
|
||||
_講師_非講師編號 = value;
|
||||
OnPropertyChanged("講師_非講師編號");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 生效日期
|
||||
///</summary>
|
||||
[DataObjectField(false, false, false)]
|
||||
public DateTime 生效日期
|
||||
{
|
||||
get
|
||||
{
|
||||
return _生效日期;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _生效日期)
|
||||
{
|
||||
_生效日期 = value;
|
||||
OnPropertyChanged("生效日期");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 憑證類別
|
||||
///</summary>
|
||||
[DataObjectField(false, false, false, 2)]
|
||||
public string 憑證類別
|
||||
{
|
||||
get
|
||||
{
|
||||
return _憑證類別;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _憑證類別)
|
||||
{
|
||||
_憑證類別 = value;
|
||||
OnPropertyChanged("憑證類別");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 扣繳類別
|
||||
///</summary>
|
||||
[DataObjectField(false, false, false, 10)]
|
||||
public string 扣繳類別
|
||||
{
|
||||
get
|
||||
{
|
||||
return _扣繳類別;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _扣繳類別)
|
||||
{
|
||||
_扣繳類別 = value;
|
||||
OnPropertyChanged("扣繳類別");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 匯款戶名
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 50)]
|
||||
public string 匯款戶名
|
||||
{
|
||||
get
|
||||
{
|
||||
return _匯款戶名;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _匯款戶名)
|
||||
{
|
||||
_匯款戶名 = value;
|
||||
OnPropertyChanged("匯款戶名");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 匯款帳號
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 50)]
|
||||
public string 匯款帳號
|
||||
{
|
||||
get
|
||||
{
|
||||
return _匯款帳號;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _匯款帳號)
|
||||
{
|
||||
_匯款帳號 = value;
|
||||
OnPropertyChanged("匯款帳號");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 銀行分行
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 50)]
|
||||
public string 銀行分行
|
||||
{
|
||||
get
|
||||
{
|
||||
return _銀行分行;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _銀行分行)
|
||||
{
|
||||
_銀行分行 = value;
|
||||
OnPropertyChanged("銀行分行");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 銀行分行代碼
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 50)]
|
||||
public string 銀行分行代碼
|
||||
{
|
||||
get
|
||||
{
|
||||
return _銀行分行代碼;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _銀行分行代碼)
|
||||
{
|
||||
_銀行分行代碼 = value;
|
||||
OnPropertyChanged("銀行分行代碼");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 備註
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 500)]
|
||||
public string 備註
|
||||
{
|
||||
get
|
||||
{
|
||||
return _備註;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _備註)
|
||||
{
|
||||
_備註 = value;
|
||||
OnPropertyChanged("備註");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,256 @@
|
||||
//
|
||||
// 這個檔案是 付款設定 資料表的資料存取類別 檔案二
|
||||
// 您可以修改這個檔案,加入您自訂的屬性與方法
|
||||
//
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Data.Common;
|
||||
using System.Linq;
|
||||
using WebLib;
|
||||
using System.Data.SqlClient;
|
||||
|
||||
namespace Education
|
||||
{
|
||||
///<summary>
|
||||
/// 付款設定 資料存取類別
|
||||
///</summary>
|
||||
public partial class DAC_付款設定 : WebLib.DAC
|
||||
{
|
||||
#region 自動產生的資料存取方法
|
||||
///<summary>
|
||||
/// InsertOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查或是自動編號等動作
|
||||
/// 回傳 false 會打斷 InsertOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeInsertOne(付款設定Item value)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// InsertOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterInsertOne(付款設定Item value)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// InsertOne 發生錯誤時會執行此方法
|
||||
///</summary>
|
||||
///<param name="handled">錯誤是否已經處理妥當</param>
|
||||
protected virtual void OnInsertOneError(Exception error, out bool handled)
|
||||
{
|
||||
handled = false;
|
||||
}
|
||||
///<summary>
|
||||
/// UpdateOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查
|
||||
/// 回傳 false 會打斷 UpdateOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeUpdateOne(付款設定Item value)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// UpdateOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查
|
||||
/// 回傳 false 會打斷 UpdateOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeUpdateOne(付款設定Item value, 付款設定Item original_value)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// UpdateOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterUpdateOne(付款設定Item value)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// UpdateOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterUpdateOne(付款設定Item value, 付款設定Item original_value)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// UpdateOne 發生錯誤時會執行此方法
|
||||
///</summary>
|
||||
///<param name="handled">錯誤是否已經處理妥當</param>
|
||||
protected virtual void OnUpdateOneError(Exception error, out bool handled)
|
||||
{
|
||||
handled = false;
|
||||
}
|
||||
///<summary>
|
||||
/// DeleteOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查
|
||||
/// 回傳 false 會打斷 DeleteOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeDeleteOne(付款設定Item value)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterDeleteOne(付款設定Item value)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查
|
||||
/// 回傳 false 會打斷 DeleteOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeDeleteOne(int 編號, int DB_APPNO)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterDeleteOne(int 編號, int DB_APPNO)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 發生錯誤時會執行此方法
|
||||
///</summary>
|
||||
///<param name="handled">錯誤是否已經處理妥當</param>
|
||||
protected virtual void OnDeleteOneError(Exception error, out bool handled)
|
||||
{
|
||||
handled = false;
|
||||
}
|
||||
#endregion
|
||||
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public 付款設定List SelectPageBy講師_非講師編號(int startRowIndex, int maximumRows, string 講師_非講師編號)
|
||||
{
|
||||
付款設定List result = new 付款設定List();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
|
||||
cmdSelect.CommandText =
|
||||
String.Format("select top {0} * from (", maximumRows)
|
||||
+ "select " + _allFields
|
||||
+ ", row_number() over (order by 生效日期 desc) as rowid "
|
||||
+ _from + _where;
|
||||
|
||||
if (!String.IsNullOrEmpty(講師_非講師編號))
|
||||
{
|
||||
cmdSelect.CommandText += " and 講師_非講師編號 = @講師_非講師編號 ";
|
||||
AddParam(cmdSelect, "講師_非講師編號", 講師_非講師編號);
|
||||
}
|
||||
|
||||
cmdSelect.CommandText += ") as TMP1 where rowid > @startRowIndex ";
|
||||
AddParam(cmdSelect, "startRowIndex", startRowIndex);
|
||||
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public int SelectCountBy講師_非講師編號(string 講師_非講師編號)
|
||||
{
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = "select count(1) " + _from + _where;
|
||||
|
||||
if (!String.IsNullOrEmpty(講師_非講師編號))
|
||||
{
|
||||
cmdSelect.CommandText += " and 講師_非講師編號 = @講師_非講師編號 ";
|
||||
AddParam(cmdSelect, "講師_非講師編號", 講師_非講師編號);
|
||||
}
|
||||
|
||||
int i;
|
||||
ExecuteScalar(cmdSelect, out i);
|
||||
return i;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 依照 eventDate 選取生效的付款設定
|
||||
/// </summary>
|
||||
/// <param name="講師_非講師編號"></param>
|
||||
/// <param name="eventDate"></param>
|
||||
/// <returns></returns>
|
||||
public 付款設定Item SelectRecentlyActivated(string 講師_非講師編號, DateTime? eventDate)
|
||||
{
|
||||
if (String.IsNullOrEmpty(講師_非講師編號) || !eventDate.HasValue)
|
||||
{
|
||||
return null;
|
||||
}
|
||||
var 編號 = 講師_非講師編號.StartsWith("P") || 講師_非講師編號.StartsWith("T")
|
||||
? 講師_非講師編號
|
||||
: string.Format("T{0:0000}", DAC.GetInt32(講師_非講師編號));
|
||||
|
||||
付款設定List result = new 付款設定List();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = $"select top 1 * {_from} {_where} and 講師_非講師編號 = @講師_非講師編號 and 生效日期 <= @生效日期 order by 生效日期 desc";
|
||||
AddParam(cmdSelect, "講師_非講師編號", 編號);
|
||||
AddParam(cmdSelect, "生效日期", eventDate.Value);
|
||||
Select(cmdSelect, ref list);
|
||||
return result.FirstOrDefault();
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
///付款設定 資料集合類別
|
||||
///</summary>
|
||||
public partial class 付款設定List : List<付款設定Item>
|
||||
{
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
}
|
||||
|
||||
///<summary>
|
||||
///付款設定 資料紀錄類別
|
||||
///</summary>
|
||||
public partial class 付款設定Item
|
||||
{
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
private DbConnection _conn = null;
|
||||
private DAC_BPSN _dao_bpsn = null;
|
||||
private DAC_BPSN dao_bpsn
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_dao_bpsn == null)
|
||||
{
|
||||
if (_conn == null)
|
||||
{
|
||||
_conn = DAC.NewConnection();
|
||||
_conn.Open();
|
||||
}
|
||||
_dao_bpsn = new DAC_BPSN(_conn);
|
||||
}
|
||||
return _dao_bpsn;
|
||||
}
|
||||
}
|
||||
|
||||
[DataObjectField(false)]
|
||||
public string DB_CRUSR_NAME
|
||||
{
|
||||
get
|
||||
{
|
||||
return dao_bpsn.Get員工姓名(DB_CRUSR);
|
||||
}
|
||||
}
|
||||
|
||||
[DataObjectField(false)]
|
||||
public string DB_TRUSR_NAME
|
||||
{
|
||||
get
|
||||
{
|
||||
return dao_bpsn.Get員工姓名(DB_TRUSR);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,756 @@
|
||||
//
|
||||
// 這個檔案是 勞務費 資料表的資料存取類別 檔案一
|
||||
// 請不要修改這個檔案,重新產生資料存取類別時,這個檔案會被覆蓋掉
|
||||
//
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Data.Common;
|
||||
using System.Linq;
|
||||
using System.Transactions;
|
||||
using WebLib;
|
||||
using System.Data.SqlClient;
|
||||
|
||||
namespace Education
|
||||
{
|
||||
///<summary>
|
||||
/// 勞務費 資料存取類別
|
||||
///</ summary>
|
||||
[DataObject]
|
||||
public partial class DAC_勞務費 : WebLib.DAC
|
||||
{
|
||||
private const string _tableName = "[勞務費]";
|
||||
private const string _allFields = "[編號], [領據編號], [費用別], [單價], [數量], [單位], [扣繳類別], [合計金額], [應扣繳稅額], [服務費], [作廢], [DB_APPNO], [DB_CRDAT], [DB_CRUSR], [DB_TRDAT], [DB_TRUSR]";
|
||||
private string _orderBy = "[領據編號]";
|
||||
private string _select = "select " + _allFields;
|
||||
private string _insert = "[編號], [領據編號], [費用別], [單價], [數量], [單位], [扣繳類別], [合計金額], [應扣繳稅額], [服務費], [作廢], [DB_APPNO], [DB_CRDAT], [DB_CRUSR], [DB_TRDAT], [DB_TRUSR]";
|
||||
private string _insertBak = "[編號], [領據編號], [費用別], [單價], [數量], [單位], [扣繳類別], [合計金額], [應扣繳稅額], [服務費], [作廢], [DB_APPNO], [DB_CRDAT], [DB_CRUSR], [DB_TRDAT], [DB_TRUSR], [DB_TRMOD]";
|
||||
private string _insertValue = "@編號, @領據編號, @費用別, @單價, @數量, @單位, @扣繳類別, @合計金額, @應扣繳稅額, @服務費, @作廢, @DB_APPNO, @DB_CRDAT, @DB_CRUSR, @DB_TRDAT, @DB_TRUSR";
|
||||
private string _insertBakValue = "@編號, @領據編號, @費用別, @單價, @數量, @單位, @扣繳類別, @合計金額, @應扣繳稅額, @服務費, @作廢, @DB_APPNO, @DB_CRDAT, @DB_CRUSR, @DB_TRDAT, @DB_TRUSR, @DB_TRMOD";
|
||||
private string _from = " from " + _tableName + " ";
|
||||
private string _where = " where 1=1 ";
|
||||
private string _order = " order by [領據編號] ";
|
||||
|
||||
public DAC_勞務費()
|
||||
: base()
|
||||
{
|
||||
}
|
||||
|
||||
public DAC_勞務費(DbConnection conn)
|
||||
: base(conn)
|
||||
{
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public 勞務費List SelectAll(string orderBy = "")
|
||||
{
|
||||
勞務費List result = new 勞務費List();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = _select + _from + _where + (orderBy == null || orderBy.Length == 0 ? _order : " order by " + orderBy);
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
public int SelectAllCount()
|
||||
{
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = "select count(1) " + _from;
|
||||
int i;
|
||||
ExecuteScalar(cmdSelect, out i);
|
||||
return i;
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public 勞務費List SelectAllPage(int startRowIndex, int maximumRows, string orderBy = "")
|
||||
{
|
||||
勞務費List result = new 勞務費List();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText =
|
||||
String.Format("select top {0} * from (", maximumRows)
|
||||
+ "select " + _allFields
|
||||
+ ", row_number() over (order by " + (orderBy == null || orderBy.Length == 0 ? _orderBy : orderBy) + ") as rowid "
|
||||
+ _from + _where
|
||||
+ ") as TMP1 where rowid > @startRowIndex ";
|
||||
AddParam(cmdSelect, "startRowIndex", startRowIndex);
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public 勞務費List SelectOne(int 領據編號)
|
||||
{
|
||||
勞務費List result = new 勞務費List();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = _select + _from + _where
|
||||
+ " and 領據編號 = @領據編號 "
|
||||
;
|
||||
AddParam(cmdSelect, "領據編號", 領據編號);
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 給查詢畫面用的增加 Where 條件的方法
|
||||
///</summary>
|
||||
private void AddWhere(DbCommand cmdSelect, ref bool noInput, int? 領據編號)
|
||||
{
|
||||
if (領據編號 != null)
|
||||
{
|
||||
noInput = false;
|
||||
cmdSelect.CommandText += " and 領據編號 = @領據編號 ";
|
||||
AddParam(cmdSelect, "領據編號", 領據編號);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 給查詢畫面用的 Select 方法
|
||||
///</summary>
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public 勞務費List Select(bool noInputReturnAll, int? 領據編號, string orderBy = "")
|
||||
{
|
||||
勞務費List result = new 勞務費List();
|
||||
bool noInput = true;
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = _select + _from + _where;
|
||||
AddWhere(cmdSelect, ref noInput, 領據編號);
|
||||
cmdSelect.CommandText += (orderBy == null || orderBy.Length == 0 ? _order : " order by " + orderBy);
|
||||
|
||||
if (!noInputReturnAll && noInput)
|
||||
return result;
|
||||
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 給查詢畫面用的 SelectCount 方法
|
||||
///</summary>
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public int SelectCount(bool noInputReturnAll, int? 領據編號, string orderBy = "")
|
||||
{
|
||||
bool noInput = true;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = "select count(1) " + _from + _where;
|
||||
AddWhere(cmdSelect, ref noInput, 領據編號);
|
||||
|
||||
if (!noInputReturnAll && noInput)
|
||||
return 0;
|
||||
|
||||
int i;
|
||||
ExecuteScalar(cmdSelect, out i);
|
||||
return i;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 給查詢畫面用的 SelectPage 方法
|
||||
///</summary>
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public 勞務費List SelectPage(bool noInputReturnAll, int startRowIndex, int maximumRows, int? 領據編號, string orderBy = "")
|
||||
{
|
||||
勞務費List result = new 勞務費List();
|
||||
bool noInput = true;
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
|
||||
cmdSelect.CommandText =
|
||||
String.Format("select top {0} * from (", maximumRows)
|
||||
+ "select " + _allFields
|
||||
+ ", row_number() over (order by " + (orderBy == null || orderBy.Length == 0 ? _orderBy : orderBy) + ") as rowid "
|
||||
+ _from + _where;
|
||||
AddWhere(cmdSelect, ref noInput, 領據編號);
|
||||
cmdSelect.CommandText += ") as TMP1 where rowid > @startRowIndex ";
|
||||
AddParam(cmdSelect, "startRowIndex", startRowIndex);
|
||||
|
||||
if (!noInputReturnAll && noInput)
|
||||
return result;
|
||||
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Insert)]
|
||||
public 勞務費Item InsertOne(勞務費Item value)
|
||||
{
|
||||
using (TransactionScope ts = DAC.NewTransactionScope())
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!BeforeInsertOne(value))
|
||||
return value;
|
||||
DbCommand cmdInsert = NewCommand();
|
||||
cmdInsert.CommandText =
|
||||
"insert into [勞務費]"
|
||||
+ " (" + _insert + ")"
|
||||
+ "values "
|
||||
+ " (" + _insertValue + ");" ;
|
||||
AddParam(cmdInsert, "編號", value.編號);
|
||||
AddParam(cmdInsert, "領據編號", value.領據編號);
|
||||
AddParam(cmdInsert, "費用別", value.費用別);
|
||||
AddParam(cmdInsert, "單價", value.單價);
|
||||
AddParam(cmdInsert, "數量", value.數量);
|
||||
AddParam(cmdInsert, "單位", value.單位);
|
||||
AddParam(cmdInsert, "扣繳類別", value.扣繳類別);
|
||||
AddParam(cmdInsert, "合計金額", value.合計金額);
|
||||
AddParam(cmdInsert, "應扣繳稅額", value.應扣繳稅額);
|
||||
AddParam(cmdInsert, "服務費", value.服務費);
|
||||
AddParam(cmdInsert, "作廢", value.作廢);
|
||||
AddParam(cmdInsert, "DB_APPNO", 1);
|
||||
AddParam(cmdInsert, "DB_CRDAT", DateTime.Now);
|
||||
AddParam(cmdInsert, "DB_CRUSR", CurrentUserId);
|
||||
AddParam(cmdInsert, "DB_TRDAT", DBNull.Value);
|
||||
AddParam(cmdInsert, "DB_TRUSR", DBNull.Value);
|
||||
ExecuteNonQuery(cmdInsert);
|
||||
AfterInsertOne(value);
|
||||
ts.Complete();
|
||||
}
|
||||
catch (Exception error)
|
||||
{
|
||||
bool handled;
|
||||
OnInsertOneError(error, out handled);
|
||||
if(!handled)
|
||||
throw error;
|
||||
}
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Update)]
|
||||
public 勞務費Item UpdateOne(勞務費Item value)
|
||||
{
|
||||
using (TransactionScope ts = DAC.NewTransactionScope())
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!BeforeUpdateOne(value))
|
||||
return value;
|
||||
|
||||
勞務費List oldValues = SelectOne(value.領據編號);
|
||||
if (oldValues.Count == 0 || oldValues[0].DB_APPNO != value.DB_APPNO)
|
||||
{
|
||||
throw new DBConcurrencyException("在更新 \"勞務費\" 資料表時發生並行例外:找不到要更新的資料列");
|
||||
}
|
||||
else
|
||||
{
|
||||
DoBackup(oldValues[0], "UPDATE");
|
||||
}
|
||||
|
||||
DbCommand cmdUpdate = NewCommand();
|
||||
cmdUpdate.CommandText =
|
||||
@"update [勞務費]
|
||||
set
|
||||
[編號] = @編號 ,
|
||||
[費用別] = @費用別 ,
|
||||
[單價] = @單價 ,
|
||||
[數量] = @數量 ,
|
||||
[單位] = @單位 ,
|
||||
[扣繳類別] = @扣繳類別 ,
|
||||
[合計金額] = @合計金額 ,
|
||||
[應扣繳稅額] = @應扣繳稅額 ,
|
||||
[服務費] = @服務費 ,
|
||||
[作廢] = @作廢 ,
|
||||
DB_APPNO = DB_APPNO + 1,
|
||||
DB_TRDAT = @DB_TRDAT,
|
||||
DB_TRUSR = @DB_TRUSR
|
||||
where 1=1
|
||||
and [領據編號] = @original_領據編號
|
||||
and DB_APPNO = @original_DB_APPNO
|
||||
";
|
||||
AddParam(cmdUpdate, "編號", value.編號);
|
||||
AddParam(cmdUpdate, "費用別", value.費用別);
|
||||
AddParam(cmdUpdate, "單價", value.單價);
|
||||
AddParam(cmdUpdate, "數量", value.數量);
|
||||
AddParam(cmdUpdate, "單位", value.單位);
|
||||
AddParam(cmdUpdate, "扣繳類別", value.扣繳類別);
|
||||
AddParam(cmdUpdate, "合計金額", value.合計金額);
|
||||
AddParam(cmdUpdate, "應扣繳稅額", value.應扣繳稅額);
|
||||
AddParam(cmdUpdate, "服務費", value.服務費);
|
||||
AddParam(cmdUpdate, "作廢", value.作廢);
|
||||
AddParam(cmdUpdate, "DB_TRDAT", DateTime.Now);
|
||||
AddParam(cmdUpdate, "DB_TRUSR", CurrentUserId);
|
||||
AddParam(cmdUpdate, "original_領據編號", value.領據編號);
|
||||
AddParam(cmdUpdate, "original_DB_APPNO", value.DB_APPNO);
|
||||
ExecuteNonQuery(cmdUpdate);
|
||||
AfterUpdateOne(value);
|
||||
ts.Complete();
|
||||
return value;
|
||||
}
|
||||
catch (Exception error)
|
||||
{
|
||||
bool handled;
|
||||
OnUpdateOneError(error, out handled);
|
||||
if(!handled)
|
||||
throw error;
|
||||
return value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Update)]
|
||||
public 勞務費Item UpdateOne(勞務費Item value, 勞務費Item original_value)
|
||||
{
|
||||
using (TransactionScope ts = DAC.NewTransactionScope())
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!BeforeUpdateOne(value, original_value))
|
||||
return value;
|
||||
|
||||
勞務費List oldValues = SelectOne(original_value.領據編號);
|
||||
if (oldValues.Count == 0 || oldValues[0].DB_APPNO != value.DB_APPNO)
|
||||
{
|
||||
throw new DBConcurrencyException("在更新 \"勞務費\" 資料表時發生並行例外:找不到要更新的資料列");
|
||||
}
|
||||
else
|
||||
{
|
||||
DoBackup(oldValues[0], "UPDATE");
|
||||
}
|
||||
|
||||
DbCommand cmdUpdate = NewCommand();
|
||||
cmdUpdate.CommandText =
|
||||
@"update [勞務費]
|
||||
set
|
||||
[編號] = @編號 ,
|
||||
[領據編號] = @領據編號 ,
|
||||
[費用別] = @費用別 ,
|
||||
[單價] = @單價 ,
|
||||
[數量] = @數量 ,
|
||||
[單位] = @單位 ,
|
||||
[扣繳類別] = @扣繳類別 ,
|
||||
[合計金額] = @合計金額 ,
|
||||
[應扣繳稅額] = @應扣繳稅額 ,
|
||||
[服務費] = @服務費 ,
|
||||
[作廢] = @作廢 ,
|
||||
DB_APPNO = DB_APPNO + 1,
|
||||
DB_TRDAT = @DB_TRDAT,
|
||||
DB_TRUSR = @DB_TRUSR
|
||||
where 1=1
|
||||
and [領據編號] = @original_領據編號
|
||||
and DB_APPNO = @original_DB_APPNO
|
||||
";
|
||||
AddParam(cmdUpdate, "編號", value.編號);
|
||||
AddParam(cmdUpdate, "領據編號", value.領據編號);
|
||||
AddParam(cmdUpdate, "費用別", value.費用別);
|
||||
AddParam(cmdUpdate, "單價", value.單價);
|
||||
AddParam(cmdUpdate, "數量", value.數量);
|
||||
AddParam(cmdUpdate, "單位", value.單位);
|
||||
AddParam(cmdUpdate, "扣繳類別", value.扣繳類別);
|
||||
AddParam(cmdUpdate, "合計金額", value.合計金額);
|
||||
AddParam(cmdUpdate, "應扣繳稅額", value.應扣繳稅額);
|
||||
AddParam(cmdUpdate, "服務費", value.服務費);
|
||||
AddParam(cmdUpdate, "作廢", value.作廢);
|
||||
AddParam(cmdUpdate, "DB_TRDAT", DateTime.Now);
|
||||
AddParam(cmdUpdate, "DB_TRUSR", CurrentUserId);
|
||||
AddParam(cmdUpdate, "original_領據編號", original_value.領據編號);
|
||||
AddParam(cmdUpdate, "original_DB_APPNO", original_value.DB_APPNO);
|
||||
ExecuteNonQuery(cmdUpdate);
|
||||
AfterUpdateOne(value, original_value);
|
||||
ts.Complete();
|
||||
return value;
|
||||
}
|
||||
catch (Exception error)
|
||||
{
|
||||
bool handled;
|
||||
OnUpdateOneError(error, out handled);
|
||||
if(!handled)
|
||||
throw error;
|
||||
return value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Delete)]
|
||||
public int DeleteOne(int 領據編號, int DB_APPNO)
|
||||
{
|
||||
using (TransactionScope ts = DAC.NewTransactionScope())
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!BeforeDeleteOne(領據編號, DB_APPNO))
|
||||
return -1;
|
||||
|
||||
勞務費List oldValues = SelectOne(領據編號);
|
||||
if (oldValues.Count == 0 || oldValues[0].DB_APPNO != DB_APPNO)
|
||||
{
|
||||
throw new DBConcurrencyException("在刪除 \"勞務費\" 資料表時發生並行例外:找不到要刪除的資料列");
|
||||
}
|
||||
else
|
||||
{
|
||||
DoBackup(oldValues[0], "DELETE");
|
||||
}
|
||||
|
||||
DbCommand cmdDelete = NewCommand();
|
||||
cmdDelete.CommandText =
|
||||
@"delete from [勞務費]
|
||||
where 1=1
|
||||
and 領據編號 = @領據編號
|
||||
and DB_APPNO = @DB_APPNO
|
||||
";
|
||||
AddParam(cmdDelete, "領據編號", 領據編號);
|
||||
AddParam(cmdDelete, "DB_APPNO", DB_APPNO);
|
||||
int rowsAffected = ExecuteNonQuery(cmdDelete);
|
||||
AfterDeleteOne(領據編號, DB_APPNO);
|
||||
ts.Complete();
|
||||
return rowsAffected;
|
||||
}
|
||||
catch (Exception error)
|
||||
{
|
||||
bool handled;
|
||||
OnDeleteOneError(error, out handled);
|
||||
if(!handled)
|
||||
throw error;
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Delete)]
|
||||
public int DeleteOne(勞務費Item value)
|
||||
{
|
||||
using (TransactionScope ts = DAC.NewTransactionScope())
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!BeforeDeleteOne(value))
|
||||
return -1;
|
||||
|
||||
勞務費List oldValues = SelectOne(value.領據編號);
|
||||
if (oldValues.Count == 0 || oldValues[0].DB_APPNO != value.DB_APPNO)
|
||||
{
|
||||
throw new DBConcurrencyException("在刪除 \"勞務費\" 資料表時發生並行例外:找不到要刪除的資料列");
|
||||
}
|
||||
else
|
||||
{
|
||||
DoBackup(oldValues[0], "DELETE");
|
||||
}
|
||||
|
||||
DbCommand cmdDelete = NewCommand();
|
||||
cmdDelete.CommandText =
|
||||
@"delete from [勞務費]
|
||||
where 1=1
|
||||
and 領據編號 = @領據編號
|
||||
and DB_APPNO = @DB_APPNO
|
||||
";
|
||||
AddParam(cmdDelete, "領據編號", value.領據編號);
|
||||
AddParam(cmdDelete, "DB_APPNO", value.DB_APPNO);
|
||||
int rowsAffected = ExecuteNonQuery(cmdDelete);
|
||||
AfterDeleteOne(value);
|
||||
ts.Complete();
|
||||
return rowsAffected;
|
||||
}
|
||||
catch (Exception error)
|
||||
{
|
||||
bool handled;
|
||||
OnDeleteOneError(error, out handled);
|
||||
if(!handled)
|
||||
throw error;
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsDuplicate(int 領據編號)
|
||||
{
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = "select count(1)" + _from + _where
|
||||
+ " and 領據編號 = @領據編號 "
|
||||
;
|
||||
AddParam(cmdSelect, "領據編號", 領據編號);
|
||||
int count;
|
||||
ExecuteScalar(cmdSelect, out count);
|
||||
return count > 0;
|
||||
}
|
||||
|
||||
public void DoBackup(勞務費Item value, string updateMode)
|
||||
{
|
||||
DbCommand cmdBak = NewCommand();
|
||||
cmdBak.CommandText =
|
||||
"insert into [勞務費_BAK]"
|
||||
+ " (" + _insertBak + ")"
|
||||
+ "values "
|
||||
+ " (" + _insertBakValue + ");"
|
||||
;
|
||||
AddParam(cmdBak, "編號", value.編號);
|
||||
AddParam(cmdBak, "領據編號", value.領據編號);
|
||||
AddParam(cmdBak, "費用別", value.費用別);
|
||||
AddParam(cmdBak, "單價", value.單價);
|
||||
AddParam(cmdBak, "數量", value.數量);
|
||||
AddParam(cmdBak, "單位", value.單位);
|
||||
AddParam(cmdBak, "扣繳類別", value.扣繳類別);
|
||||
AddParam(cmdBak, "合計金額", value.合計金額);
|
||||
AddParam(cmdBak, "應扣繳稅額", value.應扣繳稅額);
|
||||
AddParam(cmdBak, "服務費", value.服務費);
|
||||
AddParam(cmdBak, "作廢", value.作廢);
|
||||
AddParam(cmdBak, "DB_APPNO", value.DB_APPNO);
|
||||
AddParam(cmdBak, "DB_CRDAT", value.DB_CRDAT);
|
||||
AddParam(cmdBak, "DB_CRUSR", value.DB_CRUSR);
|
||||
AddParam(cmdBak, "DB_TRDAT", DateTime.Now);
|
||||
AddParam(cmdBak, "DB_TRUSR", CurrentUserId);
|
||||
AddParam(cmdBak, "DB_TRMOD", updateMode);
|
||||
ExecuteNonQuery(cmdBak);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
///<summary>
|
||||
///勞務費 資料集合類別
|
||||
///</summary>
|
||||
[Serializable]
|
||||
public partial class 勞務費List : List<勞務費Item>, IDataList
|
||||
{
|
||||
public void Fill(DbDataReader reader)
|
||||
{
|
||||
DAC.FillData<勞務費Item>(reader, this);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
///<summary>
|
||||
/// 勞務費 資料紀錄類別
|
||||
///</summary>
|
||||
[Serializable]
|
||||
public partial class 勞務費Item : DataItemBase
|
||||
{
|
||||
private string _編號;
|
||||
private int _領據編號;
|
||||
private string _費用別;
|
||||
private int? _單價;
|
||||
private decimal? _數量;
|
||||
private string _單位;
|
||||
private string _扣繳類別;
|
||||
private int? _合計金額;
|
||||
private int? _應扣繳稅額;
|
||||
private int? _服務費;
|
||||
private int? _作廢;
|
||||
|
||||
#region 資料欄位
|
||||
///<summary>
|
||||
/// 編號
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 10)]
|
||||
public string 編號
|
||||
{
|
||||
get
|
||||
{
|
||||
return _編號;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _編號)
|
||||
{
|
||||
_編號 = value;
|
||||
OnPropertyChanged("編號");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 領據編號
|
||||
///</summary>
|
||||
[DataObjectField(true, false, false)]
|
||||
public int 領據編號
|
||||
{
|
||||
get
|
||||
{
|
||||
return _領據編號;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _領據編號)
|
||||
{
|
||||
_領據編號 = value;
|
||||
OnPropertyChanged("領據編號");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 費用別
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 20)]
|
||||
public string 費用別
|
||||
{
|
||||
get
|
||||
{
|
||||
return _費用別;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _費用別)
|
||||
{
|
||||
_費用別 = value;
|
||||
OnPropertyChanged("費用別");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 單價
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true)]
|
||||
public int? 單價
|
||||
{
|
||||
get
|
||||
{
|
||||
return _單價;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _單價)
|
||||
{
|
||||
_單價 = value;
|
||||
OnPropertyChanged("單價");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 數量
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true)]
|
||||
public decimal? 數量
|
||||
{
|
||||
get
|
||||
{
|
||||
return _數量;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _數量)
|
||||
{
|
||||
_數量 = value;
|
||||
OnPropertyChanged("數量");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 單位
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 10)]
|
||||
public string 單位
|
||||
{
|
||||
get
|
||||
{
|
||||
return _單位;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _單位)
|
||||
{
|
||||
_單位 = value;
|
||||
OnPropertyChanged("單位");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 扣繳類別
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 20)]
|
||||
public string 扣繳類別
|
||||
{
|
||||
get
|
||||
{
|
||||
return _扣繳類別;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _扣繳類別)
|
||||
{
|
||||
_扣繳類別 = value;
|
||||
OnPropertyChanged("扣繳類別");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 合計金額
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true)]
|
||||
public int? 合計金額
|
||||
{
|
||||
get
|
||||
{
|
||||
return _合計金額;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _合計金額)
|
||||
{
|
||||
_合計金額 = value;
|
||||
OnPropertyChanged("合計金額");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 應扣繳稅額
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true)]
|
||||
public int? 應扣繳稅額
|
||||
{
|
||||
get
|
||||
{
|
||||
return _應扣繳稅額;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _應扣繳稅額)
|
||||
{
|
||||
_應扣繳稅額 = value;
|
||||
OnPropertyChanged("應扣繳稅額");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 服務費
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true)]
|
||||
public int? 服務費
|
||||
{
|
||||
get
|
||||
{
|
||||
return _服務費;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _服務費)
|
||||
{
|
||||
_服務費 = value;
|
||||
OnPropertyChanged("服務費");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 作廢
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true)]
|
||||
public int? 作廢
|
||||
{
|
||||
get
|
||||
{
|
||||
return _作廢;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _作廢)
|
||||
{
|
||||
_作廢 = value;
|
||||
OnPropertyChanged("作廢");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,189 @@
|
||||
//
|
||||
// 這個檔案是 勞務費 資料表的資料存取類別 檔案二
|
||||
// 您可以修改這個檔案,加入您自訂的屬性與方法
|
||||
//
|
||||
using NPOI.SS.Formula.Functions;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Data.Common;
|
||||
using System.Data.SqlClient;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using WebLib;
|
||||
|
||||
namespace Education
|
||||
{
|
||||
///<summary>
|
||||
/// 勞務費 資料存取類別
|
||||
///</summary>
|
||||
public partial class DAC_勞務費 : WebLib.DAC
|
||||
{
|
||||
#region 自動產生的資料存取方法
|
||||
///<summary>
|
||||
/// InsertOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查或是自動編號等動作
|
||||
/// 回傳 false 會打斷 InsertOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeInsertOne(勞務費Item value)
|
||||
{
|
||||
value.作廢 = 0;
|
||||
value.合計金額 = value.計算合計();
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// InsertOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterInsertOne(勞務費Item value)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// InsertOne 發生錯誤時會執行此方法
|
||||
///</summary>
|
||||
///<param name="handled">錯誤是否已經處理妥當</param>
|
||||
protected virtual void OnInsertOneError(Exception error, out bool handled)
|
||||
{
|
||||
handled = false;
|
||||
}
|
||||
///<summary>
|
||||
/// UpdateOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查
|
||||
/// 回傳 false 會打斷 UpdateOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeUpdateOne(勞務費Item value)
|
||||
{
|
||||
value.合計金額 = value.計算合計();
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// UpdateOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查
|
||||
/// 回傳 false 會打斷 UpdateOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeUpdateOne(勞務費Item value, 勞務費Item original_value)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// UpdateOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterUpdateOne(勞務費Item value)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// UpdateOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterUpdateOne(勞務費Item value, 勞務費Item original_value)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// UpdateOne 發生錯誤時會執行此方法
|
||||
///</summary>
|
||||
///<param name="handled">錯誤是否已經處理妥當</param>
|
||||
protected virtual void OnUpdateOneError(Exception error, out bool handled)
|
||||
{
|
||||
handled = false;
|
||||
}
|
||||
///<summary>
|
||||
/// DeleteOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查
|
||||
/// 回傳 false 會打斷 DeleteOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeDeleteOne(勞務費Item value)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterDeleteOne(勞務費Item value)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查
|
||||
/// 回傳 false 會打斷 DeleteOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeDeleteOne(int 領據編號, int DB_APPNO)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterDeleteOne(int 領據編號, int DB_APPNO)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 發生錯誤時會執行此方法
|
||||
///</summary>
|
||||
///<param name="handled">錯誤是否已經處理妥當</param>
|
||||
protected virtual void OnDeleteOneError(Exception error, out bool handled)
|
||||
{
|
||||
handled = false;
|
||||
}
|
||||
#endregion
|
||||
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
|
||||
/// <summary>
|
||||
/// 判斷是否為空
|
||||
/// </summary>
|
||||
/// <param name="item"></param>
|
||||
/// <returns></returns>
|
||||
public bool IsEmpty(勞務費Item item)
|
||||
{
|
||||
if (item == null)
|
||||
return true;
|
||||
return string.IsNullOrEmpty(item.編號)
|
||||
&& item.領據編號 == 0
|
||||
&& string.IsNullOrEmpty(item.費用別)
|
||||
&& item.單價.HasValue
|
||||
&& item.數量.HasValue
|
||||
&& string.IsNullOrEmpty(item.單位)
|
||||
&& string.IsNullOrEmpty(item.扣繳類別)
|
||||
&& item.合計金額 == 0
|
||||
&& item.應扣繳稅額 == 0
|
||||
&& item.服務費 == 0;
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
///勞務費 資料集合類別
|
||||
///</summary>
|
||||
public partial class 勞務費List : List<勞務費Item>
|
||||
{
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
}
|
||||
|
||||
///<summary>
|
||||
///勞務費 資料紀錄類別
|
||||
///</summary>
|
||||
public partial class 勞務費Item
|
||||
{
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
public bool IsEmpty
|
||||
{
|
||||
get
|
||||
{
|
||||
return (!單價.HasValue || 單價 == 0) && (!數量.HasValue || 數量 == 0) && (!服務費.HasValue || 服務費 == 0);
|
||||
}
|
||||
}
|
||||
|
||||
public int 計算合計()
|
||||
{
|
||||
return (int)((decimal)(單價.HasValue ? 單價 : 0) * (數量.HasValue ? 數量.Value : 0));
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,864 @@
|
||||
//
|
||||
// 這個檔案是 差旅費 資料表的資料存取類別 檔案一
|
||||
// 請不要修改這個檔案,重新產生資料存取類別時,這個檔案會被覆蓋掉
|
||||
//
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Data.Common;
|
||||
using System.Linq;
|
||||
using System.Transactions;
|
||||
using WebLib;
|
||||
using System.Data.SqlClient;
|
||||
|
||||
namespace Education
|
||||
{
|
||||
///<summary>
|
||||
/// 差旅費 資料存取類別
|
||||
///</ summary>
|
||||
[DataObject]
|
||||
public partial class DAC_差旅費 : WebLib.DAC
|
||||
{
|
||||
private const string _tableName = "[差旅費]";
|
||||
private const string _allFields = "[編號], [領據編號], [票價資訊], [費用別], [起點], [訖點], [捷運公車], [火車], [計程車], [高鐵飛機], [自行開車], [過路費停車費], [住宿費], [合計], [作廢], [DB_APPNO], [DB_CRDAT], [DB_CRUSR], [DB_TRDAT], [DB_TRUSR]";
|
||||
private string _orderBy = "[領據編號]";
|
||||
private string _select = "select " + _allFields;
|
||||
private string _insert = "[編號], [領據編號], [票價資訊], [費用別], [起點], [訖點], [捷運公車], [火車], [計程車], [高鐵飛機], [自行開車], [過路費停車費], [住宿費], [合計], [作廢], [DB_APPNO], [DB_CRDAT], [DB_CRUSR], [DB_TRDAT], [DB_TRUSR]";
|
||||
private string _insertBak = "[編號], [領據編號], [票價資訊], [費用別], [起點], [訖點], [捷運公車], [火車], [計程車], [高鐵飛機], [自行開車], [過路費停車費], [住宿費], [合計], [作廢], [DB_APPNO], [DB_CRDAT], [DB_CRUSR], [DB_TRDAT], [DB_TRUSR], [DB_TRMOD]";
|
||||
private string _insertValue = "@編號, @領據編號, @票價資訊, @費用別, @起點, @訖點, @捷運公車, @火車, @計程車, @高鐵飛機, @自行開車, @過路費停車費, @住宿費, @合計, @作廢, @DB_APPNO, @DB_CRDAT, @DB_CRUSR, @DB_TRDAT, @DB_TRUSR";
|
||||
private string _insertBakValue = "@編號, @領據編號, @票價資訊, @費用別, @起點, @訖點, @捷運公車, @火車, @計程車, @高鐵飛機, @自行開車, @過路費停車費, @住宿費, @合計, @作廢, @DB_APPNO, @DB_CRDAT, @DB_CRUSR, @DB_TRDAT, @DB_TRUSR, @DB_TRMOD";
|
||||
private string _from = " from " + _tableName + " ";
|
||||
private string _where = " where 1=1 ";
|
||||
private string _order = " order by [領據編號] ";
|
||||
|
||||
public DAC_差旅費()
|
||||
: base()
|
||||
{
|
||||
}
|
||||
|
||||
public DAC_差旅費(DbConnection conn)
|
||||
: base(conn)
|
||||
{
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public 差旅費List SelectAll(string orderBy = "")
|
||||
{
|
||||
差旅費List result = new 差旅費List();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = _select + _from + _where + (orderBy == null || orderBy.Length == 0 ? _order : " order by " + orderBy);
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
public int SelectAllCount()
|
||||
{
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = "select count(1) " + _from;
|
||||
int i;
|
||||
ExecuteScalar(cmdSelect, out i);
|
||||
return i;
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public 差旅費List SelectAllPage(int startRowIndex, int maximumRows, string orderBy = "")
|
||||
{
|
||||
差旅費List result = new 差旅費List();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText =
|
||||
String.Format("select top {0} * from (", maximumRows)
|
||||
+ "select " + _allFields
|
||||
+ ", row_number() over (order by " + (orderBy == null || orderBy.Length == 0 ? _orderBy : orderBy) + ") as rowid "
|
||||
+ _from + _where
|
||||
+ ") as TMP1 where rowid > @startRowIndex ";
|
||||
AddParam(cmdSelect, "startRowIndex", startRowIndex);
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public 差旅費List SelectOne(int 領據編號)
|
||||
{
|
||||
差旅費List result = new 差旅費List();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = _select + _from + _where
|
||||
+ " and 領據編號 = @領據編號 "
|
||||
;
|
||||
AddParam(cmdSelect, "領據編號", 領據編號);
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 給查詢畫面用的增加 Where 條件的方法
|
||||
///</summary>
|
||||
private void AddWhere(DbCommand cmdSelect, ref bool noInput, int? 領據編號)
|
||||
{
|
||||
if (領據編號 != null)
|
||||
{
|
||||
noInput = false;
|
||||
cmdSelect.CommandText += " and 領據編號 = @領據編號 ";
|
||||
AddParam(cmdSelect, "領據編號", 領據編號);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 給查詢畫面用的 Select 方法
|
||||
///</summary>
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public 差旅費List Select(bool noInputReturnAll, int? 領據編號, string orderBy = "")
|
||||
{
|
||||
差旅費List result = new 差旅費List();
|
||||
bool noInput = true;
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = _select + _from + _where;
|
||||
AddWhere(cmdSelect, ref noInput, 領據編號);
|
||||
cmdSelect.CommandText += (orderBy == null || orderBy.Length == 0 ? _order : " order by " + orderBy);
|
||||
|
||||
if (!noInputReturnAll && noInput)
|
||||
return result;
|
||||
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 給查詢畫面用的 SelectCount 方法
|
||||
///</summary>
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public int SelectCount(bool noInputReturnAll, int? 領據編號, string orderBy = "")
|
||||
{
|
||||
bool noInput = true;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = "select count(1) " + _from + _where;
|
||||
AddWhere(cmdSelect, ref noInput, 領據編號);
|
||||
|
||||
if (!noInputReturnAll && noInput)
|
||||
return 0;
|
||||
|
||||
int i;
|
||||
ExecuteScalar(cmdSelect, out i);
|
||||
return i;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 給查詢畫面用的 SelectPage 方法
|
||||
///</summary>
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public 差旅費List SelectPage(bool noInputReturnAll, int startRowIndex, int maximumRows, int? 領據編號, string orderBy = "")
|
||||
{
|
||||
差旅費List result = new 差旅費List();
|
||||
bool noInput = true;
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
|
||||
cmdSelect.CommandText =
|
||||
String.Format("select top {0} * from (", maximumRows)
|
||||
+ "select " + _allFields
|
||||
+ ", row_number() over (order by " + (orderBy == null || orderBy.Length == 0 ? _orderBy : orderBy) + ") as rowid "
|
||||
+ _from + _where;
|
||||
AddWhere(cmdSelect, ref noInput, 領據編號);
|
||||
cmdSelect.CommandText += ") as TMP1 where rowid > @startRowIndex ";
|
||||
AddParam(cmdSelect, "startRowIndex", startRowIndex);
|
||||
|
||||
if (!noInputReturnAll && noInput)
|
||||
return result;
|
||||
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Insert)]
|
||||
public 差旅費Item InsertOne(差旅費Item value)
|
||||
{
|
||||
using (TransactionScope ts = DAC.NewTransactionScope())
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!BeforeInsertOne(value))
|
||||
return value;
|
||||
DbCommand cmdInsert = NewCommand();
|
||||
cmdInsert.CommandText =
|
||||
"insert into [差旅費]"
|
||||
+ " (" + _insert + ")"
|
||||
+ "values "
|
||||
+ " (" + _insertValue + ");" ;
|
||||
AddParam(cmdInsert, "編號", value.編號);
|
||||
AddParam(cmdInsert, "領據編號", value.領據編號);
|
||||
AddParam(cmdInsert, "票價資訊", value.票價資訊);
|
||||
AddParam(cmdInsert, "費用別", value.費用別);
|
||||
AddParam(cmdInsert, "起點", value.起點);
|
||||
AddParam(cmdInsert, "訖點", value.訖點);
|
||||
AddParam(cmdInsert, "捷運公車", value.捷運公車);
|
||||
AddParam(cmdInsert, "火車", value.火車);
|
||||
AddParam(cmdInsert, "計程車", value.計程車);
|
||||
AddParam(cmdInsert, "高鐵飛機", value.高鐵飛機);
|
||||
AddParam(cmdInsert, "自行開車", value.自行開車);
|
||||
AddParam(cmdInsert, "過路費停車費", value.過路費停車費);
|
||||
AddParam(cmdInsert, "住宿費", value.住宿費);
|
||||
AddParam(cmdInsert, "合計", value.合計);
|
||||
AddParam(cmdInsert, "作廢", value.作廢);
|
||||
AddParam(cmdInsert, "DB_APPNO", 1);
|
||||
AddParam(cmdInsert, "DB_CRDAT", DateTime.Now);
|
||||
AddParam(cmdInsert, "DB_CRUSR", CurrentUserId);
|
||||
AddParam(cmdInsert, "DB_TRDAT", DBNull.Value);
|
||||
AddParam(cmdInsert, "DB_TRUSR", DBNull.Value);
|
||||
ExecuteNonQuery(cmdInsert);
|
||||
AfterInsertOne(value);
|
||||
ts.Complete();
|
||||
}
|
||||
catch (Exception error)
|
||||
{
|
||||
bool handled;
|
||||
OnInsertOneError(error, out handled);
|
||||
if(!handled)
|
||||
throw error;
|
||||
}
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Update)]
|
||||
public 差旅費Item UpdateOne(差旅費Item value)
|
||||
{
|
||||
using (TransactionScope ts = DAC.NewTransactionScope())
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!BeforeUpdateOne(value))
|
||||
return value;
|
||||
|
||||
差旅費List oldValues = SelectOne(value.領據編號);
|
||||
if (oldValues.Count == 0 || oldValues[0].DB_APPNO != value.DB_APPNO)
|
||||
{
|
||||
throw new DBConcurrencyException("在更新 \"差旅費\" 資料表時發生並行例外:找不到要更新的資料列");
|
||||
}
|
||||
else
|
||||
{
|
||||
DoBackup(oldValues[0], "UPDATE");
|
||||
}
|
||||
|
||||
DbCommand cmdUpdate = NewCommand();
|
||||
cmdUpdate.CommandText =
|
||||
@"update [差旅費]
|
||||
set
|
||||
[編號] = @編號 ,
|
||||
[票價資訊] = @票價資訊 ,
|
||||
[費用別] = @費用別 ,
|
||||
[起點] = @起點 ,
|
||||
[訖點] = @訖點 ,
|
||||
[捷運公車] = @捷運公車 ,
|
||||
[火車] = @火車 ,
|
||||
[計程車] = @計程車 ,
|
||||
[高鐵飛機] = @高鐵飛機 ,
|
||||
[自行開車] = @自行開車 ,
|
||||
[過路費停車費] = @過路費停車費 ,
|
||||
[住宿費] = @住宿費 ,
|
||||
[合計] = @合計 ,
|
||||
[作廢] = @作廢 ,
|
||||
DB_APPNO = DB_APPNO + 1,
|
||||
DB_TRDAT = @DB_TRDAT,
|
||||
DB_TRUSR = @DB_TRUSR
|
||||
where 1=1
|
||||
and [領據編號] = @original_領據編號
|
||||
and DB_APPNO = @original_DB_APPNO
|
||||
";
|
||||
AddParam(cmdUpdate, "編號", value.編號);
|
||||
AddParam(cmdUpdate, "票價資訊", value.票價資訊);
|
||||
AddParam(cmdUpdate, "費用別", value.費用別);
|
||||
AddParam(cmdUpdate, "起點", value.起點);
|
||||
AddParam(cmdUpdate, "訖點", value.訖點);
|
||||
AddParam(cmdUpdate, "捷運公車", value.捷運公車);
|
||||
AddParam(cmdUpdate, "火車", value.火車);
|
||||
AddParam(cmdUpdate, "計程車", value.計程車);
|
||||
AddParam(cmdUpdate, "高鐵飛機", value.高鐵飛機);
|
||||
AddParam(cmdUpdate, "自行開車", value.自行開車);
|
||||
AddParam(cmdUpdate, "過路費停車費", value.過路費停車費);
|
||||
AddParam(cmdUpdate, "住宿費", value.住宿費);
|
||||
AddParam(cmdUpdate, "合計", value.合計);
|
||||
AddParam(cmdUpdate, "作廢", value.作廢);
|
||||
AddParam(cmdUpdate, "DB_TRDAT", DateTime.Now);
|
||||
AddParam(cmdUpdate, "DB_TRUSR", CurrentUserId);
|
||||
AddParam(cmdUpdate, "original_領據編號", value.領據編號);
|
||||
AddParam(cmdUpdate, "original_DB_APPNO", value.DB_APPNO);
|
||||
ExecuteNonQuery(cmdUpdate);
|
||||
AfterUpdateOne(value);
|
||||
ts.Complete();
|
||||
return value;
|
||||
}
|
||||
catch (Exception error)
|
||||
{
|
||||
bool handled;
|
||||
OnUpdateOneError(error, out handled);
|
||||
if(!handled)
|
||||
throw error;
|
||||
return value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Update)]
|
||||
public 差旅費Item UpdateOne(差旅費Item value, 差旅費Item original_value)
|
||||
{
|
||||
using (TransactionScope ts = DAC.NewTransactionScope())
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!BeforeUpdateOne(value, original_value))
|
||||
return value;
|
||||
|
||||
差旅費List oldValues = SelectOne(original_value.領據編號);
|
||||
if (oldValues.Count == 0 || oldValues[0].DB_APPNO != value.DB_APPNO)
|
||||
{
|
||||
throw new DBConcurrencyException("在更新 \"差旅費\" 資料表時發生並行例外:找不到要更新的資料列");
|
||||
}
|
||||
else
|
||||
{
|
||||
DoBackup(oldValues[0], "UPDATE");
|
||||
}
|
||||
|
||||
DbCommand cmdUpdate = NewCommand();
|
||||
cmdUpdate.CommandText =
|
||||
@"update [差旅費]
|
||||
set
|
||||
[編號] = @編號 ,
|
||||
[領據編號] = @領據編號 ,
|
||||
[票價資訊] = @票價資訊 ,
|
||||
[費用別] = @費用別 ,
|
||||
[起點] = @起點 ,
|
||||
[訖點] = @訖點 ,
|
||||
[捷運公車] = @捷運公車 ,
|
||||
[火車] = @火車 ,
|
||||
[計程車] = @計程車 ,
|
||||
[高鐵飛機] = @高鐵飛機 ,
|
||||
[自行開車] = @自行開車 ,
|
||||
[過路費停車費] = @過路費停車費 ,
|
||||
[住宿費] = @住宿費 ,
|
||||
[合計] = @合計 ,
|
||||
[作廢] = @作廢 ,
|
||||
DB_APPNO = DB_APPNO + 1,
|
||||
DB_TRDAT = @DB_TRDAT,
|
||||
DB_TRUSR = @DB_TRUSR
|
||||
where 1=1
|
||||
and [領據編號] = @original_領據編號
|
||||
and DB_APPNO = @original_DB_APPNO
|
||||
";
|
||||
AddParam(cmdUpdate, "編號", value.編號);
|
||||
AddParam(cmdUpdate, "領據編號", value.領據編號);
|
||||
AddParam(cmdUpdate, "票價資訊", value.票價資訊);
|
||||
AddParam(cmdUpdate, "費用別", value.費用別);
|
||||
AddParam(cmdUpdate, "起點", value.起點);
|
||||
AddParam(cmdUpdate, "訖點", value.訖點);
|
||||
AddParam(cmdUpdate, "捷運公車", value.捷運公車);
|
||||
AddParam(cmdUpdate, "火車", value.火車);
|
||||
AddParam(cmdUpdate, "計程車", value.計程車);
|
||||
AddParam(cmdUpdate, "高鐵飛機", value.高鐵飛機);
|
||||
AddParam(cmdUpdate, "自行開車", value.自行開車);
|
||||
AddParam(cmdUpdate, "過路費停車費", value.過路費停車費);
|
||||
AddParam(cmdUpdate, "住宿費", value.住宿費);
|
||||
AddParam(cmdUpdate, "合計", value.合計);
|
||||
AddParam(cmdUpdate, "作廢", value.作廢);
|
||||
AddParam(cmdUpdate, "DB_TRDAT", DateTime.Now);
|
||||
AddParam(cmdUpdate, "DB_TRUSR", CurrentUserId);
|
||||
AddParam(cmdUpdate, "original_領據編號", original_value.領據編號);
|
||||
AddParam(cmdUpdate, "original_DB_APPNO", original_value.DB_APPNO);
|
||||
ExecuteNonQuery(cmdUpdate);
|
||||
AfterUpdateOne(value, original_value);
|
||||
ts.Complete();
|
||||
return value;
|
||||
}
|
||||
catch (Exception error)
|
||||
{
|
||||
bool handled;
|
||||
OnUpdateOneError(error, out handled);
|
||||
if(!handled)
|
||||
throw error;
|
||||
return value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Delete)]
|
||||
public int DeleteOne(int 領據編號, int DB_APPNO)
|
||||
{
|
||||
using (TransactionScope ts = DAC.NewTransactionScope())
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!BeforeDeleteOne(領據編號, DB_APPNO))
|
||||
return -1;
|
||||
|
||||
差旅費List oldValues = SelectOne(領據編號);
|
||||
if (oldValues.Count == 0 || oldValues[0].DB_APPNO != DB_APPNO)
|
||||
{
|
||||
throw new DBConcurrencyException("在刪除 \"差旅費\" 資料表時發生並行例外:找不到要刪除的資料列");
|
||||
}
|
||||
else
|
||||
{
|
||||
DoBackup(oldValues[0], "DELETE");
|
||||
}
|
||||
|
||||
DbCommand cmdDelete = NewCommand();
|
||||
cmdDelete.CommandText =
|
||||
@"delete from [差旅費]
|
||||
where 1=1
|
||||
and 領據編號 = @領據編號
|
||||
and DB_APPNO = @DB_APPNO
|
||||
";
|
||||
AddParam(cmdDelete, "領據編號", 領據編號);
|
||||
AddParam(cmdDelete, "DB_APPNO", DB_APPNO);
|
||||
int rowsAffected = ExecuteNonQuery(cmdDelete);
|
||||
AfterDeleteOne(領據編號, DB_APPNO);
|
||||
ts.Complete();
|
||||
return rowsAffected;
|
||||
}
|
||||
catch (Exception error)
|
||||
{
|
||||
bool handled;
|
||||
OnDeleteOneError(error, out handled);
|
||||
if(!handled)
|
||||
throw error;
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Delete)]
|
||||
public int DeleteOne(差旅費Item value)
|
||||
{
|
||||
using (TransactionScope ts = DAC.NewTransactionScope())
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!BeforeDeleteOne(value))
|
||||
return -1;
|
||||
|
||||
差旅費List oldValues = SelectOne(value.領據編號);
|
||||
if (oldValues.Count == 0 || oldValues[0].DB_APPNO != value.DB_APPNO)
|
||||
{
|
||||
throw new DBConcurrencyException("在刪除 \"差旅費\" 資料表時發生並行例外:找不到要刪除的資料列");
|
||||
}
|
||||
else
|
||||
{
|
||||
DoBackup(oldValues[0], "DELETE");
|
||||
}
|
||||
|
||||
DbCommand cmdDelete = NewCommand();
|
||||
cmdDelete.CommandText =
|
||||
@"delete from [差旅費]
|
||||
where 1=1
|
||||
and 領據編號 = @領據編號
|
||||
and DB_APPNO = @DB_APPNO
|
||||
";
|
||||
AddParam(cmdDelete, "領據編號", value.領據編號);
|
||||
AddParam(cmdDelete, "DB_APPNO", value.DB_APPNO);
|
||||
int rowsAffected = ExecuteNonQuery(cmdDelete);
|
||||
AfterDeleteOne(value);
|
||||
ts.Complete();
|
||||
return rowsAffected;
|
||||
}
|
||||
catch (Exception error)
|
||||
{
|
||||
bool handled;
|
||||
OnDeleteOneError(error, out handled);
|
||||
if(!handled)
|
||||
throw error;
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsDuplicate(int 領據編號)
|
||||
{
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = "select count(1)" + _from + _where
|
||||
+ " and 領據編號 = @領據編號 "
|
||||
;
|
||||
AddParam(cmdSelect, "領據編號", 領據編號);
|
||||
int count;
|
||||
ExecuteScalar(cmdSelect, out count);
|
||||
return count > 0;
|
||||
}
|
||||
|
||||
public void DoBackup(差旅費Item value, string updateMode)
|
||||
{
|
||||
DbCommand cmdBak = NewCommand();
|
||||
cmdBak.CommandText =
|
||||
"insert into [差旅費_BAK]"
|
||||
+ " (" + _insertBak + ")"
|
||||
+ "values "
|
||||
+ " (" + _insertBakValue + ");"
|
||||
;
|
||||
AddParam(cmdBak, "編號", value.編號);
|
||||
AddParam(cmdBak, "領據編號", value.領據編號);
|
||||
AddParam(cmdBak, "票價資訊", value.票價資訊);
|
||||
AddParam(cmdBak, "費用別", value.費用別);
|
||||
AddParam(cmdBak, "起點", value.起點);
|
||||
AddParam(cmdBak, "訖點", value.訖點);
|
||||
AddParam(cmdBak, "捷運公車", value.捷運公車);
|
||||
AddParam(cmdBak, "火車", value.火車);
|
||||
AddParam(cmdBak, "計程車", value.計程車);
|
||||
AddParam(cmdBak, "高鐵飛機", value.高鐵飛機);
|
||||
AddParam(cmdBak, "自行開車", value.自行開車);
|
||||
AddParam(cmdBak, "過路費停車費", value.過路費停車費);
|
||||
AddParam(cmdBak, "住宿費", value.住宿費);
|
||||
AddParam(cmdBak, "合計", value.合計);
|
||||
AddParam(cmdBak, "作廢", value.作廢);
|
||||
AddParam(cmdBak, "DB_APPNO", value.DB_APPNO);
|
||||
AddParam(cmdBak, "DB_CRDAT", value.DB_CRDAT);
|
||||
AddParam(cmdBak, "DB_CRUSR", value.DB_CRUSR);
|
||||
AddParam(cmdBak, "DB_TRDAT", DateTime.Now);
|
||||
AddParam(cmdBak, "DB_TRUSR", CurrentUserId);
|
||||
AddParam(cmdBak, "DB_TRMOD", updateMode);
|
||||
ExecuteNonQuery(cmdBak);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
///<summary>
|
||||
///差旅費 資料集合類別
|
||||
///</summary>
|
||||
[Serializable]
|
||||
public partial class 差旅費List : List<差旅費Item>, IDataList
|
||||
{
|
||||
public void Fill(DbDataReader reader)
|
||||
{
|
||||
DAC.FillData<差旅費Item>(reader, this);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
///<summary>
|
||||
/// 差旅費 資料紀錄類別
|
||||
///</summary>
|
||||
[Serializable]
|
||||
public partial class 差旅費Item : DataItemBase
|
||||
{
|
||||
private string _編號;
|
||||
private int _領據編號;
|
||||
private string _票價資訊;
|
||||
private string _費用別;
|
||||
private string _起點;
|
||||
private string _訖點;
|
||||
private int? _捷運公車;
|
||||
private int? _火車;
|
||||
private int? _計程車;
|
||||
private int? _高鐵飛機;
|
||||
private int? _自行開車;
|
||||
private int? _過路費停車費;
|
||||
private int? _住宿費;
|
||||
private int? _合計;
|
||||
private int? _作廢;
|
||||
|
||||
#region 資料欄位
|
||||
///<summary>
|
||||
/// 編號
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 10)]
|
||||
public string 編號
|
||||
{
|
||||
get
|
||||
{
|
||||
return _編號;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _編號)
|
||||
{
|
||||
_編號 = value;
|
||||
OnPropertyChanged("編號");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 領據編號
|
||||
///</summary>
|
||||
[DataObjectField(true, false, false)]
|
||||
public int 領據編號
|
||||
{
|
||||
get
|
||||
{
|
||||
return _領據編號;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _領據編號)
|
||||
{
|
||||
_領據編號 = value;
|
||||
OnPropertyChanged("領據編號");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 票價資訊
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 200)]
|
||||
public string 票價資訊
|
||||
{
|
||||
get
|
||||
{
|
||||
return _票價資訊;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _票價資訊)
|
||||
{
|
||||
_票價資訊 = value;
|
||||
OnPropertyChanged("票價資訊");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 費用別
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 20)]
|
||||
public string 費用別
|
||||
{
|
||||
get
|
||||
{
|
||||
return _費用別;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _費用別)
|
||||
{
|
||||
_費用別 = value;
|
||||
OnPropertyChanged("費用別");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 起點
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 20)]
|
||||
public string 起點
|
||||
{
|
||||
get
|
||||
{
|
||||
return _起點;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _起點)
|
||||
{
|
||||
_起點 = value;
|
||||
OnPropertyChanged("起點");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 訖點
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true, 20)]
|
||||
public string 訖點
|
||||
{
|
||||
get
|
||||
{
|
||||
return _訖點;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _訖點)
|
||||
{
|
||||
_訖點 = value;
|
||||
OnPropertyChanged("訖點");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 捷運公車
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true)]
|
||||
public int? 捷運公車
|
||||
{
|
||||
get
|
||||
{
|
||||
return _捷運公車;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _捷運公車)
|
||||
{
|
||||
_捷運公車 = value;
|
||||
OnPropertyChanged("捷運公車");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 火車
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true)]
|
||||
public int? 火車
|
||||
{
|
||||
get
|
||||
{
|
||||
return _火車;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _火車)
|
||||
{
|
||||
_火車 = value;
|
||||
OnPropertyChanged("火車");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 計程車
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true)]
|
||||
public int? 計程車
|
||||
{
|
||||
get
|
||||
{
|
||||
return _計程車;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _計程車)
|
||||
{
|
||||
_計程車 = value;
|
||||
OnPropertyChanged("計程車");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 高鐵飛機
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true)]
|
||||
public int? 高鐵飛機
|
||||
{
|
||||
get
|
||||
{
|
||||
return _高鐵飛機;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _高鐵飛機)
|
||||
{
|
||||
_高鐵飛機 = value;
|
||||
OnPropertyChanged("高鐵飛機");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 自行開車
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true)]
|
||||
public int? 自行開車
|
||||
{
|
||||
get
|
||||
{
|
||||
return _自行開車;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _自行開車)
|
||||
{
|
||||
_自行開車 = value;
|
||||
OnPropertyChanged("自行開車");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 過路費停車費
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true)]
|
||||
public int? 過路費停車費
|
||||
{
|
||||
get
|
||||
{
|
||||
return _過路費停車費;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _過路費停車費)
|
||||
{
|
||||
_過路費停車費 = value;
|
||||
OnPropertyChanged("過路費停車費");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 住宿費
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true)]
|
||||
public int? 住宿費
|
||||
{
|
||||
get
|
||||
{
|
||||
return _住宿費;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _住宿費)
|
||||
{
|
||||
_住宿費 = value;
|
||||
OnPropertyChanged("住宿費");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 合計
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true)]
|
||||
public int? 合計
|
||||
{
|
||||
get
|
||||
{
|
||||
return _合計;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _合計)
|
||||
{
|
||||
_合計 = value;
|
||||
OnPropertyChanged("合計");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 作廢
|
||||
///</summary>
|
||||
[DataObjectField(false, false, true)]
|
||||
public int? 作廢
|
||||
{
|
||||
get
|
||||
{
|
||||
return _作廢;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _作廢)
|
||||
{
|
||||
_作廢 = value;
|
||||
OnPropertyChanged("作廢");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,196 @@
|
||||
//
|
||||
// 這個檔案是 差旅費 資料表的資料存取類別 檔案二
|
||||
// 您可以修改這個檔案,加入您自訂的屬性與方法
|
||||
//
|
||||
using NPOI.SS.Formula.Functions;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Data.Common;
|
||||
using System.Data.SqlClient;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using WebLib;
|
||||
|
||||
namespace Education
|
||||
{
|
||||
///<summary>
|
||||
/// 差旅費 資料存取類別
|
||||
///</summary>
|
||||
public partial class DAC_差旅費 : WebLib.DAC
|
||||
{
|
||||
#region 自動產生的資料存取方法
|
||||
///<summary>
|
||||
/// InsertOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查或是自動編號等動作
|
||||
/// 回傳 false 會打斷 InsertOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeInsertOne(差旅費Item value)
|
||||
{
|
||||
value.作廢 = 0;
|
||||
value.合計 = value.計算合計();
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// InsertOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterInsertOne(差旅費Item value)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// InsertOne 發生錯誤時會執行此方法
|
||||
///</summary>
|
||||
///<param name="handled">錯誤是否已經處理妥當</param>
|
||||
protected virtual void OnInsertOneError(Exception error, out bool handled)
|
||||
{
|
||||
handled = false;
|
||||
}
|
||||
///<summary>
|
||||
/// UpdateOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查
|
||||
/// 回傳 false 會打斷 UpdateOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeUpdateOne(差旅費Item value)
|
||||
{
|
||||
value.合計 = value.計算合計();
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// UpdateOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查
|
||||
/// 回傳 false 會打斷 UpdateOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeUpdateOne(差旅費Item value, 差旅費Item original_value)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// UpdateOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterUpdateOne(差旅費Item value)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// UpdateOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterUpdateOne(差旅費Item value, 差旅費Item original_value)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// UpdateOne 發生錯誤時會執行此方法
|
||||
///</summary>
|
||||
///<param name="handled">錯誤是否已經處理妥當</param>
|
||||
protected virtual void OnUpdateOneError(Exception error, out bool handled)
|
||||
{
|
||||
handled = false;
|
||||
}
|
||||
///<summary>
|
||||
/// DeleteOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查
|
||||
/// 回傳 false 會打斷 DeleteOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeDeleteOne(差旅費Item value)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterDeleteOne(差旅費Item value)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查
|
||||
/// 回傳 false 會打斷 DeleteOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeDeleteOne(int 領據編號, int DB_APPNO)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterDeleteOne(int 領據編號, int DB_APPNO)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 發生錯誤時會執行此方法
|
||||
///</summary>
|
||||
///<param name="handled">錯誤是否已經處理妥當</param>
|
||||
protected virtual void OnDeleteOneError(Exception error, out bool handled)
|
||||
{
|
||||
handled = false;
|
||||
}
|
||||
#endregion
|
||||
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
|
||||
/// <summary>
|
||||
/// 判斷是否為空
|
||||
/// </summary>
|
||||
/// <param name="item"></param>
|
||||
/// <returns></returns>
|
||||
public bool IsEmpty(差旅費Item item)
|
||||
{
|
||||
if (item == null)
|
||||
return true;
|
||||
return string.IsNullOrEmpty(item.編號)
|
||||
&& item.領據編號 == 0
|
||||
&& string.IsNullOrEmpty(item.票價資訊)
|
||||
&& string.IsNullOrEmpty(item.費用別)
|
||||
&& string.IsNullOrEmpty(item.起點)
|
||||
&& string.IsNullOrEmpty(item.訖點)
|
||||
&& item.捷運公車.HasValue
|
||||
&& item.火車.HasValue
|
||||
&& item.計程車.HasValue
|
||||
&& item.高鐵飛機.HasValue
|
||||
&& item.自行開車.HasValue
|
||||
&& item.過路費停車費.HasValue
|
||||
&& item.住宿費.HasValue
|
||||
&& item.合計.HasValue;
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
///差旅費 資料集合類別
|
||||
///</summary>
|
||||
public partial class 差旅費List : List<差旅費Item>
|
||||
{
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
}
|
||||
|
||||
///<summary>
|
||||
///差旅費 資料紀錄類別
|
||||
///</summary>
|
||||
public partial class 差旅費Item
|
||||
{
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
public bool IsEmpty
|
||||
{
|
||||
get { return (!合計.HasValue || 合計 == 0); }
|
||||
}
|
||||
|
||||
public int 計算合計()
|
||||
{
|
||||
return (捷運公車.HasValue ? 捷運公車.Value : 0)
|
||||
+ (火車.HasValue ? 火車.Value : 0)
|
||||
+ (計程車.HasValue ? 計程車.Value : 0)
|
||||
+ (高鐵飛機.HasValue ? 高鐵飛機.Value : 0)
|
||||
+ (自行開車.HasValue ? 自行開車.Value : 0)
|
||||
+ (過路費停車費.HasValue ? 過路費停車費.Value : 0)
|
||||
+ (住宿費.HasValue ? 住宿費.Value : 0);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,635 @@
|
||||
//
|
||||
// 這個檔案是 火車票價 資料表的資料存取類別 檔案一
|
||||
// 請不要修改這個檔案,重新產生資料存取類別時,這個檔案會被覆蓋掉
|
||||
//
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Data.Common;
|
||||
using System.Linq;
|
||||
using System.Transactions;
|
||||
using WebLib;
|
||||
using System.Data.SqlClient;
|
||||
|
||||
namespace Education
|
||||
{
|
||||
///<summary>
|
||||
/// 火車票價 資料存取類別
|
||||
///</ summary>
|
||||
[DataObject]
|
||||
public partial class DAC_火車票價 : WebLib.DAC
|
||||
{
|
||||
private const string _tableName = "[火車票價]";
|
||||
private const string _allFields = "[編號], [版本號], [生效日期], [起站], [迄站], [票價], [DB_APPNO], [DB_CRDAT], [DB_CRUSR], [DB_TRDAT], [DB_TRUSR]";
|
||||
private string _orderBy = "[編號]";
|
||||
private string _select = "select " + _allFields;
|
||||
private string _insert = "[版本號], [生效日期], [起站], [迄站], [票價], [DB_APPNO], [DB_CRDAT], [DB_CRUSR], [DB_TRDAT], [DB_TRUSR]";
|
||||
private string _insertBak = "[編號], [版本號], [生效日期], [起站], [迄站], [票價], [DB_APPNO], [DB_CRDAT], [DB_CRUSR], [DB_TRDAT], [DB_TRUSR], [DB_TRMOD]";
|
||||
private string _insertValue = "@版本號, @生效日期, @起站, @迄站, @票價, @DB_APPNO, @DB_CRDAT, @DB_CRUSR, @DB_TRDAT, @DB_TRUSR";
|
||||
private string _insertBakValue = "@編號, @版本號, @生效日期, @起站, @迄站, @票價, @DB_APPNO, @DB_CRDAT, @DB_CRUSR, @DB_TRDAT, @DB_TRUSR, @DB_TRMOD";
|
||||
private string _from = " from " + _tableName + " ";
|
||||
private string _where = " where 1=1 ";
|
||||
private string _order = " order by [編號] ";
|
||||
|
||||
public DAC_火車票價()
|
||||
: base()
|
||||
{
|
||||
}
|
||||
|
||||
public DAC_火車票價(DbConnection conn)
|
||||
: base(conn)
|
||||
{
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public 火車票價List SelectAll(string orderBy = "")
|
||||
{
|
||||
火車票價List result = new 火車票價List();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = _select + _from + _where + (orderBy == null || orderBy.Length == 0 ? _order : " order by " + orderBy);
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
public int SelectAllCount()
|
||||
{
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = "select count(1) " + _from;
|
||||
int i;
|
||||
ExecuteScalar(cmdSelect, out i);
|
||||
return i;
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public 火車票價List SelectAllPage(int startRowIndex, int maximumRows, string orderBy = "")
|
||||
{
|
||||
火車票價List result = new 火車票價List();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText =
|
||||
String.Format("select top {0} * from (", maximumRows)
|
||||
+ "select " + _allFields
|
||||
+ ", row_number() over (order by " + (orderBy == null || orderBy.Length == 0 ? _orderBy : orderBy) + ") as rowid "
|
||||
+ _from + _where
|
||||
+ ") as TMP1 where rowid > @startRowIndex ";
|
||||
AddParam(cmdSelect, "startRowIndex", startRowIndex);
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public 火車票價List SelectOne(int 編號)
|
||||
{
|
||||
火車票價List result = new 火車票價List();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = _select + _from + _where
|
||||
+ " and 編號 = @編號 "
|
||||
;
|
||||
AddParam(cmdSelect, "編號", 編號);
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 給查詢畫面用的增加 Where 條件的方法
|
||||
///</summary>
|
||||
private void AddWhere(DbCommand cmdSelect, ref bool noInput, int? 版本號, string 起站, string 迄站)
|
||||
{
|
||||
if (版本號 != null)
|
||||
{
|
||||
noInput = false;
|
||||
cmdSelect.CommandText += " and 版本號 = @版本號 ";
|
||||
AddParam(cmdSelect, "版本號", 版本號);
|
||||
}
|
||||
|
||||
if (起站 != null && 起站.Length > 0)
|
||||
{
|
||||
noInput = false;
|
||||
cmdSelect.CommandText += " and 起站 like @起站 ";
|
||||
AddParam(cmdSelect, "起站", "%" + 起站 + "%");
|
||||
}
|
||||
|
||||
if (迄站 != null && 迄站.Length > 0)
|
||||
{
|
||||
noInput = false;
|
||||
cmdSelect.CommandText += " and 迄站 like @迄站 ";
|
||||
AddParam(cmdSelect, "迄站", "%" + 迄站 + "%");
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 給查詢畫面用的 Select 方法
|
||||
///</summary>
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public 火車票價List Select(bool noInputReturnAll, int? 版本號, string 起站, string 迄站, string orderBy = "")
|
||||
{
|
||||
火車票價List result = new 火車票價List();
|
||||
bool noInput = true;
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = _select + _from + _where;
|
||||
AddWhere(cmdSelect, ref noInput, 版本號, 起站, 迄站);
|
||||
cmdSelect.CommandText += (orderBy == null || orderBy.Length == 0 ? _order : " order by " + orderBy);
|
||||
|
||||
if (!noInputReturnAll && noInput)
|
||||
return result;
|
||||
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 給查詢畫面用的 SelectCount 方法
|
||||
///</summary>
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public int SelectCount(bool noInputReturnAll, int? 版本號, string 起站, string 迄站, string orderBy = "")
|
||||
{
|
||||
bool noInput = true;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = "select count(1) " + _from + _where;
|
||||
AddWhere(cmdSelect, ref noInput, 版本號, 起站, 迄站);
|
||||
|
||||
if (!noInputReturnAll && noInput)
|
||||
return 0;
|
||||
|
||||
int i;
|
||||
ExecuteScalar(cmdSelect, out i);
|
||||
return i;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 給查詢畫面用的 SelectPage 方法
|
||||
///</summary>
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public 火車票價List SelectPage(bool noInputReturnAll, int startRowIndex, int maximumRows, int? 版本號, string 起站, string 迄站, string orderBy = "")
|
||||
{
|
||||
火車票價List result = new 火車票價List();
|
||||
bool noInput = true;
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
|
||||
cmdSelect.CommandText =
|
||||
String.Format("select top {0} * from (", maximumRows)
|
||||
+ "select " + _allFields
|
||||
+ ", row_number() over (order by " + (orderBy == null || orderBy.Length == 0 ? _orderBy : orderBy) + ") as rowid "
|
||||
+ _from + _where;
|
||||
AddWhere(cmdSelect, ref noInput, 版本號, 起站, 迄站);
|
||||
cmdSelect.CommandText += ") as TMP1 where rowid > @startRowIndex ";
|
||||
AddParam(cmdSelect, "startRowIndex", startRowIndex);
|
||||
|
||||
if (!noInputReturnAll && noInput)
|
||||
return result;
|
||||
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Insert)]
|
||||
public 火車票價Item InsertOne(火車票價Item value)
|
||||
{
|
||||
using (TransactionScope ts = DAC.NewTransactionScope())
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!BeforeInsertOne(value))
|
||||
return value;
|
||||
DbCommand cmdInsert = NewCommand();
|
||||
cmdInsert.CommandText =
|
||||
"insert into [火車票價]"
|
||||
+ " (" + _insert + ")"
|
||||
+ "values "
|
||||
+ " (" + _insertValue + ");" + "select @@identity"
|
||||
;
|
||||
AddParam(cmdInsert, "版本號", value.版本號);
|
||||
AddParam(cmdInsert, "生效日期", value.生效日期);
|
||||
AddParam(cmdInsert, "起站", value.起站);
|
||||
AddParam(cmdInsert, "迄站", value.迄站);
|
||||
AddParam(cmdInsert, "票價", value.票價);
|
||||
AddParam(cmdInsert, "DB_APPNO", 1);
|
||||
AddParam(cmdInsert, "DB_CRDAT", DateTime.Now);
|
||||
AddParam(cmdInsert, "DB_CRUSR", CurrentUserId);
|
||||
AddParam(cmdInsert, "DB_TRDAT", DBNull.Value);
|
||||
AddParam(cmdInsert, "DB_TRUSR", DBNull.Value);
|
||||
int newId;
|
||||
ExecuteScalar(cmdInsert, out newId);
|
||||
value.編號 = newId;
|
||||
AfterInsertOne(value);
|
||||
ts.Complete();
|
||||
}
|
||||
catch (Exception error)
|
||||
{
|
||||
bool handled;
|
||||
OnInsertOneError(error, out handled);
|
||||
if(!handled)
|
||||
throw error;
|
||||
}
|
||||
return value;
|
||||
}
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Update)]
|
||||
public 火車票價Item UpdateOne(火車票價Item value)
|
||||
{
|
||||
using (TransactionScope ts = DAC.NewTransactionScope())
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!BeforeUpdateOne(value))
|
||||
return value;
|
||||
|
||||
火車票價List oldValues = SelectOne(value.編號);
|
||||
if (oldValues.Count == 0 || oldValues[0].DB_APPNO != value.DB_APPNO)
|
||||
{
|
||||
throw new DBConcurrencyException("在更新 \"火車票價\" 資料表時發生並行例外:找不到要更新的資料列");
|
||||
}
|
||||
else
|
||||
{
|
||||
DoBackup(oldValues[0], "UPDATE");
|
||||
}
|
||||
|
||||
DbCommand cmdUpdate = NewCommand();
|
||||
cmdUpdate.CommandText =
|
||||
@"update [火車票價]
|
||||
set
|
||||
[版本號] = @版本號 ,
|
||||
[生效日期] = @生效日期 ,
|
||||
[起站] = @起站 ,
|
||||
[迄站] = @迄站 ,
|
||||
[票價] = @票價 ,
|
||||
DB_APPNO = DB_APPNO + 1,
|
||||
DB_TRDAT = @DB_TRDAT,
|
||||
DB_TRUSR = @DB_TRUSR
|
||||
where 1=1
|
||||
and [編號] = @original_編號
|
||||
and DB_APPNO = @original_DB_APPNO
|
||||
";
|
||||
AddParam(cmdUpdate, "版本號", value.版本號);
|
||||
AddParam(cmdUpdate, "生效日期", value.生效日期);
|
||||
AddParam(cmdUpdate, "起站", value.起站);
|
||||
AddParam(cmdUpdate, "迄站", value.迄站);
|
||||
AddParam(cmdUpdate, "票價", value.票價);
|
||||
AddParam(cmdUpdate, "DB_TRDAT", DateTime.Now);
|
||||
AddParam(cmdUpdate, "DB_TRUSR", CurrentUserId);
|
||||
AddParam(cmdUpdate, "original_編號", value.編號);
|
||||
AddParam(cmdUpdate, "original_DB_APPNO", value.DB_APPNO);
|
||||
ExecuteNonQuery(cmdUpdate);
|
||||
AfterUpdateOne(value);
|
||||
ts.Complete();
|
||||
return value;
|
||||
}
|
||||
catch (Exception error)
|
||||
{
|
||||
bool handled;
|
||||
OnUpdateOneError(error, out handled);
|
||||
if(!handled)
|
||||
throw error;
|
||||
return value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Update)]
|
||||
public 火車票價Item UpdateOne(火車票價Item value, 火車票價Item original_value)
|
||||
{
|
||||
using (TransactionScope ts = DAC.NewTransactionScope())
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!BeforeUpdateOne(value, original_value))
|
||||
return value;
|
||||
|
||||
火車票價List oldValues = SelectOne(original_value.編號);
|
||||
if (oldValues.Count == 0 || oldValues[0].DB_APPNO != value.DB_APPNO)
|
||||
{
|
||||
throw new DBConcurrencyException("在更新 \"火車票價\" 資料表時發生並行例外:找不到要更新的資料列");
|
||||
}
|
||||
else
|
||||
{
|
||||
DoBackup(oldValues[0], "UPDATE");
|
||||
}
|
||||
|
||||
DbCommand cmdUpdate = NewCommand();
|
||||
cmdUpdate.CommandText =
|
||||
@"update [火車票價]
|
||||
set
|
||||
[版本號] = @版本號 ,
|
||||
[生效日期] = @生效日期 ,
|
||||
[起站] = @起站 ,
|
||||
[迄站] = @迄站 ,
|
||||
[票價] = @票價 ,
|
||||
DB_APPNO = DB_APPNO + 1,
|
||||
DB_TRDAT = @DB_TRDAT,
|
||||
DB_TRUSR = @DB_TRUSR
|
||||
where 1=1
|
||||
and [編號] = @original_編號
|
||||
and DB_APPNO = @original_DB_APPNO
|
||||
";
|
||||
AddParam(cmdUpdate, "版本號", value.版本號);
|
||||
AddParam(cmdUpdate, "生效日期", value.生效日期);
|
||||
AddParam(cmdUpdate, "起站", value.起站);
|
||||
AddParam(cmdUpdate, "迄站", value.迄站);
|
||||
AddParam(cmdUpdate, "票價", value.票價);
|
||||
AddParam(cmdUpdate, "DB_TRDAT", DateTime.Now);
|
||||
AddParam(cmdUpdate, "DB_TRUSR", CurrentUserId);
|
||||
AddParam(cmdUpdate, "original_編號", original_value.編號);
|
||||
AddParam(cmdUpdate, "original_DB_APPNO", original_value.DB_APPNO);
|
||||
ExecuteNonQuery(cmdUpdate);
|
||||
AfterUpdateOne(value, original_value);
|
||||
ts.Complete();
|
||||
return value;
|
||||
}
|
||||
catch (Exception error)
|
||||
{
|
||||
bool handled;
|
||||
OnUpdateOneError(error, out handled);
|
||||
if(!handled)
|
||||
throw error;
|
||||
return value;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Delete)]
|
||||
public int DeleteOne(int 編號, int DB_APPNO)
|
||||
{
|
||||
using (TransactionScope ts = DAC.NewTransactionScope())
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!BeforeDeleteOne(編號, DB_APPNO))
|
||||
return -1;
|
||||
|
||||
火車票價List oldValues = SelectOne(編號);
|
||||
if (oldValues.Count == 0 || oldValues[0].DB_APPNO != DB_APPNO)
|
||||
{
|
||||
throw new DBConcurrencyException("在刪除 \"火車票價\" 資料表時發生並行例外:找不到要刪除的資料列");
|
||||
}
|
||||
else
|
||||
{
|
||||
DoBackup(oldValues[0], "DELETE");
|
||||
}
|
||||
|
||||
DbCommand cmdDelete = NewCommand();
|
||||
cmdDelete.CommandText =
|
||||
@"delete from [火車票價]
|
||||
where 1=1
|
||||
and 編號 = @編號
|
||||
and DB_APPNO = @DB_APPNO
|
||||
";
|
||||
AddParam(cmdDelete, "編號", 編號);
|
||||
AddParam(cmdDelete, "DB_APPNO", DB_APPNO);
|
||||
int rowsAffected = ExecuteNonQuery(cmdDelete);
|
||||
AfterDeleteOne(編號, DB_APPNO);
|
||||
ts.Complete();
|
||||
return rowsAffected;
|
||||
}
|
||||
catch (Exception error)
|
||||
{
|
||||
bool handled;
|
||||
OnDeleteOneError(error, out handled);
|
||||
if(!handled)
|
||||
throw error;
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
[DataObjectMethod(DataObjectMethodType.Delete)]
|
||||
public int DeleteOne(火車票價Item value)
|
||||
{
|
||||
using (TransactionScope ts = DAC.NewTransactionScope())
|
||||
{
|
||||
try
|
||||
{
|
||||
if (!BeforeDeleteOne(value))
|
||||
return -1;
|
||||
|
||||
火車票價List oldValues = SelectOne(value.編號);
|
||||
if (oldValues.Count == 0 || oldValues[0].DB_APPNO != value.DB_APPNO)
|
||||
{
|
||||
throw new DBConcurrencyException("在刪除 \"火車票價\" 資料表時發生並行例外:找不到要刪除的資料列");
|
||||
}
|
||||
else
|
||||
{
|
||||
DoBackup(oldValues[0], "DELETE");
|
||||
}
|
||||
|
||||
DbCommand cmdDelete = NewCommand();
|
||||
cmdDelete.CommandText =
|
||||
@"delete from [火車票價]
|
||||
where 1=1
|
||||
and 編號 = @編號
|
||||
and DB_APPNO = @DB_APPNO
|
||||
";
|
||||
AddParam(cmdDelete, "編號", value.編號);
|
||||
AddParam(cmdDelete, "DB_APPNO", value.DB_APPNO);
|
||||
int rowsAffected = ExecuteNonQuery(cmdDelete);
|
||||
AfterDeleteOne(value);
|
||||
ts.Complete();
|
||||
return rowsAffected;
|
||||
}
|
||||
catch (Exception error)
|
||||
{
|
||||
bool handled;
|
||||
OnDeleteOneError(error, out handled);
|
||||
if(!handled)
|
||||
throw error;
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
public bool IsDuplicate(int 編號)
|
||||
{
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = "select count(1)" + _from + _where
|
||||
+ " and 編號 = @編號 "
|
||||
;
|
||||
AddParam(cmdSelect, "編號", 編號);
|
||||
int count;
|
||||
ExecuteScalar(cmdSelect, out count);
|
||||
return count > 0;
|
||||
}
|
||||
|
||||
public void DoBackup(火車票價Item value, string updateMode)
|
||||
{
|
||||
DbCommand cmdBak = NewCommand();
|
||||
cmdBak.CommandText =
|
||||
"insert into [火車票價_BAK]"
|
||||
+ " (" + _insertBak + ")"
|
||||
+ "values "
|
||||
+ " (" + _insertBakValue + ");"
|
||||
;
|
||||
AddParam(cmdBak, "編號", value.編號);
|
||||
AddParam(cmdBak, "版本號", value.版本號);
|
||||
AddParam(cmdBak, "生效日期", value.生效日期);
|
||||
AddParam(cmdBak, "起站", value.起站);
|
||||
AddParam(cmdBak, "迄站", value.迄站);
|
||||
AddParam(cmdBak, "票價", value.票價);
|
||||
AddParam(cmdBak, "DB_APPNO", value.DB_APPNO);
|
||||
AddParam(cmdBak, "DB_CRDAT", value.DB_CRDAT);
|
||||
AddParam(cmdBak, "DB_CRUSR", value.DB_CRUSR);
|
||||
AddParam(cmdBak, "DB_TRDAT", DateTime.Now);
|
||||
AddParam(cmdBak, "DB_TRUSR", CurrentUserId);
|
||||
AddParam(cmdBak, "DB_TRMOD", updateMode);
|
||||
ExecuteNonQuery(cmdBak);
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
|
||||
///<summary>
|
||||
///火車票價 資料集合類別
|
||||
///</summary>
|
||||
[Serializable]
|
||||
public partial class 火車票價List : List<火車票價Item>, IDataList
|
||||
{
|
||||
public void Fill(DbDataReader reader)
|
||||
{
|
||||
DAC.FillData<火車票價Item>(reader, this);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
///<summary>
|
||||
/// 火車票價 資料紀錄類別
|
||||
///</summary>
|
||||
[Serializable]
|
||||
public partial class 火車票價Item : DataItemBase
|
||||
{
|
||||
private int _編號;
|
||||
private int _版本號;
|
||||
private DateTime _生效日期;
|
||||
private string _起站;
|
||||
private string _迄站;
|
||||
private int _票價;
|
||||
|
||||
#region 資料欄位
|
||||
///<summary>
|
||||
/// 編號
|
||||
///</summary>
|
||||
[DataObjectField(true, false, false)]
|
||||
public int 編號
|
||||
{
|
||||
get
|
||||
{
|
||||
return _編號;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _編號)
|
||||
{
|
||||
_編號 = value;
|
||||
OnPropertyChanged("編號");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 版本號
|
||||
///</summary>
|
||||
[DataObjectField(false, false, false)]
|
||||
public int 版本號
|
||||
{
|
||||
get
|
||||
{
|
||||
return _版本號;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _版本號)
|
||||
{
|
||||
_版本號 = value;
|
||||
OnPropertyChanged("版本號");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 生效日期
|
||||
///</summary>
|
||||
[DataObjectField(false, false, false)]
|
||||
public DateTime 生效日期
|
||||
{
|
||||
get
|
||||
{
|
||||
return _生效日期;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _生效日期)
|
||||
{
|
||||
_生效日期 = value;
|
||||
OnPropertyChanged("生效日期");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 起站
|
||||
///</summary>
|
||||
[DataObjectField(false, false, false, 20)]
|
||||
public string 起站
|
||||
{
|
||||
get
|
||||
{
|
||||
return _起站;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _起站)
|
||||
{
|
||||
_起站 = value;
|
||||
OnPropertyChanged("起站");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 迄站
|
||||
///</summary>
|
||||
[DataObjectField(false, false, false, 20)]
|
||||
public string 迄站
|
||||
{
|
||||
get
|
||||
{
|
||||
return _迄站;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _迄站)
|
||||
{
|
||||
_迄站 = value;
|
||||
OnPropertyChanged("迄站");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 票價
|
||||
///</summary>
|
||||
[DataObjectField(false, false, false)]
|
||||
public int 票價
|
||||
{
|
||||
get
|
||||
{
|
||||
return _票價;
|
||||
}
|
||||
set
|
||||
{
|
||||
if (value != _票價)
|
||||
{
|
||||
_票價 = value;
|
||||
OnPropertyChanged("票價");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,278 @@
|
||||
//
|
||||
// 這個檔案是 火車票價 資料表的資料存取類別 檔案二
|
||||
// 您可以修改這個檔案,加入您自訂的屬性與方法
|
||||
//
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Data.Common;
|
||||
using System.Linq;
|
||||
using WebLib;
|
||||
using System.Data.SqlClient;
|
||||
|
||||
namespace Education
|
||||
{
|
||||
///<summary>
|
||||
/// 火車票價 資料存取類別
|
||||
///</summary>
|
||||
public partial class DAC_火車票價 : WebLib.DAC
|
||||
{
|
||||
#region 自動產生的資料存取方法
|
||||
///<summary>
|
||||
/// InsertOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查或是自動編號等動作
|
||||
/// 回傳 false 會打斷 InsertOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeInsertOne(火車票價Item value)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// InsertOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterInsertOne(火車票價Item value)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// InsertOne 發生錯誤時會執行此方法
|
||||
///</summary>
|
||||
///<param name="handled">錯誤是否已經處理妥當</param>
|
||||
protected virtual void OnInsertOneError(Exception error, out bool handled)
|
||||
{
|
||||
handled = false;
|
||||
}
|
||||
///<summary>
|
||||
/// UpdateOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查
|
||||
/// 回傳 false 會打斷 UpdateOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeUpdateOne(火車票價Item value)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// UpdateOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查
|
||||
/// 回傳 false 會打斷 UpdateOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeUpdateOne(火車票價Item value, 火車票價Item original_value)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// UpdateOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterUpdateOne(火車票價Item value)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// UpdateOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterUpdateOne(火車票價Item value, 火車票價Item original_value)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// UpdateOne 發生錯誤時會執行此方法
|
||||
///</summary>
|
||||
///<param name="handled">錯誤是否已經處理妥當</param>
|
||||
protected virtual void OnUpdateOneError(Exception error, out bool handled)
|
||||
{
|
||||
handled = false;
|
||||
}
|
||||
///<summary>
|
||||
/// DeleteOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查
|
||||
/// 回傳 false 會打斷 DeleteOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeDeleteOne(火車票價Item value)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterDeleteOne(火車票價Item value)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查
|
||||
/// 回傳 false 會打斷 DeleteOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeDeleteOne(int 編號, int DB_APPNO)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterDeleteOne(int 編號, int DB_APPNO)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 發生錯誤時會執行此方法
|
||||
///</summary>
|
||||
///<param name="handled">錯誤是否已經處理妥當</param>
|
||||
protected virtual void OnDeleteOneError(Exception error, out bool handled)
|
||||
{
|
||||
handled = false;
|
||||
}
|
||||
#endregion
|
||||
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
|
||||
public NameValueList 查詢版本號List()
|
||||
{
|
||||
NameValueList result = new NameValueList();
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
|
||||
// SQL 查詢:取得所有不同的版本、生效日期、以及該版本最後的建檔和修改日期
|
||||
cmdSelect.CommandText = $@"
|
||||
select
|
||||
版本號,
|
||||
max(生效日期) as 生效日期,
|
||||
max(DB_CRDAT) as 建檔日期,
|
||||
max(DB_TRDAT) as 修改日期
|
||||
from {_tableName}
|
||||
group by 版本號
|
||||
order by 版本號 desc";
|
||||
|
||||
var dt = Select(cmdSelect);
|
||||
foreach (DataRow row in dt.Rows)
|
||||
{
|
||||
int versionId = DAC.GetInt32(row["版本號"]);
|
||||
DateTime effectiveDate = DAC.GetDateTime(row["生效日期"]);
|
||||
|
||||
// 取得修改日期,如果沒有則使用建檔日期
|
||||
DateTime modifyDate = row["修改日期"] != DBNull.Value
|
||||
? DAC.GetDateTime(row["修改日期"])
|
||||
: DAC.GetDateTime(row["建檔日期"]);
|
||||
|
||||
string displayText = $"第 {versionId} 版 - 生效日期 {effectiveDate:yyyy-MM-dd} - 修改時間 {modifyDate:yyyy-MM-dd HH:mm:ss}";
|
||||
result.Add(displayText, versionId.ToString());
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public int 查詢版本號(DateTime? date)
|
||||
{
|
||||
if (!date.HasValue)
|
||||
{
|
||||
date = PublicVariable.TaiwanNow;
|
||||
}
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = $"select top 1 版本號 from {_tableName} where 生效日期 < @生效日期 order by 生效日期 desc";
|
||||
AddParam(cmdSelect, "生效日期", date.Value);
|
||||
if (ExecuteScalar<int>(cmdSelect, out int value))
|
||||
{
|
||||
return value;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
public NameValueList 查詢起站(string key)
|
||||
{
|
||||
var 版本號 = 查詢版本號(null);
|
||||
|
||||
NameValueList result = new NameValueList();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
var sql = $"select distinct 起站 Name, 起站 Value from {_tableName} where 版本號=@版本號 ";
|
||||
if (!string.IsNullOrEmpty(key))
|
||||
{
|
||||
sql += " and 起站 like @起站 ";
|
||||
AddParam(cmdSelect, "起站", $"%{key}%");
|
||||
}
|
||||
AddParam(cmdSelect, "版本號", 版本號);
|
||||
cmdSelect.CommandText = sql + " order by 起站";
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
public NameValueList 查詢迄站(string key)
|
||||
{
|
||||
var 版本號 = 查詢版本號(null);
|
||||
|
||||
NameValueList result = new NameValueList();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
var sql = $"select distinct 迄站 Name, 迄站 Value from {_tableName} where 版本號=@版本號 ";
|
||||
if (!string.IsNullOrEmpty(key))
|
||||
{
|
||||
sql += " and 迄站 like @迄站 ";
|
||||
AddParam(cmdSelect, "迄站", $"%{key}%");
|
||||
}
|
||||
AddParam(cmdSelect, "版本號", 版本號);
|
||||
cmdSelect.CommandText = sql + " order by 迄站";
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
|
||||
public int 查詢票價(string 起站, string 迄站)
|
||||
{
|
||||
var 版本號 = 查詢版本號(null);
|
||||
|
||||
DbCommand cmdSelect = NewCommand($"select 票價 from {_tableName} where 版本號=@版本號 and 起站=@起站 and 迄站=@迄站");
|
||||
AddParam(cmdSelect, "版本號", 版本號);
|
||||
AddParam(cmdSelect, "起站", 起站);
|
||||
AddParam(cmdSelect, "迄站", 迄站);
|
||||
if (ExecuteScalar<int>(cmdSelect, out int value))
|
||||
{
|
||||
return value;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 給查詢畫面用的 Select 方法
|
||||
///</summary>
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public 火車票價List 查詢票價表(int? 版本號)
|
||||
{
|
||||
火車票價List result = new 火車票價List();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText =
|
||||
@"select A.*, B.站碼 起站站碼, C.站碼 迄站站碼
|
||||
from 火車票價 A
|
||||
join 火車站 B on A.起站=B.站名
|
||||
join 火車站 C on A.迄站=C.站名
|
||||
where A.版本號=@版本號
|
||||
order by 起站站碼, 迄站站碼";
|
||||
AddParam(cmdSelect, "版本號", 版本號);
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
///火車票價 資料集合類別
|
||||
///</summary>
|
||||
public partial class 火車票價List : List<火車票價Item>
|
||||
{
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
}
|
||||
|
||||
///<summary>
|
||||
///火車票價 資料紀錄類別
|
||||
///</summary>
|
||||
public partial class 火車票價Item
|
||||
{
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
public string 起站站碼 { get; set; }
|
||||
public string 迄站站碼 { get; set; }
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,209 @@
|
||||
//
|
||||
// 這個檔案是 非講師 資料表的資料存取類別 檔案二
|
||||
// 您可以修改這個檔案,加入您自訂的屬性與方法
|
||||
//
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Text;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Data.Common;
|
||||
using System.Linq;
|
||||
using WebLib;
|
||||
using System.Data.SqlClient;
|
||||
|
||||
namespace Education
|
||||
{
|
||||
///<summary>
|
||||
/// 非講師 資料存取類別
|
||||
///</summary>
|
||||
public partial class DAC_非講師 : WebLib.DAC
|
||||
{
|
||||
#region 自動產生的資料存取方法
|
||||
///<summary>
|
||||
/// InsertOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查或是自動編號等動作
|
||||
/// 回傳 false 會打斷 InsertOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeInsertOne(非講師Item value)
|
||||
{
|
||||
value.編號 = Next單號(DateTime.UtcNow.AddHours(8).Date, _tableName, "編號", "\"P\"<9999>", "");
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// InsertOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterInsertOne(非講師Item value)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// InsertOne 發生錯誤時會執行此方法
|
||||
///</summary>
|
||||
///<param name="handled">錯誤是否已經處理妥當</param>
|
||||
protected virtual void OnInsertOneError(Exception error, out bool handled)
|
||||
{
|
||||
handled = false;
|
||||
}
|
||||
///<summary>
|
||||
/// UpdateOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查
|
||||
/// 回傳 false 會打斷 UpdateOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeUpdateOne(非講師Item value)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// UpdateOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查
|
||||
/// 回傳 false 會打斷 UpdateOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeUpdateOne(非講師Item value, 非講師Item original_value)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// UpdateOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterUpdateOne(非講師Item value)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// UpdateOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterUpdateOne(非講師Item value, 非講師Item original_value)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// UpdateOne 發生錯誤時會執行此方法
|
||||
///</summary>
|
||||
///<param name="handled">錯誤是否已經處理妥當</param>
|
||||
protected virtual void OnUpdateOneError(Exception error, out bool handled)
|
||||
{
|
||||
handled = false;
|
||||
}
|
||||
///<summary>
|
||||
/// DeleteOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查
|
||||
/// 回傳 false 會打斷 DeleteOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeDeleteOne(非講師Item value)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterDeleteOne(非講師Item value)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查
|
||||
/// 回傳 false 會打斷 DeleteOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeDeleteOne(string 編號, int DB_APPNO)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterDeleteOne(string 編號, int DB_APPNO)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 發生錯誤時會執行此方法
|
||||
///</summary>
|
||||
///<param name="handled">錯誤是否已經處理妥當</param>
|
||||
protected virtual void OnDeleteOneError(Exception error, out bool handled)
|
||||
{
|
||||
handled = false;
|
||||
}
|
||||
|
||||
#endregion
|
||||
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
internal bool Is身份證字號Dulicate(string 編號, string 身分證字號)
|
||||
{
|
||||
DbCommand cmd = NewCommand(
|
||||
@"SELECT COUNT(1) FROM 非講師 WHERE 編號<>@講師編號 AND 身分證字號=@身分證字號");
|
||||
AddParam(cmd, "講師編號", 編號);
|
||||
AddParam(cmd, "身分證字號", 身分證字號);
|
||||
int i;
|
||||
ExecuteScalar(cmd, out i);
|
||||
return i > 0;
|
||||
}
|
||||
|
||||
public 非講師Item Existing(string 姓名, string 身分證字號)
|
||||
{
|
||||
非講師List result = new 非講師List();
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = _select + _from + _where
|
||||
+ " and 姓名=@姓名 and 身分證字號=@身分證字號 ";
|
||||
AddParam(cmdSelect, "姓名", 姓名);
|
||||
AddParam(cmdSelect, "身分證字號", 身分證字號);
|
||||
Select(cmdSelect, ref list);
|
||||
return result.FirstOrDefault();
|
||||
}
|
||||
public 非講師List SelectByKeyword(string keyword)
|
||||
{
|
||||
非講師List result = new 非講師List();
|
||||
keyword = !string.IsNullOrEmpty(keyword) ? keyword.Trim() : string.Empty;
|
||||
if (string.IsNullOrEmpty(keyword))
|
||||
return result;
|
||||
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
cmdSelect.CommandText = _select + _from + _where
|
||||
+ " and (姓名 like @keyword or 身分證字號 like @keyword) "
|
||||
+ _order;
|
||||
AddParam(cmdSelect, "keyword", "%" + keyword + "%");
|
||||
Select(cmdSelect, ref list);
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
///非講師 資料集合類別
|
||||
///</summary>
|
||||
public partial class 非講師List : List<非講師Item>
|
||||
{
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
}
|
||||
|
||||
///<summary>
|
||||
///非講師 資料紀錄類別
|
||||
///</summary>
|
||||
public partial class 非講師Item
|
||||
{
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
|
||||
public string 戶籍地址
|
||||
{
|
||||
get
|
||||
{
|
||||
return string.Format("{0}{1}{2}{3}", 戶籍地址_郵編, 戶籍地址_縣市, 戶籍地址_鄉鎮市區, 戶籍地址_街道地址);
|
||||
}
|
||||
}
|
||||
|
||||
public string 居住地址
|
||||
{
|
||||
get
|
||||
{
|
||||
return string.Format("{0}{1}{2}{3}", 居住地址_郵編, 居住地址_縣市, 居住地址_鄉鎮市區, 居住地址_街道地址);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,669 @@
|
||||
//
|
||||
// 這個檔案是 領據 資料表的資料存取類別 檔案二
|
||||
// 您可以修改這個檔案,加入您自訂的屬性與方法
|
||||
//
|
||||
using Education;
|
||||
using Education.Services;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.ComponentModel;
|
||||
using System.Data;
|
||||
using System.Data.Common;
|
||||
using System.Data.SqlClient;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using WebLib;
|
||||
|
||||
namespace Education
|
||||
{
|
||||
///<summary>
|
||||
/// 領據 資料存取類別
|
||||
///</summary>
|
||||
public partial class DAC_領據 : WebLib.DAC
|
||||
{
|
||||
#region 自動產生的資料存取方法
|
||||
///<summary>
|
||||
/// InsertOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查或是自動編號等動作
|
||||
/// 回傳 false 會打斷 InsertOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeInsertOne(領據Item value)
|
||||
{
|
||||
value.列印次數 = 0;
|
||||
value.作廢 = 0;
|
||||
if (string.IsNullOrEmpty(value.表單編號))
|
||||
{
|
||||
value.表單編號 = Next單號(value.活動日期, _tableName, "表單編號", "YYYYMMDD<9999>", "");
|
||||
}
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// InsertOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterInsertOne(領據Item value)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// InsertOne 發生錯誤時會執行此方法
|
||||
///</summary>
|
||||
///<param name="handled">錯誤是否已經處理妥當</param>
|
||||
protected virtual void OnInsertOneError(Exception error, out bool handled)
|
||||
{
|
||||
handled = false;
|
||||
}
|
||||
///<summary>
|
||||
/// UpdateOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查
|
||||
/// 回傳 false 會打斷 UpdateOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeUpdateOne(領據Item value)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// UpdateOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查
|
||||
/// 回傳 false 會打斷 UpdateOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeUpdateOne(領據Item value, 領據Item original_value)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// UpdateOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterUpdateOne(領據Item value)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// UpdateOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterUpdateOne(領據Item value, 領據Item original_value)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// UpdateOne 發生錯誤時會執行此方法
|
||||
///</summary>
|
||||
///<param name="handled">錯誤是否已經處理妥當</param>
|
||||
protected virtual void OnUpdateOneError(Exception error, out bool handled)
|
||||
{
|
||||
handled = false;
|
||||
}
|
||||
///<summary>
|
||||
/// DeleteOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查
|
||||
/// 回傳 false 會打斷 DeleteOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeDeleteOne(領據Item value)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterDeleteOne(領據Item value)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 之前會執行此方法
|
||||
/// 在這裡可以做一些檢查
|
||||
/// 回傳 false 會打斷 DeleteOne 的執行
|
||||
///</summary>
|
||||
protected virtual bool BeforeDeleteOne(int 編號, int DB_APPNO)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 之後會執行此方法
|
||||
///</summary>
|
||||
protected virtual void AfterDeleteOne(int 編號, int DB_APPNO)
|
||||
{
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// DeleteOne 發生錯誤時會執行此方法
|
||||
///</summary>
|
||||
///<param name="handled">錯誤是否已經處理妥當</param>
|
||||
protected virtual void OnDeleteOneError(Exception error, out bool handled)
|
||||
{
|
||||
handled = false;
|
||||
}
|
||||
#endregion
|
||||
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
|
||||
///<summary>
|
||||
/// 計算資料庫中符合重複條件的筆數
|
||||
/// 重複條件:活動日期 + 領款人姓名 + 計畫代號 + 活動名稱事由
|
||||
///</summary>
|
||||
public int CountDuplicates(DateTime 活動日期, string 領款人姓名, string 計畫代號, string 活動名稱事由)
|
||||
{
|
||||
DbCommand cmd = NewCommand();
|
||||
cmd.CommandText = "select count(1) from [領據] where 活動日期 = @活動日期 and 領款人姓名 = @領款人姓名 and 計畫代號 = @計畫代號 and ISNULL(活動名稱事由,'') = @活動名稱事由";
|
||||
AddParam(cmd, "活動日期", 活動日期);
|
||||
AddParam(cmd, "領款人姓名", 領款人姓名 ?? "");
|
||||
AddParam(cmd, "計畫代號", 計畫代號 ?? "");
|
||||
AddParam(cmd, "活動名稱事由", 活動名稱事由 ?? "");
|
||||
int count;
|
||||
ExecuteScalar(cmd, out count);
|
||||
return count;
|
||||
}
|
||||
|
||||
///<summary>
|
||||
/// 給查詢畫面用的 SelectPage 方法
|
||||
///</summary>
|
||||
[DataObjectMethod(DataObjectMethodType.Select)]
|
||||
public 領據List SelectPageWithRelations(bool noInputReturnAll, int startRowIndex, int maximumRows, DateTime? 活動日期_1, DateTime? 活動日期_2, string 身分別, string 講師_非講師編號, string 憑證類別, string 計畫代號, string 計畫名稱, string 活動類別, string 付款方式, string 領款人姓名 = null, string orderBy = "")
|
||||
{
|
||||
領據List result = new 領據List();
|
||||
bool noInput = true;
|
||||
IDataList list = result as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
|
||||
cmdSelect.CommandText =
|
||||
String.Format("select top {0} * from (", maximumRows)
|
||||
+ "select " + _allFields
|
||||
+ ", row_number() over (order by " + (orderBy == null || orderBy.Length == 0 ? _orderBy : orderBy) + ") as rowid "
|
||||
+ _from + _where;
|
||||
AddWhere(cmdSelect, ref noInput, 活動日期_1, 活動日期_2, 身分別, 講師_非講師編號, 憑證類別, 計畫代號, 計畫名稱, 活動類別, 付款方式, 領款人姓名);
|
||||
cmdSelect.CommandText += ") as TMP1 where rowid > @startRowIndex ";
|
||||
AddParam(cmdSelect, "startRowIndex", startRowIndex);
|
||||
|
||||
if (!noInputReturnAll && noInput)
|
||||
return result;
|
||||
|
||||
Select(cmdSelect, ref list);
|
||||
|
||||
var dao_勞務費 = new DAC_勞務費(conn);
|
||||
var dao_差旅費 = new DAC_差旅費(conn);
|
||||
var dao_BPSN = new DAC_BPSN(conn);
|
||||
|
||||
result.ForEach(item =>
|
||||
{
|
||||
item.DB_CRUSR_NAME = dao_BPSN.Get員工姓名(item.DB_CRUSR);
|
||||
item.DB_TRUSR_NAME = dao_BPSN.Get員工姓名(item.DB_TRUSR);
|
||||
|
||||
var 勞務費 = dao_勞務費.SelectOne(item.編號).FirstOrDefault();
|
||||
var 差旅費 = dao_差旅費.SelectOne(item.編號).FirstOrDefault();
|
||||
|
||||
if (勞務費 != null)
|
||||
{
|
||||
item.勞務費_編號 = 勞務費.編號;
|
||||
item.勞務費_費用別 = 勞務費.費用別;
|
||||
item.勞務費_單價 = 勞務費.單價;
|
||||
item.勞務費_數量 = 勞務費.數量;
|
||||
item.勞務費_單位 = 勞務費.單位;
|
||||
item.勞務費_扣繳類別 = 勞務費.扣繳類別;
|
||||
item.勞務費_扣繳類別名稱 = 扣繳類別.GetName(勞務費.扣繳類別);
|
||||
item.勞務費_合計金額 = 勞務費.合計金額;
|
||||
item.勞務費_應扣繳稅額 = 勞務費.應扣繳稅額;
|
||||
item.勞務費_服務費 = 勞務費.服務費;
|
||||
item.勞務費_作廢 = 勞務費.作廢;
|
||||
}
|
||||
else
|
||||
{
|
||||
item.勞務費_編號 = string.Empty;
|
||||
item.勞務費_費用別 = string.Empty;
|
||||
item.勞務費_單價 = 0;
|
||||
item.勞務費_數量 = 0;
|
||||
item.勞務費_單位 = string.Empty;
|
||||
item.勞務費_扣繳類別 = string.Empty;
|
||||
item.勞務費_扣繳類別名稱 = string.Empty;
|
||||
item.勞務費_合計金額 = 0;
|
||||
item.勞務費_應扣繳稅額 = 0;
|
||||
item.勞務費_服務費 = 0;
|
||||
item.勞務費_作廢 = 0;
|
||||
}
|
||||
|
||||
if (差旅費 != null)
|
||||
{
|
||||
item.差旅費_編號 = 差旅費.編號;
|
||||
item.差旅費_票價資訊 = 差旅費.票價資訊;
|
||||
item.差旅費_費用別 = 差旅費.費用別;
|
||||
item.差旅費_起點 = 差旅費.起點;
|
||||
item.差旅費_訖點 = 差旅費.訖點;
|
||||
item.差旅費_捷運公車 = 差旅費.捷運公車;
|
||||
item.差旅費_火車 = 差旅費.火車;
|
||||
item.差旅費_計程車 = 差旅費.計程車;
|
||||
item.差旅費_高鐵飛機 = 差旅費.高鐵飛機;
|
||||
item.差旅費_自行開車 = 差旅費.自行開車;
|
||||
item.差旅費_過路費停車費 = 差旅費.過路費停車費;
|
||||
item.差旅費_住宿費 = 差旅費.住宿費;
|
||||
item.差旅費_合計 = 差旅費.合計;
|
||||
item.差旅費_作廢 = 差旅費.作廢;
|
||||
}
|
||||
else
|
||||
{
|
||||
item.差旅費_編號 = string.Empty;
|
||||
item.差旅費_票價資訊 = string.Empty;
|
||||
item.差旅費_費用別 = string.Empty;
|
||||
item.差旅費_起點 = string.Empty;
|
||||
item.差旅費_訖點 = string.Empty;
|
||||
item.差旅費_捷運公車 = 0;
|
||||
item.差旅費_火車 = 0;
|
||||
item.差旅費_計程車 = 0;
|
||||
item.差旅費_高鐵飛機 = 0;
|
||||
item.差旅費_自行開車 = 0;
|
||||
item.差旅費_過路費停車費 = 0;
|
||||
item.差旅費_住宿費 = 0;
|
||||
item.差旅費_合計 = 0;
|
||||
item.差旅費_作廢 = 0;
|
||||
}
|
||||
});
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
public 個人費用彙整表List SelectSummary(bool noInputReturnAll, int startRowIndex, int maximumRows, DateTime? 起日, DateTime? 迄日, string 身分別, string 付款方式)
|
||||
{
|
||||
個人費用彙整表List tempData = new 個人費用彙整表List();
|
||||
bool noInput = true;
|
||||
IDataList list = tempData as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
|
||||
// 取出明細資料
|
||||
cmdSelect.CommandText = String.Format("select top {0} * from (", maximumRows)
|
||||
+ @"select A.講師_非講師編號, A.領款人姓名, A.活動日期, A.身分證字號, 1 堂數
|
||||
, ISNULL(B.合計金額, 0) - ISNULL(B.應扣繳稅額, 0) - ISNULL(B.服務費, 0) + ISNULL(C.合計, 0) 付款金額
|
||||
, row_number() over (order by A.領款人姓名) as rowid
|
||||
from 領據 A
|
||||
left join 勞務費 B on A.編號 = B.領據編號 and B.編號 is not NULL and B.編號 <> ''
|
||||
left join 差旅費 C on A.編號 = C.領據編號 and C.編號 is not NULL and C.編號 <> ''
|
||||
where 1=1
|
||||
";
|
||||
|
||||
AddWhere(cmdSelect, ref noInput, 起日, 迄日, 身分別, null, null, null, null, null, 付款方式);
|
||||
cmdSelect.CommandText += ") as TMP1 where 付款金額 > 0 and rowid > @startRowIndex ";
|
||||
AddParam(cmdSelect, "startRowIndex", startRowIndex);
|
||||
|
||||
if (!noInputReturnAll && noInput)
|
||||
return tempData;
|
||||
|
||||
Select(cmdSelect, ref list);
|
||||
|
||||
var dao付款設定 = new DAC_付款設定(conn);
|
||||
foreach (var r in tempData)
|
||||
{
|
||||
// 加入付款設定資料
|
||||
var paymentSetting = dao付款設定.SelectRecentlyActivated(r.講師_非講師編號, r.活動日期);
|
||||
if (paymentSetting != null)
|
||||
{
|
||||
r.扣繳類別 = 扣繳類別.GetActuralValue(paymentSetting.扣繳類別);
|
||||
r.扣繳類別名稱 = 扣繳類別.GetName(paymentSetting.扣繳類別);
|
||||
r.帳戶名 = paymentSetting.匯款戶名;
|
||||
r.匯款帳號 = paymentSetting.匯款帳號;
|
||||
r.銀行分行代碼 = paymentSetting.銀行分行代碼;
|
||||
r.銀行分行 = paymentSetting.銀行分行;
|
||||
}
|
||||
}
|
||||
|
||||
// 彙整
|
||||
// 這裡要用領款人姓名 + 身分證字號 + 扣繳類別 + 帳戶名 + 匯款帳號 + 銀行分行代碼 來彙總
|
||||
// 加總堂數 和 付款金額
|
||||
個人費用彙整表List result = new 個人費用彙整表List();
|
||||
|
||||
// 按照 (領款人姓名、身分證字號、扣繳類別、帳戶名、匯款帳號、銀行分行代碼) 分組彙總
|
||||
var groupedData = tempData.GroupBy(x => new
|
||||
{
|
||||
x.領款人姓名,
|
||||
x.身分證字號,
|
||||
x.扣繳類別,
|
||||
x.扣繳類別名稱,
|
||||
x.帳戶名,
|
||||
x.匯款帳號,
|
||||
x.銀行分行代碼,
|
||||
x.銀行分行
|
||||
});
|
||||
|
||||
foreach (var group in groupedData)
|
||||
{
|
||||
var summaryItem = new 個人費用彙整表Item
|
||||
{
|
||||
領款人姓名 = group.Key.領款人姓名,
|
||||
身分證字號 = group.Key.身分證字號,
|
||||
扣繳類別 = group.Key.扣繳類別,
|
||||
扣繳類別名稱 = group.Key.扣繳類別名稱,
|
||||
帳戶名 = group.Key.帳戶名,
|
||||
匯款帳號 = group.Key.匯款帳號,
|
||||
銀行分行代碼 = group.Key.銀行分行代碼,
|
||||
銀行分行 = group.Key.銀行分行,
|
||||
// 堂數是數量,加總所有同組的數量
|
||||
堂數 = group.Sum(x => x.堂數),
|
||||
// 付款金額直接加總
|
||||
付款金額 = group.Sum(x => x.付款金額)
|
||||
};
|
||||
result.Add(summaryItem);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
|
||||
public List<扣繳匯總Item> SelectDetail(bool noInputReturnAll, int startRowIndex, int maximumRows,
|
||||
DateTime? 起日, DateTime? 迄日, string 身分別, string 憑證類別)
|
||||
{
|
||||
DAC_講師 dao講師 = new DAC_講師(this.conn);
|
||||
DAC_非講師 dao非講師 = new DAC_非講師(this.conn);
|
||||
|
||||
扣繳明細List tempData = new 扣繳明細List();
|
||||
bool noInput = true;
|
||||
IDataList list = tempData as IDataList;
|
||||
DbCommand cmdSelect = NewCommand();
|
||||
|
||||
// 取出明細資料
|
||||
cmdSelect.CommandText = String.Format("select top {0} * from (", maximumRows)
|
||||
+ @"select A.編號, A.講師_非講師編號, A.領款人姓名, A.身分證字號, A.身分別, A.郵件已發送
|
||||
, ISNULL(B.合計金額, 0) - ISNULL(B.應扣繳稅額, 0) - ISNULL(B.服務費, 0) 講師勞務費
|
||||
, ISNULL(B.應扣繳稅額, 0) 應扣繳稅額
|
||||
, ISNULL(B.服務費, 0) 服務費
|
||||
, B.扣繳類別
|
||||
, A.計畫代號
|
||||
, CONVERT(varchar(10), A.活動日期, 121) 活動日期
|
||||
, A.活動名稱事由
|
||||
, A.憑證類別
|
||||
, B.編號 領據編號
|
||||
, B.費用別
|
||||
, B.單價
|
||||
, B.數量
|
||||
, B.單位
|
||||
, row_number() over (order by A.領款人姓名) as rowid
|
||||
from 領據 A
|
||||
join 勞務費 B on A.編號 = B.領據編號 and B.編號 is not NULL and B.編號 <> ''
|
||||
where 1=1";
|
||||
|
||||
List<WhereItem> wheres = new List<WhereItem>();
|
||||
if (起日 != null && 迄日 != null)
|
||||
{
|
||||
noInput = false;
|
||||
wheres.Add(WhereItem.GreatThanOrEqual(fieldName: "A.活動日期", value: 起日));
|
||||
wheres.Add(WhereItem.LessThan(fieldName: "A.活動日期", value: 迄日.Value.AddDays(1)));
|
||||
}
|
||||
else if (起日 != null && 迄日 == null)
|
||||
{
|
||||
noInput = false;
|
||||
wheres.Add(WhereItem.GreatThanOrEqual(fieldName: "A.活動日期", value: 起日));
|
||||
}
|
||||
else if (起日 == null && 迄日 != null)
|
||||
{
|
||||
noInput = false;
|
||||
wheres.Add(WhereItem.LessThan(fieldName: "A.活動日期", value: 迄日.Value.AddDays(1)));
|
||||
}
|
||||
if (身分別 != null && 身分別.Length > 0)
|
||||
{
|
||||
noInput = false;
|
||||
wheres.Add(WhereItem.Equal(fieldName: "A.身分別", value: 身分別));
|
||||
}
|
||||
if (憑證類別 != null && 憑證類別.Length > 0)
|
||||
{
|
||||
noInput = false;
|
||||
wheres.Add(WhereItem.Equal(fieldName: "A.憑證類別", value: 憑證類別));
|
||||
}
|
||||
AddWhere(cmdSelect, wheres);
|
||||
cmdSelect.CommandText += ") as TMP1 where rowid > @startRowIndex ";
|
||||
AddParam(cmdSelect, "startRowIndex", startRowIndex);
|
||||
|
||||
if (!noInputReturnAll && noInput)
|
||||
return new List<扣繳匯總Item>();
|
||||
|
||||
Select(cmdSelect, ref list);
|
||||
|
||||
// 加入付款設定資料
|
||||
var dao付款設定 = new DAC_付款設定(conn);
|
||||
foreach (var r in tempData)
|
||||
{
|
||||
r.扣繳類別名稱 = 扣繳類別.GetName(r.扣繳類別);
|
||||
r.扣繳類別 = 扣繳類別.GetActuralValue(r.扣繳類別);
|
||||
}
|
||||
|
||||
// 分組彙整
|
||||
List<扣繳匯總Item> result = new List<扣繳匯總Item>();
|
||||
var groupedData = tempData.GroupBy(x => new
|
||||
{
|
||||
x.講師_非講師編號,
|
||||
x.領款人姓名,
|
||||
x.身分證字號,
|
||||
x.身分別,
|
||||
x.扣繳類別,
|
||||
x.扣繳類別名稱,
|
||||
});
|
||||
|
||||
foreach (var group in groupedData)
|
||||
{
|
||||
var 戶籍地址 = string.Empty;
|
||||
var 電子郵件 = string.Empty;
|
||||
if (group.Key.身分別 == "講師")
|
||||
{
|
||||
var t = dao講師.SelectOne(DAC.GetInt32(group.Key.講師_非講師編號)).FirstOrDefault();
|
||||
if (t != null)
|
||||
{
|
||||
戶籍地址 = string.Format("{0}{1}{2}", t.戶籍地址_縣市, t.戶籍地址_鄉鎮市區, t.戶籍地址_街道地址);
|
||||
電子郵件 = t.電子郵件;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var t = dao非講師.SelectOne(group.Key.講師_非講師編號).FirstOrDefault();
|
||||
if (t != null)
|
||||
{
|
||||
戶籍地址 = string.Format("{0}{1}{2}", t.戶籍地址_縣市, t.戶籍地址_鄉鎮市區, t.戶籍地址_街道地址);
|
||||
電子郵件 = t.電子郵件;
|
||||
}
|
||||
}
|
||||
|
||||
var summaryItem = new 扣繳匯總Item
|
||||
{
|
||||
講師_非講師編號 = group.Key.講師_非講師編號,
|
||||
領款人姓名 = group.Key.領款人姓名,
|
||||
身分證字號 = group.Key.身分證字號,
|
||||
戶籍地址 = 戶籍地址,
|
||||
電子郵件 = 電子郵件,
|
||||
扣繳類別 = group.Key.扣繳類別,
|
||||
扣繳類別名稱 = group.Key.扣繳類別名稱,
|
||||
講師勞務費合計 = group.Sum(x => x.講師勞務費),
|
||||
應扣繳稅額合計 = group.Sum(x => x.應扣繳稅額),
|
||||
服務費合計 = group.Sum(x => x.服務費)
|
||||
};
|
||||
|
||||
var i = 1;
|
||||
foreach (var detail in group.ToList())
|
||||
{
|
||||
summaryItem.明細.Add(detail);
|
||||
}
|
||||
result.Add(summaryItem);
|
||||
}
|
||||
|
||||
return result;
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
///領據 資料集合類別
|
||||
///</summary>
|
||||
public partial class 領據List : List<領據Item>
|
||||
{
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
}
|
||||
|
||||
///<summary>
|
||||
///個人費用彙整表 資料集合類別
|
||||
///</summary>
|
||||
public partial class 個人費用彙整表List : List<個人費用彙整表Item>, IDataList
|
||||
{
|
||||
public void Fill(DbDataReader reader)
|
||||
{
|
||||
DAC.FillData<個人費用彙整表Item>(reader, this);
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
///扣繳明細 資料集合類別
|
||||
///</summary>
|
||||
public partial class 扣繳明細List : List<扣繳明細Item>, IDataList
|
||||
{
|
||||
public void Fill(DbDataReader reader)
|
||||
{
|
||||
DAC.FillData<扣繳明細Item>(reader, this);
|
||||
}
|
||||
}
|
||||
|
||||
///<summary>
|
||||
///個人費用彙整表 資料紀錄類別
|
||||
///</summary>
|
||||
[Serializable]
|
||||
public partial class 個人費用彙整表Item : DataItemBase
|
||||
{
|
||||
/// <summary>講師/非講師編號 (用於內部查詢)</summary>
|
||||
public string 講師_非講師編號 { get; set; }
|
||||
|
||||
/// <summary>領款人姓名</summary>
|
||||
public string 領款人姓名 { get; set; }
|
||||
|
||||
/// <summary>活動日期 (用於查詢付款設定)</summary>
|
||||
public DateTime? 活動日期 { get; set; }
|
||||
|
||||
/// <summary>身分證字號</summary>
|
||||
public string 身分證字號 { get; set; }
|
||||
|
||||
/// <summary>堂數 (數量)</summary>
|
||||
[DataObjectField(false)]
|
||||
public int 堂數 { get; set; }
|
||||
|
||||
/// <summary>付款金額</summary>
|
||||
[DataObjectField(false)]
|
||||
public int 付款金額 { get; set; }
|
||||
|
||||
/// <summary>扣繳類別</summary>
|
||||
[DataObjectField(false)]
|
||||
public string 扣繳類別 { get; set; }
|
||||
|
||||
/// <summary>扣繳類別名稱 (顯示用)</summary>
|
||||
[DataObjectField(false)]
|
||||
public string 扣繳類別名稱 { get; set; }
|
||||
|
||||
/// <summary>帳戶名</summary>
|
||||
[DataObjectField(false)]
|
||||
public string 帳戶名 { get; set; }
|
||||
|
||||
/// <summary>匯款帳號</summary>
|
||||
[DataObjectField(false)]
|
||||
public string 匯款帳號 { get; set; }
|
||||
|
||||
/// <summary>銀行分行代碼</summary>
|
||||
[DataObjectField(false)]
|
||||
public string 銀行分行代碼 { get; set; }
|
||||
|
||||
/// <summary>銀行分行</summary>
|
||||
[DataObjectField(false)]
|
||||
public string 銀行分行 { get; set; }
|
||||
}
|
||||
|
||||
///<summary>
|
||||
///領據 資料紀錄類別
|
||||
///</summary>
|
||||
public partial class 領據Item
|
||||
{
|
||||
// 有另外加上去的屬性及方法,請加在這裡
|
||||
public bool 已關帳 { get { return string.Compare(PublicVariable.領據關帳年月, string.Format("{0:yyyy-MM}", 活動日期)) >= 0; } }
|
||||
public string DB_CRUSR_NAME { get; set; }
|
||||
public string DB_TRUSR_NAME { get; set; }
|
||||
public string 勞務費_編號 { get; set; }
|
||||
public string 勞務費_費用別 { get; set; }
|
||||
public int? 勞務費_單價 { get; set; }
|
||||
public decimal? 勞務費_數量 { get; set; }
|
||||
public string 勞務費_單位 { get; set; }
|
||||
public string 勞務費_扣繳類別 { get; set; }
|
||||
public string 勞務費_扣繳類別名稱 { get; set; }
|
||||
public int? 勞務費_合計金額 { get; set; }
|
||||
public int? 勞務費_應扣繳稅額 { get; set; }
|
||||
public int? 勞務費_服務費 { get; set; }
|
||||
public int? 勞務費_作廢 { get; set; }
|
||||
public string 差旅費_編號 { get; set; }
|
||||
public string 差旅費_票價資訊 { get; set; }
|
||||
public string 差旅費_費用別 { get; set; }
|
||||
public string 差旅費_起點 { get; set; }
|
||||
public string 差旅費_訖點 { get; set; }
|
||||
public int? 差旅費_捷運公車 { get; set; }
|
||||
public int? 差旅費_火車 { get; set; }
|
||||
public int? 差旅費_計程車 { get; set; }
|
||||
public int? 差旅費_高鐵飛機 { get; set; }
|
||||
public int? 差旅費_自行開車 { get; set; }
|
||||
public int? 差旅費_過路費停車費 { get; set; }
|
||||
public int? 差旅費_住宿費 { get; set; }
|
||||
public int? 差旅費_合計 { get; set; }
|
||||
public int? 差旅費_作廢 { get; set; }
|
||||
}
|
||||
|
||||
///<summary>
|
||||
///扣繳明細 資料紀錄類別
|
||||
///</summary>
|
||||
[Serializable]
|
||||
public partial class 扣繳匯總Item : DataItemBase
|
||||
{
|
||||
public string 講師_非講師編號 { get; set; }
|
||||
public string 領款人姓名 { get; set; }
|
||||
public string 身分證字號 { get; set; }
|
||||
public string 戶籍地址 { get; set; }
|
||||
public string 電子郵件 { get; set; }
|
||||
public string 扣繳類別 { get; set; }
|
||||
public string 扣繳類別名稱 { get; set; }
|
||||
public int 應扣繳稅額合計 { get; set; }
|
||||
public int 服務費合計 { get; set; }
|
||||
public int 講師勞務費合計 { get; set; }
|
||||
public List<扣繳明細Item> 明細 { get; set; }
|
||||
public 扣繳匯總Item()
|
||||
{
|
||||
明細 = new List<扣繳明細Item>();
|
||||
}
|
||||
}
|
||||
|
||||
public partial class 扣繳匯總郵件Item : DataItemBase
|
||||
{
|
||||
public string 收件人姓名 { get; set; }
|
||||
public string 收件人郵箱 { get; set; }
|
||||
public string 主旨 { get; set; }
|
||||
public string 內文 { get; set; }
|
||||
public List<扣繳明細Item> 明細 { get; set; }
|
||||
public int 講師勞務費合計 { get; set; }
|
||||
public int 應扣繳稅額合計 { get; set; }
|
||||
public int 服務費合計 { get; set; }
|
||||
public 扣繳匯總郵件Item()
|
||||
{
|
||||
明細 = new List<扣繳明細Item>();
|
||||
}
|
||||
}
|
||||
|
||||
public class 扣繳明細Item : DataItemBase
|
||||
{
|
||||
public int 編號 { get; set; }
|
||||
public string 講師_非講師編號 { get; set; }
|
||||
public string 領款人姓名 { get; set; }
|
||||
public string 身分證字號 { get; set; }
|
||||
public string 身分別 { get; set; }
|
||||
public string 戶籍地址 { get; set; }
|
||||
public string 電子郵件 { get; set; }
|
||||
public string 活動日期 { get; set; }
|
||||
public string 計畫代號 { get; set; }
|
||||
public string 活動名稱事由 { get; set; }
|
||||
public string 扣繳類別 { get; set; }
|
||||
public string 扣繳類別名稱 { get; set; }
|
||||
public string 憑證類別 { get; set; }
|
||||
public string 領據編號 { get; set; }
|
||||
public string 費用別 { get; set; }
|
||||
public int 單價 { get; set; }
|
||||
public decimal 數量 { get; set; }
|
||||
public string 單位 { get; set; }
|
||||
public int 講師勞務費 { get; set; }
|
||||
public int 應扣繳稅額 { get; set; }
|
||||
public int 服務費 { get; set; }
|
||||
public string 郵件已發送 { get; set; }
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
using WebLib;
|
||||
|
||||
namespace Education
|
||||
{
|
||||
public class 付款方式
|
||||
{
|
||||
public const string 付款方式_匯款 = "匯款";
|
||||
public const string 付款方式_支票 = "支票";
|
||||
public const string 付款方式_現金 = "現金";
|
||||
|
||||
///<summary>
|
||||
/// 身分別 輸入用下拉清單資料
|
||||
///</summary>
|
||||
public static NameValueList InputSelectList = new NameValueList()
|
||||
{
|
||||
{ "(請選擇)", "" },
|
||||
{ "匯款", 付款方式_匯款 },
|
||||
{ "支票", 付款方式_支票 },
|
||||
{ "現金", 付款方式_現金 },
|
||||
};
|
||||
|
||||
///<summary>
|
||||
/// 身分別 查詢用下拉清單資料
|
||||
///</summary>
|
||||
public static NameValueList SearchSelectList = new NameValueList()
|
||||
{
|
||||
{ "(全部)", "" },
|
||||
{ "匯款", 付款方式_匯款 },
|
||||
{ "支票", 付款方式_支票 },
|
||||
{ "現金", 付款方式_現金 },
|
||||
};
|
||||
|
||||
///<summary>
|
||||
/// 身分別 由值取得名稱
|
||||
///</summary>
|
||||
public static string GetName(object value)
|
||||
{
|
||||
return InputSelectList.GetName(value);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,54 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
using WebLib;
|
||||
|
||||
namespace Education
|
||||
{
|
||||
public class 單位別
|
||||
{
|
||||
public const string 單位別_節 = "節";
|
||||
public const string 單位別_時 = "時";
|
||||
public const string 單位別_天 = "天";
|
||||
public const string 單位別_場 = "場";
|
||||
public const string 單位別_式 = "式";
|
||||
public const string 單位別_千字 = "千字";
|
||||
|
||||
///<summary>
|
||||
/// 單位別 輸入用下拉清單資料
|
||||
///</summary>
|
||||
public static NameValueList InputSelectList = new NameValueList()
|
||||
{
|
||||
{ "(請選擇)", "" },
|
||||
{ "節", 單位別_節 },
|
||||
{ "時", 單位別_時 },
|
||||
{ "天", 單位別_天 },
|
||||
{ "場", 單位別_場 },
|
||||
{ "式", 單位別_式 },
|
||||
{ "千字", 單位別_千字 },
|
||||
};
|
||||
|
||||
///<summary>
|
||||
/// 單位別 查詢用下拉清單資料
|
||||
///</summary>
|
||||
public static NameValueList SearchSelectList = new NameValueList()
|
||||
{
|
||||
{ "(全部)", "" },
|
||||
{ "節", 單位別_節 },
|
||||
{ "時", 單位別_時 },
|
||||
{ "天", 單位別_天 },
|
||||
{ "場", 單位別_場 },
|
||||
{ "式", 單位別_式 },
|
||||
{ "千字", 單位別_千字 },
|
||||
};
|
||||
|
||||
///<summary>
|
||||
/// 單位別 由值取得名稱
|
||||
///</summary>
|
||||
public static string GetName(object value)
|
||||
{
|
||||
return InputSelectList.GetName(value);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,45 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
using WebLib;
|
||||
|
||||
namespace Education
|
||||
{
|
||||
public class 憑證類別
|
||||
{
|
||||
public const string 憑證類別_領據 = "領據";
|
||||
public const string 憑證類別_發票 = "發票";
|
||||
public const string 憑證類別_收據 = "收據";
|
||||
|
||||
///<summary>
|
||||
/// 付款設定.扣繳類別 輸入用下拉清單資料
|
||||
///</summary>
|
||||
public static NameValueList InputSelectList = new NameValueList()
|
||||
{
|
||||
{ "(請選擇)", "" },
|
||||
{ "領據", 憑證類別_領據 },
|
||||
{ "發票", 憑證類別_發票 },
|
||||
{ "收據", 憑證類別_收據 },
|
||||
};
|
||||
|
||||
///<summary>
|
||||
/// 付款設定.扣繳類別 查詢用下拉清單資料
|
||||
///</summary>
|
||||
public static NameValueList SearchSelectList = new NameValueList()
|
||||
{
|
||||
{ "(全部)", "" },
|
||||
{ "領據", 憑證類別_領據 },
|
||||
{ "發票", 憑證類別_發票 },
|
||||
{ "收據", 憑證類別_收據 },
|
||||
};
|
||||
|
||||
///<summary>
|
||||
/// 付款設定.扣繳類別 由值取得名稱
|
||||
///</summary>
|
||||
public static string GetName(object value)
|
||||
{
|
||||
return InputSelectList.GetName(value);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,119 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Web;
|
||||
using WebLib;
|
||||
|
||||
namespace Education
|
||||
{
|
||||
///<summary>
|
||||
/// 付款設定.扣繳類別 下拉清單資料類別
|
||||
///</summary>
|
||||
public class 扣繳類別
|
||||
{
|
||||
public const string 扣繳類別_50薪資 = "50";
|
||||
public const string 扣繳類別_9A55執行業務所得_心理師 = "9A55";
|
||||
public const string 扣繳類別_9A70執行業務所得_表演人 = "9A70";
|
||||
public const string 扣繳類別_9A90執行業務所得_其他 = "9A90";
|
||||
public const string 扣繳類別_9A92執行業務所得_程式設計師 = "9A92";
|
||||
public const string 扣繳類別_9B98執行業務所得_稿費 = "9B98A";
|
||||
public const string 扣繳類別_9B98執行業務所得_演講之鐘點費 = "9B98B";
|
||||
|
||||
///<summary>
|
||||
/// 付款設定.扣繳類別 輸入用下拉清單資料
|
||||
///</summary>
|
||||
public static NameValueList InputSelectList = new NameValueList()
|
||||
{
|
||||
{ "(請選擇)", "" },
|
||||
{ "50 薪資", 扣繳類別_50薪資 },
|
||||
{ "9A-55 執行業務所得-心理師", 扣繳類別_9A55執行業務所得_心理師 },
|
||||
{ "9A-70 執行業務所得-表演人", 扣繳類別_9A70執行業務所得_表演人 },
|
||||
{ "9A-90 執行業務所得-其他", 扣繳類別_9A90執行業務所得_其他 },
|
||||
{ "9A-92 執行業務所得-程式設計師", 扣繳類別_9A92執行業務所得_程式設計師 },
|
||||
{ "9B-98 執行業務所得-稿費", 扣繳類別_9B98執行業務所得_稿費 },
|
||||
{ "9B-98 執行業務所得-演講之鐘點費", 扣繳類別_9B98執行業務所得_演講之鐘點費 }
|
||||
};
|
||||
|
||||
///<summary>
|
||||
/// 付款設定.扣繳類別 查詢用下拉清單資料
|
||||
///</summary>
|
||||
public static NameValueList SearchSelectList = new NameValueList()
|
||||
{
|
||||
{ "(全部)", "" },
|
||||
{ "50 薪資", 扣繳類別_50薪資 },
|
||||
{ "9A-55 執行業務所得-心理師", 扣繳類別_9A55執行業務所得_心理師 },
|
||||
{ "9A-70 執行業務所得-表演人", 扣繳類別_9A70執行業務所得_表演人 },
|
||||
{ "9A-90 執行業務所得-其他", 扣繳類別_9A90執行業務所得_其他 },
|
||||
{ "9A-92 執行業務所得-程式設計師", 扣繳類別_9A92執行業務所得_程式設計師 },
|
||||
{ "9B-98 執行業務所得-稿費", 扣繳類別_9B98執行業務所得_稿費 },
|
||||
{ "9B-98 執行業務所得-演講之鐘點費", 扣繳類別_9B98執行業務所得_演講之鐘點費 }
|
||||
};
|
||||
|
||||
public static NameValueList ActialValueList = new NameValueList()
|
||||
{
|
||||
{ "50", 扣繳類別_50薪資 },
|
||||
{ "9A-55", 扣繳類別_9A55執行業務所得_心理師 },
|
||||
{ "9A-70", 扣繳類別_9A70執行業務所得_表演人 },
|
||||
{ "9A-90", 扣繳類別_9A90執行業務所得_其他 },
|
||||
{ "9A-92", 扣繳類別_9A92執行業務所得_程式設計師 },
|
||||
{ "9B-98", 扣繳類別_9B98執行業務所得_稿費 },
|
||||
{ "9B-98", 扣繳類別_9B98執行業務所得_演講之鐘點費 }
|
||||
};
|
||||
|
||||
///<summary>
|
||||
/// 付款設定.扣繳類別 由值取得名稱
|
||||
///</summary>
|
||||
public static string GetName(object value)
|
||||
{
|
||||
return InputSelectList.GetName(value);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 取得真實世界的值
|
||||
/// </summary>
|
||||
/// <param name="value"></param>
|
||||
/// <returns></returns>
|
||||
public static string GetActuralValue(object value)
|
||||
{
|
||||
return ActialValueList.GetName(value);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 試圖對應出扣繳類別的欄位值
|
||||
/// </summary>
|
||||
/// <param name="v"></param>
|
||||
/// <returns></returns>
|
||||
internal static string MapValue(string v)
|
||||
{
|
||||
if (string.IsNullOrEmpty(v))
|
||||
return string.Empty;
|
||||
|
||||
var upper = v.ToUpper();
|
||||
// 取第一個由英文字母與數字(可含連字號)組成的區段,再移除連字號
|
||||
var m = Regex.Match(upper, @"[A-Z0-9]+(?:-[A-Z0-9]+)*");
|
||||
if (!m.Success)
|
||||
return string.Empty;
|
||||
|
||||
var va1 = m.Value.Replace("-", "");
|
||||
|
||||
if (va1 == 扣繳類別_50薪資
|
||||
|| va1 == 扣繳類別_9A55執行業務所得_心理師
|
||||
|| va1 == 扣繳類別_9A70執行業務所得_表演人
|
||||
|| va1 == 扣繳類別_9A90執行業務所得_其他
|
||||
|| va1 == 扣繳類別_9A92執行業務所得_程式設計師)
|
||||
{
|
||||
return va1;
|
||||
}
|
||||
else if (va1.StartsWith("9B98"))
|
||||
{
|
||||
// 從第一個符合區段之後的文字中尋找關鍵字
|
||||
var remainder = upper.Substring(m.Index + m.Length);
|
||||
if (remainder.Contains("稿")) { return 扣繳類別_9B98執行業務所得_稿費; }
|
||||
else if (remainder.Contains("演講") || remainder.Contains("鐘點")) { return 扣繳類別_9B98執行業務所得_演講之鐘點費; }
|
||||
else return string.Empty;
|
||||
}
|
||||
return string.Empty;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,98 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
using WebLib;
|
||||
|
||||
namespace Education
|
||||
{
|
||||
///<summary>
|
||||
/// 勞務費.費用別 下拉清單資料類別
|
||||
///</summary>
|
||||
public class 勞務費_費用別
|
||||
{
|
||||
public const string 講師費 = "講師費";
|
||||
public const string 諮詢費 = "諮詢費";
|
||||
public const string 工作人員費 = "工作人員費";
|
||||
public const string 勞務費 = "勞務費";
|
||||
public const string 主持人費 = "主持人費";
|
||||
public const string 出席費 = "出席費";
|
||||
public const string 演講費 = "演講費";
|
||||
public const string 撰稿費 = "撰稿費";
|
||||
|
||||
///<summary>
|
||||
/// 勞務費.費用別 輸入用下拉清單資料
|
||||
///</summary>
|
||||
public static NameValueList InputSelectList = new NameValueList()
|
||||
{
|
||||
{ "(請選擇)", "" },
|
||||
{ StringTable.GetString("講師費"), "講師費" },
|
||||
{ StringTable.GetString("諮詢費"), "諮詢費" },
|
||||
{ StringTable.GetString("工作人員費"), "工作人員費" },
|
||||
{ StringTable.GetString("勞務費"), "勞務費" },
|
||||
{ StringTable.GetString("主持人費"), "主持人費" },
|
||||
{ StringTable.GetString("出席費"), "出席費" },
|
||||
{ StringTable.GetString("演講費"), "演講費" },
|
||||
{ StringTable.GetString("撰稿費"), "撰稿費" }
|
||||
};
|
||||
|
||||
///<summary>
|
||||
/// 勞務費.費用別 查詢用下拉清單資料
|
||||
///</summary>
|
||||
public static NameValueList SearchSelectList = new NameValueList()
|
||||
{
|
||||
{ StringTable.GetString("(全部)"), "" },
|
||||
{ StringTable.GetString("講師費"), "講師費" },
|
||||
{ StringTable.GetString("諮詢費"), "諮詢費" },
|
||||
{ StringTable.GetString("工作人員費"), "工作人員費" },
|
||||
{ StringTable.GetString("勞務費"), "勞務費" },
|
||||
{ StringTable.GetString("主持人費"), "主持人費" },
|
||||
{ StringTable.GetString("出席費"), "出席費" },
|
||||
{ StringTable.GetString("演講費"), "演講費" },
|
||||
{ StringTable.GetString("撰稿費"), "撰稿費" }
|
||||
};
|
||||
|
||||
///<summary>
|
||||
/// 勞務費.費用別 由值取得名稱
|
||||
///</summary>
|
||||
public static string GetName(object value)
|
||||
{
|
||||
return InputSelectList.GetName(value);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
///<summary>
|
||||
/// 差旅費.費用別 下拉清單資料類別
|
||||
///</summary>
|
||||
public class 差旅費_費用別
|
||||
{
|
||||
public const string 交通住宿費 = "交通住宿費";
|
||||
|
||||
///<summary>
|
||||
/// 差旅費.費用別 輸入用下拉清單資料
|
||||
///</summary>
|
||||
public static NameValueList InputSelectList = new NameValueList()
|
||||
{
|
||||
{ "(請選擇)", "" },
|
||||
{ "交通住宿費", 交通住宿費 },
|
||||
};
|
||||
|
||||
///<summary>
|
||||
/// 差旅費.費用別 查詢用下拉清單資料
|
||||
///</summary>
|
||||
public static NameValueList SearchSelectList = new NameValueList()
|
||||
{
|
||||
{ "(全部)", "" },
|
||||
{ "交通住宿費", 交通住宿費 },
|
||||
};
|
||||
|
||||
///<summary>
|
||||
/// 差旅費.費用別 由值取得名稱
|
||||
///</summary>
|
||||
public static string GetName(object value)
|
||||
{
|
||||
return InputSelectList.GetName(value);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,42 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
using WebLib;
|
||||
|
||||
namespace Education
|
||||
{
|
||||
public class 身分別
|
||||
{
|
||||
public const string 身分別_講師 = "講師";
|
||||
public const string 身分別_非講師 = "非講師";
|
||||
|
||||
///<summary>
|
||||
/// 身分別 輸入用下拉清單資料
|
||||
///</summary>
|
||||
public static NameValueList InputSelectList = new NameValueList()
|
||||
{
|
||||
{ "(請選擇)", "" },
|
||||
{ "講師", 身分別_講師 },
|
||||
{ "非講師", 身分別_非講師 },
|
||||
};
|
||||
|
||||
///<summary>
|
||||
/// 身分別 查詢用下拉清單資料
|
||||
///</summary>
|
||||
public static NameValueList SearchSelectList = new NameValueList()
|
||||
{
|
||||
{ "(全部)", "" },
|
||||
{ "講師", 身分別_講師 },
|
||||
{ "非講師", 身分別_非講師 },
|
||||
};
|
||||
|
||||
///<summary>
|
||||
/// 身分別 由值取得名稱
|
||||
///</summary>
|
||||
public static string GetName(object value)
|
||||
{
|
||||
return InputSelectList.GetName(value);
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,147 @@
|
||||
using NPOI.SS.Formula.Functions;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Data.Common;
|
||||
using System.Linq;
|
||||
using WebLib;
|
||||
|
||||
namespace Education
|
||||
{
|
||||
/// <summary>
|
||||
/// 領據匯入驗證類別
|
||||
/// </summary>
|
||||
public class 領據匯入驗證
|
||||
{
|
||||
/// <summary>
|
||||
/// 驗證憑證類別是否有效
|
||||
/// </summary>
|
||||
public static bool IsValidProofType(string value)
|
||||
{
|
||||
if (string.IsNullOrEmpty(value))
|
||||
return false;
|
||||
|
||||
var list = new string[] { "領據", "發票", "收據" };
|
||||
return list.Contains(value);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 驗證計畫代號是否存在於 BPAA 表
|
||||
/// </summary>
|
||||
public static bool IsValidProjectCode(string planCode)
|
||||
{
|
||||
if (string.IsNullOrEmpty(planCode))
|
||||
return false;
|
||||
|
||||
try
|
||||
{
|
||||
var dac = new DAC_BPAA();
|
||||
var dataTable = dac.GetBpaaWithTYPlusNone();
|
||||
foreach (DataRow row in dataTable.Rows)
|
||||
{
|
||||
if (row["BPPYN"].ToString() == planCode)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
return false;
|
||||
}
|
||||
catch
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 驗證付款方式是否有效
|
||||
/// </summary>
|
||||
public static bool IsValidPaymentMethod(string value)
|
||||
{
|
||||
if (string.IsNullOrEmpty(value))
|
||||
return true; // 付款方式可以為空
|
||||
|
||||
var list = new string[] { "匯款", "支票", "現金" };
|
||||
return list.Contains(value);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 驗證勞務費費用別是否有效
|
||||
/// </summary>
|
||||
public static bool IsValidLaborExpenseType(string value)
|
||||
{
|
||||
if (string.IsNullOrEmpty(value))
|
||||
return true; // 勞務費費用別可以為空
|
||||
|
||||
var list = new string[] { "講師費", "諮詢費", "工作人員費", "勞務費", "主持人費", "出席費", "演講費", "撰稿費" };
|
||||
return list.Contains(value);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 驗證扣繳類別是否有效
|
||||
/// </summary>
|
||||
public static bool IsValidWithholdingCategory(string value)
|
||||
{
|
||||
if (string.IsNullOrEmpty(value))
|
||||
return true; // 扣繳類別可以為空
|
||||
|
||||
var list = new string[] { "50", "9A55", "9A70", "9A90", "9A92", "9B98A", "9B98B" };
|
||||
return list.Contains(value);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 驗證日期格式
|
||||
/// </summary>
|
||||
public static bool IsValidDate(string value)
|
||||
{
|
||||
if (string.IsNullOrEmpty(value))
|
||||
return false;
|
||||
|
||||
if (DateTime.TryParse(value, out DateTime dt))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
|
||||
// 支援 Excel OADate 數值格式(如從 Excel 讀取的序號日期)
|
||||
if (double.TryParse(value, out double d))
|
||||
{
|
||||
// OADate 有效範圍:2020-01-01(43831.0)~ 9999-12-31(2958465.0)
|
||||
if (d >= ImportBase.MinOADate && d <= ImportBase.MaxOADate)
|
||||
{
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 驗證數值格式
|
||||
/// </summary>
|
||||
public static bool IsValidDecimal(string value)
|
||||
{
|
||||
if (string.IsNullOrEmpty(value))
|
||||
return true; // 可選欄位
|
||||
|
||||
if (decimal.TryParse(value, out decimal d))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 驗證整數格式
|
||||
/// </summary>
|
||||
public static bool IsValidInt(string value)
|
||||
{
|
||||
if (string.IsNullOrEmpty(value))
|
||||
return true; // 可選欄位
|
||||
|
||||
if (int.TryParse(value, out int i))
|
||||
{
|
||||
return true;
|
||||
}
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -0,0 +1,41 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Web;
|
||||
using WebLib;
|
||||
|
||||
namespace Education
|
||||
{
|
||||
public class 領據匯出Item : DataItemBase
|
||||
{
|
||||
public string 表單編號 { get; set; }
|
||||
public DateTime 活動日期 { get; set; }
|
||||
public string 身分別 { get; set; }
|
||||
public string 領款人姓名 { get; set; }
|
||||
public string 身分證字號 { get; set; }
|
||||
public string 憑證類別 { get; set; }
|
||||
public string 計畫代號 { get; set; }
|
||||
public string 活動地點 { get; set; }
|
||||
public string 活動類別 { get; set; }
|
||||
public string 付款方式 { get; set; }
|
||||
public string 活動名稱事由 { get; set; }
|
||||
public string 領據編號 { get; set; }
|
||||
public string 領據費用別 { get; set; }
|
||||
public string 扣繳類別 { get; set; }
|
||||
public int 單價 { get; set; }
|
||||
public decimal 數量 { get; set; }
|
||||
public string 單位 { get; set; }
|
||||
public int 服務費 { get; set; }
|
||||
public string 差旅費編號 { get; set; }
|
||||
public string 差旅票價資訊 { get; set; }
|
||||
public string 起點 { get; set; }
|
||||
public string 訖點 { get; set; }
|
||||
public int 捷運公車 { get; set; }
|
||||
public int 火車 { get; set; }
|
||||
public int 計程車 { get; set; }
|
||||
public int 高鐵飛機 { get; set; }
|
||||
public int 自行開車 { get; set; }
|
||||
public int 過路費停車費 { get; set; }
|
||||
public int 住宿費 { get; set; }
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user