517 lines
28 KiB
C#
517 lines
28 KiB
C#
using SuperMap.RealEstate.Web.UI.WebControls;
|
||
using System;
|
||
using System.Collections.Generic;
|
||
using System.Linq;
|
||
using System.Web;
|
||
using System.Web.UI;
|
||
using System.Web.UI.WebControls;
|
||
using System.Data;
|
||
using SuperMap.RealEstate.Web.UI;
|
||
using Running = SuperMap.RealEstate.Personnel.Running;
|
||
using Business = SuperMap.RealEstate.Personnel.Storage.Business;
|
||
using SRCDB = SuperMap.RealEstate.CoreFrameWork.Dictionary.Business;
|
||
using HZQR.Common;
|
||
using Personnel.WebSite.Shanxi;
|
||
|
||
namespace SuperMap.RealEstate.Personnel.Compents.SalaryPayrollOffice
|
||
{
|
||
public partial class Default : UI.UserControlsEx<Running.Business.SALARYPAYROLL_OFFICE>
|
||
{
|
||
#region 方法 -> 页面加载
|
||
Running.Business.PERSONNELPROINST _PERSONNELPROINST = null;
|
||
protected void Page_Load(object sender, EventArgs e)
|
||
{
|
||
if (IsPostBack) return;
|
||
|
||
//从选择部门页面,选择的部门内码
|
||
if (Request["SELECT_FIELDENUM_ID"] != null)
|
||
{
|
||
//存储已选择部门内码
|
||
FIELDENUM_ID.Text = Request["SELECT_FIELDENUM_ID"];
|
||
//绑定年月
|
||
string SALARY_DATE = Request["SALARY_DATE"].ToDecrypt();
|
||
ddlYear.SelectedValue = SALARY_DATE.Split('-')[0];
|
||
ddlMonth.SelectedValue = SALARY_DATE.Split('-')[1];
|
||
}
|
||
else
|
||
{
|
||
//流程数据中的部门内码
|
||
DataTable dt = new Business.SALARYPAYROLL_OFFICE(Transaction).ExecuteDataTable(@"
|
||
SELECT WM_CONCAT(DEPARTMENT_ID)DEPARTMENT_ID,WM_CONCAT(UNIT_ID)UNIT_ID
|
||
FROM PERSONNEL_RUNNING.T_SALARYPAYROLL_OFFICE
|
||
WHERE PERSONNELPROINST_ID=" + _PERSONNELPROINST.PERSONNELPROINST_ID + " AND SALARY_DATE='" + ddlYear.SelectedValue + "-" + ddlMonth.SelectedValue.PadLeft(2, '0') + "'");
|
||
if (dt.Rows.Count > 0)
|
||
{
|
||
FIELDENUM_ID.Text = dt.Rows[0]["DEPARTMENT_ID"].ToString() + "," + dt.Rows[0]["UNIT_ID"].ToString();
|
||
FIELDENUM_ID.Text = FIELDENUM_ID.Text.TrimEnd(',').ToEncrypt();
|
||
}
|
||
}
|
||
GridViewEx1.SelectingWithInit<Running.Business.SALARYPAYROLL_OFFICE>(ObjectDataSource1, GridPageEx1);
|
||
}
|
||
#endregion
|
||
|
||
#region 方法 -> 页面加载前执行
|
||
|
||
protected override void OnInit(EventArgs e)
|
||
{
|
||
Common.PageHelper.CreateHeaderStyle(Page);
|
||
_PERSONNELPROINST = Running.Business.PERSONNELPROINST.CreateInstance(Page);
|
||
base.ButtonVisible = false;
|
||
|
||
base.OnInit(e);
|
||
}
|
||
#endregion
|
||
|
||
#region 方法 -> 查询SQL设置
|
||
//查询SQL设置
|
||
protected void GridViewEx1_SelectMethodParameters(object sender, SelectMethodParametersArgs e)
|
||
{
|
||
//搜索选项的搜索条件过滤
|
||
//if (!string.IsNullOrEmpty(TextBox_Search.Text))
|
||
// e.AddOrParams(GridViewSearch1, TextBox_Search.Text);
|
||
//且搜索条件
|
||
e.AddAndParams("PERSONNELPROINST_ID", _PERSONNELPROINST.PERSONNELPROINST_ID);
|
||
e.AddAndParams("SALARY_DATE", ddlYear.SelectedValue + "-" + ddlMonth.SelectedValue.PadLeft(2, '0'));
|
||
string _FIELDENUM_ID = FIELDENUM_ID.Text.ToDecrypt();
|
||
if (!string.IsNullOrWhiteSpace(_FIELDENUM_ID))
|
||
{
|
||
e.SetOtherUserCustomWhereSqlString += " (UNIT_ID IN(" + _FIELDENUM_ID + ") OR DEPARTMENT_ID IN(" + _FIELDENUM_ID + "))";
|
||
}
|
||
//排序
|
||
e.AddOrderByParams("UNIT_NAME", false);
|
||
e.AddOrderByParams("DEPARTMENT_NAME", false);
|
||
}
|
||
#endregion
|
||
|
||
#region 方法 -> 载入数据
|
||
//载入数据
|
||
public override bool LoadData()
|
||
{
|
||
InitDropdown();
|
||
if (_PERSONNELPROINST != null)
|
||
{
|
||
Running.Business.SALARYPAYROLL_OFFICE _SALARYPAYROLL_OFFICE = new Running.Business.SALARYPAYROLL_OFFICE(_PERSONNELPROINST);
|
||
_SALARYPAYROLL_OFFICE.AddSearchParameter("PERSONNELPROINST_ID", _PERSONNELPROINST.PERSONNELPROINST_ID);
|
||
if (_SALARYPAYROLL_OFFICE.Search())
|
||
{
|
||
ddlYear.SelectedValue = _SALARYPAYROLL_OFFICE.SALARY_DATE.Split('-')[0];
|
||
ddlMonth.SelectedValue = _SALARYPAYROLL_OFFICE.SALARY_DATE.Split('-')[1];
|
||
}
|
||
}
|
||
lblTitle.Text = "实业集团机关" + ddlYear.SelectedValue + "年" + ddlMonth.SelectedValue.TryParseToInt() + "月工资汇总表";
|
||
return true;
|
||
}
|
||
#endregion
|
||
|
||
#region 方法 -> 初始化下拉框
|
||
public void InitDropdown(int selectYear = 0)
|
||
{
|
||
DateTime date = DateTime.Now;
|
||
int year = date.Month == 12 ? date.Year - 1 : date.Year;// 取当前时间年,若为12月,则年份向前一年
|
||
ListItemEx yearItem = null;
|
||
//向过去的年份循环20年
|
||
for (int i = year; i > year - 20; i--)
|
||
{
|
||
yearItem = new ListItemEx(i.ToString() + "年", i.ToString());
|
||
ddlYear.Items.Add(yearItem);
|
||
}
|
||
ddlYear.SelectedValue = selectYear > 0 ? selectYear.ToString() : year.ToString();
|
||
|
||
int month = ddlYear.SelectedValue.TryParseToInt() == date.Year ? date.Month - 1 : 12;//月份不能大于上个月
|
||
ListItemEx monthItem = null;
|
||
//循环12个月
|
||
for (int i = 1; i <= month; i++)
|
||
{
|
||
monthItem = new ListItemEx(i.ToString() + "月", i.ToString("00"));
|
||
ddlMonth.Items.Add(monthItem);
|
||
}
|
||
ddlMonth.SelectedValue = month.ToString("00");
|
||
}
|
||
#endregion
|
||
|
||
#region 方法 -> 生成汇总数据
|
||
public void CreateData()
|
||
{
|
||
string salaryDate = ddlYear.SelectedValue + "-" + ddlMonth.SelectedValue.PadLeft(2, '0');
|
||
string SELECT_FIELDENUM_ID = FIELDENUM_ID.Text.ToDecrypt();
|
||
#region 汇总数据是否已存在
|
||
if ((salaryDate + "01").TryParseToDateTime() >= (DateTime.Now.ToString("yyyy-MM") + "01").TryParseToDateTime())
|
||
{
|
||
throw new Exception("暂无" + salaryDate + "工资汇总数据");
|
||
}
|
||
//若生成汇总表,则判断是否已存在审批数据
|
||
string sqlWhere = string.Format(" WHERE SALARY_DATE='{0}' AND PERSONNELPROINST_ID<>{1} AND (UNIT_ID IN({2}) OR DEPARTMENT_ID IN({2}))", salaryDate, _PERSONNELPROINST.PERSONNELPROINST_ID, SELECT_FIELDENUM_ID);
|
||
DataTable dtExist = new Running.Business.SALARYPAYROLL_OFFICE(Transaction).FillDataTable(sqlWhere);
|
||
string existsDepartment = "";
|
||
if (dtExist.Rows.Count > 0)
|
||
{
|
||
foreach (DataRow dr in dtExist.Rows)
|
||
{
|
||
if (SELECT_FIELDENUM_ID.Split(',').Contains(dr["UNIT_ID"].ToString()))
|
||
{
|
||
existsDepartment += dr["UNIT_NAME"] + ",";
|
||
}
|
||
else if (SELECT_FIELDENUM_ID.Split(',').Contains(dr["DEPARTMENT_ID"].ToString()))
|
||
{
|
||
existsDepartment += dr["DEPARTMENT_NAME"] + ",";
|
||
}
|
||
}
|
||
}
|
||
dtExist = new Business.SALARYPAYROLL_OFFICE(Transaction).FillDataTable(sqlWhere);
|
||
if (dtExist.Rows.Count > 0)
|
||
{
|
||
foreach (DataRow dr in dtExist.Rows)
|
||
{
|
||
if (SELECT_FIELDENUM_ID.Split(',').Contains(dr["UNIT_ID"].ToString()))
|
||
{
|
||
existsDepartment += dr["UNIT_NAME"] + ",";
|
||
}
|
||
else if (SELECT_FIELDENUM_ID.Split(',').Contains(dr["DEPARTMENT_ID"].ToString()))
|
||
{
|
||
existsDepartment += dr["DEPARTMENT_NAME"] + ",";
|
||
}
|
||
}
|
||
}
|
||
if (existsDepartment != "")
|
||
{
|
||
existsDepartment = string.Join(",", existsDepartment.Split(',').Distinct());
|
||
throw new Exception("【" + existsDepartment.TrimEnd(',') + "】," + salaryDate + "工资汇总数据已存在");
|
||
}
|
||
#endregion
|
||
|
||
#region 查询已选中部门数据
|
||
string _FIELDENUM_ID = "";
|
||
string sql = string.Format(@"
|
||
SELECT
|
||
A.FIELDENUM_ID,A.FIELDENUM_NAME,C.FIELDENUM_ID FIELDENUM_PID,C.FIELDENUM_NAME FIELDENUM_PNAME,B.SERVERPART_ID
|
||
FROM
|
||
PLATFORM_DICTIONARY.T_FIELDENUM A
|
||
INNER JOIN HIGHWAY_STORAGE.T_SERVERPART B ON A.FIELDENUM_ID=B.FIELDENUM_ID
|
||
LEFT JOIN PLATFORM_DICTIONARY.T_FIELDENUM C ON A.FIELDENUM_PID = C.FIELDENUM_ID
|
||
WHERE A.FIELDENUM_ID IN({0})
|
||
UNION ALL
|
||
SELECT
|
||
B.FIELDENUM_ID,B.FIELDENUM_NAME,A.FIELDENUM_ID FIELDENUM_PID,A.FIELDENUM_NAME FIELDENUM_PNAME,C.SERVERPART_ID
|
||
FROM
|
||
PLATFORM_DICTIONARY.T_FIELDENUM A
|
||
INNER JOIN PLATFORM_DICTIONARY.T_FIELDENUM B ON A.FIELDENUM_ID=B.FIELDENUM_PID
|
||
LEFT JOIN HIGHWAY_STORAGE.T_SERVERPART C ON B.FIELDENUM_ID=C.FIELDENUM_ID
|
||
WHERE A.FIELDENUM_ID IN({0})", FIELDENUM_ID.Text.ToDecrypt());
|
||
DataTable dtFieldenum = new SRCDB.FieldEnum(Transaction).ExecuteDataTable(sql);
|
||
foreach (DataRow item in dtFieldenum.Rows)
|
||
{
|
||
_FIELDENUM_ID += item["FIELDENUM_ID"].ToString() + ",";
|
||
}
|
||
_FIELDENUM_ID = _FIELDENUM_ID.TrimEnd(',');
|
||
#endregion
|
||
|
||
sqlWhere = " WHERE A.STAFF_ID=B.STAFF_ID AND B.SERVERPART_ID IS NOT NULL AND B.DEPARTMENT_NAME IS NOT NULL ";
|
||
//薪资月份
|
||
sqlWhere += "AND TO_CHAR(A.PAID_DATE,'YYYY-MM')='" + salaryDate + "' ";
|
||
//服务区
|
||
string sqlWhereStaff = "1=1";
|
||
if (!string.IsNullOrWhiteSpace(_FIELDENUM_ID))
|
||
{
|
||
sqlWhere += "AND B.SERVERPART_ID IN (SELECT SERVERPART_ID FROM HIGHWAY_STORAGE.T_SERVERPART WHERE FIELDENUM_ID IN (" + _FIELDENUM_ID + "))";
|
||
sqlWhereStaff += "AND SERVERPART_ID IN (SELECT SERVERPART_ID FROM HIGHWAY_STORAGE.T_SERVERPART WHERE FIELDENUM_ID IN (" + _FIELDENUM_ID + "))";
|
||
}
|
||
//删除运行库该流程,之前已生成汇总数据
|
||
foreach (Running.Business.SALARYPAYROLL_OFFICE _SALARYPAYROLL_OFFICE in new Running.Business.SALARYPAYROLL_OFFICE(_PERSONNELPROINST).FillCollection(
|
||
"WHERE PERSONNELPROINST_ID = " + _PERSONNELPROINST.PERSONNELPROINST_ID))
|
||
{
|
||
if (_SALARYPAYROLL_OFFICE.SALARY_DATE != salaryDate || _FIELDENUM_ID.Split(',').Contains(_SALARYPAYROLL_OFFICE.DEPARTMENT_ID.ToString()))
|
||
{
|
||
_SALARYPAYROLL_OFFICE.Delete();
|
||
}
|
||
}
|
||
Running.Business.SALARYPAYROLL_OFFICE SALARYPAYROLL_OFFICE = new Running.Business.SALARYPAYROLL_OFFICE(_PERSONNELPROINST);
|
||
SALARYPAYROLL_OFFICE.AddSearchParameter("SALARY_DATE", salaryDate);
|
||
SALARYPAYROLL_OFFICE.AddSearchParameter("PERSONNELPROINST_ID", _PERSONNELPROINST.PERSONNELPROINST_ID);
|
||
if (!SALARYPAYROLL_OFFICE.Search())
|
||
{
|
||
//若不存在汇总数据,则添加
|
||
//生成工资明细数据
|
||
ThirdParty.SalaryCalculate(sqlWhereStaff, "A.STAFF_ID", salaryDate, Page.PassportInfo.ID.TryParseToInt(), Page.PassportInfo.Name, -1, Transaction);
|
||
//查询薪资明细
|
||
DataTable dtSalary = new Business.STAFF(Transaction).ExecuteDataTable(@"
|
||
SELECT B.SERVERPART_ID,(CASE WHEN MAX(C.SERVERPART_NAME) IS NULL THEN MAX(B.DEPARTMENT_NAME) ELSE MAX(C.SERVERPART_NAME) END) AS DEPARTMENT_NAME, COUNT(1) AS STAFF_NUM,
|
||
SUM(NVL(A.MINIMUM_SALARY,0)+NVL(A.RANKLEVEL_SALARY,0)+NVL(A.SENIORITY_SALARY,0)+NVL(A.SKILLLEVEL_SALARY,0)+NVL(A.POSITION_SALARY,0)) AS FIXED_SALARY,
|
||
SUM(NVL(A.KPI_SALARY_MONTH,0)) AS KPI_SALARY_MONTH,
|
||
SUM(NVL(A.OTHER_PAY,0)+NVL(A.KPI_SALARY_YEAR,0)) AS KPI_SALARY_YEAR,
|
||
SUM(NVL(A.DEDUCTION_SALARY,0)) AS DEDUCTION_SALARY,
|
||
SUM(NVL(A.WAGES_PAYABLE,0)) AS WAGES_PAYABLE,
|
||
SUM(NVL(A.ENDOWMENT_INSURANCE,0)) AS ENDOWMENT_INSURANCE,
|
||
SUM(NVL(A.MEDICAL_INSURANCE,0)) AS MEDICAL_INSURANCE,
|
||
SUM(NVL(A.UNEMPLOYMENT_INSURANCE,0)) AS UNEMPLOYMENT_INSURANCE,
|
||
SUM(NVL(A.HOUSING_PROVIDENT_FUND,0)) AS HOUSING_PROVIDENT_FUND,
|
||
SUM(NVL(A.FINAL_WAGES,0)) AS FINAL_WAGES,
|
||
SUM(NVL(A.DEDUCTION_TAX,0)) AS DEDUCTION_TAX,
|
||
SUM(NVL(A.MEAL_EXPENSE,0)) AS MEAL_EXPENSE,
|
||
SUM(NVL(A.TAKE_WAGES,0)) AS TAKE_WAGES
|
||
FROM PERSONNEL_STORAGE.T_STAFFSALARY A,PERSONNEL_STORAGE.T_STAFF B " +
|
||
" LEFT JOIN HIGHWAY_STORAGE.T_SERVERPART C ON B.SERVERPART_ID=C.SERVERPART_ID" + sqlWhere +
|
||
"GROUP BY B.SERVERPART_ID ORDER BY MAX(C.SERVERPART_INDEX)");
|
||
if (dtSalary.Rows.Count == 0)
|
||
{
|
||
throw new Exception("暂无员工薪资数据");
|
||
}
|
||
//dtSalary.DefaultView.Sort = "DEPARTMENT_NAME";
|
||
//dtSalary = dtSalary.DefaultView.ToTable();
|
||
//List<Running.Business.SALARYPAYROLL_OFFICE> SALARYPAYROLLList = new Running.Business.SALARYPAYROLL_OFFICE(_PERSONNELPROINST).FillCollection(
|
||
// "WHERE PERSONNELPROINST_ID = " + _PERSONNELPROINST.PERSONNELPROINST_ID);
|
||
//foreach (Running.Business.SALARYPAYROLL_OFFICE _SALARYPAYROLL_OFFICE in SALARYPAYROLLList)
|
||
//{
|
||
// _SALARYPAYROLL_OFFICE.Delete();
|
||
//}
|
||
//向运行库添加汇总数据
|
||
foreach (DataRow dr in dtSalary.Rows)
|
||
{
|
||
Running.Business.SALARYPAYROLL_OFFICE _SALARYPAYROLL_OFFICE = new Running.Business.SALARYPAYROLL_OFFICE(Transaction);
|
||
_SALARYPAYROLL_OFFICE.AddSearchParameter("DEPARTMENT_ID", dr["SERVERPART_ID"]);
|
||
_SALARYPAYROLL_OFFICE.AddSearchParameter("SALARY_DATE", salaryDate);
|
||
_SALARYPAYROLL_OFFICE.AddSearchParameter("PERSONNELPROINST_ID", _PERSONNELPROINST.PERSONNELPROINST_ID);
|
||
if (!_SALARYPAYROLL_OFFICE.Search())
|
||
{
|
||
_SALARYPAYROLL_OFFICE.ResetProperty();
|
||
_SALARYPAYROLL_OFFICE.PERSONNELPROINST_ID = _PERSONNELPROINST.PERSONNELPROINST_ID;
|
||
_SALARYPAYROLL_OFFICE.SALARY_DATE = salaryDate;
|
||
DataRow[] drFieldenum = dtFieldenum.Select("SERVERPART_ID=" + dr["SERVERPART_ID"]);
|
||
if (drFieldenum.Length > 0)
|
||
{
|
||
_SALARYPAYROLL_OFFICE.UNIT_ID = drFieldenum[0]["FIELDENUM_PID"].TryParseToInt();
|
||
_SALARYPAYROLL_OFFICE.UNIT_NAME = drFieldenum[0]["FIELDENUM_PNAME"].ToString();
|
||
_SALARYPAYROLL_OFFICE.DEPARTMENT_ID = drFieldenum[0]["FIELDENUM_ID"].TryParseToInt();
|
||
_SALARYPAYROLL_OFFICE.DEPARTMENT_NAME = drFieldenum[0]["FIELDENUM_NAME"].ToString();
|
||
}
|
||
_SALARYPAYROLL_OFFICE.STAFF_NUM = dr["STAFF_NUM"].TryParseToInt();
|
||
_SALARYPAYROLL_OFFICE.FIXED_SALARY = dr["FIXED_SALARY"].TryParseToDouble();
|
||
_SALARYPAYROLL_OFFICE.KPI_SALARY_MONTH = dr["KPI_SALARY_MONTH"].TryParseToDouble();
|
||
_SALARYPAYROLL_OFFICE.KPI_SALARY_YEAR = dr["KPI_SALARY_YEAR"].TryParseToDouble();
|
||
_SALARYPAYROLL_OFFICE.DEDUCTION_SALARY = dr["DEDUCTION_SALARY"].TryParseToDouble();
|
||
_SALARYPAYROLL_OFFICE.WAGES_PAYABLE = dr["WAGES_PAYABLE"].TryParseToDouble();
|
||
_SALARYPAYROLL_OFFICE.ENDOWMENT_INSURANCE = dr["ENDOWMENT_INSURANCE"].TryParseToDouble();
|
||
_SALARYPAYROLL_OFFICE.MEDICAL_INSURANCE = dr["MEDICAL_INSURANCE"].TryParseToDouble();
|
||
_SALARYPAYROLL_OFFICE.UNEMPLOYMENT_INSURANCE = dr["UNEMPLOYMENT_INSURANCE"].TryParseToDouble();
|
||
_SALARYPAYROLL_OFFICE.HOUSING_PROVIDENT_FUND = dr["HOUSING_PROVIDENT_FUND"].TryParseToDouble();
|
||
_SALARYPAYROLL_OFFICE.FINAL_WAGES = dr["FINAL_WAGES"].TryParseToDouble();
|
||
_SALARYPAYROLL_OFFICE.DEDUCTION_TAX = dr["DEDUCTION_TAX"].TryParseToDouble();
|
||
_SALARYPAYROLL_OFFICE.MEAL_EXPENSE = dr["MEAL_EXPENSE"].TryParseToDouble();
|
||
_SALARYPAYROLL_OFFICE.TAKE_WAGES = dr["TAKE_WAGES"].TryParseToDouble();
|
||
_SALARYPAYROLL_OFFICE.Insert();
|
||
}
|
||
}
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
#region 方法 -> 月份选择事件
|
||
protected void ddlMonth_CallBackSetControl(object sender, ClientSetEventArgs e)
|
||
{
|
||
lblTitle.Text = "实业集团机关" + ddlYear.SelectedValue + "年" + ddlMonth.SelectedValue.TryParseToInt() + "月工资汇总表";
|
||
e.SetInnerHtml(lblTitle, lblTitle.Text);
|
||
GridViewEx1.SelectingWithInit<Running.Business.SALARYPAYROLL_OFFICE>(ObjectDataSource1, GridPageEx1);
|
||
e.SetValue(GridViewEx1);
|
||
}
|
||
#endregion
|
||
|
||
#region 方法 -> 生成汇总表按钮事件
|
||
protected void ButtonCreate_CallBackClick(object sender, ClientSetEventArgs e)
|
||
{
|
||
if (string.IsNullOrWhiteSpace(FIELDENUM_ID.Text))
|
||
{
|
||
throw new Exception("请选择部门");
|
||
}
|
||
CreateData();
|
||
GridViewEx1.SelectingWithInit<Running.Business.SALARYPAYROLL_OFFICE>(ObjectDataSource1, GridPageEx1);
|
||
e.SetValue(GridViewEx1);
|
||
}
|
||
#endregion
|
||
|
||
#region 方法 -> 行绑定事件
|
||
double sumSTAFF_NUM = 0, sumFIXED_SALARY = 0, sumKPI_SALARY_MONTH = 0, sumKPI_SALARY_YEAR = 0, sumDEDUCTION_SALARY = 0, sumWAGES_PAYABLE = 0,
|
||
sumENDOWMENT_INSURANCE = 0, sumMEDICAL_INSURANCE = 0, sumUNEMPLOYMENT_INSURANCE = 0, sumHOUSING_PROVIDENT_FUND = 0,
|
||
sumFINAL_WAGES = 0, sumDEDUCTION_TAX = 0, sumMEAL_EXPENSE = 0, sumTAKE_WAGES = 0;
|
||
protected void GridViewEx1_RowDataBound(object sender, GridViewRowEventArgs e)
|
||
{
|
||
if (e.Row.RowType == DataControlRowType.Header)
|
||
{
|
||
#region 重绘表头
|
||
//第一行表头
|
||
TableCellCollection tbHeader = e.Row.Cells;
|
||
tbHeader.Clear();
|
||
tbHeader.Add(new TableHeaderCell());
|
||
tbHeader[0].Attributes.Add("rowspan", "2");
|
||
tbHeader[0].Text = "序号";
|
||
tbHeader.Add(new TableHeaderCell());
|
||
tbHeader[1].Attributes.Add("rowspan", "2");
|
||
tbHeader[1].Text = "所属单位";
|
||
tbHeader.Add(new TableHeaderCell());
|
||
tbHeader[2].Attributes.Add("rowspan", "2");
|
||
tbHeader[2].Text = "所属部门";
|
||
tbHeader.Add(new TableHeaderCell());
|
||
tbHeader[3].Attributes.Add("rowspan", "2");
|
||
tbHeader[3].Text = "职工人数";
|
||
tbHeader.Add(new TableHeaderCell());
|
||
tbHeader[4].Attributes.Add("rowspan", "2");
|
||
tbHeader[4].Text = "固定部分小计";
|
||
tbHeader.Add(new TableHeaderCell());
|
||
tbHeader[5].Attributes.Add("rowspan", "2");
|
||
tbHeader[5].Text = "月绩效工资";
|
||
tbHeader.Add(new TableHeaderCell());
|
||
tbHeader[6].Attributes.Add("rowspan", "2");
|
||
tbHeader[6].Text = "年绩效调剂小计";
|
||
tbHeader.Add(new TableHeaderCell());
|
||
tbHeader[7].Attributes.Add("rowspan", "2");
|
||
tbHeader[7].Text = "应扣工资";
|
||
tbHeader.Add(new TableHeaderCell());
|
||
tbHeader[8].Attributes.Add("rowspan", "2");
|
||
tbHeader[8].Text = "应发工资";
|
||
tbHeader.Add(new TableHeaderCell());
|
||
tbHeader[9].Attributes.Add("colspan", "4");
|
||
tbHeader[9].Text = "五险一金";
|
||
tbHeader.Add(new TableHeaderCell());
|
||
tbHeader[10].Attributes.Add("rowspan", "2");
|
||
tbHeader[10].Text = "实发工资";
|
||
tbHeader.Add(new TableHeaderCell());
|
||
tbHeader[11].Attributes.Add("rowspan", "2");
|
||
tbHeader[11].Text = "应扣税款";
|
||
tbHeader.Add(new TableHeaderCell());
|
||
tbHeader[12].Attributes.Add("rowspan", "2");
|
||
tbHeader[12].Text = "代扣伙食费";
|
||
tbHeader.Add(new TableHeaderCell());
|
||
tbHeader[13].Attributes.Add("rowspan", "2");
|
||
tbHeader[13].Text = "实领工资";
|
||
tbHeader.Add(new TableHeaderCell());
|
||
tbHeader[14].Attributes.Add("rowspan", "2");
|
||
tbHeader[14].Text = "备注</th></tr><tr><th>养老8%";
|
||
//第二行表头
|
||
tbHeader.Add(new TableHeaderCell());
|
||
tbHeader[15].Text = "医保2%";
|
||
tbHeader.Add(new TableHeaderCell());
|
||
tbHeader[16].Text = "失业0.3%";
|
||
tbHeader.Add(new TableHeaderCell());
|
||
tbHeader[17].Text = "公积金12%";
|
||
#endregion
|
||
}
|
||
else if (e.Row.RowType == DataControlRowType.DataRow)
|
||
{
|
||
//序号
|
||
//e.Row.Cells[0].Text = e.Row.Cells[0].Text + ".";
|
||
//备注
|
||
if (e.Row.Cells[17].Text.Replace(" ", "").Length > 5)
|
||
{
|
||
e.Row.Cells[17].ToolTip = e.Row.Cells[17].Text;
|
||
e.Row.Cells[17].Text = e.Row.Cells[17].Text.Substring(0, 5) + "...";
|
||
}
|
||
|
||
#region 合计
|
||
sumSTAFF_NUM += e.Row.Cells[3].Text.TryParseToDouble();
|
||
sumFIXED_SALARY += e.Row.Cells[4].Text.TryParseToDouble();
|
||
sumKPI_SALARY_MONTH += e.Row.Cells[5].Text.TryParseToDouble();
|
||
sumKPI_SALARY_YEAR += e.Row.Cells[6].Text.TryParseToDouble();
|
||
sumDEDUCTION_SALARY += e.Row.Cells[7].Text.TryParseToDouble();
|
||
sumWAGES_PAYABLE += e.Row.Cells[8].Text.TryParseToDouble();
|
||
|
||
sumENDOWMENT_INSURANCE += e.Row.Cells[9].Text.TryParseToDouble();
|
||
sumMEDICAL_INSURANCE += e.Row.Cells[10].Text.TryParseToDouble();
|
||
sumUNEMPLOYMENT_INSURANCE += e.Row.Cells[11].Text.TryParseToDouble();
|
||
sumHOUSING_PROVIDENT_FUND += e.Row.Cells[12].Text.TryParseToDouble();
|
||
|
||
sumFINAL_WAGES += e.Row.Cells[13].Text.TryParseToDouble();
|
||
sumDEDUCTION_TAX += e.Row.Cells[14].Text.TryParseToDouble();
|
||
sumMEAL_EXPENSE += e.Row.Cells[15].Text.TryParseToDouble();
|
||
sumTAKE_WAGES += e.Row.Cells[16].Text.TryParseToDouble();
|
||
#endregion
|
||
|
||
string SALARYPAYROLL_OFFICE_ID = GridViewEx1.DataKeys[e.Row.RowIndex].Values["SALARYPAYROLL_OFFICE_ID"].ToEncrypt();
|
||
|
||
e.Row.Attributes["onclick"] = GridViewEx1.GetOpenPopDialogClientScript("/Personnel/Compents/SalaryPayrollOffice/SALARYPAYROLL_OFFICEPage.aspx?ID=" + SALARYPAYROLL_OFFICE_ID, 900, 500);
|
||
}
|
||
else if (e.Row.RowType == DataControlRowType.Footer)
|
||
{
|
||
e.Row.Cells[0].Text = "合计";
|
||
e.Row.Cells[0].HorizontalAlign = HorizontalAlign.Center;
|
||
e.Row.Cells[0].ColumnSpan = 3;
|
||
e.Row.Cells[1].Visible = false;
|
||
e.Row.Cells[2].Visible = false;
|
||
e.Row.Cells[3].Text = sumSTAFF_NUM.ToString();
|
||
e.Row.Cells[4].Text = sumFIXED_SALARY.ToString();
|
||
e.Row.Cells[5].Text = sumKPI_SALARY_MONTH.ToString();
|
||
e.Row.Cells[6].Text = sumKPI_SALARY_YEAR.ToString();
|
||
e.Row.Cells[7].Text = sumDEDUCTION_SALARY.ToString();
|
||
e.Row.Cells[8].Text = sumWAGES_PAYABLE.ToString();
|
||
e.Row.Cells[9].Text = sumENDOWMENT_INSURANCE.ToString();
|
||
e.Row.Cells[10].Text = sumMEDICAL_INSURANCE.ToString();
|
||
e.Row.Cells[11].Text = sumUNEMPLOYMENT_INSURANCE.ToString();
|
||
e.Row.Cells[12].Text = sumHOUSING_PROVIDENT_FUND.ToString();
|
||
e.Row.Cells[13].Text = sumFINAL_WAGES.ToString();
|
||
e.Row.Cells[14].Text = sumDEDUCTION_TAX.ToString();
|
||
e.Row.Cells[15].Text = sumMEAL_EXPENSE.ToString();
|
||
e.Row.Cells[16].Text = sumTAKE_WAGES.ToString();
|
||
}
|
||
}
|
||
#endregion
|
||
|
||
#region 方法 -> 保存按钮执行前
|
||
public override void OnDataAction_BeforeSave(DataActionEventArgs<Running.Business.SALARYPAYROLL_OFFICE> e)
|
||
{
|
||
if (GridViewEx1.Rows.Count == 0)
|
||
{
|
||
throw new Exception("暂未生成机关工资汇总数据");
|
||
}
|
||
base.OnDataAction_BeforeSave(e);
|
||
}
|
||
#endregion
|
||
|
||
#region 方法 -> 年份选择事件-联动月份
|
||
protected void ddlYear_CallBackSetControl(object sender, ClientSetEventArgs e)
|
||
{
|
||
ddlMonth.Clear();
|
||
DateTime date = DateTime.Now;
|
||
int month = ddlYear.SelectedValue.TryParseToInt() == date.Year ? date.Month - 1 : 12;//月份不能大于上个月
|
||
ListItemEx monthItem = null;
|
||
//循环月份
|
||
for (int i = 1; i <= month; i++)
|
||
{
|
||
monthItem = new ListItemEx(i.ToString() + "月", i.ToString("00"));
|
||
ddlMonth.Items.Add(monthItem);
|
||
}
|
||
ddlMonth.SelectedValue = ddlYear.SelectedValue.TryParseToInt() == date.Year ? month.ToString("00") : "01";
|
||
e.SetDropDownListEx(ddlMonth);
|
||
lblTitle.Text = "实业集团机关" + ddlYear.SelectedValue + "年" + ddlMonth.SelectedValue.TryParseToInt() + "月工资汇总表";
|
||
e.SetInnerHtml(lblTitle, lblTitle.Text);
|
||
GridViewEx1.SelectingWithInit<Running.Business.SALARYPAYROLL_OFFICE>(ObjectDataSource1, GridPageEx1);
|
||
e.SetValue(GridViewEx1);
|
||
}
|
||
#endregion
|
||
|
||
#region 方法 -> 翻页事件
|
||
//翻页事件
|
||
protected void GridPageEx1_CallBackPageChanged(object src, ClientSetEventArgs e)
|
||
{
|
||
GridViewEx1.SelectingWithInit<Running.Business.SALARYPAYROLL_OFFICE>(ObjectDataSource1, GridPageEx1);
|
||
//设置UI变化
|
||
e.SetValue(GridViewEx1);
|
||
}
|
||
#endregion
|
||
|
||
#region 方法 -> 选择部门
|
||
protected void ButtonDepartment_CallBackClick(object sender, ClientSetEventArgs e)
|
||
{
|
||
e.ClientScript = Page.GetOpenPopDialogClientScript("/Personnel/Compents/SalaryPayrollOffice/ObjectTree.aspx?NowActInst_ID=" + Request["NowActInst_ID"] +
|
||
"&ProInst_ID=" + Request["ProInst_ID"] + "&SELECT_FIELDENUM_ID=" + FIELDENUM_ID.Text +
|
||
"&SALARY_DATE=" + (ddlYear.SelectedValue + "-" + ddlMonth.SelectedValue.PadLeft(2, '0')).ToEncrypt(),
|
||
"ObjectTree", 380, 650, true, false, true);
|
||
}
|
||
#endregion
|
||
|
||
#region 方法 -> 搜索按钮事件
|
||
protected void ButtonSearch_CallBackClick(object sender, ClientSetEventArgs e)
|
||
{
|
||
GridViewEx1.SelectingWithInit<Running.Business.SALARYPAYROLL_OFFICE>(ObjectDataSource1, GridPageEx1);
|
||
e.SetValue(GridViewEx1);
|
||
}
|
||
#endregion
|
||
|
||
}
|
||
} |