コード例 #1
0
        public static IndividualUsnDTaxAggregate Calculate(
            TaxCalculationBase @base,
            IndividualUsnDTaxParameters @params)
        {
            var chargedTax = CalculateUsnDChargedTax(@params);

            var feeDeduction =
                @params.CustomerTaxParameters.Salary > RurMoney.Zero
                        ? RurMoney.Min(@base.TotalFee, 0.5M * chargedTax) // есть сотрудники
                        : @base.TotalFee;

            var usnTotalTax = chargedTax - feeDeduction;

            var(total, burgen) = CalculateTotal(usnTotalTax + @base.EmployeeNdfl, @base.TotalFee, @params);

            return(new IndividualUsnDTaxAggregate(
                       chargedTax,
                       feeDeduction,
                       @base.TotalFee,
                       usnTotalTax,
                       @params.SelfInsuranceFee,
                       @base.EmployeeFee,
                       @base.AdditionalFee,
                       @base.EmployeeNdfl,
                       total,
                       burgen
                       ));
        }
コード例 #2
0
        public static OrgUsnD_RTaxAggregate Calculate(
            TaxCalculationBase @base,
            OrganizationUsnD_RTaxParameters @params)
        {
            var totalExpenses = @base.EmployeeFee.Total
                                + @base.EmployeeNdfl
                                + @params.CustomerTaxParameters.Expense
                                + @params.CustomerTaxParameters.Salary;

            var chargedTax = CalculateUsnDRChargedTax(@params, totalExpenses);

            var sts = RurMoney.Max(chargedTax, @params.MinTaxRate.Value * @params.CustomerTaxParameters.Income);

            var(total, burgen) = CalculateTotal(sts + @base.EmployeeNdfl, @base.TotalFee, @params);

            return(new OrgUsnD_RTaxAggregate(
                       totalExpenses,
                       sts,
                       @base.EmployeeFee,
                       @base.EmployeeNdfl,
                       @base.TotalFee,
                       total,
                       burgen
                       ));
        }
コード例 #3
0
        public static OrgUsnDTaxAggregate Calculate(
            TaxCalculationBase @base,
            OrganizationUsnDTaxParameters @params)
        {
            var usnChargedTax = CalculateUsnDChargedTax(@params);

            var feeDeduction =
                @params.CustomerTaxParameters.Salary > RurMoney.Zero
                    ? RurMoney.Min(0.5M * usnChargedTax, @base.TotalFee)
                    : @base.TotalFee;

            var taxTotal = usnChargedTax - feeDeduction;

            var(total, burgen) =
                CalculateTotal(taxTotal + @base.EmployeeNdfl, @base.TotalFee, @params);

            return(new OrgUsnDTaxAggregate(
                       usnChargedTax,
                       taxTotal,
                       @base.EmployeeFee,
                       feeDeduction,
                       @base.TotalFee,
                       @base.EmployeeNdfl,
                       total,
                       burgen
                       ));
        }
コード例 #4
0
        public static IndividualUsnD_RTaxAggregate Calculate(
            TaxCalculationBase @base,
            IndividualUsnD_RTaxParameters @params)
        {
            var totalExpenses = @params.SelfInsuranceFee.Total
                                + @base.EmployeeFee.Total
                                + @base.EmployeeNdfl
                                + @params.CustomerTaxParameters.Expense
                                + @params.CustomerTaxParameters.Salary;

            var chargedTax = CalculateUsnDRChargedTax(@params, totalExpenses);

            var taxTotal = RurMoney.Max(chargedTax, @params.MinTaxRate.Value * @params.CustomerTaxParameters.Income);

            var(total, burgen) = CalculateTotal(taxTotal + @base.EmployeeNdfl, @base.TotalFee, @params);

            return(new IndividualUsnD_RTaxAggregate(
                       totalExpenses,
                       taxTotal,
                       @params.SelfInsuranceFee,
                       @base.EmployeeFee,
                       @base.AdditionalFee,
                       @base.EmployeeNdfl,
                       @base.TotalFee,
                       total,
                       burgen
                       ));
        }
コード例 #5
0
        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));
            }
        }
コード例 #6
0
        public static OrgOsnTaxAggregate Calculate(
            TaxCalculationBase @base,
            OrganizationOsnTaxParameters @params)
        {
            var(salesNds, buyNds, totalNds) = CalculateNds(@params);

            var profitTax = CalculateProfitTax();

            var totalTax = profitTax + totalNds + @base.EmployeeNdfl;

            var(total, burgen) = CalculateTotal(totalTax, @base.TotalFee, @params);

            return(new OrgOsnTaxAggregate(
                       profitTax,
                       totalNds,
                       @base.TotalFee,
                       @base.EmployeeFee,
                       @base.EmployeeNdfl,
                       total,
                       burgen
                       ));

            RurMoney CalculateProfitTax()
            {
                var taxIncome = @params.CustomerTaxParameters.Income - salesNds;

                var taxExpense = @params.CustomerTaxParameters.Expense - buyNds;

                var totalTaxExpense = taxExpense
                                      + @base.EmployeeFee.Total
                                      + @base.EmployeeNdfl
                                      + @params.CustomerTaxParameters.Salary;

                return(@params.ProfitTaxRate.Value * (taxIncome - totalTaxExpense));
            }
        }