-
Total de ítens
62 -
Registro em
-
Última visita
Tipo de Conteúdo
Blocks
Notes ACBrLibNFe
Fóruns
Downloads
Calendário
Tudo que Sérgio Caldeira Silva postou
-
NFS-e de Vila Velha, Envio falha sem msg de erro
Sérgio Caldeira Silva replied to Sérgio Caldeira Silva's tópico in ACBrNFSe
Bom dia Ítalo! Meu ACBr estava atualizado, mas por via das dúvidas exclui a pasta e instalei tudo do zero; mas era um campo novo que passou desapercebido. Usei o exemplo como referência. Resolveu. Agora apareceu uma outra mensagem após a conversão, saberia orientar? nfse.xsd#/schema The "namespace.provided differs from the schema's 'http://www.abrasf.org.br/nfse.xsd' targetNamespace) -
NFS-e de Vila Velha, Envio falha sem msg de erro
Sérgio Caldeira Silva replied to Sérgio Caldeira Silva's tópico in ACBrNFSe
Bom dia Ítalo! No início deste ano, você incluiu um novo servidor para atender a Vila Velha - ES, o proSmarAPDv23 . No novo componente da NFS este provedor não está mapeado, então, comentei para identificar o type. Contudo, ao executar o sistema, retorna a seguinte mensagem: Código do Município [3205200] não encontrado. Sabe me informar em qual unit eu posso incluir este tratamento? -
NFS-e de Vila Velha, Envio falha sem msg de erro
Sérgio Caldeira Silva replied to Sérgio Caldeira Silva's tópico in ACBrNFSe
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; Bom dia Ítalo! Já li o manual, mas como se referia ao campo como WebSenha e não Prestador.Senha, achei que fossem campos diferentes. -
NFS-e de Vila Velha, Envio falha sem msg de erro
Sérgio Caldeira Silva replied to Sérgio Caldeira Silva's tópico in ACBrNFSe
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; -
NFS-e de Vila Velha, Envio falha sem msg de erro
Sérgio Caldeira Silva replied to Sérgio Caldeira Silva's tópico in ACBrNFSe
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; -
NFS-e de Vila Velha, Envio falha sem msg de erro
Sérgio Caldeira Silva replied to Sérgio Caldeira Silva's tópico in ACBrNFSe
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. -
NFS-e de Vila Velha, Envio falha sem msg de erro
Sérgio Caldeira Silva replied to Sérgio Caldeira Silva's tópico in ACBrNFSe
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; -
NFS-e de Vila Velha, Envio falha sem msg de erro
um tópico no fórum postou Sérgio Caldeira Silva ACBrNFSe
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? -
Í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
-
Í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.
-
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.
-
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.
-
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.
-
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
-
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;
-
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.
-
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.
-
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"> ----------------------------------------------------------------------