Ir para conteúdo
  • Cadastre-se

rubenstz

Membros
  • Total de ítens

    53
  • Registro em

  • Última visita

Posts postados por rubenstz

  1. Também estou tendo o problema com a mensagem

    Assinatura do Hash nao confere

    Alguém já esta enviando por este provedor? Existe alguma solução que possamos fazer? 

    Li alguns tópicos que falam sobre tags minúsculas de Id no arquivo de schema, mas nada foi claro para entender como resolver. 

  2. Também tive este problema algumas vezes. Notei que isto ocorre quando:

    1. Atualizamos a pasta ACBr e compilamos a app e esquecemos de atualizar na pasta do executável do cliente a pasta de SCHEMA ou ARQINI que ele utiliza, quando há alteração nestas pastas pelo SVN do ACBR ele esta compilado para rodar com as últimas atualizações do provedor, então tem que lembrar de levar junto e também atualizar no cliente;

    2. Mal contato no certificado A3, por exemplo, desencaixado da porta acidentalmente ou algum problema de uso no próprio WINDOWS a saída para isto é trocar a porta USB ou apenas remover e inserir novamente, fechar a aplicação e abrir novamente para pedir o PIN tbm é aconselhável;

    3. Não lê o certificado por estar corrompido e realmente a reinstalação resolve este problema.

    É isto, espero que sirva como base de conhecimento.

     

  3. Bom dia,

    Precisei fazer uma alteração na função LerNFSe_SP na unit ..\acbr\Fontes\ACBrDFe\ACBrNFSe\PCNNFSe\pnfsNFSeR.pas , pois não estava lendo o e-mail do tomador que fica separado dos dados do contato no xml da nfse e não aparece na DANFSE.coloquei abaixo da linha de leitura da Razão Social:

        NFSe.Tomador.RazaoSocial := Leitor.rCampo(tcStr, 'RazaoSocialTomador');

    inseri

        NFSe.Tomador.Contato.Email := Leitor.rCampo(tcStr, 'EmailTomador');

    comentei a linha de leitura do e-mail do contato no grupo do tomador

    ...
    	with NFSe.Tomador do
        begin
          if (Leitor.rExtrai(2, 'CPFCNPJTomador') <> '') then
            IdentificacaoTomador.CpfCnpj := Leitor.rCampoCNPJCPF;
          //Contato.Email := Leitor.rCampo(tcStr, 'EmailTomador'); // comentei senão sobrepõe a leitura acima
    ...

    Feito para o provedor proSP, anexo para analisar se necessário.

     

    pnfsNFSeR.pas

  4. Boa tarde,

    Precisei fazer um ajuste na unit pnfsNFSeW_SP para impressão correta do percentual de carga tributária para a cidade de São Paulo pois estava arredondando o valor percentual.

    Exemplo: perc. carga tributária = 18,45 % no XML do RPS precisa enviar 0,1845 mas enviava 0,18 e aparecia 18,00 % na NFSe.

    A alteração foi na GerarListaServicos ficando desta maneira:

    procedure TNFSeW_SP.GerarListaServicos;
    begin
      Gerador.wCampoNFSe(tcStr, '', 'Discriminacao', 1, 2000, 1, NFSe.Servico.Discriminacao, '');
      Gerador.wCampoNFSe(tcDe2, '', 'ValorCargaTributaria', 1, 15, 0, NFSe.Servico.ValorCargaTributaria, '');
      //Gerador.wCampoNFSe(tcDe2, '', 'PercentualCargaTributaria', 1, 5, 0, NFSe.Servico.PercentualCargaTributaria, '');  // alterado de tcDe2 para tcDe4
      Gerador.wCampoNFSe(tcDe4, '', 'PercentualCargaTributaria', 1, 5, 0, NFSe.Servico.PercentualCargaTributaria, '');
      Gerador.wCampoNFSe(tcStr, '', 'FonteCargaTributaria', 1, 10, 0, NFSe.Servico.FonteCargaTributaria, '');
    end;

    Segue anexo, se puderem avaliar para correção.

    pnfsNFSeW_SP.pas

  5. O erro de retorno que estava acontecendo é um problema na unit pnfsCancNfseResposta que fica na pasta do ACBr em ..\Fontes\ACBrDFe\ACBrNFSe\PCNNFSe na função LerXml_proISSDSF, o retorno de FInfCanc.FSucesso no cabeçalho para este provedor é o valor 'true' e estava verificando apenas o valor 'S' deixei da seguinte maneira:

    if (leitor.rExtrai(2, 'Cabecalho') <> '') then
    begin
      FInfCanc.FSucesso := Leitor.rCampo(tcStr, 'Sucesso');
      if FInfCanc.FSucesso = 'S' then // provedor CTA
      	FInfCanc.DataHora := Date
      else if FInfCanc.FSucesso = 'true' then // provedor ISSDSF
      	FInfCanc.DataHora := Date;
    
      FInfCanc.DataHora := Date;
    end;

    Segue também a unit em anexo, se puderem avaliar e inserir nos fontes.

    Abs,

    pnfsCancNfseResposta.pas

  6. Boa tarde,

    Estou implementando NFSe para o munícipio de SOROCABA - SP que utiliza o provedor ISSDSF, já passei pela fase de envio de RPS e NFSe, porém tenho problema ao pegar o retorno de cancelamento de uma nota, esta dando uma mensagem de erro vazia após executar o evento, por exemplo:

    ACBrNFSe1.CancelarNFSe(<codigocancelamento>, <numeronf>, <motivo); 

    O sistema cancela normalmente no ambiente da prefeitura e até chega a trazer um XML de retorno, mas pela chamada sempre da uma exceção com mensagem vazia.

    Já fiz atualização de fontes do ACBr (no momento desta postagem esta na revisão 13641).

    Sei que existem outras cidades como Campinas, Uberlândia, Belém, Teresina, etc que utilizam este mesmo provedor.Conto com ajuda, se alguém já passou por experiência parecida.

  7. Em 2017-6-7 at 18:55, Wellington Souza disse:

    Na procedure

    LerRetorno240 não contem essas linhas,
    
    rCedente := trim(Copy(ARetorno[0],47,30));
    rAgencia := Copy(ARetorno[0],27,4);
    rConta   := Copy(ARetorno[0],34,8);

    estas linhas estão no LerRetorno400;

     

    Espero ter ajudado;

     

    Tive que alterar para ler corretamente o retorno no CNAB 400 (procedure LerRetorno400()) para o seguinte:

    rCedente := trim(Copy(ARetorno[0],47,30));  // NOME DO CEDENTE
    rAgencia := Copy(ARetorno[0],27,4);
    //rConta   := Copy(ARetorno[0],34,8); // ANTERIOR
    rConta   := Copy(ARetorno[0],31,6);   // DEVE LER CÓDIGO DO CEDENTE E NÃO MAIS A CONTA

    E abaixo quando vai fazer o teste com dados válidos também alterei:

    ...
       with ACBrBanco.ACBrBoleto do
       begin
    
          //if (not LeCedenteRetorno) and
          //   ((rAgencia <> OnlyNumber(Cedente.Agencia)) or
          //    (rConta <> OnlyNumber(Cedente.Conta))) then
          //   raise Exception.Create(ACBrStr('Agencia\Conta do arquivo inválido'));
    	  // ALTERADO PARA O CODIGO ABAIXO
    
          if (not LeCedenteRetorno) and
             ((StrToInt(OnlyNumber(rAgencia)) <> StrToInt(OnlyNumber(Cedente.Agencia))) or
              (StrToInt(OnlyNumber(rConta)) <> StrToInt(OnlyNumber(Cedente.CodigoCedente)))) then
             raise Exception.Create(ACBrStr('Agencia\Cedente do arquivo inválido'));
    ...
    

    Transformei em integer pois a comparação da variável rAgencia estava com 5 casas no componente ACBrBoleto devido a propriedade fpTamanhoAgencia ser 5, no arquivo sempre vem com 4 casas apenas.

    Poderia ser colocado zeros a esquerda e comparar como string mesmo com o mesmo tamanho, mas como no manual o tipo (picture) determina somente números, fiz desta maneira, mas aguardo sugestão da JULIANA que mantém este módulo.

     

     

  8. 18 horas atrás, rubenstz disse:

    Também tive este problema, a unit ACBrBancoSantander na unit em anexo veja as linhas 738 e 753 que estão com estes comandos

    Copy(Cedente.Conta, Length(Cedente.Conta), 1)+                 // Última posição da conta cobrança

    ACBrBancoSantander.pas

    Melhor tratar tudo no post abaixo, que pelo que vi se trata do mesmo assunto:

     

  9. Em 2017-5-12 at 22:07, finoue disse:

    Eu também estou com o mesmo problema após a atualização dos fontes. Houve uma mudança no código que gera as posições 384 e 385 dos registros detalhe.

    A posição 384 deveria conter o último número da conta e a posição 385 deve conter o dígito. Agora a posição 384 está recebendo o dígito da conta apenas,

    e o registro fica com 399 caracteres.

     

    Fabio

     

    Também tive este problema, a unit ACBrBancoSantander na unit em anexo veja as linhas 738 e 753 que estão com estes comandos

    Copy(Cedente.Conta, Length(Cedente.Conta), 1)+                 // Última posição da conta cobrança

    ACBrBancoSantander.pas

  10. Em 2017-4-28 at 10:12, rubenstz disse:

    Bom dia,

    Estive tendo problemas com dois provedores que trabalho (ISSCuritiba e BHISS) durante a transmissão por queda de conexão ou timeout do provedor e precisei para corrigir em meu banco de dados números e outros dados do lote utilizar a função ConsultarLoteRps que traz as notas fiscais processadas em um lote de envio desde que eu informe um xml de RPS e número de LOTE e PROTOCOLO, mas estava me trazendo somente a última nota enviada, diferente até da nota gerada pelo RPS que selecionei, verifiquei e vi o seguinte na função ExtrairNotasRetorno da unit ACBrNFSeWebServices.pas :

    Na condição para avaliar se abaixo se o RPS está na lista:

    Falta um parenteses na condição OR que verifica  (FNotasFiscais.Items[l].NFSe.InfID.ID = FRetornoNFSe.ListaNFSe.CompNFSe.Items.NFSe.InfID.ID) e isto faz com que sempre exista apenas uma NOTAFISCAL na lista, corrigi para o código abaixo e funcionou para mim:

    Deixei meio separado apenas para exemplificar, se os moderadores puderem conferir e dar um ok.

    Este problema nunca irá ocorrer em versões anteriores do ACBr se o emitente enviar 1 nota por lote e consultar o retorno, mas se existirem mais de uma sempre aparecerá apenas a última enviada pois a váriavel NovoRetorno sempre será false e não incrementa a lista de notas fiscais.

    Att,

     

     

     

    ACBrNFSeWebServices.pas

  11. Bom dia,

    Estive tendo problemas com dois provedores que trabalho (ISSCuritiba e BHISS) durante a transmissão por queda de conexão ou timeout do provedor e precisei para corrigir em meu banco de dados números e outros dados do lote utilizar a função ConsultarLoteRps que traz as notas fiscais processadas em um lote de envio desde que eu informe um xml de RPS e número de LOTE e PROTOCOLO, mas estava me trazendo somente a última nota enviada, diferente até da nota gerada pelo RPS que selecionei, verifiquei e vi o seguinte na função ExtrairNotasRetorno da unit ACBrNFSeWebServices.pas :

    Na condição para avaliar se abaixo se o RPS está na lista:

    Citar

          if ((not (FProvedor in [proNFSeBrasil, proEL])) and
             ((StrToInt64Def(FNotasFiscais.Items[l].NFSe.IdentificacaoRps.Numero, 0) = StrToInt64Def(FRetornoNFSe.ListaNFSe.CompNFSe.Items.NFSe.IdentificacaoRps.Numero, 0)) and
               (FNotasFiscais.Items[l].NFSe.IdentificacaoRps.Serie = FRetornoNFSe.ListaNFSe.CompNFSe.Items.NFSe.IdentificacaoRps.Serie) and
               (FNotasFiscais.Items[l].NFSe.IdentificacaoRps.Tipo = FRetornoNFSe.ListaNFSe.CompNFSe.Items.NFSe.IdentificacaoRps.Tipo)) or
              (FNotasFiscais.Items[l].NFSe.InfID.ID = FRetornoNFSe.ListaNFSe.CompNFSe.Items.NFSe.InfID.ID)) or
             ((FProvedor in [proNFSeBrasil, proEL]) and
              (StrToInt64Def(FNotasFiscais.Items[l].NFSe.IdentificacaoRps.Numero, 0) = StrToInt64Def(FRetornoNFSe.ListaNFSe.CompNFSe.Items.NFSe.IdentificacaoRps.Numero, 0))) then

    Falta um parenteses na condição OR que verifica  (FNotasFiscais.Items[l].NFSe.InfID.ID = FRetornoNFSe.ListaNFSe.CompNFSe.Items.NFSe.InfID.ID) e isto faz com que sempre exista apenas uma NOTAFISCAL na lista, corrigi para o código abaixo e funcionou para mim:

    Citar

    if (
                // Se o provedor não for NFSeBrasil ou EL compara se já esta adicionado comparando pelo número, série e (tipo ou InfId.ID)
                        (not (FProvedor in [proNFSeBrasil, proEL])) and
                        (
                  (StrToInt64Def(FNotasFiscais.Items[l].NFSe.IdentificacaoRps.Numero, 0) = StrToInt64Def(FRetornoNFSe.ListaNFSe.CompNFSe.Items.NFSe.IdentificacaoRps.Numero, 0)) and
                  (FNotasFiscais.Items[l].NFSe.IdentificacaoRps.Serie = FRetornoNFSe.ListaNFSe.CompNFSe.Items.NFSe.IdentificacaoRps.Serie) and
                  ((FNotasFiscais.Items[l].NFSe.IdentificacaoRps.Tipo = FRetornoNFSe.ListaNFSe.CompNFSe.Items.NFSe.IdentificacaoRps.Tipo) or
                  (FNotasFiscais.Items[l].NFSe.InfID.ID = FRetornoNFSe.ListaNFSe.CompNFSe.Items.NFSe.InfID.ID))
                        )
                ) or (
                      // Se o provedor for NFSeBrasil ou EL compara apenas o numero do RPS
                      (FProvedor in [proNFSeBrasil, proEL]) and
                      (StrToInt64Def(FNotasFiscais.Items[l].NFSe.IdentificacaoRps.Numero, 0) = StrToInt64Def(FRetornoNFSe.ListaNFSe.CompNFSe.Items.NFSe.IdentificacaoRps.Numero, 0))
                 ) then

    Deixei meio separado apenas para exemplificar, se os moderadores puderem conferir e dar um ok.

    Este problema nunca irá ocorrer em versões anteriores do ACBr se o emitente enviar 1 nota por lote e consultar o retorno, mas se existirem mais de uma sempre aparecerá apenas a última enviada pois a váriavel NovoRetorno sempre será false e não incrementa a lista de notas fiscais.

    Att,

     

     

  12. 1 hora atrás, jnatas18 disse:

    [dcc32 Error] ACBrDFeXsMsXml.pas(154): E2197 Constant object cannot be passed as var parameter

    o parâmetro da função é variável e a propriedade é constante.

    
    xmldsig.createKeyFromCertContext( FpDFeSSL.CertContextWinApi, dsigKey);

    para resolver criei uma variável e passo ela como parâmetro da função

    
    LCertContextWinApi := FpDFeSSL.CertContextWinApi;
    xmldsig.createKeyFromCertContext( LCertContextWinApi, dsigKey);

    Tive o mesmo problema segui sua solução jnatas18, declarei a variável desta maneira:

    
    var
      LCertContextWinApi: Pointer;
    begin
    ...

    Vlw!

     

     

  13. Olá,

    Estou tendo uma dificuldade com o provedor BHISS utilizado em PORTO ALEGRE, se gero uma RPS e pego o arquivo gerado (NN-env-log.xml na pasta especifica) e envio o lote pelo site funciona normalmente, agora se estou usando pelo componente na aplicação o sistema negocia com o provedor pede senha do certificado como deveria ser mas me dá sempre o erro:

    Erro durante a transmissão

    0 - OCORREU UM ERRO INESPERADO

    Isto no ambiente de homologação (https://nfse-hom.procempa.com.br/bhiss-ws/nfse), estou utilizando um e-cpf para assinar, achei que isto pudesse estar causando algum problema, mas até fim do ano passado funcionava normalmente, se faço pelo site vai assinado normalmente e o pessoal responsável pela prefeitura não identificou o problema também. Tem alguém que esta homologando Belo Horizonte ou Porto Alegre que também esta passando por algo parecido???

    Vlw!

     

     

     

     

     

     

  14. Olá,

    Pela unit que peguei aqui no site tive de alterar a rotina para tratar quando CEP esta em branco durante a remessa:

    procedure TACBrCaixaEconomica.GerarRegistroTransacao400(...

    nesta linha
    PadLeft( OnlyNumber(Sacado.CEP), 8 )                  + // 327 até 334 - CEP do endereço do sacado


    para receber zeros quando CEP estiver vazio para não rejeitar
    PadLeft( OnlyNumber(Sacado.CEP), 8, '0' )             + // 327 até 334 - CEP do endereço do sacado

    Depois disso o sistema validador da caixa aprovou a remessa gerada.

     

     

  15. Bom dia a todos, alguém que utiliza o ACBR esta mandando somente notas de serviços para Brasília? Vi que precisa ser a conjugada, mas será necessário fazer todo o cadastro junto a receita estadual para envio? Na empresa onde trabalho é os clientes emitem somente para serviços e nem inscrição estadual eles possuem.

    Se alguém puder indicar o caminho que seguiu seria de grande ajuda.

    Obrigado!

  16. Boa tarde Italo e Sandro,

    Este problema realmente esta acontecendo para o provedor issCuritiba, mas esta devido a função RetirarPrefixos no arquivo: pnfsConversao.pas

    Na linha 17968 mais precisamente, o componente extrai de uma tag chamada tcCompNfse o inicio dela ficando CompNfse duas vezes no texto, o que causa o problema. Esta rotina é para atender o provedor Governa mas afeta o issCuritiba.

    Apenas comentei esta linha para testar e vi que salvou corretamente o XML, o  ideal aqui seria passar o provedor e comparar se deve ou não retirar o prefixo, mas não quis mudar os parâmetros da função, achei melhor deixar isto para os mantenedores.

    Abs,

     

     

     

     

  17. Boa tarde Italo e aos amigos,

    Estava com problemas para o provedor ISSCuritiba mas resolvi da seguinte maneira:

    Na unit pnfsLerListaNFSe.pas onde se lê o seguinte WHILE da função LerXML:

    while (Leitor.rExtrai(Nivel, 'CompNfse', '', i + 1) <> '') or
          (Leitor.rExtrai(Nivel, 'ComplNfse', '', i + 1) <> '') or
          (Leitor.rExtrai(Nivel, 'tcCompNfse', '', i + 1) <> '') or
          ((Provedor in [proActcon]) and (Leitor.rExtrai(Nivel + 1, 'Nfse', '', i + 1) <> '')) do

    precisa trocar por

    while (Leitor.rExtrai(Nivel, 'tcCompNfse', '', i + 1) <> '') or
          (Leitor.rExtrai(Nivel, 'CompNfse', '', i + 1) <> '') or
          (Leitor.rExtrai(Nivel, 'ComplNfse', '', i + 1) <> '') or
          ((Provedor in [proActcon]) and (Leitor.rExtrai(Nivel + 1, 'Nfse', '', i + 1) <> '')) do

     

    Basta colocar a tag por primeiro quer irá salvar normalmente.

    Att,

  18. Bom dia Italo,

    Gera agora um registro para cada NFSe, porém a primeira nota guarda o XML de todas as notas do lote todo, as outras são salvas corretamente, utilizei a procedure do componente acbr: ConsultarNFSeporRps e ele corrige o arquivo salvo de nota, porém não é o ideal.

    Fontes do ACBR com a revisão 10928 de 21/01

    Abs,

     

     

     

  19. 7 horas atrás, Italo Jurisato Junior disse:

    Bom dia Rubens,

    Detectei esse problema nos meus testes com o provedor Ginfes.

    Correções já foram feitas, exatamente na procedure ExtrairNotasRetorno.

    Favor atualizar os seus fontes e realizar novos testes.

    Olá Italo,

    Antes de mais nada, obrigado pela atenção.

    O problema ainda continua para o ISSCuritiba, na verdade nem é no ExtrairNotasRetorno e sim em FRetornoNFSe.LerXml que esta dentro desta rotina, o arquivo de retorno esta retornando uma chave = tcCompNfse que deveria ser verificada (acredito) no While da rotina com este código abaixo:

    ...

          while (Leitor.rExtrai(Nivel, 'CompNfse', '', i + 1) <> '') or
                (Leitor.rExtrai(Nivel, 'ComplNfse', '', i + 1) <> '') or

                ((Provedor in [proActcon]) and (Leitor.rExtrai(Nivel + 1, 'Nfse', '', i + 1) <> '')) do

    ...

    Não tive tempo de ver detalhadamente, coloquei a chave (tcCompNfse) neste while e salvou o registro de NFSe porém na primeira ele ainda agrupou as 2 que eu havia inserido no lote (se mandar 3, 4 ou mais notas num lote ele sempre agrupa no XML da primeira quando salva).

    Estarei vendo com mais calma, anexei também o retorno da rotina LerXml se outros tiverem um problema parecido para trocarmos informações.

    Att,

    16927-nfse.xml

  20. Estou com este problema para salvar várias notas do provedor de Curitiba (ISSCuritiba).

    Exemplo: tenho um lote com várias RPS ele faz o envio normalmente, mas o retorno salva no diretório de notas apenas a primeira NFSe enviada com os dados de todas as outras, se faço a consulta de situação de rps ele salva novamente a nota corretamente.

    unit ACBrNFSeWebServices.pas -> ExtrairNotasRetorno

    Alguém também esta passando por este problema?

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