From a8d0e69585f678ca8987a35f38c7ddb8aa9a50d7 Mon Sep 17 00:00:00 2001 From: Alexis Burnaz <48258099+alxsbrz@users.noreply.github.com> Date: Mon, 20 Apr 2026 10:26:17 +0200 Subject: [PATCH] fix(rc): decoupler detection impact modal des modulateurs --- ecole/public/js/projet-form-rc.js | 30 +++++++++++++++++++----------- 1 file changed, 19 insertions(+), 11 deletions(-) diff --git a/ecole/public/js/projet-form-rc.js b/ecole/public/js/projet-form-rc.js index a608f715..c776f5e0 100644 --- a/ecole/public/js/projet-form-rc.js +++ b/ecole/public/js/projet-form-rc.js @@ -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 || [];