public void Calculate() { decimal 标准职务工资, 个人职务工资; 是标准职务工资 = true; 满勤奖_显示 = "—"; 年休假_显示 = "—"; 津贴补助_显示 = "—"; //获取薪酬信息 GetPayInfo(); //获取上表工资标准 SalaryBaseInfo sbi = PsHelper.GetSalaryGrade(员工编号, 期间_开始); if (sbi != null) { 表工资标准 = sbi.表工资标准; 年休假工资 = sbi.年休假工资; 满勤奖金额 = sbi.满勤奖金额; 满勤奖_显示 = 满勤奖金额 > 0 ? 满勤奖金额.ToString("#0.##") : "—"; 年休假_显示 = 年休假工资 > 0 ? 年休假工资.ToString("#0.##") : "—";; } #region 计算职务工资 StepPayRate stepPayRate = null; List <StepPayRate> rates = 标准职务工资表.FindAll(a => a.薪级标识 == 薪级_月初).OrderByDescending(a => a.执行日期).ToList(); if (rates.Count > 0) { stepPayRate = rates[0]; 开始执行日期 = 开始执行日期_月初; } //月底职级 List <StepPayRate> rates_月底 = 标准职务工资表.FindAll(a => a.薪级标识 == 薪级_月底).OrderByDescending(a => a.执行日期).ToList(); if (rates.Count > 0) { StepPayRate stepPayRate_月底 = rates[0]; //如果月底职级改变,去工资低的 if (stepPayRate_月底.标识 != stepPayRate.标识) { stepPayRate = stepPayRate.工资额 < stepPayRate_月底.工资额 ? stepPayRate : stepPayRate_月底; 开始执行日期 = 开始执行日期_月底; } } PersonPayRate personPayRate = null; List <PersonPayRate> pRates = 个人职务工资表.FindAll(a => a.生效日期 == 期间_开始 && a.员工编号 == this.员工编号).OrderByDescending(a => a.生效日期).ToList(); if (isRealtime) { pRates = 个人职务工资表.FindAll(a => a.效 && a.员工编号 == this.员工编号).OrderByDescending(a => a.生效日期).ToList(); } if (pRates.Count > 0) { personPayRate = pRates[0]; 开始执行日期 = personPayRate.生效日期; //津贴补助 津贴补助 = personPayRate.津贴1金额 + personPayRate.津贴2金额; 津贴补助_显示 = 津贴补助 > 0 ? 津贴补助.ToString("#0.##") : "—"; } 标准职务工资 = stepPayRate == null ? 0 : stepPayRate.工资额; 个人职务工资 = personPayRate == null ? 0 : personPayRate.月薪; 职务工资 = 个人职务工资 == 0 ? 标准职务工资 : 个人职务工资; 是标准职务工资 = 个人职务工资 == 0; //2017-7-23 加上年休假工资 职级工资 = 职务工资 + 年休假工资; //重新计算有效的薪等薪级 工资职级 = " - "; if (stepPayRate != null && 是标准职务工资) { 封闭薪等 = stepPayRate.薪等标识; 封闭薪级 = stepPayRate.薪级标识; SalaryNode grade = SalaryNode.工资等级表.Find(a => a.标识 == 封闭薪等); if (grade != null) { 薪等 = grade.称; } grade = SalaryNode.工资等级表.Find(a => a.标识 == 封闭薪级); if (grade != null) { 薪级 = grade.称; } 工资职级 = 薪等 + 薪级; } #endregion SalaryResult sr = SalaryResult.GetFromCache(员工编号, 年, 月); 公司编码 = sr == null ? employeeInfo.公司 : sr.公司编号; 职务等级 = sr == null ? employeeInfo.职务等级 : sr.职务等级; 职级 = PsHelper.GetSupvsrLvDescr(职务等级); }