public static string GetName(string setid, string salPlan, string gradeCode) { SalaryGrade grade = 薪等表.Find(a => a.集合 == setid && a.薪酬体系 == salPlan && a.薪等编号 == gradeCode); if (grade == null) { return(""); } else { return(grade.薪等名称); } }
public static SalaryGrade AddSalaryGrade(string setid, string salPlan, string grade, DateTime effDate) { SalaryGrade plan = GetSalaryGrade(setid, salPlan, grade, effDate); if (plan == null) { plan = new SalaryGrade(); plan.标识 = Guid.NewGuid(); plan.集合 = setid; plan.薪酬体系 = salPlan; plan.薪等编号 = grade; plan.生效日期 = effDate; plan.创建时间 = DateTime.Now; plan.Save(); } return(plan); }
protected override void OnLoaded() { bool changed = false; if (string.IsNullOrEmpty(this.公司名称)) { CompanyInfo company = CompanyInfo.Get(this.公司编号); if (company != null) { this.公司名称 = company.公司名称; changed = true; } } if (string.IsNullOrEmpty(this.薪等名称)) { SalaryGrade grade = SalaryGrade.Get(this.薪资集合, this.薪酬体系编号, this.薪等编号, new DateTime(this.年度, this.月份, 1)); if (grade != null) { this.薪等名称 = grade.薪等名称; changed = true; } } if (string.IsNullOrEmpty(this.薪资组名称)) { PayGroup group = PayGroup.Get(this.薪资组); if (group != null) { this.薪资组名称 = group.中文名; changed = true; } } //2018-2-11 if (string.IsNullOrEmpty(this.工资职等)) { this.工资职等 = GetGrade(this); changed = true; } if (changed) { this.Save(); } base.OnLoaded(); SALARY_RESULT_CACHE.Set(CacheKey, this, TimeSpan.FromHours(8)); }
//检查当前薪等在指定的日期是否有效 public bool CheckEffected(DateTime date) { if (this.状态 != "A") { return(false); } //如果薪酬体系无效 if (SalaryPlan.薪酬体系表.Find(a => a.集合 == this.集合 && a.英文名 == this.薪酬体系) == null) { return(false); } //获取有效的薪等 SalaryGrade latestEffect = SalaryGrade.GetEffectiveSalaryGrade(this.集合, this.薪酬体系, this.薪等编号, date); if (latestEffect == null) { return(false); } return(latestEffect.标识 == this.标识); }
public static List <SalaryGrade> GetGrades(string salary_plan) { List <SalaryGrade> list = new List <SalaryGrade>(); GroupOperator criteria = new GroupOperator(GroupOperatorType.And, new BinaryOperator("集合", "SHARE", BinaryOperatorType.Equal), new BinaryOperator("薪酬体系", salary_plan, BinaryOperatorType.Equal), new BinaryOperator("状态", "A", BinaryOperatorType.Equal) ); XPCollection objset = new XPCollection(MyHelper.XpoSession, typeof(SalaryGrade), criteria, new SortProperty("薪酬体系", SortingDirection.Ascending), new SortProperty("医疗保险缴纳基数", SortingDirection.Descending), new SortProperty("薪等编号", SortingDirection.Ascending), new SortProperty("生效日期", SortingDirection.Descending)); foreach (SalaryGrade grade in objset) { SalaryGrade found = list.Find(a => a.薪等名称 == grade.薪等名称); if (found == null) { list.Add(grade); } } return(list); }
public static void SychSalaryGrade() { foreach (SalGrade sg in SalGrade.薪酬等级表) { SalaryGrade salPlan = AddSalaryGrade(sg.集合, sg.薪酬体系, sg.薪等编号, sg.生效日期); salPlan.薪等名称 = sg.薪等名称; salPlan.状态 = sg.状态; salPlan.基准工资标准 = sg.基准工资标准; salPlan.表工资标准 = sg.表工资标准; salPlan.设定工资标准 = sg.设定工资标准; salPlan.年休假工资 = sg.年休假工资; salPlan.养老保险缴纳基数 = sg.养老保险缴纳基数; salPlan.医疗保险缴纳基数 = sg.医疗保险缴纳基数; salPlan.生育保险缴纳基数 = sg.生育保险缴纳基数; salPlan.失业保险缴纳基数 = sg.失业保险缴纳基数; salPlan.工伤保险缴纳基数 = sg.工伤保险缴纳基数; salPlan.公积金基数 = sg.公积金基数; salPlan.次同步时间 = DateTime.Now; salPlan.Save(); } //冲突处理:有VS无 / 有VS变 / 无VS有 foreach (SalaryGrade grade in GetAll()) { SalGrade found = SalGrade.薪酬等级表.Find(a => a.集合 == grade.集合 && a.薪酬体系 == grade.薪酬体系 && a.薪等编号 == grade.薪等编号 && a.生效日期 == grade.生效日期); if (found == null) { grade.Delete(); } } }
public static SalaryStep AddSalaryStep(string setid, string salPlan, string grade, int step, DateTime effDate) { SalaryGrade salGrade = SalaryGrade.GetSalaryGrade(setid, salPlan, grade, effDate); if (salGrade != null) { SalaryStep plan = GetSalaryStep(salGrade.标识, step, effDate); if (plan == null) { plan = new SalaryStep(); plan.标识 = Guid.NewGuid(); plan.薪等标识 = salGrade.标识; plan.薪级编号 = step; plan.生效日期 = effDate; plan.创建时间 = DateTime.Now; plan.Save(); } return(plan); } else { return(null); } }
/// <summary> /// 上月执行的标准 /// </summary> /// <param name="setid"></param> /// <param name="salPlan"></param> /// <param name="grade"></param> /// <returns></returns> public static SalaryGrade GetLastMonthEffectiveSalaryGrade(SalaryGrade grade) { DateTime date = new DateTime(DateTime.Today.AddMonths(-1).Year, DateTime.Today.AddMonths(-1).Month, 1); return(GetEffectiveSalaryGrade(grade.集合, grade.薪酬体系, grade.薪等编号, date)); }
/// <summary> /// 通过 Id 获取 /// </summary> /// <param name="id"></param> /// <returns></returns> public static SalaryGrade GetSalaryGrade(Guid id) { SalaryGrade obj = (SalaryGrade)MyHelper.XpoSession.GetObjectByKey(typeof(SalaryGrade), id); return(obj); }
//获取所有有效的薪级 public static List <SalaryStep> GetEffectedSteps(DateTime date) { List <SalaryGrade> effectedGrade = SalaryGrade.GetEffectedGrades(date); return(GetEffectedSteps(date, effectedGrade)); }
private static bool SychSalaryResult(SalResult sr) { try { SalaryResult item = AddSalaryResult(sr.员工编号, sr.年度, sr.月份); #region 日历信息 item.日历组 = sr.日历组; item.期间 = sr.期间; #endregion item.姓名 = sr.姓名; item.员工类型 = sr.员工类型; item.身份证号 = sr.身份证号; #region 所属机构 item.公司编号 = sr.公司编号; item.机构编号 = sr.机构编号; item.部门编号 = sr.部门编号; item.公司名称 = sr.公司名称; item.部门名称 = sr.部门名称; #endregion #region 财务信息 item.银行账号 = sr.银行账号; item.帐户名称 = sr.帐户名称; GetSeq(sr, item); #endregion #region 薪酬体系 item.薪资组 = sr.薪资组.Trim(); item.薪资集合 = sr.薪资集合; item.薪酬体系编号 = sr.薪酬体系编号; item.薪等编号 = sr.薪等编号; item.薪级编号 = sr.薪级编号; SalaryGrade grade = SalaryGrade.Get(item.薪资集合, item.薪酬体系编号, item.薪等编号, new DateTime(item.年度, item.月份, 1)); if (grade != null) { item.薪等名称 = grade.薪等名称; } PayGroup group = PayGroup.Get(item.薪资组); if (group != null) { item.薪资组名称 = group.中文名; } #endregion #region 职务数据 item.职务代码 = sr.职务代码; item.职务等级 = sr.职务等级; item.职位编号 = sr.职位编号; item.班别 = sr.班别; #endregion #region 出勤情况 item.企业排班天数 = sr.企业排班天数; item.法定工作日天数 = sr.法定工作日天数; item.实际出勤天数 = sr.实际出勤天数; item.法定工作日出勤天数 = sr.法定工作日出勤天数; item.法定节假日出勤天数 = sr.法定节假日出勤天数; item.休息日出勤天数 = sr.休息日出勤天数; item.月综合出勤天数 = sr.月综合出勤天数; item.工作日延长出勤小时数 = sr.工作日延长出勤小时数; #endregion #region 出勤工资 item.法定工作日出勤工资 = sr.法定工作日出勤工资; item.法定节假日出勤工资 = sr.法定节假日出勤工资; item.休息日出勤工资 = sr.休息日出勤工资; item.月综合出勤工资 = sr.月综合出勤工资; item.工作日延长工作出勤工资 = sr.工作日延长工作出勤工资; #endregion item.未休年休假工资 = sr.未休年休假工资; item.特殊社保的基准工资 = sr.特殊社保的基准工资; item.基数等级与基准工资差额 = sr.基数等级与基准工资差额; item.交通餐饮补助 = sr.交通餐饮补助; #region 社保缴纳 item.养老保险个人缴纳金额 = sr.养老保险个人缴纳金额; item.医疗保险个人缴纳金额 = sr.医疗保险个人缴纳金额; item.失业保险个人缴纳金额 = sr.失业保险个人缴纳金额; item.住房公积金个人缴纳金额 = sr.住房公积金个人缴纳金额; item.大病医疗个人缴纳金额 = sr.大病医疗个人缴纳金额; //社保合计 item.社保个人缴纳金额 = sr.社保个人缴纳金额; item.社保公司缴纳金额 = sr.社保公司缴纳金额; #endregion #region 累加器 item.出勤工资 = sr.出勤工资; item.津贴补助 = sr.津贴补助; item.综合考核工资 = sr.综合考核工资; item.奖项 = sr.奖项; item.扣项 = sr.扣项; #endregion #region 工资类别小计 item.挂钩效益工资 = sr.挂钩效益工资; item.其他所得 = sr.其他所得; item.其他扣款 = sr.其他扣款; item.预留风险金 = sr.预留风险金; item.实得满勤奖 = sr.实得满勤奖; item.应得满勤奖 = sr.应得满勤奖; item.表工资 = sr.表工资; item.设定工资 = sr.设定工资; item.基准工资 = sr.基准工资; item.工资降级 = sr.工资降级; item.代垫费用 = sr.代垫费用; item.个人所得税金额 = sr.个人所得税金额; item.表工资总额 = sr.表工资总额; item.应税工资额 = sr.应税工资额; item.合计应税工资额 = sr.合计应税工资额; item.实发工资总额 = sr.实发工资总额; #endregion item.工资职等 = GetGrade(item); item.次同步时间 = DateTime.Now; item.Save(); return(true); } catch (Exception e) { YiKang.Common.WriteToEventLog("同步工资失败:" + e.ToString()); return(false); } }