Ir para conteúdo
  • Cadastre-se

dev botao

Extrato ESCPOS Cancelamento - informações Cupom Cancelado / De Cancelamento


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

Recommended Posts

Boa noite!

Fazendo alguns testes, verifiquei que no extrato de cancelamento ESCPOS do SAT, está saindo nos dados de Data/Hora e Chave de Acesso do Cupom de Cancelamento na seção de informações do Cupom Cancelado, sendo que na seção de Cupom de Cancelamento essas informações não estão sendo impressas (a data sempre sai com 30/12/1899 00:00:00 em todos os extratos de cancelamento).

Lendo o manual MO 2.12.12, vi que na seção de dados do cupom cancelado deve sair os dados do CFe de venda e na seção de dados do cupom de cancelamento, deve sair os dados do cupom de cancelamento (ver anexo). Isso fica evidente também pela data/hora de cada seção no exemplo anexo.

Vocês poderiam me confirmar se estou certo nesta análise e consequentemente o extrato ESCPOS está incorreto?

Editando:

Verifiquei agora que é preciso ter o CFe e o CFeCanc para a informação ser impressa corretamente. Meu cenário é que estou imprimindo o extrato de Cancelamento somente com o XML de Cancelamento, sem necessariamente estar com o XML de Venda. A meu ver, o XML de Cancelamento possui todas as informações do cupom de Venda necessárias a ser impressas no extrato de Cancelamento. Estou correto?

Obrigado

Fabio

ExtratoCancelamentoSAT.jpg

Editado por Fabio.Vaz
Link para o comentário
Compartilhar em outros sites

  • Fundadores

Não tenho o código "fresco" na memória... mas na implementação atual dos Extratos, é necessário CFe e CFeCanc na memória...

Você poderia revisar os fontes de ACBrSATExtratoESCPOS e verificar os métodos que são chamados para a impressão do Cancelamento. Ex:

procedure TACBrSATExtratoESCPOS.ImprimirExtratoCancelamento(ACFe: TCFe;
.......
  GerarCabecalho;
  GerarTotais(True);
  GerarRodape(False, True);
  GerarDadosCancelamento;
....
end;   

Verifique nos métodos acima, se é possível fazer IFs, modificando-os usando um Parâmetro de entrada.. Exemplo:

    procedure GerarCabecalho(Cancelamento: Boolean = False);

Seria necessário substituir todos os campos que são impressos usando o CFe por CFeCanc... Exemplo:

FPosPrinter.Buffer.Add('<n>'+IfThen(Cancelamento, CFeCanc.Emit.xFant, CFe.Emit.xFant)+'</n>');

 

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

Daniel, obrigado pela resposta.

Analisei o código e realmente precisa dos 2 (CFe e CFeCanc) em memória para conseguir imprimir o extrato de cancelamento.

Pensei em fazer algo do tipo CFe2CFeCanc ao contrário, para carregar o CFe a partir do CFeCanc, porém ocorreu um novo problema: de ser necessário as duas assinaturaQRCODE, de cada XML. Não enxerguei uma forma de fazer isso sem os 2 XMLs.

Adaptei meu sistema exigindo os 2 XMLs para (re)impressão de extratos de cancelamento quando não tenho o cupom na memória.

Minha única dúvida agora está no valor impresso no campo Extrato No. : está sendo impresso o número do CFe de Venda, mas a meu ver (pelo exemplo do MO) deveria ser o número do CFe de Cancelamento. Poderia ver se seu entendimento é este também, por favor?

Obrigado

Link para o comentário
Compartilhar em outros sites

  • Fundadores

Sim, aparentemente está errado (imprimindo sempre o CFe.ide.nCFe)

Por favor teste com a Unit em anexo

 

ACBrSATExtratoESCPOS.pas

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á 3120 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.