Files
sryang 577060bc78 chore: 首次簽入 Thinkyu ASP.NET 專案
- 加入 Visual Studio / ASP.NET .gitignore
- 排除建置輸出、IDE 設定、NuGet packages、大型 MSI 安裝檔
2026-09-10 09:42:37 +08:00

284 lines
9.6 KiB
C#

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.Data.Common;
using Wellan.Data;
using Wellan.Common;
using System.Text;
using System.IO;
/// <summary>
/// 加班匯總輸入
/// </summary>
public partial class forms_worker_fmRowk : Wellan.Web.UI.WUserControlBase
{
protected string _ROPYN = "";
private string _ROENO = "";
private string _ROYMM = "";
private int _YY = 0;
protected void Page_Load(object sender, EventArgs e)
{
_ROENO = ViewState["ROENO"] != null ? ViewState["ROENO"].ToString() : "";
_ROYMM = ViewState["ROYMM"] != null ? ViewState["ROYMM"].ToString() : "";
}
protected override void OnInit(EventArgs e)
{
base.OnInit(e);
dsROWKForm.ConnectionString = ConnectionString;
dsROWKGrid.ConnectionString = ConnectionString;
SELECT_SQL = @"SELECT TRDAT, TRMOD, TRUSR, ROENO, ROYMM, ROPYN,
ROT01 / 60 AS ROT01, ROT02 / 60 AS ROT02, ROT03 / 60 AS ROT03, ROT04 / 60 AS ROT04, ROT05 / 60 AS ROT05,
ROA01, ROA02, ROA03, ROA05, APPNO ";
FROM_SQL = " FROM ROWK ";
WHERE_SQL = " WHERE 1=1 ";
ORDER_SQL = " ORDER BY ROYMM, ROENO";
this.Form_View = fvROWK;
this.Grid_View = gvROWK;
this.FormView_DataSource = dsROWKForm;
this.GridView_DataSource = dsROWKGrid;
this.Multi_View = MultiView1;
if (ForwardSource != "")
_ROPYN = GetStringParam("ROPYN");
_YY = GetIntParam("YY");
if (_YY > 0)
{
txtYY.Text = _YY.ToString();
ddlROPYN.DataSource = new BpaaDAC().GetBpaaWithTY(_YY + WGuard1.CY11);
ddlROPYN.DataBind();
ListItem item = ddlROPYN.Items.FindByValue(_ROPYN);
if (item != null)
item.Selected = true;
}
else
{
txtYY.Focus();
}
MultiView1.Visible = _ROPYN != "";
GetGridViewRowColor(gvROWK);
switch (MultiView1.ActiveViewIndex)
{
case 0:
{
break;
}
case 1:
{
Search();
break;
}
}
}
// 查詢按鈕
protected void btnSearch_Click(object sender, EventArgs e)
{
ViewState["ROENO"] = txtROENO.Text;
ViewState["ROYMM"] = txtROYMM.Text;
_ROENO = txtROENO.Text;
_ROYMM = txtROYMM.Text;
if (_ROENO.Length == 0 &&
_ROYMM.Length == 0)
{
cvMessage.ErrorMessage = GetString("NOSRHCOND");
cvMessage.IsValid = false;
}
else
{
MultiView1.ActiveViewIndex = 1;
Search();
gvROWK.PageIndex = 0;
gvROWK.SelectedIndex = 0;
gvROWK.DataBind();
}
}
// 取消查詢按鈕
protected void btnCancel_Click(object sender, EventArgs e)
{
MultiView1.ActiveViewIndex = 1;
}
protected void btnInsert_Click(object sender, EventArgs e)
{
}
// 查詢動作
protected override void Search()
{
base.Search();
StringBuilder sql = new StringBuilder();
sql.Append(SELECT_SQL);
sql.Append(FROM_SQL);
sql.Append(WHERE_SQL);
dsROWKGrid.SelectParameters.Clear();
AddSearch(sql, dsROWKGrid, "ROPYN", _ROPYN, "", true);
AddSearch(sql, dsROWKGrid, "ROENO", _ROENO, "", true);
DateTime aYYMM;
if (CheckDate(_ROYMM + "01", out aYYMM))
AddSearch(sql, dsROWKGrid, "ROYMM", aYYMM.ToString(WGuard1.InvariantCulture), "", false);
sql.Append(ORDER_SQL);
dsROWKGrid.SelectCommand = sql.ToString();
dsROWKForm.SelectCommand = SELECT_SQL + FROM_SQL + " WHERE ROENO=@ROENO AND ROYMM=@ROYMM ";
}
protected void cvROENO_ServerValidate(object source, ServerValidateEventArgs args)
{
BPSN_DAC bpsn = new BPSN_DAC(WConfig.GetConnectionConfig(), WConfig.GetConnectionConfigName());
args.IsValid = args.Value != "" && bpsn.IsExist(args.Value, true);
}
protected void cvROYMM_ServerValidate(object source, ServerValidateEventArgs args)
{
DateTime aYYMM;
args.IsValid = args.Value != "" && CheckDate(args.Value + "01", out aYYMM) && aYYMM.Year == _YY + WGuard1.CY11;
}
protected void cvROT01_ServerValidate(object source, ServerValidateEventArgs args)
{
int i;
args.IsValid = args.Value != "" && Int32.TryParse(args.Value, out i) && i >= 0;
}
protected override void FormView_InsertDataBound(object sender, EventArgs e)
{
base.FormView_InsertDataBound(sender, e);
if (_ROPYN == "000000001")
RegisterLookupEvent(fvROWK, "btnROWK_ROENO_WQRY", "txtROWK_ROENO", "txtROWK_ROENO,lbROWK_ROENOX", "BPSN1", "NOT EXISTS (SELECT RANUM FROM RASN WHERE RANUM=BPENO AND RAEDT IS NULL)");
else
RegisterLookupEvent(fvROWK, "btnROWK_ROENO_WQRY", "txtROWK_ROENO", "txtROWK_ROENO,lbROWK_ROENOX", "BPSN1", "BPENO IN (SELECT RANUM FROM RASN WHERE RAPYN='" + _ROPYN + "')");
(fvROWK.FindControl("txtROWK_ROYMM") as ITextControl).Text = DateTime.UtcNow.AddHours(8).ToString("yyyyMM");
(fvROWK.FindControl("txtROWK_ROT01") as ITextControl).Text = "0";
(fvROWK.FindControl("txtROWK_ROT02") as ITextControl).Text = "0";
(fvROWK.FindControl("txtROWK_ROT03") as ITextControl).Text = "0";
(fvROWK.FindControl("txtROWK_ROT04") as ITextControl).Text = "0";
(fvROWK.FindControl("txtROWK_ROT05") as ITextControl).Text = "0";
SetClientFocus(fvROWK, "txtROWK_ROENO");
}
protected override void FormView_EditDataBound(object sender, EventArgs e)
{
base.FormView_EditDataBound(sender, e);
if (_ROPYN == "000000001")
RegisterLookupEvent(fvROWK, "btnROWK_ROENO_WQRY", "txtROWK_ROENO", "txtROWK_ROENO,lbROWK_ROENOX", "BPSN1", "NOT EXISTS (SELECT RANUM FROM RASN WHERE RANUM=BPENO AND RAEDT IS NULL)");
else
RegisterLookupEvent(fvROWK, "btnROWK_ROENO_WQRY", "txtROWK_ROENO", "txtROWK_ROENO,lbROWK_ROENOX", "BPSN1", "BPENO IN (SELECT RANUM FROM RASN WHERE RAPYN='" + _ROPYN + "')");
SetClientFocus(fvROWK, "txtROWK_ROENO");
}
protected override void FormView_ItemCommand(object sender, FormViewCommandEventArgs e)
{
base.FormView_ItemCommand(sender, e);
switch (e.CommandName)
{
case "Search":
SetClientFocus(txtROENO);
break;
}
}
protected override void CalcFields(SqlDataSourceCommandEventArgs e)
{
base.CalcFields(e);
// 由日期 + 人員,取得時薪、前二加班、後二加班、假日加班比例
DateTime aYYMM;
CheckDate(e.Command.Parameters["@ROYMM"].Value.ToString() + "01", out aYYMM);
e.Command.Parameters["@ROYMM"].Value = aYYMM;
string roeno = e.Command.Parameters["@ROENO"].Value.ToString();
int bpsrm;
int bpp02;
double bpbft;
double bpaft;
double bphol;
string bpovr;
string bplve;
string bpott;
GetData gd = new GetData();
gd.Query = Query;
gd.GetRASN_DateRange_Bppyn_Bpeno_Overwork_Rate(aYYMM, aYYMM.AddMonths(1).AddDays(-1), _ROPYN, roeno,
out bpsrm, out bpp02, out bpbft, out bpaft, out bphol, out bpovr, out bplve, out bpott);
// 計算加班費
e.Command.Parameters["@ROA01"].Value = ExtraWork.CalculateOverTimeInt(bpsrm, bpp02, Convert.ToInt32(e.Command.Parameters["@ROT01"].Value) * 60, bpbft, bpovr, bpott);
e.Command.Parameters["@ROA02"].Value = ExtraWork.CalculateOverTimeInt(bpsrm, bpp02, Convert.ToInt32(e.Command.Parameters["@ROT02"].Value) * 60, bpaft, bpovr, bpott);
e.Command.Parameters["@ROA03"].Value = ExtraWork.CalculateOverTimeInt(bpsrm, bpp02, Convert.ToInt32(e.Command.Parameters["@ROT03"].Value) * 60, bphol, bpovr, bpott);
e.Command.Parameters["@ROA05"].Value = ExtraWork.CalculateOverTimeInt(bpsrm, bpp02, Convert.ToInt32(e.Command.Parameters["@ROT05"].Value) * 60, bpaft + 1, bpovr, bpott);
}
protected override void FormView_ItemInserting(object sender, FormViewInsertEventArgs e)
{
base.FormView_ItemInserting(sender, e);
}
protected override void FormView_DataSource_Inserting(object sender, SqlDataSourceCommandEventArgs e)
{
e.Command.Parameters["@ROPYN"].Value = _ROPYN;
base.FormView_DataSource_Inserting(sender, e);
}
protected void Next_Click(object sender, EventArgs e)
{
ParamList["ROPYN"] = ddlROPYN.SelectedValue;
DoAfterCommand("ROWK");
}
protected override void GridView_DataSource_Selected(object sender, SqlDataSourceStatusEventArgs e)
{
base.GridView_DataSource_Selected(sender, e);
if (e.AffectedRows == 0)
{
if (MultiView1.ActiveViewIndex != 0)
{
gvROWK.Visible = false;
fvROWK.ChangeMode(FormViewMode.Insert);
FormView_ModeChanged(sender, e);
}
}
}
protected void btnYY_Click(object sender, EventArgs e)
{
int year;
if (!Int32.TryParse(txtYY.Text.Trim(), out year))
{
cvMessage.IsValid = false;
cvMessage.ErrorMessage = "請輸入正確的年度";
return;
}
MultiView1.Visible = false;
ParamList["YY"] = year;
ParamList["ROPYN"] = "";
DoAfterCommand("ROWK");
}
}