public SalaryCalculatorResult Calculate(IContractType EmployerSalary) { var result = new SalaryCalculatorResult(); var es = EmployerSalary as IUmowaODzielo; if (es.SalaryFrom.Equals(SalaryFrom.Gross) || es.SalaryFrom.Equals(SalaryFrom.EmployerCosts)) { result.GrossSalary = es.Salary; var podstawaOpodatkowania = es.Salary * (1 - ((decimal)es.HigherCostOfGettingIncome / 100)); var kosztUzyskaniaPrzychodu = es.Salary - podstawaOpodatkowania; var zaliczkaNaPIT = Math.Round(podstawaOpodatkowania * 0.18M, 0); result.NetSalary = result.GrossSalary - zaliczkaNaPIT; result.SalaryCosts.Add(new SalaryCost() { CostName = "zaliczka na PIT", CostValue = zaliczkaNaPIT }); } else if (es.SalaryFrom.Equals(SalaryFrom.Net)) { result.GrossSalary = Math.Round(es.Salary / 0.856M, 2); if (es.HigherCostOfGettingIncome == 50) { result.GrossSalary = Math.Round(es.Salary / 0.91M, 2); } result.NetSalary = es.Salary; var podstawaOopodatkowania = (es.Salary / 0.8M) * (1 - ((decimal)es.HigherCostOfGettingIncome / 100)); var zaliczkaNaPIT = Math.Round(podstawaOopodatkowania * 0.18M, 0); result.SalaryCosts.Add(new SalaryCost() { CostName = "zaliczka na PIT", CostValue = zaliczkaNaPIT }); } return(result); }
public SalaryCalculatorResult Calculate(IContractType EmployerSalary) { var result = new SalaryCalculatorResult(); var umowa = EmployerSalary as IUmowaZlecenie; if (umowa.SalaryFrom.Equals(SalaryFrom.Gross)) { var brutto = umowa.Salary; var kosztUzyskaniaPrzychodu = brutto * 0.20M; if (umowa.HigherCostOfGettingIncome == 50) { kosztUzyskaniaPrzychodu = brutto * 0.50M; } var dochodDoOpadatkowania = brutto - kosztUzyskaniaPrzychodu; var podatek = 0M; var netto = 0M; if (umowa.HealthInsurance == true) { var skladkaNaubiezpiczenieZdrowotne = brutto * 0.09M; var skladkaNaubiezpiczenieZdrowotnePomiejszajacaPodatek = brutto * 0.0775M; podatek = dochodDoOpadatkowania * 0.18M; podatek = podatek - skladkaNaubiezpiczenieZdrowotnePomiejszajacaPodatek; podatek = Math.Round(podatek, 0, MidpointRounding.AwayFromZero); netto = brutto - skladkaNaubiezpiczenieZdrowotne - podatek; result.SalaryCosts.Add(new SalaryCost() { CostName = "ubezpieczenie zdrowotne", CostPercent = 2.45M, CostValue = skladkaNaubiezpiczenieZdrowotne }); } else { podatek = dochodDoOpadatkowania * 0.18M; podatek = Math.Round(podatek, 0, MidpointRounding.AwayFromZero); netto = brutto - podatek; } result.GrossSalary = brutto; result.NetSalary = netto; result.SalaryCosts.Add(new SalaryCost() { CostName = "zaliczka na PIT", CostValue = podatek }); } if (umowa.SalaryFrom.Equals(SalaryFrom.Net)) { if (umowa.HealthInsurance == false) { var netto = umowa.Salary; result.NetSalary = umowa.Salary; result.GrossSalary = Math.Round(umowa.Salary / 0.856M, 2); if (umowa.HigherCostOfGettingIncome == 50) { result.GrossSalary = Math.Round(umowa.Salary / 0.91M, 2); } var podatek = result.GrossSalary - result.NetSalary; podatek = Math.Round(podatek, 0); result.SalaryCosts.Add(new SalaryCost() { CostName = "zaliczka na PIT", CostValue = podatek }); } if (umowa.HealthInsurance == true) { var netto = umowa.Salary; result.NetSalary = umowa.Salary; result.GrossSalary = Math.Round(umowa.Salary / 0.8435M, 2); if (umowa.HigherCostOfGettingIncome == 50) { result.GrossSalary = Math.Round(umowa.Salary / 0.8975M, 2); } var ubezpiecznieZdrowotne = Math.Round(result.GrossSalary * 0.09M, 2); var podatek = result.GrossSalary - result.NetSalary - ubezpiecznieZdrowotne; podatek = Math.Round(podatek, 0); result.SalaryCosts.Add(new SalaryCost() { CostName = "zaliczka na PIT", CostValue = podatek //poprawić podatek z funkcji brutto zwracanie }); result.SalaryCosts.Add(new SalaryCost() { CostName = "ubezpieczenie zdrowotne", CostValue = ubezpiecznieZdrowotne }); } } return(result); }