It is currently 21 April 2025, 23:55 Advanced search

Evento On Remove Child. e se scattasse 2 volte?

Questo forum è nato con lo scopo di raccogliere le proposte di modifica di Instant Developer e discuterne insieme.

Evento On Remove Child. e se scattasse 2 volte?

Postby eurekapv » 26 October 2011, 16:39

L'evento On Remove Child scatta quando un figlio viene tolto dalla collection di un documento...in un pannello DO pero' scatta quando viene effettivamente salvato sul DB in quanto la cancellazione di un figlio pone solo la proprietà delete = true e non lo toglie dalla collection.

Io proporrei se fosse possibile fare scattare due volte l'evento, magari con un parametro Fase (così da intercettarne il momento delete=true oppure cancellazione da collection).

Prendendo a spunto l'esempio della guida http://doc.progamma.com/?ARTID=B5457168 ... 348171B7AE
con Ordine e Righe di Ordine:
Cancello una riga di Ordine e si aggiorna il totale -> Questo è vero ma solo dopo che ho effettuato il salvataggio, se non salvo non si aggiorna e spesso uno che ha davanti le righe dell'ordine, ne cancella una, e vuole vedere il totale aggiornarsi prima di salvare.

Allo stato attuale è necessario gestire la cancellazione sull'oggetto figlio invece che sul padre.
Alchimisti Lab by Cavallini Pietro
https://www.alchimistilab.it

Image
User avatar
eurekapv
 
Posts: 2450
Joined: 2 November 2010, 22:16
Location: Vigevano

Re: Evento On Remove Child. e se scattasse 2 volte?

Postby g.lanzi » 27 October 2011, 13:01

In pratica, dato che l'OnRemoveChild viene notificato quando un documento è effettivamente eliminato dalla collection, quello che proponi è un OnDeleteChild. Un evento notificato al padre ogni volta che un documetno figlio viene impostato come deleted.

La proposta mi piace e l'accetto volentieri, ma fortunatamente c'è già un modo di farlo globalmente senza scrivere tanto codice.

Nell'esempio che citi il risultato è ottenibile con un evento globale di OnDeleting, nel quale se parent != null fai scattare un parent.EndTransaction. In questo modo quando cancelli un prodotto scatta l'evento globale di onDeleting, che a sua volta fa scattare l'EndTransaction locale della Categoria. L'elaborazione dei totali la metti nell'EndTransaction e lo usi come l'ipotetico OnDeleteChild che dicevo all'inizio.
Giuseppe Lanzi
Director of Support services
Pro Gamma S.p.A.
User avatar
g.lanzi
Pro Gamma
Pro Gamma
 
Posts: 3503
Joined: 29 September 2010, 10:24
Location: Bologna

Re: Evento On Remove Child. e se scattasse 2 volte?

Postby eurekapv » 28 October 2011, 16:58

Grazie Giuseppe della risposta ed effettivamente la cosa cosi' come l'hai descritta tu è quello che già sto utilizzando come dicevo
"Allo stato attuale è necessario gestire la cancellazione sull'oggetto figlio invece che sul padre."

Però sarebbe interessante averla sul Padre senza giri strani, cosi guardando gli eventi AddChild e OnDeletingChild nel padre tieni sotto controllo le cancellazioni dei figli....
Beh pensateci su non si sa mai che ci sia spazio di implementazione :-)
Alchimisti Lab by Cavallini Pietro
https://www.alchimistilab.it

Image
User avatar
eurekapv
 
Posts: 2450
Joined: 2 November 2010, 22:16
Location: Vigevano

Re: Evento On Remove Child. e se scattasse 2 volte?

Postby a.maioli » 29 October 2011, 17:35

Secondo me l'evento giusto per fare quello che chiedevi è l'evento OnChange che copre tutte le possibili variazioni dell'oggetto e di tutti i suoi figli.
User avatar
a.maioli
Pro Gamma
Pro Gamma
 
Posts: 1090
Joined: 29 September 2010, 12:47

Re: Evento On Remove Child. e se scattasse 2 volte?

Postby g.lanzi » 30 October 2011, 7:24

Giusto, non mi era venuto in mente. L'OnChange è l'evento perfetto per ottenere lo scopo.
Giuseppe Lanzi
Director of Support services
Pro Gamma S.p.A.
User avatar
g.lanzi
Pro Gamma
Pro Gamma
 
Posts: 3503
Joined: 29 September 2010, 10:24
Location: Bologna


Return to Proposte di modifica

Who is online

Users browsing this forum: No registered users and 17 guests

cron