Calculation Rules

The Sub Calculate rule section is the core of the tax calculations. It consists of many subroutines to perform various calculations. For example, the system starts by pulling data from prior year balances as the opening balances for the current year. The system automatically reconciles between Trial Balance data and Book data to ensure that the correct starting point for tax provisioning is the adjusted Trial Balance total. It then runs the tax automation process to set up data in the permanent and temporary difference accounts, as well as other tax accounts. The system calculates tax losses and credits for national provision. It also calculates Return to Accrual adjustments and other adjustments. The appropriate tax rate is applied to each account to calculate the tax expense for the period.

Tax calculations are performed at the parent Entity level only if the entity has the TaxCalc user-defined property set to Yes. Otherwise, tax calculations will not be performed.

The following calculations will be performed for all entities if the accounts are valid for data entry.

  • Calculate Opening Balances

  • Calculate RTA for Temporary Difference accounts

  • Calculate Auto Adjustments

  • Calculate Automation values

  • Calculate Tax Losses and Credits (by expiration year)

The following calculations will be performed for entities where tax calculation is enabled for both the parent and base entity.

  • Core tax calculations

  • TARF calculations

  • Validations

  • FIN18 calculations

The following table shows valid accounts for entities. When the account is valid, it is considered for calculations.

 Parent EntityBase Entity
Account has a group assignedNo Groups assigned to entity - No

Group assigned to entity:

  • Group Match - Yes

  • Group does not match - No

No Groups assigned to entity - Valid

Group assigned to entity:

  • Group Match - Valid

  • Group does not match:

    • Not valid, if the group is found in any of its ancestry chain

    • Valid, if the group is not found in any of its ancestry chain

Account has no group assignedNoYes

Each subroutine performs specific calculations as part of the tax provision process.

The following subroutines are called within Sub Calculate.

Sub Calculate

  • Call Calculate_ExchangeRates

  • Call Clear_ValidationCellText

  • Call Calculate_OpenBalances

  • Call Calculate_AutoAdjustment

  • Call Calculate_TaxLossesNational

  • Call Calculate_TaxCreditsNational

  • Call Calculate_RTA

  • Call Calculate_TaxAutomation

  • Call Calculate_TaxCalculations

    • Call Calculate_NatRegcoreTax

    • Call Calculate_AssetLiab

    • Call Calculate_VAAllocation

    • Call Calculate_Reclass

    • Call Calculate_TempEquity

    • Call Calculate_ETR

  • Call Calculate_TARF

  • Call Calculate_Validations

  • Call Clear_Zeros

  • Call Set_ImpactStatus

Chart of calculation subroutines

Additional details for each subroutine:

  • Sub Calculate ActiveRegion

    Determine if region is active if at least one of the three regional tax rates is entered.

  • Sub Calculate_AssetLiab

    Determine whether deferred tax is Asset or Liability.

    Determine whether deferred tax is Current or Non-Current.

  • Sub Calculate_AutoAdjustments

    Calculate Auto Adjustments to reconcile between Book and Trial Balance data.

  • Sub Calculate_BlendedTaxApportionment

    Calculate blended tax apportionment for the blended region.

    Set blended tax apportionment at 100% if no regional apportionment is entered.

  • Sub Calculate_BVTCoreTax

    Perform tax calculations for BVT accounts.

    Flow of BVT core tax calculations:

    • If there is no linked account specified for the BVT account, then tax calculations are not performed.

    • Current BVT account should be valid for AllBVTTax DataCategory member and BVTTaxCalc RollForward member.

    • If the linked account is tax effected, no tax rate is applied.

    • If there is no override tax rate specified for the linked account, then the Current/NonCurrent closing tax rate (based on the linked account) is applied, and if no closing rate is specified, it is skipped.

    • NBR is calculated based on the linked account property. If the linked account has NBR - Yes, then NBR is calculated; otherwise, NBR is skipped.

    • Calculations are translated at the closing rate.

  • Sub Calculate_ExchangeRates

    Obtain Opening Exchange Rates from prior year's closing rates.

    Set up the Exchange Rates to use for translation.

    Sub Calculate_Exchange Rates runs from Sub Calculate.

  • Sub Calculate_ETR

    Compute the Statutory, Regional, and Consolidated Effective Tax Rate.

    Set blended tax apportionment at 100% if no regional apportionment is entered.

  • Sub Calculate_OpeningBalances

    Calculate Opening Balances for Trial Balance/Book/Tax data.

    Opening balances are retrieved from prior year's closing balances.

    Opening balances for the current Scenario / Year / Period Closing balances are pulled from different Scenario, Year and Period by satisfying the below conditions.

    • If there is no dynamic Scenario specified using the Opening Balances custom screen, then the Scenario member specified in the UD property("SrcSc") will be considered. If there is no member specified in the UD property, then the current Scenario member will be used.

    • If there is no source Year specified in the UD property("SrcYr"), then the prior Year will be used.

    • If there is no source Period specified in the UD property ("SrcP"), then the last Period(P12) will be used.

    After populating the Opening Balances for the current scenario, the appropriate dependent future scenarios status will be impacted.

    Sub Calculate_OpenBalances runs from Sub Calculate.

  • Sub Calculate_NatRegCoreTax

    Calculate National tax expense.

    Calculate rate changes from opening.

    Calculate rate changes from current period.

    Perform equity reversal.

    Perform re-class to equity movement.

    Calculate regional tax.

    NBR calculation.

    Calculate Opening rate change on NBR.

    Calculate regional taxes as deduction for national provision.

  • Sub Calculate_Reclass

    Calculate RollForward reclassification for assets and liabilities.

  • Sub Calculate_TaxAutomation

    Calculate Tax Automation.

  • Sub Calculate_TARF

    Book accounts have to enter into National Jurisdiction, but for TARF rule, read from National and write to Regional US_Blended.

    Perform Tax Account RollForward calculations.

  • Sub Calculate_TaxCreditsNational

    Calculate Tax Credits for National provision.

  • Sub Calculate_TaxLossesNational

    Calculate Tax Losses for National provision.

  • Sub Calculate_TempEquity

    Calculate temp equity accounts in TBBS.

  • Sub Calculate_VAAllocation

    Calculate Valuation Allowance allocation.

  • Sub Calculate_Validations

    Calculate following validations:

    • Validate that TaxLossCFS at CYAdj is positive.

    • Validate that TaxLossesTotal at Closing equals TaxLosses/CreditTotal at TaxLossCreditTotal.

    • Validate that CurrentTaxExpense at CY minus NDefTaxTotal at CYTotal equals to SETRTaxEffect.

    • Validate that RCurrentTaxExpense at CY minus RDefTaxTotal at CYTotal equals to RETRTotal at RETRTaxEffec.

    • Validate that CurrentTaxExpense at CY minus NDefTaxTotal at CYTotal plus RCurrentTaxExpense at CY plus RDefTaxTotal at CYTotal equals CETRTotal at CETRTaxEffect.

  • Sub Clear_ValidationCellText

    Clear all validation cell text entries written from the previous validation process.

  • Sub Clear_FXApport

    Clear generated FXCY of Apportionment.

  • Sub Clear_Zeros

    Clear all zero data entries.

  • Sub Set_ImpactStatus

    Set Impact status for future periods across years when changes are made in the last period prior year.

Placeholders for Pre and Post Custom Code Execution

The following subroutines can be used to write pre- and post logic during specific tax calculations.

  • Pre_OpenBalances()



  • Pre_RTA()



  • Pre_Taxautomation()



  • Pre_TaxCalculations()



  • Pre_TARF()



  • Pre_FIN18()



  • Pre_Validations()



Placeholder for Post Custom Code Execution

The following subroutine can be used to write post logic during currency translations.

Translate_Custom ()

You can add the custom code in the predefined subroutines for pre/post processing data before the specified calculation segment.