-
Total de ítens
115 -
Registro em
-
Última visita
-
Days Won
1
Tipo de Conteúdo
Blocks
Notes ACBrLibNFe
Fóruns
Downloads
Calendário
Tudo que almp1 postou
-
Olá Daniel, tudo bem ? O assunto 64bits nos interessa muito. Na ultima vez que tentei migrar para plataforma 64bits esbarrei no uso do pacote xmlsec. Na época (11/2015) a xmlsec de 64bits para linux não era compatível. Vi que você postou que esta usando FPC 3, 64bits. O Lazarus já é o 1.6 ? Qual SO você esta usando ? Abraços,
-
Olá amigos, Estou focado no provedor de SP. Desculpem o volume das mensagens. Na unit pnfsEnvLoteRpsResposta.pas tem o método LerXml_proSP, que faz a leitura do retorno, na ACBrNFSeWebServices.pas temos o método TNFSeEnviarLoteRPS.TratarResposta, neste método o Result verifica se a propriedade Protocolo esta prenchida, caso contrário o result é False provocando uma exceção. impedindo que o processo da consulta continue. Result := (RetEnvLote.InfRec.Protocolo <> ''); No provedor SP não ha uso de protocolo, neste caso o que temos é sempre uma exceção. Pensando nisso minha sugestão é que no método LerXml_proSP, façamos uma pequena alteração considerando o NumeroLote como protocolo no caso de sucesso FInfRec.FSucesso := Leitor.rCampo(tcStr, 'Sucesso'); if (leitor.rExtrai(3, 'InformacoesLote') <> '') then begin if FInfRec.FSucesso = 'true' then FInfRec.Protocolo:=Leitor.rCampo(tcStr, 'NumeroLote'); Abraços pnfsEnvLoteRpsResposta.pas
-
Olá Daniel, A principio me foi enviado um exemplo com XMLs para cada método. Estou enviando anexo para conhecimento. Percebi que nos exemplos dos xmls o método de envio de lote em geral é assim: <PedidoEnvioLoteRPS xmlns="http://www.prefeitura.sp.gov.br/nfe" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><Cabecalho xmlns="" Versao="1"> Já os outros métodos os exemplos em geral são assim: <p1:PedidoConsultaLote xmlns:p1="http://www.prefeitura.sp.gov.br/nfe" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"><Cabecalho Versao="1"> Veja que a diferença esta na inclusão do p1: no método e a exclusão do atributo xmls="" no cabeçalho. Não sei se isso causaria o erro 500. Tentei criar o xml com o "p1", mas depois que o xml é assinado o "p1" é retirado. Acredito que o exemplo deles deva estar sujo, já que o "p1" é retirado durante o processo de assinatura. Vou continuar a verificação Abraços, exemplos.zip exemplosV02.zip
-
Olá Daniel Fiz alguns testes assim Ambiente 1 Windows + Capicom + Lazarus 1.4.4 + FPC + 2.6.4 O processo para na instrução abaixo da unit ACBrHTTPReqResp.pas, o método é o TACBrHTTPReqResp.Execute(const DataMsg: String; Resp: TStream); if HttpSendRequest(pRequest, nil, 0, Pointer(FData), Length(FData)) then Não houve mais resposta do sistema, aguardei cerca de 15 minutos, e não houve nenhuma resposta, nem de falha ou "time out". Ambiente 2 Windows + OpenSSL + Lazarus 1.4.4 + FPC + 2.6.4 O processo avança até a linha abaixo da unit ACBrDFeOpenSSL.pas, no método TDFeOpenSSL.Enviar(const ConteudoXML: String; const URL: String; const SoapAction: String; const MimeType: String): String; OK := FHTTP.HTTPMethod('POST', URL); Neste ponto o httpsend da synalist entra em cena para efetuar o envio e temos o retorno que eu havia reportado acima, Erro Interno: 0 Erro HTTP: 500 Este mesmo caso ocorre no ambiente abaixo Ambiente 3 Linux 32bits + OpenSSL + Lazarus 1.4.4 + FPC + 2.6.4 Entendo que o erro pode ser uma falha no alcance da URL, mas não entendo porque o método de envio do lote funciona, sendo que a url para todos os demais métodos é a mesma só sendo alterado o SoapAction. Não sei se outros colegas esta conseguindo consumir todos os métodos do WS de SP. Mas no meu caso só o método de envio do lote esta sendo consumido, todos os outros métodos ocorre o mesmo erro acima. Se alguém puder ajudar com alguma dica, fico grato. Abraços,
-
Olá Daniel, No manual do WS da prefeitura informa que são estes endereços mesmo. No método EnvioLoteRps a característica é a mesma, não acessa pelo navegador, mas a comunicação é feita com sucesso, ainda estou relutante quanto a isso e tentando investigar o que ocorre. Na realidade a url é https://nfe.prefeitura.sp.gov.br/ws/lotenfe.asmx e o SoapAction é http://www.prefeitura.sp.gov.br/nfe/ws/consultaLote É justamente o SoapAction que esta dando problema Abraços,
-
Olá Daniel, Eu não pude testar ainda com capicom os outros métodos. O método de envio de lote "http://www.prefeitura.sp.gov.br/nfe/ws/EnvioLoteRPS" funciona normalmente, por isso acredito que não tenha influencia de regras de Firewall, mesmo assim fiz testes com a a maquina exposta diretamente na internet. O erro permaneceu. Acredito que existe algo em relação ao endereço, como você disse, mas nenhum outro colega aqui parece ter tido este problema. Como estou usando Linux+OpenSSL pode ser que haja algo que não esteja correto ainda. Estou tentando identificar. O próximo método que estou tentando executar é o http://www.prefeitura.sp.gov.br/nfe/ws/consultaInformacoesLote, que faz a consulta do lote. Se precisar de mais alguma informação conte comigo Abraços,
-
Olá amigos ! Apenas para conhecimento dos testes que estou fazendo na prefeitura de SP. Como faço o envio para outras prefeituras, precisei fazer algumas adequações no meu processo para manter o "cross prefeituras" . Deu um pouco de trabalho, pois tive que considerar as regras de negócio das prefeituras durante o meu processo. Como sugestão, poderíamos colocar isso na construção dos XMLs que não são no padrão ASBRAF. Por exemplo, o provedor de SP não permite que seja informado a inscrição municipal do tomador quando o mesmo esta fora da cidade de SP, acho que isso deveria se considerado na construção do XML. Assim nós podemos preencher todas as propriedades da TNFSe sem se preocupar para qual prefeitura o XML será enviado, e como ele será tratado. Um outro exemplo ainda é a declaração da alíquota, em algumas prefeituras devemos informar 2.00 para 2% já em outras deve-se informar 0.02 para os mesmo 2%, com isso nossos processos começam a ganhar muitas condições. Temos também a variedade no formato da data, enfim. Se este for o caminho a percorrer acredito que podemos abrir um tópico só para tratar disso ... Aparentemente o método para o envio do RPS está ok. Recepcionar=http://www.prefeitura.sp.gov.br/nfe/ws/EnvioLoteRPS Após o envio neste método já é possível ler o retorno com numero da NFSe e código de verificação. Com isso parti para o teste no próximo método ConsSit=http://www.prefeitura.sp.gov.br/nfe/ws/consultaInformacoesLote O retorno é: Erro Interno: 0 Erro HTTP: 500 Isso ocorre em todos os outros métodos seguintes. Vou iniciar os debugs para tentar verificar o que realmente ocorre. Não sei se isso ocorre somente comigo ou se o mesmo ocorre com outros que estejam usando o Provedor SP Abraços,
-
Olá Itlao, Nos próximos 15 dias estaremos homologando a prefeitura de SP em nosso sistema. Informo os resultados dos testes aqui. Abraços,
-
Olá Daniel, Tudo bem ? Nem sei como agradecer, fiz a atualização e testei o envio. Funcionou tudo perfeitamente. Grande abraço,
-
Olá Daniel! Tudo bem? Segue anexo os dois arquivos, caso precise de qualquer outra coisa conte comigo Abraços, 1UNICA-rps.xml 1-env-lot.xml
-
Olá Italo, obrigado mais uma vez pela ajuda. Em meus testes ainda com openssl acontece assim na rotina abaixo, sendo que infElement = RPS infNode <> nil { find infElement node } infNode := xmlDocGetRootElement(doc); while (infNode <> nil) and (infNode.name <> InfElement) do infNode := infNode.children; 1º) infNode.name=PedidoEnvioLoteRPS e infNode.children=Cabecalho //próximo nó 2º) infNode.name=Cabecalho e infNode.children=CPFCNPJRemetente //próximo nó 3º) infNode.name=CPFCNPJRemetente e infNode.children=CNPJ //próximo nó 4º) infNode.name=CNPJ e infNode.children=text /// aqui ele para o laço e retorna o infNode como nil provocando a mensagem "Falha ao localizar o nó Raiz" O meu XML contem as seguintes informações neste trecho <?xml version="1.0" encoding="UTF-8"?> <PedidoEnvioLoteRPS xmlns="http://www.prefeitura.sp.gov.br/nfe"> <Cabecalho Versao="1" xmlns=""> <CPFCNPJRemetente> <CNPJ>23183669000161</CNPJ> </CPFCNPJRemetente> <transacao>true</transacao> <dtInicio>2016-06-24</dtInicio> <dtFim>2016-06-24</dtFim> <QtdRPS>1</QtdRPS> <ValorTotalServicos>1685.50</ValorTotalServicos> <ValorTotalDeducoes>0</ValorTotalDeducoes> </Cabecalho> <RPS xmlns=""> <Assinatura>................ Acredito que este seja um ponto inicial para tentarmos solucionar o problema. O teste acima foi feito em ambiente Linux e Windows usando Lazarus com OpenSSL Em relação a CAPICOM somente no Windows A primeira coisa que ocorreu foi que ao apontar para pasta de Schemas "acbr\Exemplos\ACBrDFe\ACBrNFSe\Schemas\" mesmo reconhecendo que a prefeitura era SP, precisei apontar para pasta "acbr\Exemplos\ACBrDFe\ACBrNFSe\Schemas\SP" para que os xsds fossem encontrados. Imaginei que o ACBr faria isso de forma dinâmica. Se o ACBr não fizer e, eu quiser que seja assim, acredito que a codificação abaixo resolva tomando como base o exemplo do pacote. ACBrNFSe1.Configuracoes.Arquivos.PathSchemas := edtSchemas.Text+'/'+ACBrNFSe1.Configuracoes.Geral.xProvedor; Este sintoma não acontece quando usei o OpenSSL. Agora, pra finalizar, com a CAPICOM foi sem surpresas, a nota foi transmitida com sucesso. Deste ponto em diante estou um pouco perdido, não sei que caminho tomar para ajudar numa solução, mas se puder me ajudar com outras dicas, fico a disposição para ajudar a solucionar o problema. Abraços,
-
Olá Italo, Estive lendo alguns pots sobre a implementação da NFSe-SP aqui no forum, e houve alguns momentos que postaram sobre o limite do uso da CAPICOM. Acredito que isso não seja um limitador, nem a causa do problema que estou tendo, já que uso OpenSSL tanto no linux quanto no windows. Abraços,
-
Bom dia Italo, tudo bem ? Estou usando o próprio exemplo do Lazarus que vem no pacote ACBr. Fiz os 2 testes como você falou, gerando 1 e 2 RPS(s) o erro é o mesmo. No primeiro teste é gerado apenas um arquivo 1UNICA-rps.xml no segundo teste são gerados 2 arquivos 1UNICA-rps.xml e 2UNICA-rps.xml Se houver algo que eu possa fazer para ajuda-lo a diagnosticar este caso conte comigo. Obrigado
-
Olá Amigos, Só para poder reforçar os testes. Obtive o mesmo problema usando Windows 10 com Lazarus 1.4.4 FreePascal 2.6.4. Assim podemos descartar também as instalações e configurações dos pacotes necessários para xmlsec, libxml2 e libxslt Se alguém estiver passando por este problema ou tiver uma dica de como podemos ajudar a resolver o problema, estou a disposição Abraços,
-
Olá Amigos, Estou tentando implementar a NFSe São Paulo, estou recebendo a seguinte mensagem "Falha ao localizar o nó Raiz" Isso ocorre neste trecho { find infElement node } infNode := xmlDocGetRootElement(doc); while (infNode <> nil) and (infNode.name <> InfElement) do infNode := infNode.children; Que fica na function abaixo do pas ACBrDFeOpenSSL TDFeOpenSSL.XmlSecSign(const ConteudoXML: AnsiString; SignatureNode, SelectionNamespaces, InfElement: AnsiString): AnsiString; Quando faço o Debug o valor do infNode.Name é 'PedidoEnvioLoteRPS', enquanto o valor da infElement é 'RPS' o while é executado apenas uma vez com este valores e com isso a infNode fica nil, me retornado a mensagem acima. Estou usando CentOS 6 32bits, Lazarus 1.4.4 FreePascal 2.6.4 com o ultimo release do ACBr que atualizei hoje. Para testar as configurações de comunicação e certificados as NFe esta implementada e funcionando corretamente. Alguém pode me ajudar com alguma dica de como resolver isso !? Abraços,
-
Olá Italo, Tudo bem ? Obrigado pelo "commit", vamos implementar o recurso para o envio de varias notas no mesmo lote. Provavelmente surgirão algumas dúvidas de como implementar sem afetar muito os arquivos principais do ACBr, conto com a ajuda de vocês Abraços,
-
Olá Amigos que usam o provedor CONAM Adicionei na construção do XML o registro 30. Este registro permite que os tributos adicionais alem do ISS sejam destacados na impressão da nota de forma separada conforme imagem anexa. Para permitir a declaração do registro 30 foi necessário apenas alterações no arquivo pnfsNFSeW_CONAM.pas que também esta anexo. Conforme a documentação do provedor, os tributos previstos são, PIS, COFINS, CSLL, INSS e IR, caso o prestador de serviço seja orientado a declarar outro tipo de tributo além dos citados, deve ser consultado na prefeitura local o suporte ao tributo no arquivo XML. Outra alteração necessária foi o envio do nome das cidades que, são validadas de acordo com o CEP informado. Um exemplo é a cidade SANTA BARBARA D'OESTE, o apostrofo deve ser substituído pelo espaço. Por padrão o utilitário do ACBr faz faz a substituição pelo código do carácter, e isso causa exceção no WS CONAM, pois o retorno exibe que a cidade informada não se refere ao CEP informado. Caso tenham alguma dúvida ou sugestão entrem em contato. Abraços pnfsNFSeW_CONAM.pas
-
Olá Italo, tudo bem ? Só mais um detalhe na atualização. No arquivo pnfsNFSeR.pas faltou uma linha no método LerNFSe_CONAM IdentificacaoRps.Serie:= Leitor.rCampo(tcStr, 'SerRps'); Esta instrução define a pesquisa da nota no WS do provedor CONAM, pois a pesquisa é feita por Numero de RPS + Serie do RPS. Se o numero de serie não for passado para pesquisar ou cancelar uma RPS/NFS o registro não é encontrado Estou enviando o arquivo anexo Abraços, pnfsNFSeR.pas
-
Olá Italo, tudo bem ? Obrigado por disponibilizar as alterações no SVN. Esta semana nos dias 1, 2 e 3 de Junho/2016 colocamos a primeira versão do nosso sistema em produção. Por enquanto nossos clientes só consomem Webservice Municipal do provedor CONAM. É bem comum enfrentarmos problemas no inicio das operações, pois os testes nunca preveem todas as possibilidades em que os usuários podem operar. Entre muitas situações, o maior inconveniente foi o recebimento da mensagem "Erro intereno: 110 / HTTP: 0". Pesquisando aqui no forum achei esta configuração ACBrNFSe.Configuracoes.WebServices.AguardarConsultaRet:=5000; ACBrNFSe.Configuracoes.WebServices.TimeOut:=15000; ACBrNFSe.Configuracoes.WebServices.AjustaAguardaConsultaRet:=True; Esta foi a unica alteração que precisamos fazer nas configurações do ACBr. Depois disso o envio das NFSes foram efetivados com 100% de sucesso. Por isso gostaria de agradecer a todos que, de forma direta ou indireta, contribuíram para o desenvolvimento deste provedor no ACBr. Porém não paramos por aqui. Acredito que nosso próximo desafio é permitir que o usuário envie varias notas em um único protocolo. A principio a alteração parece ser simples mas gostaria do parecer e de ajuda dos outros desenvolvedores para podermos caminhar na mesma linha. Em suma a alteração consiste na alteração do método GerarValoresServico do TNFSeW_CONAM que devem montar um rodapé com o total das notas. No recurso atual este método é chamado a cada nota adicionada. Acredito que teríamos que chamar este método no final. Uma sugestão simples seria migrar o conteúdo deste método para o arquivo pnfsNFSeG.pas no método Gera_DadosMsgEnviarLote do TNFSeG. proCONAM: begin Gerador.Opcoes.DecimalChar := ','; Gerador.Prefixo := ''; Gerador.wGrupoNFSe('Sdt_processarpsin xmlns="NFe"'); Gerador.wGrupoNFSe('Login'); Gerador.wGrupoNFSe('CodigoUsuario>' + UserWeb + '</CodigoUsuario'); Gerador.wGrupoNFSe('CodigoContribuinte>' + SenhaWeb + '</CodigoContribuinte'); Gerador.wGrupoNFSe('/Login'); Gerador.ArquivoFormatoXML := Gerador.ArquivoFormatoXML + Notas; //Daqui para baixo é a alteração Gerador.wGrupoNFSe('Reg90'); Gerador.wCampoNFSe(tcStr, '', 'QtdRegNormal' , 01, 05, 1, QtdeNotas, ''); Gerador.wCampoNFSe(tcStr, '', 'ValorNFS' , 01, 02, 1, FormatFloat('############0.00', ValorTotalServicos), ''); Gerador.wCampoNFSe(tcStr, '', 'ValorISS' , 01, 02, 1, FormatFloat('############0.00', ValorIss), ''); Gerador.wCampoNFSe(tcStr, '', 'ValorDed' , 01, 02, 1, FormatFloat('############0.00', ValorTotalDeducoes), ''); Gerador.wCampoNFSe(tcStr, '', 'ValorIssRetTom', 01, 02, 1, FormatFloat('############0.00', ValorIssRetido), ''); Gerador.wCampoNFSe(tcStr, '', 'QtdReg30' , 01, 05, 1, '0', ''); Gerador.wCampoNFSe(tcStr, '', 'ValorTributos' , 01, 02, 1, '0,00', ''); Gerador.wGrupoNFSe('/Reg90'); Gerador.wGrupoNFSe('/Sdt_processarpsin'); end; Não fiz esta alteração de forma efetiva, mas acredito que podemos começar por aqui. Aguardo comentários. Abraços
-
Olá Italo, tudo bem ? Hoje atualizei o ACBr para a revisão 11805 Percebi que no ACBrNFSeWebServices.pas faltou uma instrução no método TNFSeCancelarNfse.DefinirDadosMsg para passar a Serie da Nota/RPS. Se não houver esta instrução o provedor CONAM pode não encontrar o registro e não efetua o cancelamento da NFSe. Também no método TWebServices.CancelaNFSe se o servidor for conam não podemos efetuar a consulta da nfe, pois o conam não implemente este metodo. No pnfsCancNfseResposta.pas adicionei uma linha para retornar a data e hora do cancelamento no método TretCancNFSe.LerXml_proCONAM. Isso foi necessário para podermos tratar as mensagens de retorno do webservice. Caso contrario as mensagens vão vir como exceções. // Necessário para o provedor CONAM SerieRps := FNotasFiscais.Items[0].NFSe.IdentificacaoRps.Serie; if not (TACBrNFSe(FACBrNFSe).Configuracoes.Geral.Provedor in [proABase, proEL, proISSNet, proCONAM]) then FInfCanc.DataHora := Now; Segue arquivo anexo Abraços ACBrNFSeWebServices.pas pnfsCancNfseResposta.pas
-
Olá Rafael ! Nós ainda não estamos usando em ambiente de produção porque o sistema que irá utilizar o CONAM será disponibilizado para produção em Junho/2016, porém todos os métodos disponíveis pelo CONAM foram implementados e no ambiente de homologação do provedor temos tido sucesso. Acredito que depois de validado em mais alguns ambientes de produção podemos ter tranquilidade de postar nos "provedores 100%" Abraços
-
Bom dia Edson, Tudo bem ? Perfeita observação. Estou anexando o arquivo corrigido, vamos aguardar a postagem no SVN. Obrigado e abraços pnfsNFSeW_CONAM.pas
-
Olá Edson ! Tudo bem ? Devido aos requisitos do projeto em que eu estou participando e usando o ACBr não prever a impressão da NFSe, eu acabei não me estendendo em detalhes até os métodos de impressão. Porém, como colaborador, acho válida a sua sugestão de usar o arquivo .ini para determinadas configurações independentes para cada provedor. Vamos aguardar um posicionamento dos administradores para a possibilidade de implementar desta forma. Abraços,
-
Olá Daniel, Muito obrigado. Grande abraço
-
Olá Italo, Eu que agradeço, se for possível, nos informe quando o ACBrNFSeWebServices for liberado para eu poder fazer os testes no provedor. Abraços,