protected void LoadData(bool onlyPayGroup) { currRows.Clear(); CreateWaitDialog("正在查询...", "请稍等"); //清除原来的数据 List <SalaryResult> rows = SalaryResult.GetSalaryResults((string)cbb日历组.EditValue); foreach (SalaryResult row in rows) { if (myPayGroupList.Find(a => a.英文名 == row.薪资组.Trim()) != null) { currRows.Add(row); } } if (onlyPayGroup) { currRows = currRows.FindAll(a => a.薪资组 == (string)ccb薪资组.EditValue); SetButtonEnabled(); } currRows = currRows.OrderBy(a => a.财务公司).ThenBy(a => a.财务部门序号).ThenBy(a => a.员工序号).ToList(); CreateWaitDialog("正在加载...", "请稍等"); gridControl1.DataSource = currRows; gridControl1.RefreshDataSource(); CloseWaitDialog(); }
private void btn重新同步_Click(object sender, EventArgs e) { if (MessageBox.Show("重新同步后需重新审核,确实重新同步吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2, 0, false) == DialogResult.Yes) { Thread.Sleep(200); CreateWaitDialog("正在同步...", "请耐心等待"); //删除历史数据 SalaryAuditingResult.ClearAuditingResult((string)cbb日历组.EditValue, (string)ccb薪资组.EditValue); //删除工资表 PrivateSalary.ClearPrivateSalary((string)cbb日历组.EditValue, (string)ccb薪资组.EditValue); //清除旧的抽查记录 PayCheckRecord.ClearPayCheckRecord((string)cbb日历组.EditValue, (string)ccb薪资组.EditValue); //同步基础工资 StringBuilder sb = SalaryResult.SychSalaryResult((string)cbb日历组.EditValue, (string)ccb薪资组.EditValue); //同步工资明细 StringBuilder sbItem = SalaryResultItem.SychSalaryResultItem((string)cbb日历组.EditValue, (string)ccb薪资组.EditValue); sb.Append(sbItem.ToString()); CloseWaitDialog(); MyHelper.WriteLog(LogType.信息, "重新同步上表工资", String.Format("日历组:{0}, {1} 薪资组: {2}, {3}", (string)cbb日历组.EditValue, cbb日历组.Text, (string)ccb薪资组.EditValue, ccb薪资组.Text)); string msg = sb.ToString(); if (string.IsNullOrEmpty(msg)) { LoadData(true); } else { MessageBox.Show(msg); } } SetButtonEnabled(); }
static void Main(string[] args) { //连接数据库 SqlConnection conn = MyHelper.GetConnection(); DevExpress.Xpo.XpoDefault.DataLayer = CreateThreadSafeDataLayer(conn); DevExpress.Xpo.Session.DefaultSession.Connection = conn; Console.WriteLine("正在同步薪酬体系...."); SalaryPlan.SychSalaryPlan(); Console.WriteLine("正在同步薪等...."); SalaryGrade.SychSalaryGrade(); Console.WriteLine("正在同步薪级...."); SalaryStep.SychSalaryStep(); Console.WriteLine("正在同步员工基本信息...."); EmployeeInfo.SychEmployeeInfo(); Console.WriteLine("正在同步工资表...."); SalaryResult.SychSalaryResult(); Console.WriteLine("正在清理无效的月薪记录...."); MonthlySalary.ClearInvalidRecord(); Console.WriteLine("正在同步绩效考核结果...."); KpiItem.SychKpiItem(); Console.WriteLine("同步完毕!"); //Console.WriteLine("按任意键退出..."); //Console.ReadKey(true); }
private void Init() { 个税起征点 = PsHelper.GetPersonTaxPoint(期间_开始); 标准职级工资表 = StepPayRate.GetEffectives(期间_开始); 个人职级工资表 = PersonPayRate.GetEffectives(期间_开始); 表工资表 = SalaryResult.GetSalaryResults(薪资组, 日历组); 其它奖扣项 = OtherMoney.GetOtherMoneyList(年, 月); 工资系数表 = EmpPayRate.GetEmpPayRateList(年, 月); }
public SalaryResult GetPage(string filter, int?draw, int?initialPage, int?pageSize, string sortDir, string sortBy) { using (SATEntities db = new SATEntities()) { var data = db.tb_Salary.ToList(); int recordsTotal = data.Count(); if (!string.IsNullOrEmpty(filter)) { data = data.Where(x => x.SaLevel.ToString().Contains(filter) || x.SaStep.ToString().Contains(filter) || x.SaRate.ToString().Contains(filter)).ToList(); } int recordsFiltered = data.Count(); switch (sortBy) { case "SaLevel": data = (sortDir == "asc") ? data.OrderBy(x => x.SaLevel).ToList() : data.OrderByDescending(x => x.SaLevel).ToList(); break; case "SaStep": data = (sortDir == "asc") ? data.OrderBy(x => x.SaStep).ToList() : data.OrderByDescending(x => x.SaStep).ToList(); break; case "saRate": data = (sortDir == "asc") ? data.OrderBy(x => x.SaRate).ToList() : data.OrderByDescending(x => x.SaRate).ToList(); break; } int start = initialPage.HasValue ? (int)initialPage / (int)pageSize : 0; int length = pageSize ?? 10; var list = data.Select((s, i) => new SalaryViewModel() { RowNumber = i + 1, SaID = s.SaID, SaLevel = s.SaLevel, SaStep = s.SaStep, SaRate = s.SaRate }).Skip(start * length).Take(length).ToList(); SalaryResult result = new SalaryResult(); result.draw = draw ?? 0; result.recordsTotal = recordsTotal; result.recordsFiltered = recordsFiltered; result.data = list; return(result); } }
public PersonPayCounter(PayCounter payCounter, SalaryResult salaryResult) { this.工资计算器 = payCounter; this.表工资表 = salaryResult; this.员工编号 = salaryResult.员工编号; this.姓名 = salaryResult.姓名; this.年 = salaryResult.年度; this.月 = salaryResult.月份; this.薪资组 = salaryResult.薪资组; this.日历组 = salaryResult.日历组; this.薪酬体系 = salaryResult.薪酬体系编号; Calculate(); }
List <MonthlySalaryInput> CreateEditingRows() { List <MonthlySalaryInput> list = new List <MonthlySalaryInput>(); //排序 emp_list = emp_list.OrderBy(a => a.部门序号).ThenBy(a => a.机构序号).ThenBy(a => a.机构名称).ThenBy(a => a.员工序号).ToList(); DateTime lastSalaryDate = SalaryResult.GetLastSalaryDate(); int order = 1; foreach (EmployeeInfo emp in emp_list) { //2018-5-25 只创建没有月薪标准的人员 //将当前执行的标准带过来 MonthlySalary effectiveMonthlySalary = MonthlySalary.GetEffective(emp.员工编号, lastSalaryDate); if (effectiveMonthlySalary != null) { continue; } string lastSalaryGrade = SalaryResult.GetLastestSalaryGrade(emp.员工编号); if (lastSalaryGrade == null) { lastSalaryGrade = emp.职等; } //创建员工月薪记录 MonthlySalaryInput ms = MonthlySalaryInput.AddMonthlySalaryInput(emp.员工编号, period, isCheck, true); ms.序号 = order; ms.薪酬体系 = salary_plan; ms.职等 = lastSalaryGrade; ms.群组 = group; //2018-4-23 新建的记录备注不要带过来 if (ms.录入人.Trim() == "") { ms.开始执行日期 = DateTime.MinValue; ms.调整类型 = ""; ms.备注 = ""; } ms.Save(); list.Add(ms); order++; } return(list); }
private void OnEmployeeSelectd(object sender, EmployeeInfo emp) { if (monthly_salary_list.Find(a => a.员工编号 == emp.员工编号) == null) { string lastSalaryGrade = SalaryResult.GetLastestSalaryGrade(emp.员工编号); if (lastSalaryGrade == null) { lastSalaryGrade = emp.职等; } bool copyEffective = false; //将当前执行的标准带过来 MonthlySalary effectiveMonthlySalary = MonthlySalary.GetEffective(emp.员工编号, DateTime.Today); if (effectiveMonthlySalary != null) { if (effectiveMonthlySalary.薪酬体系 == salary_plan && effectiveMonthlySalary.职等 == lastSalaryGrade) { copyEffective = true; } //如果是管培生或副总以上人员,都带出来 if (jobgrade == null) { copyEffective = true; } } //创建员工月薪记录 MonthlySalaryInput item = MonthlySalaryInput.AddMonthlySalaryInput(emp.员工编号, period, isCheck, copyEffective); item.序号 = advBandedGridView1.RowCount; item.薪酬体系 = salary_plan; item.职等 = emp.职等; item.群组 = group; //2018-4-23 调整类型和备注不要带过来 item.调整类型 = ""; item.备注 = ""; item.Save(); monthly_salary_list.Add(item); UpdateRowNumber(); gridControl1.RefreshDataSource(); advBandedGridView1.FocusedRowHandle = advBandedGridView1.RowCount - 1; } }
public ActionResult SalaryTable(SalaryResult sr) { Calculate calculation = new Calculate(); double IYPO = _context.SalaryCalculationConstants.Where(x => x.SCCCode == "IYPO").Select(x => x.SCCRatio).FirstOrDefault(); double IKVSPO = _context.SalaryCalculationConstants.Where(x => x.SCCCode == "IKVSPO").Select(x => x.SCCRatio).FirstOrDefault(); double IGSSPO = _context.SalaryCalculationConstants.Where(x => x.SCCCode == "IGSSPO").Select(x => x.SCCRatio).FirstOrDefault(); double IISO = _context.SalaryCalculationConstants.Where(x => x.SCCCode == "IISO").Select(x => x.SCCRatio).FirstOrDefault(); double IDVO = _context.SalaryCalculationConstants.Where(x => x.SCCCode == "IDVO").Select(x => x.SCCRatio).FirstOrDefault(); string disability = ""; string married = ""; string spouseWork = ""; string retired = ""; int numberOfChildren = 0; List <SalaryResult> resultList = new List <SalaryResult>(); double insurance = calculation.EmployeeInsurance(sr.rawSalary, IYPO, IKVSPO, IGSSPO, IISO); double stampTax = calculation.StampTax(sr.rawSalary, IDVO); double minLivingAllow = calculation.MinLivingAllowance(married, spouseWork, numberOfChildren); if (sr.hiddenBag == "Brüt") { for (int numberOfMonths = 1; numberOfMonths <= 12; numberOfMonths++) { double cita = calculation.CITA(sr.rawSalary, insurance, numberOfMonths); double mita = calculation.MITA(cita, numberOfMonths); double resultSalary = calculation.GrossToNet(sr.rawSalary, IYPO, IKVSPO, IGSSPO, IISO, numberOfMonths, IDVO, disability, married, spouseWork, retired, numberOfChildren); resultList.Add(new SalaryResult() { rawSalary = sr.rawSalary, insurance = insurance, mita = mita, stampTax = stampTax, cita = cita, resultSalary = resultSalary, minLivingAllow = minLivingAllow }); } } else { for (int numberOfMonths = 1; numberOfMonths <= 12; numberOfMonths++) { double cita = calculation.CITA(sr.rawSalary, insurance, numberOfMonths); double mita = calculation.MITA(cita, numberOfMonths); double resultSalary = calculation.NetToGross(sr.rawSalary, IYPO, IKVSPO, IGSSPO, IISO, numberOfMonths, IDVO, disability, married, spouseWork, retired, numberOfChildren); resultList.Add(new SalaryResult() { resultSalary = resultSalary, insurance = insurance, mita = mita, stampTax = stampTax, cita = cita, rawSalary = sr.rawSalary, minLivingAllow = minLivingAllow }); } } ViewBag.resultList = resultList; ViewBag.hiddenBag = sr.hiddenBag; return(View()); }
private void FillTable() { if (mySalary == null) { return; } DateTime 期间开始 = new DateTime(mySalary.年度, mySalary.月份, 1); DateTime 期间结束 = 期间开始.AddMonths(1).AddDays(-1); EmployeeSalaryStructure 薪酬结构 = mySalary.薪酬结构; SalaryResult 表工资 = mySalary.基础工资表; PrivateSalary 封闭工资 = mySalary; WageLoan 工资借款 = WageLoan.GetEffective(mySalary.员工编号, 期间开始); ContractAllowance 契约津贴 = ContractAllowance.GetEffective(mySalary.员工编号, 期间开始); decimal 月薪剩余 = 0; #region 薪酬结构 if (薪酬结构 != null) { cells["G3"].Value = (薪酬结构.年薪_合计 / 10000).ToString("#0.####"); cells["G4"].Value = (薪酬结构.年薪_奖励 / 10000).ToString("#0.####"); cells["G5"].Value = (薪酬结构.年薪_12个月 / 10000).ToString("#0.####"); } else { cells["G3"].Value = (封闭工资.职级工资 * 12 / 10000).ToString("#0.####"); cells["G5"].Value = 封闭工资.职级工资.ToString("#0.##"); } cells["G6"].Value = 封闭工资.职级工资.ToString("#0.##"); 月薪剩余 = 封闭工资.职级工资; if (工资借款 != null) { List <MonthlyWageLoanItem> items = MonthlyWageLoanItem.GetMonthlyWageLoanItems(mySalary.员工编号); items = items.FindAll(a => a.期间开始 >= 工资借款.开始时间 && a.期间开始 <= 期间结束); cells["G7"].Value = 工资借款.月借款额度.ToString("#0.##"); cells["G8"].Value = items.Sum(a => a.月借款标准).ToString("#0.##"); 月薪剩余 -= 工资借款.月借款额度; } if (契约津贴 != null) { List <MonthlyContractAllowanceItem> items = MonthlyContractAllowanceItem.GetMonthlyContractAllowanceItems(mySalary.员工编号); items = items.FindAll(a => a.期间开始 >= 契约津贴.开始时间 && a.期间开始 <= 期间结束); cells["G7"].Value = 契约津贴.月津贴额度.ToString("#0.##"); cells["G8"].Value = items.Sum(a => a.月津贴标准).ToString("#0.##"); 月薪剩余 -= 契约津贴.月津贴额度; } 月薪剩余 -= 封闭工资.本月执行绩效工资额; cells["G16"].Value = 封闭工资.本月执行绩效工资额.ToString("#0.##"); cells["G17"].Value = 月薪剩余.ToString("#0.##"); #endregion //工资发放 #region 工资发放 cells["G18"].Value = 表工资.企业排班天数.ToString("#0.##"); cells["G19"].Value = 表工资.实际出勤天数.ToString("#0.##"); cells["G20"].Value = 封闭工资.总出勤工资.ToString("#0.##"); cells["G21"].Value = 表工资.未休年休假工资.ToString("#0.##"); cells["G22"].Value = 表工资.实得满勤奖.ToString("#0.##"); cells["G23"].Value = 封闭工资.总补助工资.ToString("#0.##"); decimal 加班工资 = 表工资.法定节假日出勤工资 + 表工资.休息日出勤工资 + 表工资.月综合出勤工资 + 表工资.工作日延长工作出勤工资; cells["G24"].Value = 加班工资.ToString("#0.##"); cells["G25"].Value = 表工资.综合考核工资.ToString("#0.##"); cells["G28"].Value = 封闭工资.奖项_不含满勤奖.ToString("#0.##"); cells["G29"].Value = 封闭工资.扣项.ToString("#0.##"); cells["G30"].Value = 封闭工资.工资发放总额.ToString("#0.##"); //社保缴纳 cells["G33"].Value = 表工资.住房公积金个人缴纳金额.ToString("#0.##"); cells["G34"].Value = 表工资.养老保险个人缴纳金额.ToString("#0.##"); cells["G35"].Value = 表工资.大病医疗个人缴纳金额.ToString("#0.##"); cells["G36"].Value = 表工资.医疗保险个人缴纳金额.ToString("#0.##"); cells["G37"].Value = 表工资.失业保险个人缴纳金额.ToString("#0.##"); cells["G38"].Value = 0; //生育 cells["G39"].Value = 0; //工伤 cells["G40"].Value = 表工资.社保个人缴纳金额.ToString("#0.##"); //预留工资作奖金 //税后工资 cells["G43"].Value = 封闭工资.总应税工资.ToString("#0.##"); cells["G44"].Value = 封闭工资.个人所得税.ToString("#0.##"); cells["G45"].Value = 封闭工资.总代垫费用.ToString("#0.##"); cells["G46"].Value = 封闭工资.实发工资.ToString("#0.##"); //年薪资奖励 //预留工资作奖金 //税后奖金 #endregion }
private void btn保存提交_Click(object sender, EventArgs e) { bool isSameEditor = false; if (grade_list.Count > 0 && grade_list[0].职级工资表 != null) { if (grade_list[0].职级工资表.Count > 0) { RankSalaryStandardInput rss_1 = grade_list[0].职级工资表[0]; string editor = rss_1.录入人; string editor_opposite = rss_1.另一人录入的记录 != null?rss_1.另一人录入的记录.录入人.Trim() : ""; if (AccessController.CurrentUser.姓名 == editor_opposite && editor_opposite != "") { isSameEditor = true; } } } if (isSameEditor) { MessageBox.Show("两次录入不能是同一个人"); return; } date开始执行日期.ForeColor = Color.Black; date开始执行日期.BackColor = Color.Transparent; DateTime lastSalaryDate = SalaryResult.GetLastSalaryDate(); if (date开始执行日期.DateTime < lastSalaryDate) { MessageBox.Show("提交失败:开始执行日期不正确,不能小于 " + lastSalaryDate.ToString("yyyy年M月d日")); return; } CreateWaitDialog("正在准备保存...", "请稍等"); try { //保存执行日期 foreach (AdjustJobGrade grade in grade_list) { if (grade.职级工资表 == null) { continue; } foreach (RankSalaryStandardInput rss in grade.职级工资表) { rss.开始执行日期 = date开始执行日期.DateTime; rss.录入人 = AccessController.CurrentUser.姓名; rss.录入时间 = DateTime.Now; rss.Save(); } } //检查是否所有职等都录入完成 foreach (AdjustJobGrade grade in grade_list) { if (grade.is_separator) { continue; } if (grade.职级工资表 == null || grade.职级工资表.Count == 0) { MessageBox.Show("提交失败:职级工资未录入完成"); return; } foreach (RankSalaryStandardInput rss in grade.职级工资表) { if (rss.月薪 == 0) { MessageBox.Show("提交失败:月薪不能为 0"); return; } } } //如果另一个人没有录入,返回 RankSalaryStandardInput rss_1 = grade_list[0].职级工资表[0]; if (rss_1.另一人录入的记录 == null) { CloseWaitDialog(); MessageBox.Show("提交失败:另一个人还没有录入"); return; } SetWaitDialogCaption("正在比较双人录入是否一致..."); LoadData(true); //检查差异 bool all_same = true; bool startdate_err = false; foreach (AdjustJobGrade grade in grade_list) { if (grade.is_separator) { continue; //忽略分割行 } //手动比较录入的内容 grade.CompareInputContent(); if (grade.内容不同的字段.Count > 0) { foreach (ModifyField field in grade.内容不同的字段) { if (field.称.StartsWith("R")) { continue; } if (field.称 == "开始执行日期") { startdate_err = true; } all_same = false; } break; } } if (all_same) { date开始执行日期.ForeColor = Color.Black; date开始执行日期.BackColor = Color.Transparent; //转成正式 foreach (AdjustJobGrade grade in grade_list) { if (grade.is_separator) { continue; //忽略分割行 } if (grade.职级工资表 == null) { continue; } foreach (RankSalaryStandardInput rss in grade.职级工资表) { rss.UpdateToFormalTable(); } grade.调整记录.UpdateToFormalRecord(); } CloseWaitDialog(); MessageBox.Show("双人录入成功"); } else { //显示差异 gridControl1.RefreshDataSource(); gridControl1.Refresh(); //设置开始执行日期颜色 if (startdate_err) { date开始执行日期.ForeColor = Color.Yellow; date开始执行日期.BackColor = Color.Red; } //转成正式 MessageBox.Show("红色项目不一致,请重新核对修改"); } gridControl1.Focus(); this.Refresh(); } catch (Exception err) { MessageBox.Show(err.Message); } finally { CloseWaitDialog(); } }