Skip to content
Snippets Groups Projects
Commit 72c0b066 authored by Emmanuel Raviart's avatar Emmanuel Raviart
Browse files

Répare l'activation/désactivation de courbes

parent ff7a95de
No related branches found
No related tags found
No related merge requests found
...@@ -169,244 +169,7 @@ ...@@ -169,244 +169,7 @@
visibleDecompositionsGraph !== undefined visibleDecompositionsGraph !== undefined
) { ) {
untrack(() => { untrack(() => {
const ressourcesBrutes = [ updateVariableValuesAndCustomizations()
"chomage_brut",
"remuneration_brute",
"retraite_brute",
]
if (waterfall.name === "brut_to_disponible") {
const decompositions = visibleDecompositionsGraph.filter(
(decomposition) =>
!decomposition.trunk ||
ressourcesBrutes.includes(decomposition.decomposition.name) ||
decomposition.decomposition.name === "revenu_disponible",
)
const versementBrutIndex = decompositions.findIndex((decomposition) =>
ressourcesBrutes.includes(decomposition.decomposition.name),
)
const prestationsIndex = decompositions.findIndex(
(decomposition) =>
decomposition.decomposition.name === "prestations_sociales",
)
const revenuIndex = decompositions.findIndex(
(decomposition) =>
decomposition.decomposition.name === "revenu_disponible",
)
const prelevementsDecompositions = [
...decompositions.slice(0, versementBrutIndex),
...decompositions
.slice(versementBrutIndex, prestationsIndex)
.filter(
(decomposition) =>
ressourcesBrutes.includes(decomposition.decomposition.name) ||
getLatestVisibleCalculation(decomposition.rows)?.isNegative,
),
]
const complementsDeRessourcesDecompositions = decompositions
.slice(versementBrutIndex, prestationsIndex)
.filter(
(decomposition) =>
!ressourcesBrutes.includes(decomposition.decomposition.name) &&
!getLatestVisibleCalculation(decomposition.rows)?.isNegative,
)
const prestationsDecompositions = decompositions.slice(
prestationsIndex,
revenuIndex,
)
const revenuDisponibleDecomposition = decompositions[revenuIndex]
const revenuDisponibleValues = generateValues([
revenuDisponibleDecomposition,
])
const [
prelevementsValues,
complementsDeRessourcesValues,
prestationsValues,
] = stackValues(
generateValues(prelevementsDecompositions),
generateValues(complementsDeRessourcesDecompositions),
generateValues(prestationsDecompositions, true),
)
variableValues = [
prelevementsValues,
complementsDeRessourcesValues,
prestationsValues,
revenuDisponibleValues,
]
const splitIndex =
prelevementsValues.findLastIndex((variable) =>
ressourcesBrutes.includes(variable.name),
) + 1
variableGroups = [
{
variables: [
...prelevementsValues.slice(0, splitIndex).reverse(),
...complementsDeRessourcesValues,
...revenuDisponibleValues,
],
},
{
css: "text-red-600",
label: "Prélèvements",
name: "prelevements",
hideOpen: true,
variables: prelevementsValues.slice(splitIndex),
},
{
css: "text-green-800",
label: "Prestations",
name: "prestations",
hideOpen: true,
variables: prestationsValues,
},
]
for (const [groupIndex, group] of variableGroups.entries()) {
for (const variable of group.variables) {
for (const row of variable.rows) {
const key = `${variable.name}_${row.calculationName}`
if (
variableCustomizations[variable.name] === undefined ||
(variableCustomizations[key] === undefined &&
row.calculationName !== "law" &&
row.calculationName !== "revaluation")
) {
const types = ["base", "prelevement", "prestation"]
variableCustomizations[key] =
variableCustomizations[
getVariableCustomizationName(
variable.parent,
row.calculationName,
)
] ??
defaultCustomization[waterfall.name][types[groupIndex]][
row.calculationName === "revaluation"
? "law"
: row.calculationName
]
}
}
}
}
} else {
const decompositions = visibleDecompositionsGraph.filter(
(decomposition) =>
!decomposition.trunk ||
decomposition.decomposition.name === "remuneration_brute" ||
decomposition.decomposition.name === "salaire_super_brut",
)
const allValues = generateValues(decompositions)
const versementBrutIndex = allValues.findIndex(
(value) => value.name === "remuneration_brute",
)
const allegementGeneralIndex = allValues.findIndex(
(value) => value.name === "allegement_general",
)
const versementBrutValues = allValues.slice(0, versementBrutIndex + 1)
const superBrutValues = allValues.slice(-1)
const cotisationsValues = allValues.slice(
versementBrutIndex + 1,
allegementGeneralIndex,
)
const allegementsValues = allValues.slice(allegementGeneralIndex, -1)
variableValues = [
versementBrutValues,
cotisationsValues,
allegementsValues,
superBrutValues,
]
variableGroups = [
{
variables: [
...allValues.slice(0, versementBrutIndex + 1),
...allValues.slice(-1),
],
},
{
css: "text-green-800",
label: "Cotisations employeur",
name: "cotisations_employeur",
hideOpen: true,
variables: allValues.slice(
allValues.findIndex(
(value) =>
value.name === "cotisations_employeur_securite_sociale",
),
allegementGeneralIndex,
),
},
{
css: "text-red-600",
label: "Allègements",
name: "allegements",
hideOpen: true,
variables: allValues.slice(allegementGeneralIndex, -1),
},
]
for (const [groupIndex, group] of variableGroups.entries()) {
for (const variable of group.variables) {
for (const row of variable.rows) {
const key = `${variable.name}_${row.calculationName}`
if (
variableCustomizations[variable.name] === undefined ||
(variableCustomizations[key] === undefined &&
row.calculationName !== "law" &&
row.calculationName !== "revaluation")
) {
const types = ["base", "cotisation", "allegement"]
variableCustomizations[key] =
variableCustomizations[
getVariableCustomizationName(
variable.parent,
row.calculationName,
)
] ??
defaultCustomization[waterfall.name][types[groupIndex]][
row.calculationName === "revaluation"
? "law"
: row.calculationName
]
}
}
}
}
}
maxVariableValue = variableValues.reduce(
(max: number, values: VariableGraph[]) => {
max = Math.max(
max,
Math.max(
...values.map(({ rows }) =>
Math.max(
...rows.map(({ summedValues }) =>
Math.max(...summedValues),
),
),
),
),
)
return max
},
0,
)
}) })
} }
}) })
...@@ -871,6 +634,245 @@ ...@@ -871,6 +634,245 @@
requestAxesCalculation() requestAxesCalculation()
} }
} }
function updateVariableValuesAndCustomizations() {
const ressourcesBrutes = [
"chomage_brut",
"remuneration_brute",
"retraite_brute",
]
if (waterfall.name === "brut_to_disponible") {
const decompositions = visibleDecompositionsGraph!.filter(
(decomposition) =>
!decomposition.trunk ||
ressourcesBrutes.includes(decomposition.decomposition.name) ||
decomposition.decomposition.name === "revenu_disponible",
)
const versementBrutIndex = decompositions.findIndex((decomposition) =>
ressourcesBrutes.includes(decomposition.decomposition.name),
)
const prestationsIndex = decompositions.findIndex(
(decomposition) =>
decomposition.decomposition.name === "prestations_sociales",
)
const revenuIndex = decompositions.findIndex(
(decomposition) =>
decomposition.decomposition.name === "revenu_disponible",
)
const prelevementsDecompositions = [
...decompositions.slice(0, versementBrutIndex),
...decompositions
.slice(versementBrutIndex, prestationsIndex)
.filter(
(decomposition) =>
ressourcesBrutes.includes(decomposition.decomposition.name) ||
getLatestVisibleCalculation(decomposition.rows)?.isNegative,
),
]
const complementsDeRessourcesDecompositions = decompositions
.slice(versementBrutIndex, prestationsIndex)
.filter(
(decomposition) =>
!ressourcesBrutes.includes(decomposition.decomposition.name) &&
!getLatestVisibleCalculation(decomposition.rows)?.isNegative,
)
const prestationsDecompositions = decompositions.slice(
prestationsIndex,
revenuIndex,
)
const revenuDisponibleDecomposition = decompositions[revenuIndex]
const revenuDisponibleValues = generateValues([
revenuDisponibleDecomposition,
])
const [
prelevementsValues,
complementsDeRessourcesValues,
prestationsValues,
] = stackValues(
generateValues(prelevementsDecompositions),
generateValues(complementsDeRessourcesDecompositions),
generateValues(prestationsDecompositions, true),
)
variableValues = [
prelevementsValues,
complementsDeRessourcesValues,
prestationsValues,
revenuDisponibleValues,
]
const splitIndex =
prelevementsValues.findLastIndex((variable) =>
ressourcesBrutes.includes(variable.name),
) + 1
variableGroups = [
{
variables: [
...prelevementsValues.slice(0, splitIndex).reverse(),
...complementsDeRessourcesValues,
...revenuDisponibleValues,
],
},
{
css: "text-red-600",
label: "Prélèvements",
name: "prelevements",
hideOpen: true,
variables: prelevementsValues.slice(splitIndex),
},
{
css: "text-green-800",
label: "Prestations",
name: "prestations",
hideOpen: true,
variables: prestationsValues,
},
]
for (const [groupIndex, group] of variableGroups.entries()) {
for (const variable of group.variables) {
for (const row of variable.rows) {
const key = `${variable.name}_${row.calculationName}`
if (
variableCustomizations[key] === undefined &&
((row.calculationName !== "law" &&
row.calculationName !== "revaluation") ||
variableCustomizations[variable.name] === undefined)
) {
const types = ["base", "prelevement", "prestation"]
variableCustomizations[key] =
variableCustomizations[
getVariableCustomizationName(
variable.parent,
row.calculationName,
)
] ??
defaultCustomization[waterfall.name][types[groupIndex]][
row.calculationName === "revaluation"
? "law"
: row.calculationName
]
}
}
}
}
} else {
const decompositions = visibleDecompositionsGraph.filter(
(decomposition) =>
!decomposition.trunk ||
decomposition.decomposition.name === "remuneration_brute" ||
decomposition.decomposition.name === "salaire_super_brut",
)
const allValues = generateValues(decompositions)
const versementBrutIndex = allValues.findIndex(
(value) => value.name === "remuneration_brute",
)
const allegementGeneralIndex = allValues.findIndex(
(value) => value.name === "allegement_general",
)
const versementBrutValues = allValues.slice(0, versementBrutIndex + 1)
const superBrutValues = allValues.slice(-1)
const cotisationsValues = allValues.slice(
versementBrutIndex + 1,
allegementGeneralIndex,
)
const allegementsValues = allValues.slice(allegementGeneralIndex, -1)
variableValues = [
versementBrutValues,
cotisationsValues,
allegementsValues,
superBrutValues,
]
variableGroups = [
{
variables: [
...allValues.slice(0, versementBrutIndex + 1),
...allValues.slice(-1),
],
},
{
css: "text-green-800",
label: "Cotisations employeur",
name: "cotisations_employeur",
hideOpen: true,
variables: allValues.slice(
allValues.findIndex(
(value) =>
value.name === "cotisations_employeur_securite_sociale",
),
allegementGeneralIndex,
),
},
{
css: "text-red-600",
label: "Allègements",
name: "allegements",
hideOpen: true,
variables: allValues.slice(allegementGeneralIndex, -1),
},
]
for (const [groupIndex, group] of variableGroups.entries()) {
for (const variable of group.variables) {
for (const row of variable.rows) {
const key = `${variable.name}_${row.calculationName}`
if (
variableCustomizations[key] === undefined &&
((row.calculationName !== "law" &&
row.calculationName !== "revaluation") ||
variableCustomizations[variable.name] === undefined)
) {
const types = ["base", "cotisation", "allegement"]
variableCustomizations[key] =
variableCustomizations[
getVariableCustomizationName(
variable.parent,
row.calculationName,
)
] ??
defaultCustomization[waterfall.name][types[groupIndex]][
row.calculationName === "revaluation"
? "law"
: row.calculationName
]
}
}
}
}
}
maxVariableValue = variableValues.reduce(
(max: number, values: VariableGraph[]) => {
max = Math.max(
max,
Math.max(
...values.map(({ rows }) =>
Math.max(
...rows.map(({ summedValues }) => Math.max(...summedValues)),
),
),
),
)
return max
},
0,
)
}
</script> </script>
{#if situation.slider !== undefined && visibleDecompositionsGraph !== undefined} {#if situation.slider !== undefined && visibleDecompositionsGraph !== undefined}
...@@ -1065,6 +1067,7 @@ ...@@ -1065,6 +1067,7 @@
row.calculationName, row.calculationName,
) )
].selected = isSelected ? "false" : "true" ].selected = isSelected ? "false" : "true"
updateVariableValuesAndCustomizations()
}} }}
> >
<div <div
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment