@novha/calc-engines 6.3.0 → 8.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/capital-gains/brazil/BrazilCapitalGainsService.js +3 -0
- package/dist/capital-gains/brazil/BrazilCapitalGainsServiceImpl.js +56 -0
- package/dist/capital-gains/brazil/domain/types.js +3 -0
- package/dist/capital-gains/canada/CanadaCapitalGainsServiceImpl.js +29 -17
- package/dist/capital-gains/index.js +14 -2
- package/dist/capital-gains/india/IndiaCapitalGainsService.js +3 -0
- package/dist/capital-gains/india/IndiaCapitalGainsServiceImpl.js +58 -0
- package/dist/capital-gains/india/domain/types.js +3 -0
- package/dist/capital-gains/japan/JapanCapitalGainsService.js +3 -0
- package/dist/capital-gains/japan/JapanCapitalGainsServiceImpl.js +41 -0
- package/dist/capital-gains/japan/domain/types.js +3 -0
- package/dist/capital-gains/spain/SpainCapitalGainsService.js +3 -0
- package/dist/capital-gains/spain/SpainCapitalGainsServiceImpl.js +56 -0
- package/dist/capital-gains/spain/domain/types.js +3 -0
- package/dist/corporate/brazil/BrazilCorporateTaxService.js +3 -0
- package/dist/corporate/brazil/BrazilCorporateTaxServiceImpl.js +33 -0
- package/dist/corporate/brazil/domain/types.js +3 -0
- package/dist/corporate/index.js +10 -2
- package/dist/corporate/india/IndiaCorporateTaxService.js +3 -0
- package/dist/corporate/india/IndiaCorporateTaxServiceImpl.js +29 -0
- package/dist/corporate/india/domain/types.js +3 -0
- package/dist/corporate/japan/JapanCorporateTaxService.js +3 -0
- package/dist/corporate/japan/JapanCorporateTaxServiceImpl.js +29 -0
- package/dist/corporate/japan/domain/types.js +3 -0
- package/dist/corporate/spain/SpainCorporateTaxService.js +3 -0
- package/dist/corporate/spain/SpainCorporateTaxServiceImpl.js +29 -0
- package/dist/corporate/spain/domain/types.js +3 -0
- package/dist/income-tax/brazil/BrazilIncomeTaxService.js +3 -0
- package/dist/income-tax/brazil/BrazilIncomeTaxServiceImpl.js +78 -0
- package/dist/income-tax/brazil/domain/types.js +3 -0
- package/dist/income-tax/index.js +14 -2
- package/dist/income-tax/india/IndiaIncomeTaxService.js +3 -0
- package/dist/income-tax/india/IndiaIncomeTaxServiceImpl.js +75 -0
- package/dist/income-tax/india/domain/types.js +3 -0
- package/dist/income-tax/japan/JapanIncomeTaxService.js +3 -0
- package/dist/income-tax/japan/JapanIncomeTaxServiceImpl.js +75 -0
- package/dist/income-tax/japan/domain/types.js +3 -0
- package/dist/income-tax/spain/SpainIncomeTaxService.js +3 -0
- package/dist/income-tax/spain/SpainIncomeTaxServiceImpl.js +62 -0
- package/dist/income-tax/spain/domain/types.js +3 -0
- package/dist/index.js +3 -2
- package/dist/inheritance-tax/australia/AustraliaInheritanceTaxService.js +3 -0
- package/dist/inheritance-tax/australia/AustraliaInheritanceTaxServiceImpl.js +19 -0
- package/dist/inheritance-tax/australia/domain/types.js +3 -0
- package/dist/inheritance-tax/canada/CanadaInheritanceTaxService.js +3 -0
- package/dist/inheritance-tax/canada/CanadaInheritanceTaxServiceImpl.js +51 -0
- package/dist/inheritance-tax/canada/domain/types.js +3 -0
- package/dist/inheritance-tax/domain/types.js +3 -0
- package/dist/inheritance-tax/france/FranceInheritanceTaxService.js +3 -0
- package/dist/inheritance-tax/france/FranceInheritanceTaxServiceImpl.js +52 -0
- package/dist/inheritance-tax/france/domain/types.js +3 -0
- package/dist/inheritance-tax/germany/GermanyInheritanceTaxService.js +3 -0
- package/dist/inheritance-tax/germany/GermanyInheritanceTaxServiceImpl.js +52 -0
- package/dist/inheritance-tax/germany/domain/types.js +3 -0
- package/dist/inheritance-tax/index.js +31 -0
- package/dist/inheritance-tax/japan/JapanInheritanceTaxService.js +3 -0
- package/dist/inheritance-tax/japan/JapanInheritanceTaxServiceImpl.js +53 -0
- package/dist/inheritance-tax/japan/domain/types.js +3 -0
- package/dist/inheritance-tax/south-africa/SouthAfricaInheritanceTaxService.js +3 -0
- package/dist/inheritance-tax/south-africa/SouthAfricaInheritanceTaxServiceImpl.js +52 -0
- package/dist/inheritance-tax/south-africa/domain/types.js +3 -0
- package/dist/inheritance-tax/spain/SpainInheritanceTaxService.js +3 -0
- package/dist/inheritance-tax/spain/SpainInheritanceTaxServiceImpl.js +51 -0
- package/dist/inheritance-tax/spain/domain/types.js +3 -0
- package/dist/inheritance-tax/uk/UKInheritanceTaxService.js +3 -0
- package/dist/inheritance-tax/uk/UKInheritanceTaxServiceImpl.js +39 -0
- package/dist/inheritance-tax/uk/domain/types.js +3 -0
- package/dist/inheritance-tax/usa/USAInheritanceTaxService.js +3 -0
- package/dist/inheritance-tax/usa/USAInheritanceTaxServiceImpl.js +51 -0
- package/dist/inheritance-tax/usa/domain/types.js +3 -0
- package/dist/mortgage/brazil/BrazilMortgageService.js +3 -0
- package/dist/mortgage/brazil/BrazilMortgageServiceImpl.js +76 -0
- package/dist/mortgage/brazil/domain/types.js +3 -0
- package/dist/mortgage/index.js +14 -2
- package/dist/mortgage/india/IndiaMortgageService.js +3 -0
- package/dist/mortgage/india/IndiaMortgageServiceImpl.js +76 -0
- package/dist/mortgage/india/domain/types.js +3 -0
- package/dist/mortgage/japan/JapanMortgageService.js +3 -0
- package/dist/mortgage/japan/JapanMortgageServiceImpl.js +76 -0
- package/dist/mortgage/japan/domain/types.js +3 -0
- package/dist/mortgage/spain/SpainMortgageService.js +3 -0
- package/dist/mortgage/spain/SpainMortgageServiceImpl.js +96 -0
- package/dist/mortgage/spain/domain/types.js +3 -0
- package/dist/shared/domain/types.js +2 -1
- package/dist/types/capital-gains/brazil/BrazilCapitalGainsService.d.ts +4 -0
- package/dist/types/capital-gains/brazil/BrazilCapitalGainsServiceImpl.d.ts +10 -0
- package/dist/types/capital-gains/brazil/domain/types.d.ts +11 -0
- package/dist/types/capital-gains/canada/CanadaCapitalGainsServiceImpl.d.ts +1 -1
- package/dist/types/capital-gains/index.d.ts +9 -1
- package/dist/types/capital-gains/india/IndiaCapitalGainsService.d.ts +4 -0
- package/dist/types/capital-gains/india/IndiaCapitalGainsServiceImpl.d.ts +9 -0
- package/dist/types/capital-gains/india/domain/types.d.ts +9 -0
- package/dist/types/capital-gains/japan/JapanCapitalGainsService.d.ts +4 -0
- package/dist/types/capital-gains/japan/JapanCapitalGainsServiceImpl.d.ts +9 -0
- package/dist/types/capital-gains/japan/domain/types.d.ts +6 -0
- package/dist/types/capital-gains/spain/SpainCapitalGainsService.d.ts +4 -0
- package/dist/types/capital-gains/spain/SpainCapitalGainsServiceImpl.d.ts +10 -0
- package/dist/types/capital-gains/spain/domain/types.d.ts +11 -0
- package/dist/types/corporate/brazil/BrazilCorporateTaxService.d.ts +4 -0
- package/dist/types/corporate/brazil/BrazilCorporateTaxServiceImpl.d.ts +8 -0
- package/dist/types/corporate/brazil/domain/types.d.ts +19 -0
- package/dist/types/corporate/index.d.ts +9 -1
- package/dist/types/corporate/india/IndiaCorporateTaxService.d.ts +4 -0
- package/dist/types/corporate/india/IndiaCorporateTaxServiceImpl.d.ts +8 -0
- package/dist/types/corporate/india/domain/types.d.ts +15 -0
- package/dist/types/corporate/japan/JapanCorporateTaxService.d.ts +4 -0
- package/dist/types/corporate/japan/JapanCorporateTaxServiceImpl.d.ts +8 -0
- package/dist/types/corporate/japan/domain/types.d.ts +15 -0
- package/dist/types/corporate/spain/SpainCorporateTaxService.d.ts +4 -0
- package/dist/types/corporate/spain/SpainCorporateTaxServiceImpl.d.ts +8 -0
- package/dist/types/corporate/spain/domain/types.d.ts +15 -0
- package/dist/types/income-tax/brazil/BrazilIncomeTaxService.d.ts +4 -0
- package/dist/types/income-tax/brazil/BrazilIncomeTaxServiceImpl.d.ts +11 -0
- package/dist/types/income-tax/brazil/domain/types.d.ts +18 -0
- package/dist/types/income-tax/index.d.ts +9 -1
- package/dist/types/income-tax/india/IndiaIncomeTaxService.d.ts +4 -0
- package/dist/types/income-tax/india/IndiaIncomeTaxServiceImpl.d.ts +10 -0
- package/dist/types/income-tax/india/domain/types.d.ts +16 -0
- package/dist/types/income-tax/japan/JapanIncomeTaxService.d.ts +4 -0
- package/dist/types/income-tax/japan/JapanIncomeTaxServiceImpl.d.ts +10 -0
- package/dist/types/income-tax/japan/domain/types.d.ts +16 -0
- package/dist/types/income-tax/spain/SpainIncomeTaxService.d.ts +4 -0
- package/dist/types/income-tax/spain/SpainIncomeTaxServiceImpl.d.ts +10 -0
- package/dist/types/income-tax/spain/domain/types.d.ts +16 -0
- package/dist/types/index.d.ts +1 -0
- package/dist/types/inheritance-tax/australia/AustraliaInheritanceTaxService.d.ts +4 -0
- package/dist/types/inheritance-tax/australia/AustraliaInheritanceTaxServiceImpl.d.ts +8 -0
- package/dist/types/inheritance-tax/australia/domain/types.d.ts +13 -0
- package/dist/types/inheritance-tax/canada/CanadaInheritanceTaxService.d.ts +4 -0
- package/dist/types/inheritance-tax/canada/CanadaInheritanceTaxServiceImpl.d.ts +9 -0
- package/dist/types/inheritance-tax/canada/domain/types.d.ts +20 -0
- package/dist/types/inheritance-tax/domain/types.d.ts +17 -0
- package/dist/types/inheritance-tax/france/FranceInheritanceTaxService.d.ts +4 -0
- package/dist/types/inheritance-tax/france/FranceInheritanceTaxServiceImpl.d.ts +9 -0
- package/dist/types/inheritance-tax/france/domain/types.d.ts +29 -0
- package/dist/types/inheritance-tax/germany/GermanyInheritanceTaxService.d.ts +4 -0
- package/dist/types/inheritance-tax/germany/GermanyInheritanceTaxServiceImpl.d.ts +9 -0
- package/dist/types/inheritance-tax/germany/domain/types.d.ts +28 -0
- package/dist/types/inheritance-tax/index.d.ts +19 -0
- package/dist/types/inheritance-tax/japan/JapanInheritanceTaxService.d.ts +4 -0
- package/dist/types/inheritance-tax/japan/JapanInheritanceTaxServiceImpl.d.ts +9 -0
- package/dist/types/inheritance-tax/japan/domain/types.d.ts +21 -0
- package/dist/types/inheritance-tax/south-africa/SouthAfricaInheritanceTaxService.d.ts +4 -0
- package/dist/types/inheritance-tax/south-africa/SouthAfricaInheritanceTaxServiceImpl.d.ts +9 -0
- package/dist/types/inheritance-tax/south-africa/domain/types.d.ts +20 -0
- package/dist/types/inheritance-tax/spain/SpainInheritanceTaxService.d.ts +4 -0
- package/dist/types/inheritance-tax/spain/SpainInheritanceTaxServiceImpl.d.ts +9 -0
- package/dist/types/inheritance-tax/spain/domain/types.d.ts +19 -0
- package/dist/types/inheritance-tax/uk/UKInheritanceTaxService.d.ts +4 -0
- package/dist/types/inheritance-tax/uk/UKInheritanceTaxServiceImpl.d.ts +8 -0
- package/dist/types/inheritance-tax/uk/domain/types.d.ts +17 -0
- package/dist/types/inheritance-tax/usa/USAInheritanceTaxService.d.ts +4 -0
- package/dist/types/inheritance-tax/usa/USAInheritanceTaxServiceImpl.d.ts +9 -0
- package/dist/types/inheritance-tax/usa/domain/types.d.ts +19 -0
- package/dist/types/mortgage/brazil/BrazilMortgageService.d.ts +4 -0
- package/dist/types/mortgage/brazil/BrazilMortgageServiceImpl.d.ts +7 -0
- package/dist/types/mortgage/brazil/domain/types.d.ts +39 -0
- package/dist/types/mortgage/index.d.ts +9 -1
- package/dist/types/mortgage/india/IndiaMortgageService.d.ts +4 -0
- package/dist/types/mortgage/india/IndiaMortgageServiceImpl.d.ts +7 -0
- package/dist/types/mortgage/india/domain/types.d.ts +39 -0
- package/dist/types/mortgage/japan/JapanMortgageService.d.ts +4 -0
- package/dist/types/mortgage/japan/JapanMortgageServiceImpl.d.ts +7 -0
- package/dist/types/mortgage/japan/domain/types.d.ts +39 -0
- package/dist/types/mortgage/spain/SpainMortgageService.d.ts +4 -0
- package/dist/types/mortgage/spain/SpainMortgageServiceImpl.d.ts +8 -0
- package/dist/types/mortgage/spain/domain/types.d.ts +44 -0
- package/dist/types/shared/domain/types.d.ts +2 -1
- package/package.json +1 -1
- package/src/capital-gains/brazil/BrazilCapitalGainsService.ts +5 -0
- package/src/capital-gains/brazil/BrazilCapitalGainsServiceImpl.ts +69 -0
- package/src/capital-gains/brazil/domain/types.ts +15 -0
- package/src/capital-gains/canada/CanadaCapitalGainsServiceImpl.ts +34 -21
- package/src/capital-gains/index.ts +40 -0
- package/src/capital-gains/india/IndiaCapitalGainsService.ts +5 -0
- package/src/capital-gains/india/IndiaCapitalGainsServiceImpl.ts +64 -0
- package/src/capital-gains/india/domain/types.ts +12 -0
- package/src/capital-gains/japan/JapanCapitalGainsService.ts +5 -0
- package/src/capital-gains/japan/JapanCapitalGainsServiceImpl.ts +47 -0
- package/src/capital-gains/japan/domain/types.ts +9 -0
- package/src/capital-gains/spain/SpainCapitalGainsService.ts +5 -0
- package/src/capital-gains/spain/SpainCapitalGainsServiceImpl.ts +69 -0
- package/src/capital-gains/spain/domain/types.ts +15 -0
- package/src/corporate/brazil/BrazilCorporateTaxService.ts +5 -0
- package/src/corporate/brazil/BrazilCorporateTaxServiceImpl.ts +40 -0
- package/src/corporate/brazil/domain/types.ts +16 -0
- package/src/corporate/index.ts +45 -1
- package/src/corporate/india/IndiaCorporateTaxService.ts +5 -0
- package/src/corporate/india/IndiaCorporateTaxServiceImpl.ts +35 -0
- package/src/corporate/india/domain/types.ts +15 -0
- package/src/corporate/japan/JapanCorporateTaxService.ts +5 -0
- package/src/corporate/japan/JapanCorporateTaxServiceImpl.ts +35 -0
- package/src/corporate/japan/domain/types.ts +15 -0
- package/src/corporate/spain/SpainCorporateTaxService.ts +5 -0
- package/src/corporate/spain/SpainCorporateTaxServiceImpl.ts +35 -0
- package/src/corporate/spain/domain/types.ts +15 -0
- package/src/income-tax/brazil/BrazilIncomeTaxService.ts +5 -0
- package/src/income-tax/brazil/BrazilIncomeTaxServiceImpl.ts +91 -0
- package/src/income-tax/brazil/domain/types.ts +21 -0
- package/src/income-tax/index.ts +40 -0
- package/src/income-tax/india/IndiaIncomeTaxService.ts +5 -0
- package/src/income-tax/india/IndiaIncomeTaxServiceImpl.ts +87 -0
- package/src/income-tax/india/domain/types.ts +16 -0
- package/src/income-tax/japan/JapanIncomeTaxService.ts +5 -0
- package/src/income-tax/japan/JapanIncomeTaxServiceImpl.ts +87 -0
- package/src/income-tax/japan/domain/types.ts +16 -0
- package/src/income-tax/spain/SpainIncomeTaxService.ts +5 -0
- package/src/income-tax/spain/SpainIncomeTaxServiceImpl.ts +75 -0
- package/src/income-tax/spain/domain/types.ts +16 -0
- package/src/index.ts +1 -0
- package/src/inheritance-tax/australia/AustraliaInheritanceTaxService.ts +5 -0
- package/src/inheritance-tax/australia/AustraliaInheritanceTaxServiceImpl.ts +21 -0
- package/src/inheritance-tax/australia/domain/types.ts +16 -0
- package/src/inheritance-tax/canada/CanadaInheritanceTaxService.ts +5 -0
- package/src/inheritance-tax/canada/CanadaInheritanceTaxServiceImpl.ts +65 -0
- package/src/inheritance-tax/canada/domain/types.ts +24 -0
- package/src/inheritance-tax/domain/types.ts +19 -0
- package/src/inheritance-tax/france/FranceInheritanceTaxService.ts +5 -0
- package/src/inheritance-tax/france/FranceInheritanceTaxServiceImpl.ts +66 -0
- package/src/inheritance-tax/france/domain/types.ts +35 -0
- package/src/inheritance-tax/germany/GermanyInheritanceTaxService.ts +5 -0
- package/src/inheritance-tax/germany/GermanyInheritanceTaxServiceImpl.ts +66 -0
- package/src/inheritance-tax/germany/domain/types.ts +34 -0
- package/src/inheritance-tax/index.ts +110 -0
- package/src/inheritance-tax/japan/JapanInheritanceTaxService.ts +5 -0
- package/src/inheritance-tax/japan/JapanInheritanceTaxServiceImpl.ts +67 -0
- package/src/inheritance-tax/japan/domain/types.ts +25 -0
- package/src/inheritance-tax/south-africa/SouthAfricaInheritanceTaxService.ts +5 -0
- package/src/inheritance-tax/south-africa/SouthAfricaInheritanceTaxServiceImpl.ts +66 -0
- package/src/inheritance-tax/south-africa/domain/types.ts +24 -0
- package/src/inheritance-tax/spain/SpainInheritanceTaxService.ts +5 -0
- package/src/inheritance-tax/spain/SpainInheritanceTaxServiceImpl.ts +65 -0
- package/src/inheritance-tax/spain/domain/types.ts +23 -0
- package/src/inheritance-tax/uk/UKInheritanceTaxService.ts +5 -0
- package/src/inheritance-tax/uk/UKInheritanceTaxServiceImpl.ts +46 -0
- package/src/inheritance-tax/uk/domain/types.ts +20 -0
- package/src/inheritance-tax/usa/USAInheritanceTaxService.ts +5 -0
- package/src/inheritance-tax/usa/USAInheritanceTaxServiceImpl.ts +65 -0
- package/src/inheritance-tax/usa/domain/types.ts +23 -0
- package/src/mortgage/brazil/BrazilMortgageService.ts +5 -0
- package/src/mortgage/brazil/BrazilMortgageServiceImpl.ts +101 -0
- package/src/mortgage/brazil/domain/types.ts +46 -0
- package/src/mortgage/index.ts +49 -1
- package/src/mortgage/india/IndiaMortgageService.ts +5 -0
- package/src/mortgage/india/IndiaMortgageServiceImpl.ts +101 -0
- package/src/mortgage/india/domain/types.ts +46 -0
- package/src/mortgage/japan/JapanMortgageService.ts +5 -0
- package/src/mortgage/japan/JapanMortgageServiceImpl.ts +101 -0
- package/src/mortgage/japan/domain/types.ts +46 -0
- package/src/mortgage/spain/SpainMortgageService.ts +5 -0
- package/src/mortgage/spain/SpainMortgageServiceImpl.ts +130 -0
- package/src/mortgage/spain/domain/types.ts +52 -0
- package/src/shared/domain/types.ts +1 -0
- package/test/australia-inheritance-tax.test.ts +35 -0
- package/test/brazil-capital-gains.test.ts +65 -0
- package/test/brazil-corporate-tax.test.ts +63 -0
- package/test/brazil-income-tax.test.ts +85 -0
- package/test/brazil-mortgage.test.ts +70 -0
- package/test/canada-inheritance-tax.test.ts +62 -0
- package/test/france-inheritance-tax.test.ts +101 -0
- package/test/germany-inheritance-tax.test.ts +100 -0
- package/test/india-capital-gains.test.ts +71 -0
- package/test/india-corporate-tax.test.ts +54 -0
- package/test/india-income-tax.test.ts +78 -0
- package/test/india-mortgage.test.ts +70 -0
- package/test/japan-capital-gains.test.ts +55 -0
- package/test/japan-corporate-tax.test.ts +54 -0
- package/test/japan-income-tax.test.ts +76 -0
- package/test/japan-inheritance-tax.test.ts +74 -0
- package/test/japan-mortgage.test.ts +69 -0
- package/test/south-africa-inheritance-tax.test.ts +81 -0
- package/test/spain-capital-gains.test.ts +66 -0
- package/test/spain-corporate-tax.test.ts +54 -0
- package/test/spain-income-tax.test.ts +84 -0
- package/test/spain-inheritance-tax.test.ts +78 -0
- package/test/spain-mortgage.test.ts +70 -0
- package/test/uk-inheritance-tax.test.ts +72 -0
- package/test/usa-inheritance-tax.test.ts +90 -0
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import { Breakdown } from "../../domain/types";
|
|
2
|
+
export interface TaxBracket {
|
|
3
|
+
from: number;
|
|
4
|
+
to: number | null;
|
|
5
|
+
rate: number;
|
|
6
|
+
}
|
|
7
|
+
export interface Rules {
|
|
8
|
+
primaryAbatement: number;
|
|
9
|
+
taxBrackets: TaxBracket[];
|
|
10
|
+
}
|
|
11
|
+
export interface Input {
|
|
12
|
+
estateValue: number;
|
|
13
|
+
deductions: number;
|
|
14
|
+
}
|
|
15
|
+
export interface Result {
|
|
16
|
+
taxableEstate: number;
|
|
17
|
+
inheritanceTax: number;
|
|
18
|
+
effectiveRate: number;
|
|
19
|
+
breakdowns: Breakdown[];
|
|
20
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { SpainInheritanceTaxService } from "./SpainInheritanceTaxService";
|
|
2
|
+
import { Input, Result, Rules } from "./domain/types";
|
|
3
|
+
export declare class SpainInheritanceTaxServiceImpl implements SpainInheritanceTaxService {
|
|
4
|
+
private _input;
|
|
5
|
+
private _rules;
|
|
6
|
+
constructor(input: Input, rules: Rules);
|
|
7
|
+
calculate(): Result;
|
|
8
|
+
private applyBrackets;
|
|
9
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Breakdown } from "../../domain/types";
|
|
2
|
+
export interface TaxBracket {
|
|
3
|
+
from: number;
|
|
4
|
+
to: number | null;
|
|
5
|
+
rate: number;
|
|
6
|
+
}
|
|
7
|
+
export interface Rules {
|
|
8
|
+
exemption: number;
|
|
9
|
+
taxBrackets: TaxBracket[];
|
|
10
|
+
}
|
|
11
|
+
export interface Input {
|
|
12
|
+
estateValue: number;
|
|
13
|
+
}
|
|
14
|
+
export interface Result {
|
|
15
|
+
taxableEstate: number;
|
|
16
|
+
inheritanceTax: number;
|
|
17
|
+
effectiveRate: number;
|
|
18
|
+
breakdowns: Breakdown[];
|
|
19
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { UKInheritanceTaxService } from "./UKInheritanceTaxService";
|
|
2
|
+
import { Input, Result, Rules } from "./domain/types";
|
|
3
|
+
export declare class UKInheritanceTaxServiceImpl implements UKInheritanceTaxService {
|
|
4
|
+
private _input;
|
|
5
|
+
private _rules;
|
|
6
|
+
constructor(input: Input, rules: Rules);
|
|
7
|
+
calculate(): Result;
|
|
8
|
+
}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { Breakdown } from "../../domain/types";
|
|
2
|
+
export interface Rules {
|
|
3
|
+
nilRateBand: number;
|
|
4
|
+
standardRate: number;
|
|
5
|
+
charityRate: number;
|
|
6
|
+
charityThreshold: number;
|
|
7
|
+
}
|
|
8
|
+
export interface Input {
|
|
9
|
+
estateValue: number;
|
|
10
|
+
charitableGivingPercent: number;
|
|
11
|
+
}
|
|
12
|
+
export interface Result {
|
|
13
|
+
taxableEstate: number;
|
|
14
|
+
inheritanceTax: number;
|
|
15
|
+
effectiveRate: number;
|
|
16
|
+
breakdowns: Breakdown[];
|
|
17
|
+
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { USAInheritanceTaxService } from "./USAInheritanceTaxService";
|
|
2
|
+
import { Input, Result, Rules } from "./domain/types";
|
|
3
|
+
export declare class USAInheritanceTaxServiceImpl implements USAInheritanceTaxService {
|
|
4
|
+
private _input;
|
|
5
|
+
private _rules;
|
|
6
|
+
constructor(input: Input, rules: Rules);
|
|
7
|
+
calculate(): Result;
|
|
8
|
+
private applyBrackets;
|
|
9
|
+
}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Breakdown } from "../../domain/types";
|
|
2
|
+
export interface TaxBracket {
|
|
3
|
+
from: number;
|
|
4
|
+
to: number | null;
|
|
5
|
+
rate: number;
|
|
6
|
+
}
|
|
7
|
+
export interface Rules {
|
|
8
|
+
exemption: number;
|
|
9
|
+
taxBrackets: TaxBracket[];
|
|
10
|
+
}
|
|
11
|
+
export interface Input {
|
|
12
|
+
estateValue: number;
|
|
13
|
+
}
|
|
14
|
+
export interface Result {
|
|
15
|
+
taxableEstate: number;
|
|
16
|
+
inheritanceTax: number;
|
|
17
|
+
effectiveRate: number;
|
|
18
|
+
breakdowns: Breakdown[];
|
|
19
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { BrazilMortgageService } from "./BrazilMortgageService";
|
|
2
|
+
import { MortgageInput, MortgageOutput, MortgageRules } from "./domain/types";
|
|
3
|
+
export declare class BrazilMortgageServiceImpl implements BrazilMortgageService {
|
|
4
|
+
calculate(input: MortgageInput, rules: MortgageRules): MortgageOutput;
|
|
5
|
+
private calculateAmortizationSchedule;
|
|
6
|
+
private calculatePayment;
|
|
7
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { OtherFees } from "../../domain/types";
|
|
2
|
+
export interface MortgageRules {
|
|
3
|
+
loanConstraints: LoanConstraints;
|
|
4
|
+
interest: InterestRules;
|
|
5
|
+
itbi: ITBIRules;
|
|
6
|
+
}
|
|
7
|
+
export interface LoanConstraints {
|
|
8
|
+
maxLtvPercent: number;
|
|
9
|
+
maxAmortizationYears: number;
|
|
10
|
+
}
|
|
11
|
+
export interface InterestRules {
|
|
12
|
+
compounding: 'MONTHLY';
|
|
13
|
+
}
|
|
14
|
+
export interface ITBIRules {
|
|
15
|
+
rate: number;
|
|
16
|
+
}
|
|
17
|
+
export interface AmortizationScheduleItem {
|
|
18
|
+
year: number;
|
|
19
|
+
principal: number;
|
|
20
|
+
interest: number;
|
|
21
|
+
balance: number;
|
|
22
|
+
}
|
|
23
|
+
export interface MortgageInput {
|
|
24
|
+
propertyPrice: number;
|
|
25
|
+
downPayment: number;
|
|
26
|
+
annualInterestRate: number;
|
|
27
|
+
amortizationYears: number;
|
|
28
|
+
isFirstTimeBuyer: boolean;
|
|
29
|
+
}
|
|
30
|
+
export interface MortgageOutput {
|
|
31
|
+
loanAmount: number;
|
|
32
|
+
totalMortgage: number;
|
|
33
|
+
monthlyPayment: number;
|
|
34
|
+
totalInterestPaid: number;
|
|
35
|
+
totalPaid: number;
|
|
36
|
+
itbi: number;
|
|
37
|
+
amortizationSchedule: AmortizationScheduleItem[];
|
|
38
|
+
otherFees: OtherFees;
|
|
39
|
+
}
|
|
@@ -12,4 +12,12 @@ import { USAMortgageServiceImpl as USAMortgageService } from './usa/USAMortgageS
|
|
|
12
12
|
import { MortgageRules as USAMortgageRules, MortgageInput as USAMortgageInput, MortgageOutput as USAMortgageOutput } from './usa/domain/types';
|
|
13
13
|
import { GermanyMortgageServiceImpl as GermanyMortgageService } from './germany/GermanyMortgageServiceImpl';
|
|
14
14
|
import { MortgageRules as GermanyMortgageRules, MortgageInput as GermanyMortgageInput, MortgageOutput as GermanyMortgageOutput } from './germany/domain/types';
|
|
15
|
-
|
|
15
|
+
import { BrazilMortgageServiceImpl as BrazilMortgageService } from './brazil/BrazilMortgageServiceImpl';
|
|
16
|
+
import { MortgageRules as BrazilMortgageRules, MortgageInput as BrazilMortgageInput, MortgageOutput as BrazilMortgageOutput } from './brazil/domain/types';
|
|
17
|
+
import { SpainMortgageServiceImpl as SpainMortgageService } from './spain/SpainMortgageServiceImpl';
|
|
18
|
+
import { MortgageRules as SpainMortgageRules, MortgageInput as SpainMortgageInput, MortgageOutput as SpainMortgageOutput } from './spain/domain/types';
|
|
19
|
+
import { IndiaMortgageServiceImpl as IndiaMortgageService } from './india/IndiaMortgageServiceImpl';
|
|
20
|
+
import { MortgageRules as IndiaMortgageRules, MortgageInput as IndiaMortgageInput, MortgageOutput as IndiaMortgageOutput } from './india/domain/types';
|
|
21
|
+
import { JapanMortgageServiceImpl as JapanMortgageService } from './japan/JapanMortgageServiceImpl';
|
|
22
|
+
import { MortgageRules as JapanMortgageRules, MortgageInput as JapanMortgageInput, MortgageOutput as JapanMortgageOutput } from './japan/domain/types';
|
|
23
|
+
export { CanadaMortgageService, CanadaMortgageRules, CanadaMortgageCalculationInput, CanadaMortgageCalculationResult, FranceMortgageService, FranceMortgageRules, FranceMortgageInput, FranceMortgageCalculationResult, SouthAfricaMortgageService, SouthAfricaMortgageRules, SouthAfricaMortgageInput, SouthAfricaMortgageOutput, AustraliaMortgageService, AustraliaMortgageRules, AustraliaMortgageInput, AustraliaMortgageOutput, UKMortgageService, UKMortgageRules, UKMortgageInput, UKMortgageOutput, USAMortgageService, USAMortgageRules, USAMortgageInput, USAMortgageOutput, GermanyMortgageService, GermanyMortgageRules, GermanyMortgageInput, GermanyMortgageOutput, BrazilMortgageService, BrazilMortgageRules, BrazilMortgageInput, BrazilMortgageOutput, SpainMortgageService, SpainMortgageRules, SpainMortgageInput, SpainMortgageOutput, IndiaMortgageService, IndiaMortgageRules, IndiaMortgageInput, IndiaMortgageOutput, JapanMortgageService, JapanMortgageRules, JapanMortgageInput, JapanMortgageOutput };
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { IndiaMortgageService } from "./IndiaMortgageService";
|
|
2
|
+
import { MortgageInput, MortgageOutput, MortgageRules } from "./domain/types";
|
|
3
|
+
export declare class IndiaMortgageServiceImpl implements IndiaMortgageService {
|
|
4
|
+
calculate(input: MortgageInput, rules: MortgageRules): MortgageOutput;
|
|
5
|
+
private calculateAmortizationSchedule;
|
|
6
|
+
private calculatePayment;
|
|
7
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { OtherFees } from "../../domain/types";
|
|
2
|
+
export interface MortgageRules {
|
|
3
|
+
loanConstraints: LoanConstraints;
|
|
4
|
+
interest: InterestRules;
|
|
5
|
+
stampDuty: StampDutyRules;
|
|
6
|
+
}
|
|
7
|
+
export interface LoanConstraints {
|
|
8
|
+
maxLtvPercent: number;
|
|
9
|
+
maxAmortizationYears: number;
|
|
10
|
+
}
|
|
11
|
+
export interface InterestRules {
|
|
12
|
+
compounding: 'MONTHLY';
|
|
13
|
+
}
|
|
14
|
+
export interface StampDutyRules {
|
|
15
|
+
rate: number;
|
|
16
|
+
}
|
|
17
|
+
export interface AmortizationScheduleItem {
|
|
18
|
+
year: number;
|
|
19
|
+
principal: number;
|
|
20
|
+
interest: number;
|
|
21
|
+
balance: number;
|
|
22
|
+
}
|
|
23
|
+
export interface MortgageInput {
|
|
24
|
+
propertyPrice: number;
|
|
25
|
+
downPayment: number;
|
|
26
|
+
annualInterestRate: number;
|
|
27
|
+
amortizationYears: number;
|
|
28
|
+
isFirstTimeBuyer: boolean;
|
|
29
|
+
}
|
|
30
|
+
export interface MortgageOutput {
|
|
31
|
+
loanAmount: number;
|
|
32
|
+
totalMortgage: number;
|
|
33
|
+
monthlyPayment: number;
|
|
34
|
+
totalInterestPaid: number;
|
|
35
|
+
totalPaid: number;
|
|
36
|
+
stampDuty: number;
|
|
37
|
+
amortizationSchedule: AmortizationScheduleItem[];
|
|
38
|
+
otherFees: OtherFees;
|
|
39
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { JapanMortgageService } from "./JapanMortgageService";
|
|
2
|
+
import { MortgageInput, MortgageOutput, MortgageRules } from "./domain/types";
|
|
3
|
+
export declare class JapanMortgageServiceImpl implements JapanMortgageService {
|
|
4
|
+
calculate(input: MortgageInput, rules: MortgageRules): MortgageOutput;
|
|
5
|
+
private calculateAmortizationSchedule;
|
|
6
|
+
private calculatePayment;
|
|
7
|
+
}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { OtherFees } from "../../domain/types";
|
|
2
|
+
export interface MortgageRules {
|
|
3
|
+
loanConstraints: LoanConstraints;
|
|
4
|
+
interest: InterestRules;
|
|
5
|
+
acquisitionTax: AcquisitionTaxRules;
|
|
6
|
+
}
|
|
7
|
+
export interface LoanConstraints {
|
|
8
|
+
maxLtvPercent: number;
|
|
9
|
+
maxAmortizationYears: number;
|
|
10
|
+
}
|
|
11
|
+
export interface InterestRules {
|
|
12
|
+
compounding: 'MONTHLY';
|
|
13
|
+
}
|
|
14
|
+
export interface AcquisitionTaxRules {
|
|
15
|
+
rate: number;
|
|
16
|
+
}
|
|
17
|
+
export interface AmortizationScheduleItem {
|
|
18
|
+
year: number;
|
|
19
|
+
principal: number;
|
|
20
|
+
interest: number;
|
|
21
|
+
balance: number;
|
|
22
|
+
}
|
|
23
|
+
export interface MortgageInput {
|
|
24
|
+
propertyPrice: number;
|
|
25
|
+
downPayment: number;
|
|
26
|
+
annualInterestRate: number;
|
|
27
|
+
amortizationYears: number;
|
|
28
|
+
isFirstTimeBuyer: boolean;
|
|
29
|
+
}
|
|
30
|
+
export interface MortgageOutput {
|
|
31
|
+
loanAmount: number;
|
|
32
|
+
totalMortgage: number;
|
|
33
|
+
monthlyPayment: number;
|
|
34
|
+
totalInterestPaid: number;
|
|
35
|
+
totalPaid: number;
|
|
36
|
+
acquisitionTax: number;
|
|
37
|
+
amortizationSchedule: AmortizationScheduleItem[];
|
|
38
|
+
otherFees: OtherFees;
|
|
39
|
+
}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { SpainMortgageService } from "./SpainMortgageService";
|
|
2
|
+
import { MortgageInput, MortgageOutput, MortgageRules } from "./domain/types";
|
|
3
|
+
export declare class SpainMortgageServiceImpl implements SpainMortgageService {
|
|
4
|
+
calculate(input: MortgageInput, rules: MortgageRules): MortgageOutput;
|
|
5
|
+
private calculateTransferTax;
|
|
6
|
+
private calculateAmortizationSchedule;
|
|
7
|
+
private calculatePayment;
|
|
8
|
+
}
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
import { OtherFees } from "../../domain/types";
|
|
2
|
+
export interface MortgageRules {
|
|
3
|
+
loanConstraints: LoanConstraints;
|
|
4
|
+
interest: InterestRules;
|
|
5
|
+
transferTax: TransferTaxRules;
|
|
6
|
+
}
|
|
7
|
+
export interface LoanConstraints {
|
|
8
|
+
maxLtvPercent: number;
|
|
9
|
+
maxAmortizationYears: number;
|
|
10
|
+
}
|
|
11
|
+
export interface InterestRules {
|
|
12
|
+
compounding: 'MONTHLY';
|
|
13
|
+
}
|
|
14
|
+
export interface TransferTaxBracket {
|
|
15
|
+
upTo?: number;
|
|
16
|
+
above?: number;
|
|
17
|
+
rate: number;
|
|
18
|
+
}
|
|
19
|
+
export interface TransferTaxRules {
|
|
20
|
+
brackets: TransferTaxBracket[];
|
|
21
|
+
}
|
|
22
|
+
export interface AmortizationScheduleItem {
|
|
23
|
+
year: number;
|
|
24
|
+
principal: number;
|
|
25
|
+
interest: number;
|
|
26
|
+
balance: number;
|
|
27
|
+
}
|
|
28
|
+
export interface MortgageInput {
|
|
29
|
+
propertyPrice: number;
|
|
30
|
+
downPayment: number;
|
|
31
|
+
annualInterestRate: number;
|
|
32
|
+
amortizationYears: number;
|
|
33
|
+
isFirstTimeBuyer: boolean;
|
|
34
|
+
}
|
|
35
|
+
export interface MortgageOutput {
|
|
36
|
+
loanAmount: number;
|
|
37
|
+
totalMortgage: number;
|
|
38
|
+
monthlyPayment: number;
|
|
39
|
+
totalInterestPaid: number;
|
|
40
|
+
totalPaid: number;
|
|
41
|
+
transferTax: number;
|
|
42
|
+
amortizationSchedule: AmortizationScheduleItem[];
|
|
43
|
+
otherFees: OtherFees;
|
|
44
|
+
}
|
|
@@ -3,7 +3,8 @@ export declare enum CalculatorType {
|
|
|
3
3
|
MORTGAGE = "MORTGAGE",
|
|
4
4
|
LOAN = "LOAN",
|
|
5
5
|
CORPORATE_TAX = "CORPORATE_TAX",
|
|
6
|
-
CAPITAL_GAINS = "CAPITAL_GAINS"
|
|
6
|
+
CAPITAL_GAINS = "CAPITAL_GAINS",
|
|
7
|
+
INHERITANCE_TAX = "INHERITANCE_TAX"
|
|
7
8
|
}
|
|
8
9
|
export interface RuleMeta {
|
|
9
10
|
id: string;
|
package/package.json
CHANGED
|
@@ -0,0 +1,69 @@
|
|
|
1
|
+
import { Breakdown, Result } from "../domain/types";
|
|
2
|
+
import { BrazilCapitalGainsService } from "./BrazilCapitalGainsService";
|
|
3
|
+
import { CapitalGainsBracket, Input, Rules } from "./domain/types";
|
|
4
|
+
|
|
5
|
+
export class BrazilCapitalGainsServiceImpl implements BrazilCapitalGainsService {
|
|
6
|
+
private _input: Input;
|
|
7
|
+
private _rules: Rules;
|
|
8
|
+
|
|
9
|
+
constructor(input: Input, rules: Rules) {
|
|
10
|
+
this._input = input;
|
|
11
|
+
this._rules = rules;
|
|
12
|
+
}
|
|
13
|
+
|
|
14
|
+
calculate(): Result {
|
|
15
|
+
const gain = this._input.capitalGain;
|
|
16
|
+
|
|
17
|
+
if (gain <= 0) {
|
|
18
|
+
return {
|
|
19
|
+
taxableGain: 0,
|
|
20
|
+
capitalGainTax: 0,
|
|
21
|
+
socialContributions: 0,
|
|
22
|
+
netInvestmentIncomeTax: 0,
|
|
23
|
+
totalTax: 0,
|
|
24
|
+
effectiveRate: 0,
|
|
25
|
+
breakdowns: [],
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
const { tax, breakdowns } = this.applyBrackets(gain, this._rules.brackets);
|
|
30
|
+
|
|
31
|
+
return {
|
|
32
|
+
taxableGain: gain,
|
|
33
|
+
capitalGainTax: tax,
|
|
34
|
+
socialContributions: 0,
|
|
35
|
+
netInvestmentIncomeTax: 0,
|
|
36
|
+
totalTax: tax,
|
|
37
|
+
effectiveRate: (tax / gain) * 100,
|
|
38
|
+
breakdowns,
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
|
|
42
|
+
private applyBrackets(
|
|
43
|
+
gain: number,
|
|
44
|
+
brackets: CapitalGainsBracket[],
|
|
45
|
+
): { tax: number; breakdowns: Breakdown[] } {
|
|
46
|
+
let tax = 0;
|
|
47
|
+
const breakdowns: Breakdown[] = [];
|
|
48
|
+
|
|
49
|
+
for (const bracket of brackets) {
|
|
50
|
+
if (gain <= bracket.from) break;
|
|
51
|
+
|
|
52
|
+
const upper = bracket.to ?? gain;
|
|
53
|
+
const taxable = Math.min(upper, gain) - bracket.from;
|
|
54
|
+
|
|
55
|
+
if (taxable > 0) {
|
|
56
|
+
const bracketTax = taxable * bracket.rate;
|
|
57
|
+
tax += bracketTax;
|
|
58
|
+
breakdowns.push({
|
|
59
|
+
from: `${bracket.from}`,
|
|
60
|
+
to: `${bracket.to ?? 'Above'}`,
|
|
61
|
+
rate: bracket.rate,
|
|
62
|
+
amount: bracketTax,
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
return { tax, breakdowns };
|
|
68
|
+
}
|
|
69
|
+
}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { Breakdown } from "../../domain/types";
|
|
2
|
+
|
|
3
|
+
export interface CapitalGainsBracket {
|
|
4
|
+
from: number;
|
|
5
|
+
to: number | null;
|
|
6
|
+
rate: number;
|
|
7
|
+
}
|
|
8
|
+
|
|
9
|
+
export interface Rules {
|
|
10
|
+
brackets: CapitalGainsBracket[];
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
export interface Input {
|
|
14
|
+
capitalGain: number;
|
|
15
|
+
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Result } from "../domain/types";
|
|
1
|
+
import { Breakdown, Result } from "../domain/types";
|
|
2
2
|
import { CanadaCapitalGainsService } from "./CanadaCapitalGainsService";
|
|
3
3
|
import { Input, Rules, TaxBracket } from "./domain/types";
|
|
4
4
|
|
|
@@ -27,43 +27,56 @@ export class CanadaCapitalGainsServiceImpl implements CanadaCapitalGainsService
|
|
|
27
27
|
}
|
|
28
28
|
|
|
29
29
|
const taxableGain = gain * this._rules.inclusionRate;
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
const baseIncome = this._input.totalTaxableIncome;
|
|
33
|
-
|
|
34
|
-
const incomeWithGain = baseIncome + taxableGain;
|
|
35
|
-
|
|
36
|
-
const baseTax = this.calculateProgressiveTax(baseIncome, this._rules.taxBrackets);
|
|
37
|
-
const taxWithGain = this.calculateProgressiveTax(incomeWithGain, this._rules.taxBrackets);
|
|
38
|
-
|
|
39
|
-
const capitalGainTax = taxWithGain - baseTax;
|
|
30
|
+
const otherIncome = this._input.totalTaxableIncome - gain;
|
|
31
|
+
const { tax, breakdowns } = this.applyBrackets(taxableGain, otherIncome, this._rules.taxBrackets);
|
|
40
32
|
|
|
41
33
|
return {
|
|
42
34
|
taxableGain,
|
|
43
|
-
capitalGainTax,
|
|
35
|
+
capitalGainTax: tax,
|
|
44
36
|
socialContributions: 0,
|
|
45
37
|
netInvestmentIncomeTax: 0,
|
|
46
|
-
totalTax:
|
|
47
|
-
effectiveRate: gain > 0 ? (
|
|
48
|
-
breakdowns
|
|
38
|
+
totalTax: tax,
|
|
39
|
+
effectiveRate: gain > 0 ? (tax / gain) * 100 : 0,
|
|
40
|
+
breakdowns,
|
|
49
41
|
};
|
|
50
42
|
}
|
|
51
43
|
|
|
52
|
-
private
|
|
44
|
+
private applyBrackets(
|
|
45
|
+
taxableGain: number,
|
|
46
|
+
otherIncome: number,
|
|
47
|
+
brackets: TaxBracket[],
|
|
48
|
+
): { tax: number; breakdowns: Breakdown[] } {
|
|
53
49
|
let tax = 0;
|
|
50
|
+
const breakdowns: Breakdown[] = [];
|
|
51
|
+
let remaining = taxableGain;
|
|
52
|
+
let incomeUsed = otherIncome;
|
|
54
53
|
|
|
55
54
|
for (const bracket of brackets) {
|
|
55
|
+
if (remaining <= 0) break;
|
|
56
|
+
|
|
56
57
|
const upper = bracket.to ?? Infinity;
|
|
57
58
|
|
|
58
|
-
if (
|
|
59
|
+
if (incomeUsed >= upper) continue;
|
|
59
60
|
|
|
60
|
-
const
|
|
61
|
+
const bracketStart = Math.max(bracket.from, incomeUsed);
|
|
62
|
+
const bracketSpace = upper - bracketStart;
|
|
63
|
+
const taxable = Math.min(bracketSpace, remaining);
|
|
61
64
|
|
|
62
65
|
if (taxable > 0) {
|
|
63
|
-
|
|
66
|
+
const bracketTax = taxable * bracket.rate;
|
|
67
|
+
tax += bracketTax;
|
|
68
|
+
remaining -= taxable;
|
|
69
|
+
incomeUsed += taxable;
|
|
70
|
+
|
|
71
|
+
breakdowns.push({
|
|
72
|
+
from: `${bracket.from}`,
|
|
73
|
+
to: `${bracket.to ?? 'Above'}`,
|
|
74
|
+
rate: bracket.rate,
|
|
75
|
+
amount: bracketTax,
|
|
76
|
+
});
|
|
64
77
|
}
|
|
65
78
|
}
|
|
66
79
|
|
|
67
|
-
return tax;
|
|
80
|
+
return { tax, breakdowns };
|
|
68
81
|
}
|
|
69
|
-
}
|
|
82
|
+
}
|
|
@@ -48,6 +48,34 @@ import {
|
|
|
48
48
|
} from './germany/domain/types';
|
|
49
49
|
import { Result } from './domain/types';
|
|
50
50
|
|
|
51
|
+
// Capital Gains - Brazil
|
|
52
|
+
import { BrazilCapitalGainsServiceImpl as BrazilCapitalGainsService } from './brazil/BrazilCapitalGainsServiceImpl';
|
|
53
|
+
import {
|
|
54
|
+
Input as BrazilCapitalGainsInput,
|
|
55
|
+
Rules as BrazilCapitalGainsRules
|
|
56
|
+
} from './brazil/domain/types';
|
|
57
|
+
|
|
58
|
+
// Capital Gains - Spain
|
|
59
|
+
import { SpainCapitalGainsServiceImpl as SpainCapitalGainsService } from './spain/SpainCapitalGainsServiceImpl';
|
|
60
|
+
import {
|
|
61
|
+
Input as SpainCapitalGainsInput,
|
|
62
|
+
Rules as SpainCapitalGainsRules
|
|
63
|
+
} from './spain/domain/types';
|
|
64
|
+
|
|
65
|
+
// Capital Gains - India
|
|
66
|
+
import { IndiaCapitalGainsServiceImpl as IndiaCapitalGainsService } from './india/IndiaCapitalGainsServiceImpl';
|
|
67
|
+
import {
|
|
68
|
+
Input as IndiaCapitalGainsInput,
|
|
69
|
+
Rules as IndiaCapitalGainsRules
|
|
70
|
+
} from './india/domain/types';
|
|
71
|
+
|
|
72
|
+
// Capital Gains - Japan
|
|
73
|
+
import { JapanCapitalGainsServiceImpl as JapanCapitalGainsService } from './japan/JapanCapitalGainsServiceImpl';
|
|
74
|
+
import {
|
|
75
|
+
Input as JapanCapitalGainsInput,
|
|
76
|
+
Rules as JapanCapitalGainsRules
|
|
77
|
+
} from './japan/domain/types';
|
|
78
|
+
|
|
51
79
|
export {
|
|
52
80
|
CanadaCapitalGainsService,
|
|
53
81
|
CanadaCapitalGainsInput,
|
|
@@ -70,5 +98,17 @@ export {
|
|
|
70
98
|
GermanyCapitalGainsService,
|
|
71
99
|
GermanyCapitalGainsInput,
|
|
72
100
|
GermanyCapitalGainsRules,
|
|
101
|
+
BrazilCapitalGainsService,
|
|
102
|
+
BrazilCapitalGainsInput,
|
|
103
|
+
BrazilCapitalGainsRules,
|
|
104
|
+
SpainCapitalGainsService,
|
|
105
|
+
SpainCapitalGainsInput,
|
|
106
|
+
SpainCapitalGainsRules,
|
|
107
|
+
IndiaCapitalGainsService,
|
|
108
|
+
IndiaCapitalGainsInput,
|
|
109
|
+
IndiaCapitalGainsRules,
|
|
110
|
+
JapanCapitalGainsService,
|
|
111
|
+
JapanCapitalGainsInput,
|
|
112
|
+
JapanCapitalGainsRules,
|
|
73
113
|
Result
|
|
74
114
|
};
|