Ir para conteúdo
  • Cadastre-se

rubenstz

Membros
  • Total de ítens

    53
  • Registro em

  • Última visita

Tudo que rubenstz postou

  1. Juliana, Não é necessária esta alteração, houve uma confusão na interpretação, a unit deve ser mantida como já estava, o banco informa que aceita alfanuméricos no campo DV ou seja: pode usar '0' ou 'X' de acordo com a própria configuração do cliente. Unit original esta inserida. ACBrBancoBrasil.pas
  2. Bom dia, Houveram mudanças para geração do arquivo de remessa do banco do brasil em relação ao arquivo de remessa, é exigido que quando for o DV = 0 deve informar a letra "X" em maiúsculo. Fiz alterações nas linhas: 332 e 335 372 e 375 622 e 625 Do anexo ACBrBancoBrasil.pas Também inseri o manual do BB de 2019 que tomei por base para a alteração. Att, ACBrBancoBrasil.pas LayoutCNAB_240.pdf
  3. Boa tarde, também achei que poderia ser isto, mas não fez diferença quando mandamos com a assinatura feita no C#, tanto que os dois lotes que estão no anexo acima são validos para a prefeitura. O problema esta na assinatura do bloco <rps> dentro de cada arquivo XML de RPS, como tem que assinar cada RPS e depois o LOTE com estes RPSs isto gera diferença e o erro de HASH INVÁLIDO. Se eu fizer a assinatura de um arquivo xml de RPS apenas, ele será validado, porém ao gerar o lote com todos estes arquivos RPSs assinados e ao assinar o lote ficará inválido. Se somente o lote for assinado sem os RPSs ele também ficará válido. Em outro post, vou tentar ser mais claro e explicar o que fizemos para assinar corretamente com a validação por outro programa.
  4. Olá a todos, Vou colocar abaixo a solução (passo a passo) utilizando um programa em C# (anexo AssinaPIL.sln) que fizemos (em parceria com o colega de trabalho Sandecki) para fazer o envio para o Município de Salvador. A princípio geramos um .EXE que faz a assinatura, mas uma DLL para este fim é mais interessante, se alguém se habilitar por favor compartilhe no grupo. O IDEAL é que um dia funcione apenas com o ACBr e seus próprios métodos de assinatura. 1. A versão do .NET deve ser a .NETFramework,Version=v4.6.2 ou superior; 2. Foram utilizados os mesmos SCHEMAS do ACBr para montagem dos arquivos XML de RPS e LOTE de envio; 3. Arquivo salvador.ini deve estar da seguinte maneira: [Assinar] RPS=1 Lote=1 URI=1 4. DELPHI - no seu componente visual ACBrNFSe é necessário atribuir o evento OnAntesDeAssinar ou se utiliza em runtime faça a atribuição do método: ACBrNFSe.OnAntesDeAssinar := ACBrNFSeAntesDeAssinar; 5. DELPHI - Cole o seguinte código e adapte para seu uso o método OnAntesDeAssinar: // Método para assinar pelo executável externo procedure TFormNFS.ACBrNFSeAntesDeAssinar( var ConteudoXML: String; const docElement, infElement, SignatureNode, SelectionNamespaces, IdSignature: String); var xml: TStringList; pathNFSe, pathRPS, pathGeral, assinaPIL, xmlFileName, cmdLine: String; begin // Somente para o provedor de SALVADOR if ACBrNFSe.Configuracoes.Geral.Provedor = proSalvador then begin try xml := TStringList.Create; // caminho e nome do executável assinaPIL := ExtractFilePath(ParamStr(0))+'assinaPIL.exe'; // Verifica se o assinador existe if not FileExists(assinaPIL) then raise Exception.Create('O arquivo para assinatura digital não foi encontrado!'+#13+assinaPIL); // Caminho onde salva o XML pathGeral := ACBrNFSe.Configuracoes.Arquivos.GetPathGer(Date, ACBrNFSe.Configuracoes.Geral.Emitente.CNPJ); // Descobre se é RPS ou LOTE, pois esta rotina sempre é executada antes de assinar if AnsiLowerCase(docElement) = 'rps' then begin xmlFileName := pathGeral + '\assinar.xml'; xml.Add(ConteudoXML); xml.SaveToFile(xmlFileName); cmdLine := xmlFileName+' InfRps'; end else if AnsiLowerCase(docElement) = 'enviarloterpsenvio' then begin xmlFileName := pathGeral + '\assinar.xml'; xml.Add(ConteudoXML); xml.SaveToFile(xmlFileName); cmdLine := xmlFileName+' LoteRps'; end; // Cria o comando de assinatura cmdLine := assinaPIL+' '+cmdLine; if (not ExecAndWait(PChar(cmdLine)) > 0) then raise Exception.Create('Não foi possível assinar o arquivo:'+#13+xmlFileName) else begin xml.LoadFromFile(xmlFileName); conteudoXML := xml.GetText; // Apaga o arquivo temporario de assinatura if FileExists(xmlFileName) then DeleteFile(xmlFileName); end; // Continua o envio pelo ACBr finally xml.Free; end; end; end; 6. DELPHI - crie a função para executar o aplicativo externo de assinatura que é chamado no método acima: function ExecAndWait(ExecFile:PChar): Integer; var STARTUPINFO: TStartupInfo; PROCESSINFO : TProcessInformation; Status : Cardinal; begin with STARTUPINFO do begin cb := SizeOf(STARTUPINFO); lpReserved := nil; lpDesktop := nil; lpTitle := nil; dwFlags := STARTF_USESHOWWINDOW; // não motra o cursor de load lpReserved := nil; cbReserved2 := 0; lpReserved2 := nil; //wShowWindow := SW_HIDE; // HIDE não funciona em WINDOWS 8, W10 não houve problema wShowWindow := SW_SHOW; end; Result:=0; if CreateProcess(nil,ExecFile,nil,nil,False,NORMAL_PRIORITY_CLASS,nil,nil, STARTUPINFO,PROCESSINFO) then begin try Status:=WaitForSingleObject(PROCESSINFO.hProcess,1000 * 5 * 60); if Status=WAIT_TIMEOUT then begin TerminateProcess(PROCESSINFO.hProcess,0); end else if Status=WAIT_FAILED then Result:=GetLastError else begin GetExitCodeProcess(PROCESSINFO.hProcess,Status); Result := Status * -1; end; finally CloseHandle(PROCESSINFO.hProcess); CloseHandle(PROCESSINFO.hThread); end; end else Result:=GetLastError; end; A maneira de envio é a de sempre ACBrNFSe.Enviar(numero_lote); Quem utilizar por favor manda um feedback do resultado, hoje utilizamos desta maneira para alguns clientes. Abs, AssinaPIL.zip
  5. Boa tarde, Anexo lote de envio assinado que a prefeitura de Salvador aceita (1-env-lot.xml) o outro foi assinado com componente de terceiros. Pode usar este site para validar o lote de NFSe produzido: http://validator.doctrails.net/default.aspx (na prefeitura de Salvador me indicaram este para validar nossas requisições). 1-env-lot.xml lote_assinado_outro_componente.xml
  6. Boa tarde Hugo, Onde trabalho fizemos um .exe (solução paleativa) em C# e conseguimos fazer a transmissão, estamos providenciando uma DLL para isto agora, mas o ideal seria que o ACBr conseguisse fazer isto independente de qqer outra app externa. Você, através das informações que postou, já conseguiu transmitir totalmente com o ACBr?
  7. Também passei por algo parecido. Não sei se é a mesma situação, eu hoje não uso openSSL e deixei ativa e NÃO comentada a diretiva {$DEFINE DFE_SEM_OPENSSL} no arquivo ACBR.inc. Esta opção comentada faz com o que o seu executável carregue de maneira implícita as dlls da OPENSSL e se não estiverem no diretório do Windows (SYSWOW64 ou SYSTEM32) ou no próprio diretório do executável causa erro. Faço isto devido a algumas regras de negócio e de atualização do diretório da APP e como é software legado em D7 a diretiva {$DEFINE USE_DELAYED} não funciona.
  8. Boa tarde, Este problema esta acontecendo com a cidade de PORTO ALEGRE que também utiliza o BHISS. Resolvi colocando uma versão antiga do arquivo BHISS.INI da versão de produção de um de nossos clientes. Criei um tópico com este título mas existe um outro muito parecido mas aconteceu na hora de CANCELAR (esta fechado), este que estou tendo é no momento de enviar: A versão atual do ACBr que não esta funcionando esta anexo o arquivo de inicialização e sua revisão (BHISS_v15404.INI - não assina corretamenete) e juntamente a versão antiga que tive de usar para que funcionasse (BHISS.INI). Se alguém passar por este problema seria bom relatar pois não sei se isto afeta BELO HORIZONTE e PORTO ALEGRE da mesma maneira. Att, BHISS_v15404.ini BHISS.ini
  9. Italo, Esta inválido a ultima assinatura no arquivo de envio do LOTE. Estou usando LIBWINCRYPT, tentei assinar com libCapicom mas recebo a mensagem: "Erro durante a transmissão! Erro não especificado" e não assina, até achei que fosse problema de configuração com as dlls CAPICOM mas não é pois ela funciona bem para CURITIBA e PORTO ALEGRE no mesmo ambiente de teste ou produção. Vlw
  10. Italo, Acredito que o problema não seja o TRANSFORMS, voltei ao normal e o RPS continua válido com assinatura e o lote dá erro. Anexando novamente gerado da maneira normal com o grupo <transforms> padrão ICP. acbr_1-env-lot_HASH_INVALIDO.xml acbr_1NF-rps_HASH_VALIDO.xml
  11. Bom dia Italo, Removi comentando na unit: // ACBrDFeUtil.pas // function SignatureElement( ... '<Reference URI="' + IfThen(URI = '', '', '#' + URI) + '">' + // '<Transforms>' + // '<Transform Algorithm="http://www.w3.org/2000/09/xmldsig#enveloped-signature" />' + // '<Transform Algorithm="http://www.w3.org/TR/2001/REC-xml-c14n-20010315" />' + // '</Transforms>' + '<DigestMethod Algorithm="'+DigestAlgorithm+'" />' + '<DigestValue></DigestValue>' + '</Reference>' + ... Mas fiz isto apenas para tentar deixar igual ao componente pago, pois vi que ele não utiliza, mas acredito que isto não vá fazer diferença pois o arquivo somente do RPS assinado fica VALIDO com ou sem esta TAG, o problema mesmo esta na assinatura do lote todo com os RPS. Achei até que poderia estar assinando o lote antes de montar todos os RPS dentro dele, mas não parece ser o caso. Estou trabalhando para que funcione com esta prefeitura pois é uma das poucas grandes que não temos o ACBr funcionando nela. Aos amigos que puderem ajudar vamos trocar mensagens. Abs,
  12. Bom dia Italo, Demorei um pouco pois estava simulando alguns testes também com um trial de um outro componente de envio (pago). Em anexo estão dois arquivos gerados ACBR, RPS e lote de envio. acbr_1-env-lot.xml acbr_1NF-rps.xml E também junto o arquivo de lote gerado com o outro componente assinado também, tentei deixar os dois arquivos iguais para bater a assinatura do certificado mas tem algum caracter ou texto do arquivo gerado pelo outro componente que não identifiquei, como não tenho fonte dele não mexi muito. Arquivo: lote_assinado_outro_componente.xml O principal problema, de conhecimento de vários aqui, para SALVADOR é o que mostra "ASSINATURA DO HASH NÃO CONFERE", conversando com o suporte da prefeitura me disseram que eu poderia testar os xmls assinados a partir do seguinte link: http://validator.doctrails.net/default.aspx . Verificando com este site o arquivo de RPS somente gerado pelo ACBr, me retorna como VÁLIDO. Verificando o arquivo de lote assinado pelo outro componente também me retorna também como VÁLIDO. Verificando o arquivo com o lote do ACBr com o RPS assinado dentro dele, me retorna INVÁLIDO. É este hash inválido que o sistema da prefeitura de Salvador acusa no momento do envio. OBS.: durante os testes para gerar o arquivo igual ao componente de terceiros (vejam que ele não usa) comentei nos meus fontes do ACBr para gerar a assinautra sem a tag <TRANSFORMS> na unit ACBrDFeUtil.pas na função SignatureElement, mas com ela ou sem ela o RPS continua válido e o LOTE inválido da mesma maneira. Vlw acbr_1NF-rps.xml lote_assinado_outro_componente.xml acbr_1-env-lot.xml
  13. Solucionou aqui tbm, desinstalei o WARSAW e funcionou, instalei a versão mais recente do WARSAW e o problema aparece (versão do warsaw 2.5.0.54). Este problema só ocorre para seleção de certificados, consegui fazer normalmente o envio de NFSe com este plugin instalado.
  14. Boa tarde, Mesmo problema a selecionar CERTIFICADO no windows com a mensagem: Também fecha o sistema abruptamente. Atualizei o ACBr recentemente e esta apresentando este problema em versão beta. Na versão anterior do ACBr com o sistema compilado e atualmente em produção este problema não ocorre e seleciona normalmente a lista de certificados mesmo estando nas máquinas com o último update do windows. Att,
  15. Bom dia a todos, Existe algum desenvolvedor que conseguiu gerar a NFSe para SALVADOR? Também tenho acompanhado e cheguei há algum tempo na mesma situação do rogerioxsandro mostrando que a assinatura do HASH não funciona. Me responderam a respeito da assinatura com o "id" em minúsculo: "Conforme uma atualização do FrameWork.NET que realiza a validação do XML, a tag “id” passou a ser minúscula, depois de nova atualização o resultado passou a ser obrigatório ser alfanumérico (letra e número), estas atualizações não modelo ABRASF, e sim de forma mundial feitas pela Microsoft, com o intuito de aumentar a segurança do arquivo XML. Com o aumento de ataques virtuais, os servidores da SEFAZ são atualizados constantemente, tendo assim estas atualização do FrameWork.NET causado um impacto na montagem do arquivo. Assim, a assinatura do arquivo deve ser com letras minúsculas e com resultado alfanumérica como arquivo exemplo anexo." Se alguém já estiver assinando pelo ACBr por gentileza ajude postando no forum.
  16. Boa tarde Ítalo, É preciso corrigir a função LerNFSe_ISSDSF pois esta trazendo valor liquido da nota errado. Código correto: NFSe.Servico.Valores.ValorLiquidoNfse := NFSe.Servico.Valores.ValorServicos - (NFSe.Servico.Valores.ValorPis + NFSe.Servico.Valores.ValorCofins + NFSe.Servico.Valores.ValorInss + NFSe.Servico.Valores.ValorIr + NFSe.Servico.Valores.ValorCsll + FNfse.Servico.Valores.ValorDeducoes + FNfse.Servico.Valores.DescontoCondicionado+ FNfse.Servico.Valores.DescontoIncondicionado+ FNFSe.Servico.Valores.ValorIssRetido); Segue unit em anexo, esta correção também deverá ser feita para a função LerNFSe_SP que estão faltando os valores de: FNfse.Servico.Valores.ValorDeducoes + FNfse.Servico.Valores.DescontoCondicionado + FNfse.Servico.Valores.DescontoIncondicionado Segue unit corrigida em anexo. Fica no seguinte caminho ..\acbr\Fontes\ACBrDFe\ACBrNFSe\PCNNFSe pnfsNFSeR.pas
  17. Boa tarde Cassiano, sinto pela demora para responder, segue: - Como sei se o ambiente de homologação existe? NÃO Existe, tem que ser em produção mesmo, cancele em seguida as notas enviadas. - Qual seria a série aceita por Sorocaba? A série que tenho feito o envio é NF. - Já tentei outros números para a série (99, 10002, etc) e apresenta o mesmo erro. Alguém já passou por isso? Sempre mandei como NF ele faz uma conversão e transforma em 99. Não da para consultar logo após o envio desmarque a opção no componente: ACBrNFSe.Configuracoes.Geral.ConsultarLoteAposEnvio e faça algum tempo depois ou por clique manual. No manual deles esta que eles tem até 24h para processar o envio (tem que ter paciência,rs). Quando você enviar com o sistema retorna um xml com o numero do lote enviado que é também o número de protocolo.
  18. Bom dia, A nota fiscal de Curitiba esta gerando errado o link de acesso a consulta para a NOTA FISCAL e precisa ser corrigido no arquivo de inicialização isscuritiba.ini. Trocar [LinkNFSe] Producao=https://isscuritiba.curitiba.pr.gov.br/portalnfse/Default.aspx?doc=%InscMunic%&num=%NumeroNFSe%&cod=%CodVerif% Homologacao=https://isscuritiba.curitiba.pr.gov.br/portalnfse/Default.aspx?doc=%InscMunic%&num=%NumeroNFSe%&cod=%CodVerif% Por: [LinkNFSe] Producao=https://isscuritiba.curitiba.pr.gov.br/portalnfse/Default.aspx?doc=%Cnpj%&num=%NumeroNFSe%&cod=%CodVerif% Homologacao=https://isscuritiba.curitiba.pr.gov.br/portalnfse/Default.aspx?doc=%Cnpj%&num=%NumeroNFSe%&cod=%CodVerif% Segue anexo corrigido ISSCuritiba.ini
  19. Na verdade o repositório que me refiro PESSOAL e MY, quis dizer: CERTIFICADOS do USUÁRIO ATUAL e CERTIFICADOS (computador local) que é onde o certificado A1 funciona para assinatura com a dll da prefeitura de Salvador.
  20. Ainda estou tentando com este provedor de Salvador, acredito que ninguém ainda tenha conseguido pelo ACBr. Se sim por favor compartilhe a solução que teve para que possamos seguir o mesmo caminho. Alguns fatos ou descobertas que compartilho com os colegas: - Aconteceu e continua o erro “E1 – Assinatura do Hash não confere”; - A tag “id” para assinatura tem que ser com "i" minúsculo e não como em tantos outros WEBSERVICES, mas desta maneira a assinatura do não fica correta e não passa para a prefeitura; - Se alterar no arquivo SALVADOR.INI o parâmetro em [Geral][Identificador] e deixar para fazer o Id com ‘’I” em maiúsculo o arquivo é assinado corretamente porém não passa pelo WS de Salvador, pode usar o seguinte site para testes do XML produzido com “id” e “Id” no link: http://validator.doctrails.net/default.aspx , este foi o mesmo que um suporte da prefeitura de lá me passou e disse que meu XML produzido era inválido; - É dito que é padrão ABRASF mas na verdade tem modificações, exemplo: BHISS que serve para BELO HORIZONTE, PORTO ALEGRE também é ABRASF e testei pelo mesmo link ali de cima e lote e rps estão assinados corretamente com seus respectivos schemas com “Id” com I maiúsculo; - Tentei colocar tags extras ou identificador na tag ID como sugerido no fórum (http://javahome.com.br/jc/posts/list/45/1287.page#top) para tentar assinar mas continua com problema de assinatura; - Fiz uma assinatura com a DLL (nfseutil.dll) disponibilizada pela prefeitura de Salvador com um certificado do tipo A1 e funcionou, porém com um certificado A3 isto não é possível, pelo menos com Win10, devido ao certificado ficar no repositório Pessoal (PERSONAL) e não no Computador Local (MY) que é onde a DLL faz requisição, não posso limitar o cliente a usar somente certificados A1 e também pela própria informação da prefeitura de que a biblioteca foi descontinuada em nov/2013, aliás o único retorno que tenho de lá é que devo baixar os SCHEMAS, EXEMPLOS e MANUAIS (abrasf) e me basear por estes, mas não funcionam; - Não achei ninguém de DELPHI ainda em pesquisas ou até mesmo outras linguagens e comunidades que estejam produzindo e funcionando com este provedor.
  21. Boa tarde, Esta vindo do repositório a unit sem a alteração citada acima, deve ter sido sobreposta pois sempre que atualizo tenho que substituir nos fontes. O problema é com a impressão de DANFSE que estava saindo sem valores de tributos o que afeta o valor liquido da NFSe. Mandando anexo de volta para atualização e verificação dos moderadores. pnfsNFSeR.pas
  22. Bom dia Italo, Não estavam aparecendo os tributos federais para a DANFSE de SP, esta enviando corretamente para a prefeitura os impostos (PIS, COFINS, CSLL, INSS e IR) porém para impressão não carrega. Fiz a alteração para a função LerNFSe_SP da unit pnfsNFSeR.pas que esta no caminho: ..\acbr\Fontes\ACBrDFe\ACBrNFSe\PCNNFSe\ Ficou assim: function TNFSeR.LerNFSe_SP: Boolean; ... // Tributos Federais - PIS, COFINS, INSS, IR e CSLL NFSe.Servico.Valores.ValorPis := Leitor.rCampo(tcDe2, 'ValorPis'); NFSe.Servico.Valores.ValorCofins := Leitor.rCampo(tcDe2, 'ValorCofins'); NFSe.Servico.Valores.ValorInss := Leitor.rCampo(tcDe2, 'ValorInss'); NFSe.Servico.Valores.ValorIr := Leitor.rCampo(tcDe2, 'ValorIr'); NFSe.Servico.Valores.ValorCsll := Leitor.rCampo(tcDe2, 'ValorCsll'); ... end; Anexo a unit com a correção feita. pnfsNFSeR.pas
  23. Olá Dougue, obrigado pela ajuda em primeiro lugar, consegui fazer alguns testes com certificados do tipo A1 ou certificados com extensão .pfx que levam a chave privada para o repositório 'MY' exigido pela DLL assinou o retorno normalmente. Porém com um certificado do tipo A3 instalado eu não consegui porque sempre instala no repositório 'PERSONAL', você ou alguém esta conseguindo fazer o envio com este tipo de certificado?
  24. Dougue, vc tem o fonte desta unit alterada? Tbm precisarei fazer isto para Salvador pois direto pelo ACBr não esta funcionando.
  25. Também estou com problema em SALVADOR, tem outros tópicos aqui no forúm mas nenhuma ainda resolveu para mim.
×
×
  • 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.