Files
thinkyu/教育訓練系統/Web/DAC/領據系統/領據匯入驗證.cs
T
sryang 577060bc78 chore: 首次簽入 Thinkyu ASP.NET 專案
- 加入 Visual Studio / ASP.NET .gitignore
- 排除建置輸出、IDE 設定、NuGet packages、大型 MSI 安裝檔
2026-09-10 09:42:37 +08:00

148 lines
4.1 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
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;
}
}
}