Jump to content
Notícias do ACBr

click.png

click.png

click.png

click.png

click.png

click.png

logo_acbr_paygo.png

TEF ACBr PayGo
Seja um revendedor e ofereça uma solução completa para seu cliente.


Saiba mais

beneficios.png

click.png

click.png

click.png

Emissão em Contigencia Offline erro: 'UF não pode ser vazia'


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

Recommended Posts

Pessoal, estou testando a parte de contingência offline e está ocorrendo um erro estranho quando provoco a contingência pois apesar da UF está sendo passada perfeitamente, já que a mesma procedure de gerarXML e Assinalar está funcionando 100%,   mas pra contingência da erro de: 'UF não pode ser vazia'... ja testei de tudo e não tem jeito, só dá isso, veja abaixo o que passo:

      if pos('requisição não enviada', LowerCase(e.Message) )>0 then begin
        UsarContigencia:=true;
           GerarNFCe(ed_numNF.Text); *
        ACBrNFe1.NotasFiscais.GerarNFe;
        ACBrNFe1.NotasFiscais.Assinar;
        ACBrNFe1.NotasFiscais.Validar;
      end;

( * ) dentro da procedure GerrNFCe ja se encontra os dados da UF corretos e modelo da NF:
       ACBrNFe1.Configuracoes.Geral.ModeloDF := moNFCe;
       ACBrNFe1.Configuracoes.Geral.VersaoDF :=  TpcnVersaoDF(cbVersaoDF.ItemIndex);
       ACBrNFe1.Configuracoes.WebServices.UF:=cbUF.Text;

E mesmo assim, dá ERRO.

Deburando o erro ocorre neste:

procedure TACBrDFe.LerServicoDeParams(const ModeloDFe, UF: String;
  const TipoAmbiente: TpcnTipoAmbiente; const NomeServico: String;
  var Versao: Double; var URL: String);
var
  Sessao, NomeSchema, ArqSchema: String;
  VersaoAchada, VersaoSchema: Double;
begin
  if EstaVazio(ModeloDFe) then
    raise EACBrDFeException.Create('ModeloDFe não pode ser vazio');

  if EstaVazio(UF) then
    raise EACBrDFeException.Create('UF não pode ser vazia');

 

Obs.: Modo Homologação. Alguém da passou por isso e poderia e dá uma Dica?

 

 

Link to comment
Share on other sites

Observei que a mesma procedure que prepara a NFC para depois Gerar, Assinar e transmitir e que funciona tudo certo em modo Online, basta se mudar a linha para Offline que o sistema não captura mais nada, nem UF, nem Série, Nem número da NF, afinal, porque a mesma que gera tudo normal, e apenas trocando para offline ela não captura nada? Será que alguém aqui poderia me dá uma dica? Parece simples mais infelizmente já tem dias que a coisa não anda aqui.

Link to comment
Share on other sites

@Edy eu faço da seguinte forma :

Citar

 

            memoLog.Lines.Add('>>Gera NFCe OFF-Line');            Dm.ACBrNFe1.NotasFiscais[0].nfe.Ide.tpEmis := teOffLine;
            Dm.ACBrNFe1.NotasFiscais[0].nfe.Ide.dhCont := now;
            Dm.ACBrNFe1.NotasFiscais[0].nfe.Ide.xJust  := 'Problemas com a conexão de internet';

            memoLog.Lines.Add('>>GerarNFe ');
            DM.ACBrNFe1.NotasFiscais.GerarNFe;
            memoLog.Lines.Add('>>Assinar');
            DM.ACBrNFe1.NotasFiscais.Assinar;
            memoLog.Lines.Add('>>Validar');
            DM.ACBrNFe1.NotasFiscais.Validar;
            memoLog.Lines.Add('>>GravarXML'); ///grava aquivo em disco
            DM.ACBrNFe1.NotasFiscais.Items[0].GravarXML(FormatFloat('000000', DM.ACBrNFe1.NotasFiscais.Items[0].NFe.Ide.cNF)+'-Nfe.xml','C:\tmp\');

            sArqNFe := DM.ACBrNFe1.NotasFiscais.Items[0].NomeArq;
            memoLog.Lines.Add('>>'+sArqNFe);
            DM.ACBrNFe1.NotasFiscais.Clear;
            DM.ACBrNFe1.NotasFiscais.LoadFromFile(sArqNfe); // carrega novamente o arquivo XML

            memoLog.Lines.Add('>>Imprimir');
            DM.ACBrNFeDANFEFR1.Detalhado := True;
            DM.ACBrNFe1.NotasFiscais.Imprimir;

 

 

Link to comment
Share on other sites

Meu caro, tentei até mudar um pouco a ordem como vc colocou ai, mas mesmo assim, não adiante, tou ferrado, a sorte é que tudo ainda é so teste mesmo, nada está sendo colocado em produção em empresa nenhuma... mas a coisa tá ótima, o projeto tá ficando muito bom... mais isso já tem 1 semana que não consigo resolver, como algo funciona 100% para emitir NFCe, NFe, cancelamentos, cartas de correçao, inutilização mas essa emissão Offline não dá???, não sei o que é, é colocar em modo off que não vai, tá duro amigo!!!

Link to comment
Share on other sites

André o detalhe é que depois que atualizei os componentes há uns 10 dias atrás e fui tentar usar o DEMO e infelizmente não conseguir mais transmitir nenhuma NFe ou NFCe, pois dá esse erro: Communication Error 2:O sistema não pode encontrar o arquivo especificado . Dai como no programa que estou desenvolvendo isso não ocorria, eu deixei de lado testar pelo DEMO pq tinha q resolver essa questão que esta me tirando o sossego mas é uma pena que no DEMO está ocorrendo essa falha pq assim  poderia testar por ele pra ver onde poderia está esse erro  'UF não pode ser vazia"

Obs.: uso Certificado A3

Edited by Edy
Link to comment
Share on other sites

Bem, tirei um tempinho exclusivo para deixar o demo funcionando novamente.. conseguir, está ok.. agora fiz os teste de emissão em contingência Offline.. usando a mesma forma que uso no meu sistema e no demo funciona 100%...

      if pos('requisição não enviada', LowerCase(e.Message) )>0 then begin
        UsarContigencia:=true;
           GerarNFCe(ed_numNF.Text); *
        ACBrNFe1.NotasFiscais.GerarNFe;
        ACBrNFe1.NotasFiscais.Assinar;
        ACBrNFe1.NotasFiscais.Validar;
      end;

Tai, no demo OK no meu não sei que mistério tem, não vai!

Link to comment
Share on other sites

André, deburando obtenho dados das variáveis...
function TNFeW.GerarXml: Boolean;
var
  chave: AnsiString;
  Gerar: Boolean;
  xProtNFe : String;
  xCNPJCPF : string;
begin
  Gerador.ListaDeAlertas.Clear;

  Usar_tcDe4 := (NFe.infNFe.Versao >= 3.10);
  Versao     := Copy(NFe.infNFe.VersaoStr, 9, 4);

  chave := '';
  if NFe.infNFe.Versao >= 2 then
   begin
     xCNPJCPF := nfe.emit.CNPJCPF;  
     if not EstaVazio(nfe.Avulsa.CNPJ) then  
       xCNPJCPF := nfe.Avulsa.CNPJ;    
   
     if not GerarChave(Chave, nfe.ide.cUF, nfe.ide.cNF, nfe.ide.modelo, nfe.ide.serie,
       nfe.ide.nNF, StrToInt(TpEmisToStr(nfe.ide.tpEmis)), nfe.ide.dEmi, xCNPJCPF) then
       Gerador.wAlerta('A01', 'infNFe', DSC_CHAVE, ERR_MSG_GERAR_CHAVE);
   end
  else
   begin
     if not GerarChaveCTe(chave, nfe.ide.cUF, nfe.ide.cNF, nfe.ide.modelo, nfe.ide.serie,
       nfe.ide.nNF, nfe.ide.dEmi, nfe.emit.CNPJCPF) then
       Gerador.wAlerta('A01', 'infNFe', DSC_CHAVE, ERR_MSG_GERAR_CHAVE);
   end;

 showmessage('UF: '+ IntToStr(nfe.ide.cUF) + 'Num Série: '+IntToStr(nfe.ide.serie));

O que acontece... essa rotina é chamada umas 4 vezes antes de concluir o processamento da assinatura... no DEMO todas obtenho dessas variáveis que estão no Showmessage os valores certos: a UF e Nº de série por exemplo vem em todos os processos da rotina, mas... na minha aplicação, apesar de usar a mesma forma e sequencia do DEMO, ele aparece a 1ª vez com os dados capturados corretos, na 2ª vem vazia... dai na 3ª  vem capturada, na 4ª que finaliza  vazia, quer dizer, não sei pq há essa alternância de vir preenchidas e vazias.
 

Link to comment
Share on other sites

nossa, ufa... descobrir finalmente esse erro, mas poxa foi um pequeno erro por não entender direto a construção do objeto, mas tai ai para quem passar por isso:

Dentro da função  GerarNFCe(ed_numNF.Text)   existe a estrutura de preenchimento das variáveis do objeto da nfe usando WITH que é esse (   with ACBrNFe1.NotasFiscais.Add.NFe do ) onde se preenchia Ide.cNF, Ide.NatOp, etc e o que aconteceu, simples, eu na falta de conhecimento, acabei setando a variável digitando dentro do with mas dessa forma: ACBrNFe1.NotasFiscais.Add.nfe.Ide.tpEmis:=teOffLine  ao invés de nfe.Ide.tpEmis:=teOffLine dai não entendi como, mais como já explicado antes, falta de conhecimento mesmo, e essa adição de valor pra variável tpEmis dessa forma, fez com que houvesse uma repetição de procedimentos dentro do método Assinar onde o método TNFeW.GerarXml acabava ficando sem valores para [  nfe.ide.cUF, nfe.ide.cNF, nfe.ide.modelo ] etc.

Obrigado ai as tentativas de iniciar a ajuda pessoal!

  • Like 1
Link to comment
Share on other sites

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

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.