Exemplo n.º 1
0
        public async Task <PaySlipDetail> GetPaySlipDetailFromSalaryInfo(SalaryInfo salaryInfo)
        {
            var rates = await taxingRuleDao.GetCurrentTaxingRates();

            var suitableRate = rates.FirstOrDefault(x =>
                                                    x.TaxableIncomeBottom <= salaryInfo.AnnuaSalary &&
                                                    (x.TaxableIncomeTop >= salaryInfo.AnnuaSalary || x.TaxableIncomeTop == -1));

            if (suitableRate == null)
            {
                throw new Exception($"Error in finding suitable tax rate for {salaryInfo.AnnuaSalary}");
            }

            var baseTax        = suitableRate.TaxBase;
            var extraTax       = (int)((salaryInfo.AnnuaSalary - suitableRate.TaxableIncomeBottom) * suitableRate.TaxRatio);
            var incomeTax      = (int)Math.Round((double)(baseTax + extraTax) / 12, MidpointRounding.ToEven);
            var grossIncome    = (int)Math.Round((double)salaryInfo.AnnuaSalary / 12, MidpointRounding.ToEven);
            var netIncome      = grossIncome - incomeTax;
            var superAnnuation = (int)Math.Round(grossIncome * salaryInfo.SuperRate, MidpointRounding.ToEven);

            var result = new PaySlipDetail()
            {
                SalaryInfo      = salaryInfo,
                GrossIncome     = grossIncome,
                IncomeTax       = incomeTax,
                NetIncome       = netIncome,
                SuperAnnunation = superAnnuation
            };

            return(result);
        }
Exemplo n.º 2
0
        public ActionResult slipDetails()
        {
            ViewBag.Earnings   = new SelectList(iDropDown.GetDropDowns("get-earnings"), "Id", "DisplayName");
            ViewBag.Deductions = new SelectList(iDropDown.GetDropDowns("get-deductions"), "Id", "DisplayName");

            PaySlipDetail obj = new PaySlipDetail();

            return(PartialView(obj));
        }