Uscendo dalla scheda il prompt di salvataggio non compariva e il pulsante
"Salva" restava nascosto, perche' IsDirty non vedeva il lavoro fatto:
- gli articoli scelti dalla griglia (OpenSelectArt) non marcavano mai la
scheda come modificata;
- ValueComparer confronta solo i campi del form, quindi ogni RecalcDirty()
successivo azzerava il flag alzato con forceTrue da scanner e allegati.
Non bastava confrontare Articoli: Clone() e' un MemberwiseClone, quindi
_originalScheda condivide la stessa lista.
Ora il confronto usa uno snapshot dei barcode preso all'apertura piu' un
flag per gli allegati (che vivono in AttachedList fino al salvataggio), e
RecalcDirty() perde forceTrue: non puo' piu' essere azzerato. Le chiamate
su insert/remove degli articoli erano anche fatte prima della modifica
della lista, quindi valutavano lo stato precedente.
Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>