コード例 #1
0
        protected override void OnSaving()
        {
            if (string.IsNullOrEmpty(this.员工编号))
            {
                this.员工编号 = "";
                return;
            }
            if (string.IsNullOrEmpty(this.类型))
            {
                throw new Exception("类型不能为空.");
            }
            if (this.录入时间 == DateTime.MinValue)
            {
                this.录入时间 = DateTime.Now;
            }
            //判断已经审核的薪资组不能修改
            SalaryResult salResult = SalaryResult.GetFromCache(this.员工编号, this.年, this.月);

            if (salResult == null)
            {
                throw new Exception("未发现【" + this.姓名 + "】的工资记录,请先生成工资表后再录入。");
            }
            else
            {
                SalaryAuditingResult auditingResult = SalaryAuditingResult.GetSalaryAuditingResult(salResult.薪资组, this.年, this.月);
                if (auditingResult == null)
                {
                    throw new Exception("未发现【" + salResult.薪资组名称 + "】的工资审核情况表");
                }
                else
                {
                    if (auditingResult.已审核)
                    {
                        throw new Exception("薪资组【" + salResult.薪资组名称 + "】的工资已经审核,不能添加或修改。");
                    }
                }
            }

            OtherMoney found = GetOtherMoney(this.员工编号, this.年, this.月, this.类型, this.项目名称);

            if (found != null && found.标识 != this.标识)
            {
                throw new Exception("同一个奖扣项不能重复录入.");
            }
            else
            {
                base.OnSaving();
            }
        }
コード例 #2
0
        protected override void OnSaving()
        {
            if (string.IsNullOrEmpty(this.姓名))
            {
                throw new Exception("姓名不能为空.");
            }
            if (this.录入时间 == DateTime.MinValue)
            {
                this.录入时间 = DateTime.Now;
            }
            //判断已经审核的薪资组不能修改
            SalaryResult salResult = SalaryResult.GetFromCache(this.员工编号, this.年, this.月);

            if (salResult == null)
            {
                throw new Exception("未发现" + this.姓名 + "的工资记录.");
            }
            else
            {
                SalaryAuditingResult auditingResult = SalaryAuditingResult.GetSalaryAuditingResult(salResult.薪资组, this.年, this.月);
                if (auditingResult == null)
                {
                    throw new Exception("未发现" + this.姓名 + "的工资审核情况表");
                }
                else
                {
                    if (auditingResult.已审核)
                    {
                        throw new Exception(this.姓名 + "的工资已经审核,不能添加或修改。");
                    }
                }
            }

            EmpPayRate found = GetEmpPayRate(this.员工编号, this.年, this.月);

            if (found != null && found.标识 != this.标识)
            {
                throw new Exception("每个员工每月只有一个工资系数.");
            }
            else
            {
                base.OnSaving();
            }
        }
コード例 #3
0
        public static SalaryAuditingResult AddSalaryAuditingResult(string payGroup, string calRunId)
        {
            SalaryAuditingResult result = GetSalaryAuditingResult(payGroup, calRunId);

            if (result == null)
            {
                CalRunInfo cal = CalRunInfo.Get(calRunId);
                result = new SalaryAuditingResult();

                result.标识   = Guid.NewGuid();
                result.薪资组  = payGroup;
                result.日历组  = calRunId;
                result.年    = cal.年度;
                result.月    = cal.月份;
                result.创建时间 = DateTime.Now;

                result.Save();
            }

            return(result);
        }
コード例 #4
0
        //删除指定薪资组的审核审批情况表
        public static void ClearAuditingResult(string calRunId, string payGroup)
        {
            SalaryAuditingResult result = GetSalaryAuditingResult(payGroup, calRunId);

            if (result == null || result.已审核 || result.已冻结)
            {
                return;
            }

            string condition = "";

            if (string.IsNullOrEmpty(payGroup) == false)
            {
                condition = String.Format(" AND 薪资组='{0}'", payGroup);
            }
            string sql = String.Format("DELETE FROM 工资审核审批情况 WHERE 日历组 = '{0}' {1}", calRunId, condition);

            using (SqlConnection connection = new SqlConnection(MyHelper.GetConnectionString()))
            {
                YiKang.Data.SqlHelper.ExecuteNonQuery(connection, System.Data.CommandType.Text, sql);
            }
        }
コード例 #5
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);
        }
コード例 #6
0
        /// <summary>
        /// 通过 Id 获取
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public static SalaryAuditingResult GetSalaryAuditingResult(Guid id)
        {
            SalaryAuditingResult obj = (SalaryAuditingResult)MyHelper.XpoSession.GetObjectByKey(typeof(SalaryAuditingResult), id);

            return(obj);
        }
コード例 #7
0
        /// <summary>
        /// 同步上月工资明细
        /// </summary>
        /// <returns></returns>
        public static StringBuilder SychSalaryResult()
        {
            List <CalRunInfo> cals = new List <CalRunInfo>();
            StringBuilder     sb   = new StringBuilder();

            DateTime        prevMonth = DateTime.Now.AddMonths(-1);
            DateTime        prd_begin = new DateTime(prevMonth.Year, prevMonth.Month, 1);
            OleDbConnection conn      = new OleDbConnection(MyHelper.GetPsConnectionString());

            using (conn)
            {
                OleDbDataReader rs = null;
                try
                {
                    conn.Open();
                    using (OleDbCommand cmd = conn.CreateCommand())
                    {
                        string sql = String.Format("select distinct A.CAL_RUN_ID,A.DESCR, RUN_FINALIZED_IND, B.CAL_PRD_ID, C.PRD_BGN_DT, C.PRD_END_DT from SYSADM.ps_GP_CAL_RUN A left join SYSADM.ps_GP_CAL_RUN_DTL B ON A.cal_run_id = B.cal_run_id  left join SYSADM.ps_GP_CAL_PRD C ON C.cal_prd_id = B.CAL_PRD_ID where C.PRD_BGN_DT = date'{0:yyyy-M-d}'", prd_begin);
                        cmd.CommandText = sql;
                        rs = cmd.ExecuteReader();
                        while (rs.Read())
                        {
                            bool finalized = (string)rs["RUN_FINALIZED_IND"] == "Y";
                            if (finalized)
                            {
                                string cal_run_id = (string)rs["CAL_RUN_ID"];

                                CalRunInfo cal = CalRunInfo.Get(cal_run_id);
                                if (cal != null)
                                {
                                    cals.Add(cal);
                                    WageLoan.AutoGenerateMonthlyWageLoanItems(cal.年度, cal.月份);
                                }
                            }
                        }

                        rs.Close();

                        foreach (CalRunInfo cal in cals)
                        {
                            string cal_run_id = cal.日历组编号;

                            foreach (string groupId in cal.薪资组列表)
                            {
#if (DEBUG)
                                StringBuilder msgBuilder = SychSalaryResult(cal_run_id, groupId);
                                sb.Append(msgBuilder.ToString());

                                StringBuilder msgBuilderItem = SalaryResultItem.SychSalaryResultItem(cal_run_id, groupId);
                                sb.Append(msgBuilderItem.ToString());
#else
                                SalaryAuditingResult sar = SalaryAuditingResult.AddSalaryAuditingResult(groupId, cal_run_id);

                                if (sar.表工资已审核)
                                {
                                    continue;
                                }

                                if (sar.已审核 || sar.已冻结)
                                {
                                    sb.Append(String.Format("薪资组{0}, 日历组({0})的工资已审核或者已冻结,不能重新同步。", groupId, cal_run_id));
                                    return(sb);
                                }
                                else
                                {
                                    StringBuilder msgBuilder = SychSalaryResult(cal_run_id, groupId);
                                    sb.Append(msgBuilder.ToString());

                                    StringBuilder msgBuilderItem = SalaryResultItem.SychSalaryResultItem(cal_run_id, groupId);
                                    sb.Append(msgBuilderItem.ToString());
                                }
#endif
                            }
                        }
                    }
                }
                finally
                {
                    if (rs != null)
                    {
                        rs.Close();
                    }
                    conn.Close();
                }
            }
            return(sb);
        }