示例#1
0
 public string[] ToPrint()
 {
     return(new[]
     {
         EmployeeName, PayPeriod, GrossIncome.ToString("#.##"), IncomeTax.ToString("#.##"), NetIncome.ToString("#.##"), SuperAmount.ToString("#.##")
     });
 }
示例#2
0
        public IIncomeTaxDiscountCalculator GetIncomeTaxCalculator(double salary)
        {
            if (salary <= IncomeTax.GetIncomeTax(IncomeTaxRangeTypes.EXEMPT_RANGE).MAX_VALUE)
            {
                return(GetIncomeTaxFactory(IncomeTaxRangeTypes.EXEMPT_RANGE));
            }

            if (salary <= IncomeTax.GetIncomeTax(IncomeTaxRangeTypes.FIRST_RANGE).MAX_VALUE)
            {
                return(GetIncomeTaxFactory(IncomeTaxRangeTypes.FIRST_RANGE));
            }

            if (salary <= IncomeTax.GetIncomeTax(IncomeTaxRangeTypes.SECOND_RANGE).MAX_VALUE)
            {
                return(GetIncomeTaxFactory(IncomeTaxRangeTypes.SECOND_RANGE));
            }

            if (salary <= IncomeTax.GetIncomeTax(IncomeTaxRangeTypes.THIRD_RANGE).MAX_VALUE)
            {
                return(GetIncomeTaxFactory(IncomeTaxRangeTypes.THIRD_RANGE));
            }
            else
            {
                throw new NotImplementedException();
            }
        }
示例#3
0
 public Discount(IncomeTax incomeTax, double salary, double netSalary, double discounted)
 {
     IncomeTax  = incomeTax;
     Salary     = salary;
     NetSalary  = netSalary;
     Discounted = discounted;
 }
示例#4
0
        public FinancialOperation CreateInvestment(decimal amount, DateTime maturityDate, decimal interestRate)
        {
            var tradeDate = DateTime.Today;
            var taxes     = IncomeTax.Get((maturityDate - tradeDate).Days);

            return(new Investment(tradeDate, amount, maturityDate, interestRate, taxes));
        }
示例#5
0
        public async Task <IActionResult> Edit(int id, [Bind("Id,Year,Month,Paid,Value,Income,Loss,IncomeIncr,SocialSecContr,SocialSecContrIncr,HealthSec,HealthSecIncr")] IncomeTax incomeTax)
        {
            if (id != incomeTax.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                try
                {
                    _context.Update(incomeTax);
                    await _context.SaveChangesAsync();
                }
                catch (DbUpdateConcurrencyException)
                {
                    if (!IncomeTaxExists(incomeTax.Id))
                    {
                        return(NotFound());
                    }
                    else
                    {
                        throw;
                    }
                }
                return(RedirectToAction(nameof(Index)));
            }
            return(View(incomeTax));
        }
示例#6
0
        public void TestInitialize()
        {
            player    = new Player("player");
            banker    = new Banker();
            incomeTax = new IncomeTax(2, banker, "IncomeTax");

            banker.AddAccount(player, 500);
        }
示例#7
0
 public void UnPostLedger(IncomeTax tax)
 {
     if (tax.PostStatus == LedgerPostStatus.Posted)
     {
         organization.LedgersDal.RemoveTransaction(tax.Id);
         tax.PostStatus = LedgerPostStatus.ReadyToPost;
         erpNodeDBContext.SaveChanges();
     }
 }
示例#8
0
        public IEnumerable <ContributorDto> CalculateIncomeTax(decimal salary)
        {
            var incomeTax    = new IncomeTax(salary);
            var contributors = _repository.Get().ToList();

            contributors.ForEach(x => incomeTax.CalculateIncomeTax(x));
            contributors = contributors.OrderBy(x => x.IncomeTax).ThenBy(x => x.Name).ToList();
            return(_mapper.Map <List <ContributorDto> >(contributors));
        }
 /// <summary>
 /// Gets the pay slip.
 /// </summary>
 /// <param name="employeeSalary">The employee salary.</param>
 /// <param name="incomeTax">The income tax.</param>
 /// <param name="paymentStarPeriod">The payment star period.</param>
 /// <returns></returns>
 public PaySlip GetPaySlip(EmployeeSalary employeeSalary, IncomeTax incomeTax, SalarySlipPeriod paymentStarPeriod)
 {
     return(new PaySlip(
                employeeSalary.Employee,
                paymentStarPeriod,
                employeeSalary.AnualSalary / Month,
                incomeTax.Tax / Month,
                employeeSalary.SuperRate
                ));
 }
示例#10
0
        static void Main(string[] args)
        {
            Console.ForegroundColor = ConsoleColor.Blue;
            Console.WriteLine("\t\t\t\t Welcome To Income Tax Calculator \n\n");

            double income;
            double deduction;


            // Calculate tax until user stops the program
            while (true)
            {
                Console.ForegroundColor = ConsoleColor.Gray;

                // Calling GetValue(message to print) function and storing the values
                income    = GetValue("Enter your income in Rupees");
                deduction = GetValue("Enter your 80C investment amount in Rupees");

                // Object for calculating Gross Taxable Income and Tax for different slabs
                IncomeTax it = new IncomeTax();

                double gti  = it.GTI(income, deduction);
                Slabs  ITax = it.TaxDeduction(gti);


                Display(ITax);


                // Check response of user for repeating process
                char response = 'p';

                do
                {
                    Console.WriteLine("\n\nDo you want to calculate your tax again ?(y/n)");
                    try
                    {
                        response = Convert.ToChar(Console.ReadLine());
                        response = Char.ToLower(response);
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine("Invalid response \n" + e.Message);
                    }
                } while (response != 'n' && response != 'y');


                Console.WriteLine("\n\n");
                if (response == 'n')
                {
                    Environment.Exit(0);
                }
            }
        }
示例#11
0
        // GET: IncomeTaxes/Create
        public IActionResult Create()
        {
            ViewData["Month"] = new SelectList(Tools.getMonthsDictionary(), "Key", "Value");
            ViewData["Year"]  = new SelectList(Tools.getYearsList());

            IncomeTax incomeTax = new IncomeTax();

            incomeTax.Year  = DateTime.Now.Year;
            incomeTax.Month = DateTime.Now.Month - 1;

            return(PartialView(incomeTax));
        }
示例#12
0
        public IncomeTax Create(Guid taxCodeId)
        {
            var newCoperateTax = new IncomeTax()
            {
                Id     = Guid.NewGuid(),
                TrDate = DateTime.Today
            };

            erpNodeDBContext.IncomeTaxs.Add(newCoperateTax);
            erpNodeDBContext.SaveChanges();

            return(newCoperateTax);
        }
示例#13
0
        public void IsentoSemDependentes()
        {
            //Arrange
            var salarioMinimo = 954;
            var impostoRenda  = new IncomeTax(salarioMinimo);
            var contribuinte  = new Contributor("643.574.755-54", "Alexandre Dórea", 0, 1683.56m);

            //Act
            impostoRenda.CalculateIncomeTax(contribuinte);

            //Assert
            contribuinte.IncomeTax.Should().Be(0);
        }
示例#14
0
        static void Main(string[] args)
        {
            MedicareLevy     medicareLevy     = new MedicareLevy("Medicare Levy", 2);
            BudgetRepairLevy budgetRepairLevy = new BudgetRepairLevy("Budget Repair Levy", 2);
            IncomeTax        incomeTax        = new IncomeTax("Income Tax", 5);
            Income           income           = new Income();

            SalaryDetails salaryDetails = new SalaryDetails(medicareLevy, budgetRepairLevy, incomeTax, income);

            salaryDetails.Runner();

            System.Console.ReadKey();
        }
示例#15
0
        private void InitializeLocations()
        {
            Locations = new List <ILocation>();

            for (int i = 0; i < 40; i++)
            {
                Locations.Add(new GenericLocation());
            }

            Locations[4]  = new IncomeTax();
            Locations[30] = new GoToJail();
            Locations[38] = new LuxuryTax();
        }
示例#16
0
        public void SegundaAliquotaComDependentes()
        {
            //Arrange
            var salarioMinimo        = 954;
            var impostoRenda         = new IncomeTax(salarioMinimo);
            var contribuinte         = new Contributor("643.574.755-54", "Alexandre Dórea", 1, 4800);
            var valorImpostoEsperado = 712.845m;

            //Act
            impostoRenda.CalculateIncomeTax(contribuinte);

            //Assert
            contribuinte.IncomeTax.Should().Be(valorImpostoEsperado);
        }
示例#17
0
        public void QuartaAliquotaSemDependentes()
        {
            //Arrange
            var salarioMinimo        = 954;
            var impostoRenda         = new IncomeTax(salarioMinimo);
            var contribuinte         = new Contributor("643.574.755-54", "Alexandre Dórea", 0, 8765);
            var valorImpostoEsperado = 2410.375m;

            //Act
            impostoRenda.CalculateIncomeTax(contribuinte);

            //Assert
            contribuinte.IncomeTax.Should().Be(valorImpostoEsperado);
        }
示例#18
0
        public void PrimeiraAliquotaSemDependentes()
        {
            //Arrange
            var salarioMinimo        = 954;
            var impostoRenda         = new IncomeTax(salarioMinimo);
            var contribuinte         = new Contributor("643.574.755-54", "Alexandre Dórea", 0, 1958.47m);
            var valorImpostoEsperado = 146.88525M;

            //Act
            impostoRenda.CalculateIncomeTax(contribuinte);

            //Assert
            contribuinte.IncomeTax.Should().Be(valorImpostoEsperado);
        }
示例#19
0
        public IncomeTax Create()
        {
            var taxDate = DateTime.Today;

            var newIncomeTax = new IncomeTax()
            {
                Id           = Guid.NewGuid(),
                TrDate       = taxDate,
                FiscalYearId = organization.FiscalYears.Find(taxDate).Id,
            };

            erpNodeDBContext.IncomeTaxs.Add(newIncomeTax);
            erpNodeDBContext.SaveChanges();
            return(newIncomeTax);
        }
        public override bool Equals(object obj)
        {
            var item = obj as PayslipEntity;

            if (item == null)
            {
                return(false);
            }
            return(FirstName.Equals(item.FirstName) &&
                   LastName.Equals(item.LastName) &&
                   PayPeriod.Equals(item.PayPeriod) &&
                   GrossIncome.Equals(item.GrossIncome) &&
                   IncomeTax.Equals(item.IncomeTax) &&
                   NetIncome.Equals(item.NetIncome) &&
                   SuperAnnuation.Equals(item.SuperAnnuation));
        }
示例#21
0
        public void Budget_Repair_Levy_Should_Be_Zero_If_Income_Is_In_First_Range()
        {
            //Arrange
            double           taxableIncome    = 100000;
            double           tax              = 0;
            MedicareLevy     medicareLevy     = new MedicareLevy("Medicare Levy", 2);
            BudgetRepairLevy budgetRepairLevy = new BudgetRepairLevy("Budget Repair Levy", 2);
            IncomeTax        incomeTax        = new IncomeTax("Income Tax", 5);
            Income           income           = new Income();
            SalaryDetails    sd = new SalaryDetails(medicareLevy, budgetRepairLevy, incomeTax, income);

            //Act
            tax = sd.CalculateBudgetRepairLevy(taxableIncome);
            //Assert
            Assert.AreEqual(0, tax, "Tax should be zero");
        }
示例#22
0
    public static void Main()
    {
        var marcinPay =
            new IncomeTax(
                new CharityDeduction(0.0f,
                    new HealthTax(
                        new RetirmentTax(
                            new PensionTax(
                                new EmployePay()
                            )
                        )
                    )
                )
            );

        Console.WriteLine("Marcin pay is {0} and total tax is {1}", marcinPay.GetPay(), marcinPay.GetTotalTax());
    }
示例#23
0
    public static void Main()
    {
        var marcinPay =
            new IncomeTax(
                new CharityDeduction(0.0f,
                                     new HealthTax(
                                         new RetirmentTax(
                                             new PensionTax(
                                                 new EmployePay()
                                                 )
                                             )
                                         )
                                     )
                );

        Console.WriteLine("Marcin pay is {0} and total tax is {1}", marcinPay.GetPay(), marcinPay.GetTotalTax());
    }
示例#24
0
        static void Main(string[] args)
        {
            var firstNameInput = StandardMessage.CaptureData("first name");
            var surnameInput   = StandardMessage.CaptureData("surname");

            var annualSalaryInput = StandardMessage.CaptureData("annual salary");

            var superRateInput = StandardMessage.CaptureData("super rate");

            var startDate = StandardMessage.CaptureData("payment start date");
            var endDate   = StandardMessage.CaptureData("payment end date");

            var bracket1 = TaxBracket.Generate(0M, 18200M, 0M, 0M);
            var bracket2 = TaxBracket.Generate(18201M, 37000M, 0M, 0.325M);
            var bracket3 = TaxBracket.Generate(37001M, 87000M, 3572M, 0.325M);
            var bracket4 = TaxBracket.Generate(87001M, 180000M, 19822M, 0.37M);
            var bracket5 = TaxBracket.Generate(180000M, Int32.MaxValue, 54232M, 0.45M);

            var taxTable = TaxTable.Build(bracket1, bracket2, bracket3, bracket4, bracket5);

            EmployeeDetails employeeDetails = EmployeeDetails.ConstructFullName(firstNameInput, surnameInput);

            PayPeriod payPeriod = PayPeriod.Generate(startDate, endDate);

            GrossIncome grossIncome = GrossIncome.Generate(annualSalaryInput, payPeriod);
            IncomeTax   incomeTax   = IncomeTax.Generate(taxTable, grossIncome, payPeriod);
            NetIncome   netIncome   = NetIncome.Generate(grossIncome, incomeTax);

            Super super = Super.Generate(superRateInput, grossIncome);

            var paySlip = PaySlip.Create(
                employeeDetails,
                payPeriod,
                grossIncome,
                incomeTax,
                netIncome,
                super
                );

            var payslipOutput = PayslipBuilder.Print(paySlip);

            Console.WriteLine(payslipOutput);
//
        }
示例#25
0
        public async Task ShouldReturnTheCorrectProgressiveIncomeTax(decimal income, decimal tax)
        {
            //Arrange
            command = new CalculateIncomeTaxCommand {
                AnnualIncome = income, PostCode = "7441"
            };

            IncomeTax incomeTax = new IncomeTax {
                IncomeAmount = income, PostCode = "7441", Tax = tax
            };


            TaxCalculationType taxCalculationType = new TaxCalculationType {
                ID = 1, Name = "Progressive", PostCode = "7441"
            };

            var incomeTaxTypeCollection = new List <TaxCalculationType> {
                taxCalculationType
            };
            var incomeTaxCollection = new List <IncomeTax> {
                incomeTax
            };

            A.CallTo(() => taxCalculationTypeRepo.GetAllAsync(A <CancellationToken> ._)).ReturnsLazily(x =>
            {
                return(Task.FromResult(incomeTaxTypeCollection.AsEnumerable()));
            });


            A.CallTo(() => incomeTaxRepo.GetAllAsync(A <CancellationToken> ._)).ReturnsLazily(x =>
            {
                return(Task.FromResult(incomeTaxCollection.AsEnumerable()));
            });


            var commandHandler = new CalculateIncomeTaxCommandHandler(taxCalculationTypeRepo, progressiveTaxRepo, incomeTaxRepo);
            //Act
            var result = await commandHandler.Handle(command, cancellationToken);

            //Assert
            Assert.AreEqual(incomeTax.IncomeAmount, result.IncomeAmount);
            Assert.AreEqual(incomeTax.PostCode, result.PostCode);
            Assert.AreEqual(incomeTax.Tax, result.Tax);
        }
        public async Task <IActionResult> Index(IncomeTaxViewModel model)
        {
            string utin = "";
            string tin  = "";

            for (int i = 0; i < model.utin.Length; i++)
            {
                utin = utin + model.utin[i];
            }
            for (int j = 0; j < model.tin.Length; j++)
            {
                tin = tin + model.tin[j];
            }

            IncomeTax incomeTax = new IncomeTax
            {
                nameOfAsse        = model.nameOfAsse,
                nid               = model.nid,
                utin              = utin,
                tin               = tin,
                circel            = model.circel,
                taxZone           = model.taxZone,
                asseYear          = model.asseYear,
                isResident        = model.isResident,
                familyStatus      = model.familyStatus,
                nameOFEmployee    = model.nameOFEmployee,
                husbandORWife     = model.husbandORWife,
                father            = model.father,
                mother            = model.mother,
                dateOFBirth       = model.dateOFBirth,
                presentAddress    = model.presentAddress,
                prmanentAddress   = model.prmanentAddress,
                mobileOffice      = model.mobileOffice,
                residential       = model.residential,
                vatRegistrationNo = model.vatRegistrationNo
            };

            await _context.IncomeTaxes.AddAsync(incomeTax);

            await _context.SaveChangesAsync();

            return(Json(_context.IncomeTaxes.ToList()));
        }
示例#27
0
 public void Setup()
 {
     taxRate = new IncomeTax()
     {
         Description = "",
         Id          = 1,
         TaxBrackets = new Collection <TaxBracket>
         {
             new TaxBracket()
             {
                 TaxRate     = 0.15m,
                 IncomeTaxId = 1,
                 Id          = 1,
                 BaseTax     = 0,
                 Description = ""
             }
         }
     };
 }
        /// <summary>
        /// Calculates the tax.
        /// </summary>
        /// <param name="grossSalary">The gross salary.</param>
        /// <param name="incomeTaxYear">The income tax year.</param>
        /// <returns></returns>
        /// <exception cref="System.ArgumentNullException">amount</exception>
        public IncomeTax CalculateTax(Amount grossSalary, int incomeTaxYear)
        {
            if (grossSalary == null)
            {
                throw new ArgumentNullException("amount");
            }
            var       taxableIncome = incomeTaxSlabRepository.GetTaxation(incomeTaxYear);
            IncomeTax incomeTax     = new IncomeTax();

            foreach (var item in taxableIncome.TaxSlabs.OrderBy(x => x.Order))
            {
                if (item.MaxValue >= grossSalary)
                {
                    incomeTax.Tax += ((grossSalary - item.MinValue) * item.Tax);
                    break;
                }
                incomeTax.Tax += ((item.MaxValue - item.MinValue) * item.Tax);
            }
            return(incomeTax);
        }
 public void Setup()
 {
     taxRate = new IncomeTax()
     {
         Description = "",
         Id          = 1,
         TaxBrackets = new Collection <TaxBracket>
         {
             new TaxBracket()
             {
                 TaxRate     = 0.08m,
                 IncomeTaxId = 1,
                 Id          = 1,
                 BaseTax     = 20000m,
                 Description = "",
                 EndIncome   = 150000m
             }
         }
     };
 }
示例#30
0
        //public async Task<IActionResult> Create([Bind("Id,Year,Month,Paid,Value,Income,Loss,IncomeIncr,SocialSecContr,SocialSecContrIncr,HealthSec,HealthSecIncr")] IncomeTax incomeTax)
        public async Task <IActionResult> Create([Bind("Id,Year,Month")] IncomeTax incomeTax)
        {
            ViewData["Month"] = new SelectList(Tools.getMonthsDictionary(), "Key", "Value");
            ViewData["Year"]  = new SelectList(Tools.getYearsList());

            if (ModelState.IsValid)
            {
                incomeTax = incomeTax.compute(_context);
                if (incomeTax.Income != 0 && incomeTax.Loss != 0)
                {
                    _context.Add(incomeTax);
                    await _context.SaveChangesAsync();

                    return(RedirectToAction(nameof(Index)));
                }
                else
                {
                    return(RedirectToAction(nameof(Index), new { info = "Brak danych dla wybranego okresu" }));
                }
            }
            return(PartialView(incomeTax));
        }
示例#31
0
        public Result Calculate(IncomeTax taxRate, decimal income)
        {
            var result = new Result
            {
                Description = string.Format("Tax calculate result for income {0}",
                                            income.ToString("C")),
                TaxableIncome = income,
                Items         = new Collection <ResultItem>()
            };

            var applicableTaxes = taxRate.TaxBrackets.Where(t => t.StartIncome < income);

            foreach (var item in applicableTaxes)
            {
                var taxItem = new ResultItem()
                {
                    Name = item.Description
                };

                var startIncome = item.StartIncome;
                if (startIncome > 0)
                {
                    startIncome -= 1;
                }

                if (item.EndIncome.HasValue == false || item.EndIncome.Value > income)
                {
                    taxItem.Amount = (income - startIncome) * item.TaxRate;
                }
                else
                {
                    taxItem.Amount = (item.EndIncome.Value - startIncome) * item.TaxRate;
                }
                result.Items.Add(taxItem);
            }

            return(result);
        }
示例#32
0
 public void TestInitialize()
 {
     _incomeTax = new IncomeTax();
 }
示例#33
0
 public void TestCleanup()
 {
     _incomeTax = null;
 }