fix(rc): decoupler detection impact modal des modulateurs

This commit is contained in:
Alexis Burnaz 2026-04-20 10:26:17 +02:00
parent f57855d143
commit a8d0e69585
1 changed files with 19 additions and 11 deletions

View File

@ -82,26 +82,36 @@ window.initSubmenuForm = initSubmenuForm;// Module IIFE pour éviter la pollutio
const data = await response.json();
if (data.valid) {
modRCActRCC = data.objRetourne;
} else {
console.warn('Modulateur activiteRCC indisponible');
}
const response2 = await fetch('/rc/modulo/marchandiseRC');
const data2 = await response2.json();
if (data2.valid) {
modRCMar = data2.objRetourne;
} else {
console.warn('Modulateur marchandiseRC indisponible');
}
const response3 = await fetch('/rc/modulo/zoneRC');
const data3 = await response3.json();
if (data3.valid) {
modRCZone = data3.objRetourne;
} else {
console.warn('Modulateur zoneRC indisponible');
}
const response4 = await fetch('/rc/modulo/activiteComplRC');
const data4 = await response4.json();
if (data4.valid) {
modRCActCompl = data4.objRetourne;
} else {
console.warn('Modulateur activiteComplRC indisponible');
}
const response5 = await fetch('/rc/modulo/garAdditionelRC');
const data5 = await response5.json();
if (data5.valid) {
modRCGarAdd = data5.objRetourne;
} else {
console.warn('Modulateur garAdditionelRC indisponible');
}
} catch (error) {
console.error('Erreur lors du chargement des modulateurs:', error);
@ -178,8 +188,6 @@ window.initSubmenuForm = initSubmenuForm;// Module IIFE pour éviter la pollutio
}
function checkActivityImpact(activityData) {
if (!modRCActRCC) return false;
const activities = ['checkVoiturier', 'checkCommissionnaire', 'checkDemenageur', 'checkLogistique', 'checkAutocariste', 'checkAutres'];
for (let act of activities) {
if (activityData[act] !== tarifOriginalData[act]) return true;
@ -192,8 +200,6 @@ window.initSubmenuForm = initSubmenuForm;// Module IIFE pour éviter la pollutio
}
function checkMarchandiseImpact(marchandiseData) {
if (!modRCMar) return false;
const normalizeArray = (arr) => {
if (!arr) return [];
const normalized = Array.isArray(arr) ? arr : (typeof arr === 'string' ? JSON.parse(arr) : []);
@ -213,7 +219,6 @@ window.initSubmenuForm = initSubmenuForm;// Module IIFE pour éviter la pollutio
function getMaxZoneCoefficient(zones) {
let maxRCC = 1;
let maxRCE = 1;
if (!modRCZone) return { maxRCC, maxRCE };
const zoneLabels = [
"France Métropolitaine et pays limitrophes",
@ -227,13 +232,21 @@ window.initSubmenuForm = initSubmenuForm;// Module IIFE pour éviter la pollutio
for (let i = 1; i <= 6; i++) {
if (zones[`zone${i}`]) {
const zoneKey = zoneLabels[i - 1];
if (modRCZone[zoneKey]) {
if (modRCZone && modRCZone[zoneKey]) {
if (typeof modRCZone[zoneKey].modRCC === "number") {
maxRCC = Math.max(maxRCC, modRCZone[zoneKey].modRCC);
} else {
maxRCC = Math.max(maxRCC, i);
}
if (typeof modRCZone[zoneKey].modRCE === "number") {
maxRCE = Math.max(maxRCE, modRCZone[zoneKey].modRCE);
} else {
maxRCE = Math.max(maxRCE, i);
}
} else {
// Fallback sans modulateur: on considère la zone la plus "forte" sélectionnée.
maxRCC = Math.max(maxRCC, i);
maxRCE = Math.max(maxRCE, i);
}
}
}
@ -242,15 +255,12 @@ window.initSubmenuForm = initSubmenuForm;// Module IIFE pour éviter la pollutio
}
function checkZoneImpact(zoneData) {
if (!modRCZone) return false;
const originalMax = getMaxZoneCoefficient(tarifOriginalData);
const currentMax = getMaxZoneCoefficient(zoneData);
return originalMax.maxRCC !== currentMax.maxRCC || originalMax.maxRCE !== currentMax.maxRCE;
}
function checkActiviteComplImpact(activiteComplData) {
if (!modRCActCompl) return false;
const activiteKeys = ['activitesVoiturier', 'activitesCommissionnaire', 'activitesDemenageur', 'activitesLogistique'];
for (let key of activiteKeys) {
const original = Array.isArray(tarifOriginalData[key]) ? tarifOriginalData[key] : (tarifOriginalData[key] ? JSON.parse(tarifOriginalData[key]) : []);
@ -1247,8 +1257,6 @@ window.initSubmenuForm = initSubmenuForm;// Module IIFE pour éviter la pollutio
}
function checkGarantieRCCImpact(garantieData) {
if (!modRCActCompl && !modRCGarAdd) return false;
const garantiesImpactantes = ['contenant-confie', 'tppc'];
const originalGaranties = tarifOriginalData?.garantiesRCC || [];
const currentGaranties = garantieData || [];