private void ClearFields()
 {
     OperationText            = "";
     mResultSalaryDateChanged = true;
     mResultSalary            = 0m;
     mSelectedEmployeesItem   = null;
     mLastName               = null;
     mFirstName              = null;
     mMiddleName             = null;
     mSalarySubjectName      = (mResultSalaryForAll) ? TEXT_SALARY_FOR_ALL_EMPLOYEES : null;
     mEmploymentDate         = DateTime.Now;
     mEmploymentDateString   = null;
     mSelectedManagerItem    = null;
     mSelectedSalaryPlanItem = null;
     RaisePropertyChanged("EmployeesItemsSource");
     RaisePropertyChanged("SelectedEmployeesItem");
     RaisePropertyChanged("SubordinatesItemsSource");
     RaisePropertyChanged("LastName");
     RaisePropertyChanged("FirstName");
     RaisePropertyChanged("MiddleName");
     RaisePropertyChanged("EmploymentDate");
     RaisePropertyChanged("SelectedManagerItem");
     RaisePropertyChanged("SelectedSalaryPlanItem");
     RaisePropertyChanged("SubordinatesFieldVisible");
     RaisePropertyChanged("SalarySubjectName");
     RaisePropertyChanged("ResultSalary");
 }
        static void Main(string[] args)
        {
            //连接数据库
            SqlConnection conn = MyHelper.GetConnection();

            DevExpress.Xpo.XpoDefault.DataLayer = CreateThreadSafeDataLayer(conn);
            DevExpress.Xpo.Session.DefaultSession.Connection = conn;

            Console.WriteLine("正在同步薪酬体系....");
            SalaryPlan.SychSalaryPlan();

            Console.WriteLine("正在同步薪等....");
            SalaryGrade.SychSalaryGrade();

            Console.WriteLine("正在同步薪级....");
            SalaryStep.SychSalaryStep();

            Console.WriteLine("正在同步员工基本信息....");
            EmployeeInfo.SychEmployeeInfo();

            Console.WriteLine("正在同步工资表....");
            SalaryResult.SychSalaryResult();

            Console.WriteLine("正在清理无效的月薪记录....");
            MonthlySalary.ClearInvalidRecord();

            Console.WriteLine("正在同步绩效考核结果....");
            KpiItem.SychKpiItem();

            Console.WriteLine("同步完毕!");
            //Console.WriteLine("按任意键退出...");
            //Console.ReadKey(true);
        }
Beispiel #3
0
        /// <summary>
        /// Updates Employee entity performing all necessary validations.
        /// </summary>
        /// <param name="aEmployee">Employee entity to update</param>
        /// <param name="aUpdateOption">Do nothing, Do SaveChanges</param>
        /// <param name="aSalaryPlanId">SalaryPlan Id, if <= 0 then unchanged</param>
        /// <param name="aLastName">Last name, if null then unchanged</param>
        /// <param name="aFirstName">First name, if null then unchanged</param>
        /// <param name="aMiddleName">Middle name, if null then unchanged, if empty then set to null</param>
        /// <param name="aEmploymentDate">Employment date, if zero then unchanged</param>
        /// <param name="aManager">Manager entity, if null then set to null</param>
        /// <returns>Success, A required field is incorrect, EmployeeType is Employee but this Employee has subordinates, Manager is already this Employee's subordinate</returns>
        public EEmployeeUpdateResult UpdateEmployee(Employee aEmployee, EEmployeeUpdateOption aUpdateOption, int aSalaryPlanId, string aLastName, string aFirstName, string aMiddleName, DateTime aEmploymentDate, Employee aManager)
        {
            if (aSalaryPlanId <= 0)
            {
                aSalaryPlanId = aEmployee.SalaryPlanId;
            }
            aLastName ??= aEmployee.LastName;
            aFirstName ??= aEmployee.FirstName;
            if (aMiddleName == null)
            {
                aMiddleName = aEmployee.MiddleName;
            }
            else if (aMiddleName.Length == 0)
            {
                aMiddleName = null;
            }
            if (aEmploymentDate.Ticks <= 0L)
            {
                aEmploymentDate = aEmployee.EmploymentDate;
            }
            EEmployeeUpdateResult res = EEmployeeUpdateResult.FailRequiredField;

            if ((aSalaryPlanId > 0) && !string.IsNullOrWhiteSpace(aLastName) && !string.IsNullOrWhiteSpace(aFirstName) && (aEmploymentDate >= CompanyDateOfEstablishment))
            {
                SalaryPlan aSalaryPlan = EmployeeListDB.SalaryPlans.Find(aSalaryPlanId);
                if (aSalaryPlan != null)
                {
                    res = EEmployeeUpdateResult.FailEmployeeType;
                    if ((aSalaryPlan.EmployeeType > SalaryPlan.EEmployeeType.Employee) || (aEmployee.Subordinates == null) || !aEmployee.Subordinates.Any())
                    {
                        res = EEmployeeUpdateResult.FailManagerIsSubordinate;
                        if ((aManager == null) || !EmployeeHelper.IsSubordinate(aEmployee, aManager))
                        {
                            aEmployee.LastName       = aLastName;
                            aEmployee.FirstName      = aFirstName;
                            aEmployee.MiddleName     = aMiddleName;
                            aEmployee.EmploymentDate = aEmploymentDate;
                            aEmployee.SalaryPlanId   = aSalaryPlanId;
                            aEmployee.Manager        = aManager;

                            if (aUpdateOption == EEmployeeUpdateOption.SaveChanges)
                            {
                                EmployeeListDB.SaveChanges();
                            }
                            res = EEmployeeUpdateResult.Success;
                        }
                    }
                }
            }
            return(res);
        }
        private void btn同步员工信息_Click(object sender, EventArgs e)
        {
            if (MessageBox.Show("同步需要几分钟甚至更长,过程中请不可进行其他操作,确实要立即同步吗?", "提示", MessageBoxButtons.YesNo, MessageBoxIcon.Warning, MessageBoxDefaultButton.Button2, 0, false) == DialogResult.Yes)
            {
                CreateWaitDialog("正在同步薪酬体系....", "请稍等");
                SalaryPlan.SychSalaryPlan();

                CreateWaitDialog("正在同步薪等....", "请稍等");
                SalaryGrade.SychSalaryGrade();

                CreateWaitDialog("正在同步薪级....", "请稍等");
                SalaryStep.SychSalaryStep();

                CreateWaitDialog("正在同步员工基本信息....", "请耐心等待");
                EmployeeInfo.SychEmployeeInfo();

                CloseWaitDialog();
            }
        }
Beispiel #5
0
        /// <summary>
        /// Creates a new Employee entity performing all necessary validations.
        /// </summary>
        /// <param name="aNewEmployee">Newly created Employee</param>
        /// <param name="aUpdateOption">Do nothing, Add to table Employees, Add to table Employees and do SaveChanges</param>
        /// <param name="aSalaryPlanId">SalaryPlan Id</param>
        /// <param name="aLastName">Last name</param>
        /// <param name="aFirstName">First name</param>
        /// <param name="aMiddleName">Middle name</param>
        /// <param name="aEmploymentDate">Employment date</param>
        /// <param name="aManager">Manager entity</param>
        /// <returns>Success, A required field is incorrect, Employee with the same name already exists</returns>
        public EEmployeeUpdateResult CreateNewEmployee(out Employee aNewEmployee, EEmployeeUpdateOption aUpdateOption, int aSalaryPlanId, string aLastName, string aFirstName, string aMiddleName, DateTime aEmploymentDate, Employee aManager = null)
        {
            EEmployeeUpdateResult res = EEmployeeUpdateResult.FailRequiredField;

            aNewEmployee = null;
            if ((aSalaryPlanId > 0) && !string.IsNullOrWhiteSpace(aLastName) && !string.IsNullOrWhiteSpace(aFirstName) && (aEmploymentDate >= CompanyDateOfEstablishment))
            {
                SalaryPlan aSalaryPlan = EmployeeListDB.SalaryPlans.Find(aSalaryPlanId);
                if (aSalaryPlan != null)
                {
                    res = EEmployeeUpdateResult.FailAlreadyExists;
                    var aEmployee = new Employee
                    {
                        LastName       = aLastName,
                        FirstName      = aFirstName,
                        MiddleName     = aMiddleName,
                        EmploymentDate = aEmploymentDate,
                        SalaryPlanId   = aSalaryPlanId
                    };
                    if (!EmployeeListDB.Employees.Any(v => v.Equals(aEmployee)))
                    {
                        aEmployee.Manager = aManager;
                        aNewEmployee      = aEmployee;

                        if (aUpdateOption > EEmployeeUpdateOption.None)
                        {
                            EmployeeListDB.Employees.Add(aEmployee);
                            if (aUpdateOption == EEmployeeUpdateOption.SaveChanges)
                            {
                                EmployeeListDB.SaveChanges();
                            }
                        }
                        res = EEmployeeUpdateResult.Success;
                    }
                }
            }
            return(res);
        }
Beispiel #6
0
        public EmployeeListDBConfiguration(SalaryPlanConfiguration aSalaryConfig = null, string aDatabaseName = null)
        {
            if (string.IsNullOrWhiteSpace(aDatabaseName))
            {
                aDatabaseName = DATABASE_NAME_DEFAULT;
            }

            if (aSalaryConfig == null)
            {
                aSalaryConfig = new SalaryPlanConfiguration();
            }

            var aSalaryPlan1 = new SalaryPlan
            {
                Name               = "Employee",
                EmployeeType       = SalaryPlan.EEmployeeType.Employee,
                BaseRate           = aSalaryConfig.BaseRateEmployee,
                PercentAnnual      = aSalaryConfig.PercentAnnualEmployee,
                PercentAnnualLimit = aSalaryConfig.PercentAnnualLimitEmployee,
                PercentSubs        = 0,
                PercentSubsLevel   = 0
            };

            var aSalaryPlan2 = new SalaryPlan
            {
                Name               = "Manager",
                EmployeeType       = SalaryPlan.EEmployeeType.Manager,
                BaseRate           = aSalaryConfig.BaseRateManager,
                PercentAnnual      = aSalaryConfig.PercentAnnualManager,
                PercentAnnualLimit = aSalaryConfig.PercentAnnualLimitManager,
                PercentSubs        = aSalaryConfig.PercentSubsManager,
                PercentSubsLevel   = aSalaryConfig.PercentSubsLevelManager
            };

            var aSalaryPlan3 = new SalaryPlan
            {
                Name               = "Sales",
                EmployeeType       = SalaryPlan.EEmployeeType.Sales,
                BaseRate           = aSalaryConfig.BaseRateSales,
                PercentAnnual      = aSalaryConfig.PercentAnnualSales,
                PercentAnnualLimit = aSalaryConfig.PercentAnnualLimitSales,
                PercentSubs        = aSalaryConfig.PercentSubsSales,
                PercentSubsLevel   = aSalaryConfig.PercentSubsLevelSales
            };

#if USE_INMEMORY_DATABASE
            var options = new DbContextOptionsBuilder <EmployeeListDBContext>()
                          .UseInMemoryDatabase(databaseName: aDatabaseName)
                          .Options;

            EmployeeListDB = new EmployeeListDBContext(options);

            EmployeeListDB.SalaryPlans.Add(aSalaryPlan1);
            EmployeeListDB.SalaryPlans.Add(aSalaryPlan2);
            EmployeeListDB.SalaryPlans.Add(aSalaryPlan3);
            EmployeeListDB.SaveChanges();
#else
            EmployeeListDB = new EmployeeListDBContext(aDatabaseName);
            EmployeeListDB.Database.EnsureCreated();

            var  aSalaryPlans = EmployeeListDB.SalaryPlans;
            bool aRes         = aSalaryPlans.Any(v => v.EmployeeType == SalaryPlan.EEmployeeType.Employee) &&
                                aSalaryPlans.Any(v => v.EmployeeType == SalaryPlan.EEmployeeType.Manager) &&
                                aSalaryPlans.Any(v => v.EmployeeType == SalaryPlan.EEmployeeType.Sales);
            if (!aRes)
            {
                EmployeeListDB.SalaryPlans.Add(aSalaryPlan1);
                EmployeeListDB.SalaryPlans.Add(aSalaryPlan2);
                EmployeeListDB.SalaryPlans.Add(aSalaryPlan3);
                EmployeeListDB.SaveChanges();
            }
#endif
        }