Ir para conteúdo
  • Cadastre-se

dev botao

Recommended Posts

  • Membros Pro
Postado

Boa tarde.
 

Estou utilizando a função: TACBrNFSeX.Emitir, durante a execução dessa função é chamada outra procedure: FProvider.Emite; e logo após é realizada a consulta do lote.
Porem estou com problema que está acusando que não existe protocolo a ser consultado, analisando o problema pensebi o seguinte.

Dentro do procedimento: TACBrNFSeXProvider.Emite; gerou erro de schema e sai do procedimento, porem ao retornar para TACBrNFSeX.Emitir não aborta a execução, e tenta realizar a consulta mesmo sem ter feito o envio, pois parou na validação do schema.

 

Como proceder nessa situação?

TACBrNFSeX.Emitir.jpg

  • Membros Pro
Postado

Segue o log:

 

------------------------------
Versão OpenSSL
OpenSSL 1.1.1g  21 Apr 2020
01.01.01.07F
C:\Windows\SYSTEM32\libcrypto-1_1.dll
C:\Windows\SYSTEM32\libssl-1_1.dll
------------------------------
Requisição
Ambiente : 2
Cidade   : Sao Joao Batista/SC
Provedor : Betha Versão: 1.00
Data/Hora: 10/12/2024 09:51:30
 
Método Executado: Enviar Lote Assíncrono
 
Parâmetros de Envio
Numero do Lote: 3755
 
Parâmetros de Retorno
Data de Envio : 30/12/1899
Numero do Prot: 
Numero da Nota: 
Link          : 
Código Verif. : 
Sucesso       : False
 
Erro(s):
Código  : X800
Mensagem: Erro de Validação:  --> 1832 - Element 'Discriminacao': [facet 'maxLength'] The value has a length of '2205'; this exceeds the allowed maximum length of '2000'.

Correção: 
---------
 
 
Método Executado: Consultar a Situacao
 
Parâmetros de Envio
Numero do Prot: 
Numero do Lote: 3755
 
Parâmetros de Retorno
Situação Lote : 
Descrição Sit : 
Sucesso       : False
 
Erro(s):
Código  : X101
Mensagem: Número do Protocolo não informado.
Correção: 
---------
 
 
Método Executado: Consultar o Lote de Rps
 
Parâmetros de Envio
Numero do Prot: 
Numero do Lote: 
 
Parâmetros de Retorno
Situação Lote : 
ID Nota       : 
Sucesso       : False
 
Erro(s):
Código  : X101
Mensagem: Número do Protocolo não informado.
Correção: 
---------
 
NFS-e Numero....: 
Cod. Verificacao: 
Prestador.......: 
Tomador.........: ********************************

 

  • Consultores
Postado

@Centrodata Sistemas,

Faça a seguinte alteração na unit ACBrNFSeX, mais precisamente na procedure Emitir.

  FProvider.Emite;

  if Configuracoes.Geral.ConsultaLoteAposEnvio and
     (FWebService.Emite.ModoEnvio = meLoteAssincrono) and
     (FWebService.Emite.Erros.Count = 0) then
  begin

Note que inclui mais uma condição que verifica a quantidade de Erros.

Após a alteração, salve a unit, reinstala o ACBr e faça novos testes.

Consultor SAC ACBr

Italo Giurizzato Junior
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

Analista de Sistemas / Araraquara-SP

Araraquara - A era dos Trólebus

  • Membros Pro
  • Solution
Postado

Boa tarde.

Sua solução claramente funciona.
Porem, para que permitir que o código continue passando até pelo código que deve verificar se deve imprimir a NFS-e se claramente não foi possivel enviar a nota?

Vale notar tambem que FProvider.Emite quando detecta erros na lista FWebService.Emite.Erros, aporta a execução com exit.

exemplo:

  FProvider.Emite;
  
  if FWebService.Emite.Erros.Count > 0 then
    Exit;

  if Configuracoes.Geral.ConsultaLoteAposEnvio and
     (FWebService.Emite.ModoEnvio = meLoteAssincrono) then
  begin
  ...
  end;

  if DANFSE <> nil then
  begin
    SetStatus(stNFSeImprimir);

    for i := 0 to NotasFiscais.Count-1 do
    begin
      if NotasFiscais.Items[i].Confirmada and aImprimir then
        NotasFiscais.Items[i].Imprimir;
    end;

    SetStatus(stNFSeIdle);
  end;

 

  • Curtir 1
×
×
  • 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.

The popup will be closed in 10 segundos...