public override async Task Run(TaxFormGeneratorArguments arguments)
        {
            var dividendGrossAmount = await this.currencyConverter.ConvertCurrency((decimal)arguments.Amount, arguments.Currency, arguments.Date);

            var dividendBreakdown = this.dividendCalculator.Calculate(dividendGrossAmount);

            var generateJOPPDTask            = GenerateJOPPD(arguments.Date, dividendBreakdown, arguments.StartDate, arguments.EndDate);
            var generatePayment2DBarcodeTask = GeneratePayment(arguments.Date, dividendBreakdown);

            await Task.WhenAll(generateJOPPDTask, generatePayment2DBarcodeTask);
        }
        public override async Task Run(TaxFormGeneratorArguments arguments)
        {
            var salaryGrossTotalAmount = await this.currencyConverter.ConvertCurrency((decimal)arguments.Amount, arguments.Currency, arguments.Date);

            var salaryBreakdown = this.salaryCalculator.Calculate(salaryGrossTotalAmount);

            var formStart = new DateTime(arguments.SalaryMonth.Value.Year, arguments.SalaryMonth.Value.Month, 1);
            var formEnd   = formStart.AddMonths(1).AddDays(-1);

            var taxAndSurtaxFormTask  = GenerateTaxAndSurtaxJOPPD(arguments.Date, salaryBreakdown, formStart, formEnd);
            var contributionsFormTask = GenerateContributionsJOPPD(arguments.Date, salaryBreakdown, formStart, formEnd);

            var paymentsTask = GeneratePayments(arguments.Date, arguments.SalaryMonth.Value, salaryBreakdown);

            await Task.WhenAll(taxAndSurtaxFormTask, contributionsFormTask, paymentsTask);
        }
Пример #3
0
 public abstract Task Run(TaxFormGeneratorArguments arguments);