Ir para conteúdo
  • Cadastre-se

Sérgio Caldeira Silva

Membros
  • Total de ítens

    59
  • Registro em

  • Última visita

Tudo que Sérgio Caldeira Silva postou

  1. Boa noite Ítalo! Estou fazendo a conversão, mas não encontrei a propriedade abaixo, poderia me ajudar? // Para o provedor ISSDigital deve-se informar também: Prestador.Senha := NfePrmPreSen;
  2. 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;
  3. 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.
  4. 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;
  5. 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?
  6. Boa tarde Ítalo! As alterações já foram anexadas nos posts anteriores.
  7. 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.
  8. 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?
  9. Í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
  10. Í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.
  11. Bom dia Ítalo! Segue a pasta onde os xml foram gerados. NFSe Vila Velha.rar
  12. 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.
  13. 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.
  14. Boa tarde Ítalo! Segue conforme solicitado. Se der problema novamente, a alteração que fiz, está em um post anterior. pnfsEnvLoteRpsResposta.pas
  15. 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.
  16. 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
  17. 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;
  18. 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.
  19. 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,
  20. 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.
  21. 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"> ----------------------------------------------------------------------
  22. 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.
  23. Italo, grato pelo retorno. Só gerou o arquivo 3220082950229800011056000000000002734-rps.xml na pasta C:\temp\PastaDeCompilacao\NFSe\CaixaDeEntrada\202008\NFSe\Recibos.
  24. 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.

The popup will be closed in 10 segundos...