# 11.3 SDK Task Condition

E’ una tipologia di funzione che viene utilizzata per eseguire dei controlli custom nelle task di controllo dei processi (conditional task).

Per registrarle va utilizzato il metodo:

**SDK::setProcessMakerTaskCondition($func, $src, $label)** *$func : nome della funzione $src : percorso file contenente la funzione*  
*$label : etichetta della funzione*

Per de-registrare il file usare:

**SDK::unsetProcessMakerTaskCondition($func);**  
*$func : nome della funzione*

Se richiamate sulla task di “condizione iniziale” (task nella quale vengono definite le regole di partenza del processo), è possibile rendere specifica la partenza del processo in base al risultato restituito.

  
[![taskCondition_1.png](https://usermanual.vtenext.com/uploads/images/gallery/2022-06/scaled-1680-/taskcondition-1.png)](https://usermanual.vtenext.com/uploads/images/gallery/2022-06/taskcondition-1.png)  
  
Se richiamate invece sulle delle semplici task di controllo permettono di far prendere al processo strade differenti in base al risultato restituito.  
  
[![taskCondition_2.png](https://usermanual.vtenext.com/uploads/images/gallery/2022-06/scaled-1680-/taskcondition-2.png)](https://usermanual.vtenext.com/uploads/images/gallery/2022-06/taskcondition-2.png)

Le funzioni di questa tipologia saranno sempre disponibili sotto forma di variabili utilizzabili per eseguire controlli.  
Un esempio concreto di funzione SDK di questa tipologia è la funzione “get\_running\_process\_current\_user” che permette di verificare se il nome dell’utente corrente è uguale o diverso dall’utente definito nella condizione.  
Se utilizzata nella condizione iniziale permette di far partire il processo solamente se l’utente corrente è uguale ad un determinato utente.  
  
[![taskCondition_3.PNG](https://usermanual.vtenext.com/uploads/images/gallery/2022-06/scaled-1680-/taskcondition-3.PNG)](https://usermanual.vtenext.com/uploads/images/gallery/2022-06/taskcondition-3.PNG)

**Esempio**

Registro una funzione per verificare se l'indirizzo di fatturazione dell'azienda è uguale quello di spedizione.

```php
SDK::setProcessMakerTaskCondition('vte_compare_account_bill_ship_street', 'modules/SDK/src/ProcessMaker/Utils.php', 'Indirizzi di spedizione e fatturazione uguali [e/n]');
```

Nella funzione implementata sono presenti i seguenti parametri.  
$module: modulo dell'entità su cui viene eseguita la condizione  
$id: identificativo dell'entità in formato ws (es. 3x55126)  
$data: array con i valori dei campi del record

La funzione deve restituire una stringa da usare per il confronto lato interfaccia.

```php
function vte_compare_account_bill_ship_street($module, $id, $data) {
	list($wsModId,$id) = explode('x',$id);	// do it every time
	
	if ($data['bill_street'] == $data['ship_street']) {
		return 'e';
	} else {
		return 'n';
	}
}
```

A questo punto posso configurare un processo che parte alla creazione di un'azienda quando l'indirizzo di di fatturazione è diverso da quello di spedizione.

[![Schermata 2024-02-23 alle 13.02.56.png](https://usermanual.vtenext.com/uploads/images/gallery/2024-02/scaled-1680-/schermata-2024-02-23-alle-13-02-56.png)](https://usermanual.vtenext.com/uploads/images/gallery/2024-02/schermata-2024-02-23-alle-13-02-56.png)