chore: 首次簽入 Thinkyu ASP.NET 專案

- 加入 Visual Studio / ASP.NET .gitignore
- 排除建置輸出、IDE 設定、NuGet packages、大型 MSI 安裝檔
This commit is contained in:
2026-09-10 09:42:37 +08:00
commit 577060bc78
2496 changed files with 501389 additions and 0 deletions
@@ -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. == 0)
&& (!item..HasValue || item. == 0)
&& string.IsNullOrEmpty(item.)
&& string.IsNullOrEmpty(item.)
&& (!item..HasValue || item. == 0)
&& (!item..HasValue ||item. == 0)
&& (!item..HasValue || 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,703 @@
//
// 這個檔案是 領據 資料表的資料存取類別 檔案二
// 您可以修改這個檔案,加入您自訂的屬性與方法
//
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);
var dao講師 = new DAC_講師(conn);
var dao講師評價 = new DAC_講師外訓滿意度(conn);
var Cache = new Dictionary<string, int?>();
var Cache = new Dictionary<string, bool>();
result.ForEach(item =>
{
item.DB_CRUSR_NAME = dao_BPSN.Get員工姓名(item.DB_CRUSR);
item.DB_TRUSR_NAME = dao_BPSN.Get員工姓名(item.DB_TRUSR);
string CacheKey = (item._非講師編號 ?? string.Empty).Trim() + "|" + (item. ?? string.Empty).Trim();
if (!Cache.TryGetValue(CacheKey, out int? ))
{
if (!string.IsNullOrEmpty(item._非講師編號)
&& int.TryParse(item._非講師編號.Trim(), out int parsedTeacherNo))
{
= parsedTeacherNo;
}
else if (!string.IsNullOrEmpty(item.))
{
var = dao講師.Select(false, item..Trim(), null, null)
.FirstOrDefault(t => t. == item..Trim());
if ( != null)
= .;
}
Cache[CacheKey] = ;
}
string CacheKey = .HasValue
? .Value + "|" + item..Date.Ticks
: string.Empty;
bool = .HasValue
&& (Cache.TryGetValue(CacheKey, out bool cached有講師評價)
? cached有講師評價
: Cache[CacheKey] = dao講師評價
.Select(false, null, , item., item., null, null, null, null, null)
.Any());
item. = ? "有" : "無";
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 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-0143831.0~ 9999-12-312958465.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; }
}
}