public async Task <WorkpaperResponseOfForeignIncomeWorkpaper> CreateAsync(
            Guid taxpayerId,
            int taxYear,
            TaxTreatment taxTreatment = TaxTreatment.Taxable,
            decimal grossIncome       = 0m,
            decimal deductions        = 0m,
            decimal taxPaid           = 0m,
            decimal frankingCreditsFromNewZealandCompany = 0m,
            string descriptionOfIncome      = "",
            string foreignEntityTrustName   = "",
            string foreignEntityTrusteeName = ""
            )
        {
            var workpaperResponse = await Client
                                    .Workpapers_GetForeignIncomeWorkpaperAsync(
                taxpayerId,
                taxYear,
                Guid.NewGuid(),
                null,
                null,
                null,
                CancellationToken.None)
                                    .ConfigureAwait(false);

            var workpaper = workpaperResponse.Workpaper;

            workpaper.TaxTreatment = taxTreatment;
            workpaper.GrossIncome  = grossIncome.ToNumericCell();
            workpaper.Deductions   = deductions.ToNumericCell();
            workpaper.TaxPaid      = taxPaid.ToNumericCell();
            workpaper.FrankingCreditsFromNewZealandCompany = frankingCreditsFromNewZealandCompany.ToNumericCell();
            workpaper.DescriptionOfIncome      = descriptionOfIncome;
            workpaper.ForeignEntityTrustName   = foreignEntityTrustName;
            workpaper.ForeignEntityTrusteeName = foreignEntityTrusteeName;

            var command = new UpsertForeignIncomeWorkpaperCommand()
            {
                TaxpayerId       = taxpayerId,
                TaxYear          = taxYear,
                AccountRecordId  = workpaperResponse.Workpaper.Slug.AccountRecordId,
                Workpaper        = workpaperResponse.Workpaper,
                CompositeRequest = true
            };

            var commandResponse = await Client.Workpapers_PostForeignIncomeWorkpaperAsync(command)
                                  .ConfigureAwait(false);

            return(commandResponse);
        }
示例#2
0
        public async Task <WorkpaperResponseOfForeignEmploymentIncomeWorkpaper> CreateAsync(
            Guid taxpayerId,
            int taxYear,
            TaxTreatment taxTreatment    = TaxTreatment.Taxable,
            string countryCode           = "",
            decimal grossIncome          = 0m,
            decimal deductions           = 0m,
            decimal taxPaid              = 0m,
            string employerName          = "",
            Payments[] paymentsInArrears = null
            )
        {
            var workpaperResponse = await Client
                                    .Workpapers_GetForeignEmploymentIncomeWorkpaperAsync(
                taxpayerId,
                taxYear,
                Guid.NewGuid(),
                null,
                null,
                null,
                CancellationToken.None)
                                    .ConfigureAwait(false);

            var workpaper = workpaperResponse.Workpaper;

            workpaper.TaxTreatment      = taxTreatment;
            workpaper.CountryCode       = countryCode;
            workpaper.GrossIncome       = grossIncome.ToNumericCell();
            workpaper.Deductions        = deductions.ToNumericCell();
            workpaper.TaxPaid           = taxPaid.ToNumericCell();
            workpaper.EmployerName      = employerName;
            workpaper.PaymentsInArrears = paymentsInArrears;

            var command = new UpsertForeignEmploymentIncomeWorkpaperCommand()
            {
                TaxpayerId       = taxpayerId,
                TaxYear          = taxYear,
                AccountRecordId  = workpaperResponse.Workpaper.Slug.AccountRecordId,
                Workpaper        = workpaperResponse.Workpaper,
                CompositeRequest = true
            };

            var commandResponse = await Client.Workpapers_PostForeignEmploymentIncomeWorkpaperAsync(command)
                                  .ConfigureAwait(false);

            return(commandResponse);
        }