Ir para conteúdo
  • Cadastre-se

dev botao

SAT Erro de sequência quando cancela um item e continua vendendo


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

Recommended Posts

Ao fazer venda de itens, cancelar um item e continuar vendendo, o Cupom Virtual salta o número de sequencia do item e o SAT recusa aprovação do XML.

 

Alterado para incluir propriedade de nItemSeqCupom, para guardar a sequencia original do cupom e refazer o nItem do XML para não perder a sequencia.

 

Alterado desconto por item... estava preenchendo o XML com negativo.

 

 

pcnCFe.pas

ACBrECFVirtualSAT.pas

Editado por amarildolacerda
  • Curtir 1

Amarildo Lacerda

Storeware Team

Link para o comentário
Compartilhar em outros sites

Alterado o código,

 

procedure TACBrECFVirtualSATClass.CancelaItemVendidoVirtual(NumItem: Integer);
var
  I: Integer;
begin
  with fsACBrSAT do
  begin
    //if (NumItem > CFe.Det.Count) or (NumItem < 1) then
    //  exit;

    // (Amarildo Lacerda)
    // CFe.Det.Delete(NumItem-1);  //  Se apagar o item da lista pelo indice perde a referencia de sequencia do item - descola o item do CFe do item do cupom
    // checar se o numero do item a ser cancelado é o mesmo que o numero do item que consta da lista  (numitem <> indice da lista)
    // para testar, fazer cancelamento de 2 itens no cupom, inserir item novo e verificar como será montado o XML. Não pode saltar o item.
    // zerar a quantidade ao invez de apagar, e limpar a quantidade no fechamento do cupom
    for I := 0 to CFe.Det.Count - 1 do
      if CFe.Det.Items.nItemSeqCupom = NumItem then
      begin
        CFe.Det.Delete(I); // será necessario remontar a sequencia dos itens ao gerar o XML.
        {with CFe.Det.Items.Prod do
        begin  // teste
          qCom := 0;
          vProd := 0;
          vItem := 0;
        end;}
        break;
      end;
   for I := 0 to CFe.Det.Count-1 do
     CFe.Det.Items.nItem := I+1;  // refaz a sequencia do Item
  end;
end;

 

ACBrECFVirtualSAT.pas

  • Curtir 1

Amarildo Lacerda

Storeware Team

Link para o comentário
Compartilhar em outros sites

Este assunto do desconto negativo no xml e do cancelamento do item me parece bastante importante.

Vi que estas alterações ainda não foram para o o svn....

Precisa que eu ajude em alguma coisa ?  Alguma crítica, alguma mudança.... so falar.

Este assunto do desconto negativo no xml e do cancelamento do item me parece bastante importante.

Vi que estas alterações ainda não foram para o o svn....

Precisa que eu ajude em alguma coisa ?  Alguma crítica, alguma mudança.... so falar.

Amarildo Lacerda

Storeware Team

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Oi Amarildo,

Enviei a correção para o problema do Desconto... realmente muito necessária...

Em relação a Exclusão de Item... não me agradou muito ter que inserir uma nova propriedade em pcnCFe.pas...  Acho que isso pode confundir os usuários (que não usam o ECFVirtualSAT), imaginando que essa propriedade é mapeada para alguma Tag do XML do CFe (assim como todas as demais são)

Fiquei de conversar com você sobre isso e acabei esquecendo...

Minha proposta seria fazer algo como:

- Quando Excluir um Item, não removê-lo da Lista, mas usar a Quantidade como -1 para marcar o mesmo como "excluído"..

- No fechamento da Venda, rodamos um For nos Itens, removendo os excluídos e computando novamente a Sequencia...

O que acha da ideia ?

 

 

 

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Muito obrigado Amarildo... ficou ótimo...

Fiquei na dúvida a respeito dessa observação abaixo (mas enviei para o SVN)

        // AL quando ocorre erro e não consegue transmitir, os itens cancelados ficam
        // descolados da sequencia do cupom...
        // Talvez precisaria fazer um backup e depois restaurar.

  • Curtir 1
Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

Legal, a idéia era esta...

Ainda ficou este ponto...

Exemplo:     Venda item 1, 2, 3 .... cancela o 2..... envia para o SAT - ocorre falha e não finaliza...., dai volta para o sistema... agora não pode incluir novos itens, porque a sequencia no sistema não é  a mesma da lista de CFe carregados na memória....

Não sei como resolver isto com a estrutura proposta.

 

Amarildo Lacerda

Storeware Team

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Você diz, que a sequência do ECFVirtual não está mais em sintonia com a do CFe ?

Nao poderíamos rodar a mesma lógica na lista do ECFVirtual ? Ou seja, remove os Itens e remunera 

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

Isto mesmo,

Mas acho que o problema é um pouco mais complexo... Não tive tempo ainda de analisar todas as faces ainda, mas veja só:

a. eu tenho uma lista no aplicativo... (tudo bem, posso também apagar o item);

b. o item já esta registrado no banco de dados com uma marcação de temporário, que depois é confirmado se for concluído ( temos caso que estes itens fazem parte da estatística de desempenho do operador, se ele cancela muito item pesa contra, se não cancela é a favor - isto reflete na participação de lucro dele... então é importante); Como ele já esta no banco de dados, ele já tem um número de ordem lá.

c. não tinha me atentado que ele também faz parte da lista no ECFVirtual - ou seja, precisa tratar ele também.

d. se imprimir o item cancelado no cupom, como seria o normal, o item cancelado vai para o fechamento do dia - mas ele não é um item fiscal de fato... este outro complicador que preciso analisar - já que afetaria os relatórios fiscais, além dos gerenciais - se não é item fiscal, como mostrar na Leitura X (Z)....;

e. se cancelo um cupom, antes de mandar para o SAT, na leitura X ele aparece como cancelamento, sendo que não é um item fiscal - também não analisei os reflexos ainda (assim como os itens cancelados, cupons cancelados também fazem parte da avaliação de desempenho do operador);

Novos desafios:

- incluir no servidor RESTful, um serviço que permita fazer a transação do SAT centralizada, assim permitiria usar 1 SAT para 2 ou 3 PDVs.

 

Ou seja,

Ainda estamos buscando estabilizar os problemas de hardware, e depois, vai sobrar muito trabalho. Sem contar que a NFCe esta bombando nos diversos estados, outros estados estão usando o ECF do Convenio 09/09.... e ainda precisa manter compatibilidade dos antigos ECFs...

Uma coisa é certa... ainda temos trabalho para muito tempo.

 

 

 

 

 

Amarildo Lacerda

Storeware Team

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Realmente para efeito de estatística, é melhor manter o Item cancelado no ECFVirtual e no Banco de Dados

O ECF tinha suas limitações, mas por outro lado trazia um bom mecanismo de controle...

Consultor SAC ACBr

Daniel Simões de Almeida
O melhor TEF, é com o Projeto ACBr - Clique e Conheça
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.

Link para o comentário
Compartilhar em outros sites

  • Este tópico foi criado há 3167 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.