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