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
+79
View File
@@ -0,0 +1,79 @@
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="fmCardDailyReport.ascx.cs"
Inherits="forms_report_fmCardDailyReport" %>
<%@ Register Assembly="WNET" Namespace="Wellan.Web.UI" TagPrefix="cc1" %>
<cc1:WLabel ID="WLabel1" runat="server" CssClass="pageTitle"
TextMessageId="">差勤日報表</cc1:WLabel>
<asp:CustomValidator ID="cvMessage" runat="server" Display="None"></asp:CustomValidator>
<table border="0" cellpadding="0" cellspacing="2">
<tr>
<td style="text-align: right">
<cc1:WLabel ID="lbBPIDN" runat="server" TextMessageId="">日期:</cc1:WLabel>
</td>
<td>
<cc1:WDateTextBox runat="server" ID="txtDate1" />
<cc1:WDateTextBox runat="server" ID="txtDate2" />
<cc1:WButton
ID="btnDate" runat="server" AccessKey="Y"
CssClass="button" OnClick="btnDate_Click"
Text="Y.確定日期" />
</td>
</tr>
<tr>
<td style="text-align: right">
<cc1:WLabel ID="WLabel2" runat="server" TextMessageId="">專案:</cc1:WLabel>
</td>
<td>
<cc1:WDropDownList ID="ddlRPPYN"
runat="server" CssClass="textInput1"
DataTextField="BPPYM" DataValueField="BPPYN"
style="min-width:500px">
</cc1:WDropDownList>
</td>
<td class="dataEditCell">
<cc1:WButton ID="Next" runat="server"
AccessKey="J" CausesValidation="False"
CssClass="button" OnClick="Next_Click"
Text="J.選擇專案" UseSubmitBehavior="False" />
</td>
</tr>
<asp:Panel runat="server" ID="pnlGroup" Visible="false">
<tr>
<td style="text-align: right">
<cc1:WLabel ID="WLabel3" runat="server" TextMessageId="">站別分組:</cc1:WLabel>
</td>
<td>
<div style="float: left">
<asp:GridView ID="gvBranch" runat="server" AutoGenerateColumns="false">
<Columns>
<asp:BoundField DataField="BranchName" HeaderText="站別" />
<asp:TemplateField HeaderText="分組順序">
<ItemTemplate>
<asp:TextBox runat="server" ID="txtGroup" relatevalue='<%# Eval("BranchID") %>' Text='<%# Eval("GroupID") %>' style="width:3em" />
</ItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>
</div>
<div style="float: left; margin-left: 1em; margin-top: 1em; color: blue">
提醒您:
<ol>
<li>分組順序請填寫數字,相同的會歸在一起。</li>
<li>分組順序空白者報表不出現。</li>
<li>分組順序系統會儲存,供爾後使用。</li>
</ol>
</div>
<div style="clear:both"></div>
</td>
</tr>
<tr>
<td colspan="2">
<cc1:WButton ID="btnOk" runat="server" AccessKey="P" CssClass="button"
OnClick="btnOk_Click" Text="P.印表" />
</td>
</tr>
</asp:Panel>
</table>
+191
View File
@@ -0,0 +1,191 @@
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Collections.Generic;
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;
public partial class forms_report_fmCardDailyReport : Wellan.Web.UI.WUserControlBase
{
private RasnDAC rasnDao;
private RparDAC rparDao;
private ProjectBranchGroupDAC pbgDao;
private string ;
private string ;
private string ;
private List<ProjectEmployeeItem> Data = null;
private List<Item> Data = null;
private List<Item> Data = null;
private List<Item> Data = null;
private List<RASNBRHItem> = null;
protected void Page_Load(object sender, EventArgs e)
{
}
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
if (txtDate1.Value.Ticks == 0)
txtDate1.Value = DateTime.UtcNow.AddHours(8).Date;
if (txtDate2.Value.Ticks == 0)
txtDate2.Value = DateTime.UtcNow.AddHours(8).Date;
SetClientFocus(txtDate1);
rasnDao = new RasnDAC(Query);
rparDao = new RparDAC(Query);
pbgDao = new ProjectBranchGroupDAC(Query);
}
protected void btnOk_Click(object sender, EventArgs e)
{
cvMessage.IsValid = true;
cvMessage.ErrorMessage = "";
if (!CheckProjectRight())
return;
if (!CheckDateValid())
return;
// 取得並儲存畫面輸入的站別歸屬
pbgDao.DeleteByProject(ddlRPPYN.SelectedValue);
foreach (GridViewRow row in gvBranch.Rows)
{
var txtGroup = (row.Cells[0].FindControl("txtGroup") as TextBox);
if (txtGroup != null)
{
var group = txtGroup.Text;
var branchId = txtGroup.Attributes["relatevalue"];
if (!string.IsNullOrEmpty(group) && !string.IsNullOrEmpty(branchId))
{
pbgDao.Insert(ddlRPPYN.SelectedValue, branchId, group);
}
}
}
= GetLookup("BPAA", ddlRPPYN.SelectedValue, "BPPYM");
// 取得客戶名稱、公司別
= CompanyDAC.GetCompanyName(WDAC.GetStringValue(Query.ExecuteScalar(
@"SELECT BPCPY FROM BPRJ B
INNER JOIN BPAA C ON B.BPPNM=C.BPPNM
WHERE C.BPPYN='" + ddlRPPYN.SelectedValue + "'"))); ;
= 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='" + ddlRPPYN.SelectedValue + "'"));
Data = new GetData(Query).GetRASN_DATE_BPPYN(txtDate1.Value, txtDate2.Value, ddlRPPYN.SelectedValue);
Data = rparDao.(ddlRPPYN.SelectedValue, txtDate1.Value, txtDate2.Value, RPAR_TYPE.T0_請假);
Data = rparDao.(ddlRPPYN.SelectedValue, txtDate1.Value, txtDate2.Value, RPAR_TYPE.T1_加班);
Data = rparDao.(ddlRPPYN.SelectedValue, txtDate1.Value, txtDate2.Value, RPAR_TYPE.T3_出差);
= rasnDao.SelectBranchForReport(ddlRPPYN.SelectedValue);
if (Data.Count != 0)
{
Do差勤日報表();
}
else
{
cvMessage.IsValid = false;
cvMessage.ErrorMessage = "無符合條件的資料";
}
}
private void Do差勤日報表()
{
var = new ();
. = txtDate1.Value;
. = txtDate2.Value;
. = ;
. = ;
. = ;
. = ddlRPPYN.SelectedValue;
.Data = Data;
.Data = Data;
.Data = Data;
.Data = Data;
. = ;
. = new GetData(Query).GetOverTimeToMinutes(ddlRPPYN.SelectedValue);
MemoryStream ms = .();
ResponseWriteFile(ms, String.Format("差勤日報表_{0}_{1:yyyyMMdd}_{2:yyyyMMdd}.xls", ddlRPPYN.SelectedValue, txtDate1.Value, txtDate2.Value));
}
protected bool CheckProjectRight()
{
// 檢查此使用者是否有權限處理這個專案
BprmDAC bprm = new BprmDAC(Query);
if (!bprm.GetRight(ddlRPPYN.SelectedValue, UserId))
{
cvMessage.ErrorMessage = "對不起,你沒有處理這個專案的權限!";
cvMessage.IsValid = false;
pnlGroup.Visible = false;
return false;
}
return true;
}
protected void Next_Click(object sender, EventArgs e)
{
if (!CheckProjectRight())
return;
pnlGroup.Visible = true;
gvBranch.DataSource = rasnDao.SelectBranchForForm(ddlRPPYN.SelectedValue);
gvBranch.DataBind();
}
protected void btnDate_Click(object sender, EventArgs e)
{
if (!CheckDateValid())
return;
pnlGroup.Visible = false;
ddlRPPYN.DataSource = new BpaaDAC().GetBpaa(txtDate1.Value.Year);
ddlRPPYN.DataBind();
}
private bool CheckDateValid()
{
if (txtDate1.Value.Ticks == 0 && txtDate2.Value.Ticks != 0)
txtDate1.Value = txtDate2.Value;
if (txtDate2.Value.Ticks == 0 && txtDate1.Value.Ticks != 0)
txtDate2.Value = txtDate1.Value;
if (txtDate1.Value.Ticks == 0 || txtDate2.Value.Ticks == 0)
{
cvMessage.ErrorMessage = "開始日期與結束日期都應輸入!";
cvMessage.IsValid = false;
return false;
}
// 檢查日期是否跨年
if (txtDate1.Value.Year != txtDate2.Value.Year)
{
cvMessage.ErrorMessage = "日期請勿跨年!";
cvMessage.IsValid = false;
return false;
}
return true;
}
}
+44
View File
@@ -0,0 +1,44 @@
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="fmCardReport.ascx.cs"
Inherits="forms_report_fmCardReport" %>
<%@ Register Assembly="WNET" Namespace="Wellan.Web.UI" TagPrefix="cc1" %>
<cc1:WLabel ID="WLabel1" runat="server" CssClass="pageTitle"
TextMessageId="">差勤系統報表</cc1:WLabel>
<asp:CustomValidator ID="cvMessage" runat="server" Display="None"></asp:CustomValidator>
<table border="0" cellpadding="0" cellspacing="2" style="table-layout: fixed">
<tr>
<td colspan="1" style="height: 0px; width: 40px;"></td>
<td colspan="1" style="height: 0px; width: 500px;"></td>
</tr>
<tr>
<td style="text-align: right">
<cc1:WLabel ID="lbBPIDN" runat="server" TextMessageId="">年月:</cc1:WLabel>
</td>
<td>
<asp:TextBox ID="txtYYMM" runat="server" Columns="5" CssClass="textInput1"></asp:TextBox>
</td>
</tr>
<tr>
<td style="text-align: right">
<cc1:WLabel ID="WLabel2" runat="server" TextMessageId="">報表:</cc1:WLabel>
</td>
<td>
<asp:RadioButtonList ID="ddlReportSelect" runat="server" CssClass="textInput"
CellPadding="5" CellSpacing="0" RepeatColumns="1">
<asp:ListItem Value="RPAR_CARD_01,RPAR,差勤月報表" Selected="True">差勤月報表</asp:ListItem>
<asp:ListItem Value="RPAR_CARD_02,RPAR_0,請假申請單">請假申請單</asp:ListItem>
<asp:ListItem Value="RPAR_CARD_03,RPAR_1,加班申請單">加班申請單</asp:ListItem>
<asp:ListItem Value="RPAR_CARD_04,RPAR_3,公差申請單">公差申請單</asp:ListItem>
<asp:ListItem Value="RPAR_CARD_05,RPAR_31,差旅費報告單">差旅費報告單</asp:ListItem>
<asp:ListItem Value="RPAR_CARD_06,RPAR_1,加班費印領清冊">加班費印領清冊</asp:ListItem>
</asp:RadioButtonList>
</td>
</tr>
<tr>
<td colspan="2">
<cc1:WButton ID="btnOk" runat="server" AccessKey="P" CssClass="button"
OnClick="btnOk_Click" Text="P.印表" />
</td>
</tr>
</table>
+307
View File
@@ -0,0 +1,307 @@
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;
/// <summary>
/// 差勤系統月報表
/// </summary>
public partial class forms_report_fmCardReport : Wellan.Web.UI.WUserControlBase
{
private DataTable reportData = null;
private DataTable reportData1 = null;
private string reportName = "";
private string dataFileName = "";
private string reportTitle = "";
private DateTime aYYMM;
private RparDAC rparDao;
private BhrdDAC bhrdDao;
private RpadDAC rpadDao;
private RtmeDAC rtmeDao;
private string ;
private string ;
private string ;
private string ;
protected void Page_Load(object sender, EventArgs e)
{
}
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
if (txtYYMM.Text.Length == 0)
txtYYMM.Text = DateTime.UtcNow.AddHours(8).Date.ToString("yyyyMM");
SetClientFocus(txtYYMM);
rparDao = new RparDAC(Query);
bhrdDao = new BhrdDAC(Query);
rpadDao = new RpadDAC(Query);
rtmeDao = new RtmeDAC(Query);
}
protected void btnOk_Click(object sender, EventArgs e)
{
bool result = true;
cvMessage.IsValid = true;
cvMessage.ErrorMessage = "";
aYYMM = CheckDate(txtYYMM.Text + "01", "請輸入正確的年月", ref result, cvMessage);
if (!result)
return;
if (aYYMM.ToString("yyyyMM").CompareTo("10104") < 0)
{
cvMessage.IsValid = false;
cvMessage.ErrorMessage = "注意!101 年 4 月之後的資料才可以使用此功能";
return;
}
= new BpsnDAC(Query).GetProjectByDate(UserId, aYYMM);
= GetLookup("BPAA", , "BPPYM");
// 取得客戶名稱、公司別
= CompanyDAC.GetCompanyName(WDAC.GetStringValue(Query.ExecuteScalar(
@"SELECT BPCPY FROM BPRJ B
INNER JOIN BPAA C ON B.BPPNM=C.BPPNM
WHERE C.BPPYN='" + + "'"))); ;
= 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='" + + "'"));
string[] tmp = ddlReportSelect.SelectedValue.Split(',');
reportName = tmp[0];
dataFileName = tmp[1];
reportTitle = tmp[2];
bool hasData = false;
switch (dataFileName)
{
case "RPAR": // 差勤月報表
hasData = Get月差勤表資料();
break;
case "RPAR_0": // 請假申請單
hasData = Get出勤資料("請假");
break;
case "RPAR_1": // 加班申請單, 加班費印領清冊
hasData = Get出勤資料("加班");
if (reportName == "RPAR_CARD_06")
hasData = reportData.Select(
string.Format("RPTYP = '{0}' OR RPTYP = '{1}' OR RPTYP = '{2}' OR RPTYP = '{3}'",
RPAR_TYPE.T12_非休息日請領加班費,
RPAR_TYPE.T14_休息日請領加班費,
RPAR_TYPE.T16_國定假日請領加班費,
RPAR_TYPE.T18_例假日請領加班費
)
, "RPRDT").Length > 0;
break;
case "RPAR_3": // 公差申請單
hasData = Get出勤資料("公差");
break;
case "RPAR_31": // 差旅費報告單
hasData = Get出勤資料("差旅費");
Get出差費用資料();
break;
}
if (hasData)
{
Do月差勤表(reportTitle);
}
else
{
cvMessage.IsValid = false;
cvMessage.ErrorMessage = "無符合條件的資料";
}
}
private void Do月差勤表(string )
{
ExcelReportBase = null;
bool = true;
switch ()
{
case "差勤月報表":
= new ();
break;
case "請假申請單":
= new ();
= false;
break;
case "加班申請單":
= new ();
break;
case "公差申請單":
= new ();
break;
case "差旅費報告單":
= new ();
break;
case "加班費印領清冊":
= new ();
break;
}
if ( == null)
return;
..Tables.Add(reportData);
if (reportData1 != null)
..Tables.Add(reportData1);
. = aYYMM;
. = ;
. = ;
. = ;
. = ;
. = || new GetData(Query).GetOverTimeToMinutes();
MemoryStream ms = .();
ResponseWriteFile(ms, String.Format("{0}_{1}_{2}.xls", UserId, txtYYMM.Text, ));
}
protected bool Get月差勤表資料()
{
DateTime = aYYMM;
DateTime = aYYMM.AddMonths(1);
reportData = new DataTable();
reportData.Columns.Add("日期", typeof(DateTime));
reportData.Columns.Add("出勤別", typeof(String));
reportData.Columns.Add("員編", typeof(String));
reportData.Columns.Add("單位", typeof(String));
reportData.Columns.Add("職稱", typeof(String));
reportData.Columns.Add("姓名", typeof(String));
reportData.Columns.Add("上班", typeof(String));
reportData.Columns.Add("下班", typeof(String));
reportData.Columns.Add("請假", typeof(String));
reportData.Columns.Add("加班", typeof(String));
reportData.Columns.Add("公差", typeof(String));
reportData.Columns.Add("出差外出", typeof(String));
reportData.Columns.Add("出差返回", typeof(String));
reportData.Columns.Add("班別名稱", typeof(String));
reportData.Columns.Add("班別時間", typeof(String));
reportData.Columns.Add("出勤異常", typeof(String));
BatchService batchService = new BatchService();
while ( < )
{
DataTable = rparDao.Select出勤資料By人員(, UserId);
bool = !bhrdDao.IsHoliday(UserId, );
string = ? "上班" : "休假";
var btmeItem = rtmeDao.SelectBtmeDay(UserId, );
foreach (DataRow r in .Rows)
{
DataRow newRow = reportData.NewRow();
newRow["日期"] = ;
newRow["出勤別"] = ;
newRow["員編"] = r["RANUM"];
newRow["單位"] = r["單位"];
newRow["職稱"] = r["職稱"];
newRow["姓名"] = r["BPNME"];
newRow["上班"] = r["RCC01"];
newRow["下班"] = r["RCC02"];
newRow["請假"] = string.Format("{0:#0}:{1:00}", r["請假時數"], r["請假分數"]);
newRow["加班"] = string.Format("{0:#0}:{1:00}", r["加班時數"], r["加班分數"]);
newRow["公差"] = string.Format("{0:#0}:{1:00}", r["出差時數"], r["出差分數"]);
newRow["出差外出"] = r["RCC07"];
newRow["出差返回"] = r["RCC08"];
newRow["班別名稱"] = btmeItem != null ? btmeItem.BTNME : "";
newRow["班別時間"] = btmeItem != null ? string.Format("{0}-{1}", btmeItem.BTSTM, btmeItem.BTETM) : "";
var rapyn = BhrdDAC.GetStringValue(r["RAPYN"]);
if (!rparDao.IsPunchcardNormal(
, UserId
, rapyn
,
, WDAC.GetStringValue(r["RCC01"])
, WDAC.GetStringValue(r["RCC02"])
, WDAC.GetStringValue(r["RCC07"])
, WDAC.GetStringValue(r["RCC08"])
).)
{
newRow["出勤異常"] = "(出勤異常)";
}
reportData.Rows.Add(newRow);
}
= .AddDays(1);
}
return reportData.Rows.Count > 0;
}
protected bool Get出勤資料(string )
{
reportData = rparDao.Select報表資料_013By人員(aYYMM, UserId, );
return reportData.Rows.Count > 0;
}
protected void Get出差費用資料()
{
reportData1 = new DataTable();
reportData1.Columns.Add("單號", typeof(String));
reportData1.Columns.Add("項次", typeof(Int32));
reportData1.Columns.Add("日期", typeof(DateTime));
reportData1.Columns.Add("起地點", typeof(String));
reportData1.Columns.Add("迄地點", typeof(String));
reportData1.Columns.Add("工作摘要", typeof(String));
reportData1.Columns.Add("捷運", typeof(Int32));
reportData1.Columns.Add("汽車", typeof(Int32));
reportData1.Columns.Add("火車", typeof(Int32));
reportData1.Columns.Add("高鐵", typeof(Int32));
reportData1.Columns.Add("飛機", typeof(Int32));
reportData1.Columns.Add("住宿費", typeof(Int32));
reportData1.Columns.Add("過路費", typeof(Int32));
reportData1.Columns.Add("雜費", typeof(Int32));
reportData1.Columns.Add("總計", typeof(Int32));
reportData1.Columns.Add("單據號數", typeof(String));
reportData1.Columns.Add("備註", typeof(String));
foreach (DataRow r1 in reportData.Rows)
{
DataTable t2 = rpadDao.SelectRpar(WDAC.GetStringValue(r1["RPREN"]));
foreach (DataRow r2 in t2.Rows)
{
DataRow newRow = reportData1.NewRow();
newRow["單號"] = r2["RPREN"];
newRow["項次"] = r2["RPITM"];
newRow["日期"] = r2["RPDAT"];
newRow["起地點"] = r2["RPSTP"];
newRow["迄地點"] = r2["RPEDP"];
newRow["工作摘要"] = r1["RPRSN"];
newRow["捷運"] = r2["RPF03"];
newRow["汽車"] = r2["RPF01"];
newRow["火車"] = r2["RPF02"];
newRow["高鐵"] = r2["RPF04"];
newRow["飛機"] = r2["RPF07"];
newRow["住宿費"] = r2["RPF05"];
newRow["過路費"] = r2["RPF08"];
newRow["雜費"] = r2["RPF06"];
newRow["總計"] = r2["RPSUM"];
newRow["單據號數"] = r2["RPVCH"];
newRow["備註"] = r2["RPDOC"];
reportData1.Rows.Add(newRow);
}
}
}
}
+94
View File
@@ -0,0 +1,94 @@
<%@ Control Language="C#" AutoEventWireup="true" CodeFile="fmDownload.ascx.cs" Inherits="forms_report_fmDownload" %>
<%@ Register Assembly="WNET" Namespace="Wellan.Web.UI" TagPrefix="cc1" %>
<cc1:WLabel ID="WLabel1" runat="server" CssClass="pageTitle">下載報表檢視器</cc1:WLabel>
<div style="font-size: 12pt; line-height:150%">
<style>
li {
margin: 10px auto;
line-height: 150%;
}
</style>
<h3>下載</h3>
<ul>
<li>下載報表檢視器 <a href="report/CRViewerServer.zip">報表檢視器安裝包</a>
</li>
<li>下載必要元件安裝包 <a href="report/CRRuntime_32bit_13_0_24.msi">必要元件安裝包</a>
</li>
</ul>
<h3>安裝前注意</h3>
<ol>
<li><p>若先前安裝過舊版本,請至控制台解除安裝 "Maolaoda Report Viewer"</p>
<p>Windows 7</p>
<img src="picture/uninstall_old_crviewer_win7.png" />
<p>Windows 10</p>
<img src="picture/uninstall_old_crviewer_win10.png" />
</li>
</ol>
<h3>安裝步驟</h3>
<ol>
<li>
下載報表檢視器 <a href="report/CRViewerServer.zip">報表檢視器安裝包</a>
</li>
<li>
將報表檢視器安裝包<b>解壓縮</b>後,執行 Setup 安裝<br />
<img src="picture/crserver_files.png" />
</li>
<li>
安裝必要元件 <a href="report/CRRuntime_32bit_13_0_24.msi">必要元件安裝包</a>
</li>
<li>
執行 CRRuntime_32bit_13_0_24.msi 進行必要元件安裝
</li>
<li>
<b>若必要元件安裝失敗</b>,請使用以下步驟:
<ul type="square">
<li>將 CRRuntime_32bit_13_0_24.msi 複製至「C:\」,方便接下來的操作 </li>
<li>點擊開始功能表,輸入「CMD」搜尋</li>
<li>於搜尋結果中的「命令提示字元」上按滑鼠右鍵,選擇「以系統管理員身份執行」</li>
<li>於「命令提示字元」中輸入「C:\CRRuntime_32bit_13_0_24.msi」按 enter 開始安裝</li>
</ul>
</li>
<li>安裝成功之後請重新開機或是執行桌面上的「報表檢視器」捷徑</li>
<li>若開機後沒有自動執行,桌面上有「報表檢視器」捷徑,請手動執行</li>
<li>報表檢視器會常駐在工具列上<br />
Windows 7<br />
<img src="picture/crserver_icon_win7.png" /><br />
Windows 10<br />
<img src="picture/crserver_icon_win10.png" /><br />
Windows 11<br />
<img src="picture/crserver_icon_win11.png" />
</li>
<li>可支援各種瀏覽器</li>
</ol>
<h3>注意事項</h3>
<ol>
<li>報表檢視器可能會被瀏覽器或廣告阻擋軟體誤認為是廣告外掛,<br />
若已經安裝好報表檢視器並且已經執行,但依然無法檢視報表時,<br />
請設定廣告阻擋軟體,加入此網站為白名單
</li>
<li>
若使用 Chrome、Edge 瀏覽器無法使用報表檢視器,請嘗試這個方法:<br />
<ul type="square">
<li>
於網址列輸入 <b>chrome://flags/</b> 後按 Enter,開啟瀏覽器的旗標設定畫面<br />
<img src="picture/chrome_flags.png" />
</li>
<li>
搜尋 <b>Block insecure private network requests</b><br />
<img src="picture/chrome_flags_search.png" />
</li>
<li>
將設定改為「Disabled」,然後<b>重開瀏覽器</b><br />
<img src="picture/chrome_flags_setok.png" />
</li>
</ul>
</li>
</ol>
</div>
+14
View File
@@ -0,0 +1,14 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
public partial class forms_report_fmDownload : System.Web.UI.UserControl
{
protected void Page_Load(object sender, EventArgs e)
{
}
}
+298
View File
@@ -0,0 +1,298 @@
<%@ Control Language="C#" AutoEventWireup="true"
CodeFile="fmMgmtReport.ascx.cs" Inherits="forms_report_fmMgmtReport" %>
<%@ Register Assembly="WNET" Namespace="Wellan.Web.UI"
TagPrefix="cc1" %>
<cc1:WLabel ID="WLabel1" runat="server" CssClass="pageTitle"
TextMessageId="RPTBPSN_ALL_1.NAME"></cc1:WLabel>
<asp:CustomValidator ID="cvMessage" runat="server"
Display="None"></asp:CustomValidator>
<table style="table-layout: fixed" border="0" cellpadding="5" cellspacing="0">
<tr>
<td colspan="1" style="width: 100px; height: 0px"></td>
<td colspan="1" style="width: 120px; height: 0px"></td>
<td colspan="1" style="width: 25px; height: 0px"></td>
<td colspan="1" style="width: 120px; height: 0px"></td>
<td colspan="1" style="width: 120px; height: 0px"></td>
<td colspan="1" style="width: 120px; height: 0px"></td>
</tr>
<tr>
<td colspan="6">
<asp:RadioButtonList ID="rblReport" runat="server" RepeatLayout="Table" CellPadding="5">
<asp:ListItem Text="員工資料明細表" Value="BPSN_01,BPSN_01,員工資料明細表"></asp:ListItem>
<asp:ListItem Text="員工學歷統計表" Value="BPSN_03,BPSN_01,員工學歷統計表"></asp:ListItem>
<asp:ListItem Text="員工年齡統計表" Value="BPSN_04,BPSN_01,員工年齡統計表"></asp:ListItem>
<asp:ListItem Text="員工薪資明細表" Value="BPSN_02,BPSN_01,員工薪資明細表"></asp:ListItem>
<asp:ListItem Text="投保資料明細表" Value="RPIR_01,RPIR_01,投保資料明細表"></asp:ListItem>
<asp:ListItem Text="勞健保異動明細表" Value="RPIR_02,RPIR_01,勞健保異動明細表"></asp:ListItem>
</asp:RadioButtonList></td>
<!--
<asp:ListItem Text="出缺勤情形統計表" Value="RPAR_ALL_1,SSMS_01,出缺勤情形統計表"></asp:ListItem>
-->
</tr>
<tr>
<td style="height: 28px; border-bottom: solid 1px black">
<asp:Label ID="Label2" runat="server" CssClass="textInput"
Font-Bold="True" Style="text-align: center" Text="篩選類型"></asp:Label></td>
<td colspan="4" style="height: 28px; border-bottom: solid 1px black">
<asp:Label ID="Label3" runat="server" CssClass="textInput"
Font-Bold="True" Style="text-align: center" Text="報表條件"></asp:Label></td>
<td colspan="1" style="height: 28px; border-bottom: solid 1px black">
<asp:Label ID="Label4" runat="server" CssClass="textInput"
Font-Bold="True" Style="text-align: center" Text="排序方式"></asp:Label></td>
</tr>
<tr>
<td style="border-right: black 1px solid;">
<asp:CheckBox ID="cbbBPENO" runat="server"
CssClass="textInput1" Text="員工編號" /></td>
<td>
<asp:TextBox ID="txtBPENO1" runat="server" CssClass="textInput"></asp:TextBox>
</td>
<td colspan="1">
<asp:Label ID="Label6" runat="server" Text=""></asp:Label>
</td>
<td>
<asp:TextBox ID="txtBPENO2" runat="server" CssClass="textInput"></asp:TextBox>
</td>
<td></td>
<td colspan="1" rowspan="5" valign="top">
<asp:RadioButtonList ID="rblORDER" runat="server">
<asp:ListItem Selected="True" Value="A.BPENO">員工編號</asp:ListItem>
<asp:ListItem Value="B.RAPYN, A.BPENO">專案</asp:ListItem>
</asp:RadioButtonList></td>
</tr>
<tr>
<td style="border-right: black 1px solid;">
<asp:CheckBox ID="cbbBPEDY" runat="server"
CssClass="textInput1" Text="在職狀況" /></td>
<td>
<asp:DropDownList ID="ddlBPEDY" runat="server"
CssClass="textInput" EnableViewState="False">
<asp:ListItem Value="0">不限</asp:ListItem>
<asp:ListItem Value="1">在職</asp:ListItem>
<asp:ListItem Value="2">離職</asp:ListItem>
</asp:DropDownList></td>
<td colspan="3"></td>
</tr>
<tr>
<td style="border-right: black 1px solid;">
<asp:CheckBox ID="cbbBPPNM" runat="server"
CssClass="textInput1" Text="專案名稱" /></td>
<td colspan="4">
<cc1:WDropDownList ID="ddlBPPNM" runat="server"
CssClass="textInput" DataTextField="BPPYM"
DataValueField="BPPYN">
</cc1:WDropDownList></td>
</tr>
<tr>
<td style="border-right: black 1px solid;">
<asp:CheckBox ID="cbbBPSDY_PERIOD" runat="server"
CssClass="textInput1" Text="到職期間" /><br />
<asp:CheckBox ID="cbbBPEDY_PERIOD" runat="server"
CssClass="textInput1" Text="離職期間" /><br />
<asp:CheckBox ID="cbbPRESENT_PERIOD" runat="server"
CssClass="textInput1" Text="出缺勤期間" /></td>
<td rowspan="1" valign="middle">
<table border="0" cellpadding="0" cellspacing="0"
style="width: 100%;">
<tr>
<td style="width: 100px" valign="middle">
<asp:TextBox ID="txtDATE1" runat="server"
CssClass="textInput" EnableViewState="False"
Text='<%# Bind("BPSDY", "{0:yyyyMMdd}") %>'></asp:TextBox></td>
<td valign="middle">
<asp:ImageButton ID="btnDATE1_DATE" runat="server"
ImageUrl="~/picture/cal.gif" /></td>
</tr>
</table>
</td>
<td align="center" rowspan="1" valign="middle">
<asp:Label ID="Label1" runat="server" Text=""></asp:Label></td>
<td rowspan="1" valign="middle">
<table border="0" cellpadding="0" cellspacing="0"
style="width: 100%;">
<tr>
<td style="width: 100px" valign="middle">
<asp:TextBox ID="txtDATE2" runat="server"
CssClass="textInput" EnableViewState="False"
Text='<%# Bind("BPSDY", "{0:yyyyMMdd}") %>'></asp:TextBox></td>
<td valign="middle">
<asp:ImageButton ID="btnDATE2_DATE" runat="server"
ImageUrl="~/picture/cal.gif" /></td>
</tr>
</table>
</td>
</tr>
<tr>
<td style="border-right: black 1px solid;">
<asp:CheckBox ID="cbbBPBDY_PERIOD" runat="server"
CssClass="textInput1" Text="生日期間" /></td>
<td>
<asp:DropDownList ID="ddlDATE1" runat="server"
CssClass="textInput">
<asp:ListItem Text="一月" Value="0101"></asp:ListItem>
<asp:ListItem Text="二月" Value="0201"></asp:ListItem>
<asp:ListItem Text="三月" Value="0301"></asp:ListItem>
<asp:ListItem Text="四月" Value="0401"></asp:ListItem>
<asp:ListItem Text="五月" Value="0501"></asp:ListItem>
<asp:ListItem Text="六月" Value="0601"></asp:ListItem>
<asp:ListItem Text="七月" Value="0701"></asp:ListItem>
<asp:ListItem Text="八月" Value="0801"></asp:ListItem>
<asp:ListItem Text="九月" Value="0901"></asp:ListItem>
<asp:ListItem Text="十月" Value="1001"></asp:ListItem>
<asp:ListItem Text="十一月" Value="1101"></asp:ListItem>
<asp:ListItem Text="十二月" Value="1201"></asp:ListItem>
</asp:DropDownList></td>
<td align="center">
<asp:Label ID="Label5" runat="server" Text=""></asp:Label></td>
<td>
<asp:DropDownList ID="ddlDATE2" runat="server"
CssClass="textInput">
<asp:ListItem Text="一月" Value="0131"></asp:ListItem>
<asp:ListItem Text="二月" Value="0231"></asp:ListItem>
<asp:ListItem Text="三月" Value="0331"></asp:ListItem>
<asp:ListItem Text="四月" Value="0431"></asp:ListItem>
<asp:ListItem Text="五月" Value="0531"></asp:ListItem>
<asp:ListItem Text="六月" Value="0631"></asp:ListItem>
<asp:ListItem Text="七月" Value="0731"></asp:ListItem>
<asp:ListItem Text="八月" Value="0831"></asp:ListItem>
<asp:ListItem Text="九月" Value="0931"></asp:ListItem>
<asp:ListItem Text="十月" Value="1031"></asp:ListItem>
<asp:ListItem Text="十一月" Value="1131"></asp:ListItem>
<asp:ListItem Text="十二月" Value="1231"></asp:ListItem>
</asp:DropDownList></td>
</tr>
<tr>
<td style="border-right: black 1px solid;">
<asp:CheckBox ID="cbbEMPDATE" runat="server"
CssClass="textInput1" Text="在職日期" /></td>
<td>
<table border="0" cellpadding="0"
cellspacing="0" style="width: 100%; height: 100%">
<tr>
<td style="width: 100px">
<asp:TextBox ID="txtEMPDATE"
runat="server" CssClass="textInput"
Text='<%# Bind("BPSDY", "{0:yyyyMMdd}") %>'></asp:TextBox></td>
<td>
<asp:ImageButton ID="btnEMPDATE_DATE"
runat="server" ImageUrl="~/picture/cal.gif" /></td>
</tr>
</table>
</td>
</tr>
</table>
<cc1:WButton ID="btnOk" runat="server" AccessKey="P"
CssClass="button" OnClick="btnOk_Click"
OnClientClick="ShowProcessing(2000);" Text="P.印表" />
<script type="text/javascript">
var inputControls = [
{
reportNames: [
"BPSN_01", "BPSN_02", "RPIR_01", "RPIR_02"
],
controlIds: ["FMMGMTREPORT_cbbBPEDY",
"FMMGMTREPORT_ddlBPEDY",
"FMMGMTREPORT_rblORDER_0",
"FMMGMTREPORT_rblORDER_1"],
},
{
reportNames: [
"BPSN_01", "BPSN_02", "RPAR_ALL_1", "RPIR_01", "RPIR_02"
],
controlIds: ["FMMGMTREPORT_cbbBPPNM",
"FMMGMTREPORT_ddlBPPNM",
"FMMGMTREPORT_rblORDER_0",
"FMMGMTREPORT_rblORDER_1"],
},
{
reportNames: [
"BPSN_01", "BPSN_02"
],
controlIds: ["FMMGMTREPORT_cbbBPSDY_PERIOD",
"FMMGMTREPORT_cbbBPEDY_PERIOD",
"FMMGMTREPORT_txtDATE1",
"FMMGMTREPORT_btnDATE1_DATE",
"FMMGMTREPORT_txtDATE2",
"FMMGMTREPORT_btnDATE2_DATE"],
},
{
reportNames: [
"RPAR_ALL_1"
],
controlIds: ["FMMGMTREPORT_cbbPRESENT_PERIOD",
"FMMGMTREPORT_txtDATE1",
"FMMGMTREPORT_btnDATE1_DATE",
"FMMGMTREPORT_txtDATE2",
"FMMGMTREPORT_btnDATE2_DATE"],
},
{
reportNames: [
"BPSN_01", "BPSN_02"
],
controlIds: ["FMMGMTREPORT_cbbBPBDY_PERIOD",
"FMMGMTREPORT_ddlDATE1",
"FMMGMTREPORT_ddlDATE2"],
},
{
reportNames: [
"BPSN_01"
],
controlIds: ["FMMGMTREPORT_cbbBPENO",
"FMMGMTREPORT_txtBPENO1",
"FMMGMTREPORT_txtBPENO2"],
},
{
reportNames: [
"BPSN_01", "BPSN_02", "BPSN_03", "BPSN_04"
],
controlIds: ["FMMGMTREPORT_cbbEMPDATE",
"FMMGMTREPORT_txtEMPDATE",
"FMMGMTREPORT_btnEMPDATE_DATE"]
},
];
function inputControl(value) {
var tmp = value.split(",");
if (tmp.length == 0)
{
return;
}
var reportName = tmp[0];
for (i = 0; i < inputControls.length; i++) {
var inputControl = inputControls[i];
for (j = 0; j < inputControl.controlIds.length; j++) {
try {
var aCtrl = document.getElementById(inputControl.controlIds[j]);
aCtrl.disabled = true;
if (typeof aCtrl.checked != "undefined")
aCtrl.checked = false;
}
catch
{
console.log(inputControl.controlIds[j]);
}
}
}
for (i = 0; i < inputControls.length; i++) {
var inputControl = inputControls[i];
if (inputControl.reportNames.indexOf(reportName) < 0) {
continue;
}
for (j = 0; j < inputControl.controlIds.length; j++) {
try {
var aCtrl = document.getElementById(inputControl.controlIds[j]);
aCtrl.disabled = false;
}
catch
{
console.log(inputControl.controlIds[j]);
}
}
}
}
</script>
+488
View File
@@ -0,0 +1,488 @@
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 System.Text;
using System.Data.Common;
using Wellan.Data;
using Wellan.Common;
using System.IO;
using CRAX;
/// <summary>
/// 管理報表
/// </summary>
public partial class forms_report_fmMgmtReport : Wellan.Web.UI.WUserControlBase
{
private DateTime Date1;
private DateTime Date2;
private DateTime EmpDate;
private ReportParameter rp = new ReportParameter();
private string reportName = "";
private string dataFileName = "";
private string reportTitle = "";
protected void Page_Load(object sender, EventArgs e)
{
// 輸出 onclick 事件
foreach (ListItem item in rblReport.Items)
{
item.Attributes.Add("onclick", "inputControl(\"" + item.Value + "\");");
}
RegisterCalendarEvent(this, "btnDATE1_DATE", "txtDATE1");
RegisterCalendarEvent(this, "btnDATE2_DATE", "txtDATE2");
RegisterCalendarEvent(this, "btnEMPDATE_DATE", "txtEMPDATE");
}
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
ddlBPPNM.DataSource = new BpaaDAC().GetBpaaWithTYPlusNone();
ddlBPPNM.DataBind();
}
private bool CheckInput()
{
cvMessage.ErrorMessage = "";
cvMessage.IsValid = true;
bool result = true;
if (rblReport.SelectedIndex == -1)
{
cvMessage.ErrorMessage += "請選擇報表";
result = false;
}
string[] tmp = rblReport.SelectedValue.Split(',');
if (tmp.Length > 2)
{
reportName = tmp[0];
dataFileName = tmp[1];
reportTitle = tmp[2];
}
switch (reportName)
{
case "BPSN_01":
if (!cbbBPEDY.Checked &&
!cbbBPPNM.Checked &&
!cbbBPSDY_PERIOD.Checked &&
!cbbBPEDY_PERIOD.Checked &&
!cbbBPBDY_PERIOD.Checked &&
!cbbBPENO.Checked &&
!cbbEMPDATE.Checked)
{
cvMessage.ErrorMessage += "請選擇篩選類型";
result = false;
}
break;
case "BPSN_02":
if (!cbbBPEDY.Checked &&
!cbbBPPNM.Checked &&
!cbbBPSDY_PERIOD.Checked &&
!cbbBPEDY_PERIOD.Checked &&
!cbbBPBDY_PERIOD.Checked &&
!cbbEMPDATE.Checked)
{
cvMessage.ErrorMessage += "請選擇篩選類型";
result = false;
}
break;
case "RPAR_ALL_1":
if (!cbbBPPNM.Checked &&
!cbbPRESENT_PERIOD.Checked)
{
cvMessage.ErrorMessage += "請選擇篩選類型";
result = false;
}
break;
case "RPAR_01":
if (!cbbBPEDY.Checked &&
!cbbBPPNM.Checked)
{
cvMessage.ErrorMessage += "請選擇篩選類型";
result = false;
}
break;
}
if (cbbBPSDY_PERIOD.Checked ||
cbbBPEDY_PERIOD.Checked ||
cbbPRESENT_PERIOD.Checked)
{
Date1 = CheckDate(txtDATE1.Text, "期間起始日期請輸入正確的日期", ref result, cvMessage);
Date2 = CheckDate(txtDATE2.Text, "期間結束日期請輸入正確的日期", ref result, cvMessage);
}
if (cbbEMPDATE.Checked)
{
EmpDate = CheckDate(txtEMPDATE.Text, "在職日期請輸入正確的日期", ref result, cvMessage);
}
cvMessage.IsValid = result;
RegisterStartupScript("INPUT CONTROL", "inputControl(\"" + rblReport.SelectedValue + "\");");
ProcessCustomValidatorMessage(cvMessage);
return result;
}
protected void btnOk_Click(object sender, EventArgs e)
{
if (!CheckInput())
return;
DataTable reportData;
if (!GetData(out reportData))
{
cvMessage.ErrorMessage = "無符合條件的資料";
cvMessage.IsValid = false;
return;
}
// 將資料輸出成 MDB 檔案
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;
// 將參數輸出成 RPP 檔案
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));
}
private bool GetData(out DataTable Result)
{
GetData gd = new GetData();
gd.Query = Query;
switch (dataFileName)
{
case "BPSN_01":
return GetDataBPSN_01(out Result);
case "RPIR_01":
return GetDataRPIR_01(out Result);
default:
Result = new DataTable();
return false;
}
}
private bool GetDataRPIR_01(out DataTable Result)
{
StringBuilder sql = new StringBuilder();
rp.Clear();
rp.Add("公司名稱", GetString("COMPANY.NAME"));
rp.Add("報表名稱", reportTitle);
DbCommand cmd = Query.NewCommand();
sql.Append(
@"SELECT * FROM
(
SELECT A.RPREN, 0 AS RPITM, '1899/12/31' AS RPBDT, A.RPENO, A.RPSDT, A.RPEDT, A.RPSLY, A.RPAMT, A.RPFMY, A.RPFM1, A.RPFM2,
A.RPFM3, A.RPSLA, A.RPDIS, A.RPDIH, A.RPOLD, A.RPNAT, A.RPPTP, A.RPLIS, A.RPHIS, A.RPDOC,
B.BPNME, B.BPSDY, B.BPEDY, C.RAPYN, D.BPPYM RAPYNX, A.TRDAT, B.BPIDN
FROM RPIR A
LEFT OUTER JOIN BPSNView B ON A.RPENO=B.BPENO
LEFT OUTER JOIN RASN C ON A.RPENO=C.RANUM AND C.RAEDT IS NULL
LEFT OUTER JOIN BPAA D ON C.RAPYN=D.BPPYN
UNION
SELECT A.RPREN, A.RPITM, A.RPBDT, A.RPENO, A.RPSDT, A.RPEDT, A.RPSLY, A.RPAMT, A.RPFMY, A.RPFM1, A.RPFM2,
A.RPFM3, A.RPSLA, A.RPDIS, A.RPDIH, A.RPOLD, A.RPNAT, A.RPPTP, A.RPLIS, A.RPHIS, A.RPDOC,
B.BPNME, B.BPSDY, B.BPEDY, C.RAPYN, D.BPPYM RAPYNX, A.TRDAT, B.BPIDN
FROM RPIB A
LEFT OUTER JOIN BPSNView B ON A.RPENO=B.BPENO
LEFT OUTER JOIN RASN C ON A.RPENO=C.RANUM AND C.RAEDT IS NULL
LEFT OUTER JOIN BPAA D ON C.RAPYN=D.BPPYN
) TMP
WHERE 1=1 ");
string reportFilter = "";
// 在職狀況
//if (RadioButton1.Checked)
if (cbbBPEDY.Checked)
{
switch (ddlBPEDY.SelectedValue)
{
case "0":
//rp.Add("報表條件", "全部員工");
reportFilter = "在職狀況:全部";
break;
case "1":
sql.Append(" AND (BPEDY IS NULL OR BPEDY >= @TODAY)");
//rp.Add("報表條件", "在職員工");
reportFilter = "在職狀況:在職";
break;
case "2":
sql.Append(" AND (BPEDY < @TODAY)");
//rp.Add("報表條件", "離職員工");
reportFilter = "在職狀況:離職";
break;
}
cmd.Parameters.Add(Query.NewParameter("TODAY", String.Format(WGuard1.InvariantCulture, "{0:yyyy-MM-dd}", DateTime.UtcNow.AddHours(8).Date)));
}
// 專案名稱
//else if (RadioButton2.Checked)
if (cbbBPPNM.Checked)
{
if (ddlBPPNM.SelectedValue != "")
{
if (ddlBPPNM.SelectedValue != "000000001")
{
sql.Append(" AND RAPYN=@RAPYN");
cmd.Parameters.Add(Query.NewParameter("RAPYN", ddlBPPNM.SelectedValue));
//rp.Add("報表條件", ddlBPPNM.SelectedItem.Text);
reportFilter += (reportFilter.Length > 0 ? "/" : "") + "專案名稱:" + ddlBPPNM.SelectedItem.Text;
}
else
{
sql.Append(" AND RAPYN IS NULL");
//rp.Add("報表條件", ddlBPPNM.SelectedItem.Text);
reportFilter += (reportFilter.Length > 0 ? "/" : "") + "專案名稱:" + ddlBPPNM.SelectedItem.Text;
}
}
else
//rp.Add("報表條件", "全部專案");
reportFilter += (reportFilter.Length > 0 ? "/" : "") + "專案名稱:全部專案";
}
rp.Add("報表條件", reportFilter);
switch (rblORDER.SelectedIndex)
{
case 0:
sql.Append(" ORDER BY RPENO, RPREN, RPITM");
rp.Add("排序方式", "員工編號順序");
reportName += "_01";
break;
case 1:
sql.Append(" ORDER BY RAPYN, RPENO, RPREN, RPITM");
rp.Add("排序方式", "專案順序");
reportName += "_02";
break;
}
cmd.CommandText = sql.ToString();
DbDataAdapter da = Query.NewDataAdapter(cmd);
DbConnection conn = Query.NewConnection();
cmd.Connection = conn;
Result = new DataTable();
da.FillSchema(Result, SchemaType.Mapped);
da.Fill(Result);
return Result.Rows.Count > 0;
}
private bool GetDataBPSN_01(out DataTable Result)
{
StringBuilder sql = new StringBuilder();
rp.Clear();
rp.Add("公司名稱", GetString("COMPANY.NAME"));
rp.Add("報表名稱", reportTitle);
DbCommand cmd = Query.NewCommand();
// SQL command 第 6 行的換行是故意的,這樣資料中才會有換行符號
sql.Append(
string.Format(@"SELECT A.*, B.RAPYN, C.BPPYM RAPYNX, B.RABRH, D.BSRMK RABRHX, B.RAJNO, E.BPJME RAJNOX, B.RACNO, F.BPCME RACNOX,
CASE WHEN B.RAPYN IS NOT NULL THEN F.BPSRM ELSE (SELECT TOP 1 BPSRM FROM (SELECT '1899/12/31' BPBDT, BPSRM FROM BPSL WHERE BPENO=A.BPENO UNION SELECT RPBDT AS BPBDT, RPSRM AS BPSRM FROM RPSL WHERE RPENO=A.BPENO) X ORDER BY BPBDT DESC) END AS BPSRM,
CASE WHEN B.RAPYN IS NOT NULL THEN F.BPP02 ELSE (SELECT TOP 1 BPP02 FROM (SELECT '1899/12/31' BPBDT, BPP02 FROM BPSL WHERE BPENO=A.BPENO UNION SELECT RPBDT AS BPBDT, RPP02 AS BPSRM FROM RPSL WHERE RPENO=A.BPENO) Y ORDER BY BPBDT DESC) END AS BPP02,
G.BCNAM AS BCBNKX,
'【' + (SELECT TOP 1 BSSCR FROM BCLS WHERE BSPAR='BCUSZON' AND BSCLS=SUBSTRING(C.BPPYN,4,1)) + '】
' + C.BPPYM RAPYNX1, ISNULL(I.RPCPY, H.RPCPY) AS RPCPY
FROM BPSNView A
LEFT OUTER JOIN RASN B ON A.BPENO=B.RANUM AND B.RAEDT IS NULL AND B.RASDT <= '{0}'
LEFT OUTER JOIN BPAA C ON B.RAPYN=C.BPPYN
LEFT OUTER JOIN BCLS D ON D.BSCLS=B.RABRH AND D.BSPAR='BPSNBRH'
LEFT OUTER JOIN BPJA E ON E.BPPYN=B.RAPYN AND E.BPJNO=B.RAJNO
LEFT OUTER JOIN BPJB F ON F.BPPYN=B.RAPYN AND F.BPJNO=B.RAJNO AND F.BPCNO=B.RACNO
LEFT OUTER JOIN BRML G ON A.BPBNK=G.BCNUM
LEFT OUTER JOIN RPIR H ON A.BPENO=H.RPENO AND H.RPREN=(SELECT MAX(RPREN) FROM RPIR WHERE RPENO=A.BPENO)
LEFT OUTER JOIN RPIB I ON H.RPREN=I.RPREN AND I.RPITM=(SELECT MAX(RPITM) FROM RPIB WHERE RPREN=I.RPREN)
WHERE 1=1 ", DateTime.UtcNow.AddHours(8).ToString("yyyy-MM-dd", WGuard1.InvariantCulture) ));
string reportFilter = "";
// 員工學歷統計表 與 員工年齡統計表要抓在職員工
if (reportName == "BPSN_03" || reportName == "BPSN_04")
{
sql.Append(" AND A.BPEDY IS NULL");
}
// 員工編號
if (cbbBPENO.Checked)
{
if (txtBPENO1.Text.Length > 0 && txtBPENO2.Text.Length > 0)
{
sql.Append(" AND A.BPENO BETWEEN @BPENO1 AND @BPENO2 ");
Query.AddParam(cmd, "BPENO1", txtBPENO1.Text);
Query.AddParam(cmd, "BPENO2", txtBPENO2.Text);
reportFilter += (reportFilter.Length > 0 ? "/" : "") + String.Format("員工編號:{0}至{1}", txtBPENO1.Text, txtBPENO2.Text);
}
if (txtBPENO1.Text.Length > 0 && txtBPENO2.Text.Length == 0)
{
sql.Append(" AND A.BPENO >= @BPENO1 ");
Query.AddParam(cmd, "BPENO1", txtBPENO1.Text);
reportFilter += (reportFilter.Length > 0 ? "/" : "") + String.Format("員工編號:{0}之後", txtBPENO1.Text);
}
if (txtBPENO1.Text.Length == 0 && txtBPENO2.Text.Length > 0)
{
sql.Append(" AND A.BPENO <= @BPENO2 ");
Query.AddParam(cmd, "BPENO2", txtBPENO2.Text);
reportFilter += (reportFilter.Length > 0 ? "/" : "") + String.Format("員工編號:{0}之前", txtBPENO2.Text);
}
}
// 在職狀況
if (cbbBPEDY.Checked)
{
switch (ddlBPEDY.SelectedValue)
{
case "0":
//rp.Add("報表條件", "全部員工");
reportFilter += (reportFilter.Length > 0 ? "/" : "") + "在職狀況:全部";
break;
case "1":
sql.Append(" AND (A.BPEDY IS NULL OR A.BPEDY >= @TODAY)");
//rp.Add("報表條件", "在職員工");
reportFilter += (reportFilter.Length > 0 ? "/" : "") + "在職狀況:在職";
break;
case "2":
sql.Append(" AND (A.BPEDY < @TODAY)");
//rp.Add("報表條件", "離職員工");
reportFilter += (reportFilter.Length > 0 ? "/" : "") + "在職狀況:離職";
break;
}
cmd.Parameters.Add(Query.NewParameter("TODAY", String.Format(WGuard1.InvariantCulture, "{0:yyyy-MM-dd}", DateTime.UtcNow.AddHours(8).Date)));
}
// 專案名稱
if (cbbBPPNM.Checked)
{
if (ddlBPPNM.SelectedValue != "")
{
if (ddlBPPNM.SelectedValue != "000000001")
{
sql.Append(" AND B.RAPYN=@RAPYN");
Query.AddParam(cmd, "RAPYN", ddlBPPNM.SelectedValue);
reportFilter += (reportFilter.Length > 0 ? "/" : "") + "專案名稱:" + ddlBPPNM.SelectedItem.Text;
}
else
{
sql.Append(" AND B.RAPYN IS NULL");
reportFilter += (reportFilter.Length > 0 ? "/" : "") + "專案名稱:" + ddlBPPNM.SelectedItem.Text;
}
}
else
reportFilter += (reportFilter.Length > 0 ? "/" : "") + "專案名稱:全部專案";
}
// 到職期間
if (cbbBPSDY_PERIOD.Checked)
{
reportFilter += (reportFilter.Length > 0 ? "/" : "") + "到職期間:" + PreparePeriod("A.BPSDY", sql, cmd);
}
// 離職期間
if (cbbBPEDY_PERIOD.Checked)
{
reportFilter += (reportFilter.Length > 0 ? "/" : "") + "離職期間:" + PreparePeriod("A.BPEDY", sql, cmd);
}
// 生日期間
if (cbbBPBDY_PERIOD.Checked)
{
sql.Append(" AND (RIGHT(CONVERT(VARCHAR(8), A.BPBDY, 112), 4)>=@DATE1 AND RIGHT(CONVERT(VARCHAR(8), A.BPBDY, 112), 4)<=@DATE2) ");
Query.AddParam(cmd, "DATE1", ddlDATE1.SelectedValue);
Query.AddParam(cmd, "DATE2", ddlDATE2.SelectedValue);
if (ddlDATE1.SelectedIndex != ddlDATE2.SelectedIndex)
{
reportFilter += (reportFilter.Length > 0 ? "/" : "") + "生日月份:" + String.Format("{0} 至 {1}", ddlDATE1.SelectedItem.Text, ddlDATE2.SelectedItem.Text);
}
else
{
reportFilter += (reportFilter.Length > 0 ? "/" : "") + "生日月份:" + String.Format("{0}", ddlDATE1.SelectedItem.Text);
}
}
// 在職日期
if (cbbEMPDATE.Checked)
{
sql.Append(" AND (A.BPSDY <= @EMPDATE AND (A.BPEDY > @EMPDATE OR A.BPEDY IS NULL))");
Query.AddParam(cmd, "EMPDATE", EmpDate);
reportFilter += (reportFilter.Length > 0 ? "/" : "") + "在職日期:" + string.Format("{0:yyyy}年{0:MM}月{0:dd}日", EmpDate);
}
rp.Add("報表條件", reportFilter);
sql.Append(String.Format(" ORDER BY {0}", rblORDER.SelectedValue));
switch (rblORDER.SelectedIndex)
{
case 0:
rp.Add("排序方式", "員工編號順序");
break;
case 1:
rp.Add("排序方式", "專案順序");
break;
}
cmd.CommandText = sql.ToString();
Result = Query.Select(cmd);
return Result.Rows.Count > 0;
}
private string PreparePeriod(string fieldName, StringBuilder sql, DbCommand cmd)
{
if (Date1.Ticks > 0 && Date2.Ticks > 0)
{
sql.Append(" AND (" + fieldName + " > @DATE1 AND " + fieldName + " < @DATE2) ");
cmd.Parameters.Add(Query.NewParameter("DATE1", Date1.AddDays(-1)));
cmd.Parameters.Add(Query.NewParameter("DATE2", Date2.AddDays(1)));
return String.Format("{0:yyyy}年{0:MM}月{0:dd}日 至 {1:yyyy}年{1:MM}月{1:dd}日 ", Date1, Date2);
}
else if (Date1.Ticks > 0 && Date2.Ticks == 0)
{
sql.Append(" AND (" + fieldName + " > @DATE1) ");
cmd.Parameters.Add(Query.NewParameter("DATE1", Date1.AddDays(-1)));
return String.Format("{0:yyyy}年{0:MM}月{0:dd}日後 ", Date1);
}
else if (Date1.Ticks == 0 && Date2.Ticks > 0)
{
sql.Append(" AND (" + fieldName + " < @DATE2) ");
cmd.Parameters.Add(Query.NewParameter("DATE2", Date2.AddDays(1)));
return String.Format("{0:yyyy}年{0:MM}月{0:dd}日前 ", Date2);
}
else
return "所有日期";
}
}
+75
View File
@@ -0,0 +1,75 @@
<%@ Control Language="C#" AutoEventWireup="true"
CodeFile="fmYearReport.ascx.cs"
Inherits="forms_report_fmYearReport" %>
<%@ Register Assembly="WNET" Namespace="Wellan.Web.UI"
TagPrefix="cc1" %>
<cc1:WLabel ID="WLabel1" runat="server"
CssClass="pageTitle" TextMessageId="FMYEARREPORT.NAME"></cc1:WLabel>
<asp:CustomValidator ID="cvMessage"
runat="server" Display="None"></asp:CustomValidator>
<table border="0" cellpadding="0" cellspacing="2">
<tr>
<td colspan="1" style="height: 0px;"></td>
<td colspan="1" style="height: 0px; width: 150px;"></td>
</tr>
<tr>
<td style="text-align: right">
<cc1:WLabel ID="lbBPIDN" runat="server"
TextMessageId="">年度(3碼) / 年月(5碼):</cc1:WLabel></td>
<td>
<asp:TextBox ID="txtYYMM" runat="server"
Columns="5" CssClass="textInput1"></asp:TextBox>
<cc1:WButton ID="btnYear" runat="server"
AccessKey="Y" CssClass="button"
OnClick="btnYear_Click" Text="Y.確定" /></td>
</tr>
</table>
<asp:Panel ID="Panel1" runat="server"
Width="100%" Visible="False">
<table border="0" cellpadding="0"
cellspacing="2" style="table-layout: fixed">
<tr>
<td colspan="1" style="height: 0px; width: 40px;"></td>
<td colspan="1" style="width: 500px; height: 0px"></td>
</tr>
<tr>
<td style="text-align: right">
<cc1:WLabel ID="WLabel3" runat="server"
TextMessageId="">專案:</cc1:WLabel></td>
<td>
<cc1:WDropDownList ID="ddlBPPNM"
runat="server" CssClass="textInput"
DataTextField="BPPYM" DataValueField="BPPYN">
</cc1:WDropDownList></td>
</tr>
<tr>
<td style="text-align: right; padding-top: 5px;" valign="top">
<cc1:WLabel ID="WLabel2" runat="server"
TextMessageId="">報表:</cc1:WLabel></td>
<td>
<asp:RadioButtonList ID="ddlReportSelect"
runat="server" CssClass="textInput" CellPadding="5" CellSpacing="0" RepeatColumns="2" RepeatLayout="Table">
<%-- <asp:ListItem Value="SACD_01B,SACD_01,經費核銷累計總表,MONTH" Selected="True">經費核銷年度總表</asp:ListItem>
<asp:ListItem Value="SACD_02,SACD_01,經費核銷一覽表,MONTH">經費核銷季報表</asp:ListItem>
<asp:ListItem Value="SACD_03,SACD_01,經費核銷一覽表,MONTH">經費核銷月報表</asp:ListItem>--%>
<asp:ListItem Value="SSMS_01_1,SSMS_01,各項法定提撥費用明細表,MONTH">各項法定提撥費用明細表</asp:ListItem>
<asp:ListItem Value="SSMS_02A_1,SSMS_01,薪資清冊,MONTH">薪資清冊</asp:ListItem>
<%-- <asp:ListItem Value="SSMS_02B_1,SSMS_01,薪資清冊,MONTH">薪資清冊(多媽媽)</asp:ListItem>--%>
<%-- <asp:ListItem Value="SSMS_02C_1,SSMS_01,薪資明細表(內部發薪),MONTH">薪資明細表(內部發薪)</asp:ListItem>--%>
<asp:ListItem Value="RPAR_0X_1,SSMS_01,請假明細,MONTH">請假明細</asp:ListItem>
<asp:ListItem Value="RPAR_1X,SSMS_01,加班費明細,YEAR|MONTH">加班費明細</asp:ListItem>
<asp:ListItem Value="RPAR_3X,SSMS_01,外勤工作明細表,MONTH">外勤工作明細表</asp:ListItem>
<%-- <asp:ListItem Value="RPAR_3X,SSMS_01,差旅費明細,MONTH">差旅費明細(多媽媽)</asp:ListItem>
<asp:ListItem Value="RPAR_21,SSMS_01,電話費請領清冊,MONTH">電話費明細(多媽媽)</asp:ListItem>
<asp:ListItem Value="RPAR_22,SSMS_01,油料補助費明細,MONTH">油料費明細(多媽媽)</asp:ListItem>
<asp:ListItem Value="RPAR_3X22,SSMS_01,外勤工作費明細,MONTH">外勤工作費明細(多媽媽)</asp:ListItem>--%>
<%-- <asp:ListItem Value="SSMS_03,SSMS_02,薪資總表,MONTH">薪資總表</asp:ListItem>--%>
<asp:ListItem Value="RPAR_ALL_2,SSMS_01,出缺勤情形統計表,YEAR|MONTH">出缺勤情形統計表</asp:ListItem>
</asp:RadioButtonList>
<cc1:WButton ID="btnOk" runat="server"
AccessKey="P" CssClass="button"
OnClick="btnOk_Click" OnClientClick="ShowProcessing(2000);"
Text="P.印表" /></td>
</tr>
</table>
</asp:Panel>
+397
View File
@@ -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.();
}
}