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; /// /// 加班匯總輸入 /// 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"); } }