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;
using System.Drawing;
using Wellan.Web.UI;
using System.Collections.Generic;
using NPOI.HSSF.UserModel;
using System.Collections.Specialized;
///
/// 勞健保加退保紀錄
///
public partial class forms_customer_fmRpir : Wellan.Web.UI.WUserControlBase
{
private string _RPENO = "";
private string _BPNME = "";
private string _RPREN = "";
private string _RPRENB = "";
private DateTime _RPXDT1 = new DateTime();
private DateTime _RPXDT2 = new DateTime();
private DateTime _RPBDT1 = new DateTime();
private DateTime _RPBDT2 = new DateTime();
private string _RPOPT = "";
private int _RPITM = 0;
private BPSN_DAC bpsn;
protected string tableName = "";
protected string mode = "";
protected string BPENO = "";
protected void Page_Load(object sender, EventArgs e)
{
_RPENO = ViewState["RPENO"] != null ? ViewState["RPENO"].ToString() : "";
_BPNME = ViewState["BPNME"] != null ? ViewState["BPNME"].ToString() : "";
_RPREN = ViewState["RPREN"] != null ? ViewState["RPREN"].ToString() : "";
_RPITM = ViewState["RPITM"] != null ? Convert.ToInt32(ViewState["RPITM"]) : 0;
_RPXDT1 = ViewState["RPXDT1"] != null ? Convert.ToDateTime(ViewState["RPXDT1"]) : new DateTime();
_RPXDT2 = ViewState["RPXDT2"] != null ? Convert.ToDateTime(ViewState["RPXDT2"]) : new DateTime();
_RPOPT = ViewState["RPOPT"] != null ? ViewState["RPOPT"].ToString() : "";
_RPBDT1 = ViewState["RPBDT1"] != null ? Convert.ToDateTime(ViewState["RPBDT1"]) : new DateTime();
_RPBDT2 = ViewState["RPBDT2"] != null ? Convert.ToDateTime(ViewState["RPBDT2"]) : new DateTime();
tableName = ViewState["tableName"] != null ? ViewState["tableName"].ToString() : "RPIR";
// if (IsPostBack)
// RPIRGrid.DataBind();
RegisterCalendarEvent(this, "txtRPXDT_1_DATE", "txtRPXDT_1");
RegisterCalendarEvent(this, "txtRPXDT_2_DATE", "txtRPXDT_2");
RegisterCalendarEvent(this, "txtRPBDT_1_DATE", "txtRPBDT_1");
RegisterCalendarEvent(this, "txtRPBDT_2_DATE", "txtRPBDT_2");
btnReturnBPSN.Enabled = GetStringParam("mode") == "BPSN";
}
protected override void OnInit(EventArgs e)
{
if (GetStringParam("mode") == "BPSN")
{
FunctionName = "FMRPIR_BPSN";
}
base.OnInit(e);
_RPRENB = GetStringParam("RPRENB");
GetGridViewRowColor(RPIRGrid);
ShowData();
}
private void ShowData()
{
switch (tableName)
{
case "":
case "RPIR":
WLabel1.Text = "勞健保加退保紀錄";
RegisterLookupEvent(this, "btnRPIR_RPENO_WQRY", "txtRPIR_RPENO", "txtRPIR_RPENO,lbRPIR_RPENOX", "BPSN");
SetClientFocus(txtRPIR_RPENO);
Search();
RPIRGrid.DataSourceID = "dsRPIRGrid";
RPIRForm.DataSourceID = "dsRPIRForm";
break;
case "RPIB":
WLabel1.Text = "勞健保加退保異動紀錄";
SearchB();
RPIRGrid.DataSourceID = "dsRPIBGrid";
RPIRForm.DataSourceID = "dsRPIBForm";
RPIRGrid.SelectedIndex = 0;
RPIRGrid.PageIndex = 0;
break;
}
}
// 查詢按鈕
protected void btnSearch_Click(object sender, EventArgs e)
{
ParseSearchInput();
if (string.IsNullOrEmpty(_RPENO) &&
string.IsNullOrEmpty(_BPNME) &&
_RPXDT1.Ticks == 0 &&
_RPXDT2.Ticks == 0 &&
_RPBDT1.Ticks == 0 &&
_RPBDT2.Ticks == 0 &&
string.IsNullOrEmpty(_RPOPT))
{
lbMessage.Text = GetString("NOSRHCOND");
lbMessage.Visible = true;
}
else
{
MultiView1.ActiveViewIndex = 1;
Search();
RPIRGrid.DataSourceID = "dsRPIRGrid";
RPIRForm.DataSourceID = "dsRPIRForm";
RPIRGrid.PageIndex = 0;
RPIRGrid.SelectedIndex = 0;
RPIRGrid.DataBind();
// 查詢有資料時,才將查詢條件紀錄在 ViewState 中
if (RPIRGrid.Rows.Count > 0)
{
ViewState["RPENO"] = _RPENO;
ViewState["BPNME"] = _BPNME;
ViewState["RPXDT1"] = _RPXDT1;
ViewState["RPXDT2"] = _RPXDT2;
ViewState["RPBDT1"] = _RPBDT1;
ViewState["RPBDT2"] = _RPBDT2;
ViewState["RPOPT"] = _RPOPT;
ViewState["tableName"] = "";
}
}
}
private void ParseSearchInput()
{
_RPENO = txtRPIR_RPENO.Text;
_BPNME = txtBPSN_BPNME.Text;
WGuard1.CheckDate(txtRPXDT_1.Text, out _RPXDT1);
WGuard1.CheckDate(txtRPXDT_2.Text, out _RPXDT2);
WGuard1.CheckDate(txtRPBDT_1.Text, out _RPBDT1);
WGuard1.CheckDate(txtRPBDT_2.Text, out _RPBDT2);
var rpopts = new List();
for (int i = 0; i < rblRPOPT.Items.Count; i++)
{
if (rblRPOPT.Items[i].Selected)
{
rpopts.Add(rblRPOPT.Items[i].Value);
}
}
_RPOPT = string.Join(",", rpopts.ToArray());
}
// 查詢取消按鈕
protected void btnCancel_Click(object sender, EventArgs e)
{
//ViewState["RPENO"] = "";
//ViewState["BPNME"] = "";
//ViewState["tableName"] = "";
//_RPENO = "";
//_BPNME = "";
Search();
RPIRGrid.DataBind();
MultiView1.ActiveViewIndex = 1;
}
// 查詢動作
protected override void Search()
{
if (MultiView1.ActiveViewIndex == 1)
{
RPIRForm.Visible = true;
}
mode = GetStringParam("mode");
BPENO = GetStringParam("BPENO");
if (mode == "BPSN")
{
dsRPIRGrid.SelectParameters["orderBy"].DefaultValue = "A.RPREN DESC";
dsRPIRGrid.SelectParameters["RPENO"].DefaultValue = BPENO;
}
else
{
dsRPIRGrid.SelectParameters["orderBy"].DefaultValue = "A.RPREN DESC";
dsRPIRGrid.SelectParameters["RPENO"].DefaultValue = _RPENO;
dsRPIRGrid.SelectParameters["BPNME"].DefaultValue = _BPNME;
dsRPIRGrid.SelectParameters["RPXDT1"].DefaultValue = _RPXDT1.Ticks > 0 ? string.Format("{0:yyyy-MM-dd}", _RPXDT1) : "";
dsRPIRGrid.SelectParameters["RPXDT2"].DefaultValue = _RPXDT2.Ticks > 0 ? string.Format("{0:yyyy-MM-dd}", _RPXDT2) : "";
dsRPIRGrid.SelectParameters["RPOPT"].DefaultValue = _RPOPT;
dsRPIRGrid.SelectParameters["RPBDT1"].DefaultValue = _RPBDT1.Ticks > 0 ? string.Format("{0:yyyy-MM-dd}", _RPBDT1) : "";
dsRPIRGrid.SelectParameters["RPBDT2"].DefaultValue = _RPBDT2.Ticks > 0 ? string.Format("{0:yyyy-MM-dd}", _RPBDT2) : "";
if (ViewState["RPIRGrid.RPREN"] != null)
{
RpirDAC rpir = new RpirDAC();
var rprenIndex = rpir.SelectRPRENIndex(
ViewState["RPIRGrid.RPREN"].ToString()
, _RPENO
, _BPNME
, _RPXDT1
, _RPXDT2
, _RPOPT
, _RPBDT1
, _RPBDT2);
if (rprenIndex >= 0)
{
RPIRGrid.PageIndex = rprenIndex / RPIRGrid.PageSize;
RPIRGrid.SelectedIndex = rprenIndex % RPIRGrid.PageSize;
}
ViewState["RPIRGrid.RPREN"] = null;
}
}
}
private void SearchB()
{
if (MultiView1.ActiveViewIndex == 1)
{
RPIRForm.Visible = true;
}
dsRPIBGrid.SelectParameters["RPREN"].DefaultValue = _RPRENB;
}
private void CalcFields(ObjectDataSourceMethodEventArgs e)
{
e.InputParameters["RPOLD"] = (RPIRForm.FindControl("chbRPIR_RPOLD") as CheckBox).Checked ? "Y" : "N";
e.InputParameters["RPLIS"] = (RPIRForm.FindControl("chbRPIR_RPLIS") as CheckBox).Checked ? "Y" : "N";
e.InputParameters["RPHIS"] = (RPIRForm.FindControl("chbRPIR_RPHIS") as CheckBox).Checked ? "Y" : "N";
}
protected void dsRPIRForm_Inserting(object sender, ObjectDataSourceMethodEventArgs e)
{
CalcFields(e);
// 產生新的單號
switch (tableName)
{
case "RPIR":
e.InputParameters["RPREN"] = WGuard1.WNextRen(DateTime.UtcNow.AddHours(8), "RPIR", "RPREN", "YYYYMM<9999>", "");
break;
case "RPIB":
e.InputParameters["RPREN"] = _RPREN;
e.InputParameters["RPITM"] = 1;
break;
}
}
protected void dsRPIRForm_Updating(object sender, ObjectDataSourceMethodEventArgs e)
{
CalcFields(e);
}
protected void RPIRGrid_DataBound(object sender, EventArgs e)
{
GridView_DataBound(sender, e);
mode = GetStringParam("mode");
BPENO = GetStringParam("BPENO");
if (RPIRGrid.Rows.Count > 0)
{
if (RPIRGrid.SelectedIndex == -1)
RPIRGrid.SelectedIndex = 0;
if (RPIRGrid.SelectedIndex > RPIRGrid.Rows.Count - 1)
RPIRGrid.SelectedIndex = RPIRGrid.Rows.Count - 1;
RPIRForm.DataBind();
_RPREN = RPIRGrid.SelectedDataKey["RPREN"].ToString();
_RPITM = Convert.ToInt32(RPIRGrid.SelectedDataKey["RPITM"]);
ViewState["RPREN"] = _RPREN;
ParamList["RPRENB"] = _RPREN;
ViewState["RPITM"] = _RPITM;
}
}
protected void RPIRGrid_PageIndexChanged(object sender, EventArgs e)
{
Search();
RPIRGrid.SelectedIndex = 0;
RPIRGrid.DataBind();
}
protected void dsRPIRGrid_Selected(object sender, ObjectDataSourceStatusEventArgs e)
{
// if (e.ReturnValue == null || (e.ReturnValue as DataTable).Rows.Count == 0)
if (e.ReturnValue is Int32 && WDAC.GetInt32Value(e.ReturnValue) == 0)
{
mode = GetStringParam("mode");
BPENO = GetStringParam("BPENO");
if (mode == "BPSN")
{
RPIRForm.ChangeMode(FormViewMode.Insert);
RPIRForm_ModeChanged(sender, e);
RPIRForm.DataBind();
}
else
{
MultiView1.ActiveViewIndex = 0;
lbMessage.Text = GetString("NODATA");
lbMessage.Visible = true;
}
/*
switch (MultiView1.ActiveViewIndex)
{
case 0:
lbMessage.Text = GetString("NODATA");
lbMessage.Visible = true;
break;
case 1:
RPIRForm.ChangeMode(FormViewMode.Insert);
RPIRForm_ModeChanged(sender, e);
break;
}
*/
}
}
protected void RPIRForm_ItemCommand(object sender, FormViewCommandEventArgs e)
{
mode = GetStringParam("mode");
BPENO = GetStringParam("BPENO");
switch (e.CommandName)
{
case "New":
switch (e.CommandArgument.ToString())
{
case "1":
tableName = "RPIR";
break;
case "2":
tableName = "RPIB";
break;
}
ViewState["tableName"] = tableName;
break;
case "Search":
MultiView1.ActiveViewIndex = 0;
break;
case "Cancel":
tableName = "RPIR";
ViewState["tableName"] = tableName;
Search();
RPIRForm.ChangeMode(FormViewMode.ReadOnly);
RPIRForm_ModeChanged(sender, e);
break;
case "RPIR":
tableName = "RPIR";
ViewState["tableName"] = tableName;
ShowData();
break;
case "RPIBSearch":
tableName = "RPIB";
ViewState["tableName"] = tableName;
// 紀錄目前的PK
ViewState["RPIRGrid.RPREN"] = RPIRGrid.SelectedDataKey.Values["RPREN"];
ShowData();
break;
case "BPSN":
ParamList["BPENO"] = GetStringParam("BPENO");
DoAfterCommand("BPSN");
break;
}
}
protected void RPIRForm_ItemDeleted(object sender, FormViewDeletedEventArgs e)
{
Search();
RPIRGrid.DataBind();
if (RPIRGrid.SelectedIndex < 0 || RPIRGrid.SelectedIndex > RPIRGrid.Rows.Count - 1)
{
RPIRGrid.SelectedIndex = RPIRGrid.Rows.Count - 1;
// RPIRGrid.DataBind();
}
if (RPIRGrid.Rows.Count > 0)
{
RPIRForm.DataBind();
}
}
protected void RPIRForm_ItemInserted(object sender, FormViewInsertedEventArgs e)
{
tableName = "RPIR";
ViewState["tableName"] = tableName;
Search();
}
protected void RPIRForm_ItemUpdated(object sender, FormViewUpdatedEventArgs e)
{
Search();
}
protected void RPIRForm_ModeChanged(object sender, EventArgs e)
{
switch (RPIRForm.CurrentMode)
{
case FormViewMode.ReadOnly:
RPIRGrid.Visible = true;
RPIRGrid.DataBind();
if (RPIRGrid.Rows.Count > 0)
{
if (RPIRGrid.SelectedIndex == -1)
{
RPIRGrid.SelectedIndex = 0;
}
/*
if (OldMode == FormViewMode.Insert)
{
RPIRGrid.PageIndex = RPIRGrid.PageCount - 1;
RPIRGrid.DataBind();
RPIRGrid.SelectedIndex = RPIRGrid.Rows.Count - 1;
}
RPIRGrid.DataBind();
RPIRForm.DataBind();
*/
}
break;
case FormViewMode.Edit:
RPIRGrid.Visible = false;
break;
case FormViewMode.Insert:
RPIRGrid.Visible = false;
break;
}
}
protected void RPIRForm_ModeChanging(object sender, FormViewModeEventArgs e)
{
OldMode = (sender as FormView).CurrentMode;
}
protected void RPIRForm_DataBound(object sender, EventArgs e)
{
var rasnDao = new RasnDAC(Query);
DataTable rasn;
switch (RPIRForm.CurrentMode)
{
case FormViewMode.ReadOnly:
if ((RPIRForm.FindControl("lbRPIR_RPENO") as ITextControl) != null)
{
BPENO = (RPIRForm.FindControl("lbRPIR_RPENO") as ITextControl).Text;
DateTime RPBDT;
WGuard1.CheckDate((RPIRForm.FindControl("lbRPIR_RPBDT") as ITextControl).Text, out RPBDT);
rasn = rasnDao.SelectRecentByDate(BPENO, RPBDT);
if (rasn.Rows.Count > 0)
{
var bpsrm = WDAC.GetInt32Value(rasn.Rows[0]["BPSRM"]);
var lbRPSLY = (RPIRForm.FindControl("lbRPIR_RPSLY") as ITextControl);
if (lbRPSLY != null && bpsrm > 0)
{
lbRPSLY.Text = string.Format("{0:###,###,###,###,##0.####}", bpsrm);
}
}
}
break;
case FormViewMode.Edit:
RegisterLookupEvent(RPIRForm, "btnRPIR_RPENO_WQRY", "txtRPIR_RPENO", "txtRPIR_RPENO,lbRPIR_RPENOX", "BPSN1");
RegisterCalendarEvent(RPIRForm, "btnRPIR_RPSDT_DATE", "txtRPIR_RPSDT");
RegisterCalendarEvent(RPIRForm, "btnRPIR_RPEDT_DATE", "txtRPIR_RPEDT");
RegisterCalendarEvent(RPIRForm, "btnRPIR_RPXDT_DATE", "txtRPIR_RBPDT");
SetClientFocus(RPIRForm, "txtRPIR_RPENO");
if (_RPITM == 0)
{
RPIRForm.FindControl("lbRPIR_RPBDTLabel").Visible = false;
RPIRForm.FindControl("btnRPIR_RPBDT_DATE").Visible = false;
RPIRForm.FindControl("txtRPIR_RPBDT").Visible = false;
}
else
{
RegisterCalendarEvent(RPIRForm, "btnRPIR_RPBDT_DATE", "txtRPIR_RPBDT");
}
FormControl();
break;
case FormViewMode.Insert:
RegisterLookupEvent(RPIRForm, "btnRPIR_RPENO_WQRY", "txtRPIR_RPENO", "txtRPIR_RPENO,lbRPIR_RPENOX", "BPSN1");
RegisterCalendarEvent(RPIRForm, "btnRPIR_RPSDT_DATE", "txtRPIR_RPSDT");
RegisterCalendarEvent(RPIRForm, "btnRPIR_RPEDT_DATE", "txtRPIR_RPEDT");
// RegisterCalendarEvent(RPIRForm, "btnRPIR_RPXDT_DATE", "txtRPIR_RPXDT");
switch (tableName)
{
case "RPIR":
SetClientFocus(RPIRForm, "txtRPIR_RPENO");
(RPIRForm.FindControl("txtRPIR_RPSLY") as ITextControl).Text = "0";
(RPIRForm.FindControl("txtRPIR_RPAMT") as ITextControl).Text = "0";
(RPIRForm.FindControl("txtRPIR_RPAM2") as ITextControl).Text = "0";
(RPIRForm.FindControl("txtRPIR_RPAM3") as ITextControl).Text = "0";
(RPIRForm.FindControl("txtRPIR_RPSLA") as ITextControl).Text = "0";
(RPIRForm.FindControl("txtRPIR_RPFMY") as ITextControl).Text = "0";
(RPIRForm.FindControl("txtRPIR_RPFM1") as ITextControl).Text = "0";
(RPIRForm.FindControl("txtRPIR_RPFM2") as ITextControl).Text = "0";
(RPIRForm.FindControl("txtRPIR_RPFM3") as ITextControl).Text = "0";
(RPIRForm.FindControl("chbRPIR_RPLIS") as WCheckBox).Value = "Y";
(RPIRForm.FindControl("chbRPIR_RPHIS") as WCheckBox).Value = "Y";
(RPIRForm.FindControl("chbRPIR_RPOLD") as WCheckBox).Value = "N";
RPIRForm.FindControl("lbRPIR_RPBDTLabel").Visible = false;
RPIRForm.FindControl("btnRPIR_RPBDT_DATE").Visible = false;
RPIRForm.FindControl("txtRPIR_RPBDT").Visible = false;
(RPIRForm.FindControl("rfvRPBDT") as RequiredFieldValidator).Enabled = false;
// (RPIRForm.FindControl("txtRPIR_RPXDT") as ITextControl).Text = string.Format("{0:yyyyMMdd}", DateTime.UtcNow.AddHours(8));
(RPIRForm.FindControl("lbRPIR_RPXDT") as Label).Text = string.Format("{0:yyyyMMdd}", DateTime.UtcNow.AddHours(8));
(RPIRForm.FindControl("hfRPIR_RPXDT") as HiddenField).Value = string.Format("{0:yyyyMMdd}", DateTime.UtcNow.AddHours(8));
(RPIRForm.FindControl("txtRPIR_RPSDT") as ITextControl).Text = string.Format("{0:yyyyMMdd}", DateTime.UtcNow.AddHours(8));
(RPIRForm.FindControl("ddlRPIR_RPPTP") as WDropDownList).SelectedValue = "2"; // 一般勞工
mode = GetStringParam("mode");
BPENO = GetStringParam("BPENO");
if (mode == "BPSN")
{
(RPIRForm.FindControl("txtRPIR_RPENO") as ITextControl).Text = BPENO;
(RPIRForm.FindControl("lbRPIR_RPENOX") as ITextControl).Text = GetLookup("BPSN", BPENO, "BPNME", "");
rasn = rasnDao.SelectRecent(BPENO);
if (rasn.Rows.Count > 0)
{
(RPIRForm.FindControl("txtRPIR_RPSLY") as ITextControl).Text = string.Format("{0:#####0}", WDAC.GetInt32Value(rasn.Rows[0]["BPSRM"]));
(RPIRForm.FindControl("txtRPIR_RPAMT") as ITextControl).Text = string.Format("{0:#####0}", WDAC.GetInt32Value(rasn.Rows[0]["BPSRM"]));
(RPIRForm.FindControl("txtRPIR_RPAM2") as ITextControl).Text = string.Format("{0:#####0}", WDAC.GetInt32Value(rasn.Rows[0]["BPSRM"]));
(RPIRForm.FindControl("txtRPIR_RPAM3") as ITextControl).Text = string.Format("{0:#####0}", WDAC.GetInt32Value(rasn.Rows[0]["BPSRM"]));
}
}
break;
case "RPIB":
// 取得目前資料,複製進畫面的控制項
//ClientShowMessage(_RPREN);
RegisterCalendarEvent(RPIRForm, "btnRPIR_RPBDT_DATE", "txtRPIR_RPBDT");
RpirDAC rpir = new RpirDAC();
DataTable rpirData = rpir.SelectOne(_RPREN, _RPITM);
(RPIRForm.FindControl("txtRPIR_RPBDT") as ITextControl).Text = string.Format("{0:yyyyMMdd}", DateTime.UtcNow.AddHours(8));
if (rpirData.Rows.Count > 0)
{
(RPIRForm.FindControl("lbRPIR_RPREN") as ITextControl).Text = rpirData.Rows[0]["RPREN"].ToString();
(RPIRForm.FindControl("txtRPIR_RPENO") as ITextControl).Text = rpirData.Rows[0]["RPENO"].ToString();
(RPIRForm.FindControl("txtRPIR_RPSDT") as ITextControl).Text = rpirData.Rows[0]["RPSDT"] != DBNull.Value ? Convert.ToDateTime(rpirData.Rows[0]["RPSDT"]).ToString("yyyyMMdd") : "";
(RPIRForm.FindControl("txtRPIR_RPEDT") as ITextControl).Text = rpirData.Rows[0]["RPEDT"] != DBNull.Value ? Convert.ToDateTime(rpirData.Rows[0]["RPEDT"]).ToString("yyyyMMdd") : "";
(RPIRForm.FindControl("chbRPIR_RPLIS") as WCheckBox).Value = rpirData.Rows[0]["RPLIS"].ToString();
(RPIRForm.FindControl("chbRPIR_RPHIS") as WCheckBox).Value = rpirData.Rows[0]["RPHIS"].ToString();
(RPIRForm.FindControl("chbRPIR_RPOLD") as WCheckBox).Value = rpirData.Rows[0]["RPOLD"].ToString();
(RPIRForm.FindControl("chbRPIR_RPOVR") as WCheckBox).Value = rpirData.Rows[0]["RPOVR"].ToString();
(RPIRForm.FindControl("txtRPIR_RPSLY") as ITextControl).Text = rpirData.Rows[0]["RPSLY"].ToString();
(RPIRForm.FindControl("txtRPIR_RPAMT") as ITextControl).Text = rpirData.Rows[0]["RPAMT"].ToString();
(RPIRForm.FindControl("txtRPIR_RPAM2") as ITextControl).Text = rpirData.Rows[0]["RPAM2"].ToString();
(RPIRForm.FindControl("txtRPIR_RPAM3") as ITextControl).Text = rpirData.Rows[0]["RPAM3"].ToString();
(RPIRForm.FindControl("txtRPIR_RPSLA") as ITextControl).Text = rpirData.Rows[0]["RPSLA"].ToString();
(RPIRForm.FindControl("ddlRPIR_RPPTP") as WDropDownList).SelectedValue = rpirData.Rows[0]["RPPTP"].ToString();
(RPIRForm.FindControl("ddlRPIR_RPNAT") as WDropDownList).SelectedValue = rpirData.Rows[0]["RPNAT"].ToString();
(RPIRForm.FindControl("ddlRPIR_RPDIS") as WDropDownList).SelectedValue = rpirData.Rows[0]["RPDIS"].ToString();
(RPIRForm.FindControl("ddlRPIR_RPDIH") as WDropDownList).SelectedValue = rpirData.Rows[0]["RPDIH"].ToString();
(RPIRForm.FindControl("txtRPIR_RPFMY") as ITextControl).Text = rpirData.Rows[0]["RPFMY"].ToString();
(RPIRForm.FindControl("txtRPIR_RPFM1") as ITextControl).Text = rpirData.Rows[0]["RPFM1"].ToString();
(RPIRForm.FindControl("txtRPIR_RPFM2") as ITextControl).Text = rpirData.Rows[0]["RPFM2"].ToString();
(RPIRForm.FindControl("txtRPIR_RPFM3") as ITextControl).Text = rpirData.Rows[0]["RPFM3"].ToString();
// (RPIRForm.FindControl("ddlRPIR_RPCPY") as WDropDownList).SelectedValue = rpirData.Rows[0]["RPCPY"].ToString();
(RPIRForm.FindControl("hfRPIR_RPFMD") as HiddenField).Value = rpirData.Rows[0]["RPFMD"].ToString();
// (RPIRForm.FindControl("txtRPIR_RPXDT") as ITextControl).Text = string.Format("{0:yyyyMMdd}", DateTime.UtcNow.AddHours(8));
(RPIRForm.FindControl("lbRPIR_RPXDT") as Label).Text = string.Format("{0:yyyyMMdd}", DateTime.UtcNow.AddHours(8));
(RPIRForm.FindControl("hfRPIR_RPXDT") as HiddenField).Value = string.Format("{0:yyyyMMdd}", DateTime.UtcNow.AddHours(8));
}
break;
}
FormControl();
break;
}
}
private void FormControl()
{
var rpoptCtrl = (RPIRForm.FindControl("rblRPIR_RPOPT") as RadioButtonList);
var rpopt = rpoptCtrl != null && !string.IsNullOrEmpty(rpoptCtrl.SelectedValue) ? rpoptCtrl.SelectedValue : "-";
// 新增
if (RPIRForm.CurrentMode == FormViewMode.Insert && tableName == "RPIR")
{
//if (rpoptCtrl.SelectedValue == "")
// rpoptCtrl.SelectedValue = "加保";
rpoptCtrl.Items[0].Enabled = true;
rpoptCtrl.Items[1].Enabled = false;
rpoptCtrl.Items[2].Enabled = false;
rpoptCtrl.Items[3].Enabled = false;
rpoptCtrl.Items[4].Enabled = false;
rpoptCtrl.Items[5].Enabled = false;
rpoptCtrl.Items[6].Enabled = false;
}
// 更正加保那筆
else if (RPIRForm.CurrentMode == FormViewMode.Edit
&& Convert.ToInt32((RPIRForm.FindControl("hfRPIR_RPITM") as HiddenField).Value) == 0)
{
//if (rpoptCtrl.SelectedValue == "")
// rpoptCtrl.SelectedValue = "加保";
rpoptCtrl.Items[0].Enabled = true;
rpoptCtrl.Items[1].Enabled = false;
rpoptCtrl.Items[2].Enabled = false;
rpoptCtrl.Items[3].Enabled = false;
rpoptCtrl.Items[4].Enabled = false;
rpoptCtrl.Items[5].Enabled = false;
rpoptCtrl.Items[6].Enabled = false;
}
else // 新增異動與更正異動
{
//if (rpoptCtrl.SelectedValue == "")
// rpoptCtrl.SelectedValue = "其他";
rpoptCtrl.Items[0].Enabled = false;
rpoptCtrl.Items[1].Enabled = true;
rpoptCtrl.Items[2].Enabled = true;
rpoptCtrl.Items[3].Enabled = true;
rpoptCtrl.Items[4].Enabled = true;
rpoptCtrl.Items[5].Enabled = true;
rpoptCtrl.Items[6].Enabled = true;
}
SetControlEnabled(RPIRForm, "txtRPIR_RPENO", true);
SetControlEnabled(RPIRForm, "btnRPIR_RPENO_WQRY", true);
/*
+---------------------+----------------------------------------------------------------------------------------------+
| 申請表欄位 | 說明 |
+---------------------+----------------------------+----------+----------+----------+----------+----------+----------+
| 作業類別 | 加保 | 退保 | 眷屬加保 | 眷屬退保 | 薪資調整 | 留職停薪 | 其他 |
+---------------------+----------------------------+----------+----------+----------+----------+----------+----------+
| 人員編號 | 系統帶入 |
+---------------------+----------------------------------------------------------------------------------------------+
| 人員姓名 | 系統帶入 |
+---------------------+----------------------------------------------------------------------------------------------+
| 表單申請日期 | 開放填寫 |
+---------------------+----------------------------------------------------------------------------------------------+
| 生效日期 | 開放填寫 |
+---------------------+----------------------------+----------+----------+----------+----------+----------+----------+
| 加保日期 | 開放填寫 | 鎖 | 鎖 | 鎖 | 開放填寫 | 鎖 | 開放填寫 |
+---------------------+----------------------------+----------+----------+----------+----------+----------+----------+
| 退保日期 | 鎖 | 開放填寫 | 鎖 | 鎖 | 鎖 | 開放填寫 | 開放填寫 |
+---------------------+----------------------------+----------+----------+----------+----------+----------+----------+
| 薪資 | 人員派遣紀錄帶入 | 鎖 | 鎖 | 鎖 | 開放填寫 | 鎖 | 開放填寫 |
+---------------------+----------------------------+----------+----------+----------+----------+----------+----------+
| 投保金額 | 系統自動帶出(但可手動修改) | 鎖 | 鎖 | 鎖 | 開放填寫 | 鎖 | 開放填寫 |
+---------------------+----------------------------+----------+----------+----------+----------+----------+----------+
| 勞退自提 | 開放填寫 | 鎖 | 鎖 | 鎖 | 鎖 | 鎖 | 開放填寫 |
+---------------------+----------------------------+----------+----------+----------+----------+----------+----------+
| 身份別 | 下拉式選單 | 鎖 | 鎖 | 鎖 | 鎖 | 鎖 | 開放填寫 |
+---------------------+----------------------------+----------+----------+----------+----------+----------+----------+
| 國籍別 | 下拉式選單 | 鎖 | 鎖 | 鎖 | 鎖 | 鎖 | 開放填寫 |
+---------------------+----------------------------+----------+----------+----------+----------+----------+----------+
| 勞保/健保減免比例 | 人資填寫,建議鎖起來 | 鎖 | 鎖 | 鎖 | 鎖 | 鎖 | 開放填寫 |
+---------------------+----------------------------+----------+----------+----------+----------+----------+----------+
| 眷口數~減免100%眷口 | 系統帶入,建議鎖起來 | 鎖 | 鎖 | 鎖 | 鎖 | 鎖 | 鎖 |
+---------------------+----------------------------+----------+----------+----------+----------+----------+----------+
| 備註 | 開放填寫 |
+---------------------+----------------------------+----------+----------+----------+----------+----------+----------+
+---------------------+----------------------------+----------+----------+----------+----------+----------+----------+
| 眷屬姓名 | 開放填寫 | 鎖 | 開放填寫 | 鎖 | 鎖 | 鎖 | 開放填寫 |
+---------------------+----------------------------+----------+----------+----------+----------+----------+----------+
| 身分證字號 | 開放填寫 | 鎖 | 開放填寫 | 鎖 | 鎖 | 鎖 | 開放填寫 |
+---------------------+----------------------------+----------+----------+----------+----------+----------+----------+
| 出生年月日 | 開放填寫 | 鎖 | 開放填寫 | 鎖 | 鎖 | 鎖 | 開放填寫 |
+---------------------+----------------------------+----------+----------+----------+----------+----------+----------+
| 關係 | 開放 | 鎖 | 開放 | 鎖 | 鎖 | 鎖 | 開放填寫 |
+---------------------+----------------------------+----------+----------+----------+----------+----------+----------+
| 減免比例 | 開放 | 鎖 | 開放 | 鎖 | 鎖 | 鎖 | 開放填寫 |
+---------------------+----------------------------+----------+----------+----------+----------+----------+----------+
| 眷屬加保日 | 開放填寫 | 鎖 | 開放填寫 | 鎖 | 鎖 | 鎖 | 開放填寫 |
+---------------------+----------------------------+----------+----------+----------+----------+----------+----------+
| 眷屬退保日 | 鎖 | 開放填寫 | 鎖 | 開放填寫 | 鎖 | 開放填寫 | 開放填寫 |
+---------------------+----------------------------+----------+----------+----------+----------+----------+----------+
*/
SetControlEnabled(RPIRForm, "txtRPIR_RPSDT", "|加保|薪資調整|其他|".Contains(rpopt)); // 加保日期
SetControlEnabled(RPIRForm, "btnRPIR_RPSDT_DATE", "|加保|薪資調整|其他|".Contains(rpopt));
SetControlEnabled(RPIRForm, "txtRPIR_RPEDT", "|退保|留職停薪|其他|".Contains(rpopt)); // 退保日期
SetControlEnabled(RPIRForm, "btnRPIR_RPEDT_DATE", "|退保|留職停薪|其他|".Contains(rpopt));
// (RPIRForm.FindControl("txtRPIR_RPSDT") as WebControl).Enabled = "|加保|薪資調整|其他|".Contains(rpopt); // 加保日期
// (RPIRForm.FindControl("btnRPIR_RPSDT_DATE") as WebControl).Enabled = "|加保|薪資調整|其他|".Contains(rpopt);
// (RPIRForm.FindControl("txtRPIR_RPEDT") as WebControl).Enabled = "|退保|留職停薪|其他|".Contains(rpopt); // 退保日期
// (RPIRForm.FindControl("btnRPIR_RPEDT_DATE") as WebControl).Enabled = "|退保|留職停薪|其他|".Contains(rpopt);
SetControlEnabled(RPIRForm, "chbRPIR_RPLIS", true);
SetControlEnabled(RPIRForm, "chbRPIR_RPHIS", true);
SetControlEnabled(RPIRForm, "chbRPIR_RPOLD", true);
SetControlEnabled(RPIRForm, "chbRPIR_RPOVR", true);
// (RPIRForm.FindControl("chbRPIR_RPLIS") as WebControl).Enabled = true;
// (RPIRForm.FindControl("chbRPIR_RPHIS") as WebControl).Enabled = true;
// (RPIRForm.FindControl("chbRPIR_RPOLD") as WebControl).Enabled = true;
// (RPIRForm.FindControl("chbRPIR_RPOVR") as WebControl).Enabled = true;
SetControlEnabled(RPIRForm, "txtRPIR_RPSLY", false); // 薪資
SetControlEnabled(RPIRForm, "txtRPIR_RPAMT", "|加保|薪資調整|其他|".Contains(rpopt)); // 投保金額
SetControlEnabled(RPIRForm, "txtRPIR_RPAM2", "|加保|薪資調整|其他|".Contains(rpopt)); // 投保金額
SetControlEnabled(RPIRForm, "txtRPIR_RPAM3", "|加保|薪資調整|其他|".Contains(rpopt)); // 投保金額
SetControlEnabled(RPIRForm, "txtRPIR_RPSLA", "|加保|其他|".Contains(rpopt)); // 勞退自提
SetControlEnabled(RPIRForm, "ddlRPIR_RPPTP", "|加保|其他|".Contains(rpopt)); // 身份別
SetControlEnabled(RPIRForm, "ddlRPIR_RPNAT", "|加保|其他|".Contains(rpopt)); // 國籍別
SetControlEnabled(RPIRForm, "ddlRPIR_RPDIS", "|加保|其他|".Contains(rpopt)); // 勞保減免比例
SetControlEnabled(RPIRForm, "ddlRPIR_RPDIH", "|加保|其他|".Contains(rpopt)); // 健保減免比例
//(RPIRForm.FindControl("txtRPIR_RPSLY") as WebControl).Enabled = false; // 薪資
//(RPIRForm.FindControl("txtRPIR_RPAMT") as WebControl).Enabled = "|加保|薪資調整|其他|".Contains(rpopt); // 投保金額
//(RPIRForm.FindControl("txtRPIR_RPSLA") as WebControl).Enabled = "|加保|其他|".Contains(rpopt); // 勞退自提
//(RPIRForm.FindControl("ddlRPIR_RPPTP") as WebControl).Enabled = "|加保|其他|".Contains(rpopt); // 身份別
//(RPIRForm.FindControl("ddlRPIR_RPNAT") as WebControl).Enabled = "|加保|其他|".Contains(rpopt); // 國籍別
//(RPIRForm.FindControl("ddlRPIR_RPDIS") as WebControl).Enabled = "|加保|其他|".Contains(rpopt); // 勞保減免比例
//(RPIRForm.FindControl("ddlRPIR_RPDIH") as WebControl).Enabled = "|加保|其他|".Contains(rpopt); // 健保減免比例
SetControlEnabled(RPIRForm, "txtRPIR_RPFMY", false); // 眷口數
SetControlEnabled(RPIRForm, "txtRPIR_RPFM1", false); // 眷口數
SetControlEnabled(RPIRForm, "txtRPIR_RPFM2", false); // 眷口數
SetControlEnabled(RPIRForm, "txtRPIR_RPFM3", false); // 眷口數
// (RPIRForm.FindControl("txtRPIR_RPFMY") as WebControl).Enabled = "".Contains(rpopt); // 眷口數
// (RPIRForm.FindControl("txtRPIR_RPFM1") as WebControl).Enabled = "".Contains(rpopt); // 眷口數
// (RPIRForm.FindControl("txtRPIR_RPFM2") as WebControl).Enabled = "".Contains(rpopt); // 眷口數
// (RPIRForm.FindControl("txtRPIR_RPFM3") as WebControl).Enabled = "".Contains(rpopt); // 眷口數
}
protected void RPIRGrid_RowDataBound(object sender, GridViewRowEventArgs e)
{
SetGridViewMouseBehavier(RPIRGrid, e.Row);
//GridView_RowDataBound_Shrink_ViewState(sender, e);
}
protected void RPIRGrid_SelectedIndexChanged(object sender, EventArgs e)
{
foreach (GridViewRow row in RPIRGrid.Rows)
SetGridViewMouseBehavier(RPIRGrid, row);
_RPREN = RPIRGrid.SelectedDataKey["RPREN"].ToString();
_RPITM = Convert.ToInt32(RPIRGrid.SelectedDataKey["RPITM"]);
ViewState["RPREN"] = _RPREN;
ParamList["RPRENB"] = _RPREN;
ViewState["RPITM"] = _RPITM;
}
protected void RPIRForm_ItemDeleting(object sender, FormViewDeleteEventArgs e)
{
// 刪除前檢查
// TODO: 檢查關帳日
}
protected override bool CheckInput(System.Collections.Specialized.IOrderedDictionary values)
{
cvMessage.ErrorMessage = "";
cvMessage.IsValid = true;
bool result = true;
if (string.IsNullOrEmpty(values["RPOPT"].ToString()))
{
result = false;
cvMessage.ErrorMessage += "請選擇作業類別
";
cvMessage.IsValid = false;
}
values["RPSDT"] = CheckDate(values["RPSDT"], "請輸入正確的加保日期", ref result, cvMessage);
values["RPXDT"] = CheckDate(values["RPXDT"], "請輸入正確的申請日期", ref result, cvMessage);
if (values["RPEDT"].ToString() != "")
{
values["RPEDT"] = CheckDate(values["RPEDT"], "請輸入正確的退保日期", ref result, cvMessage);
if (WDAC.GetDateTimeValue(values["RPSDT"]) > WDAC.GetDateTimeValue(values["RPEDT"]))
{
result = false;
cvMessage.IsValid = false;
cvMessage.ErrorMessage += "退保日期不可早於加保日期
";
}
}
if (values["RPBDT"].ToString() != "")
values["RPBDT"] = CheckDate(values["RPBDT"], "請輸入正確的生效日期", ref result, cvMessage);
// 公司別固定 TY
values["RPCPY"] = "TY";
// 檢查加保眷屬資料
var rpfmd = Newtonsoft.Json.JsonConvert.DeserializeObject(values["RPFMD"].ToString());
if (rpfmd != null)
{
var rpfmdValid = rpfmd.FindAll(x => x.Valid);
if (rpfmd.Count != rpfmdValid.Count)
{
result = false;
(RPIRForm.FindControl("hfRPIR_RPFMD") as HiddenField).Value = Newtonsoft.Json.JsonConvert.SerializeObject(rpfmd);
cvMessage.ErrorMessage += "眷屬資料有錯誤
";
cvMessage.IsValid = false;
}
values["RPFMD"] = Newtonsoft.Json.JsonConvert.SerializeObject(rpfmdValid);
values["RPFMY"] = rpfmdValid.FindAll(x => x.DEDUCT == "0" && x.OnBoard).Count;
values["RPFM1"] = rpfmdValid.FindAll(x => x.DEDUCT == "25" && x.OnBoard).Count;
values["RPFM2"] = rpfmdValid.FindAll(x => x.DEDUCT == "50" && x.OnBoard).Count;
values["RPFM3"] = rpfmdValid.FindAll(x => x.DEDUCT == "100" && x.OnBoard).Count;
}
// 異動時,退保日期與其他異動不可同時輸入
var RPEDTChanged = false;
var OtherChanged = false;
if (tableName == "RPIB" && RPIRForm.CurrentMode == FormViewMode.Insert ||
tableName == "RPIR" && RPIRForm.CurrentMode == FormViewMode.Edit)
{
// 比對上一筆(異動)資料與輸入資料
RpirDAC rpir = new RpirDAC();
DataTable rpibData = rpir.SelectRPIB(_RPREN, null, "RPITM ASC", true);
DataRow rpibRow = null;
if (RPIRForm.CurrentMode == FormViewMode.Insert && rpibData.Rows.Count > 0)
{
rpibRow = rpibData.Rows[rpibData.Rows.Count - 1];
}
if (RPIRForm.CurrentMode == FormViewMode.Edit && rpibData.Rows.Count > 1)
{
rpibRow = rpibData.Rows[rpibData.Rows.Count - 2];
}
if (rpibRow != null)
{
RPEDTChanged = rpibRow["RPEDT"].ToString() != values["RPEDT"].ToString();
OtherChanged = rpibRow["RPSDT"].ToString() != values["RPSDT"].ToString()
|| rpibRow["RPLIS"].ToString() != values["RPLIS"].ToString()
|| rpibRow["RPHIS"].ToString() != values["RPHIS"].ToString()
|| rpibRow["RPOLD"].ToString() != values["RPOLD"].ToString()
|| rpibRow["RPOVR"].ToString() != values["RPOVR"].ToString()
|| rpibRow["RPSLY"].ToString() != values["RPSLY"].ToString()
|| rpibRow["RPAMT"].ToString() != values["RPAMT"].ToString()
|| rpibRow["RPAM2"].ToString() != values["RPAM2"].ToString()
|| rpibRow["RPAM3"].ToString() != values["RPAM3"].ToString()
|| rpibRow["RPSLA"].ToString() != values["RPSLA"].ToString()
|| rpibRow["RPPTP"].ToString() != values["RPPTP"].ToString()
|| rpibRow["RPNAT"].ToString() != values["RPNAT"].ToString()
|| rpibRow["RPDIS"].ToString() != values["RPDIS"].ToString()
|| rpibRow["RPDIH"].ToString() != values["RPDIH"].ToString()
|| rpibRow["RPFMY"].ToString() != values["RPFMY"].ToString()
|| rpibRow["RPFM1"].ToString() != values["RPFM1"].ToString()
|| rpibRow["RPFM2"].ToString() != values["RPFM2"].ToString()
|| rpibRow["RPFM3"].ToString() != values["RPFM3"].ToString()
// || rpibRow["RPCPY"].ToString() != values["RPCPY"].ToString()
|| rpibRow["RPFMD"].ToString() != values["RPFMD"].ToString();
}
}
if (RPEDTChanged && OtherChanged)
{
result = false;
cvMessage.ErrorMessage += "退保日期異動與其他資料異動請分開輸入,不可在同一筆異動
";
cvMessage.IsValid = false;
}
ProcessCustomValidatorMessage(cvMessage);
return result;
}
protected void RPIRForm_ItemInserting(object sender, FormViewInsertEventArgs e)
{
e.Values["RPDIS"] = (RPIRForm.FindControl("ddlRPIR_RPDIS") as DropDownList).SelectedValue;
e.Values["RPNAT"] = (RPIRForm.FindControl("ddlRPIR_RPNAT") as DropDownList).SelectedValue;
e.Values["RPPTP"] = (RPIRForm.FindControl("ddlRPIR_RPPTP") as DropDownList).SelectedValue;
e.Cancel = !CheckInput(e.Values);
}
protected void RPIRForm_ItemUpdating(object sender, FormViewUpdateEventArgs e)
{
e.Cancel = !CheckInput(e.NewValues);
}
protected void cvNumber_ServerValidate(object source, ServerValidateEventArgs args)
{
int i = 0;
args.IsValid = !string.IsNullOrEmpty(args.Value) && Int32.TryParse(args.Value, out i);
if (!args.IsValid)
return;
var validator = (CustomValidator)source;
var chbRPIR_RPLIS = (WCheckBox)validator.NamingContainer.FindControl("chbRPIR_RPLIS"); // 有勞保
var chbRPIR_RPHIS = (WCheckBox)validator.NamingContainer.FindControl("chbRPIR_RPHIS"); // 有健保
var chbRPIR_RPOLD = (WCheckBox)validator.NamingContainer.FindControl("chbRPIR_RPOLD"); // 已領老年給付
var chbRPIR_RPOVR = (WCheckBox)validator.NamingContainer.FindControl("chbRPIR_RPOVR"); // 超過65歲
bool isRPLIS = chbRPIR_RPLIS != null && chbRPIR_RPLIS.Value == "Y";
bool isRPHIS = chbRPIR_RPHIS != null && chbRPIR_RPHIS.Value == "Y";
bool isRPOLD = chbRPIR_RPOLD != null && chbRPIR_RPOLD.Value == "Y";
bool isRPOVR = chbRPIR_RPOVR != null && chbRPIR_RPOVR.Value == "Y";
switch (validator.ID)
{
case "cvRPSLY": // 薪資必須大於 0
args.IsValid = (i > 0);
break;
case "cvRPAMT": // 勞保投保級距必須大於 0 (有勞保)
args.IsValid = (i > 0) || !isRPLIS;
break;
case "cvRPAM2": // 健保投保級距必須大於 0 (有健保)
args.IsValid = (i > 0) || !isRPHIS;
break;
case "cvRPAM3": // 勞退投保級距必須大於 0 (未領老年給付 未超過65歲)
args.IsValid = (i > 0) || (isRPOLD || isRPOVR);
break;
//case "cvRPFMY": // 眷口數必須大於等於 0
// args.IsValid = i >= 0;
// break;
case "cvRPSLA": // 勞退自提必須 0-6 (未領老年給付 未超過65歲)
args.IsValid = (i >= 0 && i <= 6) || (isRPOLD || isRPOVR);
break;
}
}
protected void cvRPENO_ServerValidate(object source, ServerValidateEventArgs args)
{
if (bpsn == null)
bpsn = new BPSN_DAC(WConfig.GetConnectionConfig(), WConfig.GetConnectionConfigName());
args.IsValid = args.Value != "" && bpsn.IsExist(args.Value, true);
}
protected void rblRPIR_RPOPT_SelectedIndexChanged(object sender, EventArgs e)
{
FormControl();
}
protected void btnRPOPTSelectAll_Click(object sender, EventArgs e)
{
for (var i = 0; i < rblRPOPT.Items.Count; i++) { rblRPOPT.Items[i].Selected = true; }
}
protected void btnExport_Click(object sender, EventArgs e)
{
lbMessage.Visible = false;
List messages = new List();
ParseSearchInput();
var rpopts = _RPOPT.Split(',');
if (_RPXDT1.Ticks == 0 && _RPXDT2.Ticks == 0 && _RPBDT1.Ticks == 0 && _RPBDT2.Ticks == 0)
{
messages.Add("請輸入申請日期範圍或生效日期範圍");
}
if (string.IsNullOrEmpty(_RPOPT))
{
messages.Add("請選擇匯出作業類別");
}
if (messages.Count > 0)
{
lbMessage.Text = string.Join("
", messages.ToArray());
lbMessage.Visible = true;
return;
}
RpirDAC rpirDao = new RpirDAC(Query);
DataTable rpirData = rpirDao.SelectPage(0, Int32.MaxValue, _RPENO, _BPNME, _RPXDT1, _RPXDT2, _RPOPT, _RPBDT1, _RPBDT2, null);
if (rpirData.Rows.Count == 0)
{
lbMessage.Text = GetString("NOSRHCOND");
lbMessage.Visible = true;
return;
}
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.CreateSheet("報表") as HSSFSheet;
sheet.ForceFormulaRecalculation = true;
Excel excel = new Excel();
excel.WorkBook = workbook;
excel.Sheet = sheet;
int row = 0;
int col = 0;
string[] familyRpopts = { "加保", "眷屬加保", "退保", "眷屬退保" };
// 抬頭
excel.SetCellValue(row, col++, "作業類型");
excel.SetCellValue(row, col++, "單號");
excel.SetCellValue(row, col++, "申請人");
excel.SetCellValue(row, col++, "申請日期");
excel.SetCellValue(row, col++, "生效日期");
excel.SetCellValue(row, col++, "人員編號");
excel.SetCellValue(row, col++, "姓名");
excel.SetCellValue(row, col++, "眷屬姓名");
excel.SetCellValue(row, col++, "身分證字號");
excel.SetCellValue(row, col++, "出生年月日");
excel.SetCellValue(row, col++, "加保日期");
excel.SetCellValue(row, col++, "退保日期");
excel.SetCellValue(row, col++, "薪資");
excel.SetCellValue(row, col++, "勞保級距");
excel.SetCellValue(row, col++, "健保級距");
excel.SetCellValue(row, col++, "勞退級距");
excel.SetCellValue(row, col++, "勞退自提");
excel.SetCellValue(row, col++, "加保狀況");
excel.SetCellValue(row, col++, "備註");
row++;
// 內容
foreach (DataRow r in rpirData.Rows)
{
// 取出異動資料
DataTable rpibData = rpirDao.SelectRPIB(WDAC.GetStringValue(r["RPREN"]));
foreach (DataRow br in rpibData.Rows)
{
var rpeno = WDAC.GetStringValue(br["RPENO"]);
var bpnme = WDAC.GetStringValue(br["BPNME"]);
var rpopt = WDAC.GetStringValue(br["RPOPT"]);
var rpxdt = WDAC.GetDateTimeValue(br["RPXDT"]);
var rpbdt = WDAC.GetDateTimeValue(br["RPBDT"]);
var rpedt = WDAC.GetDateTimeValue(br["RPEDT"]);
// 排除異動資料不在查詢範圍中
if (!string.IsNullOrEmpty(_RPENO) && !rpeno.StartsWith(_RPENO)
|| !string.IsNullOrEmpty(_BPNME) && !bpnme.StartsWith(_BPNME)
|| _RPXDT1.Ticks > 0 && _RPXDT2.Ticks > 0 && (rpxdt < _RPXDT1 || rpxdt > _RPXDT2)
|| _RPXDT1.Ticks > 0 && _RPXDT2.Ticks == 0 && rpxdt < _RPXDT1
|| _RPXDT1.Ticks == 0 && _RPXDT2.Ticks > 0 && rpxdt > _RPXDT2
|| rpopts.Length > 0 && Array.IndexOf(rpopts, rpopt) < 0
|| _RPBDT1.Ticks > 0 && _RPBDT2.Ticks > 0 && (rpbdt < _RPBDT1 || rpxdt > _RPBDT2)
|| _RPBDT1.Ticks > 0 && _RPBDT2.Ticks == 0 && rpbdt < _RPBDT1
|| _RPBDT1.Ticks == 0 && _RPBDT2.Ticks > 0 && rpbdt > _RPBDT2
)
{
continue;
}
var trusr = !string.IsNullOrEmpty(br["TRUSR"].ToString()) ? GetLookup("BPSN", WDAC.GetStringValue(br["TRUSR"]), "BPNME") : "";
if (true /* || rpopt != "眷屬加保" && rpopt != "眷屬退保" */)
{
col = 0;
excel.SetCellValue(row, col++, rpopt);
excel.SetCellValue(row, col++, WDAC.GetStringValue(br["RPREN"]));
excel.SetCellValue(row, col++, trusr);
excel.SetCellValue(row, col++, rpxdt.Ticks > 0 ? string.Format("{0:yyyy/MM/dd}", rpxdt) : "");
excel.SetCellValue(row, col++, rpbdt.Ticks > 0 ? string.Format("{0:yyyy/MM/dd}", rpbdt) : "");
excel.SetCellValue(row, col++, rpeno);
excel.SetCellValue(row, col++, bpnme);
excel.SetCellValue(row, col++, "");
excel.SetCellValue(row, col++, WDAC.GetStringValue(br["BPIDN"]));
excel.SetCellValue(row, col++, br["BPBDY"] != DBNull.Value ? string.Format("{0:yyyy/MM/dd}", WDAC.GetDateTimeValue(br["BPBDY"])) : "");
excel.SetCellValue(row, col++, br["RPSDT"] != DBNull.Value ? string.Format("{0:yyyy/MM/dd}", WDAC.GetDateTimeValue(br["RPSDT"])) : "");
excel.SetCellValue(row, col++, br["RPEDT"] != DBNull.Value ? string.Format("{0:yyyy/MM/dd}", WDAC.GetDateTimeValue(br["RPEDT"])) : "");
excel.SetCellValue(row, col++, WDAC.GetInt32Value(br["RPSLY"]));
excel.SetCellValue(row, col++, WDAC.GetInt32Value(br["RPAMT"]));
excel.SetCellValue(row, col++, WDAC.GetInt32Value(br["RPAM2"]));
excel.SetCellValue(row, col++, WDAC.GetInt32Value(br["RPAM3"]));
excel.SetCellValue(row, col++, WDAC.GetInt32Value(br["RPSLA"]));
// excel.SetCellValue(row, col++, rpedt.Ticks == 0 ? "加保" : "退保");
excel.SetCellValue(row, col++, string.Format("有勞保:{0} / 有健保:{1} / 已領老年給付:{2} / 超過65歲:{3}"
, WDAC.GetStringValue(br["RPLIS"]) == "Y" ? "是" : "否"
, WDAC.GetStringValue(br["RPHIS"]) == "Y" ? "是" : "否"
, WDAC.GetStringValue(br["RPOLD"]) == "Y" ? "是" : "否"
, WDAC.GetStringValue(br["RPOVR"]) == "Y" ? "是" : "否"));
excel.SetCellValue(row, col++, WDAC.GetStringValue(br["RPDOC"]));
row++;
}
// 眷屬
if (Array.IndexOf(familyRpopts, rpopt) < 0)
{
continue;
}
var rpfmd = Newtonsoft.Json.JsonConvert.DeserializeObject(br["RPFMD"].ToString());
var rpfmd_prev = Newtonsoft.Json.JsonConvert.DeserializeObject(br["RPFMD_PREV"].ToString());
if (rpfmd_prev == null)
{
rpfmd_prev = new RPFMDList();
}
if (rpfmd != null)
{
foreach (var rpfmdItem in rpfmd)
{
var rpfmdRpopt = "";
DateTime rpfmdBirthday, rpfmdStartDate, rpfmdEndDate;
WGuard1.CheckDate(rpfmdItem.BIRTHDAY, out rpfmdBirthday);
WGuard1.CheckDate(rpfmdItem.START_DATE, out rpfmdStartDate);
WGuard1.CheckDate(rpfmdItem.END_DATE, out rpfmdEndDate);
if (rpfmd_prev.Find(x => rpfmdItem.Equals(x)) != null)
{
continue;
}
//switch (rpopt)
//{
// case "加保":
// case "眷屬加保":
// rpfmdRpopt = "眷屬加保";
// if (rpfmd_prev != null && rpfmd_prev.Find(x =>
// string.Compare(x.NAME, rpfmdItem.NAME) == 0
// && string.Compare(x.BIRTHDAY, rpfmdItem.BIRTHDAY) == 0
// && string.Compare(x.IDNO, rpfmdItem.IDNO) == 0
// && string.Compare(x.START_DATE, rpfmdItem.START_DATE) == 0
// ) != null
// && !string.IsNullOrEmpty(rpfmdItem.END_DATE))
// {
// continue;
// }
// break;
// case "退保":
// case "眷屬退保":
// rpfmdRpopt = "眷屬退保";
// if (rpfmd_prev != null && rpfmd_prev.Find(x =>
// string.Compare(x.NAME, rpfmdItem.NAME) == 0
// && string.Compare(x.BIRTHDAY, rpfmdItem.BIRTHDAY) == 0
// && string.Compare(x.IDNO, rpfmdItem.IDNO) == 0
// && string.Compare(x.START_DATE, rpfmdItem.START_DATE) == 0
// ) != null
// && string.IsNullOrEmpty(rpfmdItem.END_DATE))
// {
// continue;
// }
// break;
//}
col = 0;
excel.SetCellValue(row, col++, rpfmdRpopt);
excel.SetCellValue(row, col++, WDAC.GetStringValue(br["RPREN"]));
excel.SetCellValue(row, col++, trusr);
excel.SetCellValue(row, col++, rpxdt.Ticks > 0 ? string.Format("{0:yyyy/MM/dd}", rpxdt) : "");
excel.SetCellValue(row, col++, rpbdt.Ticks > 0 ? string.Format("{0:yyyy/MM/dd}", rpbdt) : "");
excel.SetCellValue(row, col++, "");
excel.SetCellValue(row, col++, "");
excel.SetCellValue(row, col++, rpfmdItem.NAME);
excel.SetCellValue(row, col++, rpfmdItem.IDNO);
excel.SetCellValue(row, col++, rpfmdBirthday.Ticks > 0 ? string.Format("{0:yyyy/MM/dd}", rpfmdBirthday) : "");
excel.SetCellValue(row, col++, rpfmdStartDate.Ticks > 0 ? string.Format("{0:yyyy/MM/dd}", rpfmdStartDate) : "");
excel.SetCellValue(row, col++, rpfmdEndDate.Ticks > 0 ? string.Format("{0:yyyy/MM/dd}", rpfmdEndDate) : "");
excel.SetCellValue(row, col++, "");
excel.SetCellValue(row, col++, "");
excel.SetCellValue(row, col++, "");
excel.SetCellValue(row, col++, "");
excel.SetCellValue(row, col++, "");
excel.SetCellValue(row, col++, rpfmdEndDate.Ticks == 0 ? "健保加保" : "健保退保");
excel.SetCellValue(row, col++, "");
row++;
}
}
}
}
// 設定欄寬
col = 0;
excel.SetColumnWidth(col++, 10);
excel.SetColumnWidth(col++, 12);
excel.SetColumnWidth(col++, 12);
excel.SetColumnWidth(col++, 12);
excel.SetColumnWidth(col++, 12);
excel.SetColumnWidth(col++, 12);
excel.SetColumnWidth(col++, 12);
excel.SetColumnWidth(col++, 12);
excel.SetColumnWidth(col++, 12);
excel.SetColumnWidth(col++, 12);
excel.SetColumnWidth(col++, 12);
excel.SetColumnWidth(col++, 12);
excel.SetColumnWidth(col++, 12);
excel.SetColumnWidth(col++, 12);
excel.SetColumnWidth(col++, 12);
excel.SetColumnWidth(col++, 12);
excel.SetColumnWidth(col++, 12);
excel.SetColumnWidth(col++, 54);
excel.SetColumnWidth(col++, 50);
MemoryStream ms = new MemoryStream();
workbook.Write(ms);
ResponseWriteFile(ms, String.Format("作業類別清單_{0:yyyyMMddHHmmss}.xls", DateTime.UtcNow.AddHours(8)));
}
///
/// 匯出勞健保投退保異常清單
///
///
///
protected void btnExportAbnormal_Click(object sender, EventArgs e)
{
lbMessage.Visible = false;
List messages = new List();
ParseSearchInput();
if (_RPXDT1.Ticks == 0 || _RPXDT2.Ticks == 0)
{
messages.Add("請輸入匯出日期範圍");
}
if (messages.Count > 0)
{
lbMessage.Text = string.Join("
", messages.ToArray());
lbMessage.Visible = true;
return;
}
var result = new DataTable();
result.Columns.Add("ABNORMAL_TYPE", typeof(string));
result.Columns.Add("BPENO", typeof(string));
result.Columns.Add("BPNME", typeof(string));
result.Columns.Add("BPSDY", typeof(DateTime));
result.Columns.Add("BPEDY", typeof(DateTime));
result.Columns.Add("RPSDT", typeof(DateTime));
result.Columns.Add("RPEDT", typeof(DateTime));
var cmdSource = Query.NewCommand();
var cmdCheck = Query.NewCommand();
#region 取資料
// 1. 檢查到職未加保
cmdSource.CommandText = @"SELECT BPENO, BPNME, BPSDY
FROM BPSNView
WHERE BPSDY BETWEEN @DATE1 AND @DATE2
ORDER BY BPENO";
Query.AddParam(cmdSource, "DATE1", _RPXDT1);
Query.AddParam(cmdSource, "DATE2", _RPXDT2);
foreach (DataRow r in Query.Select(cmdSource).Rows)
{
cmdCheck.CommandText =
@"SELECT RPREN, RPSDT
FROM RPIR
WHERE RPENO = @RPENO
AND RPSDT = @RPSDT
UNION
SELECT RPREN, RPSDT
FROM RPIB
WHERE RPENO = @RPENO
AND RPSDT = @RPSDT";
Query.AddParam(cmdCheck, "RPENO", r["BPENO"]);
Query.AddParam(cmdCheck, "RPSDT", r["BPSDY"]);
if (Query.Select(cmdCheck).Rows.Count == 0)
{
result.Rows.Add("到職未加保", r["BPENO"], r["BPNME"], r["BPSDY"], DBNull.Value, DBNull.Value, DBNull.Value);
}
}
// 2. 檢查離職未退保
cmdSource.CommandText = @"SELECT BPENO, BPNME, BPEDY
FROM BPSNView
WHERE BPEDY BETWEEN @DATE1 AND @DATE2
ORDER BY BPENO";
cmdSource.Parameters.Clear();
Query.AddParam(cmdSource, "DATE1", _RPXDT1);
Query.AddParam(cmdSource, "DATE2", _RPXDT2);
foreach (DataRow r in Query.Select(cmdSource).Rows)
{
cmdCheck.CommandText =
@"SELECT RPREN, RPEDT
FROM RPIR
WHERE RPENO = @RPENO
AND RPEDT = @RPEDT
UNION
SELECT RPREN, RPEDT
FROM RPIB
WHERE RPENO = @RPENO
AND RPEDT = @RPEDT";
Query.AddParam(cmdCheck, "RPENO", r["BPENO"]);
Query.AddParam(cmdCheck, "RPEDT", r["BPEDY"]);
if (Query.Select(cmdCheck).Rows.Count == 0)
{
result.Rows.Add("離職未退保", r["BPENO"], r["BPNME"], DBNull.Value, r["BPEDY"], DBNull.Value, DBNull.Value);
}
}
// 3. 檢查加保未到職
cmdSource.CommandText =
@"SELECT DISTINCT *
FROM
(
SELECT RPENO, BPNME, RPSDT
FROM RPIR
JOIN BPSNView ON RPENO=BPENO
WHERE RPSDT BETWEEN @DATE1 AND @DATE2
UNION
SELECT RPENO, BPNME, RPSDT
FROM RPIB
JOIN BPSNView ON RPENO=BPENO
WHERE RPSDT BETWEEN @DATE1 AND @DATE2
) T
ORDER BY RPENO";
cmdSource.Parameters.Clear();
Query.AddParam(cmdSource, "DATE1", _RPXDT1);
Query.AddParam(cmdSource, "DATE2", _RPXDT2);
foreach (DataRow r in Query.Select(cmdSource).Rows)
{
cmdCheck.CommandText =
@"SELECT BPENO, BPEDY
FROM BPSNView
WHERE BPENO = @BPENO
AND BPSDY = @BPSDY";
Query.AddParam(cmdCheck, "BPENO", r["RPENO"]);
Query.AddParam(cmdCheck, "BPSDY", r["RPSDT"]);
if (Query.Select(cmdCheck).Rows.Count == 0)
{
result.Rows.Add("加保未到職", r["RPENO"], r["BPNME"], DBNull.Value, DBNull.Value, r["RPSDT"], DBNull.Value);
}
}
// 4. 檢查退保未離職
cmdSource.CommandText =
@"SELECT DISTINCT *
FROM
(
SELECT RPENO, BPNME, RPEDT
FROM RPIR
JOIN BPSNView ON RPENO=BPENO
WHERE RPEDT BETWEEN @DATE1 AND @DATE2
UNION
SELECT RPENO, BPNME, RPEDT
FROM RPIB
JOIN BPSNView ON RPENO=BPENO
WHERE RPEDT BETWEEN @DATE1 AND @DATE2
) T
ORDER BY RPENO";
cmdSource.Parameters.Clear();
Query.AddParam(cmdSource, "DATE1", _RPXDT1);
Query.AddParam(cmdSource, "DATE2", _RPXDT2);
foreach (DataRow r in Query.Select(cmdSource).Rows)
{
cmdCheck.CommandText =
@"SELECT BPENO, BPEDY
FROM BPSNView
WHERE BPENO = @BPENO
AND BPEDY = @BPEDY";
Query.AddParam(cmdCheck, "BPENO", r["RPENO"]);
Query.AddParam(cmdCheck, "BPEDY", r["RPEDT"]);
if (Query.Select(cmdCheck).Rows.Count == 0)
{
result.Rows.Add("退保未離職", r["RPENO"], r["BPNME"], DBNull.Value, DBNull.Value, DBNull.Value, r["RPEDT"]);
}
}
if (result.Rows.Count == 0)
{
lbMessage.Text = "查詢日期區間內無投退保異常資料";
lbMessage.Visible = true;
return;
}
#endregion 取資料
HSSFWorkbook workbook = new HSSFWorkbook();
HSSFSheet sheet = workbook.CreateSheet("報表") as HSSFSheet;
sheet.ForceFormulaRecalculation = true;
Excel excel = new Excel();
excel.WorkBook = workbook;
excel.Sheet = sheet;
int row = 0;
int col = 0;
// 抬頭
excel.SetCellValue(row, col++, "異常類型");
excel.SetCellValue(row, col++, "人員編號");
excel.SetCellValue(row, col++, "人員姓名");
excel.SetCellValue(row, col++, "到職日期");
excel.SetCellValue(row, col++, "離職日期");
excel.SetCellValue(row, col++, "加保日期");
excel.SetCellValue(row, col++, "退保日期");
row++;
// 內容
foreach (DataRow r in result.Rows)
{
col = 0;
excel.SetCellValue(row, col++, WDAC.GetStringValue(r["ABNORMAL_TYPE"]));
excel.SetCellValue(row, col++, WDAC.GetStringValue(r["BPENO"]));
excel.SetCellValue(row, col++, WDAC.GetStringValue(r["BPNME"]));
excel.SetCellValue(row, col++, r["BPSDY"] != DBNull.Value ? string.Format("{0:yyyy/MM/dd}", WDAC.GetDateTimeValue(r["BPSDY"])) : "");
excel.SetCellValue(row, col++, r["BPEDY"] != DBNull.Value ? string.Format("{0:yyyy/MM/dd}", WDAC.GetDateTimeValue(r["BPEDY"])) : "");
excel.SetCellValue(row, col++, r["RPSDT"] != DBNull.Value ? string.Format("{0:yyyy/MM/dd}", WDAC.GetDateTimeValue(r["RPSDT"])) : "");
excel.SetCellValue(row, col++, r["RPEDT"] != DBNull.Value ? string.Format("{0:yyyy/MM/dd}", WDAC.GetDateTimeValue(r["RPEDT"])) : "");
row++;
}
// 設定欄寬
col = 0;
excel.SetColumnWidth(col++, 20);
excel.SetColumnWidth(col++, 12);
excel.SetColumnWidth(col++, 12);
excel.SetColumnWidth(col++, 12);
excel.SetColumnWidth(col++, 12);
excel.SetColumnWidth(col++, 12);
excel.SetColumnWidth(col++, 12);
MemoryStream ms = new MemoryStream();
workbook.Write(ms);
ResponseWriteFile(ms, String.Format("投退保異常清單_{0:yyyyMMddHHmmss}.xls", DateTime.UtcNow.AddHours(8)));
}
protected void btnReturnBPSN_Click(object sender, EventArgs e)
{
DoAfterCommand("BPSN");
}
}
public class RPFMDItem
{
public string NAME;
public string BIRTHDAY;
public string IDNO;
public string RELATIONSHIP;
public string DEDUCT;
public string START_DATE;
public string END_DATE;
public string Message;
private DateTime rpfmdBirthday, rpfmdStartDate, rpfmdEndDate;
public bool Valid
{
get
{
if (!string.IsNullOrEmpty(NAME)) { NAME = NAME.Trim(); }
if (!string.IsNullOrEmpty(BIRTHDAY)) { BIRTHDAY = BIRTHDAY.Trim(); }
if (!string.IsNullOrEmpty(IDNO)) { IDNO = IDNO.ToUpper().Trim(); }
if (!string.IsNullOrEmpty(START_DATE)) { START_DATE = START_DATE.Trim(); }
if (!string.IsNullOrEmpty(END_DATE)) { END_DATE = END_DATE.Trim(); }
var messages = new List();
var valid = true;
WGuard1.CheckDate(BIRTHDAY, out rpfmdBirthday);
WGuard1.CheckDate(START_DATE, out rpfmdStartDate);
WGuard1.CheckDate(END_DATE, out rpfmdEndDate);
if (string.IsNullOrEmpty(NAME)) { valid = false; messages.Add("姓名未輸入"); }
if (string.IsNullOrEmpty(BIRTHDAY)) { valid = false; messages.Add("出生年月日未輸入"); }
if (!string.IsNullOrEmpty(BIRTHDAY) && rpfmdBirthday.Ticks == 0) { valid = false; messages.Add("出生年月日不正確"); }
if (string.IsNullOrEmpty(IDNO)) { valid = false; messages.Add("身份證字號未輸入"); }
if (!string.IsNullOrEmpty(IDNO) && WGuard1.WCheckIdCardNumber(IDNO) != 0) { valid = false; messages.Add("身份證字號不正確"); }
if (string.IsNullOrEmpty(RELATIONSHIP)) { valid = false; messages.Add("關係未選擇"); }
if (string.IsNullOrEmpty(DEDUCT)) { valid = false; messages.Add("減免比例未選擇"); }
if (string.IsNullOrEmpty(START_DATE)) { valid = false; messages.Add("加保日期未輸入"); }
if (!string.IsNullOrEmpty(START_DATE) && rpfmdStartDate.Ticks == 0) { valid = false; messages.Add("加保日期不正確"); }
if (!string.IsNullOrEmpty(END_DATE) && rpfmdEndDate.Ticks == 0) { valid = false; messages.Add("退保日期不正確"); }
if (rpfmdStartDate.Ticks > 0 && rpfmdEndDate.Ticks > 0 && rpfmdStartDate.Ticks > rpfmdEndDate.Ticks) { valid = false; messages.Add("退保日期不可先於加保日期"); }
Message = string.Join(" / ", messages.ToArray());
return valid;
}
}
public bool OnBoard
{
get
{
return string.IsNullOrEmpty(END_DATE);
}
}
public bool Equals(RPFMDItem obj)
{
return obj != null
&& NAME == obj.NAME
&& BIRTHDAY == obj.BIRTHDAY
&& IDNO == obj.IDNO
&& RELATIONSHIP == obj.RELATIONSHIP
&& DEDUCT == obj.DEDUCT
&& START_DATE == obj.START_DATE
&& END_DATE == obj.END_DATE;
}
}
public class RPFMDList : List { }