Jump to content

click.png

click.png

click.png

click.png

click.png

click.png

click.png click.png click.png

click.png

click.png

click.png

click.png

click.png

click.png

Mailson.Dragon

Membros
  • Posts

    14
  • Joined

  • Last visited

Recent Profile Visitors

278 profile views

Mailson.Dragon's Achievements

Apprentice

Apprentice (3/14)

  • First Post
  • Collaborator Rare
  • Week One Done
  • One Month Later
  • One Year In

Recent Badges

8

Reputation

1

Community Answers

  1. Me desculpa, não estou entendendo qual arquivo é esse. Você fala ACBrBancoSafra.pas? ACBrBancoSafra.pas
  2. Modifiquei ...\ACBr\Fontes\ACBrBoleto\ACBrBancoSafra.pas A partir da linha 810 segmentoR := IntToStrZero(ACBrBanco.Numero, 3) + // 001 - 003 / Código do Banco na compensação '0001' + // 004 - 007 / Numero do lote remessa '3' + // 008 - 008 / Tipo de registro IntToStrZero(FSequencia ,5) + // 009 - 013 / Número seqüencial do registro no lote 'R' + // 014 - 014 / Cód. Segmento do registro detalhe Space(1) + // 015 - 015 / Reservado (uso Banco) sCodMovimento + // 016 - 017 / Código de movimento remessa '0' + // 018 - 018 / Código do desconto 2 PadLeft('', 8, '0') + // 019 - 026 / Data do desconto 2 IntToStrZero(0, 15) + // 027 - 041 / Valor/Percentual a ser concedido '0' + // 042 - 042 / Código do desconto 3 PadLeft('', 8, '0') + // 043 - 050 / Data do desconto 3 IntToStrZero(0, 15) + // 051 - 065 / Valor/Percentual a ser concedido {sTipoDesconto + // 042 - 042 1 = Valor Fixo ate a Data Informada / 2 = Percentual ate a Data Informada / 3 = Valor por Antecipação dia Corrido // 5 = Percentual por Antecipação dia corrido IfThen((ACBrTitulo.ValorDesconto > 0), FormatDateTime('ddmmyyyy', ACBrTitulo.DataDesconto), '00000000') + // 043 - 050 Campo numerico e deve ser preenchido, caso não tenha desconto manter o campo zerado. DDMMAAAA IntToStrZero(round(ACBrTitulo.ValorDesconto), 15) + // 051 - 065 / Valor/Percentual a ser aplicado} IfThen((ACBrTitulo.PercentualMulta > 0), IfThen(ACBrTitulo.MultaValorFixo,'1','2'), '0') + // 66 - 66 1-Cobrar Multa Valor Fixo / 2-Percentual / 0-Não cobrar multa IfThen((ACBrTitulo.PercentualMulta > 0), FormatDateTime('ddmmyyyy', ACBrTitulo.DataMulta), '00000000') + // 67 - 74 Se cobrar informe a data para iniciar a cobrança ou informe zeros se não cobrar IfThen((ACBrTitulo.PercentualMulta > 0), IntToStrZero(round(ACBrTitulo.PercentualMulta * 100), 15), PadRight('', 15, '0')) + // 075 - 089 / Valor/Percentual a ser aplicado Space(10) + // 090 - 099 / Reservado (uso Banco) MontarInstrucoes1 + // 100 - 139 / Mensagem 3 // 140 - 179 / Mensagem 4 Space(61) ; // 180 - 240 / Reservado (uso Banco) cb070701.rem VRTOFI200707175710442.pdf 500.pdf
  3. Sim, mudar para não informar o desconto 2 e 3 que o banco safra não trata essas informações, hoje na unit do ACBr está informando desconto 1 que o o único aceitável, desconto 2 em branco e desconto 3 que é o mesmo do desconto 1, resumindo aceitam apenas o desconto 1. Estou homologando essa carteira, a equipe da ACBr já corrigiram outras pendencias, mais ainda falta essa. Retorno do banco: Os títulos foram rejeitados pelo motivo "115-SEQUENCIA DO DESCONTO INVALIDA". Olhando o arquivo, consta que a empresa está enviando duas formas de desconto, porém, está utilizando o primeiro campo e o terceiro campo de Desconto, pulando o campo 2.
  4. Por favor, analisem esse manual de implantação, onde na pagina 15 informa que o Banco Safra não trata desconto 2 e desconto 3 no segmento R. Especificamente na function TACBrBancoSafra.GerarRegistroTransacao240 Linha 810 500.pdf
  5. Meu problema é com o código da agência, resolvi quando mudei a função "MontarCodigoBarras", se poderem atualiza-la ficarei grato. function TACBrBancoSafra.MontarCodigoBarras(const ACBrTitulo: TACBrTitulo): string; var CodigoBarras, FatorVencimento, DigitoCodBarras, valorDocumento, agencia, {agenciaDigito, }conta, ContaDigito, NossoNumero: string; begin with ACBrTitulo.ACBrBoleto do begin FatorVencimento := CalcularFatorVencimento(ACBrTitulo.Vencimento); valorDocumento := IntToStrZero(Round(ACBrTitulo.ValorDocumento * 100), 10); agencia := PadLeft(RightStr(Cedente.Agencia,fpTamanhoAgencia), fpTamanhoAgencia, '0'); //agenciaDigito := PadLeft(Cedente.AgenciaDigito, 1, '0'); conta := Cedente.Conta; ContaDigito := PadLeft(Cedente.ContaDigito, 1, '0'); NossoNumero := PadLeft(RightStr(ACBrTitulo.NossoNumero,fpTamanhoMaximoNossoNum),fpTamanhoMaximoNossoNum,'0'); CodigoBarras := IntToStr(Banco.Numero) + '9' + FatorVencimento + valorDocumento + '7' + agencia + {Trim(agenciaDigito) +} Trim(conta) + ContaDigito + NossoNumero + '2'; DigitoCodBarras := CalcularDigitoCodigoBarras(CodigoBarras); end; Result := IntToStr(Numero) + '9' + DigitoCodBarras + Copy(CodigoBarras, 5, 39); end;
  6. Boa tarde, estou com o mesmo problema na formatação da agência, seque em anexo o manual do banco onde informa a agência com 5 dígitos sem a necessidade do digito verificador. Pude observar que no arquivo ..\Fontes\ACBrBoleto\ACBrBancoSafra.pas A função "MontarCodigoBarras", trata agencia com 4 dígitos mais 1 digito verificador Já na função: "GerarRegistroHeader240", Posições 53-57 trata a agencia com 5 dígitos Gerando inconsistências nas informações. Ex: minha agencia é "19700" 500.pdf
  7. Está faltando a versão do lote 087 e versão do arquivo 045 ... VersaoArquivo := LayoutVersaoArquivo; if not (VersaoArquivo in [030, 040, 080, 082, 083, 084, 087]) then VersaoArquivo := 030; ... VersaoLote := LayoutVersaoLote; case VersaoArquivo of 030: if VersaoLote <> 020 then VersaoLote := 020; 040: if VersaoLote <> 030 then VersaoLote := 030; 080: if VersaoLote <> 040 then VersaoLote := 040; 082: if VersaoLote <> 041 then VersaoLote := 041; 083: if VersaoLote <> 042 then VersaoLote := 042; 084: if VersaoLote <> 043 then VersaoLote := 043; 087: if VersaoLote <> 045 then VersaoLote := 045; else VersaoLote := 000; end; ...
  8. Sugestão de atualização da função ACBrBancoBrasil.pas/GerarRegistroHeader240 Leiaute CNAB 240 Posições Header de Arquivo Posições 164 a 166 Nº da Versão do Layout do Arquivo Hoje está fixa em 030, preciso manipular esse valor conforme meu cliente, que é 087. Nas posições 223 a 225 está fixo 'CSP' -(Informar 'brancos', porém se o arquivo foi formatado com a versão do layout 030, pode ser informado 'CSP' nas posições 223 a 225, e 'zeros' nas posições 226 a 228) Header de Lote Posições 14 a 16 Nº da Versão do Layout do Lote Hoje está fixa em 020, preciso manipular esse valor conforme meu cliente, que é 045. >------------------------------------------------------------------------------------------< A seguir minhas alterações. { GERAR REGISTRO-HEADER DO ARQUIVO } Result:= IntToStrZero(ACBrBanco.Numero, 3) + // 1 a 3 - Código do banco '0000' + // 4 a 7 - Lote de serviço '0' + // 8 - Tipo de registro - Registro header de arquivo StringOfChar(' ', 9) + // 9 a 17 Uso exclusivo FEBRABAN/CNAB ATipoInscricao + // 18 - Tipo de inscrição do cedente PadLeft(OnlyNumber(CNPJCPF), 14, '0') + // 19 a 32 -Número de inscrição do cedente PadLeft(Convenio, 9, '0') + '0014' + // 33 a 45 - Código do convênio no banco [ Alterado conforme instruções da CSO Brasília ] 27-07-09 ACBrBanco.ACBrBoleto.ListadeBoletos[0].Carteira + // 46 a 47 - Carteira aModalidade + ' ' + // 48 a 52 - Variacao Carteira aAgencia + // 53 a 57 - Código da agência do cedente PadRight(AgenciaDigito, 1 , '0') + // 58 - Dígito da agência do cedente aConta + // 59 a 70 - Número da conta do cedente PadRight(ContaDigito, 1, '0') + // 71 - Dígito da conta do cedente ' ' + // 72 - Dígito verificador da agência / conta TiraAcentos(UpperCase(PadRight(Nome, 30, ' '))) + // 73 a 102 - Nome do cedente PadRight('BANCO DO BRASIL', 30, ' ') + // 103 a 132 - Nome do banco StringOfChar(' ', 10) + // 133 a 142 - Uso exclusivo FEBRABAN/CNAB '1' + // 143 - Código de Remessa (1) / Retorno (2) FormatDateTime('ddmmyyyy', Now) + // 144 a 151 - Data do de geração do arquivo FormatDateTime('hhmmss', Now) + // 152 a 157 - Hora de geração do arquivo PadLeft(IntToStr(NumeroRemessa), 6, '0') + // 158 a 163 - Número seqüencial do arquivo PadLeft(IntToStr(LayoutVersaoArquivo), 3, '0') + // 164 a 166 - Número da versão do layout do arquivo StringOfChar('0', 5) + // 167 a 171 - Densidade de gravação do arquivo (BPI) StringOfChar(' ', 20) + // 172 a 191 - Uso reservado do banco StringOfChar('0', 20) + // 192 a 211 - Uso reservado da empresa StringOfChar(' ', 11) + // 212 a 222 - 11 brancos StringOfChar(' ', 3) + // 223 a 225 - 'CSP' StringOfChar('0', 3) + // 226 a 228 - Uso exclusivo de Vans StringOfChar(' ', 2) + // 229 a 230 - Tipo de servico StringOfChar(' ', 10); // 231 a 240 - titulo em carteira de cobranca { GERAR REGISTRO-HEADER DO LOTE } Result:= Result + #13#10 + IntToStrZero(ACBrBanco.Numero, 3) + // 1 a 3 - Código do banco '0001' + // 4 a 7 - Lote de serviço '1' + // 8 - Tipo de registro - Registro header de arquivo 'R' + // 9 - Tipo de operação: R (Remessa) ou T (Retorno) '01' + // 10 a 11 - Tipo de serviço: 01 (Cobrança) '00' + // 12 a 13 - Forma de lançamento: preencher com ZEROS no caso de cobrança PadLeft(IntToStr(LayoutVersaoLote), 3, '0') + // 14 a 16 - Número da versão do layout do lote ' ' + // 17 - Uso exclusivo FEBRABAN/CNAB ATipoInscricao + // 18 - Tipo de inscrição do cedente PadLeft(OnlyNumber(CNPJCPF), 15, '0') + // 19 a 32 -Número de inscrição do cedente PadLeft(Convenio, 9, '0') + '0014' + // 33 a 45 - Código do convênio no banco [ Alterado conforme instruções da CSO Brasília ] 27-07-09 ACBrBanco.ACBrBoleto.ListadeBoletos[0].Carteira + // 46 a 47 - Carteira aModalidade + ' ' + // 48 a 52 - Variacao Carteira aAgencia + // 53 a 57 - Código da agência do cedente PadRight(AgenciaDigito, 1 , '0') + // 58 - Dígito da agência do cedente aConta + // 59 a 70 - Número da conta do cedente PadRight(ContaDigito, 1, '0') + // 71 - Dígito da conta do cedente ' ' + // 72 - Dígito verificador da agência / conta PadRight(Nome, 30, ' ') + // 73 a 102 - Nome do cedente StringOfChar(' ', 40) + // 104 a 143 - Mensagem 1 para todos os boletos do lote StringOfChar(' ', 40) + // 144 a 183 - Mensagem 2 para todos os boletos do lote PadLeft(IntToStr(NumeroRemessa), 8, '0') + // 184 a 191 - Número do arquivo FormatDateTime('ddmmyyyy', Now) + // 192 a 199 - Data de geração do arquivo StringOfChar('0', 8 ) + // 200 a 207 - Data do crédito - Só para arquivo retorno StringOfChar(' ', 33); // 208 a 240 - Uso exclusivo FEBRABAN/CNAB
  9. Conforme foi citado acima não é obrigatório o envio do endereço completo apenas o CEP, estou homologando a carteira de um cliente e deu tudo certo apenas com o CEP dele, não tivemos problemas com a ausência do endereço completo. A melhor forma e testar, pegar esses boletos e pesquisar no site do banco para visualizar a 2ª via do mesmo caso apareça é por que está registrado.
  10. Sim pelo suporte do banco descobrirão o motivo, sequencial da remessa errado ? 0800 202 1000 opção 04
  11. Olá, estou com problema nos boletos do Bradesco. Existe algum motivo para os boletos serem reconhecidos apenas nas agencias do Bradesco? Mesmo depois do registro não são reconhecidos em outros bancos CAIXA e Banco do Brasil.
  12. Olá, estou com problema nos boletos do Bradesco. Existe algum motivo para os boletos serem reconhecidos apenas nas agencias do Bradesco? Mesmo depois do registro não são reconhecidos em outros bancos CAIXA e Banco do Brasil.
×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.