Ejemplo n.º 1
0
        private static void GetSeq(SalResult sr, SalaryResult item)
        {
            OleDbConnection conn = null;

            try
            {
                conn = new OleDbConnection(MyHelper.GetPsConnectionString());
                conn.Open();
                using (OleDbCommand cmd = conn.CreateCommand())
                {
                    cmd.CommandText = String.Format("SELECT B.SEQ_NBR AS DEPT_SEQ, A.COMPANY, A.C_GP_DEPT, A.SEQ_NBR AS EMP_SEQ FROM SYSADM.PS_C_GP_DEPT_EMP_C A left join SYSADM.PS_C_GP_DEPT B on A.Company = B.Company AND A.c_gp_dept = B.c_gp_dept where EMPLID='{0}'  and a.effdt < date'{1}' and rownum=1 order by a.effdt desc", sr.员工编号, (new DateTime(sr.年度, sr.月份, 1)).AddMonths(1).ToString("yyyy-M-d"));
                    OleDbDataReader rs = cmd.ExecuteReader();
                    if (rs.Read())
                    {
                        CompanyInfo company = CompanyInfo.Get((string)rs["COMPANY"]);
                        if (company != null)
                        {
                            item.财务公司 = company.公司名称;
                        }
                        item.财务部门   = (string)rs["C_GP_DEPT"];
                        item.财务部门序号 = Convert.ToInt32(rs["DEPT_SEQ"]);
                        item.员工序号   = Convert.ToInt32(rs["EMP_SEQ"]);
                    }
                    rs.Close();
                }
            }
            finally
            {
                if (conn != null)
                {
                    conn.Close();
                }
            }
        }
Ejemplo n.º 2
0
        public static StringBuilder SychSalaryResult(string calRunId, string payGroup)
        {
            StringBuilder sb = new StringBuilder();

            CalRunInfo calRun = CalRunInfo.Get(calRunId);

            if (calRun == null)
            {
                sb.Append(String.Format("指定的日历组({0})不存在,无法同步。", calRunId));
                return(sb);
            }

            if (CheckCalRunFinalized(calRunId) == false)
            {
                sb.Append(String.Format("日历组({0})的上表工资计算未完成,不能同步。", calRunId));
                return(sb);
            }

            List <SalResult> list = SalResult.GetList(calRunId, payGroup);

            //删除历史数据
            SalaryAuditingResult.ClearAuditingResult(calRunId, payGroup);

            #region 保存PS系统的上表工资数据

            foreach (SalResult sr in list)
            {
                if (!SychSalaryResult(sr))
                {
                    //删除历史数据
                    SalaryAuditingResult.ClearAuditingResult(calRunId, payGroup);
                    sb.Append("同步工资结果失败:" + sr.ToString <SalResult>());
                    break;
                }
            }
            #endregion

            return(sb);
        }
Ejemplo n.º 3
0
        //根据日历组获取所有工资项
        public static List <SalResult> GetList(string calRunId, string payGroup)
        {
            List <SalResult> list = new List <SalResult>();

            CalRunInfo calRun = CalRunInfo.Get(calRunId);

            if (calRun == null)
            {
                return(list);
            }

            OleDbConnection conn = new OleDbConnection(MyHelper.GetPsConnectionString());

            using (conn)
            {
                OleDbDataReader rs = null;
                try
                {
                    conn.Open();
                    using (OleDbCommand cmd = conn.CreateCommand())
                    {
                        string payGroupCondition = "";
                        if (string.IsNullOrEmpty(payGroup) == false)
                        {
                            payGroupCondition = String.Format(" AND GP_PAYGROUP = '{0}'", payGroup);
                        }
                        cmd.CommandText = String.Format("SELECT B.NAME,A.* FROM SYSADM.PS_C_WA_PAY_RSLT A LEFT JOIN PS_PERSONAL_DATA B ON A.EMPLID=B.EMPLID WHERE CAL_RUN_ID='{0}' {1} ORDER BY A.EMPLID", calRunId, payGroupCondition);
                        rs = cmd.ExecuteReader();
                        while (rs.Read())
                        {
                            SalResult item = new SalResult();

                            #region 日历信息

                            item.日历组 = calRunId;
                            item.期间  = calRun.期间;
                            item.年度  = calRun.年度;
                            item.月份  = calRun.月份;

                            #endregion

                            #region 员工信息

                            item.姓名   = MyHelper.RemoveNumber((string)rs["NAME"]);
                            item.员工编号 = (string)rs["EMPLID"];
                            item.员工类型 = (string)rs["C_CHR027"];

                            EmpInfo empInfo = EmpInfo.员工表.Find(a => a.员工编号 == item.员工编号);
                            if (empInfo != null)
                            {
                                item.身份证号 = empInfo.身份证号;

                                item.财务公司   = empInfo.财务公司;
                                item.财务部门   = empInfo.财务部门;
                                item.财务部门序号 = empInfo.财务部门序号;
                                item.员工序号   = empInfo.员工序号;

                                item.银行账号 = empInfo.银行账号;
                                item.帐户名称 = empInfo.帐户名称;
                            }

                            #endregion

                            #region 所属机构

                            item.公司编号 = (string)rs["COMPANY"];
                            item.机构编号 = (string)rs["DEPTID"];

                            CompanyInfo company = CompanyInfo.Get(item.公司编号);
                            if (company != null)
                            {
                                item.公司名称 = company.公司名称;
                            }

                            DeptInfo dept = DeptInfo.Get(item.机构编号);
                            if (dept != null && dept.所在部门 != null)
                            {
                                item.部门编号 = dept.所在部门.部门编号;
                                item.部门名称 = dept.所在部门.部门名称;
                            }

                            #endregion

                            #region 薪酬体系

                            item.薪资组    = (string)rs["GP_PAYGROUP"];
                            item.薪资集合   = (string)rs["SETID_SALARY"];
                            item.薪酬体系编号 = (string)rs["SAL_ADMIN_PLAN"];
                            item.薪等编号   = (string)rs["GRADE"];
                            item.薪级编号   = Convert.ToString(rs["STEP"]);

                            #endregion

                            #region 职务数据

                            item.职务代码 = (string)rs["JOBCODE"];
                            //2018-9-10 职务等级以15号为界
                            //item.职务等级 = (string)rs["SUPV_LVL_ID"];
                            item.职务等级 = GetSupvLvlId(item.员工编号, item.年度, item.月份);

                            item.职位编号 = (string)rs["POSITION_NBR"];
                            item.班别   = (string)rs["SHIFT"];

                            #endregion

                            #region 出勤情况

                            item.企业排班天数     = Convert.ToDecimal(rs["C_AMT202"]);
                            item.法定工作日天数    = Convert.ToDecimal(rs["C_AMT243"]);
                            item.实际出勤天数     = Convert.ToDecimal(rs["C_AMT198"]);
                            item.法定工作日出勤天数  = Convert.ToDecimal(rs["C_AMT199"]);
                            item.法定节假日出勤天数  = Convert.ToDecimal(rs["C_AMT201"]);
                            item.休息日出勤天数    = Convert.ToDecimal(rs["C_AMT203"]);
                            item.月综合出勤天数    = Convert.ToDecimal(rs["C_AMT204"]);
                            item.工作日延长出勤小时数 = Convert.ToDecimal(rs["C_AMT205"]);

                            #endregion

                            #region 出勤工资

                            item.法定工作日出勤工资   = Convert.ToDecimal(rs["C_AMT005"]);
                            item.法定节假日出勤工资   = Convert.ToDecimal(rs["C_AMT006"]);
                            item.休息日出勤工资     = Convert.ToDecimal(rs["C_AMT007"]);
                            item.月综合出勤工资     = Convert.ToDecimal(rs["C_AMT009"]);
                            item.工作日延长工作出勤工资 = Convert.ToDecimal(rs["C_AMT010"]);

                            #endregion

                            item.未休年休假工资 = Convert.ToDecimal(rs["C_AMT134"]);

                            #region 社保缴纳

                            item.养老保险个人缴纳金额  = Convert.ToDecimal(rs["C_AMT170"]);
                            item.医疗保险个人缴纳金额  = Convert.ToDecimal(rs["C_AMT171"]);
                            item.失业保险个人缴纳金额  = Convert.ToDecimal(rs["C_AMT172"]);
                            item.住房公积金个人缴纳金额 = Convert.ToDecimal(rs["C_AMT173"]);
                            item.大病医疗个人缴纳金额  = Convert.ToDecimal(rs["C_AMT292"]);
                            //社保合计
                            item.社保个人缴纳金额 = Convert.ToDecimal(rs["C_AMT258"]);
                            item.社保公司缴纳金额 = Convert.ToDecimal(rs["C_AMT259"]);
                            //补缴 2015.9.14
                            item.养老保险个人补缴金额  = Convert.ToDecimal(rs["C_AMT174"]);
                            item.医疗保险个人补缴金额  = Convert.ToDecimal(rs["C_AMT175"]);
                            item.失业保险个人补缴金额  = Convert.ToDecimal(rs["C_AMT176"]);
                            item.住房公积金个人补缴金额 = Convert.ToDecimal(rs["C_AMT177"]);

                            #endregion

                            item.个人所得税金额 = Convert.ToDecimal(rs["C_AMT178"]); //C_AMT265 总的个税(含封闭工资)
                            item.代垫费用    = Convert.ToDecimal(rs["C_AMT262"]);

                            item.挂钩效益工资      = Convert.ToDecimal(rs["C_AMT136"]);
                            item.其他所得        = Convert.ToDecimal(rs["C_AMT138"]);
                            item.其他扣款        = Convert.ToDecimal(rs["C_AMT196"]);
                            item.预留风险金       = Convert.ToDecimal(rs["C_AMT241"]);
                            item.出勤工资        = Convert.ToDecimal(rs["C_AMT252"]);
                            item.实得满勤奖       = Convert.ToDecimal(rs["C_AMT017"]);
                            item.应得满勤奖       = Convert.ToDecimal(rs["C_AMT232"]);
                            item.表工资         = Convert.ToDecimal(rs["C_AMT002"]);
                            item.设定工资        = Convert.ToDecimal(rs["C_AMT003"]);
                            item.基准工资        = Convert.ToDecimal(rs["C_AMT004"]);
                            item.特殊社保的基准工资   = Convert.ToDecimal(rs["C_AMT278"]);
                            item.基数等级与基准工资差额 = Convert.ToDecimal(rs["C_AMT011"]);
                            //item.工资降级 = Convert.ToDecimal(rs["C_AMT008"]) - item.上表工资; //2015.5.20 封闭上表工资 - 上表工资
                            //2017.7.10 直接读取工资降级数据
                            item.工资降级 = PsHelper.GetPayDegrade(item.员工编号, calRun.开始日期);
                            if (item.工资降级 < 0)
                            {
                                item.工资降级 = 0;                //2015.9.24
                            }
                            #region 累加器

                            item.出勤工资   = Convert.ToDecimal(rs["C_AMT252"]);
                            item.津贴补助   = Convert.ToDecimal(rs["C_AMT253"]);
                            item.综合考核工资 = Convert.ToDecimal(rs["C_AMT254"]);
                            item.奖项     = Convert.ToDecimal(rs["C_AMT255"]);
                            item.扣项     = Convert.ToDecimal(rs["C_AMT256"]);

                            #endregion

                            item.交通餐饮补助 = Convert.ToDecimal(rs["C_AMT248"]);

                            item.应税工资额 = Convert.ToDecimal(rs["C_AMT260"]);
                            //含年休假工资(260是不含年休假的工资总额)
                            //即:合计应税工资额 = 应税工资额 + 年休假工资
                            item.合计应税工资额 = Convert.ToDecimal(rs["C_AMT261"]);
                            item.表工资总额   = Convert.ToDecimal(rs["C_AMT257"]);
                            item.实发工资总额  = Convert.ToDecimal(rs["C_AMT263"]);
                            list.Add(item);
                        }
                    }
                }
                finally
                {
                    if (rs != null)
                    {
                        rs.Close();
                    }
                    conn.Close();
                }
            }
            return(list);
        }
Ejemplo n.º 4
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);
            }
        }