Nella scheda, scegliendo alcuni articoli dalla griglia e sparandone altri,
non tutti i barcode arrivavano al salvataggio.
- La selezione dalla griglia modificava Scheda.Articoli da un thread del
pool, mentre le scansioni lo fanno sul thread della UI: le due modifiche
potevano sovrapporsi e far perdere articoli. Ora passa da InvokeAsync.
- La griglia non scartava i barcode gia' sparati, e lo scanner controllava
solo il codice letto, non quello restituito dal server (che puo' essere
il barcode principale, lo stesso della griglia). Un doppione rompe il
@key della lista e il salvataggio locale (indice unico SchedaId+Barcode).
Ora entrambi i percorsi aggiungono solo barcode non ancora presenti.
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>