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); }
/// <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); }