Na unit ACBrECFVirtualNFCe o método CancelaItemVendidoVirtual está excluíndo o item da nota indevidamente, observei que se for feito um cancelamento e após outro cancelamento, o item excluído é outro ou no caso de ser o último, não cancela item algum.
Exemplo:
Vender o item 1, vender o item 2, cancelar o item 2, vender o item 3, vender o item 4, cancelar o item 4.
Na nota não estava sendo cancelado o item 4.
Fiz uma alteração que para mim funcionou e talvez não seja a maneira correta para o padrão do ACBr, alterei a descrição do item para *cancelado* e zerei a parte de valor do produto e no método FechaCupomVirtual fiz um loop em todos os item para mudar o nItem deles e excluir os que estavam com a descrição *cancelado* pois nesse processo não correrá mais o cancelamento de itens.
Nessa mesma unit no método FechaCupomVirtual fiz uma alteração para que a impressão da DANFCe seja feita em 1 ou 2 vias de acordo com a configuração do meu sistema.
ACBrECFVirtualNFCe.pas