Ir para conteúdo
  • Cadastre-se

almp1

Membros
  • Total de ítens

    115
  • Registro em

  • Última visita

  • Days Won

    1

Tudo que almp1 postou

  1. Olá Italo, tudo bem ? Acredito que estamos finalizando o provedor CONAM. Depois da ultima atualização, fiz vários testes e a comunicação com o serviço deles a princípio esta correta. Porém efetuei mais alguns ajustes que na maioria deles foram apenas para tratamento das respostas. Percebi que independente do processamento ter sido efetuado com sucesso, o ACBr sempre gerava uma exceção, impedindo o tratamento final da resposta por parte do programador. Fiz o possível para não mexer muito nos métodos que são utilizados por outros provedores afim de não causar muito impacto no pacote. Estou listando abaixo as alterações que efetuei e o motivo. Caso algo não esteja no padrão correto, me informe para eu poder adequar da melhor maneira. pnfsLerListaNFSe linha 436 FNFSe.DataEmissaoRps := NFSeLida.NFSe.DataEmissaoRps; //Caso o programador queira resgatar a data da emissão do rps vindo do provedor pnfsNFSeG linha 1099 Gerador.wGrupoNFSe('SerieRPS>' + SerieRps + '</SerieRPS'); //Na ultima versão estavamos passando de forma fixa 'UNICA', mas este valor deve ser passado pelo usuário ACBrNFSeWebServices linha 48, 3067, 3684 pnfsCancNfseResposta, pnfsSubsNfseResposta //apenas "case sensitive" para usuários Linux SerieRps := FNotasFiscais.Items[0].NFSe.IdentificacaoRps.Serie; //Na ultima versão estavamos passando de forma fixa 'UNICA', mas este valor deve ser passado pelo usuário if not (TACBrNFSe(FACBrNFSe).Configuracoes.Geral.Provedor in [proISSNet, proEL, proCONAM]) then //Adicionado o proCONAM pois sempre gerava exceção ao entrar nesta condição. pnfsCancNfseResposta linha 734 FInfCanc.FSucesso := Leitor.rCampo(tcStr, 'Retorno'); //Preenche a propriedade FSucesso com true ou false, só não sei se este é o padrão para todos os provedores, se não for, devemos mudar para o padrão. pnfsConsSitLoteRpsResposta linha 301 if FInfSit.FSituacao <> '5' then begin //Caso a situação seja 5 é porque o lote foi processado com sucesso, neste caso não pode haver mensagens, pois as mensagens geram exceção. Desculpe enviar as alterações aos poucos, mas acho que fica mais fácil controlar Segue abaixo os arquivos alterados. Grande abraço, ACBrNFSeWebServices.pas pnfsConsSitLoteRpsResposta.pas pnfsCancNfseResposta.pas pnfsLerListaNFSe.pas pnfsNFSeG.pas
  2. Olá Italo Obrigado mais uma vez, vou fazer atualização de tudo e realizo os testes sim. Reporto aqui o resultado. Abraços,
  3. Olá Italo, Tudo bem ? Estou enviando mais alguns ajustes para melhorar a integração com o provedor CONAM. No método TNFSeR.LerNFSe_CONAM: Boolean; Adicionei as seguintes linhas dhRecebimento:=StrToDateTime(Leitor.rCampo(tcStr, 'DtHrGerNf')); DataEmissao:=StrToDateTime(Leitor.rCampo(tcStr, 'DtEmiNf')); DataEmissaoRps:=StrToDateTime(Leitor.rCampo(tcStr, 'DtEmiRps'));; No arquivo CONAM.ini fiz uma mudança no link da NFSe, por algum motivo a forma anterior não funciona mais. [LinkNFSe] Producao=https://nfe.etransparencia.com.br/%NomeMunicipio%/nfe/stubimprimenfe.aspx?%NumeroNFSe%_%InscMunic%_%CodVerif% Homologacao=https://nfehomologacao.etransparencia.com.br/%NomeMunicipio%/nfe/stubimprimenfe.aspx?%NumeroNFSe%_%InscMunic%_%CodVerif% No método TNFSeW_CONAM.GerarListaServicos adicionei um recurso para aceitar mais dois emails previstos pelo provedor CONAM for i:= to NFSe.email.Count - 1 do Gerador.wCampoNFSe(tcStr, '', 'Email'+IntToStr(i+2), 01, 120, 1, NFSe.email.Items[i].emailCC, ''); Para usar o recurso com vários emails é só adicionar os endereços de email na Add da NFSe, por exemplo with NotasFiscais.Add.NFSe do begin IdentificacaoRps.Numero:=FormatFloat('#########0', iRPS); . . . . email.Add.emailCC:='[email protected]'; email.Add.emailCC:='[email protected]'; end; Lembrando que o CONAM faz validação de email, portanto não pode haver emails repetidos. Fico a disposição se precisar fazer alguma correção. Abraços, pnfsNFSeR.pas pnfsNFSeW_CONAM.pas Cidades.ini CONAM.ini
  4. Olá Amigos Fis o teste com o ultimo release do ACBr e consigo pegar o protocolo desta forma ACBrNFSe1.WebServices.EnviarLoteRPS.Protocolo Abraços,
  5. Olá Edson, tudo bem ? Eu pude perceber que a solicitação do certificado só ocorre se alguns parâmetros das configurações forem passados, por exemplo. Quando eu uso um provedor que não necessita de certificado deixo o código assim. ACBrNFSe.Configuracoes.Arquivos.AdicionarLiteral := False; ACBrNFSe.Configuracoes.Arquivos.EmissaoPathNFSe := False; ACBrNFSe.Configuracoes.Arquivos.SepararPorMes := False; ACBrNFSe.Configuracoes.Arquivos.SepararPorCNPJ := False; Não sei se está é a solução mais inteligente, mas é a que funciona por enquanto. Apesar de eu usar o xmlsec no lugar da Capicom, o efeito é o mesmo se uma destas propriedades forem True, o uso do certificado é solicitado. Em relação ao ISS do SN diferente do cadastro, ocorre porque o prestador de serviço está classificado como Simples Nacional, e no cadastro dele na prefeitura existe uma alíquota fixa, devemos informar a mesma alíquota que consta no cadastro da prefeitura. Em relação a data eu estou passando a configuração DefaultFormatSettings.DateSeparator := '/'; na minha aplicação, provavelmente por isso não enfretei o problema que você enfrentou na impressão, mas acho mais elegante usar a sua solução. Espero ter ajudado Abraços
  6. Obrigado Daniel Grande abraço
  7. Olá Daniel Baseado nos posts que trocamos fiz assim na função GetSysANSIencoding if (Result = EncodingUTF8) or (Result = EncodingAnsi) then Isso resolveu o problema, mas não sei se este é o caminho correto Abraços,
  8. Olá Daniel Segue os arquivos conforme solicitado. Fiz também o debug que você me pediu, na minha maquina de desenvolvimento a função retorna 'cp1252', na maquina de produção retorna 'ansi' As duas maquinas são CentOS 6.7, porém na maquina de produção não tenho Lazarus+FPC instalado O "NOGUI" esta ativado na minha compilação. Abraços, HttpResp.txt HttpResp2.txt
  9. O ambiente que eu estou usando é Lazarus 1.4.4 FPC 2.6.4 CentOS 6.7 32bits Estou enviando anexo o arquivo cnpjsemconv.txt onde não usei a função CP1252ToUTF8 e outro arquivo cnpjconvertido.txt onde usei a função Mais uma vez obrigado pela ajuda cnpjconvertido.txt cnpjsemconv.txt
  10. Olá Daniel, Quando lemos a resposta os caracteres acentuados ficam assim por exemplo "NÚMERO DE INSCRIÇÃO" Ai na leitura do campo LerCampo(Resposta, 'NÚMERO DE INSCRIÇÃO'); o conteúdo não é encontrado. Neste caso os dados não são preenchidos usando títulos que possuem acentos. Abraços
  11. Olá Amigos, Estou enfrentando um problema em uma maquina Linux CentOs 6.0 32-bits. Para poder ler a resposta da consulta corretamente, precisei fazer a seguinte alteração. Resposta.Text := StripHTML(CP1252ToUTF8(RespHTTP.Text)); Acredito que seja um problema local, pois em outras maquinas a consulta funciona sem a necessidade de usar a função CP1252ToUTF8() da LConvEncoding, mas não sei como resolver isso, alguém já teve este problema ou tem alguma ideia de como posso resolver. Abraços,
  12. Olá Italo, Tudo bem ? Adicionando mais uma pequena alteração no arquivo CONAM.ini, assim podemos resgatar o Link da NFSe. Apenas para documentar estou usando os parâmetros da seguinte forma: 1) %CodVerif% - O código de verificação é informado no retorno do método da consulta às NFEs, pegamos esta informação neste momento. 2) %NumeroNFSe% - O código de verificação é informado no retorno do método da consulta às NFEs, pegamos esta informação neste momento. 3) %InscMunic% - O Conam não usa está informação no link da NFSe, por isso estou usando este parâmetro para enviar o código do contribuinte. Este código pode ser adquirido no próprio link da NFSe, quando a prefeitura faz o envio do email para o contribuinte. Segue a alteração necessária no arquivo CONAM.ini [LinkNFSe] Producao=https://nfe.etransparencia.com.br/%NomeURL_P%/nfe/stubimprimenfe.aspx?%NumeroNFSe%_%InscMunic%_%CodVerif% Homologacao=https://nfehomologacao.etransparencia.com.br/%NomeURL_H%/nfe/stubimprimenfe.aspx?%NumeroNFSe%_%InscMunic%_%CodVerif% Estou enviando o arquivo completo anexo caso queria disponibilizar no repositório Abraços, CONAM.ini
  13. Olá Italo, Tudo bem ? Conforme prometido, estou enviando anexo os arquivos atualizados para sua avaliação para podermos consumir os métodos: 1) Envio de RPS. 2) Consulta a situação do protocolo. 3) Consulta resultado do processamento com as notas emitidas ou erros dos RPSs. 5) Cancela RPS/NFSe. O método para validar o lote de RPS não foi implementado. Caso tenha algum problema ou precise fazer alguma correção estou a disposição para ajudar. Gostaria de agradecer aos outros membros que também colaboraram para o desenvolvimento deste provedor. Abraços, ACBrNFSe.zip Frm_Demo_ACBrNFSe.pas CONAM.ini Cidades.ini
  14. Bom dia Italo Eu que agradeço. Em suma o provedor conam fornece apenas 5 métodos 1) Envio de Lote de RPS. (Implementado) Referencia no arquivo INI [SoapAction] Recepcionar = NFeaction/AWS_NFE.PROCESSARPS 2) Consulta Notas de um protocolo. Implementado localmente, mas ainda estou fazendo testes para tratamento de erros, estarei disponibilizando para avaliação até amanhã (24/03/16) Referencia no arquivo INI [SoapAction] ConsLote = NFeaction/AWS_NFE.CONSULTANOTASPROTOCOLO 3) Consulta de Protocolo de RPS. Implementado localmente e já efetuei testes para validação do protocolo e tratamento de erros, estarei disponibilizando para sua avaliação até amanhã (24/03/16) Referencia no arquivo INI [SoapAction] ConsSit = NFeaction/AWS_NFE.CONSULTAPROTOCOLO 4) Validação de lote de RPS Não tem referencia no arquivo INI 5) Cancelamento de NFSe. A solicitação do cancelamento já esta implementado, mas não ha implementação da leitura do retorno ainda, estarei implementando e assim que estiver pronto disponibilizo para sua avaliação. Referencia no arquivo INI [SoapAction] Cancelar=NFeaction/AWS_NFE.CANCELANOTAELETRONICA Abraços,
  15. Olá Amigos Estou enviando abaixo alguns ajustes que foram necessários para que fosse possível o consumo do WS Conam 1) Completei um pouco mais a classe TNFSews_CONAM, pode não ser a versão final, mas procurei ser o mais fiel ao manual do provedor. 2) Adicionei na classe TNFSe a propriedade DataOptanteSimplesNacional, pois se o emitente é é optante pelo simples está informação é obrigatória. 3) Deixei o método Gera_DadosMsgEnviarLote da classe TNFSeG um pouco mais limpo, deixando a responsabilidade maior para classe TNFSews_CONAM 4) Estou usando Lazarus 1.4.4 com FPC 2.6.4 em Linux CentOS 6 - 32 bits, foi necessário iniciar o projeto de demonstração da NFSe com a seguinte formatação DefaultFormatSettings.DateSeparator := '/'; DefaultFormatSettings.DecimalSeparator:=','; Não sei se isto é necessário em outros ambientes, por isso deixei a cargo do programador usar ou não a configuração em seu projeto. O Fato é que o provedor Conam, exige que a formatação das datas sejam dd/mm/yyyy e os numero sejam 0,00 5) Ainda no projeto de demonstração adicionei os seguinte items DataEmissaoRps:=Now; DataOptanteSimplesNacional:=Now-500; //se o emitente for optante pelo simples ValoresNfse.Aliquota:= 2; Com estes ajustes já estamos recebendo o arquivo de retorno conforme anexo, porém percebi que ainda não temos o tratamento deste retorno. Estarei focado nestes dias para finalizar este projeto e irei postando meus avanços. Espero ter contribuído com estes ajustes, Abraços pnfsNFSe.pas pnfsNFSeW_CONAM.pas pnfsNFSeG.pas Frm_Demo_ACBrNFSe.pas CB403127453BAB240988-rec.xml
  16. Olá Amigos, Estou enviando os Arquivos Conan.ini e cidades.ini atualizados, pois o provedor conam recebe suas requisições de acordo com a cidade emitente conforme destaquei abaixo. Também inclui no arquivo cidades.ini a cidade de Poá-SP e ajustei a cidade de Pirassununga que são atendidas pelo provedor conam. [3525300] Nome=Jau UF=SP Provedor=CONAM NomeURL_H=sp.jahu NomeURL_P=sp.jahu [URL_P] RecepcaoLoteRPS=https://nfe.etransparencia.com.br/%NomeURL_P%/webservice/aws_nfe.aspx?wsdl [URL_H] RecepcaoLoteRPS=https://nfehomologacao.etransparencia.com.br/%NomeURL_H%/webservice/aws_nfe.aspx?wsdl Abraços, Cidades.ini CONAM.ini
  17. almp1

    Ajuste no ACBrConsultaCNPJ

    Olá amigos, Estava enfrentando um problema para resgatar a data de abertura na consulta cnpj e fiz a seguinte alteração De : FAbertura := StrToDateDef(LerCampo(Resposta,'DATA DE ABERTURA'),0); Para: FAbertura := StrToDateDef(LerCampo(Resposta,'DATA DE ABERTURA'),0, '/'); E agora esta funcionando, não se outros enfrentam o mesmo problema. Meu ambiente é Lazarus 1.4.4 FPC 2.4.6 Linux CentOS 6 32bits Abraços,
  18. Olá Edson obrigado ! Eu não tinha dado sequencia ao Webservice devido a dificuldade de configurar o Conam.ini com os dados corretos, mas agora com o seu arquivo acho que consigo continuar. Assim que eu tiver mais novidades vou postando aqui. Abraços,
  19. Olá Edson, Que bom saber que tem outros usuário do CONAM. Vou dar uma olhada na sua implementação, acredito que já esteja mais evoluída que a minha, que só gera o arquivo mas não envia ainda. Vamos aguardar a validação do Italo, para podermos ter o provedor disponível no SVN. Abraços,
  20. Obrigado
  21. almp1

    Cidade Poá/SP

    Bom dia Italo, Obrigado pela informação, quando eu enviei o post eu estava usando o trunk1 ainda, mas agora já migrei tudo para o trunk2 Abraços,
  22. almp1

    Provedor CONAM - inicial

    Bom dia a todos. Estou implementando o provedor CONAM no trunk2. Como já foi mencionado em outros posts o CONAM foge totalmente ao padrão ABRASF. Pensando em dar inicio ao desenvolvimento do provedor, implementei inicialmente a geração do XML que já atende a emissão da NFSe nas prefeituras que utilizam este provedor. Com o arquivo XML em mãos o usuário pode logar no site da prefeitura e enviar o XML. Como dica, para atender o envio em lote, você pode gerar no seu sistema vários XMLs, compacta-los e o usuário pode enviar para o site da sua prefeitura um arquivo (.zip) que o servidor CONAM tem capacidade de extrair os XMLs de dentro do zip e processa-los O CONAM não tem capacidade de ler o arquivo XML como string, ou seja, o arquivo XML obrigatoriamente deve estar endentado, para isso tratei a geração do layout do XML com a propriedade IdentarXML definida como verdadeira "FGerador.Opcoes.IdentarXML:=True;" Para atender o provedor CONAM, algumas informações são obrigatórias: 1) Data da opção pelo simples se o prestador for simples 2) Tipo de tributação do ISS (Isento, Imune, Suspenso ...) Por isso criei duas novas propriedades na classe TNFSe O Provedor CONAM aceita informar até 3 emails, <Email1/>, <Email2/>, <Email3/>. Não fiz nenhuma alteração em relação a isso, já que a informação dos Emials 2 e 3 são opcionais, mas minha sugestão é podermos informar outros emails. Se estiverem de acordo com esta implementação, sugiro disponibilizarmos estas propriedades na class TNFSe, já que são emails avulsos não pertencendo de forma direta ao tomador ou ao prestador do serviço. Os arquivos alterados foram pnfsNFSe.pas pnfsConversao.pas ACBr_NFSe.pas Foi adicionado a uniti pnfsNFSeW_CONAM.pas O projeto de exemplo da NFSe também foi alterado com os comentários para uso do provedor CONAM Sei que ainda faltam algumas operações como cancelamento e consulta da NFSe, mas com certeza já podemos emitir a NFSe usando ACBr, com isso podemos abrir a porta para uso do provedor CONAM. Estou enviando os arquivos alterados, para o exemplo, fiz apenas as alterações no projeto em Lazarus Fico a disposição para ajudar, e espero que outros usuários também possam contribuir em melhorias. Abraços acbrnfse.zip
  23. Olá Juliomar, Obrigado. Sabe me informar se tem alguém trabalhando no provedor CONAM ? Se não houver, gostaria de contribuir com este provedor uma vez que atendo alguns cliente que utilizam o CONAM em suas prefeituras. Abraços,
  24. almp1

    Exemplo NFSe corrigido

    Olá amigos, Usando Lazarus 1.4.4 e Linux 32bits, encontrei vários problemas para compilar o exemplo da NFSe devido a falta de "cross plataform", por exemplo, o uso da uniti ShellAPI sem o tratamento {$IFDEF MSWINDOWS} ShellAPI,{$ENDIF} Também adequei as novas funções baseadas no Trunk2 e o uso das diretivas no novo ACBr.inc Espero que ajude a todos, Abraços Lazarus.zip
  25. Olá Messias, tudo bem ? Estou usando um ambiente similar ao seu Ubuntu 15.10 64, Lazarus 1.4.4, FPC 2.6.4, e ACBr do Trunk2. Substitui as libs do ACBrSSL pelas suas, e cheguei no mesmo resultado que o seu. Porém no momento de assinar a nota, encontro um problema na function xmlSecCryptoDLLoadLibrary, quando passamos pela linha Result := DoGetxmlSecCryptoDLLoadLibrary(crypto); recebemos uma exceção 'External: SIGSEGV'; Infelizmente não consigo passar deste ponto, também não temos como debugar isso. Uma curiosidade é que quando usamos as bibliotecas baixando os fontes e compilando localmente, não é gerada exceção mas a função retorna (-1). Você consegue assinar a nota? Você poderia me dar uma dica de como continuar a partir daqui ? Abraços Abraços,
×
×
  • 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...