{"ScriptPreparationCode":"const consommations = [{\u0022annee\u0022:2023,\u0022mois\u0022:2,\u0022fiabilite_conso\u0022:\u0022A\u0022},{\u0022annee\u0022:2023,\u0022mois\u0022:3,\u0022fiabilite_conso\u0022:\u0022E\u0022,\u0022consommation\u0022:{\u0022litre\u0022:19624,\u0022m3\u0022:19.624,\u0022prix_m3_estime\u0022:64.37},\u0022index\u0022:{\u0022litre\u0022:553554,\u0022m3\u0022:553.554}},{\u0022annee\u0022:2023,\u0022mois\u0022:4,\u0022fiabilite_conso\u0022:\u0022M\u0022,\u0022consommation\u0022:{\u0022litre\u0022:20380,\u0022m3\u0022:20.38,\u0022prix_m3_estime\u0022:66.85},\u0022index\u0022:{\u0022litre\u0022:573178,\u0022m3\u0022:573.178}},{\u0022annee\u0022:2023,\u0022mois\u0022:5,\u0022fiabilite_conso\u0022:\u0022M\u0022,\u0022consommation\u0022:{\u0022litre\u0022:19293,\u0022m3\u0022:19.293,\u0022prix_m3_estime\u0022:63.28},\u0022index\u0022:{\u0022litre\u0022:593558,\u0022m3\u0022:593.558}},{\u0022annee\u0022:2023,\u0022mois\u0022:6,\u0022fiabilite_conso\u0022:\u0022M\u0022,\u0022consommation\u0022:{\u0022litre\u0022:20048,\u0022m3\u0022:20.048,\u0022prix_m3_estime\u0022:65.76},\u0022index\u0022:{\u0022litre\u0022:612851,\u0022m3\u0022:612.851}},{\u0022annee\u0022:2023,\u0022mois\u0022:7,\u0022fiabilite_conso\u0022:\u0022E\u0022,\u0022consommation\u0022:{\u0022litre\u0022:22635,\u0022m3\u0022:22.635,\u0022prix_m3_estime\u0022:74.24},\u0022index\u0022:{\u0022litre\u0022:632899,\u0022m3\u0022:632.899}},{\u0022annee\u0022:2023,\u0022mois\u0022:8,\u0022fiabilite_conso\u0022:\u0022M\u0022,\u0022consommation\u0022:{\u0022litre\u0022:23212,\u0022m3\u0022:23.212,\u0022prix_m3_estime\u0022:76.14},\u0022index\u0022:{\u0022litre\u0022:655534,\u0022m3\u0022:655.534}},{\u0022annee\u0022:2023,\u0022mois\u0022:9,\u0022fiabilite_conso\u0022:\u0022M\u0022,\u0022consommation\u0022:{\u0022litre\u0022:18667,\u0022m3\u0022:18.667,\u0022prix_m3_estime\u0022:61.23},\u0022index\u0022:{\u0022litre\u0022:678746,\u0022m3\u0022:678.746}},{\u0022annee\u0022:2023,\u0022mois\u0022:10,\u0022fiabilite_conso\u0022:\u0022E\u0022,\u0022consommation\u0022:{\u0022litre\u0022:3319,\u0022m3\u0022:3.319,\u0022prix_m3_estime\u0022:10.89},\u0022index\u0022:{\u0022litre\u0022:697413,\u0022m3\u0022:697.413}},{\u0022annee\u0022:2023,\u0022mois\u0022:11,\u0022fiabilite_conso\u0022:\u0022M\u0022,\u0022consommation\u0022:{\u0022litre\u0022:481,\u0022m3\u0022:0.481,\u0022prix_m3_estime\u0022:1.58},\u0022index\u0022:{\u0022litre\u0022:700732,\u0022m3\u0022:700.732}},{\u0022annee\u0022:2023,\u0022mois\u0022:12,\u0022fiabilite_conso\u0022:\u0022M\u0022,\u0022consommation\u0022:{\u0022litre\u0022:1418,\u0022m3\u0022:1.418,\u0022prix_m3_estime\u0022:4.65},\u0022index\u0022:{\u0022litre\u0022:701213,\u0022m3\u0022:701.213}},{\u0022annee\u0022:2024,\u0022mois\u0022:1,\u0022fiabilite_conso\u0022:\u0022M\u0022,\u0022consommation\u0022:{\u0022litre\u0022:2283,\u0022m3\u0022:2.283,\u0022prix_m3_estime\u0022:7.49},\u0022index\u0022:{\u0022litre\u0022:702631,\u0022m3\u0022:702.631}},{\u0022annee\u0022:2024,\u0022mois\u0022:2,\u0022fiabilite_conso\u0022:\u0022M\u0022,\u0022consommation\u0022:{\u0022litre\u0022:4054,\u0022m3\u0022:4.054,\u0022prix_m3_estime\u0022:13.3},\u0022index\u0022:{\u0022litre\u0022:704914,\u0022m3\u0022:704.914}},{\u0022annee\u0022:2024,\u0022mois\u0022:3,\u0022fiabilite_conso\u0022:\u0022E\u0022,\u0022consommation\u0022:{\u0022litre\u0022:7894,\u0022m3\u0022:7.894,\u0022prix_m3_estime\u0022:25.89},\u0022index\u0022:{\u0022litre\u0022:708968,\u0022m3\u0022:708.968}},{\u0022annee\u0022:2024,\u0022mois\u0022:4,\u0022fiabilite_conso\u0022:\u0022M\u0022,\u0022consommation\u0022:{\u0022litre\u0022:9116,\u0022m3\u0022:9.116,\u0022prix_m3_estime\u0022:29.9},\u0022index\u0022:{\u0022litre\u0022:716862,\u0022m3\u0022:716.862}},{\u0022annee\u0022:2024,\u0022mois\u0022:5,\u0022fiabilite_conso\u0022:\u0022E\u0022,\u0022consommation\u0022:{\u0022litre\u0022:9993,\u0022m3\u0022:9.993,\u0022prix_m3_estime\u0022:32.78},\u0022index\u0022:{\u0022litre\u0022:725978,\u0022m3\u0022:725.978}},{\u0022annee\u0022:2024,\u0022mois\u0022:6,\u0022fiabilite_conso\u0022:\u0022E\u0022,\u0022consommation\u0022:{\u0022litre\u0022:5710,\u0022m3\u0022:5.71,\u0022prix_m3_estime\u0022:18.73},\u0022index\u0022:{\u0022litre\u0022:735971,\u0022m3\u0022:735.971}},{\u0022annee\u0022:2024,\u0022mois\u0022:6,\u0022fiabilite_conso\u0022:\u0022E\u0022,\u0022consommation\u0022:{\u0022litre\u0022:972,\u0022m3\u0022:0.972,\u0022prix_m3_estime\u0022:3.19},\u0022index\u0022:{\u0022litre\u0022:619,\u0022m3\u0022:0.619}},{\u0022annee\u0022:2024,\u0022mois\u0022:7,\u0022fiabilite_conso\u0022:\u0022E\u0022,\u0022consommation\u0022:{\u0022litre\u0022:7604,\u0022m3\u0022:7.604,\u0022prix_m3_estime\u0022:24.94},\u0022index\u0022:{\u0022litre\u0022:1591,\u0022m3\u0022:1.591}},{\u0022annee\u0022:2024,\u0022mois\u0022:8,\u0022fiabilite_conso\u0022:\u0022M\u0022,\u0022consommation\u0022:{\u0022litre\u0022:8279,\u0022m3\u0022:8.279,\u0022prix_m3_estime\u0022:27.16},\u0022index\u0022:{\u0022litre\u0022:9195,\u0022m3\u0022:9.195}},{\u0022annee\u0022:2024,\u0022mois\u0022:9,\u0022fiabilite_conso\u0022:\u0022M\u0022,\u0022consommation\u0022:{\u0022litre\u0022:7006,\u0022m3\u0022:7.006,\u0022prix_m3_estime\u0022:22.98},\u0022index\u0022:{\u0022litre\u0022:17474,\u0022m3\u0022:17.474}},{\u0022annee\u0022:2024,\u0022mois\u0022:10,\u0022fiabilite_conso\u0022:\u0022E\u0022,\u0022consommation\u0022:{\u0022litre\u0022:6036,\u0022m3\u0022:6.036,\u0022prix_m3_estime\u0022:19.8},\u0022index\u0022:{\u0022litre\u0022:24480,\u0022m3\u0022:24.48}},{\u0022annee\u0022:2024,\u0022mois\u0022:11,\u0022fiabilite_conso\u0022:\u0022A\u0022},{\u0022annee\u0022:2024,\u0022mois\u0022:12,\u0022fiabilite_conso\u0022:\u0022A\u0022},{\u0022annee\u0022:2025,\u0022mois\u0022:1,\u0022fiabilite_conso\u0022:\u0022A\u0022},{\u0022annee\u0022:2025,\u0022mois\u0022:2,\u0022fiabilite_conso\u0022:\u0022A\u0022}]\r\n","TestCases":[{"Name":"test on loop for each","Code":"const getConsommationObjectDate = (\r\n annee,\r\n mois,\r\n jour,\r\n) =\u003E ({\r\n annee,\r\n mois,\r\n jour,\r\n});\r\n\r\nconst consommationIndisponibleObjectData = {state: \u0027INDISPONIBLE\u0027}\r\n\r\nconst fusionState = (\r\n actual,\r\n added,\r\n) =\u003E\r\n added === \u0027A\u0027\r\n ? actual ?? \u0027INDISPONIBLE\u0027\r\n : actual === \u0027ESTIMEE\u0027 || added === \u0027E\u0027\r\n ? \u0027ESTIMEE\u0027\r\n : \u0027MESUREE\u0027;\r\n\r\nconst fusionConsommationObjectData = (\r\n actual,\r\n added,\r\n) =\u003E ({\r\n volume: (actual?.volume ?? 0) \u002B (added?.litre ?? 0),\r\n prix:\r\n actual?.prix || added?.prix_m3_estime\r\n ? (actual?.prix ?? 0) \u002B (added?.prix_m3_estime ?? 0)\r\n : undefined,\r\n});\r\n\r\nconst fusionData = (\r\n actual,\r\n added,\r\n) =\u003E ({\r\n state: fusionState(actual.state, added.fiabilite_conso),\r\n consommation:\r\n actual.consommation || added.consommation\r\n ? fusionConsommationObjectData(actual.consommation, added.consommation)\r\n : undefined,\r\n ecoulement:\r\n actual.ecoulement || added.ecoulement\r\n ? fusionConsommationObjectData(actual.ecoulement, added.ecoulement)\r\n : undefined,\r\n unit: \u0027L\u0027,\r\n});\r\n\r\n const result= [];\r\n let currentYear;\r\n let currentMonth;\r\n let currentData = {state: \u0027INDISPONIBLE\u0027};\r\n\r\n consommations.forEach((conso, index) =\u003E {\r\n if (index === 0) {\r\n currentYear = conso.annee;\r\n currentMonth = conso.mois;\r\n currentData = fusionData(consommationIndisponibleObjectData, conso);\r\n } else if (conso.annee === currentYear \u0026\u0026 conso.mois === currentMonth) {\r\n currentData = fusionData(currentData, conso);\r\n } else {\r\n result.push({\r\n date: getConsommationObjectDate(currentYear, currentMonth - 1),\r\n data: currentData,\r\n });\r\n currentYear = conso.annee;\r\n currentMonth = conso.mois;\r\n currentData = fusionData(consommationIndisponibleObjectData, conso);\r\n }\r\n if (index === consommations.length - 1) {\r\n result.push({\r\n date: getConsommationObjectDate(currentYear, currentMonth - 1),\r\n data: currentData,\r\n });\r\n }\r\n });","IsDeferred":false},{"Name":"test two loop","Code":"const getConsommationObjectDate = (\r\n annee,\r\n mois,\r\n jour,\r\n) =\u003E ({\r\n annee,\r\n mois,\r\n jour,\r\n});\r\n\r\nconst getConsommationObjectData = (\r\n consommation,\r\n) =\u003E\r\n consommation\r\n ? {\r\n volume: consommation.litre,\r\n prix: consommation?.prix_m3_estime,\r\n }\r\n : undefined;\r\n\r\nconst getConsommationMensuelleObjectData = (\r\n consommation,\r\n) =\u003E ({\r\n state:\r\n consommation.fiabilite_conso === \u0027M\u0027\r\n ? \u0027MESUREE\u0027\r\n : \u0027ESTIMEE\u0027,\r\n consommation: getConsommationObjectData(consommation.consommation),\r\n ecoulement: getConsommationObjectData(consommation.ecoulement),\r\n unit: \u0027L\u0027,\r\n});\r\n\r\nconst consommationIndisponibleObjectData = {state: \u0027INDISPONIBLE\u0027}\r\n\r\nconst fusionState = (\r\n actual,\r\n added,\r\n) =\u003E\r\n added === \u0027A\u0027\r\n ? actual ?? \u0027INDISPONIBLE\u0027\r\n : actual === \u0027ESTIMEE\u0027 || added === \u0027E\u0027\r\n ? \u0027ESTIMEE\u0027\r\n : \u0027MESUREE\u0027;\r\n\r\nconst fusionConsommationObjectData = (\r\n actual,\r\n added,\r\n) =\u003E ({\r\n volume: (actual?.volume ?? 0) \u002B (added?.litre ?? 0),\r\n prix:\r\n actual?.prix || added?.prix_m3_estime\r\n ? (actual?.prix ?? 0) \u002B (added?.prix_m3_estime ?? 0)\r\n : undefined,\r\n});\r\n\r\nconst fusionData = (\r\n actual,\r\n added,\r\n) =\u003E ({\r\n state: fusionState(actual.state, added.fiabilite_conso),\r\n consommation:\r\n actual.consommation || added.consommation\r\n ? fusionConsommationObjectData(actual.consommation, added.consommation)\r\n : undefined,\r\n ecoulement:\r\n actual.ecoulement || added.ecoulement\r\n ? fusionConsommationObjectData(actual.ecoulement, added.ecoulement)\r\n : undefined,\r\n unit: \u0027L\u0027,\r\n});\r\n\r\n const result= [];\r\n let currentYear;\r\n let currentMonth;\r\n let currentData = {state: \u0027INDISPONIBLE\u0027};\r\n\r\nconsommations.map(conso =\u003E ({\r\n date: getConsommationObjectDate(conso.annee, conso.mois - 1),\r\n data:\r\n conso.fiabilite_conso === \u0027A\u0027\r\n ? {state: \u0027INDISPONIBLE\u0027}\r\n : getConsommationMensuelleObjectData(conso),\r\n }))","IsDeferred":false}]}