public static StringBuilder SychSalaryResultItem(string calRunId, string payGroup)
        {
            StringBuilder sb = new StringBuilder();

            CalRunInfo calRun = CalRunInfo.Get(calRunId);

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

            if (DeleteAll(calRunId, payGroup))
            {
                List <SalResultItem> list = SalResultItem.GetList(calRunId, payGroup);
                foreach (SalResultItem sri in list)
                {
                    try
                    {
                        SalaryResultItem item = new SalaryResultItem();

                        item.年度    = calRun.年度;
                        item.月份    = calRun.月份;
                        item.日历组   = sri.日历组;
                        item.日历    = sri.日历;
                        item.薪资组   = sri.薪资组;
                        item.员工编号  = sri.员工编号;
                        item.元素编号  = sri.元素编号;
                        item.英文名称  = sri.英文名称;
                        item.中文名称  = sri.中文名称;
                        item.金额    = sri.金额;
                        item.类别    = item.GetCategory();
                        item.次同步时间 = DateTime.Now;

                        item.Save();
                    }
                    catch
                    {
                        sb.Append("同步工资明细失败:" + sri);
                    }
                }
            }
            else
            {
                sb.Append("删除上次同步的数据失败");
            }
            return(sb);
        }
Esempio n. 2
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);
        }
        /// <summary>
        /// 通过 Id 获取
        /// </summary>
        /// <param name="id"></param>
        /// <returns></returns>
        public static SalaryResultItem GetSalaryResultItem(Guid id)
        {
            SalaryResultItem obj = (SalaryResultItem)MyHelper.XpoSession.GetObjectByKey(typeof(SalaryResultItem), id);

            return(obj);
        }