InseeFr / Lunatic

Library of questionnaire components
https://inseefr.github.io/Lunatic/
MIT License
20 stars 22 forks source link

Affichage de questions à tort - calcul de variables avec des niveaux différents ? #872

Closed AnneHuSKa closed 8 months ago

AnneHuSKa commented 8 months ago

Describe the bug

Eno ou Lunatic ? J'ai une formule qui ne se calcule pas bien et des filtres mal valorisées donc des variables affichées à tort :

Cannot interpret expression : (nvl(RESCONTACTV2,"") = "1") and (nvl(QWEBREMPLI,"")="3" or nvl(SSECH_EXT,"")="01") and (nvl(NB_RSLOC,0) > 0) 
Error: Cannot interpret expression "sum(RSLOC)" with bindings {"RSLOC":[]}, 
error : TypeError: h is undefined

dans Pogues, ca me semble "propre" ( RSLOC est calculée par occurrence, la somme des RSLOC (NB_RSLOC) sur le questionnaire) dans le json, j'ai :

    {
        "variableType": "CALCULATED",
        "expression": {
            "type": "VTL",
            "value": "if (nvl(STATRS_B,\"\") = \"2\" or nvl(STATRS_B,\"\") = \"3\") then 1 else 0"
        },
        "name": "RSLOC",
        "shapeFrom": "LIEURS"
    },
    {
        "variableType": "CALCULATED",
        "bindingDependencies": [
            "RSLOC"
        ],
        "expression": {
            "type": "VTL",
            "value": "sum(RSLOC)"
        },
        "name": "NB_RSLOC"
    },

Ce message semble assez systématique sur les filtres qui posent souci à BDF :

Cannot interpret expression : (nvl(RESCONTACTV2,"") = "1") and (nvl(NBENFINF16,0)>0) and (nvl(GARDE4,false) = true) 
Error: Cannot interpret expression "sum(ENFINF16)" with bindings {"ENFINF16":0}, 
error : type mismatch, expected DATASET, got SUM

=> I tested it on the storybook, which leads me to believe that it's a lunatic bug.

To Reproduce

issue_filtres.zip

Expected behavior

Masquer les questions à raison

Screenshots

Version where the bug appeared

2.7.?

Browser where the bug was tested

Additional context

nsenave commented 8 months ago

Variables calculées mentionnées :

{
    "variableType": "CALCULATED",
    "bindingDependencies": [
        "RSLOC"
    ],
    "expression": {
        "type": "VTL",
        "value": "sum(RSLOC)"
    },
    "name": "NB_RSLOC"
},
{
    "variableType": "CALCULATED",
    "expression": {
        "type": "VTL",
        "value": "if (nvl(STATRS_B,\"\") = \"2\" or nvl(STATRS_B,\"\") = \"3\") then 1 else 0"
    },
    "name": "RSLOC",
    "shapeFrom": "LIEURS"
},
{
    "variableType": "CALCULATED",
    "bindingDependencies": [
        "ENFINF16"
    ],
    "expression": {
        "type": "VTL",
        "value": "sum(ENFINF16)"
    },
    "name": "NBENFINF16"
},
{
    "variableType": "CALCULATED",
    "expression": {
        "type": "VTL",
        "value": "if T_AGE<=16 then 1 else 0"
    },
    "name": "ENFINF16",
    "shapeFrom": "T_PRENOM"
},

Collectées concernées :

{
    "variableType": "COLLECTED",
    "name": "GARDE4"
},
{
    "variableType": "COLLECTED",
    "name": "RESCONTACTV2"
},
{
    "variableType": "COLLECTED",
    "name": "QWEBREMPLI"
},
{
    "variableType": "EXTERNAL",
    "name": "SSECH_EXT"
},
{
    "variableType": "COLLECTED",
    "values": {
        "COLLECTED": [],
        "EDITED": [],
        "INPUTED": [],
        "FORCED": [],
        "PREVIOUS": []
    },
    "name": "LIEURS"
},
{
    "variableType": "COLLECTED",
    "values": {
        "COLLECTED": [],
        "EDITED": [],
        "INPUTED": [],
        "FORCED": [],
        "PREVIOUS": []
    },
    "name": "T_AGE"
},
{
    "variableType": "COLLECTED",
    "values": {
        "COLLECTED": [],
        "EDITED": [],
        "INPUTED": [],
        "FORCED": [],
        "PREVIOUS": []
    },
    "name": "T_PRENOM"
},

➡️ vérifier que "GARDE4", "RESCONTACTV2", "QWEBREMPLI", "SSECH_EXT" sont bien des variables niveau questionnaire/scalaires (i.e. pas des vecteurs)

AnneHuSKa commented 8 months ago

Dans la description Pogues, oui des variables questionnaires (GARDE4 une modalités d'un QCM)

nsenave commented 8 months ago

Les variables calculées "RSLOC" et "ENFINF16" n'ont pas de bindingDependencies , vérifier qu'il y a bien les $ autour des variables présentes dans leur formules dans la saisie Pogues.

Grafikart commented 8 months ago

La variable NBENFINF16 n'a pas de shapeFrom, le système se mélange surement les pinceaux sur la valeur à ressortir et essaie de calculer la valeur pour chaque itération au lieu de la valeur aggrégé.

AnneHuSKa commented 8 months ago

merci @ddecrulle !