Su Instant Developer Cloud se mi occorre eseguire dei calcoli su un campo che dipende dal valore di altri campi posso utilizzare l’evento di documento onValidate verificando se una certa proprietà è cambiata (su Instant Developer Foundation per fare questa operazione utilizzo l’evento onEndTransaction del documento e il metodo wasModified).
Supponiamo si avere il documento RigaOrdine che ha i seguenti campi:
- qta - quantità ordinata
- prezzo - prezzo del prodotto
- importo - importo della riga
Se devo calcolare il campo importo in base alla variazione di uno degli altri dovrò utilizzare questo codice:
App.NwindBE.Order.prototype.onValidate = function(options)
{
if (options.reason == App.Document.validationReasons.save ||
options.property == App.NWBE.RigaOrdine.qta ||
options.property == App.NWBE.RigaOrdine.prezzo ||) {
// Calcola l'importo di riga
this.importo = this.qta * this.prezzo;
}
};
Controllo se è una validazione di salvataggio e quindi comunque rifaccio il calcolo oppure lo rifaccio se una della due proprietà è cambiata.
Nel campo options.property trovo il nome della proprietà modificata che ha scatenato la validazione. Nel caso di validazione per salvataggio options.property vale undefined.
Nota
Nei codice i confronti negli if andrebbero usati tre simboli di uguale (===) ma se li metto il formattatore del codice (qui nella Community) considera quello che viene dopo come un commento.