Ir para conteúdo
  • Cadastre-se

mlgoncalves

Membros
  • Total de ítens

    78
  • Registro em

  • Última visita

Tudo que mlgoncalves postou

  1. Olá gtvosouza, tudo bem? Estou iniciando a implementação da API do Banco do Brasil para geração de boletos. Tenho experiência no ACBRBoleto, mas não é por esse caminho que desejo seguir, mas sim pela API do banco. Você poderia compartilhar o que você já tem implementado para eu analisar? Também estou abrindo acesso técnico no SICOOB para implementação da API. Caso tenha interesse posso compartilhar o projeto. Obrigado, Marcelo.
  2. Olá, Segue em anexo a unit alterada. Atc, Marcelo. ACBrBoletoW_Caixa.pas
  3. Olá José Jr, obrigado pelo retorno. Segue mais uma sugestão para ser analisada na geração do XML webservice boleto caixa. Existe a TAG POS_VENCIMENTO onde deve-se informar o que deverá ser feito após o vencimento: protestar ou devolver o título. Na programação existente está sendo utilizado o campo 'DiasDeProtesto' para preencher a tag 'NUMERO_DIAS'. Acho que não deveria utilizar este campo para situação em que não haja protesto, pois gera inconsistência de informação na hora de imprimir o boleto. No webservice vai informação de baixa e no boleto aparece informação de protesto mesmo não havendo protesto. Segue abaixo o código original e a minha sugestão, que entendo ser mais acertada. //Versão original procedure TBoletoW_Caixa.GerarPos_Vencimento; begin if Assigned(Titulos) then with Titulos do begin Gerador.wGrupo('POS_VENCIMENTO'); if (integer(CodigoNegativacao) in [1,2]) then Gerador.wCampo(tcStr, '#14', 'ACAO ', 01, 20, 1, 'PROTESTAR', DSC_CODIGO_NEGATIVACAO) else Gerador.wCampo(tcStr, '#14', 'ACAO ', 01, 20, 1, 'DEVOLVER', DSC_CODIGO_NEGATIVACAO); Gerador.wCampo(tcInt, '#15', 'NUMERO_DIAS', 03, 03, 1, DiasDeProtesto, DSC_DIAS_PROTESTO); Gerador.wGrupo('/POS_VENCIMENTO'); end; end; //versão proposta para resolver o problema procedure TBoletoW_Caixa.GerarPos_Vencimento; var ADiasBaixaDevolucao: integer; begin if Assigned(Titulos) then with Titulos do begin Gerador.wGrupo('POS_VENCIMENTO'); if (integer(CodigoNegativacao) in [1,2]) then begin Gerador.wCampo(tcStr, '#14', 'ACAO ', 01, 20, 1, 'PROTESTAR', DSC_CODIGO_NEGATIVACAO); Gerador.wCampo(tcInt, '#15', 'NUMERO_DIAS', 03, 03, 1, DiasDeProtesto, DSC_DIAS_PROTESTO); end else begin if DataBaixa > Vencimento then ADiasBaixaDevolucao := Trunc(DataBaixa) - Trunc(Vencimento) else aDiasBaixaDevolucao := 0; Gerador.wCampo(tcStr, '#14', 'ACAO ', 01, 20, 1, 'DEVOLVER', DSC_CODIGO_NEGATIVACAO); Gerador.wCampo(tcInt, '#15', 'NUMERO_DIAS', 03, 03, 1, ADiasBaixaDevolucao, DSC_DIAS_PROTESTO); end; Gerador.wGrupo('/POS_VENCIMENTO'); end; end; Atenciosamente, Marcelo.
  4. Boa tarde! Estou colocando em produção o boleto via webservice da Caixa e encontrei algumas situações que descrevo abaixo com algumas propostas de alteração ou adaptação no código do acbr. 1) campo/tag xml 'IDENTIFICACAO_EMPRESA': entendo que neste campo deverá ser preenchido com o valor usado pela empresa(software) para identificar unicamente o boleto. Este campo é equivalente ao campo 'Seu Numero' no arquivo remessa. Acho que este campo está sendo confundido com o campo NumeroDocumento. Diante disso proponho as seguintes alterações: a) Linha 413 do arquivo ACBrBoletoW_Caixa.pas: Trocar o campo NumeroDocumento para SeuNumero Criar a constante DSC_SEU_NUMERO (isso eu não fiz no arquivo anexado) b) Linha 167 do arquivo ACBrBoletoRet_Caixa.pas Trocar o campo NumeroDocumento para SeuNumero 2) o campo ESPECIEDOC é preenchido originalmente por letras (vide a geração do arquivo remessa que converte letras para números) que identificam o seu conteúdo: DM=Duplicata mercantil/ OU=outros/ etc. Ocorre que a unit do webservice está informando diretamente o campo que gera erro. Proposta: na unit ACBrBoletoW_Caixa.pas na procedure TBoletoW_Caixa.GerarTitulo utilizar a conversão exatamente como é feito no arquivo remessa. Trecho do código: //mantendo padronização de preenchimento do campo EspecieDoc entre //as funcionalides de REMESSA e REGISTRO ON-LINE. //o campo EspecieDoc é preenchido com letras e nas respectivas funções de //REMESSA ou de REGISTRO ele é convertido para código if AnsiSameText(EspecieDoc, 'CH') then AEspecieDoc := '01' else if AnsiSameText(EspecieDoc, 'DM') then AEspecieDoc := '02' ... else AEspecieDoc := '99'; Gerador.wGrupo('TITULO'); Gerador.wCampo(tcStr, '#02', 'NOSSO_NUMERO ', 17, 17, 1, '14' + ACBrUtil.PadLeft(NossoNumero, 15, '0'), DSC_NOSSO_NUMERO); Gerador.wCampo(tcStr, '#03', 'NUMERO_DOCUMENTO', 11, 11, 1, NumeroDocumento, DSC_NUMERO_DOCUMENTO); Gerador.wCampo(tcDat, '#04', 'DATA_VENCIMENTO ', 10, 10, 1, Vencimento, DSC_DATA_VENCIMENTO); Gerador.wCampo(tcDe2, '#05', 'VALOR ', 01, 15, 1, ValorDocumento, DSC_VALOR_DOCUMENTO); Gerador.wCampo(tcStr, '#06', 'TIPO_ESPECIE ', 02, 02, 1, AEspecieDoc, DSC_TIPO_ESPECIE); 3) 'string de autenticacao': o campo NossoNumero faz parta da string de autenticação do boleto e deve iniciar obrigatoriamente com o número 14. Minha sugestão é que esse número inicial 14 seja adicionado opcionalmente caso o nosso número esteja incompleto. Trecho do código da unit ACBrBoletoW_Caixa.pas, function TBoletoW_Caixa.GerarAutenticacao var sAutenticacao, sNossoNumero: string; begin if length(NossoNumero) = 17 then sNossoNumero := NossoNumero else //adicionar o prefixo 14 no nosso número sNossoNumero := '14' + ACBrUtil.PadLeft(NossoNumero, 15, '0'); 4) geração do HASH da autenticação: sou usuário do Delphi XE6 e nesta versão o cálculo do HASH existente na função TBoletoW_Caixa.GerarAutenticacao não funciona. Recorri ao fórum do ACBR onde encontrei uma função que resolveria o problema mas ocorre que a função faz uso da units System.NetEncoding.pas e System.Hash.pas, ausentes no Delphi XE6. Para resolver o problema copiei estas units de um Delphi mais novo, ajustei as linhas que citavam algunas constantes e pronto. Ficou resolvido, conforme conta na função TBoletoW_Caixa.GerarAutenticacao. Tive de incluir as citadas units na 'uses' ficando assim: uses Classes, SysUtils, ACBrBoletoWS, pcnConversao, pcnGerador, ACBrBoletoConversao, NetEncoding, Hash; É isso. Desculpe se me enganei em algum conceito mas minha intenção é de ajudar. Não sou muito experiente em Delphi para fazer um código mais elaborado. Abaixo anexei os arquivos que modifiquei e que trouxe do Delphi 10.1. Atc, Marcelo. ACBrBoletoW_Caixa.pas ACBrBoletoRet_Caixa.pas System.NetEncoding.pas System.Hash.pas
  5. Olá Jhonlenon, tudo bem? Verifique os campos relativos ao juros de mora. No finalzinho da mensagem de exceção aparece a mensagem abaixo. SERVICO_ENTRADA/DADOS/INCLUI_BOLETO/TITULO/JUROS_MORA/DATA Outra dica é utilizar o boleto de exemplo do ACBR. Me ajudou na implementação. Atc, Marcelo
  6. Olá Jhonlenon, vou enviar os arquivos por aqui, talvez possa ajudar outros. E desde já agradeço pela colaboração nos aperfeiçoamentos.retbradesco (em produção no site).phpManual_Registro_de_Boleto_Bancario_Online_Jun17.pdfManual_Bradesco_Online.rarEnviarBoletoBradesco (em produção no delphi).pas
  7. Olá Jhonlenon, eu tenho uma rotina de transmissão de boleto via webservice, porém como o Bradesco exige assinatura digital no boleto e eu não consegui assinar através do delphi, criei uma rotina intermediária em PHP para fazer assinatura, transmissão e retorno. Funciona assim: Delphi gera arquivo JSON e envia para site (rotina PHP que pega o JSON, assina, transmite e pega retorno, e devolve retorno para o delphi). Se tiver interesse em conhecer e até mesmo aprimorar a rotina posso disponibilizar.
  8. Olá marlonapcred, eu precisei desenvolver o CNAB para o BB e utilizei o ACBrCNAB do Branches. Já está em produção. Agora, fui atualizar o branches novamente e percebi que vieram atualizações do CNAB do Banco Itaú. O ideal seria ajuntar o BB ao componente para ter apenasACBrCNAB_BB.rar um. Vou anexar o componente que customizei para o BB e veja se ajuda.
  9. Prezados, Volta e meia deparo com a necessidade de salvar boletos em arquivos PDF individuais, utilizando o componente de impressão em FastReports. Pesquisei no componente e encontrei apenas a solução usando FortesReport, e no forum não encontrei uma solução definitiva, apenas aquela convencional, de manter na lista de boletos apenas um boleto para cada salvamento. Nesse sentido fiz uma pequena modificação na unit ACBrBoletoFCFR.pas que entendo ser a solução do problema, e gostaria que os senhores avaliassem a solução e, sendo viável, que a disponibilizasse no componente. Desde já agradeço. ACBrBoletoFCFR.zip
  10. Ítalo, muito obrigado pelo esclarecimento! Após consultar alguns escritórios de contabilidade estou entendendo que o campo ALÍQUOTA DO ISS deverá mesmo ser preenchido com valor diferente de zero para empresas optantes do Simples Nacional, informando a alíquota de enquadramento da empresa no Simples Nacional. A prática que tínhamos de informar a alíquota zerada, apesar de funcional, não era a mais correta. Resolvido. Muito obrigado.
  11. Bom dia! Estou acompanhando os desenvolvimentos do webservice de cobrança e gostaria de contribuir com a documentação do Banco Santander. Como não temos muita experiência em manipular certificado digital no delphi, desenvolvemos uma aplicação que gera o boleto e que chama um programa em PHP no nosso site para assinar, transmitir pro banco e pegar retorno. O processo é muito simples e foi feito de acordo com o exemplo do próprio Santander. Segue a documentação para quem desejar desenvolver nos padrões do ACBr. Se desejar realizar testes consigo o acesso a uma conta com a cobrança XML habilitada. Cobrança XML Santander.rar
  12. Olá Juliomar, Obrigado pela dica. Fiz o deploy e localizei a unit 'pnfsNFSeW_ABRASFv1' na linha 300, que é exatamente onde se monta a tag da aliquota do ISS. Mas não vi nenhum parâmetro que force a inclusão da tag quando a aliquota estiver zerada. Nas verificações que fiz, quando a alíquota estiver zerada a função 'TGerador.wCampo' localizada na unit 'pcnGerador', está preparada para DESCARTAR a tag que estiver zerada, e aí que está o meu problema que não consegui resolver. O provedor GINFES obriga informar a tag da ALIQUOTA DO ISS mesmo para empresas do SIMPLES NACIONAL. Antes de atualizar os fontes do ACBR esta tag estava sendo enviada zerada, sem gerar erros, após a atualização esta tag está sendo omitida no XML e retornando erro do provedor dizendo da obrigatoriedade de se informar a tag do ISS. Tem alguma dica que possa me ajudar? Para contornar o problema, orientei o cliente a informar a alíquota de enquadramento do Simples Nacional, SEM CALCULAR O ISS para que pudesse autorizar a NFS-e. Desde já agradeço pelo apoio.
  13. Olá Marcos, seu cliente é optante do Simples Nacional? Se sim, estou entendendo que deverá ser informado a alíquota do ISS do seu cliente conforme consta na tabela. Eu estava informando esta alíquota zerado e começou a aparecer erro de validação. Então decidi partir para essa solução.
  14. Bom dia! Estou com um problema para autorizar NFS-e para empresa optante do Simples Nacional. Depois de atualizar o ACBR o xml passou a ser gerado está sem a tag da alíquota do ISS, o que gera erro na autorização. Fiz um teste informando alíquota com valor 2 e o valor do iss zerado e consegui autorizar. A minha pergunta é como inserir aliquota zerada no xml. Trecho de um XML autorizado... <ns4:ValorIss>0.00</ns4:ValorIss> <ns4:BaseCalculo>265.00</ns4:BaseCalculo> <ns4:Aliquota>0.0000</ns4:Aliquota> <ns4:ValorLiquidoNfse>265.00</ns4:ValorLiquidoNfse> Trecho do novo XML gerado sem a tag da Alíquota e que está gerando erro <ns4:IssRetido>2</ns4:IssRetido> <ns4:ValorIss>0.00</ns4:ValorIss> <ns4:BaseCalculo>1.00</ns4:BaseCalculo> <ns4:ValorLiquidoNfse>1.00</ns4:ValorLiquidoNfse> Desde já agradeço pela colaboração. PS. Desculpe, mas sem querer respondi a pergunta de um colega com a minha pergunta, ao invés de abrir novo tópico. Marcelo.
  15. Bom dia! Também estou com um problema semelhante para o mesmo provedor GINFES. O cliente é optante do simples nacional e o provedor exige o preenchimento da aliquota com valor zero. Porém depois de atualizar o ACBR a tag da alíquota simplesmente sumiu. Fiz um teste informando alíquota com valor 2 e o valor do iss zerado e consegui autorizar. A minha pergunta é como inserir aliquota zerada no xml. Desde já agradeço pela colaboração. Marcelo.
  16. Entendi, BigWings! Vou tentar aprimorar a minha programação.
  17. Olá BigWings, obrigado pelo retorno. Primeiramente, optei por utilizar o boleto em FastReports pela facilidade de se criar layouts de padrões diferentes, e no projeto do boleto em FastReports não encontrei a propriedade 'detalhamento'. Acredito que se for adicionado o 'detalhamento' no projeto não teria problema em utilizá-lo. Outra coisa, estava com o projeto ACBrBoleto desatualizado e por isso apareceram as diferenças que você apontou. A solicitação que estou fazendo é apenas incluir 'frxRich' na 'uses' da unit 'ACBrBoletoFCFR.PAS'. Assim torna-se possível utilizar o objeto RichText para gerar uma carta formatada. Verifique se é viável a minha solicitação. Desde já agradeço. Estou enviando a unit modificada. ACBrBoletoFCFR.pas
  18. Prezados, surgiu a necessidade de criar um boleto com uma carta anexada. Então utilizamos como base o Boleto_Carne.fr3 e montamos o Boleto_Carne_Carta.fr3 inserindo um objeto do tipo RichText que carrega em tempo de execução o arquivo .\Carta_boleto.rtf Para fazer funcionar foi necessário incluir na cláusula USES da unit ACBrBoletoFCFR.PAS a classe frxRich (vide linha 60). Será que vocês poderiam incluir a alteração da unit ACBrBoletoFCFR.PAS no projeto ACBrBoleto? Desde já agradeço pela atenção e estou anexando todos os arquivos envolvidos na implementação. ACBrBoletoFCFR.pas carta_boleto.rtf Boleto_Carne_Carta.fr3 Carta_boleto_pdf.pdf
  19. Boa noite, Jeferson01/Jperim, Conseguiram gerar a NFS-e para a Serra/ES. Também estou precisando de gerar nota para a Serra/ES. Podem disponibilizar o que já conseguiu para testar aqui? Obrigado!
  20. Olá Régys, obrigado pelo incentivo! Estamos aqui é pra isso mesmo. Entretanto tenho pouca experiência em fazer 'parse' de página html (não sei se é assim que se diz) e estou num sufoco grande. Passe algumas dicas (se puder, das grandes!) e vamos tentar propor alguma solução.
  21. Bom dia! Estou tentando utilizar o ACBrCotacao porém encontrei o seguinte problema no programa de exemplo: Unit: ACBrCotacao function TACBrCotacao.GetURLMoedas: String; Esta função está esperando receber um arquivo .cvs porém está sendo retornado um arquivo .html e por isso está gerando erro na consulta da cotação. Vocês podem verificar por favor. Obrigado,
  22. Boa tarde, Ítalo. Obrigado pelo retorno. Estou precisando das funcionalidades da NFS-e da SERRA/ES e não temoscompetência para fazer essa implementação. Quem poderia me ajudar nesse processo?
  23. Olá Isaque! Obrigado pela orientação. Após analisar os fontes, localizei a unit ACBrProvedorSMARAPD.pas dentro da pasta PROVEDOR, porém não vi como ela está sendo utilizada no projeto da NFS-e. No arquivos CIDADES.INI não encontrei nenhum outro município que utilize o provedor SMARAPD. Lendo os posts desse tópico, vi que o Claudemir estava tentando padronizar o código criado pelo Cloudcon. Houve algum avanço nesse sentido, Claudemir ou Cloudcon?
  24. Boa tarde a todos! Estou precisando de usar a NFS-e do município da SERRA/ES. Já descobri que o provedor é SMARPD. Alguém já está utilizando NFS-e desse provedor? Alguém pode me ajudar?
  25. Pessoal, obrigado pelos esclarecimentos. Entendi que o XML gerado pelo fornecedor do meu cliente está fora da especificação, APESAR DE 'FUNCIONAR'!!! Formatação interna e caracteres inválidos são alguns pontos que devem estar padronizados de acordo com a especificação. Gostaria de agradecer a todos pela colaboração, e dou o assunto por encerrado. (só não sei como se encerra o assunto aqui na ferramenta). Atenciosamente, Marcelo Gonçalves.
×
×
  • 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.