Fórum Arquivo de remessa CNAB 240 #324661
03/07/2006
0
Gandalf.nho
Curtir tópico
+ 0Posts
04/07/2006
Weber
Infelizmente você não vai conseguir resolver seu problema utilizando os componentes atuais de emissao de boletos como o Delphi-Boleto, Free-Boleto e RLBoleto, você deverá desenvolver sua propria rotina.
O arquivo é um TXT normal, porém é todo formatado e deve conter informações específicas em cada posição dele.
O melhor a fazer é baixar o manual de cobrança e ler inteirinho.
Dependendo da ´influencia´ que seu cliente tem junto ao banco o gerente da conta pode te ajudar, não com o código mas sim lhe fornecendo informações importantes sobre o manual.
Boa Sorte!
Gostei + 0
04/07/2006
Adriano Santos
É isso ai Weber, você está correto. Este tipo de CNAB é bem chatinho e tem que ser feito no braço mesmo. Bom, vai precisar usar o ´esquemão´ de gravação de arquivo texto. WriteLn, num tem jeito.
Precisa ser CNAB 240 mesmo? Pq mesmo o banco do Brasil já tem o padrão 400 que é mais fácil.
Gostei + 0
04/07/2006
Gandalf.nho
Infelizmente sim, foi o padrão que a própria Caixa passou para nós.
Pelo jeito vou ter que me virar mesmo, obrigada pela ajuda.
Gostei + 0
04/07/2006
Adriano Santos
Infelizmente sim, foi o padrão que a própria Caixa passou para nós.
Pelo jeito vou ter que me virar mesmo, obrigada pela ajuda.[/quote:0c99588f2a]
Estranho eles passarem este padrão, a muitos anos já os bancos estão optando pelo formato 400, pois o 240 trabalha com 1 header, 2 details e 1 trailler, deixando bastante trabalhosa a programação.
Gostei + 0
04/07/2006
Gandalf.nho
Pelo que o meu colega que tratou com os caras da Caixa falou, eles estão bem defasados nesse quesito e vai ter que ser esse padrão mesmo...
Gostei + 0
04/07/2006
Thiago Vidal
antigamente, eu usava TStringList e no final dava .SaveToFile para criar o arquivo, mas como o conteudo ficava na memoria, o sistema começou a ficar pesado, então eu tive que desenvolver estas rotinas para gravar direto em TFileStream, STWrite e STWriteLN, mando também, rotinas para formatação dos dados:
Pic9 -> Numerico, alinhado à direita, preenchido com zeros à esquerda
PicX -> Alfanumerico, alinhado à esquerda, preenchido com zeros à direita
PicD -> Data
PicC -> Moeda, com casas decimais informadas.
uses Math, StrUtils, DateUtils; const Espacos = ´ ´; Zeros = ´0000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000´; procedure STWrite(Stream: TStream; s: string); begin Stream.Write(s[1], Length(s)); end; procedure STWriteLN(Stream: TStream; s: string); begin s := s + 1310; Stream.Write(s[1], Length(s)); end; function Pic9(Tam: Integer; Num: Integer): string; begin Result := Copy(IntToStr(Num), 1, Tam); while (Length(Result) < Tam) do Result := Copy(Zeros, 1, Tam - Length(Result)) + Result; end; function PicX(Tam: Integer; S: string): string; begin Result := Copy(S, 1, Tam); while (Length(Result) < Tam) do Result := Result + Copy(Espacos, 1, Tam - Length(Result)); end; function PicD(Data: TDateTime; Formato: string): string; begin Result := FormatDateTime(Formato, Data); end; function PicC(Tam: Integer; Valor: Currency; CasasDec: Integer): string; begin Result := Pic9(Tam, Round(Valor * IntPower(10, CasasDec))); end; procedure GravaLinha; var Arquivo: string; fs: TFileStream; begin fs := TFileStream.Create(Arquivo, fmCreate); try STWriteLN(fs, ´CTE´ + Pic9(4, Query.FieldByName(´Numero´).AsInteger)+ PicX(30, Query.FieldByName(´Nome´).AsString)+ PicD(Query.FieldByName(´Data´).AsDateTime, ´yyyymmdd´)+ PicC(13, Query.FieldByName(´Valor´).AsCurrency, 2)+ ); finally fs.Free; end; end;
Eu prefiro usar 2 constantes cheias de zeros e de espaços, pois a rotina fica bem mais rapida do que se vc fosse acrescentar um de cada vez por um loop while.
Espero ter ajudado.
Gostei + 0
04/07/2006
Gandalf.nho
Gostei + 0
04/07/2006
Adriano Santos
O caminho que o [b:a2bcdc4592]thiago_vidal[/b:a2bcdc4592] falou é esse mesmo. Tem que ser no braço como eu falei. Mas depois que fizer o primeiro layout, o resto é moleza...rsrs...boa sorte, ser precisar de algo tô aqui e me ponho a disposição.
Gostei + 0
24/11/2016
Alex Sousa
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)