コード例 #1
0
        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);
        }
コード例 #2
0
ファイル: PayrollService.cs プロジェクト: zeroyou/FapCore3.0
        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);
            }
        }