Cnab 240
#1
Posted 17/06/2008, 18:12
o problema está sendo justamente achar este arquivo (não estou falando do layout).
Já entrei em mais de uns 1000 sites e nada!
alguem pelo amor de Deus tem esse arquivo?
é o arquivo com um monte de 0 e espaço em branco mesmo...
#2
Posted 18/06/2008, 09:31
se você quer uma apostila ou algo assim que te explique o layout pede para o banco que eles te mandão....
té+
#3
Posted 18/06/2008, 13:42
quanto ao arquivo de layout, já o tenho.
de qualquer forma valew!
#4
Posted 18/06/2008, 14:15
esses arquivos q o banco manda é um .txt
ai é só vc formatar de acordo com o layout...
00BANCO DO BRASIL00000213002310321031203
392819381982938193392819381982938193392819
392819381982938193392819381982938193392819
392819381982938193392819381982938193392819
392819381982938193392819381982938193392819
tendeu?
#5
Posted 18/06/2008, 23:56
Lembro que num dos meus estágios, em e-commerce, tinha manual do hsbc, bb, bradesco e caixa, ensinando fazer.
Tente entrar em contato com a parte de TI do banco e solicite um desses manuais
[]'s
#6
Posted 19/06/2008, 13:21
<?php
/**
* @author G.w.A.r em 18/06/2008 ==> GOVOIP
* @name aplicativo appCnab240.php
* @desc Recebe o upload do arquivo de retorno do Banco do Brasil com os boletos pagos
* e faz a baixa dos mesmos
--> Deve-se seguir a seguinte sequência:
REGISTRO DE HEADER DE ARQUIVO
LOTE: LIQUIDACAO DE TITULOS EM CARTEIRA DE COBRANCA
(item: 3.1.3 Pagamento de Títulos de Cobrança - subcpadr5-layout padrao V.08.02.doc, pág. 29)
- Registro Header de lote
- Registro Detalhe - Segmento J *Obrigatorio
- Registro Trailer de lote
REGISTRO TRAILER DE ARQUIVO
<--
--> Maiores informações:
http://www.febraban.org.br/Arquivo/Servicos/Downloads/download_lista.asp?id_comissao=4
Com base no arquivo:
Padrão Febraban - 240 posições V.08.2 - Julho 2006 padr-v08.2.zip 400 Kb 06/09/2005 19458 downloads
<--
*/
/**
* @name funcao retornaTrecho
* @desc retorna determinado trecho de uma variável
* @param variável geral
* @param int - iniciando em
* @param int - retorna X registros a partir do inicio
*/
function retornaTrecho($var, $inicio, $nDigitos){
//retorna a parte solicitada da string $var (a contagem inicia-se em zero)
return substr($var, $inicio-1, $nDigitos);
}
/**
* @name funcao addDecimal
* @desc coloca um ponto (.) a antes de uma quantidade de casas decimais
* @param variável para se adicionar um ponto
* @param int - casas decimais depois do ponto
*/
function addDecimal($var, $casasDecimais){
//retorna a string formatada
return substr_replace($var, ".", -$casasDecimais, 0);
}
//define o caminho absoluto até a pasta do arquivo
$strCaminhoAbsoluto = './';
//nome do arquivo a ser aberto
$strNomeDoArquivo = 'a.txt';
//tenta abrir o arquivo de retorno do banco
if(!$arrArquivo = file($strCaminhoAbsoluto.$strNomeDoArquivo, FILE_IGNORE_NEW_LINES | FILE_SKIP_EMPTY_LINES))
exit('Não foi possível abrir o arquivo de retorno do banco!');
//linha atual
$i = 0;
//retira de um vez as quebras de linhas, retorno de carros e linhas vazias
foreach($arrArquivo as &$linhas){
//retira \r
$linhas = str_replace(chr(13), "", $linhas);
//retira \n
$linhas = str_replace(chr(10), "", $linhas);
//apaga as linhas vazias
if(empty($linhas))
unset($arrArquivo[$i]);
//proxima linha
$i++;
}
//HEADER DE ARQUIVO:
$HA = $arrArquivo[0];
//separa o header do arquivo em seus pedaços
$arrArquivoRetorno['HA']['ContrBanco'] = retornaTrecho($HA, 1, 3);
$arrArquivoRetorno['HA']['ContrLote'] = retornaTrecho($HA, 4, 4);
$arrArquivoRetorno['HA']['ContrRegistro'] = retornaTrecho($HA, 8, 1);
$arrArquivoRetorno['HA']['CNAB1'] = retornaTrecho($HA, 9, 9);
$arrArquivoRetorno['HA']['EmpInscTipo'] = retornaTrecho($HA, 18, 1);
$arrArquivoRetorno['HA']['EmpInscNum'] = retornaTrecho($HA, 19, 14);
$arrArquivoRetorno['HA']['EmpConvenio'] = retornaTrecho($HA, 33, 20);
$arrArquivoRetorno['HA']['EmpContCorAgenCod'] = retornaTrecho($HA, 53, 5);
$arrArquivoRetorno['HA']['EmpContCorAgenDV'] = retornaTrecho($HA, 58, 1);
$arrArquivoRetorno['HA']['EmpContCorContNum'] = retornaTrecho($HA, 59, 12);
$arrArquivoRetorno['HA']['EmpContCorContDV'] = retornaTrecho($HA, 71, 1);
$arrArquivoRetorno['HA']['EmpContCorDV'] = retornaTrecho($HA, 72, 1);
$arrArquivoRetorno['HA']['EmpNome'] = retornaTrecho($HA, 73, 30);
$arrArquivoRetorno['HA']['NomeBanco'] = retornaTrecho($HA, 103, 30);
$arrArquivoRetorno['HA']['CNAB2'] = retornaTrecho($HA, 133, 10);
$arrArquivoRetorno['HA']['ArqCodigo'] = retornaTrecho($HA, 143, 1);
$arrArquivoRetorno['HA']['ArqDataGeracao'] = retornaTrecho($HA, 144, 8);
$arrArquivoRetorno['HA']['ArqHoraGeracao'] = retornaTrecho($HA, 152, 6);
$arrArquivoRetorno['HA']['ArqSequencia'] = retornaTrecho($HA, 158, 6);
$arrArquivoRetorno['HA']['ArqLayout'] = retornaTrecho($HA, 164, 3);
$arrArquivoRetorno['HA']['ArqDensidade'] = retornaTrecho($HA, 167, 5);
$arrArquivoRetorno['HA']['ReservadoBanco'] = retornaTrecho($HA, 172, 20);
$arrArquivoRetorno['HA']['ReservadoEmpresa'] = retornaTrecho($HA, 192, 20);
$arrArquivoRetorno['HA']['CNAB3'] = retornaTrecho($HA, 212, 29);
//número total de linhas do arquivo
$nTotalLinhas = count($arrArquivo);
//TRAILER DE ARQUIVO:
$TA = $arrArquivo[$nTotalLinhas-1];
//separa o trailer do arquivo em seus pedaços
$arrArquivoRetorno['TA']['ContrBanco'] = retornaTrecho($TA, 1, 3);
$arrArquivoRetorno['TA']['ContrLote'] = retornaTrecho($TA, 4, 4);
$arrArquivoRetorno['TA']['ContrRegistro'] = retornaTrecho($TA, 8, 1);
$arrArquivoRetorno['TA']['CNAB1'] = retornaTrecho($TA, 9, 9);
$arrArquivoRetorno['TA']['TotaisQtdeLotes'] = retornaTrecho($TA, 18, 6);
$arrArquivoRetorno['TA']['TotaisQtdeRegistros'] = retornaTrecho($TA, 24, 6);
$arrArquivoRetorno['TA']['TotaisQtdeConcil'] = retornaTrecho($TA, 30, 6);
$arrArquivoRetorno['TA']['CNAB2'] = retornaTrecho($TA, 36, 205);
//retira o header e trailer de arquivo para ficar apenas os lotes
unset($arrArquivo[0]);
unset($arrArquivo[$nTotalLinhas-1]);
//ordena o array $arrArquivo
sort($arrArquivo);
//HEADER DO LOTE:
$HL = $arrArquivo[0];
//separa o header do lote em seus pedaços
$arrArquivoRetorno['HL']['ContrBanco'] = retornaTrecho($HL, 1, 3);
$arrArquivoRetorno['HL']['ContrLote'] = retornaTrecho($HL, 4, 4);
$arrArquivoRetorno['HL']['ContrRegistro'] = retornaTrecho($HL, 8, 1);
$arrArquivoRetorno['HL']['ServOperacao'] = retornaTrecho($HL, 9, 1);
$arrArquivoRetorno['HL']['ServServico'] = retornaTrecho($HL, 10, 2);
$arrArquivoRetorno['HL']['ServFormLanca'] = retornaTrecho($HL, 12, 2);
$arrArquivoRetorno['HL']['ServLayout'] = retornaTrecho($HL, 14, 3);
$arrArquivoRetorno['HL']['CNAB1'] = retornaTrecho($HL, 17, 1);
$arrArquivoRetorno['HL']['EmpInscTipo'] = retornaTrecho($HL, 18, 1);
$arrArquivoRetorno['HL']['EmpInscNum'] = retornaTrecho($HL, 19, 14);
$arrArquivoRetorno['HL']['EmpConvenio'] = retornaTrecho($HL, 33, 20);
$arrArquivoRetorno['HL']['EmpContCorAgenCod'] = retornaTrecho($HL, 53, 5);
$arrArquivoRetorno['HL']['EmpContCorDV'] = retornaTrecho($HL, 58, 1);
$arrArquivoRetorno['HL']['EmpContCorContNum'] = retornaTrecho($HL, 59, 12);
$arrArquivoRetorno['HL']['EmpContCorContDV'] = retornaTrecho($HL, 71, 1);
$arrArquivoRetorno['HL']['EmpContCorDV'] = retornaTrecho($HL, 72, 1);
$arrArquivoRetorno['HL']['EmpNome'] = retornaTrecho($HL, 73, 30);
$arrArquivoRetorno['HL']['Informacao1'] = retornaTrecho($HL, 103, 40);
$arrArquivoRetorno['HL']['EmpEndLogra'] = retornaTrecho($HL, 143, 30);
$arrArquivoRetorno['HL']['EmpEndNum'] = retornaTrecho($HL, 173, 5);
$arrArquivoRetorno['HL']['EmpEndComple'] = retornaTrecho($HL, 178, 15);
$arrArquivoRetorno['HL']['EmpEndCidade'] = retornaTrecho($HL, 193, 20);
$arrArquivoRetorno['HL']['EmpEndCEP'] = retornaTrecho($HL, 213, 5);
$arrArquivoRetorno['HL']['EmpEndCompleCEP'] = retornaTrecho($HL, 218, 3);
$arrArquivoRetorno['HL']['EmpEndEstado'] = retornaTrecho($HL, 221, 2);
$arrArquivoRetorno['HL']['CNAB2'] = retornaTrecho($HL, 223, 8);
$arrArquivoRetorno['HL']['Ocorrencias'] = retornaTrecho($HL, 231, 10);
//número total de linhas do arquivo
$nTotalLinhas = count($arrArquivo);
//TRAILER DO LOTE:
$TL = $arrArquivo[$nTotalLinhas-1];
//separa o trailer do lote em seus pedaços
$arrArquivoRetorno['TL']['ContrBanco'] = retornaTrecho($TL, 1, 3);
$arrArquivoRetorno['TL']['ContrLote'] = retornaTrecho($TL, 4, 4);
$arrArquivoRetorno['TL']['ContrRegistro'] = retornaTrecho($TL, 8, 1);
$arrArquivoRetorno['TL']['CNAB1'] = retornaTrecho($TL, 9, 9);
$arrArquivoRetorno['TL']['TotaisQtdeRegistros'] = retornaTrecho($TL, 18, 6);
$arrArquivoRetorno['TL']['TotaisValor'] = addDecimal(retornaTrecho($TL, 24, 18), 2);
$arrArquivoRetorno['TL']['TotaisQtdeMoeda'] = retornaTrecho($TL, 42, 18);
$arrArquivoRetorno['TL']['NumAvisoDebito'] = retornaTrecho($TL, 60, 6);
$arrArquivoRetorno['TL']['CNAB2'] = retornaTrecho($TL, 66, 165);
$arrArquivoRetorno['TL']['Ocorrencias'] = retornaTrecho($TL, 231, 10);
//retira o header e trailer do lote para ficar apenas os registros
unset($arrArquivo[0]);
unset($arrArquivo[$nTotalLinhas-1]);
//ordena o array $arrArquivo
sort($arrArquivo);
//conta quantos registros o arquivo tem
$nRegistros = count($arrArquivo);
//navega entre os registros e os formata em arrays (SEGMENTO J)
for($i=0; $i<$nRegistros; $i++){
//obtém o registro atual
$registroAtual = $arrArquivo[$i];
//cadastra cada registro separadamente com seus detalhes
$arrArquivoRetorno['REGISTRO'.$i]['ContrBanco'] = retornaTrecho($registroAtual, 1, 3);
$arrArquivoRetorno['REGISTRO'.$i]['ContrLote'] = retornaTrecho($registroAtual, 4, 4);
$arrArquivoRetorno['REGISTRO'.$i]['ContrRegistro'] = retornaTrecho($registroAtual, 8, 1);
$arrArquivoRetorno['REGISTRO'.$i]['ServNumRegistro'] = retornaTrecho($registroAtual, 9, 5);
$arrArquivoRetorno['REGISTRO'.$i]['ServSegmento'] = retornaTrecho($registroAtual, 14, 1);
$arrArquivoRetorno['REGISTRO'.$i]['ServMovimTipo'] = retornaTrecho($registroAtual, 15, 1);
$arrArquivoRetorno['REGISTRO'.$i]['ServMovimCod'] = retornaTrecho($registroAtual, 16, 2);
$arrArquivoRetorno['REGISTRO'.$i]['PagCodBarras'] = retornaTrecho($registroAtual, 18, 44);
$arrArquivoRetorno['REGISTRO'.$i]['PagNomCedente'] = retornaTrecho($registroAtual, 62, 30);
$arrArquivoRetorno['REGISTRO'.$i]['PagDataVenc'] = retornaTrecho($registroAtual, 92, 8);
$arrArquivoRetorno['REGISTRO'.$i]['PagValorTitulo'] = retornaTrecho($registroAtual, 100, 15);
$arrArquivoRetorno['REGISTRO'.$i]['PagDesconto'] = retornaTrecho($registroAtual, 115, 15);
$arrArquivoRetorno['REGISTRO'.$i]['PagAcrescimo'] = retornaTrecho($registroAtual, 130, 15);
$arrArquivoRetorno['REGISTRO'.$i]['PagDataPagamen'] = retornaTrecho($registroAtual, 145, 8);
$arrArquivoRetorno['REGISTRO'.$i]['PagValorPagamen'] = retornaTrecho($registroAtual, 153, 15);
$arrArquivoRetorno['REGISTRO'.$i]['PagQtdeMoeda'] = retornaTrecho($registroAtual, 168, 15);
$arrArquivoRetorno['REGISTRO'.$i]['PagRefSacado'] = retornaTrecho($registroAtual, 183, 20);
$arrArquivoRetorno['REGISTRO'.$i]['NossoNum'] = retornaTrecho($registroAtual, 203, 20);
$arrArquivoRetorno['REGISTRO'.$i]['CodDeMoeda'] = retornaTrecho($registroAtual, 223, 2);
$arrArquivoRetorno['REGISTRO'.$i]['CNAB'] = retornaTrecho($registroAtual, 225, 6);
$arrArquivoRetorno['REGISTRO'.$i]['Ocorrencias'] = retornaTrecho($registroAtual, 231, 10);
}
echo '<pre>';
print_r($arrArquivoRetorno);
echo '</pre>';
?>a.txt:
001123451T9830030 2123456789101231234567890101112131453164100981121212120GOVOIP DA SILVIAOOOOOOOOOOOOOO 12345acvbnmjklophgjkrtyacvbnmjklophgjkrty1212345123MG 1234567890 001123451T9830030 2123456789101231234567890101112131453164100981121212120GOVOIP DA SILVIAOOOOOOOOOOOOOO 12345acvbnmjklophgjkrtyacvbnmjklophgjkrty1212345123MG 1234567891 001123451T9830030 2123456789101231234567890101112131453164100981121212120GOVOIP DA SILVIAOOOOOOOOOOOOOO 12345acvbnmjklophgjkrtyacvbnmjklophgjkrty1212345123MG 1234567892 001123451T9830030 2123456789101231234567890101112131453164100981121212120GOVOIP DA SILVIAOOOOOOOOOOOOOO 12345acvbnmjklophgjkrtyacvbnmjklophgjkrty1212345123MG 1234567893 001123451T9830030 2123456789101231234567890101112131453164100981121212120GOVOIP DA SILVIAOOOOOOOOOOOOOO 12345acvbnmjklophgjkrtyacvbnmjklophgjkrty1212345123MG 1234567894 001123451T9830030 2123456789101231234567890101112131453164100981121212120GOVOIP DA SILVIAOOOOOOOOOOOOOO 12345acvbnmjklophgjkrtyacvbnmjklophgjkrty1212345123MG 1234567895 001123451T9830030 2123456789101231234567890101112131453164100981121212120GOVOIP DA SILVIAOOOOOOOOOOOOOO 12345acvbnmjklophgjkrtyacvbnmjklophgjkrty1212345123MG 1234567896 001123451T9830030 2123456789101231234567890101112131453164100981121212120GOVOIP DA SILVIAOOOOOOOOOOOOOO 12345acvbnmjklophgjkrtyacvbnmjklophgjkrty1212345123MG 1234567897
#7
Posted 02/08/2008, 15:52
estou todo enrolado aqui para criar esse arquivo de envio para o banco. (remessa de boleto)
fico no aguardo
Robson
#8
Posted 24/08/2009, 17:49
bem massa! eu preciso criar o arquivo de remesa alguem sabe como se faz?
estou todo enrolado aqui para criar esse arquivo de envio para o banco. (remessa de boleto)
fico no aguardo
Robson
Estou precisando fazer o mesmo. Já conseguiu alguma coisa?
#9
Posted 24/08/2009, 23:34
olha http://www14.bancobr...ayout/index.htm
nao eh dificil vc so vai trabalhar kebrando a string nas posições indicadas para gerar cada variavel.
tem q ter um poko de pacieneic, mas vai ,posta as duvidas no forum
flow
<?php echo("Guilherme Marques Eloi"); ?>
#10
Posted 14/12/2009, 20:47
Você tem este codigo para asp?geralmente você pede pro banco e eles enviam um manual para você começar o desenvolvimento sem o "arquivo".
Lembro que num dos meus estágios, em e-commerce, tinha manual do hsbc, bb, bradesco e caixa, ensinando fazer.
Tente entrar em contato com a parte de TI do banco e solicite um desses manuais
[]'s
Estou tentando a meses e não consegui achar na net...
Marcos
aires@datte.com.br
1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)










