Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

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?

 

 

Postado

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.

Postado

@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;

 

 

Postado

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!!!

Postado (editado)

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

Editado por Edy
Postado

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!

Postado

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.
 

Postado

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!

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