Example #1
0
        public async void CreateTaxpayerWithCapitalGainsWorkpapers()
        {
            string          baseUrl     = "https://preview.taxlab.online/api-internal/";
            HttpClient      httpclient  = new HttpClient();
            var             authService = new AuthService();
            TaxlabApiClient client      = new TaxlabApiClient(baseUrl, httpclient, authService);

            var repo     = new IndividualWithPropertyCapitalGain();
            var taxYear  = 2021;
            var taxpayer = await repo.CreateAsync(client,
                                                  "John",
                                                  "IndividualWithPropertyCapitalGain",
                                                  "32989432",
                                                  taxYear)
                           .ConfigureAwait(false);

            //allow for calculation to be run
            await Task.Delay(10000);

            // get the capital gains workpaper and check the contents
            var capitalGainsWorkpaper = await client
                                        .Workpapers_GetCapitalGainsWorkpaperAsync(taxpayer.Id, taxYear, WorkpaperType.CapitalGainsWorkpaper, Guid.Empty, false, false, true)
                                        .ConfigureAwait(false);

            Assert.Equal(203896.52m, capitalGainsWorkpaper.Workpaper.CurrentYearGains);
        }
 public async Task AddWorkpaper(TaxlabApiClient client, int taxYear, Guid taxpayerId, ReturnDisclosureTypes returnDisclosureType, string workpaperDescription)
 {
     Console.WriteLine("== Step: Creating " + workpaperDescription + " workpaper ==========================================================");
     var deductionWorkpaper = new OtherDeductionRepository(client);
     await deductionWorkpaper.CreateAsync(taxpayerId,
                                          taxYear,
                                          -10000m,
                                          returnDisclosureType,
                                          workpaperDescription
                                          );
 }
Example #3
0
        private async Task <TaxpayerResponse> CreateTaxpayer(TaxlabApiClient client, string fName, string lName, string tfn)
        {
            string    firstName     = fName;
            string    lastName      = lName;
            string    taxFileNumber = tfn;
            const int taxYear       = 2021;
            var       balanceDate   = new LocalDate(2021, 6, 30);
            var       startDate     = balanceDate.PlusYears(-1).PlusDays(-1);

            Console.WriteLine("== Step: Creating taxpayer ==========================================================");
            var taxpayerService  = new TaxpayerRepository(client);
            var taxpayerResponse = await taxpayerService.CreateAsync(taxYear,
                                                                     firstName,
                                                                     lastName,
                                                                     taxFileNumber);

            var taxpayer = taxpayerResponse.Content;

            client.TaxpayerId = taxpayer.Id;
            client.Taxyear    = taxYear;

            Console.WriteLine("== Step: Creating tax return ==========================================================");
            var taxReturnRepository = new TaxReturnRepository(client);
            var taxReturnResponse   = await taxReturnRepository.CreateAsync(taxpayer.Id,
                                                                            taxYear,
                                                                            balanceDate,
                                                                            startDate);

            if (taxReturnResponse.Success == false)
            {
                throw new Exception(taxReturnResponse.Message);
            }

            Console.WriteLine("== Step: Populating taxpayer details workpaper ==========================================================");
            var details = new TaxpayerDetailsRepository(client);
            await details.CreateAsync(taxpayer.Id,
                                      taxYear,
                                      dateOfBirth : new LocalDate(1975, 4, 12),
                                      dateOfDeath : new LocalDate(2020, 12, 31),
                                      finalReturn : true,
                                      mobilePhoneNumber : "0402698741",
                                      daytimeAreaPhoneCode : "613",
                                      daytimePhoneNumber : "54835123",
                                      emailAddress : "*****@*****.**",
                                      bsbNumber : "553026",
                                      bankAccountName : "Bank of Melbourne",
                                      bankAccountNumber : "15987456"
                                      );

            return(taxpayerResponse);
        }
        public async void CreateTaxpayerWithDistributionsWorkpapers()
        {
            string          baseUrl     = "https://preview.taxlab.online/api-internal/";
            HttpClient      httpclient  = new HttpClient();
            var             authService = new AuthService();
            TaxlabApiClient client      = new TaxlabApiClient(baseUrl, httpclient, authService);

            var repo    = new IndividualWithTrustDistribution();
            var taxYear = 2021;

            var taxpayer = await repo.CreateAsync(client, "John", "IndividualWithTrustDistributions", "32989432", taxYear);

            Assert.Equal("John", taxpayer.TaxpayerName);
        }
Example #5
0
        private const int TaxYear = 2021; // Change this to your taxYear

        private static async Task Main(string[] args)
        {
            var authService = new AuthService();

            Client = new TaxlabApiClient(BaseUrl, HttpClient, authService);

            Console.WriteLine("== Step: Getting existing taxpayers ==========================================================");
            var getAllTaxpayers = await Client.Taxpayers_GetTaxpayersAsync().ConfigureAwait(false);

            var taxpayerService = new TaxpayerRepository(Client);
            var taxpayers       = taxpayerService.SearchByTfn("123456789");
            var allTaxpayers    = taxpayerService.GetAllTaxpayers();

            Console.WriteLine("== Step: Create taxpayer who is an employee with lots of deductions ==========================================================");
            var employeeWithDeductions = new Personas.EmployeeWithDeductions();
            await employeeWithDeductions.CreateAsync(Client).ConfigureAwait(false);

            Console.WriteLine("== Step: Create deceased taxpayer ==========================================================");
            var deceasedTaxpayerPersonaFactory = new Personas.DeceasedEmployeePersona();
            var deceased = await deceasedTaxpayerPersonaFactory.CreateAsync(Client).ConfigureAwait(false);

            Console.WriteLine("== Step: Create taxpayer with dividend ==========================================================");
            var investorPersonaFactory = new Personas.SingleDividend();
            var investor = await investorPersonaFactory.CreateAsync(Client).ConfigureAwait(false);

            Console.WriteLine("== Step: Create taxpayer with lots of workpapers ==========================================================");
            var complexPersonaFactory = new Personas.ComplexEmployee();
            var complex = await complexPersonaFactory.CreateAsync(Client).ConfigureAwait(false);

            var couplePersonaFactory       = new Personas.MarriedCouple();
            var complexMarriedCoupleObject = await couplePersonaFactory.CreateAsync(Client).ConfigureAwait(false);

            Console.WriteLine("== Step: Get All adjustment workpapers for complex taxpayer ==========================================================");
            // Gets a list of all adjustment workpapers for this taxpayer.
            // This does not create any new workpapers.
            var allAdjustmentWorkpapers = await Client.Workpapers_AdjustmentWorkpapersAsync(complex.Id, TaxYear, null)
                                          .ConfigureAwait(false);

            Console.WriteLine(Environment.NewLine);
            Console.WriteLine("== Step: Get All Taxyear workpapers for complex taxpayer ==========================================================");

            // Gets a list of all Taxyear workpapers for this taxpayer.
            // This does not create any new workpapers.
            var allATaxYearWorkpapers = await Client.Workpapers_TaxYearWorkpapersAsync(complex.Id, TaxYear, null)
                                        .ConfigureAwait(false);
        }
Example #6
0
 public DeductibleCarExpenseRepository(TaxlabApiClient client) : base(client)
 {
 }
Example #7
0
 public MedicareRepository(TaxlabApiClient client) : base(client)
 {
 }
Example #8
0
 public DistributionsRepository(TaxlabApiClient client) : base(client)
 {
 }
Example #9
0
 public AnnuityRepository(TaxlabApiClient client) : base(client)
 {
 }
Example #10
0
 public PersonalSuperannuationContributionRepository(TaxlabApiClient client) : base(client)
 {
 }
 public RentalPropertiesSummaryRepository(TaxlabApiClient client) : base(client)
 {
 }
 public DividendIncomeRepository(TaxlabApiClient client) : base(client)
 {
 }
 public OtherDeductionRepository(TaxlabApiClient client) : base(client)
 {
 }
 public RepositoryBase(TaxlabApiClient client)
 {
     Client = client;
 }
Example #15
0
 public SuperannuationIncomeStreamRepository(TaxlabApiClient client) : base(client)
 {
 }
Example #16
0
 public SpouseRepository(TaxlabApiClient client) : base(client)
 {
 }
 public OtherIncomeRepository(TaxlabApiClient client) : base(client)
 {
 }
 public CapitalGainOrLossTransactionRepository(TaxlabApiClient client) : base(client)
 {
 }
 public BusinessIncomeExpensesRepository(TaxlabApiClient client) : base(client)
 {
 }
        public async Task <TaxpayerDto> CreateAsync(TaxlabApiClient client)
        {
            const string firstName     = "John";
            const string lastName      = "Citizen";
            const string taxFileNumber = "32989432";
            const int    taxYear       = 2021;
            var          balanceDate   = new LocalDate(2021, 6, 30);
            var          startDate     = balanceDate.PlusYears(-1).PlusDays(-1);

            Console.WriteLine("== Step: Creating taxpayer ==========================================================");
            var taxpayerService  = new TaxpayerRepository(client);
            var taxpayerResponse = await taxpayerService.CreateAsync(taxYear,
                                                                     firstName,
                                                                     lastName,
                                                                     taxFileNumber);

            var taxpayer = taxpayerResponse.Content;

            client.TaxpayerId = taxpayer.Id;
            client.Taxyear    = taxYear;

            Console.WriteLine("== Step: Creating tax return ==========================================================");
            var taxReturnRepository = new TaxReturnRepository(client);
            var taxReturnResponse   = await taxReturnRepository.CreateAsync(taxpayer.Id,
                                                                            taxYear,
                                                                            balanceDate,
                                                                            startDate);

            if (taxReturnResponse.Success == false)
            {
                throw new Exception(taxReturnResponse.Message);
            }

            Console.WriteLine("== Step: Populating taxpayer details workpaper ==========================================================");
            var details = new TaxpayerDetailsRepository(client);
            await details.CreateAsync(taxpayer.Id,
                                      taxYear,
                                      dateOfBirth : new LocalDate(1975, 4, 12),
                                      dateOfDeath : new LocalDate(2020, 12, 31),
                                      finalReturn : true,
                                      mobilePhoneNumber : "0402698741",
                                      daytimeAreaPhoneCode : "613",
                                      daytimePhoneNumber : "54835123",
                                      emailAddress : "*****@*****.**",
                                      bsbNumber : "553026",
                                      bankAccountName : "Bank of Melbourne",
                                      bankAccountNumber : "15987456"
                                      );

            Console.WriteLine("== Step: Creating employment income workpaper ==========================================================");

            var employmentIncomeWorkpaperFactory = new EmploymentIncomeRepository(client);
            await employmentIncomeWorkpaperFactory.CreateAsync(taxpayer.Id,
                                                               taxYear,
                                                               employerName : "Cloud IT Specialists",
                                                               governmentIdentifier : "",
                                                               salaryAndWagesIncome : 36690m,
                                                               salaryAndWagesTaxWithheld : -21300m,
                                                               allowanceIncome : 310m
                                                               );

            Console.WriteLine("== Step: Creating declarations workpaper ==========================================================");

            var declarationsWorkpaperFactory = new DeclarationsRepository(client);
            await declarationsWorkpaperFactory.CreateAsync(taxpayer.Id,
                                                           taxYear,
                                                           taxAgentNumber : "",
                                                           taxAgentAbn : "",
                                                           taxAgentDeclarationStatementAccepted : true,
                                                           taxAgentContactFirstName : "Jason",
                                                           taxAgentContactLastName : "Campbell",
                                                           taxAgentContactPhoneAreaCode : "03",
                                                           taxAgentContactPhoneNumber : "88435751",
                                                           taxAgentClientReference : "CR010011JC",
                                                           taxPayerDeclarationStatementAccepted : true,
                                                           taxAgentSignatureFirstName : "John",
                                                           taxAgentSignatureLastName : "Citizen"
                                                           );

            return(taxpayer);
        }
        public async Task <TaxpayerDto> CreateAsync(TaxlabApiClient client)
        {
            const string firstName     = "John";
            const string lastName      = "Citizen";
            const string taxFileNumber = "32989432";
            const int    taxYear       = 2021;
            var          balanceDate   = new LocalDate(2021, 6, 30);
            var          startDate     = balanceDate.PlusYears(-1).PlusDays(-1);

            Console.WriteLine("== Step: Creating taxpayer ==========================================================");
            var taxpayerService  = new TaxpayerRepository(client);
            var taxpayerResponse = await taxpayerService.CreateAsync(taxYear,
                                                                     firstName,
                                                                     lastName,
                                                                     taxFileNumber);

            var taxpayer = taxpayerResponse.Content;

            client.TaxpayerId = taxpayer.Id;
            client.Taxyear    = taxYear;

            Console.WriteLine("== Step: Creating tax return ==========================================================");
            var taxReturnRepository = new TaxReturnRepository(client);
            var taxReturnResponse   = await taxReturnRepository.CreateAsync(taxpayer.Id,
                                                                            taxYear,
                                                                            balanceDate,
                                                                            startDate);

            Console.WriteLine("== Step: Creating Uniform workpaper ==========================================================");
            var deductionWorkpaper = new OtherDeductionRepository(client);
            await deductionWorkpaper.CreateAsync(taxpayer.Id,
                                                 taxYear,
                                                 -180m,
                                                 ReturnDisclosureTypes.AUIndividualWorkRelatedClothingProtective,
                                                 "Nice looking uniform"
                                                 );

            if (taxReturnResponse.Success == false)
            {
                throw new Exception(taxReturnResponse.Message);
            }

            var listOfDeductionTypes = new Dictionary <ReturnDisclosureTypes, string>();

            listOfDeductionTypes.Add(ReturnDisclosureTypes.AUIndividualCostOfManagingTaxAffairsATOInterest, "Interest charged by the ATO");
            listOfDeductionTypes.Add(ReturnDisclosureTypes.AUIndividualCostOfManagingTaxAffairsLitigation, "Litigation costs");
            listOfDeductionTypes.Add(ReturnDisclosureTypes.AUIndividualCostOfManagingTaxAffairsOther, "Other expenses incurred in managing your tax affairs");
            listOfDeductionTypes.Add(ReturnDisclosureTypes.DepreciationPool, "Deduction for project pool");
            listOfDeductionTypes.Add(ReturnDisclosureTypes.AUIndividualDividendDeductions, "Dividend deductions");
            listOfDeductionTypes.Add(ReturnDisclosureTypes.FarmingIncomeRepaymentsDeposits, "Deductible deposits");
            listOfDeductionTypes.Add(ReturnDisclosureTypes.AUIndividualForestryManagement, "Forestry managed investment");
            listOfDeductionTypes.Add(ReturnDisclosureTypes.AUIndividualGiftsOrDonations, "Gifts or donations");
            listOfDeductionTypes.Add(ReturnDisclosureTypes.AUIndividualInterestDeductions, "Interest deductions");
            listOfDeductionTypes.Add(ReturnDisclosureTypes.AUIndividualLowValuePoolDeductionOther, "Other low value pool deductions");
            listOfDeductionTypes.Add(ReturnDisclosureTypes.AUIndividualLowValuePoolDeductionFinancialInvestment, "Relating to financial Investment");
            listOfDeductionTypes.Add(ReturnDisclosureTypes.AUIndividualLowValuePoolDeductionRentalPool, "Relating to rental property");
            listOfDeductionTypes.Add(ReturnDisclosureTypes.AUInvestmentIncomeDeduction, "Deduction relating to financial investment");
            listOfDeductionTypes.Add(ReturnDisclosureTypes.AUIndividualElectionExpenses, "Election expenses");
            listOfDeductionTypes.Add(ReturnDisclosureTypes.InsurancePremiumDeduction, "Income protection, sickness and accident insurance premiums");
            listOfDeductionTypes.Add(ReturnDisclosureTypes.OtherDeductibleExpenses, "Other deductible expenses");
            listOfDeductionTypes.Add(ReturnDisclosureTypes.AUIndividualWorkRelatedClothingUniformCompulsory, "Compulsory uniform");
            listOfDeductionTypes.Add(ReturnDisclosureTypes.AUIndividualWorkRelatedClothingUniformNonCompulsory, "Non-compulsory uniform");
            listOfDeductionTypes.Add(ReturnDisclosureTypes.AUIndividualWorkRelatedClothingOccupationSpecific, "Occupation-specific clothing");
            listOfDeductionTypes.Add(ReturnDisclosureTypes.AUIndividualWorkRelatedClothingProtective, "Protective clothing");
            listOfDeductionTypes.Add(ReturnDisclosureTypes.AUIndividualWorkRelatedTravelExpenses, "Work-related travel expenses");
            listOfDeductionTypes.Add(ReturnDisclosureTypes.AUIndividualOtherWorkRelatedExpenses, "Other work-related expenses");

            foreach (var item in listOfDeductionTypes)
            {
                await AddWorkpaper(client, taxYear, taxpayer.Id, item.Key, item.Value);

                await Task.Delay(2000);
            }

            return(taxpayer);
        }
 public ForeignPensionOrAnnuityRepository(TaxlabApiClient client) : base(client)
 {
 }
 public TaxReturnRepository(TaxlabApiClient client) : base(client)
 {
 }
        public async Task <TaxpayerDto> CreateAsync(TaxlabApiClient client)
        {
            Console.WriteLine("== Step: Getting Country Lookups ==========================================================");
            var lookups      = new LookupsRepository(client);
            var lookupsArray = await lookups.GetAllLookups();

            ICollection <BaseLookupMapperItem> countryLookup = new List <BaseLookupMapperItem>();

            var countryListFetched = lookupsArray.Lookups.TryGetValue("Common/RegionLookups/CountryCodes", out countryLookup);

            if (countryListFetched)
            {
                Console.WriteLine($"== Country Lookup count: {countryLookup.Count} fetched==========================================================");
            }
            else
            {
                Console.WriteLine($"== Check Lookup call ==========================================================");
            }

            const int    taxYear          = 2021;
            var          balanceDate      = new LocalDate(2021, 6, 30);
            var          startDate        = balanceDate.PlusYears(-1).PlusDays(-1);
            const string firstName        = "Johnny";
            const string lastName         = "Citizen";
            const string taxFileNumber    = "32989432";
            var          taxpayerResponse = await CreateTaxpayer(client, firstName, lastName, taxFileNumber);

            var taxpayer = taxpayerResponse.Content;

            Console.WriteLine("== Step: Creating employment income workpaper ==========================================================");

            var employmentIncomeWorkpaperFactory = new EmploymentIncomeRepository(client);
            await employmentIncomeWorkpaperFactory.CreateAsync(taxpayer.Id,
                                                               taxYear,
                                                               employerName : "ABC Company Limited",
                                                               governmentIdentifier : "",
                                                               salaryAndWagesIncome : 343434m,
                                                               salaryAndWagesTaxWithheld : -213400m,
                                                               allowanceIncome : 310m
                                                               );

            Console.WriteLine("== Step: Creating dividend income workpaper ==========================================================");

            var dividendWorkpaperFactory = new DividendIncomeRepository(client);
            await dividendWorkpaperFactory.CreateAsync(taxpayer.Id,
                                                       taxYear,
                                                       "ABC Company Limited",
                                                       "123456789",
                                                       1,
                                                       1000m,
                                                       200m,
                                                       300m,
                                                       -10m);

            Console.WriteLine("== Step: Creating interest income workpaper ==========================================================");
            var interestWorkpaperFactory = new InterestIncomeRepository(client);
            await interestWorkpaperFactory.CreateAsync(taxpayer.Id,
                                                       taxYear,
                                                       "Our financial institution name",
                                                       "123456789",
                                                       1,
                                                       1000m,
                                                       -200m);

            Console.WriteLine("== Step: Creating supercontribution workpaper ==========================================================");
            var personalSuperannuationContributionFactory = new PersonalSuperannuationContributionRepository(client);
            await personalSuperannuationContributionFactory.CreateAsync(taxpayer.Id,
                                                                        taxYear,
                                                                        "XYZ Company Limited",
                                                                        "123456789",
                                                                        "9867565423",
                                                                        "5235423423423",
                                                                        balanceDate,
                                                                        10000m,
                                                                        true
                                                                        );

            Console.WriteLine("== Step: Creating Government Allowance workpaper ==========================================================");
            var governmentAllowanceFactory = new GovernmentAllowanceRepository(client);
            await governmentAllowanceFactory.CreateAsync(taxpayer.Id,
                                                         taxYear,
                                                         "Allowance",
                                                         "testDescription",
                                                         1000m,
                                                         1000m
                                                         );

            Console.WriteLine("== Step: Creating Government Pension workpaper ==========================================================");
            var governmentPensionFactory = new GovernmentPensionRepository(client);
            await governmentPensionFactory.CreateAsync(taxpayer.Id,
                                                       taxYear,
                                                       "testDescription",
                                                       1000m,
                                                       1000m
                                                       );

            Console.WriteLine("== Step: Creating donation deduction workpaper ==========================================================");
            var chartiableDonation = new OtherDeductionRepository(client);
            await chartiableDonation.CreateAsync(taxpayer.Id,
                                                 taxYear,
                                                 -10000m,
                                                 ReturnDisclosureTypes.AUIndividualGiftsOrDonations
                                                 );

            Console.WriteLine("== Step: Creating other deduction workpaper ==========================================================");
            var expense = new OtherDeductionRepository(client);
            await expense.CreateAsync(taxpayer.Id,
                                      taxYear,
                                      -10000m,
                                      ReturnDisclosureTypes.AUDividend
                                      );

            Console.WriteLine("== Step: Creating declarations workpaper ==========================================================");

            var declarationsWorkpaperFactory = new DeclarationsRepository(client);
            await declarationsWorkpaperFactory.CreateAsync(taxpayer.Id,
                                                           taxYear,
                                                           taxAgentNumber : "",
                                                           taxAgentAbn : "",
                                                           taxAgentDeclarationStatementAccepted : true,
                                                           taxAgentContactFirstName : "Jason",
                                                           taxAgentContactLastName : "Campbell",
                                                           taxAgentContactPhoneAreaCode : "03",
                                                           taxAgentContactPhoneNumber : "88435751",
                                                           taxAgentClientReference : "CR010011JC",
                                                           taxPayerDeclarationStatementAccepted : true,
                                                           taxAgentSignatureFirstName : "John",
                                                           taxAgentSignatureLastName : "Citizen"
                                                           );

            Console.WriteLine("== Step: Creating rental property workpaper ==========================================================");

            var rentalPropertyWorkpaperFactory = new RentalPropertyRepository(client);

            var rentalPropertyInformation = new RentalPropertyInformation
            {
                Description           = "Rental property 1",
                OfficialName          = null,
                AddressLine1          = "3 Savannah Ct",
                AddressLine2          = null,
                AddressSuburb         = "Hillside",
                AddressState          = "VIC",
                AddressPostcode       = "3037",
                DateFirstEarnedIncome = "2017-03-15",
                PurchaseDate          = "2017-01-10",
                PurchasePrice         = new NumericCell
                {
                    Value   = 4900000,
                    Formula = "4900000"
                },
                SaleDate  = null,
                SalePrice = new NumericCell(),
                CapitalGainOrLossOnSale         = new NumericCell(),
                CapitalAllowancesRecoupedOnSale = new NumericCell(),
                CapitalWorksRecoupedOnSale      = new NumericCell(),
                Status = RentalPropertyStatus.Active,
                LoanRenegotiatedIndicator = false
            };

            var rentalIncome = new RentalTransactionCollectionOfNumericCellAndDecimal
            {
                Description        = "Rental Income",
                Total              = 216000,
                Mine               = 151200,
                RentalTransactions = new List <RentalTransactionOfNumericCellAndDecimal>
                {
                    new RentalTransactionOfNumericCellAndDecimal {
                        Description = "example rent",
                        Total       = new NumericCell
                        {
                            Value   = 216000,
                            Formula = "216000"
                        },
                        Mine = 151200
                    }
                }
            };

            var otherIncome = new RentalTransactionCollectionOfNumericCellAndDecimal
            {
                Description        = "Other Income",
                Total              = 700,
                Mine               = 490,
                RentalTransactions = new List <RentalTransactionOfNumericCellAndDecimal>
                {
                    new RentalTransactionOfNumericCellAndDecimal {
                        Description = "example other income",
                        Total       = new NumericCell
                        {
                            Value   = 700,
                            Formula = "700"
                        },
                        Mine = 490
                    }
                }
            };

            var insurance = new RentalTransactionCollectionOfNumericCellAndDecimal
            {
                Description = "Insurance",
                //Total = 216000,
                //Mine = 151200,
                RentalTransactions = new List <RentalTransactionOfNumericCellAndDecimal>
                {
                    new RentalTransactionOfNumericCellAndDecimal {
                        Description = "Insurance",
                        Total       = new NumericCell
                        {
                            //Value = 216000,
                            Formula = "700"
                        },
                        //Mine = 151200
                    }
                }
            };

            var grossIncome = new RentalTransactionOfDecimalAndDecimal
            {
                Description = "Gross Income",
                Total       = 216700,
                Mine        = 151690
            };

            var interestOnLoans = new RentalTransactionCollectionOfNumericCellAndNumericCell
            {
                Description        = "Interest On Loans",
                Total              = -78479,
                Mine               = -2480,
                RentalTransactions = new List <RentalTransactionOfNumericCellAndNumericCell>
                {
                    new RentalTransactionOfNumericCellAndNumericCell {
                        Description = "example loan 1",
                        Total       = new NumericCell
                        {
                            Value   = -48024,
                            Formula = "-48024"
                        },
                        Mine = new NumericCell
                        {
                            Value   = 0,
                            Formula = "0"
                        },
                    },
                    new RentalTransactionOfNumericCellAndNumericCell {
                        Description = "example loan 2",
                        Total       = new NumericCell
                        {
                            Value   = -30455,
                            Formula = "-30455"
                        },
                        Mine = new NumericCell
                        {
                            Value   = -2480,
                            Formula = "-2480"
                        },
                    }
                }
            };

            await rentalPropertyWorkpaperFactory.CreateAsync(taxpayer.Id,
                                                             taxYear,
                                                             $"{firstName} {lastName}",
                                                             rentalPropertyInformation,
                                                             rentalIncome,
                                                             otherIncome,
                                                             grossIncome,
                                                             null,
                                                             null,
                                                             null,
                                                             null,
                                                             null,
                                                             null,
                                                             null,
                                                             null,
                                                             insurance,
                                                             interestOnLoans,
                                                             null,
                                                             null,
                                                             null,
                                                             null,
                                                             null,
                                                             null,
                                                             null,
                                                             null,
                                                             null,
                                                             0,
                                                             0,
                                                             0.7m,
                                                             1m
                                                             ).ConfigureAwait(false);

            Console.WriteLine("== Step: Get rental summary property workpaper ==========================================================");
            var rentalSummaryWorkpaper = await new RentalPropertiesSummaryRepository(client).GetRentalSummaryWorkpaperAsync(taxpayer.Id, taxYear).ConfigureAwait(false);

            return(taxpayer);
        }
 public EmploymentIncomeRepository(TaxlabApiClient client) : base(client)
 {
 }
Example #26
0
        public async Task <TaxpayerDto> CreateAsync(TaxlabApiClient client)
        {
            Console.WriteLine("== Step: Getting Country Lookups ==========================================================");
            var lookups      = new LookupsRepository(client);
            var lookupsArray = await lookups.GetAllLookups();

            ICollection <BaseLookupMapperItem> countryLookup = new List <BaseLookupMapperItem>();

            var countryListFetched = lookupsArray.Lookups.TryGetValue("Common/RegionLookups/CountryCodes", out countryLookup);

            if (countryListFetched)
            {
                Console.WriteLine($"== Country Lookup count: {countryLookup.Count} fetched==========================================================");
            }
            else
            {
                Console.WriteLine($"== Check Lookup call ==========================================================");
            }

            const int taxYear     = 2021;
            var       balanceDate = new LocalDate(2021, 6, 30);
            var       startDate   = balanceDate.PlusYears(-1).PlusDays(-1);

            Console.WriteLine("== Step: Creating taxpayer ==========================================================");
            var taxpayerResponse = await CreateTaxpayer(client, "Johnny", "NzCitizen", "565852125");

            var taxpayer = taxpayerResponse.Content;

            var spouseTaxpayerResponse = await CreateTaxpayer(client, "Mary", "NzCitizen", "329823432");

            var spouseTaxpayer = spouseTaxpayerResponse.Content;

            Console.WriteLine("== Step: Creating declarations workpaper ==========================================================");
            var declarationsWorkpaperFactory = new DeclarationsRepository(client);
            await declarationsWorkpaperFactory.CreateAsync(taxpayer.Id,
                                                           taxYear,
                                                           taxAgentNumber : "",
                                                           taxAgentAbn : "",
                                                           taxAgentDeclarationStatementAccepted : true,
                                                           taxAgentContactFirstName : "Jason",
                                                           taxAgentContactLastName : "Campbell",
                                                           taxAgentContactPhoneAreaCode : "03",
                                                           taxAgentContactPhoneNumber : "88435751",
                                                           taxAgentClientReference : "CR010011JC",
                                                           taxPayerDeclarationStatementAccepted : true,
                                                           taxAgentSignatureFirstName : "Johnny",
                                                           taxAgentSignatureLastName : "NzCitizen"
                                                           );

            Console.WriteLine("== Step: Populating spouse workpaper ==========================================================");
            var spouse = new SpouseRepository(client);
            await spouse.CreateAsync(taxpayer.Id,
                                     taxYear,
                                     LinkedSpouseTaxpayerId : spouseTaxpayer.Id,
                                     IsMarriedFullYear : false,
                                     MarriedFrom : startDate,
                                     MarriedTo : startDate.PlusDays(100),
                                     HasDiedThisYear : false
                                     );

            return(taxpayer);
        }
 public EmploymentTerminationPaymentRepository(TaxlabApiClient client) : base(client)
 {
 }
 public LookupsRepository(TaxlabApiClient client) : base(client)
 {
 }
Example #29
0
 public GovernmentPensionRepository(TaxlabApiClient client) : base(client)
 {
 }
Example #30
0
        public async Task <TaxpayerDto> CreateAsync(TaxlabApiClient client, string firstName, string lastName, string taxFileNumber, int taxYear)
        {
            var balanceDate = new LocalDate(taxYear, 6, 30);
            var startDate   = balanceDate.PlusYears(-1).PlusDays(-1);

            Console.WriteLine("== Step: Creating taxpayer ==========================================================");
            var taxpayerService  = new TaxpayerRepository(client);
            var taxpayerResponse = await taxpayerService.CreateAsync(taxYear,
                                                                     firstName,
                                                                     lastName,
                                                                     taxFileNumber);

            var taxpayer = taxpayerResponse.Content;

            client.TaxpayerId = taxpayer.Id;
            client.Taxyear    = taxYear;

            Console.WriteLine("== Step: Creating tax return ==========================================================");
            var taxReturnRepository = new TaxReturnRepository(client);
            var taxReturnResponse   = await taxReturnRepository.CreateAsync(taxpayer.Id,
                                                                            taxYear,
                                                                            balanceDate,
                                                                            startDate);

            if (taxReturnResponse.Success == false)
            {
                throw new Exception(taxReturnResponse.Message);
            }

            Console.WriteLine("== Step: Creating Capital Gains workpaper ==========================================================");
            var rentalPropertySale = new CapitalGainOrLossTransactionRepository(client);
            await rentalPropertySale.CreateAsync(taxpayerId : taxpayer.Id,
                                                 taxYear : taxYear,
                                                 description : "Real estate in AU",
                                                 category : "5",
                                                 purchaseDate : new LocalDate(2019, 5, 1),
                                                 purchaseAmount : 10000m,
                                                 purchaseAdjustment : 0m,
                                                 disposalDate : new LocalDate(2021, 5, 31),
                                                 disposalAmount : 130000m,
                                                 discountAmount : 0m,
                                                 currentYearLossApplied : -1000,
                                                 priorLossApplied : -27915.64m,
                                                 capitalLossesTransferredInApplied : -10000,
                                                 isEligibleForDiscount : true,
                                                 isEligibleForActiveAssetReduction : true,
                                                 isEligibleForRetirementExemption : true,
                                                 retirementExemptionAmount : -5000,
                                                 isEligibleForRolloverConcession : true,
                                                 rolloverConcessionAmount : -3000
                                                 );

            Console.WriteLine("== Step: Creating another Capital Gains workpaper ==========================================================");
            var shareSale = new CapitalGainOrLossTransactionRepository(client);
            await shareSale.CreateAsync(taxpayerId : taxpayer.Id,
                                        taxYear : taxYear,
                                        description : "Shares on ASX",
                                        category : "1",
                                        purchaseDate : new LocalDate(2019, 5, 1),
                                        purchaseAmount : 2000m,
                                        disposalDate : new LocalDate(2021, 5, 31),
                                        disposalAmount : 85896.52m,
                                        priorLossApplied : -1000m,
                                        isEligibleForDiscount : true
                                        );

            Console.WriteLine("== Step: Populating taxpayer details workpaper ==========================================================");
            var details = new TaxpayerDetailsRepository(client);
            await details.CreateAsync(taxpayer.Id,
                                      taxYear,
                                      dateOfBirth : new LocalDate(1975, 4, 12),
                                      dateOfDeath : new LocalDate(2020, 12, 31),
                                      finalReturn : true,
                                      mobilePhoneNumber : "0402698741",
                                      daytimeAreaPhoneCode : "613",
                                      daytimePhoneNumber : "54835123",
                                      emailAddress : "*****@*****.**",
                                      bsbNumber : "553026",
                                      bankAccountName : "Bank of Melbourne",
                                      bankAccountNumber : "15987456"
                                      );

            Console.WriteLine("== Step: Creating declarations workpaper ==========================================================");
            var declarationsWorkpaperFactory = new DeclarationsRepository(client);
            await declarationsWorkpaperFactory.CreateAsync(taxpayer.Id,
                                                           taxYear,
                                                           taxAgentNumber : "",
                                                           taxAgentAbn : "",
                                                           taxAgentDeclarationStatementAccepted : true,
                                                           taxAgentContactFirstName : "Jason",
                                                           taxAgentContactLastName : "Campbell",
                                                           taxAgentContactPhoneAreaCode : "03",
                                                           taxAgentContactPhoneNumber : "88435751",
                                                           taxAgentClientReference : "CR010011JC",
                                                           taxPayerDeclarationStatementAccepted : true,
                                                           taxAgentSignatureFirstName : "John",
                                                           taxAgentSignatureLastName : "Citizen"
                                                           );

            return(taxpayer);
        }