Skip to content
Snippets Groups Projects
Commit 68fda37b authored by benoit-cty's avatar benoit-cty
Browse files

Refacto IRState

parent 07f99c68
No related branches found
No related tags found
1 merge request!158PLF 2023
Pipeline #6247 passed
...@@ -37,12 +37,12 @@ export class Articles extends React.Component<Props> { ...@@ -37,12 +37,12 @@ export class Articles extends React.Component<Props> {
let { plf } = this.props; let { plf } = this.props;
plf = plf ?? null; plf = plf ?? null;
const s = amendement.impot_revenu.bareme.seuils; const s = amendement.impot_revenu.bareme_ir_depuis_1945.seuils;
const t = amendement.impot_revenu.bareme.taux; const t = amendement.impot_revenu.bareme_ir_depuis_1945.taux;
const bases = base.impot_revenu.bareme.seuils; const bases = base.impot_revenu.bareme_ir_depuis_1945.seuils;
const baset = base.impot_revenu.bareme.taux; const baset = base.impot_revenu.bareme_ir_depuis_1945.taux;
const plfs = plf && plf.impot_revenu.bareme.seuils; const plfs = plf && plf.impot_revenu.bareme_ir_depuis_1945.seuils;
const plft = plf && plf.impot_revenu.bareme.taux; const plft = plf && plf.impot_revenu.bareme_ir_depuis_1945.taux;
const nbt = s.length; const nbt = s.length;
const newTranche = i > 4; const newTranche = i > 4;
...@@ -161,7 +161,7 @@ export class Articles extends React.Component<Props> { ...@@ -161,7 +161,7 @@ export class Articles extends React.Component<Props> {
handleAddTranche, handleAddTranche,
handleRemoveTranche, handleRemoveTranche,
} = this.props; } = this.props;
const count = amendement.impot_revenu.bareme.seuils.length + 1; const count = amendement.impot_revenu.bareme_ir_depuis_1945.seuils.length + 1;
const articleTranches = fillArrayWith(count, this.gimmeIRPartsOfArticle); const articleTranches = fillArrayWith(count, this.gimmeIRPartsOfArticle);
return ( return (
......
...@@ -12,14 +12,14 @@ export class Alinea4a extends PureComponent { ...@@ -12,14 +12,14 @@ export class Alinea4a extends PureComponent {
{" "} {" "}
<ParameterValues <ParameterValues
editable editable
path="impot_revenu.decote.seuil_celib" path="impot_revenu.calcul_impot_revenu.plaf_qf.decote.seuil_celib"
/> />
{" "} {" "}
€ et € et
{" "} {" "}
<ParameterValues <ParameterValues
editable editable
path="impot_revenu.decote.taux" path="impot_revenu.calcul_impot_revenu.plaf_qf.decote.taux"
/> />
{" "} {" "}
% de son montant pour les contribuables célibataires, divorcés ou % de son montant pour les contribuables célibataires, divorcés ou
...@@ -27,13 +27,13 @@ export class Alinea4a extends PureComponent { ...@@ -27,13 +27,13 @@ export class Alinea4a extends PureComponent {
{" "} {" "}
<ParameterValues <ParameterValues
editable editable
path="impot_revenu.decote.seuil_couple" path="impot_revenu.calcul_impot_revenu.plaf_qf.decote.seuil_couple"
/> />
{" "} {" "}
€ et € et
{" "} {" "}
<ParameterValues <ParameterValues
path="impot_revenu.decote.taux" path="impot_revenu.calcul_impot_revenu.plaf_qf.decote.taux"
/> />
{" "} {" "}
% de son montant pour les contribuables soumis à imposition % de son montant pour les contribuables soumis à imposition
......
...@@ -44,14 +44,14 @@ class Alinea3 extends PureComponent<PropsFromRedux> { ...@@ -44,14 +44,14 @@ class Alinea3 extends PureComponent<PropsFromRedux> {
<ParameterValues <ParameterValues
editable editable
amendementInputSize="small" amendementInputSize="small"
path="impot_revenu.plafond_qf.abat_dom.taux_GuadMarReu" path="impot_revenu.calcul_impot_revenu.plaf_qf.abat_dom.taux_GuadMarReu"
/> />
{" "} {" "}
%, dans la limite de %, dans la limite de
{" "} {" "}
<ParameterValues <ParameterValues
editable editable
path="impot_revenu.plafond_qf.abat_dom.plaf_GuadMarReu" path="impot_revenu.calcul_impot_revenu.plaf_qf.abat_dom.plaf_GuadMarReu"
/> />
{" "} {" "}
€ pour les € pour les
...@@ -61,14 +61,14 @@ class Alinea3 extends PureComponent<PropsFromRedux> { ...@@ -61,14 +61,14 @@ class Alinea3 extends PureComponent<PropsFromRedux> {
<ParameterValues <ParameterValues
editable editable
amendementInputSize="small" amendementInputSize="small"
path="impot_revenu.plafond_qf.abat_dom.taux_GuyMay" path="impot_revenu.calcul_impot_revenu.plaf_qf.abat_dom.taux_GuyMay"
/> />
{" "} {" "}
%, dans la limite de %, dans la limite de
{" "} {" "}
<ParameterValues <ParameterValues
editable editable
path="impot_revenu.plafond_qf.abat_dom.plaf_GuyMay" path="impot_revenu.calcul_impot_revenu.plaf_qf.abat_dom.plaf_GuyMay"
/> />
{" "} {" "}
€, pour les contribuables domiciliés dans les départements de la €, pour les contribuables domiciliés dans les départements de la
......
...@@ -11,7 +11,7 @@ export class Plafonds extends PureComponent { ...@@ -11,7 +11,7 @@ export class Plafonds extends PureComponent {
{" "} {" "}
<ParameterValues <ParameterValues
editable editable
path="impot_revenu.plafond_qf.maries_ou_pacses" path="impot_revenu.calcul_impot_revenu.plaf_qf.maries_ou_pacses"
/> />
{" "} {" "}
€ par demi-part ou € par demi-part ou
...@@ -27,7 +27,7 @@ export class Plafonds extends PureComponent { ...@@ -27,7 +27,7 @@ export class Plafonds extends PureComponent {
{" "} {" "}
<ParameterValues <ParameterValues
editable editable
path="impot_revenu.plafond_qf.celib_enf" path="impot_revenu.calcul_impot_revenu.plaf_qf.celib_enf"
/> />
{" "} {" "}
€. Lorsque les €. Lorsque les
...@@ -43,7 +43,7 @@ export class Plafonds extends PureComponent { ...@@ -43,7 +43,7 @@ export class Plafonds extends PureComponent {
{" "} {" "}
<ParameterValues <ParameterValues
editable editable
path="impot_revenu.plafond_qf.celib" path="impot_revenu.calcul_impot_revenu.plaf_qf.celib"
/> />
{" "} {" "}
€ ; € ;
...@@ -55,7 +55,7 @@ export class Plafonds extends PureComponent { ...@@ -55,7 +55,7 @@ export class Plafonds extends PureComponent {
{" "} {" "}
<ParameterValues <ParameterValues
editable editable
path="impot_revenu.plafond_qf.reduc_postplafond" path="impot_revenu.calcul_impot_revenu.plaf_qf.reduc_postplafond"
/> />
{" "} {" "}
...@@ -72,7 +72,7 @@ export class Plafonds extends PureComponent { ...@@ -72,7 +72,7 @@ export class Plafonds extends PureComponent {
{" "} {" "}
<ParameterValues <ParameterValues
editable editable
path="impot_revenu.plafond_qf.reduc_postplafond_veuf" path="impot_revenu.calcul_impot_revenu.plaf_qf.reduc_postplafond_veuf"
/> />
{" "} {" "}
€ pour cette € pour cette
......
...@@ -3,16 +3,22 @@ import merge from "lodash/merge"; ...@@ -3,16 +3,22 @@ import merge from "lodash/merge";
export function formatReforme(reforme) { export function formatReforme(reforme) {
return merge({}, reforme, { return merge({}, reforme, {
impot_revenu: { impot_revenu: {
bareme: { bareme_ir_depuis_1945: {
taux: reforme.impot_revenu.bareme.taux.map(taux => taux / 100), taux: reforme.impot_revenu.bareme_ir_depuis_1945.taux.map(
(taux) => taux / 100
),
}, },
calcul_impot_revenu: {
plaf_qf: {
decote: { decote: {
taux: reforme.impot_revenu.decote.taux / 100, taux: reforme.impot_revenu.calcul_impot_revenu.plaf_qf.decote.taux / 100,
}, },
plafond_qf: {
abat_dom: { abat_dom: {
taux_GuadMarReu: reforme.impot_revenu.plafond_qf.abat_dom.taux_GuadMarReu / 100, taux_GuadMarReu:
taux_GuyMay: reforme.impot_revenu.plafond_qf.abat_dom.taux_GuyMay / 100, reforme.impot_revenu.calcul_impot_revenu.plaf_qf.abat_dom.taux_GuadMarReu / 100,
taux_GuyMay:
reforme.impot_revenu.calcul_impot_revenu.plaf_qf.abat_dom.taux_GuyMay / 100,
},
}, },
}, },
}, },
......
...@@ -11,7 +11,7 @@ const updateReformeByName = (name, prevValue) => { ...@@ -11,7 +11,7 @@ const updateReformeByName = (name, prevValue) => {
const shouldUpdateTaux = name.substring(0, 4) === "taux"; const shouldUpdateTaux = name.substring(0, 4) === "taux";
if (shouldUpdateTaux) type = "onUpdateReformeTaux"; if (shouldUpdateTaux) type = "onUpdateReformeTaux";
const shouldUpdatePlafond = name.substring(0, 10) === "plafond_qf"; const shouldUpdatePlafond = name.substring(0, 10) === "plaf_qf";
if (shouldUpdatePlafond) type = "onUpdateReformePlafond"; if (shouldUpdatePlafond) type = "onUpdateReformePlafond";
return { name, type, value }; return { name, type, value };
......
...@@ -19,18 +19,18 @@ const changeValueArray = (arrayToChange, indexToChange, newValue) => { ...@@ -19,18 +19,18 @@ const changeValueArray = (arrayToChange, indexToChange, newValue) => {
const updateTaux = (prevState: IRState, name, value): IRState => { const updateTaux = (prevState: IRState, name, value): IRState => {
const identifier = parseInt(name.substring(4), 10); const identifier = parseInt(name.substring(4), 10);
let list = get(prevState, "bareme.taux"); let list = get(prevState, "bareme_ir_depuis_1945.taux");
list = changeValueArray(list, identifier, value); list = changeValueArray(list, identifier, value);
set(prevState, "bareme.taux", list); set(prevState, "bareme_ir_depuis_1945.taux", list);
return prevState; return prevState;
}; };
const updateBareme = (prevState: IRState, name, value): IRState => { const updateBareme = (prevState: IRState, name, value): IRState => {
if (Number.isNaN(value)) return prevState; if (Number.isNaN(value)) return prevState;
const identifier = parseInt(name.substring(5), 10); const identifier = parseInt(name.substring(5), 10);
let list = get(prevState, "bareme.seuils"); let list = get(prevState, "bareme_ir_depuis_1945.seuils");
list = changeValueArray(list, identifier, parseInt(value, 10)); list = changeValueArray(list, identifier, parseInt(value, 10));
set(prevState, "bareme.seuils", list); set(prevState, "bareme_ir_depuis_1945.seuils", list);
return prevState; return prevState;
}; };
...@@ -44,34 +44,34 @@ const updateGenerique = (prevState: IRState, name, value): IRState => { ...@@ -44,34 +44,34 @@ const updateGenerique = (prevState: IRState, name, value): IRState => {
}; };
const addTranche = (prevState: IRState): IRState => { const addTranche = (prevState: IRState): IRState => {
const seuils = get(prevState, "bareme.seuils"); const seuils = get(prevState, "bareme_ir_depuis_1945.seuils");
const newbt = seuils.length + 1; const newbt = seuils.length + 1;
const lastIndex = newbt - 2; const lastIndex = newbt - 2;
let lastSeuil = get(prevState, `bareme.seuils.${lastIndex}`); let lastSeuil = get(prevState, `bareme_ir_depuis_1945.seuils.${lastIndex}`);
lastSeuil += 1; lastSeuil += 1;
const nextSeuil = seuils.concat(lastSeuil); const nextSeuil = seuils.concat(lastSeuil);
set(prevState, "bareme.seuils", nextSeuil); set(prevState, "bareme_ir_depuis_1945.seuils", nextSeuil);
const taux = get(prevState, "bareme.taux"); const taux = get(prevState, "bareme_ir_depuis_1945.taux");
const lastTaux = get(prevState, `bareme.taux.${lastIndex}`); const lastTaux = get(prevState, `bareme_ir_depuis_1945.taux.${lastIndex}`);
const nextTaux = taux.concat(lastTaux); const nextTaux = taux.concat(lastTaux);
set(prevState, "bareme.taux", nextTaux); set(prevState, "bareme_ir_depuis_1945.taux", nextTaux);
return prevState; return prevState;
}; };
const removeTranche = (prevState: IRState): IRState => { const removeTranche = (prevState: IRState): IRState => {
const seuils = get(prevState, "bareme.seuils"); const seuils = get(prevState, "bareme_ir_depuis_1945.seuils");
const newnbt = seuils.length - 1; const newnbt = seuils.length - 1;
if (newnbt <= 0) return prevState; if (newnbt <= 0) return prevState;
const nextSeuils = seuils.slice(0, newnbt); const nextSeuils = seuils.slice(0, newnbt);
set(prevState, "bareme.seuils", nextSeuils); set(prevState, "bareme_ir_depuis_1945.seuils", nextSeuils);
const taux = get(prevState, "bareme.taux"); const taux = get(prevState, "bareme_ir_depuis_1945.taux");
const nextTaux = taux.slice(0, newnbt); const nextTaux = taux.slice(0, newnbt);
set(prevState, "bareme.taux", nextTaux); set(prevState, "bareme_ir_depuis_1945.taux", nextTaux);
return prevState; return prevState;
}; };
......
...@@ -3,7 +3,7 @@ import { IRState } from "../interfaces"; ...@@ -3,7 +3,7 @@ import { IRState } from "../interfaces";
export const BASE_IR_DEFAULT_STATE: IRState = { export const BASE_IR_DEFAULT_STATE: IRState = {
// Base = 2022 // Base = 2022
bareme: { bareme_ir_depuis_1945: {
seuils: [10225, 26070, 74545, 160336], seuils: [10225, 26070, 74545, 160336],
taux: [11, 30, 41, 45], taux: [11, 30, 41, 45],
}, },
...@@ -21,34 +21,56 @@ export const BASE_IR_DEFAULT_STATE: IRState = { ...@@ -21,34 +21,56 @@ export const BASE_IR_DEFAULT_STATE: IRState = {
}, },
partsSelonNombrePAC: [ partsSelonNombrePAC: [
{ {
celibataire: 1, divorce: 1, mariesOuPacses: 2, veuf: 1, celibataire: 1,
divorce: 1,
mariesOuPacses: 2,
veuf: 1,
}, },
{ {
celibataire: 1.5, divorce: 1.5, mariesOuPacses: 2.5, veuf: 2.5, celibataire: 1.5,
divorce: 1.5,
mariesOuPacses: 2.5,
veuf: 2.5,
}, },
{ {
celibataire: 2, divorce: 2, mariesOuPacses: 3, veuf: 3, celibataire: 2,
divorce: 2,
mariesOuPacses: 3,
veuf: 3,
}, },
{ {
celibataire: 3, divorce: 3, mariesOuPacses: 4, veuf: 4, celibataire: 3,
divorce: 3,
mariesOuPacses: 4,
veuf: 4,
}, },
{ {
celibataire: 4, divorce: 4, mariesOuPacses: 5, veuf: 5, celibataire: 4,
divorce: 4,
mariesOuPacses: 5,
veuf: 5,
}, },
{ {
celibataire: 5, divorce: 5, mariesOuPacses: 6, veuf: 6, celibataire: 5,
divorce: 5,
mariesOuPacses: 6,
veuf: 6,
}, },
{ {
celibataire: 6, divorce: 6, mariesOuPacses: 7, veuf: 7, celibataire: 6,
divorce: 6,
mariesOuPacses: 7,
veuf: 7,
}, },
], ],
}, },
calcul_impot_revenu: {
plaf_qf: {
decote: { decote: {
seuil_celib: 790, seuil_celib: 790,
seuil_couple: 1307, seuil_couple: 1307,
taux: 45.25, taux: 45.25,
}, },
plafond_qf: {
abat_dom: { abat_dom: {
plaf_GuadMarReu: 2450, plaf_GuadMarReu: 2450,
plaf_GuyMay: 4050, plaf_GuyMay: 4050,
...@@ -61,6 +83,7 @@ export const BASE_IR_DEFAULT_STATE: IRState = { ...@@ -61,6 +83,7 @@ export const BASE_IR_DEFAULT_STATE: IRState = {
reduc_postplafond: 1587, reduc_postplafond: 1587,
reduc_postplafond_veuf: 1772, reduc_postplafond_veuf: 1772,
}, },
},
}; };
export const ir = (state = BASE_IR_DEFAULT_STATE) => state; export const ir = (state = BASE_IR_DEFAULT_STATE) => state;
/* eslint-disable camelcase */ /* eslint-disable camelcase */
export interface IRState { export interface IRState {
bareme: { bareme_ir_depuis_1945: {
seuils: number[]; seuils: number[];
taux: number[]; taux: number[];
}; };
decote: {
seuil_celib: number;
seuil_couple: number;
taux: number;
};
plafond_qf: {
abat_dom: {
plaf_GuadMarReu: number;
plaf_GuyMay: number;
taux_GuadMarReu: number;
taux_GuyMay: number;
};
celib: number;
celib_enf: number;
maries_ou_pacses: number;
reduc_postplafond: number;
reduc_postplafond_veuf: number;
};
calculNombreParts: { calculNombreParts: {
partsSelonNombrePAC: { partsSelonNombrePAC: {
veuf: number; veuf: number;
mariesOuPacses: number; mariesOuPacses: number;
celibataire: number; celibataire: number;
divorce: number divorce: number;
}[]; }[];
partsParPACAuDela: number; partsParPACAuDela: number;
partsParPACChargePartagee: { partsParPACChargePartagee: {
zeroChargePrincipale: { zeroChargePrincipale: {
deuxPremiers: number; deuxPremiers: number;
suivants: number suivants: number;
}; };
unChargePrincipale: { unChargePrincipale: {
premier: number; premier: number;
suivants: number suivants: number;
}; };
deuxOuPlusChargePrincipale: { deuxOuPlusChargePrincipale: {
suivants: number suivants: number;
}; };
}; };
bonusParentIsole: { bonusParentIsole: {
...@@ -48,5 +30,25 @@ export interface IRState { ...@@ -48,5 +30,25 @@ export interface IRState {
zeroChargePrincipaleUnPartage: number; zeroChargePrincipaleUnPartage: number;
zeroChargeprincipaleDeuxOuPlusPartage: number; zeroChargeprincipaleDeuxOuPlusPartage: number;
}; };
} };
calcul_impot_revenu: {
plaf_qf: {
decote: {
seuil_celib: number;
seuil_couple: number;
taux: number;
};
abat_dom: {
plaf_GuadMarReu: number;
plaf_GuyMay: number;
taux_GuadMarReu: number;
taux_GuyMay: number;
};
celib: number;
celib_enf: number;
maries_ou_pacses: number;
reduc_postplafond: number;
reduc_postplafond_veuf: number;
};
};
} }
...@@ -4,7 +4,7 @@ import { IRState } from "../interfaces"; ...@@ -4,7 +4,7 @@ import { IRState } from "../interfaces";
export const PLF_IR_DEFAULT_STATE: IRState = { export const PLF_IR_DEFAULT_STATE: IRState = {
// PLF 2023 désactivé tant que égal à la loi en vigueur // PLF 2023 désactivé tant que égal à la loi en vigueur
// dans : redux/reducers/parameters/base/ir.ts // dans : redux/reducers/parameters/base/ir.ts
bareme: { bareme_ir_depuis_1945: {
seuils: [10777, 27478, 78570, 168994], seuils: [10777, 27478, 78570, 168994],
taux: [11, 30, 41, 45], taux: [11, 30, 41, 45],
}, },
...@@ -22,34 +22,56 @@ export const PLF_IR_DEFAULT_STATE: IRState = { ...@@ -22,34 +22,56 @@ export const PLF_IR_DEFAULT_STATE: IRState = {
}, },
partsSelonNombrePAC: [ partsSelonNombrePAC: [
{ {
celibataire: 1, divorce: 1, mariesOuPacses: 2, veuf: 1, celibataire: 1,
divorce: 1,
mariesOuPacses: 2,
veuf: 1,
}, },
{ {
celibataire: 1.5, divorce: 1.5, mariesOuPacses: 2.5, veuf: 2.5, celibataire: 1.5,
divorce: 1.5,
mariesOuPacses: 2.5,
veuf: 2.5,
}, },
{ {
celibataire: 2, divorce: 2, mariesOuPacses: 3, veuf: 3, celibataire: 2,
divorce: 2,
mariesOuPacses: 3,
veuf: 3,
}, },
{ {
celibataire: 3, divorce: 3, mariesOuPacses: 4, veuf: 4, celibataire: 3,
divorce: 3,
mariesOuPacses: 4,
veuf: 4,
}, },
{ {
celibataire: 4, divorce: 4, mariesOuPacses: 5, veuf: 5, celibataire: 4,
divorce: 4,
mariesOuPacses: 5,
veuf: 5,
}, },
{ {
celibataire: 5, divorce: 5, mariesOuPacses: 6, veuf: 6, celibataire: 5,
divorce: 5,
mariesOuPacses: 6,
veuf: 6,
}, },
{ {
celibataire: 6, divorce: 6, mariesOuPacses: 7, veuf: 7, celibataire: 6,
divorce: 6,
mariesOuPacses: 7,
veuf: 7,
}, },
], ],
}, },
calcul_impot_revenu: {
plaf_qf: {
decote: { decote: {
seuil_celib: 833, seuil_celib: 833,
seuil_couple: 1378, seuil_couple: 1378,
taux: 45.25, taux: 45.25,
}, },
plafond_qf: {
abat_dom: { abat_dom: {
plaf_GuadMarReu: 2450, plaf_GuadMarReu: 2450,
plaf_GuyMay: 4050, plaf_GuyMay: 4050,
...@@ -62,6 +84,7 @@ export const PLF_IR_DEFAULT_STATE: IRState = { ...@@ -62,6 +84,7 @@ export const PLF_IR_DEFAULT_STATE: IRState = {
reduc_postplafond: 1673, reduc_postplafond: 1673,
reduc_postplafond_veuf: 1868, reduc_postplafond_veuf: 1868,
}, },
},
}; };
export const ir = (state = PLF_IR_DEFAULT_STATE) => state; export const ir = (state = PLF_IR_DEFAULT_STATE) => state;
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment