Ir para conteúdo
  • Cadastre-se

Sérgio Caldeira Silva

Membros
  • Total de ítens

    59
  • Registro em

  • Última visita

Posts postados por Sérgio Caldeira Silva

  1. 26 minutos atrás, Sérgio Caldeira Silva disse:

    O if executa o seguinte método: function CryptExportKey; external Advapi32 name 'CryptExportKey';

    Dá-se a entender que a AdvApi32.dll está corrompida, porém, o erro ocorreu em dois computadores de desenvolvimento e no computador de produção do cliente. Não acredito que seja dll corrompida.

     

    Aos mantenedores do ACBr, segue sugestão de alteração para que a msg apareça para os operadores / desenvolvedores:

     

                  except
                    { Não foi capaz de Exportar/Copiar a Chave para o nosso Provedor
                      de Criptografia, então vamos usar o Provedor de Criptografia do
                      Certificado }
                    on E: Exception do
                       begin
                         CryptReleaseContext(mCryptProvider, 0);
                         mCryptProvider := mCryptProviderCert;
                         pfCallerFreeProv := False;
                         raise;
                       end;

                  end;
     

  2. 16 minutos atrás, Sérgio Caldeira Silva disse:

    Srs., avancei um pouco e cheguei na unit ACBrDFeWinCryp, ao executar o if (em negrito), retorna false e cai no else onde gera a exceção (em negrito), daí pula para o except que não inicia mensagem alguma.

                    if CryptExportKey( hRSAKey, hSessKey, PRIVATEKEYBLOB, 0, Nil, mBytesLen ) then  // Calcula mBytesLen
                    begin
                      Memory := AllocMem(mBytesLen);  // Aloca a memória para receber o Blob
                      try
                        if CryptExportKey( hRSAKey, hSessKey, PRIVATEKEYBLOB, 0, Memory, mBytesLen ) then
                        begin
                          if not CryptImportKey(mCryptProvider, Memory, mBytesLen, hSessKey, 0, hExpKey ) then
                            raise Exception.Create('CryptImportKey');
                        end
                        else
                          raise Exception.Create('CryptExportKey');
                      finally
                        Freemem(Memory);
                      end;
                    end
                    else
                      raise Exception.Create('CryptExportKey - len');
                  except
                    { Não foi capaz de Exportar/Copiar a Chave para o nosso Provedor
                      de Criptografia, então vamos usar o Provedor de Criptografia do
                      Certificado }

                    CryptReleaseContext(mCryptProvider, 0);
                    mCryptProvider := mCryptProviderCert;
                    pfCallerFreeProv := False;

                  end;
     

     

    O if executa o seguinte método: function CryptExportKey; external Advapi32 name 'CryptExportKey';

    Dá-se a entender que a AdvApi32.dll está corrompida, porém, o erro ocorreu em dois computadores de desenvolvimento e no computador de produção do cliente. Não acredito que seja dll corrompida.

     

  3. Srs., avancei um pouco e cheguei na unit ACBrDFeWinCryp, ao executar o if (em negrito), retorna false e cai no else onde gera a exceção (em negrito), daí pula para o except que não inicia mensagem alguma.

                    if CryptExportKey( hRSAKey, hSessKey, PRIVATEKEYBLOB, 0, Nil, mBytesLen ) then  // Calcula mBytesLen
                    begin
                      Memory := AllocMem(mBytesLen);  // Aloca a memória para receber o Blob
                      try
                        if CryptExportKey( hRSAKey, hSessKey, PRIVATEKEYBLOB, 0, Memory, mBytesLen ) then
                        begin
                          if not CryptImportKey(mCryptProvider, Memory, mBytesLen, hSessKey, 0, hExpKey ) then
                            raise Exception.Create('CryptImportKey');
                        end
                        else
                          raise Exception.Create('CryptExportKey');
                      finally
                        Freemem(Memory);
                      end;
                    end
                    else
                      raise Exception.Create('CryptExportKey - len');
                  except
                    { Não foi capaz de Exportar/Copiar a Chave para o nosso Provedor
                      de Criptografia, então vamos usar o Provedor de Criptografia do
                      Certificado }

                    CryptReleaseContext(mCryptProvider, 0);
                    mCryptProvider := mCryptProviderCert;
                    pfCallerFreeProv := False;

                  end;
     

     

  4. Boa tarde Srs.!

    Esta semana as NFS-e enviadas à Prefeitura de Vila Velha - ES estão retornando exceção, mas sem mensagem de erro.

    Ao debugar, identifiquei que o erro é gerado no código abaixo da unit ACBrNFSeWebServices, mas não consegui identificar o motivo:

      Result := FEnviarLoteRPS.Executar;

      if not (Result) then
        FEnviarLoteRPS.GerarException( FEnviarLoteRPS.Msg );

    Poderiam me dar um "norte" para facilitar o processo de debug?

  5. Em 23/04/2021 at 09:38, Italo Giurizzato Junior disse:

    Bom dia Sérgio,

    Não devemos alterar a unit pcnLeitor pois esta é utilizada por todos os componentes que emitem Documentos Fiscais Eletrônicos.

    Peço mais uma vez, anexe o XML de retorno que contem a data fora do padrão para que a equipe ACBr possa analisar e com isso decidir se há necessidade de alterar algo no pcnLeitor ou não.

    Evite ao máximo misturar assuntos em uma mesma postagem.

    Respondendo a sua ultima postagem que não tem nada haver com o assunto que esta sendo tratado, a resposta é: toda vez que você ADD os dados de um RPS na lista NotaFiscais o valor de Count é incrementado automaticamente.

    Se você envia um Rps por vez, e o Count esta sendo incrementado, isso significa que você não esta limpando a lista antes de ADD o novo Rps.

    Boa tarde Ítalo!

    As alterações já foram anexadas nos posts anteriores.

  6. 2 horas atrás, Sérgio Caldeira Silva disse:

    Bom dia Ítalo!

    Fiz novos testes com o tratamento de data e deu tudo certo, contudo, não consegui identificar a origem, o WS está retornando a seguinte mensagem:

    "ERRO: Conjunto de RPS transmitidos  (máximo de 1 RPS) excedido. Quantidade atual: 18)

    Você tem ideia do que pode ser?

    Senhores,

    Alguém sabe me informar como a propriedade NotasFiscais.Count é alimentada?

    Pergunto porque envio uma NFS-e por vez, mas a cada envio, esta propriedade é incrementada, por isto o erro da mensagem acima.

  7. Em 15/04/2021 at 14:52, Sérgio Caldeira Silva disse:

    Ítalo, referente ao item 3 do post acima, consegui resolver. O erro vem da data no formato UTC, resolvi da forma descrita abaixo, porém, percebi que se alterar o tipo da tag para tcDatHorCFe possivelmente resolverá... é uma alternativa que ao meu ver, causará impacto em outros provedores, por isto fiz a alteração abaixo. Anexei a unit também.

    function TLeitor.rCampo(const Tipo: TpcnTipoCampo; TAG: string; const TAGparada: string = ''): variant;var
      ConteudoTag: string;
      inicio, fim, inicioTAGparada: integer;
      Ano, Mes, Dia: word;
    begin
       ...

        tcDatVcto:
          begin
            if length(ConteudoTag)>0 then
            begin
              (* 15/04/2021. Sérgio Caldeira: a variágel "ConteudoTag" vem no formato
                           UTC, portanto, a formatação abaixo incorre em erro.
                           Substitui pelo tratamento abaixo.

              result := EncodeDate(StrToInt(copy(ConteudoTag, 07, 4)), StrToInt(copy(ConteudoTag, 04, 2)), StrToInt(copy(ConteudoTag, 01, 2)));

              *)
              {Verifica o formato da data para decodificá-la com o método correto.}
              if Pos('T', ConteudoTag) > 0 then
              begin
                 DecodeDate(ISO8601ToDate(ConteudoTag, false), Ano, Mes, Dia);
              end
              else if Pos('-', ConteudoTag) > 2 then
                   begin
                     Ano := StrToInt(copy(ConteudoTag, 1, 4));
                     Mes := StrToInt(copy(ConteudoTag, 6, 2));
                     Dia := StrToInt(copy(ConteudoTag, 9, 2));
                   end
              else if Pos('/', ConteudoTag) > 2 then
                   begin
                     Ano := StrToInt(copy(ConteudoTag, 1, 4));
                     Mes := StrToInt(copy(ConteudoTag, 6, 2));
                     Dia := StrToInt(copy(ConteudoTag, 9, 2));
                   end
              else begin
                     Ano := StrToInt(copy(ConteudoTag, 7, 4));
                     Mes := StrToInt(copy(ConteudoTag, 4, 2));
                     Dia := StrToInt(copy(ConteudoTag, 1, 2));
                   end;
              result := EncodeDate(Ano, Mes, Dia);
            end
            else
              Result := 0;
          end;
    ....

     

     

    Bom dia Ítalo!

    Fiz novos testes com o tratamento de data e deu tudo certo, contudo, não consegui identificar a origem, o WS está retornando a seguinte mensagem:

    "ERRO: Conjunto de RPS transmitidos  (máximo de 1 RPS) excedido. Quantidade atual: 18)

    Você tem ideia do que pode ser?

  8. Em 31/03/2021 at 13:36, Sérgio Caldeira Silva disse:

    Boa tarde Ítalo!

    As alterações de leiaute para prefeitura de Vila Velha - ES, passaram, mas ainda encontrei a necessidade de ajustar o código para esta prefeitura. Segue abaixo as observações, sendo que os itens 1 e 2 foram solucionados e o item 3 está pendente - ainda não consegui resolver.

    1. O campo "InscricaoMunicipal" deverá ser preenchido com o CCM que a prefeitura fornece... no meu caso, substitui a inscrição por este código, já que não encontrei um campo que correspondesse ao CCM;

    2. Na unit "pnfsEnvLoteRpsResposta", foi preciso alterar o método "function TretEnvLote.LerXml_ABRASF: Boolean;", visto que o campo DataRecebimento vem no formato UTF:

        // Alguns provedores retornam apenas a data, sem o horário
        if Length(Leitor.rCampo(tcStr, 'DataRecebimento')) > 10 then
        begin
          if FProvedor = proSmarAPDv23 then
          begin
            xData := Leitor.rCampo(tcstr, 'DataRecebimento');

            (* 31/03/2021. Sérgio Caldeira: o campo "DataRebimento" vem no formato
                           UTF, portanto, a formatação abaixo incorre em erro.
                           Substitui pela função ISO8601ToDate() do próprio Delphi.
            infRec.FDataRecebimento := StrToDate(Copy(xData, 1, 10)) +
                                       StrToTime(Copy(xData, 12, 8));
            *)
            infRec.FDataRecebimento := ISO8601ToDate(xData);
          end
          else
            infRec.FDataRecebimento := Leitor.rCampo(tcDatHor, 'DataRecebimento');
        end
        else
          infRec.FDataRecebimento := Leitor.rCampo(tcDat, 'DataRecebimento');
     

    3. Na unit "pnfsNFSeR", no método "function TNFSeR.LerNFSe: Boolean;", o atributo LayoutXML, está sendo iniciado com o valor loABRASFv2, e no código abaixo está dando erro... imagino que seja pelo valor, na medida em que o leiaute foi alterado para a versão 2.03.

    Empaquei aqui, ainda não identifiquei onde alterar. Se algum moderador quiser ajudar, estou com o ambiente todo preparado para auditar o código.

     

     

     

    Ítalo, referente ao item 3 do post acima, consegui resolver. O erro vem da data no formato UTC, resolvi da forma descrita abaixo, porém, percebi que se alterar o tipo da tag para tcDatHorCFe possivelmente resolverá... é uma alternativa que ao meu ver, causará impacto em outros provedores, por isto fiz a alteração abaixo. Anexei a unit também.

    function TLeitor.rCampo(const Tipo: TpcnTipoCampo; TAG: string; const TAGparada: string = ''): variant;var
      ConteudoTag: string;
      inicio, fim, inicioTAGparada: integer;
      Ano, Mes, Dia: word;
    begin
       ...

        tcDatVcto:
          begin
            if length(ConteudoTag)>0 then
            begin
              (* 15/04/2021. Sérgio Caldeira: a variágel "ConteudoTag" vem no formato
                           UTC, portanto, a formatação abaixo incorre em erro.
                           Substitui pelo tratamento abaixo.

              result := EncodeDate(StrToInt(copy(ConteudoTag, 07, 4)), StrToInt(copy(ConteudoTag, 04, 2)), StrToInt(copy(ConteudoTag, 01, 2)));

              *)
              {Verifica o formato da data para decodificá-la com o método correto.}
              if Pos('T', ConteudoTag) > 0 then
              begin
                 DecodeDate(ISO8601ToDate(ConteudoTag, false), Ano, Mes, Dia);
              end
              else if Pos('-', ConteudoTag) > 2 then
                   begin
                     Ano := StrToInt(copy(ConteudoTag, 1, 4));
                     Mes := StrToInt(copy(ConteudoTag, 6, 2));
                     Dia := StrToInt(copy(ConteudoTag, 9, 2));
                   end
              else if Pos('/', ConteudoTag) > 2 then
                   begin
                     Ano := StrToInt(copy(ConteudoTag, 1, 4));
                     Mes := StrToInt(copy(ConteudoTag, 6, 2));
                     Dia := StrToInt(copy(ConteudoTag, 9, 2));
                   end
              else begin
                     Ano := StrToInt(copy(ConteudoTag, 7, 4));
                     Mes := StrToInt(copy(ConteudoTag, 4, 2));
                     Dia := StrToInt(copy(ConteudoTag, 1, 2));
                   end;
              result := EncodeDate(Ano, Mes, Dia);
            end
            else
              Result := 0;
          end;
    ....

     

    pcnLeitor.pas

  9. Em 12/04/2021 at 15:37, Sérgio Caldeira Silva disse:

    Boa tarde Ítalo!

    O erro está justamente ao ler o retorno, pelo menos foi isto que entendi.

    Se tiver algum método que grave o retorno, me informe que eu faço o teste novamente. Se não tiver, podemos combinar um horário para testar, porque meu ambiente está todo preparado para isto, você conectando em meu computador realiza o procedimento rapidinho.

    Quanto ao Delphi 7, não tenho como testá-lo... infelizmente.

    Ítalo, analisei a unit System.DateUtils, onde se encontram os métodos, nela não está documentado compatibilidade de versão ou data em que foi criada. Pelo que li, acredito não ser compatível. Contudo, esta unit poderia ser incorporada ao projeto ACBr com outro nome mantendo a compatibilidade com versões antigas e o lazarus, que acha?

    Com as integrações com sistemas web e sistemas globais, entendo que esbarraremos com este formato inúmeras vezes.

     

  10. Bom dia Ítalo!

    A empresa reclamou que estamos fazendo os testes em ambiente de produção, contudo, confirmei na parametrização e em debug, que o parâmetro está Producao = snNao;

    Sabe me dizer em qual unit debugo isto? Assim eu confirmo qual WS está sendo chamado e informo o Gerente de TI da empresa cliente que está querendo saber.

     

    Grato pela atenção de sempre.

  11. 6 horas atrás, Italo Giurizzato Junior disse:

    Bom dia Sérgio,

    Você sabe me dizer esse no Delphi 7 temos a função: ISO8601ToDate ?

    Precisamos manter compatibilidade desde o Delphi 7.

    Por favor anexe o XML de retorno para que eu possa verificar como esta sendo retornado a data de recebimento. 

    Boa tarde Ítalo!

    O erro está justamente ao ler o retorno, pelo menos foi isto que entendi.

    Se tiver algum método que grave o retorno, me informe que eu faço o teste novamente. Se não tiver, podemos combinar um horário para testar, porque meu ambiente está todo preparado para isto, você conectando em meu computador realiza o procedimento rapidinho.

    Quanto ao Delphi 7, não tenho como testá-lo... infelizmente.

  12. 17 horas atrás, rodrigo4t disse:

    Sérgio, bati no mesmo problema que você.

    Engraçado que no mês de março meu cliente conseguiu emitir todas as notas da maneira como estava o componente. Esse mês começou a dar erro e agora ele tem 300 notas esperando pra serem emitidas e esse maledeto provedor SmaraPD sem rodar.

    Na unit pnfsEnvLoteRpsResposta eu apliquei a mesma correção que você, convertendo do formato ISO 8601:

    infRec.FDataRecebimento := ISO8601ToDate(xData)

    Com isso consegui passar desse ponto, mas acredito ter chegado no mesmo ponto em que você parou:

    Nesse trecho da pnfsNFSeR, no método TNFSeR.LerNFSe_ABRASF_V2: (linha 2286)

          if FProvedor in [proSmarAPDv23, proAEG] then
            NFSe.DataEmissaoRps := Leitor.rCampo(tcDatVcto, 'DataEmissao')  <--- aqui
          else
            NFSe.DataEmissaoRps := Leitor.rCampo(tcDat, 'DataEmissao');

    O erro é que o conteúdo de 'DataEmissao' está voltando -1

    E aqui empaquei. Você conseguiu avançar desse ponto ? Alguém tem alguma ideia ?

     

    Bom dia Rodrigo!

    Não avancei neste ponto, fiquei na dúvida se criava um método novo para o leiaute 2.3 ou se era possível tratar no leiaute 2 da Abrasf.

    Apesar de não conhecer profundamente os fontes, vou tentar hoje à tarde. O ruim é que as NFS-e dos clientes vão acumulando... a pressão é grande, a gente não tem paz nem para raciocinar (rsrsrs).

    Assim que conseguir alguma coisa, posto aqui.

     

  13. 3 horas atrás, Sérgio Caldeira Silva disse:

    Boa tarde Ítalo!

    As alterações de leiaute para prefeitura de Vila Velha - ES, passaram, mas ainda encontrei a necessidade de ajustar o código para esta prefeitura. Segue abaixo as observações, sendo que os itens 1 e 2 foram solucionados e o item 3 está pendente - ainda não consegui resolver.

    1. O campo "InscricaoMunicipal" deverá ser preenchido com o CCM que a prefeitura fornece... no meu caso, substitui a inscrição por este código, já que não encontrei um campo que correspondesse ao CCM;

    2. Na unit "pnfsEnvLoteRpsResposta", foi preciso alterar o método "function TretEnvLote.LerXml_ABRASF: Boolean;", visto que o campo DataRecebimento vem no formato UTF:

        // Alguns provedores retornam apenas a data, sem o horário
        if Length(Leitor.rCampo(tcStr, 'DataRecebimento')) > 10 then
        begin
          if FProvedor = proSmarAPDv23 then
          begin
            xData := Leitor.rCampo(tcstr, 'DataRecebimento');

            (* 31/03/2021. Sérgio Caldeira: o campo "DataRebimento" vem no formato
                           UTF, portanto, a formatação abaixo incorre em erro.
                           Substitui pela função ISO8601ToDate() do próprio Delphi.
            infRec.FDataRecebimento := StrToDate(Copy(xData, 1, 10)) +
                                       StrToTime(Copy(xData, 12, 8));
            *)
            infRec.FDataRecebimento := ISO8601ToDate(xData);
          end
          else
            infRec.FDataRecebimento := Leitor.rCampo(tcDatHor, 'DataRecebimento');
        end
        else
          infRec.FDataRecebimento := Leitor.rCampo(tcDat, 'DataRecebimento');
     

    3. Na unit "pnfsNFSeR", no método "function TNFSeR.LerNFSe: Boolean;", o atributo LayoutXML, está sendo iniciado com o valor loABRASFv2, e no código abaixo está dando erro... imagino que seja pelo valor, na medida em que o leiaute foi alterado para a versão 2.03.

    Empaquei aqui, ainda não identifiquei onde alterar. Se algum moderador quiser ajudar, estou com o ambiente todo preparado para auditar o código.

     

     

     

    Corrigindo... data no formato UTC: UTC time zone ou ISO 8601. 

  14. 2 horas atrás, Juliana Tamizou disse:

    Boa tarde.

    Por favor anexe as units alteradas.

    Att.

    Boa tarde Juliana!

    Segue a unit, porém, é preciso verificar se esta função do Delphi está disponível em todas as versões do Delphi e do Lazarus... por isto não subi os fontes. Não tenho o Lazarus para testar e nem versões anteriores a 10.3 do Delphi.

    A alteração está com a data de 31/03/2021 e com meu nome para facilitar a sua localização.

    pnfsEnvLoteRpsResposta.pas

  15. 13 minutos atrás, Sérgio Caldeira Silva disse:

    Boa tarde Ítalo!

    As alterações de leiaute para prefeitura de Vila Velha - ES, passaram, mas ainda encontrei a necessidade de ajustar o código para esta prefeitura. Segue abaixo as observações, sendo que os itens 1 e 2 foram solucionados e o item 3 está pendente - ainda não consegui resolver.

    1. O campo "InscricaoMunicipal" deverá ser preenchido com o CCM que a prefeitura fornece... no meu caso, substitui a inscrição por este código, já que não encontrei um campo que correspondesse ao CCM;

    2. Na unit "pnfsEnvLoteRpsResposta", foi preciso alterar o método "function TretEnvLote.LerXml_ABRASF: Boolean;", visto que o campo DataRecebimento vem no formato UTF:

        // Alguns provedores retornam apenas a data, sem o horário
        if Length(Leitor.rCampo(tcStr, 'DataRecebimento')) > 10 then
        begin
          if FProvedor = proSmarAPDv23 then
          begin
            xData := Leitor.rCampo(tcstr, 'DataRecebimento');

            (* 31/03/2021. Sérgio Caldeira: o campo "DataRebimento" vem no formato
                           UTF, portanto, a formatação abaixo incorre em erro.
                           Substitui pela função ISO8601ToDate() do próprio Delphi.
            infRec.FDataRecebimento := StrToDate(Copy(xData, 1, 10)) +
                                       StrToTime(Copy(xData, 12, 8));
            *)
            infRec.FDataRecebimento := ISO8601ToDate(xData);
          end
          else
            infRec.FDataRecebimento := Leitor.rCampo(tcDatHor, 'DataRecebimento');
        end
        else
          infRec.FDataRecebimento := Leitor.rCampo(tcDat, 'DataRecebimento');
     

    3. Na unit "pnfsNFSeR", no método "function TNFSeR.LerNFSe: Boolean;", o atributo LayoutXML, está sendo iniciado com o valor loABRASFv2, e no código abaixo está dando erro... imagino que seja pelo valor, na medida em que o leiaute foi alterado para a versão 2.03.

    Empaquei aqui, ainda não identifiquei onde alterar. Se algum moderador quiser ajudar, estou com o ambiente todo preparado para auditar o código.

     

     

     

    Opa! Me esqueci de incluir o código:

      case LayoutXML of
        loABRASFv1:    Result := LerNFSe_ABRASF_V1;
        loABRASFv2:    Result := LerNFSe_ABRASF_V2;
        loEL:          Result := LerNFSe_EL;
        loEGoverneISS: Result := False; // Falta implementar
        loEquiplano:   Result := LerNFSe_Equiplano;
        loGoverna:     Result := LerNFSe_Governa;
        loInfisc:      Result := LerNFSe_Infisc;
        loISSDSF:      Result := LerNFSe_ISSDSF;
        loCONAM:       Result := LerNFSe_CONAM;
        loAgili:       Result := LerNFSe_Agili;
        loSP:          Result := LerNFSe_SP;
        loSMARAPD:     Result := LerNFSe_Smarapd;
        loIPM:         Result := LerNFSe_IPM;
        loSigIss:      Result := LerNFSe_SigIss;
        loElotech:     Result := LerNFSe_Elotech;
        loSiat:        Result := LerNFSe_Siat;
        loGiap:        Result := LerNFSe_Giap;
      else
        Result := False;
      end;
     

  16. Boa tarde Ítalo!

    As alterações de leiaute para prefeitura de Vila Velha - ES, passaram, mas ainda encontrei a necessidade de ajustar o código para esta prefeitura. Segue abaixo as observações, sendo que os itens 1 e 2 foram solucionados e o item 3 está pendente - ainda não consegui resolver.

    1. O campo "InscricaoMunicipal" deverá ser preenchido com o CCM que a prefeitura fornece... no meu caso, substitui a inscrição por este código, já que não encontrei um campo que correspondesse ao CCM;

    2. Na unit "pnfsEnvLoteRpsResposta", foi preciso alterar o método "function TretEnvLote.LerXml_ABRASF: Boolean;", visto que o campo DataRecebimento vem no formato UTF:

        // Alguns provedores retornam apenas a data, sem o horário
        if Length(Leitor.rCampo(tcStr, 'DataRecebimento')) > 10 then
        begin
          if FProvedor = proSmarAPDv23 then
          begin
            xData := Leitor.rCampo(tcstr, 'DataRecebimento');

            (* 31/03/2021. Sérgio Caldeira: o campo "DataRebimento" vem no formato
                           UTF, portanto, a formatação abaixo incorre em erro.
                           Substitui pela função ISO8601ToDate() do próprio Delphi.
            infRec.FDataRecebimento := StrToDate(Copy(xData, 1, 10)) +
                                       StrToTime(Copy(xData, 12, 8));
            *)
            infRec.FDataRecebimento := ISO8601ToDate(xData);
          end
          else
            infRec.FDataRecebimento := Leitor.rCampo(tcDatHor, 'DataRecebimento');
        end
        else
          infRec.FDataRecebimento := Leitor.rCampo(tcDat, 'DataRecebimento');
     

    3. Na unit "pnfsNFSeR", no método "function TNFSeR.LerNFSe: Boolean;", o atributo LayoutXML, está sendo iniciado com o valor loABRASFv2, e no código abaixo está dando erro... imagino que seja pelo valor, na medida em que o leiaute foi alterado para a versão 2.03.

    Empaquei aqui, ainda não identifiquei onde alterar. Se algum moderador quiser ajudar, estou com o ambiente todo preparado para auditar o código.

     

     

     

  17. 1 hora atrás, rodrigo4t disse:

    Sérgio, você teve problemas com a senha ?

    Depois de muita luta eu consegui fazer o envio, mas recebo mensagem de "senha inválida" mesmo utilizando a senha que meu cliente usa pra fazer a emissão pelo portal. Estou aguardando o Italo liberar os fontes atualizados, mas desconfio que terei problemas com a senha ainda.

     

     

     

    Bom dia Rodrigo!

    Na validação, não houve nenhuma msg de erro referente a senha. 

    Mas não consegui registrar a NFS-e por questões de leiaute. 

     

    Atenciosamente,

     

    • Curtir 1
  18. 2 horas atrás, Italo Giurizzato Junior disse:

    Bom dia Sérgio,

    A cidade de Vila Velha/ES trocou de provedor, ainda hoje vou estar disponibilizando as alterações.

    Mas necessito dos schemas (arquivos XSD), pois a cidade agora esta usando o provedor SmarAPD que implementou um webservice que se utiliza da versão 2.03 do layout da ABRASF.

    Logo eu necessito dos schemas da versão 2.03 que esse provedor esta utilizando.

    Bom dia Ítalo!

     

    Grato pelo retorno.

    Pesquisei no site da prefeitura e eles não atualizaram ainda, lá continua informando a versão 2.01: https://nfse.vitoria.es.gov.br/doc/documentacao.cfm

    Pesquisei no site da Abrasf e encontrei a documentação atualizada: http://www.abrasf.org.br/pagina_publica.php

    Há algum local em que eu possa pesquisar sobre a liberação desta atualização? Pergunto só para evitar downloads desnecessários.

     

    Grato pela atenção.

  19. Boa tarde Ítalo!

    O suporte da NFS-e de Vitória, finalmente respondeu. Seria possível me orientar como proceder?

    
    
    Uma ANOTAÇÃO foi adicionada a esta tarefa.
    ---------------------------------------------------------------------- 
     (0269941) (Gerente) - 24/02/2021 14:46
     https://centraldeajuda.vitoria.es.gov.br/
    ---------------------------------------------------------------------- 
    A estrutura está faltando informar o método utilizado. Ao que parece, estão
    tentando enviar utilizando o GerarNfseEnvio.
    
    Ao invés do xml iniciar com:
    <?xml version="1.0" encoding="UTF-8"?>
    <Rps xmlns="http://www.abrasf.org.br/nfse.xsd">
    	<InfDeclaracaoPrestacaoServico Id="2734E">
    
    Deveria iniciar com:
    <?xml version="1.0" encoding="utf-8"?>
    <GerarNfseEnvio xmlns="http://www.abrasf.org.br/nfse.xsd">
    <Rps>
    	<InfDeclaracaoPrestacaoServico Id="2734E">
    ----------------------------------------------------------------------
    

     

  20. Em 19/02/2021 at 08:52, Italo Giurizzato Junior disse:

    Bom dia Sérgio,

    Qual método você executou?

     

    Em 18/02/2021 at 11:59, Sérgio Caldeira Silva disse:

    Bom dia Italo!

    Após preencher todos os campos, eu executo o seguinte método:

                              {05/11/2020. Sérgio: Há vários métodos de envio de acordo com cada tipo de provedor.}
                              Enviar(StrToInt(NotasFiscais.NumeroLote));

    Porém, ele não gerou a tag LoteRps, seria porque só estou testando com um RPS ou tenho que executar mais algum procedimento? 

    Pelo exemplo da unit Frm_ACBrNFSe, parece que está tudo correto.

     

     

    Boa tarde Ítalo!

    Usei este método acima (Enviar), porém, já testei com todos os outros.

    Qual o critério o ACBr usa para definir se o xml será em lote ou uma única NFS-e? Talvez seja isto que está faltando.

     

  21. Bom dia Italo!

    Após preencher todos os campos, eu executo o seguinte método:

                              {05/11/2020. Sérgio: Há vários métodos de envio de acordo com cada tipo de provedor.}
                              Enviar(StrToInt(NotasFiscais.NumeroLote));

    Porém, ele não gerou a tag LoteRps, seria porque só estou testando com um RPS ou tenho que executar mais algum procedimento? 

    Pelo exemplo da unit Frm_ACBrNFSe, parece que está tudo correto.

     

     

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