Ir para conteúdo
  • Cadastre-se

dev botao

  • Este tópico foi criado há 3074 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Bom dia.

Desenvolvi NFC-e usando ECFVirtual.

Nas vendas, impressões está funcionando tudo corretamente, mas estou com problemas na hora de cancelar item.

O problema ocorre se eu cancelar mais de um item, exemplo da venda:

Vendi item 1;

Vendi item 2;

Cancelei item 2;

Vendi item 3;

Vendi item 4;

Vendi item 5;

Cancelei o item 4

Finalizando essa venda, o item 2 foi cancelado corretamente e removido do xml, mas o item 4 continua no xml e o item 5 foi excluído do xml. 

Debugando o componente, na unit ACBrECFVirtual, procedure CancelaItemVendido, o parâmetro NumItem está chegando exatamente o item que está sendo cancelado, na Unit ACBrECFVirtualNFCe, procedure CancelaItemVendidoVirtual o parâmetro NumItem também está chegando corretamente.

Não consegui encontrar o possível problema, alguém passou por essa situação ?

Pesquisando no fórum encontrei só o link abaixo, mas mesmo assim não consegui resolver o problema.

 

Obrigado.

 

 

 

 

 

Postado

Giquieu, boa tarde.

Fiz as alterações de acordo com o que você sugeriu no link citado acima, mas ainda continuou com o problema.

Fazendo a venda na sequência que eu citei acima, o item que deveria ser excluído do XML do segundo cancelamento seria o item 4, mas foi excluído o último item, no caso o item 5.

Seguindo a sua lógica, fiz a alteração da seguinte forma:

    for I := 0 to NotasFiscais.Items[0].NFe.Det.Count -1 do
    begin
      if (NotasFiscais.Items[0].NFe.Det.Items.Prod.nItem = NumItem) then
      begin
        NotasFiscais.Items[0].NFe.Det.Delete(I);
        Break;
      end;
    end;

Dessa maneira, comparando o NumItem com o Prod.nItem deu certo todos os cancelamentos.

Obrigado.

  • Membros Pro
Postado

Que bom que ajudou.

Pra melhorar o desempenho do loop deixaria com o down to, afinal, normalmente o cancelamento vai ocorrer nos últimos itens... xD

  • 4 meses depois ...
Postado
Em 03/02/2016 at 14:56, ftellini disse:

Giquieu, boa tarde.

Fiz as alterações de acordo com o que você sugeriu no link citado acima, mas ainda continuou com o problema.

Fazendo a venda na sequência que eu citei acima, o item que deveria ser excluído do XML do segundo cancelamento seria o item 4, mas foi excluído o último item, no caso o item 5.

Seguindo a sua lógica, fiz a alteração da seguinte forma:

    for I := 0 to NotasFiscais.Items[0].NFe.Det.Count -1 do
    begin
      if (NotasFiscais.Items[0].NFe.Det.Items.Prod.nItem = NumItem) then
      begin
        NotasFiscais.Items[0].NFe.Det.Delete(I);
        Break;
      end;
    end;

Dessa maneira, comparando o NumItem com o Prod.nItem deu certo todos os cancelamentos.

Obrigado.

Aonde incluiu o código citado? Outro erro que identifiquei no cancelamento do item individual, é que no xml da nfc-e não re-ordena o nItem. Por exemplo:

Vende item 1, 2,3.

Cancela item 2

No xml sai:

<det nItem = "1">

<det nItem = "3"> 

  • 2 semanas depois ...
  • Este tópico foi criado há 3074 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora
×
×
  • Criar Novo...

Informação Importante

Colocamos cookies em seu dispositivo para ajudar a tornar este site melhor. Você pode ajustar suas configurações de cookies, caso contrário, assumiremos que você está bem para continuar.