public async Task <WorkpaperResponseOfRentalPropertyWorkpaper> CreateAsync( Guid taxpayerId, int taxYear, string taxpayerName = "", RentalPropertyInformation rentalPropertyInformation = null, RentalTransactionCollectionOfNumericCellAndDecimal rentalIncome = null, RentalTransactionCollectionOfNumericCellAndDecimal otherIncome = null, RentalTransactionOfDecimalAndDecimal grossIncome = null, RentalTransactionCollectionOfNumericCellAndDecimal advertising = null, RentalTransactionCollectionOfNumericCellAndDecimal bodyCorporate = null, RentalTransactionCollectionOfNumericCellAndDecimal borrowingExpenses = null, RentalTransactionCollectionOfNumericCellAndDecimal cleaning = null, RentalTransactionCollectionOfNumericCellAndDecimal councilRates = null, RentalTransactionCollectionOfNumericCellAndDecimal capitalAllowances = null, RentalTransactionCollectionOfNumericCellAndDecimal capitalWorks = null, RentalTransactionCollectionOfNumericCellAndDecimal gardening = null, RentalTransactionCollectionOfNumericCellAndDecimal insurance = null, RentalTransactionCollectionOfNumericCellAndNumericCell interestOnLoans = null, RentalTransactionCollectionOfNumericCellAndDecimal landTax = null, RentalTransactionCollectionOfNumericCellAndDecimal legalFees = null, RentalTransactionCollectionOfNumericCellAndDecimal pestControl = null, RentalTransactionCollectionOfNumericCellAndDecimal agentFees = null, RentalTransactionCollectionOfNumericCellAndDecimal repairsAndMaintenance = null, RentalTransactionCollectionOfNumericCellAndDecimal stationeryPhonePostage = null, RentalTransactionCollectionOfNumericCellAndDecimal travelExpenses = null, RentalTransactionCollectionOfNumericCellAndDecimal waterCharges = null, RentalTransactionCollectionOfNumericCellAndDecimal sundryExpenses = null, int weeksRented = 0, int weeksAvailableForRent = 0, decimal ownershipPercentageMine = 0m, decimal ownershipPercentageTotal = 0m) { var createRentalPropertyCommand = new CreateRentalPropertyWorkpaperCommand() { TaxpayerId = taxpayerId, TaxYear = taxYear, }; var createRentalPropertyResponse = await Client.Workpapers_CreateRentalPropertyWorkpaperAsync(createRentalPropertyCommand) .ConfigureAwait(false); var getWorkpaperResponse = await GetRentalPropertyWorkpaperAsync(taxpayerId, taxYear, createRentalPropertyResponse); var workpaper = getWorkpaperResponse.Workpaper; workpaper.RentalPropertyInformation = rentalPropertyInformation; workpaper.RentalPropertyIncomeExpenses = new RentalPropertyIncomeExpenses { TaxpayerId = taxpayerId, TaxpayerName = taxpayerName, WeeksRented = weeksRented, WeeksAvailableForRent = weeksAvailableForRent, OwnershipPercentageMine = ownershipPercentageMine, OwnershipPercentageTotal = ownershipPercentageTotal, RentalIncome = rentalIncome ?? workpaper.RentalPropertyIncomeExpenses.RentalIncome, OtherIncome = otherIncome ?? workpaper.RentalPropertyIncomeExpenses.OtherIncome, GrossIncome = grossIncome ?? workpaper.RentalPropertyIncomeExpenses.GrossIncome, Advertising = advertising ?? workpaper.RentalPropertyIncomeExpenses.Advertising, BodyCorporate = bodyCorporate ?? workpaper.RentalPropertyIncomeExpenses.BodyCorporate, BorrowingExpenses = borrowingExpenses ?? workpaper.RentalPropertyIncomeExpenses.BorrowingExpenses, Cleaning = cleaning ?? workpaper.RentalPropertyIncomeExpenses.Cleaning, CouncilRates = councilRates ?? workpaper.RentalPropertyIncomeExpenses.CouncilRates, CapitalAllowances = capitalAllowances ?? workpaper.RentalPropertyIncomeExpenses.CapitalAllowances, CapitalWorks = capitalWorks ?? workpaper.RentalPropertyIncomeExpenses.CapitalWorks, Gardening = gardening ?? workpaper.RentalPropertyIncomeExpenses.Gardening, Insurance = insurance ?? workpaper.RentalPropertyIncomeExpenses.Insurance, InterestOnLoans = interestOnLoans ?? workpaper.RentalPropertyIncomeExpenses.InterestOnLoans, LandTax = landTax ?? workpaper.RentalPropertyIncomeExpenses.LandTax, LegalFees = legalFees ?? workpaper.RentalPropertyIncomeExpenses.LegalFees, PestControl = pestControl ?? workpaper.RentalPropertyIncomeExpenses.PestControl, AgentFees = agentFees ?? workpaper.RentalPropertyIncomeExpenses.AgentFees, RepairsAndMaintenance = repairsAndMaintenance ?? workpaper.RentalPropertyIncomeExpenses.RepairsAndMaintenance, StationeryPhonePostage = stationeryPhonePostage ?? workpaper.RentalPropertyIncomeExpenses.StationeryPhonePostage, TravelExpenses = travelExpenses ?? workpaper.RentalPropertyIncomeExpenses.TravelExpenses, WaterCharges = waterCharges ?? workpaper.RentalPropertyIncomeExpenses.WaterCharges, SundryExpenses = sundryExpenses ?? workpaper.RentalPropertyIncomeExpenses.SundryExpenses, NetRent = workpaper.RentalPropertyIncomeExpenses.NetRent, OtherDeductions = workpaper.RentalPropertyIncomeExpenses.OtherDeductions, TotalDeductions = workpaper.RentalPropertyIncomeExpenses.TotalDeductions }; // Update command for our new workpaper var upsertCommand = new UpsertRentalPropertyWorkpaperCommand() { TaxpayerId = taxpayerId, TaxYear = taxYear, DocumentIndexId = getWorkpaperResponse.DocumentIndexId, CompositeRequest = true, WorkpaperType = WorkpaperType.RentalPropertyWorkpaper, Workpaper = getWorkpaperResponse.Workpaper }; var upsertResponse = await Client.Workpapers_PostRentalPropertyWorkpaperAsync(upsertCommand) .ConfigureAwait(false); return(upsertResponse); }
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); }