# Fare calcoli

Nella sezione "Data" di un componente di tipo testuale (*textfield* o *text area*), è possibile effettuare calcoli automatici in base al valore indicato in altri component.

<div data-full-width="true"><figure><img src="https://4252442743-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrdV0mwA7iy2c3I7wu5BX%2Fuploads%2FBt4CmeGkZkA7iyDXnfqR%2Fimage.png?alt=media&#x26;token=3530d77c-940f-41fb-a07b-e1da0095deb5" alt=""><figcaption></figcaption></figure> <figure><img src="https://4252442743-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrdV0mwA7iy2c3I7wu5BX%2Fuploads%2FV4xmlVZLbv50edEZbDja%2FScreenshot%20(11).png?alt=media&#x26;token=10d96b4f-f737-49d1-afcf-3da1fa21df72" alt=""><figcaption></figcaption></figure></div>

La funzione torna utile nei casi in cui sia necessario calcolare:

* calcolare il punteggio per una graduatoria (magari per un servizio di iscrizione all'asilo nido)

```javascript
sum = 0
sum += (data.work_condition === "occupato") ? 5 : 0
sum += (data.tutor_work_condition === "occupato") ? 5 : 0
sum += (data.minor_invalid === "si") ? 6 : 0
sum += (parseFloat(data.isee_value) <= 21000) ? 4 : 0
sum += (parseInt(data.minors_number) >= 0) ? parseInt(data.minors_number) : 0
sum += (data.other_minors === "si") ? 0 : 3
sum += (data.single_tutor === "si") ? 4 : 2
sum += (data.pregnancy_condition === "si") ? 4 : 0
value = sum
```

* i giorni di esposizione della segnaletica (per un servizio di occupazione temporanea del suolo pubblico).

```javascript
initialDate = moment(data.initial_date, 'DD/MM/YYYY')
finalDate = moment(data.final_date, 'DD/MM/YYYY')
value = finalDate.diff(initialDate, 'days')
```

## Calcolare un importo

Questa funzione può essere utilizzata anche nei casi in cui sia necessario calcolare un importo personalizzato.

Per farlo, trascina un componente "Hidden" nel modulo del servizio e nella sezione "API" del componente   inserisci "**payment\_amount**" alla voce "Property name"

<figure><img src="https://4252442743-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrdV0mwA7iy2c3I7wu5BX%2Fuploads%2FwQrPbrRdNV7JitltAGLe%2Fimage.png?alt=media&#x26;token=d3a840d2-dcd8-4ede-8c7c-2dea214d8b1e" alt=""><figcaption></figcaption></figure>

Successivamente, nella sezione "Data", compila il campo "Calculated value" con il codice JavaScript di calcolo.

<div data-full-width="true"><figure><img src="https://4252442743-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrdV0mwA7iy2c3I7wu5BX%2Fuploads%2F7uHe1v33at0e0BXhZlXc%2Fimage.png?alt=media&#x26;token=1d857ebe-bb84-44a5-aff6-b14b084568b0" alt=""><figcaption></figcaption></figure> <figure><img src="https://4252442743-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2FrdV0mwA7iy2c3I7wu5BX%2Fuploads%2FTy0mejhnQptMMa175oSB%2FScreenshot%20(12).png?alt=media&#x26;token=b7ad95f8-ce10-4756-b972-fcfcdda5b742" alt=""><figcaption></figcaption></figure></div>

{% hint style="info" %}
Nell'esempio riportato nelle immagini, che riguarda il servizio di Permesso per passo carrabile, l'utente dovrà pagare 50 euro nel caso in cui fosse unico proprietario dell'immobile o 30 euro nel caso in cui fosse amministratore. Per tutti gli altri casi, non sono previsti pagamenti.
{% endhint %}

```javascript
if (data.in_virtue === "unico") {  
  value = 50
} else if (data.in_virtue === "amministratore") { 
  value = 30
} else { 
  value = 0
}
```
