- SsmsDAC 新增 SelectSalaryStrip/SelectSalaryStripSum - dsSSMS 改 ObjectDataSource;dsSSMSSum 移除,footer 改用 SsmsDAC
588 lines
25 KiB
C#
588 lines
25 KiB
C#
using System;
|
|
using System.Data;
|
|
using System.Configuration;
|
|
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 System.IO;
|
|
using System.Net.Mail;
|
|
using Wellan.Service;
|
|
|
|
/// <summary>
|
|
/// 薪資條發放
|
|
/// </summary>
|
|
public partial class forms_worker_fmSendSalaryStrip : Wellan.Web.UI.WUserControlBase
|
|
{
|
|
private DateTime _SSYMM;
|
|
private string _SSPYN;
|
|
private string _BonusTimes;
|
|
private string _tableName = "";
|
|
private string select =
|
|
@"SELECT A.*,
|
|
SSP06 + SSP07 + SSP08 + SSP13 + SSP14 OVERWORK,
|
|
SSP09 + SSP10 + SSP12 OUTGOING,
|
|
SSP00 + SSP01 + SSP02 + SSP03 + SSP04 + SSP05 + SSP06 + SSP07 + SSP08 + SSP09 + SSP10 + SSP11 + SSP12 + SSP13 + SSP14 + SSP15 + SSP99 SSPLUS,
|
|
SSS01 + SSS02 + SSS09 LEAVING,
|
|
SST01 + SST02 + SST03 + SST21 + SST22 OVERWORKTIME,
|
|
(SSP00 + SSP01 + SSP02 + SSP03 + SSP04 + SSP05 + SSP06 + SSP07 + SSP08 + SSP09 + SSP10 + SSP11 + SSP12 + SSP13 + SSP14 + SSP15 + SSP99)
|
|
- (SSS01 + SSS02 + SSS03 + SSS04 + SSS05 + SSS06 + SSS07 + SSS08 + SSS09 + SSS10 + SSS11 + SSS12 + SSS13 + SSS14 + SSS15 + SSS99) SSTOTAL,
|
|
SSS01 + SSS02 + SSS04 + SSS05 + SSS06 + SSS07 + SSS08 + SSS09 + SSS10 + SSS11 + SSS12 + SSS13 + SSS14 + SSS15 + SSS99 SSMINUS,
|
|
SSP01 + SSP02 + SSP03 + SSP04 + SSP05 + SSP06 + SSP07 + SSP08 + SSP09 + SSP10 + SSP11 + SSP12 + SSP13 + SSP14 + SSP15 + SSP99 TOTALPLUS,
|
|
SSH01 + SSH02 + SSH03 EMPLOYER,
|
|
ISNULL(B.BPNME, '') BPNME,
|
|
ISNULL(C.BPPYM, '') BPPYM,
|
|
ISNULL(B.BPSWY, '') BPSWY,
|
|
ISNULL(D.BCNAM, '') BCNAM,
|
|
ISNULL(B.BPACC, '') BPACC,
|
|
ISNULL(B.BPEML, '') BPEML,
|
|
ISNULL(B.BPEM2, '') BPEM2,
|
|
(SELECT SUM(SSS06) FROM {0} E WHERE A.SSENO=E.SSENO AND E.SSYMM <= @SSYMM) SSS06SUM,
|
|
(SELECT SUM(SSH06) FROM {0} F WHERE A.SSENO=F.SSENO AND F.SSYMM <= @SSYMM) SSH06SUM,
|
|
SSC01, SSC03, SSC03, SSC04, SSC05, SSC06, SSC07, SSC08, SSC09, SSC10
|
|
FROM {0} A
|
|
LEFT OUTER JOIN BPSNView B ON A.SSENO=B.BPENO
|
|
LEFT OUTER JOIN BPAA C ON A.SSPYN=C.BPPYN
|
|
LEFT OUTER JOIN BRML D ON B.BPBNK=D.BCNUM";
|
|
|
|
protected void Page_Load(object sender, EventArgs e)
|
|
{
|
|
}
|
|
|
|
protected override void OnInit(EventArgs e)
|
|
{
|
|
base.OnInit(e);
|
|
_SSYMM = GetDateTimeParam("YYMM");
|
|
_SSPYN = GetStringParam("SSPYN");
|
|
_BonusTimes = GetStringParam("BonusTimes");
|
|
_tableName = GetStringParam("TABLE");
|
|
|
|
if (_BonusTimes == "")
|
|
_BonusTimes = "0";
|
|
|
|
if (ForwardSource != "")
|
|
{
|
|
MultiView1.ActiveViewIndex = 1;
|
|
}
|
|
|
|
ddlSSPYN.DataSource = new BpaaDAC().GetBpaaWithTY(_SSYMM.Year);
|
|
ddlSSPYN.DataBind();
|
|
|
|
gvSSMS.Visible = false;
|
|
gvSSMSBonus.Visible = false;
|
|
|
|
if (_SSPYN != "" && ddlSSPYN.Items.FindByValue(_SSPYN) != null)
|
|
{
|
|
ddlSSPYN.SelectedValue = _SSPYN;
|
|
}
|
|
|
|
if (_BonusTimes != "" && ddlBonusTimes.Items.FindByValue(_BonusTimes) != null)
|
|
{
|
|
ddlBonusTimes.SelectedValue = _BonusTimes;
|
|
}
|
|
|
|
if (_SSYMM.Ticks != 0)
|
|
{
|
|
lbYYMM.Text = _SSYMM.ToString("yyyyMM");
|
|
|
|
if (ddlSSPYN.SelectedValue.ToString() != "")
|
|
{
|
|
int i;
|
|
string s;
|
|
if (int.TryParse(_BonusTimes, out i))
|
|
_SSYMM = _SSYMM.AddDays(i);
|
|
s = _SSYMM.ToString(WGuard1.InvariantCulture);
|
|
|
|
dsSSMS.SelectParameters["tableName"].DefaultValue = _tableName;
|
|
dsSSMS.SelectParameters["SSYMM"].DefaultValue = s;
|
|
dsSSMS.SelectParameters["SSPYN"].DefaultValue = ddlSSPYN.SelectedValue;
|
|
|
|
if (_BonusTimes == "0")
|
|
{
|
|
gvSSMS.Visible = true;
|
|
// gvSSMSSum.Visible = false;
|
|
gvSSMSBonus.Visible = false;
|
|
|
|
gvSSMS.DataBind();
|
|
// gvSSMSSum.DataBind();
|
|
}
|
|
else
|
|
{
|
|
gvSSMS.Visible = false;
|
|
// gvSSMSSum.Visible = false;
|
|
gvSSMSBonus.Visible = true;
|
|
|
|
gvSSMSBonus.DataBind();
|
|
}
|
|
}
|
|
}
|
|
|
|
SetClientFocus(txtYYMM);
|
|
|
|
RegisterStartupScript("START", "if (typeof CheckChecked != \"undefined\") CheckChecked();");
|
|
|
|
switch (_tableName)
|
|
{
|
|
case "SSMS_VIEW":
|
|
gvSSMS.Columns[26].Visible = false;
|
|
gvSSMS.Columns[27].Visible = false;
|
|
//gvSSMSSum.Columns[26].Visible = false;
|
|
//gvSSMSSum.Columns[27].Visible = false;
|
|
gvSSMSBonus.Columns[7].Visible = false;
|
|
gvSSMSBonus.Columns[8].Visible = false;
|
|
break;
|
|
|
|
case "SSMB":
|
|
lbCaption.TextMessageId = "FMSSHISTORY.NAME";
|
|
btnSend.Visible = false;
|
|
btnCheckAll.Visible = false;
|
|
btnCheckNone.Visible = false;
|
|
lbNotice.Visible = false;
|
|
gvSSMS.Columns[0].Visible = false;
|
|
//gvSSMSSum.Columns[0].Visible = false;
|
|
gvSSMSBonus.Columns[0].Visible = false;
|
|
break;
|
|
}
|
|
}
|
|
|
|
protected void btnSend_Click(object sender, EventArgs e)
|
|
{
|
|
// 取得要發送的員工編號
|
|
List<string> SSENOs = new List<string>();
|
|
GridView gv;
|
|
if (_BonusTimes == "0")
|
|
{
|
|
gv = gvSSMS;
|
|
}
|
|
else
|
|
{
|
|
gv = gvSSMSBonus;
|
|
}
|
|
|
|
foreach (GridViewRow gvrow in gv.Rows)
|
|
{
|
|
if ((gvrow.Cells[0].FindControl("cbSelect") as CheckBox).Checked)
|
|
{
|
|
SSENOs.Add((gvrow.Cells[1].Controls[1] as ITextControl).Text);
|
|
}
|
|
}
|
|
|
|
if (SSENOs.Count == 0)
|
|
{
|
|
ClientShowMessage("沒有選擇需發送的資料");
|
|
return;
|
|
}
|
|
|
|
// 取得此專案是否設定電話費科目對應
|
|
bool wantTeleFee = false;
|
|
GetData gd = new GetData();
|
|
gd.Query = Query;
|
|
DataTable bpaa = gd.GetBPAA_BPPYN(ddlSSPYN.SelectedValue);
|
|
if (bpaa.Rows.Count > 0)
|
|
{
|
|
BPAARecord bpaaRec = new BPAARecord();
|
|
bpaaRec.FillRecord(bpaa.Rows[0]);
|
|
wantTeleFee = bpaaRec.BPS09 != "";
|
|
}
|
|
|
|
DbConnection conn = Query.NewConnection();
|
|
conn.ConnectionString = ConnectionString;
|
|
|
|
// int i = 0;
|
|
// int.TryParse(_BonusTimes, out i);
|
|
// DateTime aYymm = _SSYMM.AddDays(i);
|
|
DateTime aYymm = _SSYMM;
|
|
|
|
// 準備取資料的 SQL
|
|
DbCommand cmdGetSSMS = Query.NewCommand(String.Format(select, "SSMS_VIEW") + " WHERE SSYMM=@SSYMM AND SSPYN=@SSPYN AND SSENO=@SSENO");
|
|
cmdGetSSMS.Parameters.Add(Query.NewParameter("SSYMM", aYymm));
|
|
cmdGetSSMS.Parameters.Add(Query.NewParameter("SSPYN", ddlSSPYN.SelectedValue));
|
|
cmdGetSSMS.Parameters.Add(Query.NewParameter("SSENO", DbType.String));
|
|
cmdGetSSMS.Connection = conn;
|
|
|
|
// 準備刪除薪資條備份資料的 SQL
|
|
DbCommand cmdDeleteSSMB = Query.NewCommand("DELETE FROM SSMB WHERE SSYMM=@SSYMM AND SSPYN=@SSPYN AND SSENO=@SSENO");
|
|
cmdDeleteSSMB.Parameters.Add(Query.NewParameter("SSYMM", aYymm));
|
|
cmdDeleteSSMB.Parameters.Add(Query.NewParameter("SSPYN", ddlSSPYN.SelectedValue));
|
|
cmdDeleteSSMB.Parameters.Add(Query.NewParameter("SSENO", DbType.String));
|
|
cmdDeleteSSMB.Connection = conn;
|
|
|
|
// 準備新增薪資條備份資料的 SQL
|
|
DbCommand cmdInsertSSMB = Query.NewCommand(
|
|
@"INSERT INTO SSMB
|
|
(SSYMM, SSENO, SSNUM, SSPYN, SSJNO, SSCNO, SSBRH, SSD01, SSD02, SSSRD, SSP00,
|
|
SSP01, SSP02, SSP03, SSP04, SSP05, SSP06, SSP07, SSP08, SSP09, SSP10, SSP11,
|
|
SSP12, SSP13, SSP14, SSP15, SSP99, SSS01, SSS02, SSS03, SSS04, SSS05, SSS06,
|
|
SSS07, SSS08, SSS09, SSS10, SSS11, SSS12, SSS13, SSS14, SSS15, SSS99, SSH01,
|
|
SSH02, SSH03, SSH04, SSH05, SSH06, SSH07, SSH08, SSH09, SSH10, SST01, SST02,
|
|
SST03, SST04, SST05, SST06, SST07, SST08, SST09, SST10, SST11, SST12, SST13,
|
|
SST14, SST15, SST16, SST17, SST18, SST19, SST20, SST21, SST22, SST23, SST24,
|
|
SST25, SSL01, SSL02, SSL03, SSL04, SSL05, SSC01, SSC02, SSC03, SSC04, SSC05,
|
|
SSC06, SSC07, SSC08, SSC09, SSC10,
|
|
TRDAT, TRMOD, TRUSR)
|
|
SELECT
|
|
SSYMM, SSENO, SSNUM, SSPYN, SSJNO, SSCNO, SSBRH, SSD01, SSD02, SSSRD, SSP00,
|
|
SSP01, SSP02, SSP03, SSP04, SSP05, SSP06, SSP07, SSP08, SSP09, SSP10, SSP11,
|
|
SSP12, SSP13, SSP14, SSP15, SSP99, SSS01, SSS02, SSS03, SSS04, SSS05, SSS06,
|
|
SSS07, SSS08, SSS09, SSS10, SSS11, SSS12, SSS13, SSS14, SSS15, SSS99, SSH01,
|
|
SSH02, SSH03, SSH04, SSH05, SSH06, SSH07, SSH08, SSH09, SSH10, SST01, SST02,
|
|
SST03, SST04, SST05, SST06, SST07, SST08, SST09, SST10, SST11, SST12, SST13,
|
|
SST14, SST15, SST16, SST17, SST18, SST19, SST20, SST21, SST22, SST23, SST24,
|
|
SST25, SSL01, SSL02, SSL03, SSL04, SSL05, SSC01, SSC02, SSC03, SSC04, SSC05,
|
|
SSC06, SSC07, SSC08, SSC09, SSC10,
|
|
GETDATE() AS TRDAT, TRMOD, @TRUSR AS TRUSR
|
|
FROM SSMS_VIEW WHERE SSYMM=@SSYMM AND SSPYN=@SSPYN AND SSENO=@SSENO");
|
|
cmdInsertSSMB.Parameters.Add(Query.NewParameter("TRUSR", UserId));
|
|
cmdInsertSSMB.Parameters.Add(Query.NewParameter("SSYMM", aYymm));
|
|
cmdInsertSSMB.Parameters.Add(Query.NewParameter("SSPYN", ddlSSPYN.SelectedValue));
|
|
cmdInsertSSMB.Parameters.Add(Query.NewParameter("SSENO", DbType.String));
|
|
cmdInsertSSMB.Connection = conn;
|
|
|
|
// 準備所需的物件
|
|
SalaryStrip ss = new SalaryStrip(); // 薪資單產生物件
|
|
// SmtpClient sc = new SmtpClient(); // 郵件用戶端物件
|
|
BpsnDAC bpsnDao = new BpsnDAC();
|
|
|
|
cvMessage.IsValid = true;
|
|
cvMessage.ErrorMessage = "";
|
|
|
|
foreach (string sseno in SSENOs)
|
|
{
|
|
// 取得資料、產生薪資條、發送
|
|
cmdGetSSMS.Parameters["SSENO"].Value = sseno;
|
|
DataTable ssmsData = Query.Select(conn, cmdGetSSMS);
|
|
if (ssmsData.Rows.Count > 0)
|
|
{
|
|
DataRow ssmsRecord = ssmsData.Rows[0];
|
|
string bpeml = ssmsRecord["BPEML"].ToString();
|
|
string bpem2 = ssmsRecord["BPEM2"].ToString();
|
|
|
|
if (bpem2 != "")
|
|
bpeml = bpem2;
|
|
|
|
if (bpeml == "")
|
|
{
|
|
cvMessage.IsValid = false;
|
|
cvMessage.ErrorMessage += string.Format("員工編號:{0} 發送失敗,錯誤訊息:沒有輸入電子郵件\n", sseno);
|
|
continue;
|
|
}
|
|
|
|
if (!WGuard1.CheckEmail(bpeml))
|
|
{
|
|
cvMessage.IsValid = false;
|
|
cvMessage.ErrorMessage += string.Format("員工編號:{0} 發送失敗,錯誤訊息:電子郵件 \"{1}\" 格式錯誤\n", sseno, bpeml);
|
|
continue;
|
|
}
|
|
|
|
string mailSubject;
|
|
ss.Clear();
|
|
|
|
if (ddlSSPYN.SelectedValue == "103JYB00001")
|
|
{
|
|
ss.公司名稱 = CompanyDAC.GetCompanyName("JY");
|
|
}
|
|
else if (ddlSSPYN.SelectedValue == "103TYB00001")
|
|
{
|
|
ss.公司名稱 = CompanyDAC.GetCompanyName("TY");
|
|
}
|
|
else
|
|
{
|
|
List<string> companyNames = bpsnDao.GetCompanyByDate(sseno, aYymm);
|
|
ss.公司名稱 = companyNames[1];
|
|
}
|
|
|
|
#region 一般薪資條
|
|
if (_BonusTimes == "0")
|
|
{
|
|
ss.薪資條樣板 = 0;
|
|
ss.列印公司提繳 = true;
|
|
ss.列印津貼合計 = true;
|
|
ss.列印課稅金額 = true;
|
|
ss.列印應發金額 = true;
|
|
ss.列印員工累計 = true;
|
|
ss.列印扣款合計 = true;
|
|
ss.列印所得稅 = true;
|
|
ss.列印實發金額 = true;
|
|
ss.列印公司累計 = true;
|
|
ss.列印帳號 = true;
|
|
|
|
ss.AddPlus("底(本)薪", Convert.ToInt32(ssmsRecord["SSP00"]));
|
|
ss.AddPlus("全勤獎金", Convert.ToInt32(ssmsRecord["SSP01"]));
|
|
ss.AddPlus("加班費", Convert.ToInt32(ssmsRecord["OVERWORK"]));
|
|
ss.AddPlus("外勤工作費", Convert.ToInt32(ssmsRecord["OUTGOING"]));
|
|
if (wantTeleFee)
|
|
ss.AddPlus("電話費", Convert.ToInt32(ssmsRecord["SSP11"]));
|
|
ss.AddPlus("伙食費", Convert.ToInt32(ssmsRecord["SSP02"]));
|
|
ss.AddPlus("其他加項", Convert.ToInt32(ssmsRecord["SSP99"]));
|
|
ss.AddPlus("職務加給", Convert.ToInt32(ssmsRecord["SSP03"]));
|
|
ss.AddPlus("其他津貼", Convert.ToInt32(ssmsRecord["SSP05"]));
|
|
|
|
ss.AddMinus("請假扣款", Convert.ToInt32(ssmsRecord["LEAVING"]));
|
|
ss.AddMinus("健保費", Convert.ToInt32(ssmsRecord["SSS05"]));
|
|
ss.AddMinus("勞保費", Convert.ToInt32(ssmsRecord["SSS04"]));
|
|
ss.AddMinus("福利金", Convert.ToInt32(ssmsRecord["SSS07"]));
|
|
ss.AddMinus("員工提繳", Convert.ToInt32(ssmsRecord["SSS06"]));
|
|
ss.AddMinus("其他減項", Convert.ToInt32(ssmsRecord["SSS99"]));
|
|
|
|
ss.AddPresent("出勤天數", ssmsRecord["SSD01"].ToString());
|
|
ss.AddPresent("勞保天數", ssmsRecord["SSD02"].ToString());
|
|
ss.AddPresent("加班時數", ssmsRecord["OVERWORKTIME"].ToString());
|
|
|
|
ss.員工代號 = sseno;
|
|
ss.姓名 = ssmsRecord["BPNME"].ToString();
|
|
ss.部門 = ssmsRecord["SSPYN"].ToString() + "\n" + ssmsRecord["BPPYM"].ToString();
|
|
ss.職務 = "";
|
|
ss.發薪年月 = _SSYMM.ToString("yyyy年MM月");
|
|
|
|
ss.公司累計 = Convert.ToInt32(ssmsRecord["SSH06SUM"]);
|
|
ss.公司提繳 = Convert.ToInt32(ssmsRecord["SSH06"]);
|
|
ss.扣款合計 = Convert.ToInt32(ssmsRecord["SSMINUS"]);
|
|
ss.所得稅 = Convert.ToInt32(ssmsRecord["SSS03"]);
|
|
ss.津貼合計 = Convert.ToInt32(ssmsRecord["TOTALPLUS"]);
|
|
ss.員工累計 = Convert.ToInt32(ssmsRecord["SSS06SUM"]);
|
|
ss.帳號 = String.Format("{0:c} {1:c}", ssmsRecord["BCNAM"], ssmsRecord["BPACC"]);
|
|
ss.實發金額 = Convert.ToInt32(ssmsRecord["SSTOTAL"]);
|
|
ss.課稅金額 = Convert.ToInt32(ssmsRecord["SSP00"]) - Convert.ToInt32(ssmsRecord["SSS06"]);
|
|
ss.應發金額 = Convert.ToInt32(ssmsRecord["SSPLUS"]);
|
|
ss.薪資別 = "月薪";
|
|
|
|
mailSubject = String.Format("{0:c} {1:yyyy} 年 {1:MM} 月薪資單", ssmsRecord["BPNME"], _SSYMM);
|
|
}
|
|
#endregion
|
|
|
|
#region 獎金薪資條
|
|
else
|
|
{
|
|
ss.薪資條樣板 = 1;
|
|
ss.列印公司提繳 = false;
|
|
ss.列印津貼合計 = true;
|
|
ss.列印課稅金額 = true;
|
|
ss.列印應發金額 = true;
|
|
ss.列印員工累計 = false;
|
|
ss.列印扣款合計 = true;
|
|
ss.列印所得稅 = true;
|
|
ss.列印實發金額 = true;
|
|
ss.列印公司累計 = false;
|
|
ss.列印帳號 = true;
|
|
|
|
ss.AddPlus("獎金", Convert.ToInt32(ssmsRecord["SSP13"]));
|
|
|
|
ss.AddMinus("所得稅", Convert.ToInt32(ssmsRecord["SSS03"]));
|
|
|
|
ss.AddPresent("稅率" + GetSSC07(ssmsRecord["SSC07"], 0), "");
|
|
ss.AddPresent(GetSSC07(ssmsRecord["SSC07"], 1), "");
|
|
|
|
ss.員工代號 = sseno;
|
|
ss.姓名 = ssmsRecord["BPNME"].ToString();
|
|
ss.部門 = ssmsRecord["SSPYN"].ToString() + "\n" + ssmsRecord["BPPYM"].ToString();
|
|
ss.職務 = "";
|
|
ss.發薪年月 = _SSYMM.ToString("yyyy年MM月");
|
|
|
|
ss.公司累計 = Convert.ToInt32(ssmsRecord["SSH06SUM"]);
|
|
ss.公司提繳 = Convert.ToInt32(ssmsRecord["SSH06"]);
|
|
ss.扣款合計 = Convert.ToInt32(ssmsRecord["SSMINUS"]);
|
|
ss.所得稅 = Convert.ToInt32(ssmsRecord["SSS03"]);
|
|
ss.津貼合計 = Convert.ToInt32(ssmsRecord["TOTALPLUS"]);
|
|
ss.員工累計 = Convert.ToInt32(ssmsRecord["SSS06SUM"]);
|
|
ss.帳號 = String.Format("{0:c} {1:c}", ssmsRecord["BCNAM"], ssmsRecord["BPACC"]);
|
|
ss.實發金額 = Convert.ToInt32(ssmsRecord["SSTOTAL"]);
|
|
ss.課稅金額 = Convert.ToInt32(ssmsRecord["SSP00"]);
|
|
ss.應發金額 = Convert.ToInt32(ssmsRecord["SSPLUS"]);
|
|
ss.薪資別 = "月薪";
|
|
|
|
mailSubject = String.Format("{0:c} 薪資單", GetSSC07(ssmsRecord["SSC07"], 1));
|
|
}
|
|
#endregion
|
|
|
|
// 發送郵件
|
|
try
|
|
{
|
|
MemoryStream ms = new MemoryStream(ss.Draw(RootPath).ToArray(), false);
|
|
MailMessage mm = new MailMessage();
|
|
|
|
mm.Subject = mailSubject;
|
|
mm.To.Add(new MailAddress(bpeml));
|
|
|
|
// 使用 LinkResource 方式附加薪資單圖檔
|
|
/*
|
|
AlternateView htmlView = AlternateView.CreateAlternateViewFromString("<img src=cid:salaryslip>", null, "text/html");
|
|
LinkedResource salaryslip = new LinkedResource(ms);
|
|
salaryslip.ContentId = "salaryslip";
|
|
htmlView.LinkedResources.Add(salaryslip);
|
|
mm.AlternateViews.Add(htmlView);
|
|
*/
|
|
|
|
// 使用附件方式附加薪資單圖檔
|
|
mm.Attachments.Add(new Attachment(ms, String.Format("{0:yyyyMM}.gif", _SSYMM), "image/gif"));
|
|
|
|
WMailSender.GetInstance().Send(mm, string.Format("員工編號:{0:c} 專案:{1:c} 年月:{2:yyyyMM}", sseno, ssmsRecord["BPPYM"].ToString(), _SSYMM));
|
|
}
|
|
catch (Exception ex)
|
|
{
|
|
cvMessage.IsValid = false;
|
|
cvMessage.ErrorMessage += string.Format("員工編號:{0:c} 發送失敗,錯誤訊息:{1:c}\n", sseno, ex.Message);
|
|
//WGuard1.WLogFile(Server.MapPath("~/LOG/MailFail_"), WGuard1.WLogType.Day,
|
|
// string.Format("員工編號:{0:c} 專案:{1:c} 年月:{2:yyyyMM} 錯誤訊息:{3:c}", sseno, ssmsRecord["BPPYM"].ToString(), _SSYMM, ex.Message));
|
|
}
|
|
}
|
|
|
|
// 刪除薪資條備份資料
|
|
cmdDeleteSSMB.Parameters["SSENO"].Value = sseno;
|
|
Query.ExecuteNonQuery(conn, cmdDeleteSSMB);
|
|
|
|
// 新增薪資條備份資料
|
|
cmdInsertSSMB.Parameters["SSENO"].Value = sseno;
|
|
Query.ExecuteNonQuery(conn, cmdInsertSSMB);
|
|
}
|
|
|
|
if (conn.State == ConnectionState.Open)
|
|
conn.Close();
|
|
|
|
if (cvMessage.IsValid)
|
|
ClientShowMessage("薪資單發送完畢");
|
|
else
|
|
ClientShowMessage("薪資單發送時部份發生錯誤,無錯誤的已發送,有錯誤的請修正錯誤後重發");
|
|
}
|
|
|
|
protected int GetPlus(params object[] items)
|
|
{
|
|
int sum = 0;
|
|
for (int i = 0; i < items.Length; i++)
|
|
{
|
|
sum += items[i] != null && items[i] != DBNull.Value ? Convert.ToInt32(items[i]) : 0;
|
|
}
|
|
|
|
return sum;
|
|
}
|
|
|
|
protected void btnSSMS_Click(object sender, EventArgs e)
|
|
{
|
|
cvMessage.IsValid = true;
|
|
cvMessage.ErrorMessage = "";
|
|
bool result = true;
|
|
DateTime aYYMM = CheckDate(txtYYMM.Text + "01", "請輸入正確的年月", ref result, cvMessage);
|
|
|
|
if (result)
|
|
{
|
|
ParamList["YYMM"] = aYYMM;
|
|
DoAfterCommand("SENDSS");
|
|
}
|
|
}
|
|
|
|
protected void btnSSPYN_Click(object sender, EventArgs e)
|
|
{
|
|
// 檢查此使用者是否有權限處理這個專案
|
|
// 因為此功能只有財務人員可以使用,所以不需檢查專案權限
|
|
//BprmDAC bprm = new BprmDAC(Query);
|
|
//if (!bprm.GetRight(ddlSSPYN.SelectedValue, UserId))
|
|
//{
|
|
// cvMessage.ErrorMessage = "對不起,你沒有處理這個專案的權限!";
|
|
// cvMessage.IsValid = false;
|
|
// return;
|
|
//}
|
|
|
|
ParamList["SSPYN"] = ddlSSPYN.SelectedValue;
|
|
ParamList["BonusTimes"] = ddlBonusTimes.SelectedValue == "" ? "0" : ddlBonusTimes.SelectedValue;
|
|
|
|
DoAfterCommand("SENDSS");
|
|
}
|
|
|
|
protected void cbSelect_DataBinding(object sender, EventArgs e)
|
|
{
|
|
Page.ClientScript.RegisterArrayDeclaration("CHECKBOXIDS", "\"" + (sender as Control).ClientID + "\"");
|
|
(sender as WebControl).Attributes.Add("onclick", "CheckChecked()");
|
|
}
|
|
|
|
protected void btnInputSSYMM_Click(object sender, EventArgs e)
|
|
{
|
|
ParamList["SSPYN"] = "";
|
|
ParamList["YYMM"] = new DateTime();
|
|
MultiView1.ActiveViewIndex = 0;
|
|
}
|
|
|
|
protected void gvSSMS_DataBound(object sender, EventArgs e)
|
|
{
|
|
// gvSSMSSum.Visible = gvSSMS.Rows.Count > 0;
|
|
}
|
|
|
|
protected string GetSSC07(object ssc07, int index)
|
|
{
|
|
if (ssc07 == DBNull.Value)
|
|
return "";
|
|
|
|
string[] s = ssc07.ToString().Split('|');
|
|
|
|
if (index == 0)
|
|
{
|
|
double d;
|
|
if (double.TryParse(s[0], out d))
|
|
return String.Format("{0:P}", d);
|
|
else
|
|
return "";
|
|
}
|
|
else if (index < s.Length)
|
|
{
|
|
return s[index];
|
|
}
|
|
else
|
|
return "";
|
|
}
|
|
|
|
protected void gvSSMS_RowDataBound(object sender, GridViewRowEventArgs e)
|
|
{
|
|
//GridView_RowDataBound_Shrink_ViewState(sender, e);
|
|
|
|
if (e.Row.RowType == DataControlRowType.Footer)
|
|
{
|
|
DataTable a = new SsmsDAC(Query).SelectSalaryStripSum(_tableName, _SSYMM, ddlSSPYN.SelectedValue);
|
|
DataRow ar = a.Rows[0];
|
|
|
|
e.Row.Cells[1].Text = "合計";
|
|
e.Row.Cells[1].HorizontalAlign = HorizontalAlign.Center;
|
|
e.Row.Cells[2].Text = string.Format("{0:###,###,##0}", ar["SSP00"]); // 本薪
|
|
e.Row.Cells[2].HorizontalAlign = HorizontalAlign.Center;
|
|
e.Row.Cells[3].Text = string.Format("{0:###,###,##0}", ar["SSP01"]); // 全勤獎金
|
|
e.Row.Cells[3].HorizontalAlign = HorizontalAlign.Center;
|
|
e.Row.Cells[4].Text = string.Format("{0:###,###,##0}", ar["OVERWORK"]);
|
|
e.Row.Cells[4].HorizontalAlign = HorizontalAlign.Center;
|
|
e.Row.Cells[5].Text = string.Format("{0:###,###,##0}", ar["OUTGOING"]);
|
|
e.Row.Cells[5].HorizontalAlign = HorizontalAlign.Center;
|
|
e.Row.Cells[6].Text = string.Format("{0:###,###,##0}", ar["SSP11"]);
|
|
e.Row.Cells[6].HorizontalAlign = HorizontalAlign.Center;
|
|
e.Row.Cells[7].Text = string.Format("{0:###,###,##0}", ar["SSP02"]);
|
|
e.Row.Cells[7].HorizontalAlign = HorizontalAlign.Center;
|
|
e.Row.Cells[8].Text = string.Format("{0:###,###,##0}", ar["SSP99"]);
|
|
e.Row.Cells[8].HorizontalAlign = HorizontalAlign.Center;
|
|
e.Row.Cells[9].Text = string.Format("{0:###,###,##0}", ar["SSP03"]);
|
|
e.Row.Cells[9].HorizontalAlign = HorizontalAlign.Center;
|
|
e.Row.Cells[10].Text = string.Format("{0:###,###,##0}", ar["SSP05"]);
|
|
e.Row.Cells[10].HorizontalAlign = HorizontalAlign.Center;
|
|
e.Row.Cells[12].Text = string.Format("{0:###,###,##0}", ar["SSPLUS"]);
|
|
e.Row.Cells[12].HorizontalAlign = HorizontalAlign.Center;
|
|
e.Row.Cells[13].Text = string.Format("{0:###,###,##0}", ar["LEAVING"]);
|
|
e.Row.Cells[13].HorizontalAlign = HorizontalAlign.Center;
|
|
e.Row.Cells[14].Text = string.Format("{0:###,###,##0}", ar["SSS05"]);
|
|
e.Row.Cells[14].HorizontalAlign = HorizontalAlign.Center;
|
|
e.Row.Cells[15].Text = string.Format("{0:###,###,##0}", ar["SSS04"]);
|
|
e.Row.Cells[15].HorizontalAlign = HorizontalAlign.Center;
|
|
e.Row.Cells[16].Text = string.Format("{0:###,###,##0}", ar["SSS07"]);
|
|
e.Row.Cells[16].HorizontalAlign = HorizontalAlign.Center;
|
|
e.Row.Cells[17].Text = string.Format("{0:###,###,##0}", ar["SSS06"]);
|
|
e.Row.Cells[17].HorizontalAlign = HorizontalAlign.Center;
|
|
e.Row.Cells[18].Text = string.Format("{0:###,###,##0}", ar["SSS99"]);
|
|
e.Row.Cells[18].HorizontalAlign = HorizontalAlign.Center;
|
|
}
|
|
}
|
|
|
|
protected void gvSSMSBonus_RowDataBound(object sender, GridViewRowEventArgs e)
|
|
{
|
|
//GridView_RowDataBound_Shrink_ViewState(sender, e);
|
|
}
|
|
}
|