Ir para conteúdo
  • Cadastre-se

Antonio Marcelo

Membros
  • Total de ítens

    20
  • Registro em

  • Última visita

Tudo que Antonio Marcelo postou

  1. Prezada Juliana Fiz as alteração, mas acredito que possam não estar convenientes com o projeto me desculpem porque foi uma solução emergencial, vou analisar com mais calma e implementar nos padrões do projeto Da forma como está vai considerar as instruções do trailler Como especificado no layout em anexo: "Primeira instrução codificada: Regras de impressão de mensagens nos boletos: * Primeira instrução (SEQ 34) = 00 e segunda (SEQ 35) = 00, não imprime nada. * Primeira instrução (SEQ 34) = 01 e segunda (SEQ 35) = 01, desconsidera-se as instruções CNAB e imprime as mensagens relatadas no trailler do arquivo. * Primeira e segunda instrução diferente das situações acima, imprimimos o conteúdo CNAB: function TACBrBancoob.GerarRegistroTransacao400(ACBrTitulo :TACBrTitulo): String; .. begin .. with ACBrBoleto do begin .. ATipoAceite + // Identificação FormatDateTime( 'ddmmyy', DataDocumento ) + // 32 Data de Emissão IntToStrZero( 1, 2) + // 33 Primeira instrução (SEQ 34) = 00 e segunda (SEQ 35) = 00, não imprime nada. IntToStrZero( 1, 2) + // 34 Primeira instrução (SEQ 34) = 00 e segunda (SEQ 35) = 00, não imprime nada. IntToStrZero( 0, 6) E também fiz as alterações no rodapé: function TACBrBancoob.GerarRegistroTrailler400( ARemessa: TStringList ): String; var I: Integer; Mensagem: String; begin Result:= UpperCase(Result); for I := 0 to fMensagem.Count - 1 do Mensagem:= Mensagem + padL(fMensagem.Strings[I], 40, ' '); Result:= '9' + // ID Registro Space(193) + // Brancos padL(Copy(Mensagem, 1, length(Mensagem)), 200, ' ') + IntToStrZero( ARemessa.Count + 1, 6); // Contador de Registros Result:= UpperCase(Result); end; O tratamento das mensagens de transação também foi alterada segue o arquivo em anexo. Da forma como estava também precisava ser corrigido if length(MensagemCedente) > 60 then MensagemCedente:= copy(MensagemCedente,1,60); Veja que é carregado 60 posições para a variável MensagemCedente, mas o tamanho do campo é 40 e essa variável não é aproveitada posteriormente. [attachment=0]ACBrBancoob.pas[/attachment] [attachment=1]Layouts para troca de informações.zip[/attachment]
  2. Bom dia Juliana Verificando o Layout do Bancoob pude notar que no arquivo remessa gerado, algumas informações não estão sendo enviadas: CNAB400 :multa, juros e desconto. CNAB240: multa. Por favor me avise se estou equivocado, do contrário vou fazer as alterações necessárias.
  3. Antonio Marcelo

    Layout Bancoob

    Olá, Tive que fazer alguns ajustes na homologação com o Bancoob, segue em anexo arquivo com alterações. ACBrBancoob.pas
  4. Boa tarde Bruno Você alterou apenas o layout? Se você não incluiu nenhum campo novo não precisa mexer no componente. Verifique se o nome do arquivo que você alterou está correto quando passa para o componente na propriedade FastReportFile. Caso não consiga resolver me passa mais detalhes
  5. Para atender essa funcionalidade do Banco do Brasil function TACBrBancoBrasil.GerarRegistroHeader240(NumeroRemessa : Integer): String; var ATipoInscricao,CNPJCIC: string; aAgencia: String; aConta: String; aModalidade: String; begin with ACBrBanco.ACBrBoleto.Cedente do begin case TipoInscricao of pFisica : ATipoInscricao := '1'; pJuridica: ATipoInscricao := '2'; pOutras : ATipoInscricao := '3'; end; CNPJCIC := OnlyNumber(CNPJCPF); aAgencia:= IntToStrZero(StrToIntDef(trim(Agencia),0),5); aConta := IntToStrZero(StrToIntDef(trim(Conta),0),12); aModalidade := IntToStrZero(StrToIntDef(trim(Modalidade),0),3); { 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 padL('', 9, ' ') + //9 a 17 Uso exclusivo FEBRABAN/CNAB ATipoInscricao + //18 - Tipo de inscrição do cedente padR(CNPJCIC, 14, '0') + //19 a 32 -Número de inscrição do cedente padR(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 [b] IfThen(ACBrBanco.ModoTeste, aModalidade+'TS', aModalidade+' ')+//48 a 52 - Variacao Carteira[/b] aAgencia + //53 a 57 - Código da agência do cedente padL(AgenciaDigito, 1 , '0') + //58 - Dígito da agência do cedente aConta + //59 a 70 - Número da conta do cedente padL(ContaDigito, 1, '0') + //71 - Dígito da conta do cedente ' ' + //72 - Dígito verificador da agência / conta padL(Nome, 30, ' ') + //73 a 102 - Nome do cedente padL('BANCO DO BRASIL', 30, ' ') + //103 a 132 - Nome do banco padL('', 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 padL(IntToStr(NumeroRemessa), 6, '0') + //158 a 163 - Número seqüencial do arquivo '030' + //164 a 166 - Número da versão do layout do arquivo padL('', 5, '0') + //167 a 171 - Densidade de gravação do arquivo (BPI) padL('', 20, ' ') + // 172 a 191 - Uso reservado do banco padL('', 20, '0') + // 192 a 211 - Uso reservado da empresa padL('', 11, ' ') + // 212 a 222 - 11 brancos 'CSP' + // 223 a 225 - 'CSP' padL('', 3, '0') + // 226 a 228 - Uso exclusivo de Vans padL('', 2, ' ') + // 229 a 230 - Tipo de servico padL('', 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 '020' + //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 padR(CNPJCIC, 15, '0') + //19 a 32 -Número de inscrição do cedente padR(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 padL(AgenciaDigito, 1 , '0') + //58 - Dígito da agência do cedente aConta + //59 a 70 - Número da conta do cedente padL(ContaDigito, 1, '0') + //71 - Dígito da conta do cedente ' ' + //72 - Dígito verificador da agência / conta padL(Nome, 30, ' ') + //73 a 102 - Nome do cedente padL('', 40, ' ') + //104 a 143 - Mensagem 1 para todos os boletos do lote padL('', 40, ' ') + //144 a 183 - Mensagem 2 para todos os boletos do lote padL(IntToStr(NumeroRemessa), 8, '0') + //184 a 191 - Número do arquivo FormatDateTime('ddmmyyyy', Now) + //192 a 199 - Data de geração do arquivo padL('', 8, '0') + //200 a 207 - Data do crédito - Só para arquivo retorno padL('', 33, ' '); //208 a 240 - Uso exclusivo FEBRABAN/CNAB end; end;
  6. Correção nos arquivos ACBrBancoBrasil.pas ACBrBoleto.pas
  7. Antonio Marcelo

    Modo Teste

    Adicionei a property ModoTeste na classe TACBrBanco, precisei para o Banco do Brasil Seguem os arquivos em anexo ACBrBancoBrasil.pas ACBrBoleto.pas
  8. Antonio Marcelo

    Layout boleto

    Fiz algumas modificações no arquivo BoletoFR.fr3, adicionando o endereço do cedente e a linha digitável no recibo do sacado. Na homologação do banco do Brasil me pediram isso. Segue em anexo BoletoFR.zip
  9. procedure TfrmRetorno.act_CarregaArquivoExecute(Sender: TObject); var I: Integer; Titulo: TACBrTitulo; begin If not OpenDialog1.Execute Then Exit; try ACBrBoleto1.LeCedenteRetorno:= True; ACBrBoleto1.NomeArqRetorno:= OpenDialog1.FileName; //Nesse momento você carrega os titulos ACBrBoleto1.LerRetorno; for I := 0 to DM_Cliente.ACBrBoleto1.ListadeBoletos.Count - 1 do begin Titulo:= ACBrBoleto1.ListadeBoletos.Objects[I]; //Agora é só usar as property do objeto NumDocto := Titulo.NumeroDocumento; Vencimento:= Titulo.Vencimento; Etc... end; end; Espero ter ajudado
  10. Dá uma olhada nesses arquivos que o duilio postou isso já foi resolvido. download/file.php?id=957
  11. Bom dia duilio, aproveitando que você postou sua unit, se o pessoal também quiser verificar e adicionar ao svn function TACBrBancoBrasil.CodMotivoRejeicaoToDescricao( const TipoOcorrencia: TACBrTipoOcorrencia; CodMotivo: Integer): String; begin case TipoOcorrencia of toRetornoRegistroRecusado: case CodMotivo of 01: Result:='01-Identificação inválida' ; 02: Result:='02-Variação da carteira inválida' ; 03: Result:='03-Valor dos juros por um dia inválido' ; 04: Result:='04-Valor do desconto inválido' ; 05: Result:='05-Espécie de título inválida para carteira' ; 06: Result:='06-Espécie de valor variável inválido' ; 07: Result:='07-Prefixo da agência usuária inválido' ; 08: Result:='08-Valor do título/apólice inválido' ; 09: Result:='09-Data de vencimento inválida' ; 10: Result:='10-Fora do prazo' ; 11: Result:='11-Inexistência de margem para desconto' ; 12: Result:='12-O Banco não tem agência na praça do sacado' ; 13: Result:='13-Razões cadastrais' ; 14: Result:='14-Sacado interligado com o sacador' ; 15: Result:='15-Título sacado contra orgão do Poder Público' ; 16: Result:='16-Título preenchido de forma irregular' ; 17: Result:='17-Título rasurado' ; 18: Result:='18-Endereço do sacado não localizado ou incompleto' ; 19: Result:='19-Código do cedente inválido' ; 20: Result:='20-Nome/endereco do cliente não informado /ECT/' ; 21: Result:='21-Carteira inválida' ; 22: Result:='22Quantidade de valor variável inválida' ; 23: Result:='23-Faixa nosso número excedida' ; 24: Result:='24-Valor do abatimento inválido' ; 25: Result:='25-Novo número do título dado pelo cedente inválido' ; 26: Result:='26-Valor do IOF de seguro inválido' ; 27: Result:='27-Nome do sacado/cedente inválido ou não informado' ; 28: Result:='28-Data do novo vencimento inválida' ; 29: Result:='29-Endereco não informado' ; 30: Result:='30-Registro de título já liquidado' ; 31: Result:='31-Numero do bordero inválido' ; 32: Result:='32-Nome da pessoa autorizada inválido' ; 33: Result:='33-Nosso número já existente' ; 34: Result:='34-Numero da prestação do contrato inválido' ; 35: Result:='35-Percentual de desconto inválido' ; 36: Result:='36-Dias para fichamento de protesto inválido' ; 37: Result:='37-Data de emissão do título inválida' ; 38: Result:='38-Data do vencimento anterior a data da emissão do título' ; 39: Result:='39-Comando de alteração indevido para a carteira' ; 40: Result:='40-Tipo de moeda inválido' ; 41: Result:='41-Abatimento não permitido' ; 42: Result:='42-CEP do sacado inválido /ECT/' ; 43: Result:='43-Codigo de unidade variavel incompativel com a data emissão do título' ; 44: Result:='44-Dados para debito ao sacado inválidos' ; 45: Result:='45-Carteira' ; 46: Result:='46-Convenio encerrado' ; 47: Result:='47-Título tem valor diverso do informado' ; 48: Result:='48-Motivo de baixa inválido para a carteira' ; 49: Result:='49-Abatimento a cancelar não consta do título' ; 50: Result:='50-Comando incompativel com a carteira' ; 51: Result:='51-Codigo do convenente inválido' ; 52: Result:='52-Abatimento igual ou maior que o valor do título' ; 53: Result:='53-Título já se encontra situação pretendida' ; 54: Result:='54-Título fora do prazo admitido para a conta 1' ; 55: Result:='55-Novo vencimento fora dos limites da carteira' ; 56: Result:='56-Título não pertence ao convenente' ; 57: Result:='57-Variação incompativel com a carteira' ; 58: Result:='58-Impossivel a transferencia para a carteira indicada' ; 59: Result:='59-Título vencido em transferencia para a carteira 51' ; 60: Result:='60-Título com prazo superior a 179 dias em transferencia para carteira 51' ; 61: Result:='61-Título já foi fichado para protesto' ; 62: Result:='62-Alteração da situação de debito inválida para o codigo de responsabilidade' ; 63: Result:='63-DV do nosso número inválido' ; 64: Result:='64-Título não passivel de debito/baixa - situação anormal' ; 65: Result:='65-Título com ordem de não protestar-não pode ser encaminhado a cartorio' ; 67: Result:='66-Título/carne rejeitado' ; 80: Result:='80-Nosso número inválido' ; 81: Result:='81-Data para concessão do desconto inválida' ; 82: Result:='82-CEP do sacado inválido' ; 83: Result:='83-Carteira/variação não localizada no cedente' ; 84: Result:='84-Título não localizado na existencia' ; 99: Result:='99-Outros motivos' ; end; end; end; procedure TACBrBancoBrasil.LerRetorno400(ARetorno: TStringList); var Titulo : TACBrTitulo; ContLinha, CodOcorrencia, CodMotivo, i, MotivoLinha : Integer; CodMotivo_19, rAgencia, rDigitoAgencia, rConta, rDigitoConta, Linha, rCedente, rCNPJCPF:String; begin ContLinha := 0; if StrToIntDef(copy(ARetorno.Strings[0],77,3),-1) <> Numero then raise Exception.Create(ACBrStr(ACBrBanco.ACBrBoleto.NomeArqRetorno + 'não é um arquivo de retorno do '+ Nome)); rCedente := trim(Copy(ARetorno[0],47,30)); rAgencia := trim(Copy(ARetorno[1],18,4)); rDigitoAgencia:= Copy(ARetorno[1],22,1); rConta := trim(Copy(ARetorno[1],23,8)); rDigitoConta := Copy(ARetorno[1],31,1); ACBrBanco.ACBrBoleto.NumeroArquivo := StrToIntDef(Copy(ARetorno[0],101,7),0); ACBrBanco.ACBrBoleto.DataArquivo := StringToDateTimeDef(Copy(ARetorno[0],95,2)+'/'+ Copy(ARetorno[0],97,2)+'/'+ Copy(ARetorno[0],99,2),0, 'DD/MM/YY' ); case StrToIntDef(Copy(ARetorno[1],2,2),0) of 11: rCNPJCPF := Copy(ARetorno[1],7,11); 14: rCNPJCPF := Copy(ARetorno[1],4,14); else rCNPJCPF := Copy(ARetorno[1],4,14); end; with ACBrBanco.ACBrBoleto do begin if (not LeCedenteRetorno) and ((rAgencia <> OnlyNumber(Cedente.Agencia)) or (rConta <> OnlyNumber(Cedente.Conta))) then raise Exception.Create(ACBrStr('Agencia\Conta do arquivo inválido')); Cedente.Nome := rCedente; If Copy(rCNPJCPF,1,10) <> '0000000000' Then Cedente.CNPJCPF := rCNPJCPF; Cedente.Agencia := rAgencia; Cedente.AgenciaDigito:= rDigitoAgencia; Cedente.Conta := rConta; Cedente.ContaDigito := rDigitoConta; case StrToIntDef(Copy(ARetorno[1],2,2),0) of 11: Cedente.TipoInscricao:= pFisica; 14: Cedente.TipoInscricao:= pJuridica; else Cedente.TipoInscricao := pOutras; end; ACBrBanco.ACBrBoleto.ListadeBoletos.Clear; end; ACBrBanco.TamanhoMaximoNossoNum := 20; for ContLinha := 1 to ARetorno.Count - 2 do begin Linha := ARetorno[ContLinha] ; if Copy(Linha,1,1)<> '7' then Continue; Titulo := ACBrBanco.ACBrBoleto.CriarTituloNaLista; with Titulo do begin SeuNumero := copy(Linha,39,25); NumeroDocumento := copy(Linha,117,10); OcorrenciaOriginal.Tipo := CodOcorrenciaToTipo(StrToIntDef( copy(Linha,109,2),0)); CodOcorrencia := StrToInt(IfThen(copy(Linha,109,2) = '00','00',copy(Linha,109,2))); if(CodOcorrencia = 3)then begin CodMotivo:= StrToInt(IfThen(copy(Linha,MotivoLinha,2) = '00','00',copy(Linha,87,2))); MotivoRejeicaoComando.Add(copy(Linha,87,2)); DescricaoMotivoRejeicaoComando.Add(CodMotivoRejeicaoToDescricao(OcorrenciaOriginal.Tipo,CodMotivo)); end; DataOcorrencia := StringToDateTimeDef( Copy(Linha,111,2)+'/'+ Copy(Linha,113,2)+'/'+ Copy(Linha,115,2),0, 'DD/MM/YY' ); Vencimento := StringToDateTimeDef( Copy(Linha,147,2)+'/'+ Copy(Linha,149,2)+'/'+ Copy(Linha,151,2),0, 'DD/MM/YY' ); ValorDocumento := StrToFloatDef(Copy(Linha,153,13),0)/100; ValorIOF := StrToFloatDef(Copy(Linha,215,13),0)/100; ValorAbatimento := StrToFloatDef(Copy(Linha,228,13),0)/100; ValorDesconto := StrToFloatDef(Copy(Linha,241,13),0)/100; ValorRecebido := StrToFloatDef(Copy(Linha,254,13),0)/100; ValorMoraJuros := StrToFloatDef(Copy(Linha,267,13),0)/100; ValorOutrosCreditos := StrToFloatDef(Copy(Linha,280,13),0)/100; NossoNumero := Copy(Linha,64,17); Carteira := Copy(Linha,92,3); // ValorDespesaCobranca := StrToFloatDef(Copy(Linha,176,13),0)/100; ValorOutrasDespesas := StrToFloatDef(Copy(Linha,189,13),0)/100; if StrToIntDef(Copy(Linha,296,6),0) <> 0 then DataCredito:= StringToDateTimeDef( Copy(Linha,176,2)+'/'+ Copy(Linha,178,2)+'/'+ Copy(Linha,180,2),0, 'DD/MM/YY' ); end; end; ACBrBanco.TamanhoMaximoNossoNum := 10; end;
  12. Obrigado duiliolobianco suas alterações me ajudaram muito. Se tiver novas implementações, e puder disponibilizar fico muito agradecido.
  13. Pessoal a segundo resposta enviada pela Equipe de Testes de Layout Banco do Brasil o Layout disponível no site está errado.
  14. Pessoal um email para a Equipe de Testes de Layout do Banco do Brasil referente a dúvida do poste anterior Assim que tiver a resposta posto aqui.
  15. Provisóriamente alterei assim: padL( trim(Sacado.Logradouro)+', '+trim(Sacado.Numero), 40) +// Endereço do sacado padL( trim(Sacado.Bairro), 12) +// Bairro do sacado Se estiver fazendo algo errado ou se alguém já resolveu isso sem ter que alterar os fontes com componente, favor informar. Obrigado
  16. Bom dia Juliana só para não sair fazendo alterações desnecessárias nos códigos do componente. O banco me retornou o seguinte erro no layout cnab400 Verificamos que o bairro do sacado começou a ser informado no campo destinado ao endereço. Orientamos tamanho e localização dos campos conforme abaixo: Pos. 275 a 314 - Endereço do sacado (40 posições) Pos. 315 a 326 - Bairro do sacado (12 posições) Porem no código está assim: padL(trim(Sacado.Logradouro) + ', ' + trim(Sacado.Numero) + ' '+ trim(Sacado.Bairro), 52) + // Endereço do sacado Ou seja mesmo que eu trate o Logradouro com 40 posições, no código do componente ele remove. Pergunto já passaram por essa situação antes? Obs: Foi o único erro detectado.
  17. Não se serve para qualquer região mas os telefones que usei para contato com o banco foram: 3003 0500 suporte BB Cobrança 0800 729 0500 Gerenciador
  18. Juliana obrigado pela informação Vou desfazer as alterações Outra dúvida O Banco do Brasil me retornou essa mensagem da análise do arquivo. ANÁLISE DOS BOLETOS: FICHA DE COMPENSAÇÃO / RECIBO DO SACADO: - Campo “Espécie Doc.”: informar DM (que corresponde ao código 02 informado no arquivo remessa) Como resolver isso?
  19. Pois é dioorox como a Juliana disse tem que usar o cnab400 estou buscando essa informação com o banco O arquivo que alterei foi o ..ACBR\Fontes\ACBrBoleto\ACBrBancoBrasil.pas a partir da linha 351 Result:= IntToStrZero(ACBrBanco.Numero, 3) + //1 a 3 - Código do banco '0001' + //4 a 7 - Lote de serviço '3' + //8 - Tipo do registro: Registro detalhe [b]IfThen(Length(ACBrBoleto.Cedente.Convenio) = 7,IntToStrZero(2 * (ACBrBoleto.ListadeBoletos.IndexOf(ACBrTitulo)+ 1) - 1 ,5), IntToStrZero(ACBrBoleto.ListadeBoletos.IndexOf(ACBrTitulo)+ 1 ,5)) + //9 a 13 - Número seqüencial do registro no lote - Cada título tem 2 registros (P e Q)[/b] 'P' + //14 - Código do segmento do registro detalhe ' ' + //15 - Uso exclusivo FEBRABAN/CNAB: Branco ATipoOcorrencia + //16 a 17 - Código de movimento aAgencia + //18 a 22 - Agência mantenedora da conta padL(ACBrBoleto.Cedente.AgenciaDigito, 1 , '0') + //23 -Dígito verificador da agência aConta + //24 a 35 - Número da conta corrente padL(ACBrBoleto.Cedente.ContaDigito, 1, '0') + //36 - Dígito verificador da conta ' ' + //37 - Dígito verificador da agência / conta padL(ANossoNumero, 20, ' ') + //38 a 57 - Nosso número - identificação do título no banco IfThen(Length(ACBrBoleto.Cedente.Convenio) = 7,'7','1') + //58 - Cobrança Simples '1' + //59 - Forma de cadastramento do título no banco: com cadastramento '1' + //60 - Tipo de documento: Tradicional ATipoBoleto + //61 a 62 - Quem emite e quem distribui o boleto? padL(NumeroDocumento, 10, '0') + '00000' + //63 a 72 - Número que identifica o título na empresa [ Alterado conforme instruções da CSO Brasília ] {27-07-09} FormatDateTime('ddmmyyyy', Vencimento) + //78 a 85 - Data de vencimento do título IntToStrZero( round( ValorDocumento * 100), 15) + //86 a 100 - Valor nominal do título '000000' + //101 a 105 - Agência cobradora + Digito. Se ficar em branco, a caixa determina automaticamente pelo CEP do sacado padL(EspecieDoc,2) + //107 a 108 - Espécie do documento ATipoAceite + //109 - Identificação de título Aceito / Não aceito FormatDateTime('ddmmyyyy', DataDocumento) + //110 a 117 - Data da emissão do documento [b]IfThen(Length(ACBrBoleto.Cedente.Convenio) = 7, IfThen(ValorMoraJuros > 0, '2', '1'),IfThen(ValorMoraJuros > 0, '1', '0')) + //118 - Código de juros de mora: Valor por dia[/b] ADataMoraJuros + //119 a 126 - Data a partir da qual serão cobrados juros IfThen(ValorMoraJuros > 0, IntToStrZero( round(ValorMoraJuros * 100), 15), padL('', 15, '0')) + //127 a 141 - Valor de juros de mora por dia IfThen(ValorDesconto > 0, IfThen(DataDesconto > 0, '1','4'), '0') + //142 - Código de desconto: 1 - Valor fixo até a data informada 4-Desconto por dia de antecipacao 0 - Sem desconto ADataDesconto + //143 a 150 - Data do desconto IfThen(ValorDesconto > 0, IntToStrZero( round(ValorDesconto * 100), 15), padL('', 15, '0')) + //151 a 165 - Valor do desconto por dia IntToStrZero( round(ValorIOF * 100), 15) + //166 a 180 - Valor do IOF a ser recolhido IntToStrZero( round(ValorAbatimento * 100), 15) + //181 a 195 - Valor do abatimento padL(SeuNumero, 25, ' ') + //196 a 220 - Identificação do título na empresa IfThen((DataProtesto <> null) and (DataProtesto > Vencimento), '1', '3') + //221 - Código de protesto: Protestar em XX dias corridos IfThen((DataProtesto <> null) and (DataProtesto > Vencimento), padL(IntToStr(DaysBetween(DataProtesto, Vencimento)), 2, '0'), '00') + //222 a 223 - Prazo para protesto (em dias corridos) '2' + //224 - Campo não tratado pelo BB [ Alterado conforme instruções da CSO Brasília ] {27-07-09} '000' + //225 a 227 - Campo não tratado pelo BB [ Alterado conforme instruções da CSO Brasília ] {27-07-09} '09' + //228 a 229 - Código da moeda: Real padL('', 10 , '0') + //230 a 239 - Uso exclusivo FEBRABAN/CNAB ' '; //240 - Uso exclusivo FEBRABAN/CNAB {SEGMENTO Q} Result:= Result + #13#10 + IntToStrZero(ACBrBanco.Numero, 3) + //Código do banco '0001' + //Número do lote '3' + //Tipo do registro: Registro detalhe [b]IfThen(Length(ACBrBoleto.Cedente.Convenio) = 7,IntToStrZero(2 * (ACBrBoleto.ListadeBoletos.IndexOf(ACBrTitulo)+ 1 ),5),IntToStrZero((2 * ACBrBoleto.ListadeBoletos.IndexOf(ACBrTitulo))+ 2 ,5)) + //Número seqüencial do registro no lote - Cada título tem 2 registros (P e Q)[/b] 'Q' + //Código do segmento do registro detalhe ' ' + //Uso exclusivo FEBRABAN/CNAB: Branco ATipoOcorrencia + //Tipo Ocorrencia {Dados do sacado} IfThen(Sacado.Pessoa = pJuridica,'2','1') + //Tipo inscricao padR(OnlyNumber(Sacado.CNPJCPF), 15, '0') + padL(Sacado.NomeSacado, 40, ' ') + padL(Sacado.Logradouro +' '+ Sacado.Numero +' '+ Sacado.Complemento , 40, ' ') + padL(Sacado.Bairro, 15, ' ') + //padR(Sacado.CEP, 8, '0') + padR(OnlyNumber(Sacado.CEP), 8, '0') + //padR(Sacado.Cidade, 15, ' ') + padL(Sacado.Cidade, 15, ' ') + padL(Sacado.UF, 2, ' ') + {Dados do sacador/avalista} '0' + //Tipo de inscrição: Não informado padL('', 15, '0') + //Número de inscrição padL('', 40, ' ') + //Nome do sacador/avalista padL('', 3, '0') + //Uso exclusivo FEBRABAN/CNAB padL('',20, ' ') + //Uso exclusivo FEBRABAN/CNAB padL('', 8, ' '); //Uso exclusivo FEBRABAN/CNAB end;
  20. Olá well Tive o mesmo problema resolvi alterando as linhas IntToStrZero(ACBrBoleto.ListadeBoletos.IndexOf(ACBrTitulo)+ 1 ,5) + Para IntToStrZero(2 * (ACBrBoleto.ListadeBoletos.IndexOf(ACBrTitulo)+ 1) - 1 ,5) + e alinha IntToStrZero((2 * ACBrBoleto.ListadeBoletos.IndexOf(ACBrTitulo))+ 2 ,5) + Para IntToStrZero(2 * (ACBrBoleto.ListadeBoletos.IndexOf(ACBrTitulo)+ 1 ),5) +
×
×
  • 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.