I am in the process of digitizing a survey form using SurveyJS that contains multiple budget lines(1… 13). Within each budget line, there are components, and each component contains categories.
In the form, there is a total amount for the project's budget. Each budget line also has a defined amount, the sum of which must not exceed the total project budget.
The amount defined in each budget line needs to be divided among its components(1… 13). The sum of amounts allocated to each component must not exceed the amount of its budget line.
The amount defined in each component needs to be divided among its categories(1… 13). The sum of amounts allocated to each category must not exceed the amount of its component.
How can this problem be solved? Please suggest a solution.
JSON{
"title": "Financement v1",
"pages": [
{
"name": "source_donnees",
"elements": [
{
"type": "text",
"name": "montant_total",
"title": "Montant total du financement (USD)",
"inputType": "number",
"min": "0",
"minErrorText": "La valeur entrée doit être au moins égale à 0"
},
{
"type": "text",
"name": "nb_ligne_budgetaire",
"title": "Nombre de ligne budgétaire",
"inputType": "number",
"min": "0",
"minErrorText": "La valeur entrée doit être au moins égale à 0"
}
]
},
{
"name": "budgetaire_budgetaire1",
"elements": [
{
"type": "html",
"name": "html1",
"html": "<h4>Ligne budgétaire 1</h4>"
},
{
"type": "text",
"name": "budgetaire_budgetaire1_montanttotal",
"title": "Montant total budgétaire(USD)",
"inputType": "number",
"min": "0",
"minErrorText": "La valeur entrée doit être au moins égale à 0"
},
{
"type": "text",
"name": "budgetaire_budgetaire1_nbcomposante",
"title": "Nombre de composant",
"inputType": "number",
"min": "0",
"minErrorText": "La valeur entrée doit être au moins égale à 0"
},
{
"type": "text",
"name": "budgetaire_budgetaire1_composante_composante1_montant",
"title": "Montant de la composante 1(USD)",
"inputType": "number"
},
{
"type": "text",
"name": "budgetaire_budgetaire1_composante_composante1_nbcategorie",
"visibleIf": "{budgetaire_budgetaire1_nbcomposante} >= 1",
"title": "Nombre de categorie coûts de la composante 1",
"inputType": "number",
"min": "0",
"minErrorText": "La valeur entrée doit être au moins égale à 0"
},
{
"type": "text",
"name": "budgetaire_budgetaire1_compsant13_categorie1_montant",
"title": "Montant de la catégorie de coûts 1(USD)",
"inputType": "number",
"min": "0",
"minErrorText": "La valeur entrée doit être au moins égale à 0"
},
{
"type": "text",
"name": "budgetaire_budgetaire1_composante_composante13_categorie13_montant",
"title": "Montant de la catégorie de coûts 13(USD)",
"inputType": "number",
"min": "0",
"minErrorText": "La valeur entrée doit être au moins égale à 0"
}
],
"visibleIf": "{nb_ligne_budgetaire} >= 1"
},
{
"name": "budgetaire_budgetaire13",
"elements": [
{
"type": "html",
"name": "html1",
"html": "<h4>Ligne budgétaire 13</h4>"
},
{
"type": "text",
"name": "budgetaire_budgetaire13_montanttotal",
"title": "Montant total budgétaire(USD)",
"inputType": "number",
"min": "0",
"minErrorText": "La valeur entrée doit être au moins égale à 0"
},
{
"type": "text",
"name": "budgetaire_budgetaire13_nbcomposante",
"title": "Nombre de composant",
"inputType": "number",
"min": "0",
"minErrorText": "La valeur entrée doit être au moins égale à 0"
},
{
"type": "text",
"name": "budgetaire_budgetaire13_composante_composante1_montant",
"title": "Montant de la composante 1(USD)",
"inputType": "number"
},
{
"type": "text",
"name": "budgetaire_budgetaire13_composante_composante1_nbcategorie",
"visibleIf": "{budgetaire_budgetaire13_nbcomposante} >= 1",
"title": "Nombre de categorie coûts de la composante 1",
"inputType": "number",
"min": "0",
"minErrorText": "La valeur entrée doit être au moins égale à 0"
},
{
"type": "text",
"name": "budgetaire_budgetaire13_compsant13_categorie1_montant",
"title": "Montant de la catégorie de coûts 1(USD)",
"inputType": "number",
"min": "0",
"minErrorText": "La valeur entrée doit être au moins égale à 0"
},
{
"type": "text",
"name": "budgetaire_budgetaire13_composante_composante13_categorie13_montant",
"title": "Montant de la catégorie de coûts 13(USD)",
"inputType": "number",
"min": "0",
"minErrorText": "La valeur entrée doit être au moins égale à 0"
}
],
"visibleIf": "{nb_ligne_budgetaire} >= 13"
}
]
}