public decimal ComputeTax(int payrollId, EmployeeInfo employeeInfo, decimal totalTaxableIncome, FrequencyType taxFrequency)
        {
            var taxDeduction   = _deductionService.GetByName(TAX_DEDUCTION_NAME);
            var noOfDependents =
                employeeInfo.Dependents > MAX_DEPENDENT ? MAX_DEPENDENT : employeeInfo.Dependents;

            var taxAmount = _taxService.ComputeTax(taxFrequency, noOfDependents, totalTaxableIncome);

            //Create deductions
            if (taxAmount > 0)
            {
                var employeePayrollDeduction = new EmployeePayrollDeduction
                {
                    EmployeeId        = employeeInfo.EmployeeId,
                    DeductionId       = taxDeduction.DeductionId,
                    Amount            = taxAmount,
                    DeductionDate     = new DateTime(),
                    EmployeePayrollId = payrollId
                };

                _employeePayrollDeductionRepository.Add(employeePayrollDeduction);
            }

            return(taxAmount);
        }
        public Decimal GenerateDeductionsByPayroll(EmployeePayroll employeePayroll)
        {
            double totalHours = 0;
            //Get total number of hours

            /* if (isSemiMonthly)
             * {
             *   totalHours = Double.Parse(_settingService.GetByKey(SEMIMONTHLY_TOTAL_HOURS));
             * }
             * else
             * {
             *   totalHours = Double.Parse(_settingService.GetByKey(MONTHLY_TOTAL_HOURS));
             * }*/

            //Get employees
            //var employeeList = _employeeInfoService.GetAllActive();

            var employee      = _employeeInfoService.GetByEmployeeId(employeePayroll.EmployeeId);
            var deductionList = _deductionService.GetAllCustomizable();

            decimal totalDeductions = 0;

            //Every deductions check for available deduction for employee
            foreach (Deduction deduction in deductionList)
            {
                var employeeDeduction = _employeeDeductionService
                                        .GetByDeductionAndEmployee(deduction.DeductionId, employee.EmployeeId);

                if (employeeDeduction != null)
                {
                    //Create a deduction entry
                    EmployeePayrollDeduction employeePayrollDeduction =
                        new EmployeePayrollDeduction
                    {
                        EmployeeId        = employee.EmployeeId,
                        DeductionId       = deduction.DeductionId,
                        Amount            = employeeDeduction.Amount,
                        DeductionDate     = DateTime.Now,
                        EmployeePayrollId = employeePayroll.PayrollId
                    };

                    _employeePayrollDeductionRepository.Add(employeePayrollDeduction);
                    totalDeductions += employeeDeduction.Amount;
                }
            }

            return(totalDeductions);
        }
 public EmployeePayrollDeduction Add(EmployeePayrollDeduction employeePayrollDeduction)
 {
     return(_employeePayrollDeductionRepository.Add(employeePayrollDeduction));
 }