chore: 首次簽入 Thinkyu ASP.NET 專案
- 加入 Visual Studio / ASP.NET .gitignore - 排除建置輸出、IDE 設定、NuGet packages、大型 MSI 安裝檔
This commit is contained in:
@@ -0,0 +1,397 @@
|
||||
using System;
|
||||
using System.Data;
|
||||
using System.Configuration;
|
||||
using System.Collections;
|
||||
using System.Web;
|
||||
using System.Web.Security;
|
||||
using System.Web.UI;
|
||||
using System.Web.UI.WebControls;
|
||||
using System.Web.UI.WebControls.WebParts;
|
||||
using System.Web.UI.HtmlControls;
|
||||
using Wellan.Common;
|
||||
using Wellan.Data;
|
||||
using System.Data.Common;
|
||||
using CRAX;
|
||||
using System.IO;
|
||||
using System.Linq;
|
||||
using System.Collections.Generic;
|
||||
|
||||
/// <summary>
|
||||
/// 專案報表
|
||||
/// </summary>
|
||||
public partial class forms_report_fmYearReport : Wellan.Web.UI.WUserControlBase
|
||||
{
|
||||
private DataTable reportData;
|
||||
private string reportName = "";
|
||||
private string dataFileName = "";
|
||||
private string reportTitle = "";
|
||||
private string reportPeriod = "";
|
||||
private DateTime aYYMM;
|
||||
private GetData gd = new GetData();
|
||||
private bool OverTimeToMinute;
|
||||
|
||||
protected void Page_Load(object sender, EventArgs e)
|
||||
{
|
||||
//ddlBPPNM.DataSource = new BpaaDAC().GetBpaaWithTY();
|
||||
//ddlBPPNM.DataBind();
|
||||
}
|
||||
|
||||
protected override void OnInit(EventArgs e)
|
||||
{
|
||||
base.OnInit(e);
|
||||
SetClientFocus(txtYYMM);
|
||||
gd.Query = Query;
|
||||
}
|
||||
|
||||
protected void btnOk_Click(object sender, EventArgs e)
|
||||
{
|
||||
// 檢查此使用者是否有權限處理這個專案
|
||||
BprmDAC bprm = new BprmDAC(Query);
|
||||
if (!bprm.GetRight(ddlBPPNM.SelectedValue, UserId))
|
||||
{
|
||||
cvMessage.ErrorMessage = "對不起,你沒有處理這個專案的權限!";
|
||||
cvMessage.IsValid = false;
|
||||
return;
|
||||
}
|
||||
|
||||
bool result = true;
|
||||
bool year = false;
|
||||
cvMessage.IsValid = true;
|
||||
cvMessage.ErrorMessage = "";
|
||||
|
||||
string[] tmp = ddlReportSelect.SelectedValue.Split(',');
|
||||
reportName = tmp[0];
|
||||
dataFileName = tmp[1];
|
||||
reportTitle = tmp[2];
|
||||
reportPeriod = tmp[3];
|
||||
|
||||
// 加班費明細 與 出缺勤情形統計表 可以輸入三位表示年報表
|
||||
if ((reportName == "RPAR_1X" || reportName == "RPAR_ALL_2") && txtYYMM.Text.Length == 3)
|
||||
{
|
||||
year = true;
|
||||
aYYMM = CheckDate(txtYYMM.Text + "0101", "請輸入正確的年度", ref result, cvMessage);
|
||||
if (!result)
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
aYYMM = CheckDate(txtYYMM.Text + "01", "請輸入正確的年月", ref result, cvMessage);
|
||||
if (!result)
|
||||
return;
|
||||
}
|
||||
|
||||
OverTimeToMinute = gd.GetOverTimeToMinutes(ddlBPPNM.SelectedValue);
|
||||
|
||||
// 若是加班費明細表且專案年度接單加班時數計算至分鐘
|
||||
// 改用 RPAR_1X_1 報表
|
||||
if (reportName == "RPAR_1X" && OverTimeToMinute)
|
||||
reportName = "RPAR_1X_1";
|
||||
if (reportName == "RPAR_0X_1" && OverTimeToMinute)
|
||||
reportName = "RPAR_0X_1M";
|
||||
if (reportName == "RPAR_ALL_2" && OverTimeToMinute)
|
||||
reportName = "RPAR_ALL_2M";
|
||||
|
||||
bool hasData = false;
|
||||
switch (dataFileName)
|
||||
{
|
||||
case "SACD_01":
|
||||
hasData = GetSACDData();
|
||||
break;
|
||||
case "SSMS_01":
|
||||
hasData = GetSSMSData(year);
|
||||
break;
|
||||
case "SSMS_02":
|
||||
hasData = GetSSMSSummaryData();
|
||||
break;
|
||||
}
|
||||
|
||||
if (hasData)
|
||||
ExportReport(year);
|
||||
else
|
||||
{
|
||||
cvMessage.IsValid = false;
|
||||
cvMessage.ErrorMessage = "無符合條件的資料";
|
||||
}
|
||||
}
|
||||
|
||||
protected void btnYear_Click(object sender, EventArgs e)
|
||||
{
|
||||
bool result = true;
|
||||
cvMessage.IsValid = true;
|
||||
cvMessage.ErrorMessage = "";
|
||||
txtYYMM.Text = txtYYMM.Text.Trim();
|
||||
string rp = "";
|
||||
|
||||
if (txtYYMM.Text.Length == 3)
|
||||
{
|
||||
rp = "YEAR";
|
||||
aYYMM = CheckDate(txtYYMM.Text + "0101", "請輸入正確的年度", ref result, cvMessage);
|
||||
if (!result)
|
||||
return;
|
||||
}
|
||||
else
|
||||
{
|
||||
rp = "MONTH";
|
||||
aYYMM = CheckDate(txtYYMM.Text + "01", "請輸入正確的年月", ref result, cvMessage);
|
||||
if (!result)
|
||||
return;
|
||||
}
|
||||
|
||||
Panel1.Visible = true;
|
||||
|
||||
for (var i = 0; i < ddlReportSelect.Items.Count; i++)
|
||||
{
|
||||
var listItem = ddlReportSelect.Items[i];
|
||||
var v = listItem.Value.Split(',');
|
||||
if (v.Length > 3 && v[3].Contains(rp))
|
||||
{
|
||||
listItem.Enabled = true;
|
||||
listItem.Attributes.Remove("style");
|
||||
}
|
||||
else
|
||||
{
|
||||
listItem.Enabled = false;
|
||||
listItem.Attributes.Add("style", "color: gray");
|
||||
}
|
||||
}
|
||||
|
||||
ddlBPPNM.DataSource = new BpaaDAC().GetBpaaWithTY(aYYMM.Year);
|
||||
ddlBPPNM.DataBind();
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 取得總表用資料
|
||||
/// </summary>
|
||||
protected bool GetSACDData()
|
||||
{
|
||||
return gd.GetSACDReportData(ddlBPPNM.SelectedValue, aYYMM, out reportData);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 取得薪資勞健保報表資料
|
||||
/// </summary>
|
||||
protected bool GetSSMSData(bool year)
|
||||
{
|
||||
return gd.GetSSMSReportData(ddlBPPNM.SelectedValue, aYYMM, year, out reportData);
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 取得薪資總表資料
|
||||
/// </summary>
|
||||
protected bool GetSSMSSummaryData()
|
||||
{
|
||||
return gd.GetSSMSSummaryReportData(aYYMM, out reportData);
|
||||
}
|
||||
|
||||
// 列印報表
|
||||
protected void PrintReport(bool year)
|
||||
{
|
||||
WTableTr tableTr = new WTableTr();
|
||||
string realFileName = tableTr.ExportToMDB(reportData, ReportDataPath + dataFileName + ".mdb", dataFileName, true, true, false);
|
||||
realFileName = "reportData/" + Path.GetFileName(realFileName);
|
||||
reportData.Dispose();
|
||||
tableTr = null;
|
||||
|
||||
// 取得客戶名稱
|
||||
string custName = WDAC.GetStringValue(Query.ExecuteScalar(
|
||||
@"SELECT BCNAM FROM BCUS A
|
||||
INNER JOIN BPRJ B ON A.BCNUM=B.BPNUM
|
||||
INNER JOIN BPAA C ON B.BPPNM=C.BPPNM
|
||||
WHERE C.BPPYN='" + ddlBPPNM.SelectedValue + "'"));
|
||||
|
||||
// 取得公司名稱
|
||||
string companyName = CompanyDAC.GetCompanyName(WDAC.GetStringValue(Query.ExecuteScalar(
|
||||
@"SELECT BPCPY FROM BPRJ B
|
||||
INNER JOIN BPAA C ON B.BPPNM=C.BPPNM
|
||||
WHERE C.BPPYN='" + ddlBPPNM.SelectedValue + "'")));
|
||||
|
||||
// 取得前段、後段、假日加班比例
|
||||
double bpbft;
|
||||
double bpaft;
|
||||
double bphol;
|
||||
string bpovr;
|
||||
string bplve;
|
||||
gd.GetRASN_Overwork_Rate(ddlBPPNM.SelectedValue, out bpbft, out bpaft, out bphol, out bpovr, out bplve);
|
||||
|
||||
ReportParameter rp = new ReportParameter();
|
||||
rp.Add("公司名稱", companyName);
|
||||
rp.Add("客戶名稱", custName);
|
||||
rp.Add("報表名稱", reportTitle);
|
||||
rp.Add("專案名稱", GetLookup("BPAA", ddlBPPNM.SelectedValue, "BPPYM"));
|
||||
rp.Add("年度", WGuard1.WNTSA(aYYMM.Year - WGuard1.CY11, "", false) + "年");
|
||||
rp.Add("月份", year ? "一月至十二月" : aYYMM.ToString("MMM", WGuard1.TaiwanCulture));
|
||||
rp.Add("前段", "一又三分之一");
|
||||
rp.Add("後段", "一又三分之二");
|
||||
rp.Add("假日", "1");
|
||||
rp.Add("休息日延長", "二又三分之二");
|
||||
rp.Add("例假日延長", "2");
|
||||
switch (aYYMM.Month)
|
||||
{
|
||||
case 1:
|
||||
case 2:
|
||||
case 3:
|
||||
rp.Add("季", "第一季");
|
||||
break;
|
||||
case 4:
|
||||
case 5:
|
||||
case 6:
|
||||
rp.Add("季", "第二季");
|
||||
break;
|
||||
case 7:
|
||||
case 8:
|
||||
case 9:
|
||||
rp.Add("季", "第三季");
|
||||
break;
|
||||
case 10:
|
||||
case 11:
|
||||
case 12:
|
||||
rp.Add("季", "第四季");
|
||||
break;
|
||||
}
|
||||
string realParamFileName = "reportData/" + Path.GetFileName(rp.Save(ReportDataPath + reportName + ".rpp", true));
|
||||
|
||||
RegisterStartupScript("REPORT_JS",
|
||||
CRAXHelper.GetReportScriptJSONP(Context,
|
||||
GetWebRootUrl() + "CRAX/",
|
||||
"../report/" + reportName + ".rpt",
|
||||
"../" + realFileName,
|
||||
"../" + realParamFileName,
|
||||
"",
|
||||
reportName + ".rpt",
|
||||
dataFileName + ".mdb",
|
||||
reportName + ".rpp",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
"",
|
||||
0,
|
||||
0));
|
||||
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 報表匯出 Excel
|
||||
/// </summary>
|
||||
/// <param name="year"></param>
|
||||
protected void ExportReport(bool year)
|
||||
{
|
||||
//WTableTr tableTr = new WTableTr();
|
||||
//string realFileName = tableTr.ExportToMDB(reportData, ReportDataPath + dataFileName + ".mdb", dataFileName, true, true, false);
|
||||
//realFileName = "reportData/" + Path.GetFileName(realFileName);
|
||||
//reportData.Dispose();
|
||||
//tableTr = null;
|
||||
|
||||
// 取得客戶名稱
|
||||
string custName = WDAC.GetStringValue(Query.ExecuteScalar(
|
||||
@"SELECT BCNAM FROM BCUS A
|
||||
INNER JOIN BPRJ B ON A.BCNUM=B.BPNUM
|
||||
INNER JOIN BPAA C ON B.BPPNM=C.BPPNM
|
||||
WHERE C.BPPYN='" + ddlBPPNM.SelectedValue + "'"));
|
||||
|
||||
// 取得公司名稱
|
||||
string companyName = CompanyDAC.GetCompanyName(WDAC.GetStringValue(Query.ExecuteScalar(
|
||||
@"SELECT BPCPY FROM BPRJ B
|
||||
INNER JOIN BPAA C ON B.BPPNM=C.BPPNM
|
||||
WHERE C.BPPYN='" + ddlBPPNM.SelectedValue + "'")));
|
||||
|
||||
// 取得前段、後段、假日加班比例
|
||||
double bpbft;
|
||||
double bpaft;
|
||||
double bphol;
|
||||
string bpovr;
|
||||
string bplve;
|
||||
gd.GetRASN_Overwork_Rate(ddlBPPNM.SelectedValue, out bpbft, out bpaft, out bphol, out bpovr, out bplve);
|
||||
|
||||
var 專案名稱 = GetLookup("BPAA", ddlBPPNM.SelectedValue, "BPPYM").Trim();
|
||||
var 年度 = WGuard1.WNTSA(aYYMM.Year - WGuard1.CY11, "", false);
|
||||
var 月份 = year ? "一月至十二月" : aYYMM.ToString("MMM", WGuard1.TaiwanCulture);
|
||||
|
||||
companyName = companyName.Trim();
|
||||
custName = custName.Trim();
|
||||
reportTitle = reportTitle.Trim();
|
||||
|
||||
Dictionary<string, string> rp = new Dictionary<string, string>
|
||||
{
|
||||
{ "公司名稱", companyName },
|
||||
{ "客戶名稱", custName },
|
||||
{ "報表名稱", reportTitle },
|
||||
{ "專案名稱", 專案名稱 },
|
||||
{ "年度", 年度 + "年" },
|
||||
{ "月份", 月份 },
|
||||
{ "前段", "1⅓" },
|
||||
{ "後段", "1⅔" },
|
||||
{ "假日", "1" },
|
||||
{ "休息日延長", "2⅔" },
|
||||
{ "例假日延長", "2" }
|
||||
};
|
||||
switch (aYYMM.Month)
|
||||
{
|
||||
case 1:
|
||||
case 2:
|
||||
case 3:
|
||||
rp.Add("季", "第一季");
|
||||
break;
|
||||
case 4:
|
||||
case 5:
|
||||
case 6:
|
||||
rp.Add("季", "第二季");
|
||||
break;
|
||||
case 7:
|
||||
case 8:
|
||||
case 9:
|
||||
rp.Add("季", "第三季");
|
||||
break;
|
||||
case 10:
|
||||
case 11:
|
||||
case 12:
|
||||
rp.Add("季", "第四季");
|
||||
break;
|
||||
}
|
||||
|
||||
var ms = DoExport(rp);
|
||||
if (ms != null)
|
||||
{
|
||||
ResponseWriteFile(ms, String.Format("{0}_{1}_{2}{3}.xls", 專案名稱, reportTitle, 年度, 月份));
|
||||
}
|
||||
}
|
||||
|
||||
protected MemoryStream DoExport(Dictionary<string, string> reportParams)
|
||||
{
|
||||
ExcelReportBase report = null;
|
||||
|
||||
switch (reportName)
|
||||
{
|
||||
case "SSMS_01_1":
|
||||
report = new 各項法定提撥費用明細表(); break;
|
||||
case "SSMS_02A_1":
|
||||
report = new 薪資清冊(); break;
|
||||
case "RPAR_0X_1":
|
||||
case "RPAR_0X_1M":
|
||||
report = new 請假明細(); break;
|
||||
case "RPAR_1X":
|
||||
case "RPAR_1X_1":
|
||||
report = new 加班費明細(); break;
|
||||
case "RPAR_3X":
|
||||
report = new 外勤工作明細表(); break;
|
||||
case "RPAR_ALL_2":
|
||||
case "RPAR_ALL_2M":
|
||||
report = new 出缺勤情形統計表(); break;
|
||||
}
|
||||
|
||||
if (report == null)
|
||||
return null;
|
||||
|
||||
report.資料來源.Tables.Add(reportData);
|
||||
report.報表參數 = reportParams;
|
||||
report.公司名稱 = reportParams["公司名稱"];
|
||||
report.客戶名稱 = reportParams["客戶名稱"];
|
||||
report.專案名稱 = reportParams["專案名稱"];
|
||||
report.報表名稱 = reportParams["報表名稱"];
|
||||
report.年度 = reportParams["年度"];
|
||||
report.月份 = reportParams["月份"];
|
||||
report.以時分顯示時數 = OverTimeToMinute;
|
||||
|
||||
return report.產生報表();
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user