Interface TaxModel
- All Superinterfaces:
Serializable
- All Known Implementing Classes:
GenericTaxModel, NorwegianTaxModel
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
GenericTaxModel- Parameter-driven generic implementationNorwegianTaxModel- Legacy Norwegian-specific implementation
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:
-
Nested Class Summary
Nested ClassesModifier and TypeInterfaceDescriptionstatic classResult of a tax calculation. -
Method Summary
Modifier and TypeMethodDescriptiondoublecalculateDepreciation(double capex, int year) Calculates annual depreciation.doublecalculateEffectiveTaxRate(double grossRevenue, double opex, double depreciation, double uplift) Calculates the effective tax rate.doublecalculateRoyalty(double grossRevenue) Calculates royalty on gross revenue.calculateTax(double grossRevenue, double opex, double depreciation, double uplift) Calculates tax for a single year.doublecalculateUplift(double capex, int year) Calculates uplift/investment incentive deduction.Gets the country code.Gets the country name.doubleGets the current loss carry-forward balance.Gets the fiscal parameters for this model.doubleGets the total marginal tax rate.voidreset()Resets any accumulated state (loss carry-forward, etc.).
-
Method Details
-
getParameters
FiscalParameters getParameters()Gets the fiscal parameters for this model.- Returns:
- fiscal parameters
-
getCountryCode
-
getCountryName
-
calculateTax
TaxModel.TaxResult calculateTax(double grossRevenue, double opex, double depreciation, double uplift) Calculates tax for a single year.- Parameters:
grossRevenue- total revenue for the yearopex- operating expenditure for the yeardepreciation- depreciation deduction for the yearuplift- uplift/incentive deduction for the year- Returns:
- tax calculation result
-
calculateDepreciation
double calculateDepreciation(double capex, int year) Calculates annual depreciation.- Parameters:
capex- total capital expenditureyear- 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 expenditureyear- 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 revenueopex- operating expendituredepreciation- depreciation deductionuplift- 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
-