Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado (editado)

 

Durante a fechamento da venda, o SAT processou a requisição e já acumulou na memória, em seguida, faltou papel para imprimir - resumo: tenho um cupom emitido na SEFAZ, mas não impresso.

Olhando o evento de OnErroFecharVenda - permite tratar o evento e pedir para reimprimir.... (respondendo  tratado:=true);

Se a impressão foi retomada com sucesso, e não ocorrendo nenhum outro evento,  o "estado" continua "estPagamento", impedindo continuar vendendo.

O problema surge quando precisa fazer o cancelamento do CFe. O evento "OnErroFecharVenda" responde que foi tratado e o  "estado" da venda  não é alterado, se tentar cancelar o cupom - será cancelado como se fosse uma venda em andamento e não envia o cancelamento para o SAT. Desta forma tenho um cupom cancelado localmente  e não transmitido o cancelamento para o SAT.

 

Como estou resolvendo:

No evento "OnErroFecharVenda", marco uma variável indicando que o usuário não confirmou a impressão e portanto temos um CFe válido mas, não impresso; O evento responde que o "erro" foi tratado, e retorna para o aplicativo.

No aplicativo, olha a variável e então executa o cancelamento do cupom e também do CFe (duas chamadas para executar a operação);

- chamada 1:  limpa as variáveis alterando o "estado";

- chamada 2: enviar o pedido de cancelamento direto para o SAT;

 

 

 

 

 

 

Editado por amarildolacerda

Amarildo Lacerda

Storeware Team

Postado

Amarildo,

Se o Sat processou a venda você deve ter a posse do XML correto? Se não tiver, é só você fazer a consulta ao sat usando o número da sessão de processamento da venda.

De posse do XML você pode imprimir quantos extratos precisar. Você não precisa cancelar a venda só porque o extrato não foi impresso.

Isso é o que está previsto no Sat.

Que componente você está usando para trabalhar com o Sat?

  • Curtir 1

José Roberto dos Santos
VMX Tech

Postado

Certo Amarildo,

Este comportamento então pode ser do ACBrECFVirtualSAT. Não sei te dizer porque não conheço o componente.

No ACBrSAT você pode trabalhar da maneira como expliquei antes.

Provavelmente algum outro colega poderá te ajudar com o ACBrECFVirtualSAT.

 

 

José Roberto dos Santos
VMX Tech

Postado

Por enquanto resolvemos da seguinte forma:

 

type
TACBrECFVirtualClassHack = class(TACBrECFVirtualClass)
end;

procedure TIFACbrInterfaced.DoFecharCupomError(var Tratado: Boolean);
var
  sNomeArquivo: string;
  procedure TratadoFalhaImpressao;
  begin
    with TACBrECFVirtualClassHack(FServer.ECFVirtual) do
    begin
        fpEstado    := estLivre ;   // necessario para mudar o estado se o evento foi tratado.
        fpTotalPago := 0;
        GravaArqINI;
    end;
  end;
begin
  Tratado := False;
  if TipoEmissor in [emissorSAT] then
  begin
    // nao imprimiu o cupom de Venda.

    while FServer.FACBrSAT.Resposta.codigoDeRetorno = 6000 do
    begin
      CancelarCFeTransmitido := False;
      ChaveCFe := TACBrECFVirtualSATClass(FServer.ecf).chaveCupom;
      sNomeArquivo := GetNomeXMLSAT(ChaveCFe);
      FServer.FACBrSAT.CFe.LoadFromFile(sNomeArquivo);
      AtributosTransacaoSAT;
      if (simnao('Houve um erro ao imprimir, tentar novamente..') = 'S') then
      begin
        try
          FServer.FACBrExtrato.ImprimirExtrato(FServer.FACBrSAT.CFe);
          Tratado := True;
          TratadoFalhaImpressao;
          break;
        except
        end;

      end
      else
      begin
        if simnao('Cancelar o cupom ...') = 'S' then
        begin
          CancelarCFeTransmitido := True;
          Tratado := True;
          TratadoFalhaImpressao;
          exit;
        end;
      end;
    end;

  end;
end;

 

Amarildo Lacerda

Storeware Team

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