コード例 #1
0
        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.薪等名称);
            }
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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));
        }
コード例 #4
0
        //检查当前薪等在指定的日期是否有效
        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.标识);
        }
コード例 #5
0
        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);
        }
コード例 #6
0
        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();
                }
            }
        }
コード例 #7
0
        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);
            }
        }
コード例 #8
0
        /// <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));
        }
コード例 #9
0
        /// <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);
        }
コード例 #10
0
        //获取所有有效的薪级
        public static List <SalaryStep> GetEffectedSteps(DateTime date)
        {
            List <SalaryGrade> effectedGrade = SalaryGrade.GetEffectedGrades(date);

            return(GetEffectedSteps(date, effectedGrade));
        }
コード例 #11
0
        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);
            }
        }