private PayToDo BuilderPayToDo(CfgBillWriteBackRule rule, FapDynamicObject billData, Employee empInfo, string caseUid) { //影响此薪资套 PayToDo payToDo = new PayToDo(); payToDo.EmpUid = empInfo.Fid; payToDo.EmpCode = empInfo.EmpCode; payToDo.DeptUid = empInfo.DeptUid; payToDo.DeptCode = empInfo.DeptCode; payToDo.CaseUid = caseUid; //受影响薪资套 payToDo.TableUid = rule.DocEntityUid; //单据实体 payToDo.BizDate = DateTimeUtils.CurrentDateStr; //业务日期--当前时间 payToDo.OperEmpUid = billData.Get("BillEmpUid") == null?_applicationContext.EmpUid: billData.Get("BillEmpUid").ToString(); //变动处理人--制单人 payToDo.OperFlag = "0"; //变动应用 默认为0 payToDo.TransID = billData.Get("Id").ToString(); //单据ID return(payToDo); }
public void UsePayPending(PayToDo payToDo) { //薪资套 PayCase payCase = _dbContext.Get <PayCase>(payToDo.CaseUid); //员工 Employee employee = _dbContext.Get <Employee>(payToDo.EmpUid); //检查员工是否在薪资套 var caseEmployee = _dbContext.QueryFirstOrDefault($"select * from {payCase.TableName} where EmpUid=@EmpUid", new DynamicParameters(new { EmpUid = employee.Fid })); if (caseEmployee != null) { if (employee.EmpStatus == EmployeeStatus.Former) { DeleteEmployeeFromPayCase(); } else { UpdateEmployeeToPayCase(); } } else if (employee.EmpStatus == EmployeeStatus.Current) { AddEmployeeToPayCase(); } MarkPayTodo(); void MarkPayTodo() { payToDo.OperDate = DateTimeUtils.CurrentDateTimeStr; payToDo.OperEmpUid = _applicationContext.EmpUid; payToDo.OperFlag = "1"; _dbContext.Update(payToDo); } void DeleteEmployeeFromPayCase() { string sql = $"delete from {payCase.TableName} where Fid=@Fid"; _dbContext.ExecuteOriginal(sql, new DynamicParameters(new { Fid = caseEmployee.Fid })); } void UpdateEmployeeToPayCase() { string sql = $"update {payCase.TableName} set EmpCode='{employee.EmpCode}',EmpCategory='{employee.EmpCategory}',DeptUid='{employee.DeptUid}' where Fid=@Fid"; _dbContext.ExecuteOriginal(sql, new DynamicParameters(new { Fid = caseEmployee.Fid })); } void AddEmployeeToPayCase() { FapDynamicObject caseEmp = new FapDynamicObject(_dbContext.Columns(payCase.TableName)); //将此人的放入薪资套 caseEmp.SetValue("EmpUid", employee.Fid); caseEmp.SetValue("EmpCode", employee.EmpCode); caseEmp.SetValue("DeptUid", employee.DeptUid); caseEmp.SetValue("EmpCategory", employee.EmpCategory); caseEmp.SetValue("PayCaseUid", payCase.Fid); caseEmp.SetValue("PaymentTimes", 1); caseEmp.SetValue("PayConfirm", 0); if (payCase.PayYM.IsPresent()) { caseEmp.SetValue("PayYM", payCase.PayYM); } else { caseEmp.SetValue("PayYM", payCase.InitYM); } _dbContext.InsertDynamicData(caseEmp); } }