Ir para conteúdo
  • Cadastre-se

dev botao

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

Recommended Posts

Postado

EStou tendo problemas com a impressão da carta de correção em meus clientes, acabei de fazer a atualizacao do componente, e mesmo usando o ACBrNFe_Demo, para dar carga no XML da nota, qndo carrego o XML retornado da correcao, aparece o seguinte erro: 

---------------------------
Debugger Exception Notification
---------------------------
Project ACBrNFe_demo.exe raised exception class EventoException with message 'Campo cOrgao não informado'.
---------------------------
Break   Continue   Help   
---------------------------
debugando cheguei na função

TEventoNFe.LerXMLFromString(const AXML: String);

no metodo: Result := RetEventoNFe.LerXml;

o mesmo nao consegue ler nenhuma TAG do xml lido.

alguem esta conseguindo imprimir a carta de correção :

temp.xml

52180403748920000180550010000000011000000016-nfe.xml

Postado

Essa rotina estava funcionando normalmente ate a penúltima atualização que fiz.

clear só na nota, mas acabei de colocar um clear no evento, e o erro persiste.

quando gero o evento, e apos o retorno peco pra imprimir, funciona. o problema esta quando, quero reimprimi esse evento, e carrego os dados..para impressa

    if (qryEventosretorno_cstat.AsInteger in [101, 135, 128]) then
    begin
      DmNf.NFe.NotasFiscais.Clear;
      DmNf.NFe.EventoNFe.Evento.Clear;
      DmNf.ConfiguraNFe(qryNFeGridide_mod.AsInteger);
      try
        DmNf.NFe.NotasFiscais.LoadFromString(qryNFeGridwebservice_xml_ret.AsString);
        DmNf.NFe.EventoNFe.LerXMLFromString(qryEventosretorno_xml.AsString);
        DmNf.NFe.ImprimirEvento;
      except
        on e: exception do
        begin
          MensagemErro('Falha ao tentar imprimir o danfe desse evento' + sLineBreak +
                       'Erro: ' + e.Message);
        end;
      end;
    end;

 

  • Moderadores
Postado

Está carregando o XML de evento errado.

Você deve carregar o XML de processamento de evento salvo pelo ACBr como *-procEventoNFe.xml.

O XML de retorno do processamento de evento, que é o que está carregando, não tem todas as informações necessárias.

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

  • Moderadores
Postado
11 minutos atrás, Paulo Augusto disse:

voce esta sugerindo que eu use o xml de envio ?

Use o XML do evento processado <procEventoNFe> que contém os dados do envio <evento><infEvento> e retorno <retEvento>.

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Postado
DmNF.NFe.EventoNFe.Evento.Clear;
DmNF.NFe.EventoNFe.idLote := Dm.qryEventosenvio_lote.AsInteger ;
with DmNF.NFe.EventoNFe.Evento.Add do
begin
  infEvento.chNFe      := Dm.qryEventoswebservice_chave.AsString;
  infEvento.CNPJ       := ParametrosSistema.Empresa.CNPJ;
  infEvento.dhEvento   := now;
  infEvento.tpEvento   := teCCe;
  infEvento.nSeqEvento := Dm.qryEventoscce_seq.AsInteger;
  infEvento.detEvento.xCorrecao := Dm.qryEventosenvio_texto.AsString;
end;
DmNF.NFe.EnviarEvento(Dm.qryEventosenvio_lote.AsInteger);

Tentei todos esses retornos e quase todos retorna vazio.

Dm.qryEventosretorno_xml.AsString  := DmNF.NFe.EventoNFe.Evento.Items[0].RetInfEvento.XML;  <Vazio>

Dm.qryEventosretorno_xml.AsString := DmNF.NFe.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.XML; <Vazio>

Dm.qryEventosretorno_xml.AsString  := DmNF.NFe.WebServices.EnvEvento.EventoRetorno.XML; <Vazio>

Dm.qryEventosretorno_xml.AsString   := DmNF.NFe.WebServices.EnvEvento.RetWS; <xml retornado>

mesmo gravando esse, ultimo retorno, quando vou imprimir a carta de correcao, conforme rotina mais acima, lendo o xml gravado na tabela retorna o erro na linha que le o xml

if (qryEventosretorno_cstat.AsInteger in [101, 135, 128]) then
begin
  DmNf.NFe.NotasFiscais.Clear;
  DmNf.NFe.EventoNFe.Evento.Clear;
  DmNf.ConfiguraNFe(qryNFeGridide_mod.AsInteger);
  try
    DmNf.NFe.NotasFiscais.LoadFromString(qryNFeGridwebservice_xml_ret.AsString);
    DmNf.NFe.EventoNFe.LerXMLFromString(qryEventosretorno_xml.AsString);
    DmNf.NFe.ImprimirEvento;
  except
    on e: exception do
    begin
      MensagemErro('Falha ao tentar imprimir o danfe desse evento' + sLineBreak +
                   'Erro: ' + e.Message);
    end;
  end;
end;
  • Moderadores
Postado
33 minutos atrás, Paulo Augusto disse:

DmNF.NFe.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.XML

Essa propriedade deve conter o XML completo do evento, o mesmo que é gravado em disco pelo componente com o nome *-procEventoNFe.xml.

 

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Postado

então, na msg acima listo todas as propriedades que estão retornando em branco , por isso que mudei de propriedade ate encontrar uma q retorne o xml, porem..nao consigo ler o xml, ou seja acho q temos dois erros na rotina, 

1ª - a propriedade DmNF.NFe.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.XML, vem vazia

2ª - o xml q retorna na propriedade DmNF.NFe.WebServices.EnvEvento.RetWS; o componente nao consegue ler.

Postado (editado)

boa tarde Juliomar

ja conferi no exemplo do snv e por incrivel que pareca foi comentado os codigos que funcionava, restando apenas esse retorno ACBrNFe.WebServices.EnvEvento.RetWS onde usa a rotina para ler, converter para UTF8. acim a esta todo o codigo que usei, para enviar o evento, pegar o retorno gravar no banco, e em seguida ler o xml  do banco para entao fazer a impressao, e os xmls tbem ja estao anexados logo mais acima, creio que ambos os xmls estao ok, ja comparei ele com o xml antigo ja fiz a impressao, e esta igual, nao sei mais o que fazer....

mas vou postar aki novamente a rotina para envio do evento

 

DmNF.NFe.EventoNFe.Evento.Clear;
DmNF.NFe.EventoNFe.idLote := Dm.qryEventosenvio_lote.AsInteger ;
with DmNF.NFe.EventoNFe.Evento.Add do
begin
  infEvento.chNFe      := Dm.qryEventoswebservice_chave.AsString;
  infEvento.CNPJ       := ParametrosSistema.Empresa.CNPJ;
  infEvento.dhEvento   := now;
  infEvento.tpEvento   := teCCe;
  infEvento.nSeqEvento := Dm.qryEventoscce_seq.AsInteger;
  infEvento.detEvento.xCorrecao := Dm.qryEventosenvio_texto.AsString;
end;
DmNF.NFe.EnviarEvento(Dm.qryEventosenvio_lote.AsInteger);

Gravando retorno no Banco

      StartTrasanction(Dm.UConnection);
      try
        Dm.qryEventos.Edit;
        Dm.qryEventosretorno_cstat.AsInteger     := DmNF.NFe.WebServices.EnvEvento.cStat;
        Dm.qryEventosretorno_xmotivo.AsString    := DmNF.NFe.WebServices.EnvEvento.xMotivo;
        Dm.qryEventosretorno_xprot.AsString      := DmNF.NFe.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.nProt;
        Dm.qryEventosretorno_dhrecibo.AsDateTime := DmNF.NFe.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.dhRegEvento;
        Dm.qryEventosretorno_xml.AsString        := DmNF.NFe.WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.XML;
        if trim(Dm.qryEventosretorno_xml.AsString) = '' then
          Dm.qryEventosretorno_xml.AsString      := DmNF.NFe.WebServices.EnvEvento.RetWS;
        Dm.qryEventossituacao.AsInteger          := iffthen(MatchStr(IntToStr(DmNF.NFe.WebServices.EnvEvento.cStat),['135','136']),1,2);
        Dm.qryEventos.Post;
        CommitTransaction(Dm.UConnection);

        if MatchStr(IntToStr(DmNF.NFe.WebServices.EnvEvento.cStat),['101','128','135','136']) then
          DmNF.NFe.ImprimirEvento;
      except
        on e: exception do
        begin
          RollbackTransaction(Dm.UConnection);
          MensagemErro('Falha ao gravar o retorno da Carta de Correção' + sLineBreak +
                       'Erro: ' + e.Message);    
        end;
      end;

Na tela de Notas Fiscais, secao Eventos, ler o xml e imprimir

if (qryEventosretorno_cstat.AsInteger in [101, 135, 128]) then
begin
  DmNf.NFe.NotasFiscais.Clear;
  DmNf.NFe.EventoNFe.Evento.Clear;
  DmNf.ConfiguraNFe(qryNFeGridide_mod.AsInteger);
  try
    DmNf.NFe.NotasFiscais.LoadFromString(qryNFeGridwebservice_xml_ret.AsString);
    DmNf.NFe.EventoNFe.LerXMLFromString(qryEventosretorno_xml.AsString);   <<<======ERRROOOOO!!!!
    DmNf.NFe.ImprimirEvento;
  except
    on e: exception do
    begin
      MensagemErro('Falha ao tentar imprimir o danfe desse evento' + sLineBreak +
                   'Erro: ' + e.Message);
    end;
  end;
end;

Ao debugar o metodo LerXmlString();

//unit pcnEnvEventoNFe: Linha 376

RetEventoNFe.Leitor.Arquivo := AXML; <<=== aqui mostra o conteudo do xml - perfeito

Result := RetEventoNFe.LerXml;

// unit pcnRetEnvEventoNFe linha 188 - 

function TRetEventoNFe.LerXml: Boolean;

Leitor.rAtributo('Id'); <<<=== A partir daqui o xml misteriosamente esapareceu e o metodo nao consegue mais ler nenhuma TAG.

 

 

Editado por Paulo Augusto
Postado
2 horas atrás, Paulo Augusto disse:

Alguem que grava o xml de retorno de um evento..ta cosneguindo carrega-lo e imprimir ?

Boa noite, 

aqui segue meu código...
 

      ACBrNFe.NotasFiscais.Clear;

      ACBrNFe.Configuracoes.Arquivos.PathSchemas := Trim(sCaminhoSchemasXML);
      ACBrNFe.Configuracoes.Arquivos.PathSalvar  := Trim(sPathNFe);
      ACBrNFe.DANFE.PathPDF := Trim(sArquivoPDF);  /// ** Aqui é onde SALVA O PDF;
      ACBrNFe.DANFE.Usuario := 'USUÁRIO QUE EMITIU: ' +strUSUARIO;
      ACBrNFe.DANFE.Sistema := sNomeSistema;
      ACBrNFe.DANFE.Logo    := ExtractFilePath(Application.ExeName)+ 'FOTOS\EMPRESA\'+sCodigoEmpresa+'.jpg';

      ACBrNFe.NotasFiscais.LoadFromFile( sPathNFe+sChave+'-nfe.xml' );
      ACBrNFe.NotasFiscais.Imprimir;/// ** AQUI o usuário já imprimi em tela.

Postado

Bom dia.

o engraçado é qndo envio o evento, apos recebê-lo eu valido o retorno cStat e imprimo o evento ate ai perfeito!

mas imagine o seguinte cenario, iampressora desligada, sem impressora, no momento, por isso que gravo o XML tanto das notas qnto dos eventos no banco de dados, o problema comeca qndo carrego esse XML do banco, o metodo.

AcbrNFe.Nfe.EventoNFe.LerXMLFromString(qryEventosretorno_xml.AsString);

eu ja salvei e ja conferi o xml esta ok com ele, mas o medto citado, nao consegue ler o xml., mesmo no ACBRNFe_Demo,

tbem nao consegue ler..

  • Moderadores
Postado
30 minutos atrás, Paulo Augusto disse:

Bom dia.

o engraçado é qndo envio o evento, apos recebê-lo eu valido o retorno cStat e imprimo o evento ate ai perfeito!

mas imagine o seguinte cenario, iampressora desligada, sem impressora, no momento, por isso que gravo o XML tanto das notas qnto dos eventos no banco de dados, o problema comeca qndo carrego esse XML do banco, o metodo.


AcbrNFe.Nfe.EventoNFe.LerXMLFromString(qryEventosretorno_xml.AsString);

eu ja salvei e ja conferi o xml esta ok com ele, mas o medto citado, nao consegue ler o xml., mesmo no ACBRNFe_Demo,

tbem nao consegue ler..

Você precisa debugar e verificar porque a tag WebServices.EnvEvento.EventoRetorno.retEvento.Items[0].RetInfEvento.XML está vindo vazia após o envio do evento.

Apenas com o XML de retorno vai ocorrer o erro mesmo, já que faltam dados que o método de carregamento espera encontrar.

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Postado

ja fiz isso amigo, olha mais no inicio do post,, essa propriedade vinha preenchida, agora vem vazia, por tanto passei a pegar o xml de outra propriedade, o problema é na leitura do xml.

Gostaria de saber se alguem ja fez o teste, gerar uma CCe, pegar o retorno, gravar numa tabela, noutro botao, limpar o objeto (ACBrNFe) e fazer a carga do xml da nota e no xml do evento (Salvo)  pra dai imprimir ..

pode ser que talvez esteja funcionando  e eu esteja fazendo algo errado

mas debuguei a rotina toda, em dado moento o acbr consegue ler os paramentros certinho, porem qndo passa os dados para as propriedades public ai por alg motivo, essas propriedades estao sem nenhum valor.e ai..o erro citado no post é apresentado.

  • Moderadores
Postado
27 minutos atrás, Paulo Augusto disse:

Gostaria de saber se alguem ja fez o teste, gerar uma CCe, pegar o retorno, gravar numa tabela, noutro botao, limpar o objeto (ACBrNFe) e fazer a carga do xml da nota e no xml do evento (Salvo)  pra dai imprimir .. 

Com o XML completo, sem problemas.

Apenas com o XML de retorno, vai haver o erro de cOrgao nao informado.

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

  • Moderadores
Postado
38 minutos atrás, Paulo Augusto disse:

Desculpe minha ignorância, mas o que seria o XML Completo, seria esse em anexo 

temp.xml

Esse é apenas o retorno, não serve.

O completo, como já informei:

Em 11/04/2018 at 09:41, BigWings disse:

Use o XML do evento processado <procEventoNFe> que contém os dados do envio <evento><infEvento> e retorno <retEvento>.

Veja o XML sendo retornado, com pequeno ajuste no demo do ACBrNFe:

procEventoNFe.png

 

Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Postado (editado)

ola uso o acbrnfeplus para emitir uma carta de correcao uso o comando  

NFE.CARTADECORRECAO   agora gostaria de saber como imprimir a mesma ?

pois tem uma mudança de transportadora e o contador e o cliente deseja essa carta em pdf, como proceder ?

Editado por paracima.com.br

Atenciosamente
WMK
Walney Moreira Klein
www.paracima.com.br

Que DEUS abençoe a Todos nós.

[email protected]

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