/// <summary> /// часть, соответствующая НДФЛ сотрудников /// </summary> /// <param name="params"></param> /// <returns></returns> public static RurMoney CalculateEmployeeNdfl(TaxParameters @params) { var salaryRate = new Rate(1M / (1M - @params.NdflRate.Value)); var salary = salaryRate.Value * @params.CustomerTaxParameters.Salary; var pfr = @params.InsuranceFeeParams.PfrRate.Value * salary; var ffoms = @params.InsuranceFeeParams.FfomsRate.Value * salary; var fss = @params.InsuranceFeeParams.FssRate.Value * salary; var ndfl = RurMoney.Round(@params.NdflRate.Value * salary); return(ndfl); }
public static IndividualOsnTaxAggregate Calculate( TaxCalculationBase @base, IndividualOsnTaxParameters @params) { var(salesNds, buyNds, totalNds) = CalculateNds(@params); var individualNdfl = CalculateIndividualNdfl(); var(total, burgen) = CalculateTotal(individualNdfl + totalNds, @base.TotalFee, @params); return(new IndividualOsnTaxAggregate( individualNdfl, totalNds, @params.SelfInsuranceFee, @base.AdditionalFee, @base.TotalFee, @base.EmployeeFee, @base.EmployeeNdfl, total, burgen )); RurMoney CalculateIndividualNdfl() { var expense = @params.CustomerTaxParameters.Expense - buyNds + @params.SelfInsuranceFee.Total; var totalExpense = expense + @base.EmployeeFee.Total + @base.EmployeeNdfl + @params.CustomerTaxParameters.Salary; var profit = @params.CustomerTaxParameters.Income - salesNds - totalExpense; return(RurMoney.Round(@params.NdflRate.Value * profit)); } }