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(); } }
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(); } }
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); }
//删除指定薪资组的审核审批情况表 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); } }
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); }
/// <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); }
/// <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); }