Ir para conteúdo
  • Cadastre-se

RP INFO Sistemas

Membros
  • Total de ítens

    27
  • Registro em

  • Última visita

  • Days Won

    1

Posts postados por RP INFO Sistemas

  1. Olá, estou usando a Classe TNFSeGerarNFSe, método Executar porém ao gerar o xml para o envio, o mesmo fica incompleto como no exemplo a seguir:
    '<GerarNfseEnvio xmlns="http://www.abrasf.org.br/nfse.xsd%22%3E<Rps><InfDeclaracaoPrestacaoServico</InfDeclaracaoPrestacaoServico></Rps></GerarNfseEnvio>'
    Pelo que percebi é algo relacionado à propriedade "Provedor" pertencente à classe "TNFSeWebService", porém não sei qual valor utilizar para o município de Maringá, qual valor do enum "TnfseProvedor" devo usar?
    Notei que obriga usar um arquivo "Cidades.ini", como devo configurar este arquivo?
    Na seção Maringá está assim:

    [4115200]
    Nome=Maringa
    UF=PR
    Provedor=ISSe
    NomeURL_H=https://nfse-ws.hom-ecity.maringa.pr.gov.br/v2.01 
    NomeURL_P=https://nfse-ws.ecity.maringa.pr.gov.br/v2.01 

    Porém usando o Provedor como ISSe está com problema no XML conforme descrito acima, já tentei como proABRASFv2 mas também gera incorretamente, lembrando que Maringá utiliza o layout "Abrasf V 2.01".

    Alguém que possua integração com Maringá para me ajudar?

    Tentei utilizar o aplicativo de exemplo contido em: "Acbr\Exemplos\ACBrDFe\ACBrGNRe\Delphi\ACBrGNRe_Exemplo.dpr" porém não possuo FastReport para compilar e testar o projeto de exemplo, 
    uma dica que ajudaria, seria não exigir FastReport, apenas ter a parte de comunicação com a prefeitura, pois não preciso testar geração de impresso da NFSe.

    Em relação à versão dos fontes, estes são do dia 29/03/2021.


    Obrigado.

  2. 21 horas atrás, Italo Jurisato Junior disse:

    Bom dia,

    Você esta salvando os XMLs no banco de dados, correto?

    Já abriu esse arquivo que você anexou com o Bloco de Notas?

    Se não abriu, abra.

    Vai notar que existe espaços em branco entre as tags e alguns caracteres que acredito que seja de formatação.

    Suspeito que ao salvar ou carregar o XML do banco de dados esteja provocando a inserção desses espaços e caracteres.

    Olá, eu fiz a implementação para carregar os motivos da rejeição, segue unit em anexo.

    Apenas adicionei esse trecho de código na linha 558:

     

          if Leitor.rExtrai(4, 'motivosRejeicao') <> '' then
          begin
            j:=0;
            while Leitor.rExtrai(5, 'motivo', '', j + 1) <> '' do begin
              resRejeicaoGuia.New;
              resRejeicaoGuia.Items[j].CodMotivoRejeicao      := Leitor.rCampo(tcInt, 'codigo');
              resRejeicaoGuia.Items[j].DescMotivoRejeicao     := Leitor.rCampo(tcStr, 'descricao');
              resRejeicaoGuia.Items[j].NomeCampo              := Leitor.rCampo(tcStr, 'campo');
              Inc(j);
            end;
          end;

     

    pgnreRetConsResLoteGNRE.pas

    • Obrigado 1
  3. 21 horas atrás, Italo Jurisato Junior disse:

    Bom dia,

    Você esta salvando os XMLs no banco de dados, correto?

    Já abriu esse arquivo que você anexou com o Bloco de Notas?

    Se não abriu, abra.

    Vai notar que existe espaços em branco entre as tags e alguns caracteres que acredito que seja de formatação.

    Suspeito que ao salvar ou carregar o XML do banco de dados esteja provocando a inserção desses espaços e caracteres.

    Segue imagem com o inspect da variável "FPRetornoWS"  referente a consulta de recibo da GNRE.

    Note que na memória já possuem espaços no xml.

    XmlResRejeicaoGuiaVazio.png

  4. 21 horas atrás, Italo Jurisato Junior disse:

    Bom dia,

    Você esta salvando os XMLs no banco de dados, correto?

    Já abriu esse arquivo que você anexou com o Bloco de Notas?

    Se não abriu, abra.

    Vai notar que existe espaços em branco entre as tags e alguns caracteres que acredito que seja de formatação.

    Suspeito que ao salvar ou carregar o XML do banco de dados esteja provocando a inserção desses espaços e caracteres.

    Bom dia,

     

    O Xml anexado é direto do componente, não é salvo em banco de dados.

     

    Obrigado.

  5. Bom dia.

    Após uma modificação feita pelo Italo Jurisato Junior, sobre o método " ACBrNFe1.WebServices.Enviar.Executar;" não gerar o xml da GNRE, passou a ocorrer o erro HTTP 500.

    Obs: eu modifiquei a linha 415 do arquivo "ACBrGNREWebServices.pas" para o que estava antes de sua modificação é passou a funcionar, então creio que o conteúdo da propriedade "XmlAssinado" está com erros, notei que está incluindo a informação "<?xml version="1.0" encoding="UTF-8"?>" e por isso passou a ocorrer o erro 500.

     

    Seguem os arquivos com os xmls para análise.

    Tópico original:   

     

     

    Obrigado.

    XmlAntigo.txt XmlAssinado.txt

  6. 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.

     

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

  8. Olá, detectei um memory leak na classe TGNRERetRecepcao, no método "TGNRERetRecepcao.Clear", há um momento que a intância do atributo "FGNRERetorno" já existe, mas a instância e criada e sobreposta.

    Segue o relatório de Memory Leak do "FastMM", arquivo "TransmissoresSefaz_MemoryManager_EventLog.txt".

    Na imagem anexada (arquivo "CriacaoInstancia_ComOutraExistente.png") o breakpoint está na linha onde é feito o create, mas já existe uma instância para o objeto.

     

    CriacaoInstancia_ComOutraExistente.png

    TransmissoresSefaz_MemoryManager_EventLog.txt

    • Obrigado 1
  9. 15 horas atrás, Daniel Simoes disse:

    Ainda preciso dessas informações... para analise...

    Olá realizei o teste com a demo da GNRE, o erro também ocorre neste projeto.

    Note que na mensagem de erro agora pegou parte do XML, ou seja, é lixo de memória.

    Obs: Ocorre quando eu configuro o SSLType como "LT_TLSv1_2", com "LT_all" não dá erro.

     

    Obrigado pela atenção.

     

     

    ErroDemoGnreACBR.png

    MensagemErroDemo.png

    • Obrigado 1
  10. 2 horas atrás, Daniel Simoes disse:

    Isso não é lixo... a API do Windows usar WideString, que são 16bits por Caracteres

    Não consegui ver no tópico... Qual é a exata msg de erro ?

    Por favor teste com o Demo do ACBr... ele é o unico projeto, que nós temos em comum, com você.. então se o erro ocorrer nele, nós aqui, podemos investigar e debugar

    Sim, é lixo de memória, note que éfeito um setLength para 1024, mas não é carregado nenhum conteúdo nela, pois não entra em nenhuma das condições, apenas fica com o que já estava na memória.

    Tem situações que pega strings do Projeto que nem estão mais alocadas, tenho exemplos que pega partes de SQL, tem momentos que pega byte 0 nas posições, e por isso gera erros.

    Eu solucionei meu problema mudando a configuração SSLHttpLib para "httpWinINet" no lugar de "httpWinHttp". 

  11. 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.

  12. 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?

  13. 1 hora atrás, Italo Jurisato Junior disse:

    Boa tarde,

    Altere a configuração:

    SSLXmlSignLib         := xsMsXml;

    para:

    SSLXmlSignLib         := xsLibXml2;

    E faça novos testes.

    Alterei a configuração conforme solicitou, mas não resolveu o problema.

    Depurei o código e identifiquei que no método "TACBrWinReqResp.GetWinInetError" o parâmetro "ErrorCode" está chegando com valor "0", e por este motivo não entra em nenhuma condição do case "case ErrorCode of", e por isso a variável "ErrorMsg" fica com lixo de memória, pois tem um SetLength(ErrorMsg, 1024); na linha 256 do arquivo "ACBrWinReqRespClass.pas", e por este motivo não captura o erro que ocorreu.

    Seguem prints em anexo.

     

    ErrorMsg_LixoMemória.png

    SendData_False.png

    ConfiguracaoSolicitada_Italo.png

    DadosEnviados.png

    • Obrigado 1
  14. 49 minutos atrás, Italo Jurisato Junior disse:

    Tente desta outra forma:

      ACBrGNRE1.WebServices.Retorno.numeroRecibo := aux;
      ACBrGNRE1.WebServices.Retorno.Executar;

    Onde aux contem o numero do recibo a ser consultado.

    Analisando os fontes do componente notei que esse esta mais completo que o outro.

    Olá, testei com essa classe que orientou, e funcionou perfeitamente.

     

    Obrigado pela atenção.

     

    Abraço.

     

    • Curtir 1
  15. 1 hora atrás, Italo Jurisato Junior disse:

    Boa tarde,

    Muito estranho, pois recebi hoje mesmo um XML referente a consulta onde constava o numero do recibo.

    Outra coisa o seu fonte deve estar desatualizado pois a que atribui uma string vazia a propriedade FnumeroRecibo é 826 e não 823.

    Anexa o fragmento de código que você esta usando para realizar a consulta.

    Esse problema também ocorre com o programa exemplo?

    Se eu utilizar o método "AcbrGNre.ConsultarResultadoLote" funciona, mas estou utilizando o método "AcbrGNre.WebServices.Recibo.Executar", pois é o padrão que foi adotado no projeto, a versão que deu o problema é do dia 30/04/2020.

     

    As imagens anexadas, são com a última versão do Acbr baixada hoje 05/05/2020 ás 15:05, neste caso não é problema de fonte desatualizado.

    ConsResLoteGNRE_numeroRecibo.png

    FNumeroRecibo.png

    FNumeroReciboVazio.png

    FPDadosMsg.png

    XmlGeradoPeloAcbr.png

    FNumeroReciboAntesDoClear.png

  16. 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.

  17.  O atributo FNumeroRecibo está sendo zerado ao efetuar consulta de recibo da Gnre.

    Na classe "TDFeWebService" a qual é base para a classe "TGNREWebService", no método "InicializarServico" está executando o método "Clear" e está zerando o atributo "FNumeroRecibo" e consequentemente o xml enviado dá erro de schema.

    Xml está sendo gerado no formato: "<TConsLote_GNRE xmlns="http://www.gnre.pe.gov.br"><ambiente>2</ambiente><numeroRecibo></numeroRecibo></TConsLote_GNRE>", com a tag numeroRecibo sem conteúdo.

    Para conseguir emitir a Gnre e consultar seu recibo, tive que comentar a linha 823 (FnumeroRecibo := '';) do método Clear que está no arquivo "Acbr\Fontes\ACBrDFe\ACBrGNRE\ACBrGNREWebServices.pas" para que o Numero do recibo fosse mantido.

  18. 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;

     

  19. 20 minutos atrás, Juliana Tamizou disse:

    Tópico movido para a área do SAC, para que o SLA de respostas seja considerado

    Bom dia.

    Você reproduz o mesmo no demo?

    Quais são as configurações do componente?

    Att.

    Olá, não testei com a demo, como eu falei com a versão do mês de janeiro funciona, porém quando atualizo para a versão que está no SVN, passo a ter estes erros.

    Obs: Estou emitindo em produção, para a UF "GO".

    segue código da configuração do componente:

    class function TAcbrUtilGnre.buildAcbr(context: TAppContext): TACBrGNRE;
    var
      acbrGnre: TACBrGNRE;
    begin
      acbrGnre:=TACBrGNRE.Create(nil);
      with acbrGnre.Configuracoes.Geral do begin
        SSLLib                := libWinCrypt;
        SSLCryptLib           := cryWinCrypt;
        SSLHttpLib            := httpWinHttp;
        SSLXmlSignLib         := xsMsXml;
      
        ExibirErroSchema := true;
        RetirarAcentos   := true;
        FormatoAlerta    := '';
        FormaEmissao     := teNormal;
        VersaoDF         := pgnreConversao.ve100;
        Salvar           := false
      end;

      acbrGnre.SSL.SSLType:=LT_TLSv1_2;
      acbrGnre.Configuracoes.WebServices.SSLType:=LT_TLSv1_2;
      acbrGnre.Configuracoes.WebServices.TimeOut:=context.transmissor.TimeOut * 1000;
      acbrGnre.Configuracoes.Arquivos.Salvar:=false;
      acbrGnre.Configuracoes.Arquivos.PathGNRE:='';
      acbrGnre.Configuracoes.Arquivos.PathArqTXT:='';
      acbrGnre.Configuracoes.Arquivos.PathSalvar:='';
      acbrGnre.Configuracoes.Arquivos.PathSchemas:=TAppFunctions.getPath + 'schemas\Gnre\';
      acbrGnre.SSL.LerCertificadosStore;
      acbrGnre.Configuracoes.WebServices.Ambiente:=TAcbrUtilGnre.convertToAmbiente(context.transmissor.tipoAmbiente.toName);
      result:=acbrGnre;
    end;

     

     

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