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
0 user(s) are reading this topic
0 membro(s), 0 visitante(s) e 0 membros anônimo(s)