Interface TaxModel

All Superinterfaces:
Serializable
All Known Implementing Classes:
GenericTaxModel, NorwegianTaxModel

public interface TaxModel extends Serializable
Interface for country-specific tax model calculations.

This interface defines the contract for calculating taxes and deductions under any fiscal regime. Implementations handle the specific rules for different countries and regions.

Implementations

Example Usage

// Get tax model for a country
TaxModel model = TaxModelRegistry.createModel("NO");

// Calculate tax
TaxModel.TaxResult result = model.calculateTax(500.0, 100.0, 80.0, 44.0);
System.out.println("Total tax: " + result.getTotalTax());
System.out.println("After-tax income: " + result.getAfterTaxIncome());
Version:
1.0
Author:
ESOL
See Also:
  • Method Details

    • getParameters

      FiscalParameters getParameters()
      Gets the fiscal parameters for this model.
      Returns:
      fiscal parameters
    • getCountryCode

      String getCountryCode()
      Gets the country code.
      Returns:
      country code
    • getCountryName

      String getCountryName()
      Gets the country name.
      Returns:
      country name
    • calculateTax

      TaxModel.TaxResult calculateTax(double grossRevenue, double opex, double depreciation, double uplift)
      Calculates tax for a single year.
      Parameters:
      grossRevenue - total revenue for the year
      opex - operating expenditure for the year
      depreciation - depreciation deduction for the year
      uplift - uplift/incentive deduction for the year
      Returns:
      tax calculation result
    • calculateDepreciation

      double calculateDepreciation(double capex, int year)
      Calculates annual depreciation.
      Parameters:
      capex - total capital expenditure
      year - year number (1 = first year of depreciation)
      Returns:
      depreciation amount for the specified year
    • calculateUplift

      double calculateUplift(double capex, int year)
      Calculates uplift/investment incentive deduction.
      Parameters:
      capex - total capital expenditure
      year - year number (1 = first year of eligibility)
      Returns:
      uplift amount for the specified year
    • calculateRoyalty

      double calculateRoyalty(double grossRevenue)
      Calculates royalty on gross revenue.
      Parameters:
      grossRevenue - total revenue for the year
      Returns:
      royalty amount
    • calculateEffectiveTaxRate

      double calculateEffectiveTaxRate(double grossRevenue, double opex, double depreciation, double uplift)
      Calculates the effective tax rate.
      Parameters:
      grossRevenue - total revenue
      opex - operating expenditure
      depreciation - depreciation deduction
      uplift - uplift deduction
      Returns:
      effective tax rate (0-1)
    • getTotalMarginalTaxRate

      double getTotalMarginalTaxRate()
      Gets the total marginal tax rate.
      Returns:
      sum of all tax rates (0-1)
    • reset

      void reset()
      Resets any accumulated state (loss carry-forward, etc.).
    • getLossCarryForward

      double getLossCarryForward()
      Gets the current loss carry-forward balance.
      Returns:
      loss carry-forward amount