chore: 首次簽入 Thinkyu ASP.NET 專案
- 加入 Visual Studio / ASP.NET .gitignore - 排除建置輸出、IDE 設定、NuGet packages、大型 MSI 安裝檔
This commit is contained in:
@@ -0,0 +1,629 @@
|
||||
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";
|
||||
private string selectSum =
|
||||
@"SELECT ISNULL(SUM(SSD01), 0) SSD01, ISNULL(SUM(SSD02), 0) SSD02, ISNULL(SUM(SSSRD), 0) SSSRD, ISNULL(SUM(SSP00), 0) SSP00,
|
||||
ISNULL(SUM(SSP01), 0) SSP01, ISNULL(SUM(SSP02), 0) SSP02, ISNULL(SUM(SSP03), 0) SSP03, ISNULL(SUM(SSP04), 0) SSP04,
|
||||
ISNULL(SUM(SSP05), 0) SSP05, ISNULL(SUM(SSP06), 0) SSP06, ISNULL(SUM(SSP07), 0) SSP07, ISNULL(SUM(SSP08), 0) SSP08,
|
||||
ISNULL(SUM(SSP09), 0) SSP09, ISNULL(SUM(SSP10), 0) SSP10, ISNULL(SUM(SSP11), 0) SSP11, ISNULL(SUM(SSP12), 0) SSP12,
|
||||
ISNULL(SUM(SSP13), 0) SSP13, ISNULL(SUM(SSP14), 0) SSP14, ISNULL(SUM(SSP15), 0) SSP15, ISNULL(SUM(SSP99), 0) SSP99,
|
||||
ISNULL(SUM(SSS01), 0) SSS01, ISNULL(SUM(SSS02), 0) SSS02, ISNULL(SUM(SSS03), 0) SSS03, ISNULL(SUM(SSS04), 0) SSS04,
|
||||
ISNULL(SUM(SSS05), 0) SSS05, ISNULL(SUM(SSS06), 0) SSS06, ISNULL(SUM(SSS07), 0) SSS07, ISNULL(SUM(SSS08), 0) SSS08,
|
||||
ISNULL(SUM(SSS09), 0) SSS09, ISNULL(SUM(SSS10), 0) SSS10, ISNULL(SUM(SSS11), 0) SSS11, ISNULL(SUM(SSS12), 0) SSS12,
|
||||
ISNULL(SUM(SSS13), 0) SSS13, ISNULL(SUM(SSS14), 0) SSS14, ISNULL(SUM(SSS15), 0) SSS15, ISNULL(SUM(SSS99), 0) SSS99,
|
||||
ISNULL(SUM(SSH01), 0) SSH01, ISNULL(SUM(SSH02), 0) SSH02, ISNULL(SUM(SSH03), 0) SSH03, ISNULL(SUM(SSH04), 0) SSH04,
|
||||
ISNULL(SUM(SSH05), 0) SSH05, ISNULL(SUM(SSH06), 0) SSH06, ISNULL(SUM(SSH07), 0) SSH07, ISNULL(SUM(SSH08), 0) SSH08,
|
||||
ISNULL(SUM(SSH09), 0) SSH09, ISNULL(SUM(SSH10), 0) SSH10, ISNULL(SUM(SST01), 0) SST01, ISNULL(SUM(SST02), 0) SST02,
|
||||
ISNULL(SUM(SST03), 0) SST03, ISNULL(SUM(SST04), 0) SST04, ISNULL(SUM(SST05), 0) SST05, ISNULL(SUM(SST06), 0) SST06,
|
||||
ISNULL(SUM(SST07), 0) SST07, ISNULL(SUM(SST08), 0) SST08, ISNULL(SUM(SST09), 0) SST09, ISNULL(SUM(SST10), 0) SST10,
|
||||
ISNULL(SUM(SST11), 0) SST11, ISNULL(SUM(SST12), 0) SST12, ISNULL(SUM(SST13), 0) SST13, ISNULL(SUM(SST14), 0) SST14,
|
||||
ISNULL(SUM(SST15), 0) SST15, ISNULL(SUM(SST16), 0) SST16, ISNULL(SUM(SST17), 0) SST17, ISNULL(SUM(SST18), 0) SST18,
|
||||
ISNULL(SUM(SST19), 0) SST19, ISNULL(SUM(SST20), 0) SST20, ISNULL(SUM(SST21), 0) SST21, ISNULL(SUM(SST22), 0) SST22,
|
||||
ISNULL(SUM(SST23), 0) SST23, ISNULL(SUM(SST24), 0) SST24, ISNULL(SUM(SST25), 0) SST25, ISNULL(SUM(SSL01), 0) SSL01,
|
||||
ISNULL(SUM(SSL02), 0) SSL02, ISNULL(SUM(SSL03), 0) SSL03, ISNULL(SUM(SSL04), 0) SSL04, ISNULL(SUM(SSL05), 0) SSL05,
|
||||
ISNULL(SUM(SSP06 + SSP07 + SSP08 + SSP13 + SSP14), 0) OVERWORK,
|
||||
ISNULL(SUM(SSP09 + SSP10 + SSP12), 0) OUTGOING,
|
||||
ISNULL(SUM(SSP00 + SSP01 + SSP02 + SSP03 + SSP04 + SSP05 + SSP06 + SSP07 + SSP08 + SSP09 + SSP10 + SSP11 + SSP12 +
|
||||
SSP13 + SSP14 + SSP15 + SSP99), 0) SSPLUS,
|
||||
ISNULL(SUM(SSS01 + SSS02 + SSS09), 0) LEAVING,
|
||||
ISNULL(SUM(SST01 + SST02 + SST03 + SST21 + SST22), 0) OVERWORKTIME,
|
||||
ISNULL(SUM((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)), 0) SSTOTAL,
|
||||
ISNULL(SUM(SSS01 + SSS02 + SSS04 + SSS05 + SSS06 + SSS07 + SSS08 + SSS09 + SSS10 + SSS11 + SSS12 + SSS13 + SSS14 +
|
||||
SSS15 + SSS99), 0) SSMINUS,
|
||||
ISNULL(SUM(SSP01 + SSP02 + SSP03 + SSP04 + SSP05 + SSP06 + SSP07 + SSP08 + SSP09 + SSP10 + SSP11 + SSP12 + SSP13 +
|
||||
SSP14 + SSP15 + SSP99), 0) TOTALPLUS,
|
||||
ISNULL(SUM(SSH01 + SSH02 + SSH03), 0) EMPLOYER
|
||||
FROM {0} A WHERE SSYMM=@SSYMM AND SSPYN=@SSPYN";
|
||||
|
||||
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";
|
||||
|
||||
dsSSMS.ConnectionString = ConnectionString;
|
||||
dsSSMSSum.ConnectionString = ConnectionString;
|
||||
dsSSMS.SelectCommand = String.Format(select, _tableName) + " WHERE SSYMM=@SSYMM AND SSPYN=@SSPYN ORDER BY SSENO ";
|
||||
dsSSMSSum.SelectCommand = String.Format(selectSum, _tableName);
|
||||
|
||||
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.Add("SSYMM", s);
|
||||
dsSSMS.SelectParameters.Add("SSPYN", ddlSSPYN.SelectedValue);
|
||||
dsSSMSSum.SelectParameters.Add("SSYMM", s);
|
||||
dsSSMSSum.SelectParameters.Add("SSPYN", 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)
|
||||
{
|
||||
var param = new DataSourceSelectArguments();
|
||||
var a = dsSSMSSum.Select(param) as DataView;
|
||||
|
||||
e.Row.Cells[1].Text = "合計";
|
||||
e.Row.Cells[1].HorizontalAlign = HorizontalAlign.Center;
|
||||
e.Row.Cells[2].Text = string.Format("{0:###,###,##0}", a[0]["SSP00"]); // 本薪
|
||||
e.Row.Cells[2].HorizontalAlign = HorizontalAlign.Center;
|
||||
e.Row.Cells[3].Text = string.Format("{0:###,###,##0}", a[0]["SSP01"]); // 全勤獎金
|
||||
e.Row.Cells[3].HorizontalAlign = HorizontalAlign.Center;
|
||||
e.Row.Cells[4].Text = string.Format("{0:###,###,##0}", a[0]["OVERWORK"]);
|
||||
e.Row.Cells[4].HorizontalAlign = HorizontalAlign.Center;
|
||||
e.Row.Cells[5].Text = string.Format("{0:###,###,##0}", a[0]["OUTGOING"]);
|
||||
e.Row.Cells[5].HorizontalAlign = HorizontalAlign.Center;
|
||||
e.Row.Cells[6].Text = string.Format("{0:###,###,##0}", a[0]["SSP11"]);
|
||||
e.Row.Cells[6].HorizontalAlign = HorizontalAlign.Center;
|
||||
e.Row.Cells[7].Text = string.Format("{0:###,###,##0}", a[0]["SSP02"]);
|
||||
e.Row.Cells[7].HorizontalAlign = HorizontalAlign.Center;
|
||||
e.Row.Cells[8].Text = string.Format("{0:###,###,##0}", a[0]["SSP99"]);
|
||||
e.Row.Cells[8].HorizontalAlign = HorizontalAlign.Center;
|
||||
e.Row.Cells[9].Text = string.Format("{0:###,###,##0}", a[0]["SSP03"]);
|
||||
e.Row.Cells[9].HorizontalAlign = HorizontalAlign.Center;
|
||||
e.Row.Cells[10].Text = string.Format("{0:###,###,##0}", a[0]["SSP05"]);
|
||||
e.Row.Cells[10].HorizontalAlign = HorizontalAlign.Center;
|
||||
e.Row.Cells[12].Text = string.Format("{0:###,###,##0}", a[0]["SSPLUS"]);
|
||||
e.Row.Cells[12].HorizontalAlign = HorizontalAlign.Center;
|
||||
e.Row.Cells[13].Text = string.Format("{0:###,###,##0}", a[0]["LEAVING"]);
|
||||
e.Row.Cells[13].HorizontalAlign = HorizontalAlign.Center;
|
||||
e.Row.Cells[14].Text = string.Format("{0:###,###,##0}", a[0]["SSS05"]);
|
||||
e.Row.Cells[14].HorizontalAlign = HorizontalAlign.Center;
|
||||
e.Row.Cells[15].Text = string.Format("{0:###,###,##0}", a[0]["SSS04"]);
|
||||
e.Row.Cells[15].HorizontalAlign = HorizontalAlign.Center;
|
||||
e.Row.Cells[16].Text = string.Format("{0:###,###,##0}", a[0]["SSS07"]);
|
||||
e.Row.Cells[16].HorizontalAlign = HorizontalAlign.Center;
|
||||
e.Row.Cells[17].Text = string.Format("{0:###,###,##0}", a[0]["SSS06"]);
|
||||
e.Row.Cells[17].HorizontalAlign = HorizontalAlign.Center;
|
||||
e.Row.Cells[18].Text = string.Format("{0:###,###,##0}", a[0]["SSS99"]);
|
||||
e.Row.Cells[18].HorizontalAlign = HorizontalAlign.Center;
|
||||
}
|
||||
}
|
||||
|
||||
protected void gvSSMSBonus_RowDataBound(object sender, GridViewRowEventArgs e)
|
||||
{
|
||||
//GridView_RowDataBound_Shrink_ViewState(sender, e);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user