Ir para conteúdo
  • Cadastre-se

dev botao

Gnre não está gerando o xml das Guias


Ver Solução Respondido por Italo Giurizzato Junior,
  • Este tópico foi criado há 1658 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.

Recommended Posts

Postado

Estou tendo problemas ao transmitir o Lote da Gnre pois o xml referente as Guias está em branco, no arquivo  "Acbr\Fontes\ACBrDFe\ACBrGNRE\ACBrGNREWebServices.pas"  na linha 426 "vGuias := vGuias + FGuias.Items.XML;" não está carregando xml algum, pois o atributo "XML" está em branco, fiz alterações no código para que eu pudesse transmitir as Gnres.

 

Estou utilizando o método "AcbrGnre.WebServices.Enviar.Executar", estou adicionando apenas 1 guia no lote, durante a depuração do código notei que entra no for porém o atributo "XML" está em branco, e por isso não gera o xml.

 

Código original:

procedure TGNRERecepcao.DefinirDadosMsg;
var
  i: Integer;
  vGuias, Versao: String;
begin
  vGuias := '';
  for i := 0 to FGuias.Count - 1 do
    vGuias := vGuias + FGuias.Items.XML;  // Aqui o Xml está em branco

  if FPConfiguracoesGNRE.Geral.VersaoDF = ve200 then
    Versao := 'versao="2.00" '
  else
    Versao := '';

  FPDadosMsg := '<TLote_GNRE ' + Versao + 'xmlns="http://www.gnre.pe.gov.br">' +
                '<guias>' + vGuias + '</guias>' +
               '</TLote_GNRE>';

  if Length(FPDadosMsg) > (300 * 1024) then
    GerarException(ACBrStr('Tamanho do XML de Dados superior a 300 Kbytes. Tamanho atual: ' +
      IntToStr(trunc(Length(FPDadosMsg) / 1024)) + ' Kbytes'));
end;

 

Código alterado:

procedure TGNRERecepcao.DefinirDadosMsg;
var
  i: Integer;
  vGuias, Versao: String;
begin
  vGuias := '';
  for i := 0 to FGuias.Count - 1 do begin
    if FGuias.Items.XML='' then begin
      vGuias := vGuias + FGuias.Items.GerarXML;
    end else begin
      vGuias := vGuias + FGuias.Items.XML;
    end;
  end;

  if FPConfiguracoesGNRE.Geral.VersaoDF = ve200 then
    Versao := 'versao="2.00" '
  else
    Versao := '';

  FPDadosMsg := '<TLote_GNRE ' + Versao + 'xmlns="http://www.gnre.pe.gov.br">' +
                '<guias>' + vGuias + '</guias>' +
               '</TLote_GNRE>';

  if Length(FPDadosMsg) > (300 * 1024) then
    GerarException(ACBrStr('Tamanho do XML de Dados superior a 300 Kbytes. Tamanho atual: ' +
      IntToStr(trunc(Length(FPDadosMsg) / 1024)) + ' Kbytes'));
end;

 

  • Moderadores
Postado
41 minutos atrás, RP INFO Desenvolvimento disse:

Estou utilizando o método "AcbrGnre.WebServices.Enviar.Executar"

Em vez de usar o método mais interno, porque não usar o método ACBrGNRE1.Enviar?

Ele já faz a chamada a ACBrGNRE1.Guias.GerarGNRE que gera os XML, envio, tratamento do retorno e opcionalmente a impressão da guia.

  • Curtir 1
Equipe ACBr BigWings
Ajude o Projeto ACBr crescer - Assine o SAC

Projeto ACBr

 

 

Postado (editado)
1 hora atrás, BigWings disse:

Em vez de usar o método mais interno, porque não usar o método ACBrGNRE1.Enviar?

Ele já faz a chamada a ACBrGNRE1.Guias.GerarGNRE que gera os XML, envio, tratamento do retorno e opcionalmente a impressão da guia.

Ok, posso até usar este método, mas não deixa de ser um erro, já que os métodos são sobrescritos (override) na classe descendente.

Obrigado pela dica!

 

Abraço.

Editado por RP INFO Desenvolvimento
Postado
Em 05/05/2020 at 12:04, BigWings disse:

Em vez de usar o método mais interno, porque não usar o método ACBrGNRE1.Enviar?

Ele já faz a chamada a ACBrGNRE1.Guias.GerarGNRE que gera os XML, envio, tratamento do retorno e opcionalmente a impressão da guia.

Realizei o teste com o método que me passou, mas eu não quero que o processamento seja síncrono, notei que neste método ele faz o envio e logo em seguida consulta o recibo do Lote, não posso utilizar desta maneira, tem outra opção para me passar?

  • Moderadores
Postado
57 minutos atrás, RP INFO Desenvolvimento disse:

Realizei o teste com o método que me passou, mas eu não quero que o processamento seja síncrono, notei que neste método ele faz o envio e logo em seguida consulta o recibo do Lote, não posso utilizar desta maneira, tem outra opção para me passar?

Você pode chamar o método Guias.GerarGNRE para gerar os XML, depois usar o método de envio.

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

Projeto ACBr

 

 

Postado
14 minutos atrás, BigWings disse:

Você pode chamar o método Guias.GerarGNRE para gerar os XML, depois usar o método de envio.

Neste caso vou manter a alteração que fiz no método "TGNRERecepcao.DefinirDadosMsg", eu tenho um repositório GIT aqui na empresa para versionar os fontes do ACBR, consigo manter esta modificação mesmo quando atualizar os fontes.

Ou posso executar "Guias.GerarGNRE" na minha classe de regra de negócio.

Caso realizem a correção no método "AcbrGnre.WebServices.Enviar.Executar" passo a utilizar os fontes originais do ACBR, eu realmente gostaria de poder usar os fontes sem ter que editá-los.

Obrigado pela atenção.

  • Consultores
Postado

Boa tarde,

Acredito que você tenha uma aplicação que emite NF-e ou CT-e, correto?

Você também fez essa alteração no DefinirDadosMsg do componente ACBrNFe / ACBrCTe?

Se não fez, qual é a sequencia de comandos que são executados para gerar o XML, assinar, validar e enviar a NF-e ou CT-e?

Qual é a dificuldade em acrescentar a linha em negrito abaixo (sugerida pelo BigWings) para gerar o XML e em seguida realizar o envio através do comando desejado?

 

  ACBrGNRE1.Guias.GerarGNRE;
  ACBrGNRE1.WebServices.Enviar.Executar;
 

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

Postado
Em 06/05/2020 at 16:11, Italo Jurisato Junior disse:

Boa tarde,

Acredito que você tenha uma aplicação que emite NF-e ou CT-e, correto?

Você também fez essa alteração no DefinirDadosMsg do componente ACBrNFe / ACBrCTe?

Se não fez, qual é a sequencia de comandos que são executados para gerar o XML, assinar, validar e enviar a NF-e ou CT-e?

Qual é a dificuldade em acrescentar a linha em negrito abaixo (sugerida pelo BigWings) para gerar o XML e em seguida realizar o envio através do comando desejado?

 

  ACBrGNRE1.Guias.GerarGNRE;
  ACBrGNRE1.WebServices.Enviar.Executar;
 

Boa tarde,

Tenho uma aplicação que faz transmissões de Nfe, Cte, MDFe, Gnre e NFse, e em nenhuma delas precisei fazer essa alteração, pois o método executar de cada classe funciona de maneira Macro, ou seja Gera o xml, assina e transmite sem que eu tenha que fazer outra chamada de método, eu adicionei a linha em negrito, pois achei mais fácil do que manter a alteração no Acbr.

 

Obrigado pela atenção.

  • Consultores
Postado

Bom dia,

No caso da NF-e, após alimentar o componente com os dados da venda a sua aplicação apenas executa o comando:

  ACBrNFe1.WebServices.Enviar.Executar;

E o componente se encarrega de gerar o XML, assinar, validar e enviar para a SEFAZ a nota?

Na rotina que alimenta o componente não existe nenhuma chamada aos métodos assinar e validar?

 

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

  • Consultores
  • Solution
Postado

Boa tarde,

Favor atualizar os fontes, remova a linha que eu sugerir que fosse colocada antes da execução do Enviar.

No método TGNRERecepcao.DefinirDadosMsg foi trocado a propriedade XML por XMLAssinado, desta forma o componente consegue gerar e assinar o XML automaticamente antes do seu envio.
 

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

Postado
Em 08/05/2020 at 10:14, Italo Jurisato Junior disse:

Bom dia,

No caso da NF-e, após alimentar o componente com os dados da venda a sua aplicação apenas executa o comando:

  ACBrNFe1.WebServices.Enviar.Executar;

E o componente se encarrega de gerar o XML, assinar, validar e enviar para a SEFAZ a nota?

Na rotina que alimenta o componente não existe nenhuma chamada aos métodos assinar e validar?

 

Bom dia,

Sim, após carregar os dados da nota no componente, executo apenas a linha "ACBrNFe1.WebServices.Enviar.Executar;" sem ter que fazer mais nada além disso.

 

Postado
4 horas atrás, Italo Jurisato Junior disse:

Bom dia,

Você fez o que eu sugeri na minha postagem anterior?

Se sim, funcionou conforme você queria?

Boa tarde.

Desculpa não responder antes.

Sim, funcionou da maneira como eu uso em outros processos.

Obrigado.

  • Obrigado 1
  • Administradores
Postado

Obrigado por reportar.

Fechando. Para novas dúvidas, criar um novo tópico.

Consultora SAC ACBr

Juliana Tamizou

Gerente de Projetos ACBr / Diretora de Marketing AFRAC
Ajude o Projeto ACBr crescer - Seja Pro

Projeto ACBr     Telefone:(15) 2105-0750 WhatsApp(15)99790-2976.  Discord

Projeto ACBr - A maior comunidade Open Source de Automação Comercial do Brasil


Participe de nosso canal no Discord e fique ainda mais próximo da Comunidade !!

  • Este tópico foi criado há 1658 dias atrás.
  • Talvez seja melhor você criar um NOVO TÓPICO do que postar uma resposta aqui.
Visitante
Este tópico está agora fechado para novas respostas
×
×
  • 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.