예제 #1
0
        public async Task <IActionResult> OnPostAsync(string monthlyBonus, string quarterlyBonus)
        {
            var SalaryUtilities = new SalaryUtil(_context);

            var returnJSON = await SalaryUtilities.CalculateSalary(Paycheck, Convert.ToBoolean(monthlyBonus), Convert.ToBoolean(quarterlyBonus));

            return(RedirectToPage("./Index"));
        }
예제 #2
0
        public IActionResult GetSalary([FromForm] string monthlyBonus, [FromForm] string quarterlyBonus, [FromForm] string payStart, [FromForm] string payEnd)
        {
            if (!String.IsNullOrEmpty(monthlyBonus) && !String.IsNullOrEmpty(quarterlyBonus) && !String.IsNullOrEmpty(payStart) && !String.IsNullOrEmpty(payEnd))
            {
                var SalaryUtilities = new SalaryUtil(_context);

                //Make make shift Paycheck
                var paystub = new Paycheck();
                paystub.PayPeriodStart = DateTime.Parse(payStart);
                paystub.PayPeriodEnd   = DateTime.Parse(payEnd);

                var returnDictionary = SalaryUtilities.CalculateSalary(paystub, Convert.ToBoolean(monthlyBonus), Convert.ToBoolean(quarterlyBonus)).Result;

                if (returnDictionary.ContainsKey("status") && returnDictionary["status"] == "error")
                {
                    return(BadRequest(new
                    {
                        status = "error",
                        message = returnDictionary["message"]
                    }));
                }
                else
                {
                    return(Ok(new
                    {
                        lumpSum = returnDictionary["lumpSum"],
                        startDate = returnDictionary["startDate"],
                        endDate = returnDictionary["endDate"],
                        status = "success"
                    }));
                }
            }
            else
            {
                return(BadRequest(new {
                    status = "error",
                    message = "Missing Arguments"
                }));
            }
        }
예제 #3
0
        public bool DoSalaryCounting(long empId, Date countingDate)
        {
            var transaction = _humanManagerContext.Database.BeginTransaction();

            try
            {
                // Lấy cấu hình
                ConfigureEntity configure = _humanManagerContext.Configures.SingleOrDefault();

                // lấy nhân viên
                EmployeeEntity employeeEntity = _humanManagerContext.Employees
                                                .Where(e => e.Id == empId)
                                                .Include(e => e.Job)
                                                .ThenInclude(j => j.JobLevel)
                                                .Include(e => e.RewardPunishes)
                                                .SingleOrDefault();
                // Lấy bảo hiểm
                List <InsurranceEntity> insurrances = _humanManagerContext.Insurrances.ToList();

                // Lấy lương quy định tối thiểu
                int miniumSalary = (int)configure.MinimumSalary;

                // Tính hệ số lương
                double salaryCoefficient = SalaryUtil.GetSalaryCoefficient(employeeEntity.Job.JobLevel, employeeEntity.JobLevel);

                // Lây số ngày công quy định
                int regulationWorkDay = (int)configure.RegulationWorkDay;

                // Lấy số ngày công thực tế
                int empWorkDay = 30;

                // Tính phụ cấp

                // Tính thưởng phạt
                int rewardMoney  = SalaryUtil.DoRewardMoneyCounting(employeeEntity.RewardPunishes);
                int publishMoney = SalaryUtil.DoPublishMoneyCounting(employeeEntity.RewardPunishes);

                // Tính bảo hiểm
                double totalInsurranceRatio = SalaryUtil.CountTotalInsurranceRatio(insurrances);

                // Lấy bảng thuế
                List <TaxEntity> taxs = _humanManagerContext.Taxs.ToList();

                // Tính lương
                SalaryHistoryEntity salaryHistoryEntity =//
                                                          SalaryUtil.DoSalaryConting(employeeEntity, new DateTime(countingDate.year, countingDate.month, countingDate.day), miniumSalary, salaryCoefficient, regulationWorkDay, empWorkDay, rewardMoney, publishMoney, totalInsurranceRatio, taxs);

                // kiểm tra thay đổi lương
                SalaryHistoryEntity oldSalaryHistory = _humanManagerContext.SalaryHistories.Where(sh => sh.EmployeeId == employeeEntity.Id && sh.CountedDate.Month == countingDate.month && sh.CountedDate.Year == countingDate.year && sh.IsActive == true).SingleOrDefault();
                if (oldSalaryHistory == null || salaryHistoryEntity.NetSalary != oldSalaryHistory.NetSalary)
                {
                    // Chuyển trạng thái lương cũ
                    if (oldSalaryHistory != null)
                    {
                        oldSalaryHistory.IsActive = false;
                    }
                    // Lưu lương mới
                    salaryHistoryEntity = _humanManagerContext.SalaryHistories.Add(salaryHistoryEntity).Entity;
                    _humanManagerContext.SaveChanges();
                    transaction.Commit();
                }
                else
                {
                    transaction.Rollback();
                    return(false);
                }
                return(true);
            }
            catch (Exception ex)
            {
                transaction.Rollback();
                throw ex;
            }
        }
예제 #4
0
 public KennUwareHR_SalaryUtilityShould(DatabaseFixture fixture)
 {
     _salaryUtil = new SalaryUtil(fixture.Context);
     _context    = fixture.Context;
 }