Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Larry

Arquivo Remessa de Boleto em PHP

Recommended Posts

Olá Pessoal!

 

Esse é meu primeiro post aqui no imasters.

 

Eu estou implantando boletos para cobrança em meu site utilizando o Boletophp que é gratuito. Consigo gerar os boletos certinho é muito legal.

 

Mas o meu Banco (no caso Banco do Brasil) esta exigindo que eu envie o arquivo remessa para eles, mas eu não sei gerar isso em PHP. Achei na net em JAVA, ASP, Delphi mas não em PHP.

 

E como não queria ficar na mão de pagseguro e afins, gostaria de saber se alguém já fez esse tipo de programação que gera o arquivo remessa para enviar para o Banco.

 

O padrão que preciso é CNAB 240 POSIÇÕES.

 

Se alguém precisar eu encontrei na net o do Banco Itaú que é CNAB 400 POSIÇÕES, e tenho também em PHP a leitura do arquivo retorno.

 

É isso camaradas, quem sabe a gente não consegue fazer uma coisa completa totalmente gratuita pra todo mundo usar, eu me proponho a ajudar.

 

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Qual a carteira que você esta utilizando? Até onde eu sei, você pode utilizar a carteira sem registro (acredito que o mais recomendado pra web), onde o banco só saberá da existência do boleto quando ele for pago.

 

O controle de boletos emitidos, inclusive do número do boleto para que não haja duplicidade, ficaria a seu cargo.

 

Já implementei este mesmo projeto em outros bancos, e pela carteira sem registro não precisei enviar nenhum arquivo de remessa.

 

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vinicius,

 

Valeu a resposta, mas no meu caso mesmo sendo sem registro, o banco realmente precisa do arquivo remessa pois é uma cooperativa que usa o banco do Brasil para intermediar as operações.

 

Até fica a dica para o pessoal também, para quem tem empresa ou até conta pessoal eu sugiro vocês abrirem conta numa cooperativa. Não se paga nenhuma mensalidade e olha só o preço que eu pago por boleto e só se ele for pago: R$ 1,35 (cada cooperativa tem um preço diferente, mas é bem mais em conta do que um banco normal). Procure por cooperativas em sua cidade.

 

Segue o link do manual para quem quiser dar uma olhada pra ajudar a fazer a geração do arquivo remessa, eu ainda não tenho a sabedoria de fazer mas vou continuar tentando:

 

http://www.credifiesc.coop.br/images_upload/File/credifiesc/Manual_tecnico_de_cobranca_7_digitos-v2-2.pdf

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa noite Larry, preciso de gerar o CNAB 400 POSIÇÕES para o itaú e gerar os arquivos de remessa e retorno, você poderia me enviar por gentileza, estou o dia todo procurando e não encotrei nada que me pudesse ajudar.

 

Fico no aguardo, grato.

 

Rodrigo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aí Rodrigo, segue o código para gerar arquivo remessa do Banco Itaú. Não testei.

 

<?php
/*
* @descr: Gera o arquivo de remessa para cobranca no padrao CNAB 400 vers. 7.0 ITAU
*/

function limit($palavra,$limite)
{
   if(strlen($palavra) >= $limite)
   {
       $var = substr($palavra, 0,$limite);
   }
   else
   {
       $max = (int)($limite-strlen($palavra));
       $var = $palavra.complementoRegistro($max,"brancos");
   }
   return $var;
}

function sequencial($i)
{
   if($i < 10)
   {
       return zeros(0,5).$i;
   }
   else if($i > 10 && $i < 100)
   {
       return zeros(0,4).$i;
   }
   else if($i > 100 && $i < 1000)
   {
       return zeros(0,3).$i;
   }
   else if($i > 1000 && $i < 10000)
   {
       return zeros(0,2).$i;
   }
   else if($i > 10000 && $i < 100000)
   {
       return zeros(0,1).$i;
   }
}

function zeros($min,$max)
{
   $x = ($max - strlen($min));
   for($i = 0; $i < $x; $i++)
   {
       $zeros .= '0';
   }
   return $zeros.$min;
}

function complementoRegistro($int,$tipo)
{
   if($tipo == "zeros")
   {
       $space = '';
       for($i = 1; $i <= $int; $i++)
       {
           $space .= '0';
       }
   }
   else if($tipo == "brancos")
   {
       $space = '';
       for($i = 1; $i <= $int; $i++)
       {
           $space .= ' ';
       }
   }

   return $space;
}

$fusohorario = 3; // como o servidor de hospedagem é a dreamhost pego o fuso para o horario do brasil
$timestamp = mktime(date("H") - $fusohorario, date("i"), date("s"), date("m"), date("d"), date("Y"));

$DATAHORA['PT'] = gmdate("d/m/Y H:i:s", $timestamp);
$DATAHORA['EN'] = gmdate("Y-m-d H:i:s", $timestamp);
$DATA['PT'] = gmdate("d/m/Y", $timestamp);
$DATA['EN'] = gmdate("Y-m-d", $timestamp);
$DATA['DIA'] = gmdate("d",$timestamp);
$DATA['MES'] = gmdate("m",$timestamp);
$DATA['ANO'] = gmdate("y",$timestamp);
$HORA = gmdate("H:i:s", $timestamp);

define("REMESSA",PATH."sistemas/iMoveG/financeiro/arquivos/",true);

$filename = REMESSA.$DATA['DIA'].$DATA['MES'].$DATA['ANO'].".rm";
$conteudo = '';

## REGISTRO HEADER
                               #NOME DO CAMPO        #SIGNIFICADO            #POSICAO    #PICTURE
$conteudo .= '0';             //    tipo de registro    id registro header        001 001        9(01) 
$conteudo .= 1;             //     operacao            tipo operacao remessa    002 002        9(01)
$conteudo .= 'REMESSA';        //    literal remessa        escr. extenso            003 009        X(07)
$conteudo .= '01';            //     codigo servico        id tipo servico            010 011        9(02)
$conteudo .= limit('COBRANCA',15);    //     literal cobranca    escr. extenso    012 026        X(15)
$conteudo .= 1234;            //  agencia                mantenedora conta        027 030        9(04)
$conteudo .= complementoRegistro(2,"zeros");// zeros complemento d registro    031 032        9(02)
$conteudo .= '01234';        //     conta                conta da empresa        033 037        9(05)
$conteudo .= 2;                //    dac                    digito autoconf conta    038 038        9(01)
$conteudo .= complementoRegistro(8,"brancos");//    complemento registro     039 046        X(08)
$conteudo .= limit('NOME DA SUA EMPRESA',30);//nome da empresa            047 076        X(30)
$conteudo .= 341;            // codigo banco            Nº BANCO CÂMARA COMP.    077 079        9(03)
$conteudo .= limit('BANCO ITAU SA',15);            //    nome do banco por ext.    080 094        X(15)
$conteudo .= $DATA['DIA'].$DATA['MES'].$DATA['ANO'];//data geracao arquivo    095 100        9(06)
$conteudo .= complementoRegistro(294,"brancos");// complemento de registr    101 394        X(294)
$conteudo .= sequencial(1);        // numero sequencial    registro no arquivo        395 400        9(06)

$conteudo .= chr(13).chr(10); //essa é a quebra de linha

### DADOS DOS CLIENTES PARA TESTE
$clientes[] = array("BOLETO001","Cliente A","11111111111","100,00");
$clientes[] = array("BOLETO002","Cliente B","22222222222","200,00");
$clientes[] = array("BOLETO003","Cliente C","33333333333","300,00");
$clientes[] = array("BOLETO004","Cliente D","44444444444","400,00");

$i = 2;
foreach($clientes as $cliente)
{
   ## REGISTRO DETALHE (OBRIGATORIO)
                                                                           #NOME DO CAMPO                #SIGNIFICADO            #POSICAO    #PICTURE
   $conteudo .= 1;                                                        //    tipo registro                id registro transacac.    001 001        9(01)
   $conteudo .= '02';                                                    //     codigo inscricao            tipo inscricao empresa    002 003        9(02)
   $conteudo .= '00965290700010';                                        //    cnpj da empresa                                        004 017        9(14)
   $conteudo .= 6896;                                                    //     agencia                        mantenedora da conta    018 021        9(04)
   $conteudo .= '00';                                                    //    zeros                        complemento registro    022 023        9(02)
   $conteudo .= '08436';                                                //     conta                        numero da conta            024 028        9(05)
   $conteudo .= 2;                                                        //     dac                            dig autoconf conta        029 029        9(01)
   $conteudo .= complementoRegistro(4,"brancos");                        //     brancos                        complemento registro     030 033        X(04)
   $conteudo .= complementoRegistro(4,"zeros");                        //  CÓD.INSTRUÇÃO/ALEGAÇÃO A SER CANC NOTA 27             034 037        9(04)
   $conteudo .= limit($cliente[0],25);                                    //     USO / IDENT. DO TÍTULO NA EMPRESA NOTA 2            038 062        X(25)
   $conteudo .= complementoRegistro(8,"zeros");                        //     NOSSO NUMERO / ID TITULO DO BANCO NOTA 3            063 070        9(08)
   $conteudo .= '0000000000000';                                        //QTDE MOEDA            NOTA 4                            071 083        9(08)V9(5)
   $conteudo .= 109;                                                    //     nº da carteira        nº carteira banco                084 086        9(03)            
   $conteudo .= complementoRegistro(21,"brancos");                        // uso do banco ident. oper. no banco                    087 107        X(21)
   $conteudo .= 'I';                                                    //     carteira codigo da carteira NOTA 5                    108 108        X(01)
   $conteudo .= '01';                                                     // codigo ocorrencia / ident da ocorrencia NOTA 6        109 110        9(02)
   $conteudo .= limit('',10);                                             // nº documento / nº documento de cobranca    NOTA 18        111 120        X(10)
   $conteudo .= '310808';                                                // vencimento data venc. titulo NOTA 7                    121 126        9(06)
   $conteudo .= '0000000000000';                                        // valor titulo            valor nominal NOTA 8            127 139        9(11)V9(2)
   $conteudo .= 341;                                                    // codigo do banco        Nº BANCO CÂMARA COMP.            140    142        9(03)         
   $conteudo .= zeros(0,5);                                             //agencia cobradora / ONDE TÍTULO SERÁ COBRADO NOTA 9    143 147        9(05)
   $conteudo .= 15;                                                    // especie        especie do titulo NOTA 10                148 149        X(02)
   $conteudo .= 'A'; // aceite ident de titutlo aceito (A=aceite,N=nao aceite)    150 150        X(01)
   $conteudo .= '020808';         // data emissao titulo     NOTA 31                    151 156        9(06)
   $conteudo .= '88';             // instrucao 1            NOTA 11                    157 158        X(02)
   $conteudo .= '86';            // instrucao 2            NOTA 11                    159 160        X(02)
   $conteudo .= '0000000000000';// juros de 1 dia    valor de mora NOTA 12    161 173        9(11)V9(02)
   $conteudo .= zeros(0,6);    // desconto até            data limite p/ descont    174 179        9(06)
   $conteudo .= '0000000000000';// valor desconto        a ser concedido NOTA 13 180 192        9(11)V9(02)
   $conteudo .= '0000000000000';    // valor I.O.F RECOLHIDO P NOTAS SEGURO NOTA 14    193 205        9(11)V9(02)
   $conteudo .= '0000000000000';    // abatimento            a ser concedido NOTA 13    206 218        9(11)V9(02)
   $conteudo .= '02'; // codigo de inscricao tipo de insc. sacado 01=CPF 02=CNPJ    219 220        9(02)
   $conteudo .= '00999999700010';             // numero de inscricao    cpf ou cnpj                221 234        9(14)
   $conteudo .= limit($cliente[1],30);    // nome            nome do sacado NOTA 15    235 264        X(30)
   $conteudo .= complementoRegistro(10,"brancos");//NOTA 15 complem regist        265 274        X(10)
   $conteudo .= limit('',40);    // logradouro rua numero e compl sacado            275 314        X(40)
   $conteudo .= limit('',12);    // bairro                bairro do sacado        315 326        X(12)
   $conteudo .= zeros(0,8);    // cep                    cep do sacado            327 334        9(08)
   $conteudo .= limit('',15);    // cidade                cidade do sacado        335 349        X(15)        
   $conteudo .= limit('',2);    // estado                uf do sacado            350 351        X(02)
   $conteudo .= limit('',30);    // sacador/avalista        sacad ou aval. NOTA 16    352 381        X(30)
   $conteudo .= complementoRegistro(4,"brancos");// complemento de regist.        382 385        X(04)
   $conteudo .= zeros(0,6);    // data de mora            data de mora            386 391        9(06)        
   $conteudo .= zeros(0,2);            // prazo                qtde de dias NOTA 11(A)    392 393        9(02)            
   $conteudo .= complementoRegistro(1,"brancos");        // brancos                complemento de registr.    394 394     X(01)
   $conteudo .= sequencial($i++);            // numero sequencial    do registro no arquivo    395 400        9(06)

   $conteudo .= chr(13).chr(10); //essa é a quebra de linha
   /*
   ## REGISTRO DETALHE (OPCIONAL)

                                   #NOME DO CAMPO        #SIGNIFICADO            #POSICAO    #PICTURE
   $conteudo .= 4;                // tipo transacao        id do registro            001    001        9(01)
   $conteudo .= '';             // codigo de inscr    tipo inscr. empresa NOTA 1    002 003        9(02)
   $conteudo .= '';            // numero de inscr        cpf ou cnpj                004 017        9(14)
   $conteudo .= '';            // agencia                mantenedora conta        018 021        9(04)
   $conteudo .= '00';            // zeros                complemento de registro    022 023        9(02)
   $conteudo .= '';            // conta                da empresa                024 028        9(05)
   $conteudo .= '';            // DAC                    autoconf conta            029 029        9(01)
   $conteudo .= 109;            // n carteira            no banco NOTA 5            030 032        9(03)    
   $conteudo .= '';            // nosso número            id titulo banco    NOTA 3    033 040        9(08)        
   $conteudo .= '';            // dac nosso numero        NOTA 3                    041 041        9(01)
   $conteudo .= '';            // sequencia            n seq. tipo 4 titulo    042 043        9(02)

   $conteudo .= '';            // agencia (01)            agencia conta credito    044 047        9(04)
   $conteudo .= '';            // conta (01)            conta p credito            048 054        9(07)
   $conteudo .= '';            // dac (1)                autoconf conta credito    055 055     9(01)
   $conteudo .= '';            // valor (1)            valor p credito NOTA 32    056 068        9(11)V9(02)

   $conteudo .= '';            // agencia (2)                                    069 072        9(04)    
   $conteudo .= '';            // conta (2)                                    073 079        9(07)
   $conteudo .= '';            // dac (2)                                        080 080        9(01)
   $conteudo .= '';            // valor (2)                                    081 093     9(11)V9(02)

   $conteudo .= '';            // agencia (3)                                    094 097        9(04)    
   $conteudo .= '';            // conta (3)                                    098 104        9(07)
   $conteudo .= '';            // dac (3)                                        105 105        9(01)
   $conteudo .= '';            // valor (3)                                    106 118     9(11)V9(02)

   $conteudo .= '';            // agencia (4)                                    119 122        9(04)    
   $conteudo .= '';            // conta (4)                                    123 129        9(07)
   $conteudo .= '';            // dac (4)                                        130 130        9(01)
   $conteudo .= '';            // valor (4)                                    131 143     9(11)V9(02)

   $conteudo .= '';            // agencia (5)                                    144 147        9(04)    
   $conteudo .= '';            // conta (5)                                    148 154        9(07)
   $conteudo .= '';            // dac (5)                                        155 155        9(01)
   $conteudo .= '';            // valor (5)                                    156 168     9(11)V9(02)

   $conteudo .= '';            // agencia (6)                                    169 172        9(04)    
   $conteudo .= '';            // conta (6)                                    173 179        9(07)
   $conteudo .= '';            // dac (6)                                        180 180        9(01)
   $conteudo .= '';            // valor (6)                                    181 193     9(11)V9(02)

   $conteudo .= '';            // agencia (7)                                    194 197        9(04)    
   $conteudo .= '';            // conta (7)                                    198 204        9(07)
   $conteudo .= '';            // dac (7)                                        205 205        9(01)
   $conteudo .= '';            // valor (7)                                    206 218     9(11)V9(02)

   $conteudo .= '';            // agencia (8)                                    219 222        9(04)    
   $conteudo .= '';            // conta (8)                                    223 229        9(07)
   $conteudo .= '';            // dac (8)                                        230 230        9(01)
   $conteudo .= '';            // valor (8)                                    231 243     9(11)V9(02)

   $conteudo .= '';            // agencia (9)                                    244 247        9(04)    
   $conteudo .= '';            // conta (9)                                    248 254        9(07)
   $conteudo .= '';            // dac (9)                                        255 255        9(01)
   $conteudo .= '';            // valor (9)                                    256 268     9(11)V9(02)

   $conteudo .= '';            // agencia (10)                                    269 272        9(04)    
   $conteudo .= '';            // conta (10)                                    273 079        9(07)
   $conteudo .= '';            // dac (10)                                        280 280        9(01)
   $conteudo .= '';            // valor (10)                                    281 293     9(11)V9(02)

   $conteudo .= '';            // agencia (11)                                    294 297        9(04)    
   $conteudo .= '';            // conta (11)                                    298 304        9(07)
   $conteudo .= '';            // dac (11)                                        305 305        9(01)
   $conteudo .= '';            // valor (11)                                    306 318     9(11)V9(02)

   $conteudo .= '';            // agencia (12)                                    319 322        9(04)    
   $conteudo .= '';            // conta (12)                                    323 329        9(07)
   $conteudo .= '';            // dac (12)                                        330 330        9(01)
   $conteudo .= '';            // valor (12)                                    331 343     9(11)V9(02)

   $conteudo .= '';            // agencia (13)                                    344 347        9(04)    
   $conteudo .= '';            // conta (13)                                    348 354        9(07)
   $conteudo .= '';            // dac (13)                                        355 355        9(01)
   $conteudo .= '';            // valor (13)                                    356 368     9(11)V9(02)

   $conteudo .= '';            // agencia (14)                                    369 372        9(04)    
   $conteudo .= '';            // conta (14)                                    373 379        9(07)
   $conteudo .= '';            // dac (14)                                        380 380        9(01)
   $conteudo .= '';            // valor (14)                                    381 393     9(11)V9(02)

   $conteudo .= '';            // tipo de valor informado NOTA 32                394 394        9(01)
   $conteudo .= '';            // numero sequencial de registro no arquivo        395 400        9(06)                            
   */
   /*
   IMPORTANTE:
   · O arquivo pode conter tanto títulos de cobrança normal como títulos de cobrança com rateio de crédito;
   · Para instruções de protesto, os títulos com rateio de crédito seguem os mesmos procedimentos dos títulos sem rateio;
   · O rateio de crédito pode ser por percentual ou em valor (vide Nota 32);
   · Títulos com rateio de crédito – Para cada Registro Detalhe Obrigatório (Tipo de Registro “1”) podem ser utilizados até 3 (três) Registros
   Tipo “4” para indicação dos detalhes do rateio de crédito (máximo de 30 contas por título). Caso a Agência/Conta/Dac do cedente e Nº
   da Carteira/Nosso Número do título, informados nos registros Tipo “4” não coincidam com os dados do respectivo registro Tipo “1”, a
   entrada do título é aceita sem rateio de crédito (os registros Tipo “4” são desprezados);
   · A entrada do título é rejeitada nos casos em que a soma dos valores ou percentuais de rateio (informados nos registros Tipo “4”)
   ultrapasse o valor nominal do título do registro Tipo “1”;
   · Caso os registros de rateio (Tipo “4”) não apresentem agências/contas de crédito, os registros Tipo 4 são desprezados e o título será
   tratado como entrada de cobrança normal, sem rateio;
   · A agência/conta do cedente e sua respectiva agência/conta centralizadora de crédito da cobrança, não podem estar entre as
   agências/contas beneficiárias do rateio de crédito;
   · Títulos com rateio de crédito não aceitam instruções de Desconto ou de Abatimento e não permitem alteração dos valores nominal e de
   crédito;
   · Não haverá incidência de CPMF quando a raiz do CPNJ da conta do cedente for igual a da conta de crédito do rateio.
   */
   /*
   $conteudo .= chr(13).chr(10); //essa é a quebra de linha

   ## REGISTRO DETALHE (OPCIONAL)

                                   #NOME DO CAMPO        #SIGNIFICADO            #POSICAO    #PICTURE
   $conteudo .= 5;              // tipo de registro    id reg transac            001 001        9(01)
   $conteudo .= '';             //    endereco de email    do sacado NOTA 29        002 121        X(120)
   $conteudo .= '';             // codigo de inscr    sacador/avalista NOTA 30    122 123        9(02)
   $conteudo .= '';             // numero de inscr    sacador/avalista NOTA 30    124 137        9(14)
   $conteudo .= '';             // logradouro sacador/avalista NOTA 30            138 177        X(40)
   $conteudo .= '';             // bairro sacador/avalista NOTA 30                178 189        X(12)
   $conteudo .= '';             // cep sacador/avalista NOTA 30                190 197     9(08)
   $conteudo .= '';             // cidade    sacador/avalista NOTA 30            198 212        X(15)
   $conteudo .= '';             // estado sacador/avalista NOTA 30                213 214        X(02)
   $conteudo .= complementoRegistro(180,"brancos");// brancos complem regist    215 394        X(180)
   $conteudo .= '';              // numero sequencial do registro no arquivo    395    400        9(06)
   */
   /*
   IMPORTANTE:
   · Este registro é opcional e deverá ser enviado apenas quando o Cedente desejar que o BOLETO de
   cobrança seja entregue pelo Banco Itaú ao Sacado por e-mail e/ou, em substituição ou complemento
   dos dados referentes ao Sacador/Avalista, quando de sua existência; e
   · Sempre que for informado, deverá ser na seqüência do registro obrigatório de cobrança (Código de
   Registro ‘1’) a que seus dados se referem;
   · As informações constantes neste registro não são informadas no “arquivo retorno”;
   · Quando as informações referentes ao "Sacador / Avalista" tiverem sido indicadas nos registros “1” e “5”,
   prevalecerá sempre a do registro “5";
   · Na fase de testes não é possível o envio do BOLETO via e-mail, para tanto, este será emitido e
   consistido fisicamente.
   */

}// fecha loop de clientes

//$conteudo .= chr(13).chr(10); //essa é a quebra de linha

## REGISTRO TRAILER DE ARQUIVO
/*
CORRETO LAYOUT ITAU
                               #NOME DO CAMPO        #SIGNIFICADO            #POSICAO    #PICTURE
$conteudo .= 9;                //    tipo de registro    id registro trailer        001 001        9(01)
$conteudo .= complementoRegistro(393,"zeros");    //     brancos                complemento de registro    002 394        X(393)    
$conteudo .= zeros($sequencial,6);         //     nº sequencial        do regsitro no arquivo    395 400        9(06)
*/

/* TENTATIVA SEM SUCESSO
$conteudo .= '9201341          000000000000000000000000000000          000000000000000000000000000000                                                  000000000000000000000000000000          000000000000000000000000000000000010000000800000000000000                                                                                                                                                                '.sequencial($i);
*/

// Em nosso exemplo, nós vamos abrir o arquivo $filename
// em modo de adição. O ponteiro do arquivo estará no final
// do arquivo, e é pra lá que $conteudo irá quando o 
// escrevermos com fwrite().
// 'w+' e 'w' apaga tudo e escreve do zero
// 'a+' comeca a escrever do inicio para o fim preservando o conteudo do arquivo

if (!$handle = fopen($filename, 'w+')) 
{
    erro("Não foi possível abrir o arquivo ($filename)");
}

// Escreve $conteudo no nosso arquivo aberto.
if (fwrite($handle, "$conteudo") === FALSE) 
{
   erro("Não foi possível escrever no arquivo ($filename)");
}
fclose($handle);

msg("Arquivo de remessa gerado com sucesso!");

?>

 

E se alguém puder ajudar no meu caso com o código para gerar arquivo remessa do Banco do Brasil CNAB com 240 Posições ficarei grato.

 

Abraço!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

o script ta dando o seguinte erro

 

Warning: fopen(PATHsistemas/iMoveG/financeiro/arquivos/280810.rm) [function.fopen]: failed to open stream: No such file or directory in C:\xampp\htdocs\banco.php on line 337

 

Fatal error: Call to undefined function erro() in C:\xampp\htdocs\banco.php on line 339

 

alguem pode me ajudar?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Jão,

 

Acredito que você tem mudar essa linha:

define("REMESSA",PATH."sistemas/iMoveG/financeiro/arquivos/",true);

 

Talvez existão mais mudanças no código a fazer, se alguém tiver sucesso compartilhe a solução aqui no Fórum com o pessoal.

 

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, a remessa não é uma quantidade de boletos que você envia p/ o banco para ele aprovar? Recentemente implementei um boleto no meu cliente e fiz 10 compras onde gerei 10 boletos de valores diferentes. então salvei os 10 arquivos em .pdf e enviei para o banco e eles retornaram que estava tudo OK, e que eu já poderia implementar. Pois o que + importa p/ o banco é o nosso numero. o resto é so frescura.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, o arquivo de remessa que você fala é p/ o bb aprovar o seu boleto certo ?

 

Se a resposta for SIM, vou adiantar que aconteceu a mesma coisa com um do boletophp, que eu criei p/ o banco santander. fiz apenas algumas alterações p/ entrar de acordo com o manual que me enviaram, e ao final me pediram uma 'remessa de boletos p/ aprovação'. o que eu fiz?

 

Instalei o pdfcreator, imprimir 10 boletos nele(gerou 10 boletos .pdf), anexei os 10 boletos no e-mail e enviei p/ o responsável.

Depois de 4 dias que ele não havia respondido, entrei em contato via fone e ele no mesmo dia me enviou um e-mail falando que os boletos estava aprovados para produção.

Compartilhar este post


Link para o post
Compartilhar em outros sites
  Em 07/12/2010 at 10:08, André da Silva disse:

Sim, o arquivo de remessa que você fala é p/ o bb aprovar o seu boleto certo ?

 

Se a resposta for SIM, vou adiantar que aconteceu a mesma coisa com um do boletophp, que eu criei p/ o banco santander. fiz apenas algumas alterações p/ entrar de acordo com o manual que me enviaram, e ao final me pediram uma 'remessa de boletos p/ aprovação'. o que eu fiz?

 

Instalei o pdfcreator, imprimir 10 boletos nele(gerou 10 boletos .pdf), anexei os 10 boletos no e-mail e enviei p/ o responsável.

Depois de 4 dias que ele não havia respondido, entrei em contato via fone e ele no mesmo dia me enviou um e-mail falando que os boletos estava aprovados para produção.

 

Não é isso não André!

Você está falando de criar boletos e mandar para o banco verificar se eles estão no padrão e dai eles aprovam.

Mas não tem nada a ver com a questão aqui... o que todos estão procurando é uma forma de registrar boletos junto ao banco.

Boletos registrados ou "cobrança registrada" é aquela em que você passa informações para o banco e ele se encarrega de cobrar seus clientes.

Para passar informações para o banco cada banco aceita um formato de arquivo diferente.

Este arquivo é um arquivo de texto que contém dados dos clientes, valores dos boletos etc, etc...

Para enviar este arquivo para o banco você deve gerar ele em PHP e então usar um sistema que o Banco disponibiliza para mandar o arquivo e então o banco vai registrar seus boletos.

Uma coisa é uma coisa, outra coisa é outra coisa beleza??? hehehe

 

Também quero gerar remessas para o Banco do Brasil.

Se alguém souber tudo mastigadinho e colocar aqui nós vamos ficar ricos e agradecer muito!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

REALIZEI O TESTE E FUNCIONOU COM ALGUMAS MODIFICAÇÕES

 

 

 

 

 

<?php

/*

* @descr: Gera o arquivo de remessa para cobranca no padrao CNAB 400 vers. 7.0 ITAU

*/

 

function limit($palavra,$limite)

{

if(strlen($palavra) >= $limite)

{

$var = substr($palavra, 0,$limite);

}

else

{

$max = (int)($limite-strlen($palavra));

$var = $palavra.complementoRegistro($max,"brancos");

}

return $var;

}

 

function sequencial($i)

{

if($i < 10)

{

return zeros(0,5).$i;

}

else if($i > 10 && $i < 100)

{

return zeros(0,4).$i;

}

else if($i > 100 && $i < 1000)

{

return zeros(0,3).$i;

}

else if($i > 1000 && $i < 10000)

{

return zeros(0,2).$i;

}

else if($i > 10000 && $i < 100000)

{

return zeros(0,1).$i;

}

}

 

function zeros($min,$max)

{

$x = ($max - strlen($min));

for($i = 0; $i < $x; $i++)

{

$zeros .= '0';

}

return $zeros.$min;

}

 

function complementoRegistro($int,$tipo)

{

if($tipo == "zeros")

{

$space = '';

for($i = 1; $i <= $int; $i++)

{

$space .= '0';

}

}

else if($tipo == "brancos")

{

$space = '';

for($i = 1; $i <= $int; $i++)

{

$space .= ' ';

}

}

 

return $space;

}

 

$fusohorario = 3; // como o servidor de hospedagem é a dreamhost pego o fuso para o horario do brasil

$timestamp = mktime(date("H") - $fusohorario, date("i"), date("s"), date("m"), date("d"), date("Y"));

 

$DATAHORA['PT'] = gmdate("d/m/Y H:i:s", $timestamp);

$DATAHORA['EN'] = gmdate("Y-m-d H:i:s", $timestamp);

$DATA['PT'] = gmdate("d/m/Y", $timestamp);

$DATA['EN'] = gmdate("Y-m-d", $timestamp);

$DATA['DIA'] = gmdate("d",$timestamp);

$DATA['MES'] = gmdate("m",$timestamp);

$DATA['ANO'] = gmdate("y",$timestamp);

$HORA = gmdate("H:i:s", $timestamp);

$HORA1 = gmdate("His", $timestamp);

 

define("REMESSA",$PATH."imagem/remessa/",true);

 

$filename = REMESSA.$DATA['DIA'].$DATA['MES'].$DATA['ANO'].$HORA1.".txt";

$conteudo = '';

 

## REGISTRO HEADER

#NOME DO CAMPO #SIGNIFICADO #POSICAO #PICTURE

$conteudo .= '0'; // tipo de registro id registro header 001 001 9(01)

$conteudo .= 1; // operacao tipo operacao remessa 002 002 9(01)

$conteudo .= 'REMESSA'; // literal remessa escr. extenso 003 009 X(07)

$conteudo .= '01'; // codigo servico id tipo servico 010 011 9(02)

$conteudo .= limit('COBRANCA',15); // literal cobranca escr. extenso 012 026 X(15)

$conteudo .= 1234; // agencia mantenedora conta 027 030 9(04)

$conteudo .= complementoRegistro(2,"zeros");// zeros complemento d registro 031 032 9(02)

$conteudo .= '01234'; // conta conta da empresa 033 037 9(05)

$conteudo .= 2; // dac digito autoconf conta 038 038 9(01)

$conteudo .= complementoRegistro(8,"brancos");// complemento registro 039 046 X(08)

$conteudo .= limit('NOME DA SUA EMPRESA',30);//nome da empresa 047 076 X(30)

$conteudo .= 341; // codigo banco Nº BANCO CÂMARA COMP. 077 079 9(03)

$conteudo .= limit('BANCO ITAU SA',15); // nome do banco por ext. 080 094 X(15)

$conteudo .= $DATA['DIA'].$DATA['MES'].$DATA['ANO'];//data geracao arquivo 095 100 9(06)

$conteudo .= complementoRegistro(294,"brancos");// complemento de registr 101 394 X(294)

$conteudo .= sequencial(1); // numero sequencial registro no arquivo 395 400 9(06)

 

$conteudo .= chr(13).chr(10); //essa é a quebra de linha

 

### DADOS DOS CLIENTES PARA TESTE

$clientes[] = array("BOLETO001","Cliente A","11111111111","100,00");

$clientes[] = array("BOLETO002","Cliente B","22222222222","200,00");

$clientes[] = array("BOLETO003","Cliente C","33333333333","300,00");

$clientes[] = array("BOLETO004","Cliente D","44444444444","400,00");

 

$i = 2;

foreach($clientes as $cliente)

{

## REGISTRO DETALHE (OBRIGATORIO)

#NOME DO CAMPO #SIGNIFICADO #POSICAO #PICTURE

$conteudo .= 1; // tipo registro id registro transacac. 001 001 9(01)

$conteudo .= '02'; // codigo inscricao tipo inscricao empresa 002 003 9(02)

$conteudo .= '00965290700010'; // cnpj da empresa 004 017 9(14)

$conteudo .= 6896; // agencia mantenedora da conta 018 021 9(04)

$conteudo .= '00'; // zeros complemento registro 022 023 9(02)

$conteudo .= '08436'; // conta numero da conta 024 028 9(05)

$conteudo .= 2; // dac dig autoconf conta 029 029 9(01)

$conteudo .= complementoRegistro(4,"brancos"); // brancos complemento registro 030 033 X(04)

$conteudo .= complementoRegistro(4,"zeros"); // CÓD.INSTRUÇÃO/ALEGAÇÃO A SER CANC NOTA 27 034 037 9(04)

$conteudo .= limit($cliente[0],25); // USO / IDENT. DO TÍTULO NA EMPRESA NOTA 2 038 062 X(25)

$conteudo .= complementoRegistro(8,"zeros"); // NOSSO NUMERO / ID TITULO DO BANCO NOTA 3 063 070 9(08)

$conteudo .= '0000000000000'; //QTDE MOEDA NOTA 4 071 083 9(08)V9(5)

$conteudo .= 109; // nº da carteira nº carteira banco 084 086 9(03)

$conteudo .= complementoRegistro(21,"brancos"); // uso do banco ident. oper. no banco 087 107 X(21)

$conteudo .= 'I'; // carteira codigo da carteira NOTA 5 108 108 X(01)

$conteudo .= '01'; // codigo ocorrencia / ident da ocorrencia NOTA 6 109 110 9(02)

$conteudo .= limit('',10); // nº documento / nº documento de cobranca NOTA 18 111 120 X(10)

$conteudo .= '310808'; // vencimento data venc. titulo NOTA 7 121 126 9(06)

$conteudo .= '0000000000000'; // valor titulo valor nominal NOTA 8 127 139 9(11)V9(2)

$conteudo .= 341; // codigo do banco Nº BANCO CÂMARA COMP. 140 142 9(03)

$conteudo .= zeros(0,5); //agencia cobradora / ONDE TÍTULO SERÁ COBRADO NOTA 9 143 147 9(05)

$conteudo .= 15; // especie especie do titulo NOTA 10 148 149 X(02)

$conteudo .= 'A'; // aceite ident de titutlo aceito (A=aceite,N=nao aceite) 150 150 X(01)

$conteudo .= '020808'; // data emissao titulo NOTA 31 151 156 9(06)

$conteudo .= '88'; // instrucao 1 NOTA 11 157 158 X(02)

$conteudo .= '86'; // instrucao 2 NOTA 11 159 160 X(02)

$conteudo .= '0000000000000';// juros de 1 dia valor de mora NOTA 12 161 173 9(11)V9(02)

$conteudo .= zeros(0,6); // desconto até data limite p/ descont 174 179 9(06)

$conteudo .= '0000000000000';// valor desconto a ser concedido NOTA 13 180 192 9(11)V9(02)

$conteudo .= '0000000000000'; // valor I.O.F RECOLHIDO P NOTAS SEGURO NOTA 14 193 205 9(11)V9(02)

$conteudo .= '0000000000000'; // abatimento a ser concedido NOTA 13 206 218 9(11)V9(02)

$conteudo .= '02'; // codigo de inscricao tipo de insc. sacado 01=CPF 02=CNPJ 219 220 9(02)

$conteudo .= '00999999700010'; // numero de inscricao cpf ou cnpj 221 234 9(14)

$conteudo .= limit($cliente[1],30); // nome nome do sacado NOTA 15 235 264 X(30)

$conteudo .= complementoRegistro(10,"brancos");//NOTA 15 complem regist 265 274 X(10)

$conteudo .= limit('',40); // logradouro rua numero e compl sacado 275 314 X(40)

$conteudo .= limit('',12); // bairro bairro do sacado 315 326 X(12)

$conteudo .= zeros(0,8); // cep cep do sacado 327 334 9(08)

$conteudo .= limit('',15); // cidade cidade do sacado 335 349 X(15)

$conteudo .= limit('',2); // estado uf do sacado 350 351 X(02)

$conteudo .= limit('',30); // sacador/avalista sacad ou aval. NOTA 16 352 381 X(30)

$conteudo .= complementoRegistro(4,"brancos");// complemento de regist. 382 385 X(04)

$conteudo .= zeros(0,6); // data de mora data de mora 386 391 9(06)

$conteudo .= zeros(0,2); // prazo qtde de dias NOTA 11(A) 392 393 9(02)

$conteudo .= complementoRegistro(1,"brancos"); // brancos complemento de registr. 394 394 X(01)

$conteudo .= sequencial($i++); // numero sequencial do registro no arquivo 395 400 9(06)

 

$conteudo .= chr(13).chr(10); //essa é a quebra de linha

/*

## REGISTRO DETALHE (OPCIONAL)

 

#NOME DO CAMPO #SIGNIFICADO #POSICAO #PICTURE

$conteudo .= 4; // tipo transacao id do registro 001 001 9(01)

$conteudo .= ''; // codigo de inscr tipo inscr. empresa NOTA 1 002 003 9(02)

$conteudo .= ''; // numero de inscr cpf ou cnpj 004 017 9(14)

$conteudo .= ''; // agencia mantenedora conta 018 021 9(04)

$conteudo .= '00'; // zeros complemento de registro 022 023 9(02)

$conteudo .= ''; // conta da empresa 024 028 9(05)

$conteudo .= ''; // DAC autoconf conta 029 029 9(01)

$conteudo .= 109; // n carteira no banco NOTA 5 030 032 9(03)

$conteudo .= ''; // nosso número id titulo banco NOTA 3 033 040 9(08)

$conteudo .= ''; // dac nosso numero NOTA 3 041 041 9(01)

$conteudo .= ''; // sequencia n seq. tipo 4 titulo 042 043 9(02)

 

$conteudo .= ''; // agencia (01) agencia conta credito 044 047 9(04)

$conteudo .= ''; // conta (01) conta p credito 048 054 9(07)

$conteudo .= ''; // dac (1) autoconf conta credito 055 055 9(01)

$conteudo .= ''; // valor (1) valor p credito NOTA 32 056 068 9(11)V9(02)

 

$conteudo .= ''; // agencia (2) 069 072 9(04)

$conteudo .= ''; // conta (2) 073 079 9(07)

$conteudo .= ''; // dac (2) 080 080 9(01)

$conteudo .= ''; // valor (2) 081 093 9(11)V9(02)

 

$conteudo .= ''; // agencia (3) 094 097 9(04)

$conteudo .= ''; // conta (3) 098 104 9(07)

$conteudo .= ''; // dac (3) 105 105 9(01)

$conteudo .= ''; // valor (3) 106 118 9(11)V9(02)

 

$conteudo .= ''; // agencia (4) 119 122 9(04)

$conteudo .= ''; // conta (4) 123 129 9(07)

$conteudo .= ''; // dac (4) 130 130 9(01)

$conteudo .= ''; // valor (4) 131 143 9(11)V9(02)

 

$conteudo .= ''; // agencia (5) 144 147 9(04)

$conteudo .= ''; // conta (5) 148 154 9(07)

$conteudo .= ''; // dac (5) 155 155 9(01)

$conteudo .= ''; // valor (5) 156 168 9(11)V9(02)

 

$conteudo .= ''; // agencia (6) 169 172 9(04)

$conteudo .= ''; // conta (6) 173 179 9(07)

$conteudo .= ''; // dac (6) 180 180 9(01)

$conteudo .= ''; // valor (6) 181 193 9(11)V9(02)

 

$conteudo .= ''; // agencia (7) 194 197 9(04)

$conteudo .= ''; // conta (7) 198 204 9(07)

$conteudo .= ''; // dac (7) 205 205 9(01)

$conteudo .= ''; // valor (7) 206 218 9(11)V9(02)

 

$conteudo .= ''; // agencia (8) 219 222 9(04)

$conteudo .= ''; // conta (8) 223 229 9(07)

$conteudo .= ''; // dac (8) 230 230 9(01)

$conteudo .= ''; // valor (8) 231 243 9(11)V9(02)

 

$conteudo .= ''; // agencia (9) 244 247 9(04)

$conteudo .= ''; // conta (9) 248 254 9(07)

$conteudo .= ''; // dac (9) 255 255 9(01)

$conteudo .= ''; // valor (9) 256 268 9(11)V9(02)

 

$conteudo .= ''; // agencia (10) 269 272 9(04)

$conteudo .= ''; // conta (10) 273 079 9(07)

$conteudo .= ''; // dac (10) 280 280 9(01)

$conteudo .= ''; // valor (10) 281 293 9(11)V9(02)

 

$conteudo .= ''; // agencia (11) 294 297 9(04)

$conteudo .= ''; // conta (11) 298 304 9(07)

$conteudo .= ''; // dac (11) 305 305 9(01)

$conteudo .= ''; // valor (11) 306 318 9(11)V9(02)

 

$conteudo .= ''; // agencia (12) 319 322 9(04)

$conteudo .= ''; // conta (12) 323 329 9(07)

$conteudo .= ''; // dac (12) 330 330 9(01)

$conteudo .= ''; // valor (12) 331 343 9(11)V9(02)

 

$conteudo .= ''; // agencia (13) 344 347 9(04)

$conteudo .= ''; // conta (13) 348 354 9(07)

$conteudo .= ''; // dac (13) 355 355 9(01)

$conteudo .= ''; // valor (13) 356 368 9(11)V9(02)

 

$conteudo .= ''; // agencia (14) 369 372 9(04)

$conteudo .= ''; // conta (14) 373 379 9(07)

$conteudo .= ''; // dac (14) 380 380 9(01)

$conteudo .= ''; // valor (14) 381 393 9(11)V9(02)

 

$conteudo .= ''; // tipo de valor informado NOTA 32 394 394 9(01)

$conteudo .= ''; // numero sequencial de registro no arquivo 395 400 9(06)

*/

/*

IMPORTANTE:

· O arquivo pode conter tanto títulos de cobrança normal como títulos de cobrança com rateio de crédito;

· Para instruções de protesto, os títulos com rateio de crédito seguem os mesmos procedimentos dos títulos sem rateio;

· O rateio de crédito pode ser por percentual ou em valor (vide Nota 32);

· Títulos com rateio de crédito – Para cada Registro Detalhe Obrigatório (Tipo de Registro “1”) podem ser utilizados até 3 (três) Registros

Tipo “4” para indicação dos detalhes do rateio de crédito (máximo de 30 contas por título). Caso a Agência/Conta/Dac do cedente e Nº

da Carteira/Nosso Número do título, informados nos registros Tipo “4” não coincidam com os dados do respectivo registro Tipo “1”, a

entrada do título é aceita sem rateio de crédito (os registros Tipo “4” são desprezados);

· A entrada do título é rejeitada nos casos em que a soma dos valores ou percentuais de rateio (informados nos registros Tipo “4”)

ultrapasse o valor nominal do título do registro Tipo “1”;

· Caso os registros de rateio (Tipo “4”) não apresentem agências/contas de crédito, os registros Tipo 4 são desprezados e o título será

tratado como entrada de cobrança normal, sem rateio;

· A agência/conta do cedente e sua respectiva agência/conta centralizadora de crédito da cobrança, não podem estar entre as

agências/contas beneficiárias do rateio de crédito;

· Títulos com rateio de crédito não aceitam instruções de Desconto ou de Abatimento e não permitem alteração dos valores nominal e de

crédito;

· Não haverá incidência de CPMF quando a raiz do CPNJ da conta do cedente for igual a da conta de crédito do rateio.

*/

/*

$conteudo .= chr(13).chr(10); //essa é a quebra de linha

 

## REGISTRO DETALHE (OPCIONAL)

 

#NOME DO CAMPO #SIGNIFICADO #POSICAO #PICTURE

$conteudo .= 5; // tipo de registro id reg transac 001 001 9(01)

$conteudo .= ''; // endereco de email do sacado NOTA 29 002 121 X(120)

$conteudo .= ''; // codigo de inscr sacador/avalista NOTA 30 122 123 9(02)

$conteudo .= ''; // numero de inscr sacador/avalista NOTA 30 124 137 9(14)

$conteudo .= ''; // logradouro sacador/avalista NOTA 30 138 177 X(40)

$conteudo .= ''; // bairro sacador/avalista NOTA 30 178 189 X(12)

$conteudo .= ''; // cep sacador/avalista NOTA 30 190 197 9(08)

$conteudo .= ''; // cidade sacador/avalista NOTA 30 198 212 X(15)

$conteudo .= ''; // estado sacador/avalista NOTA 30 213 214 X(02)

$conteudo .= complementoRegistro(180,"brancos");// brancos complem regist 215 394 X(180)

$conteudo .= ''; // numero sequencial do registro no arquivo 395 400 9(06)

*/

/*

IMPORTANTE:

· Este registro é opcional e deverá ser enviado apenas quando o Cedente desejar que o BOLETO de

cobrança seja entregue pelo Banco Itaú ao Sacado por e-mail e/ou, em substituição ou complemento

dos dados referentes ao Sacador/Avalista, quando de sua existência; e

· Sempre que for informado, deverá ser na seqüência do registro obrigatório de cobrança (Código de

Registro ‘1’) a que seus dados se referem;

· As informações constantes neste registro não são informadas no “arquivo retorno”;

· Quando as informações referentes ao "Sacador / Avalista" tiverem sido indicadas nos registros “1” e “5”,

prevalecerá sempre a do registro “5";

· Na fase de testes não é possível o envio do BOLETO via e-mail, para tanto, este será emitido e

consistido fisicamente.

*/

 

}// fecha loop de clientes

 

//$conteudo .= chr(13).chr(10); //essa é a quebra de linha

 

## REGISTRO TRAILER DE ARQUIVO

/*

CORRETO LAYOUT ITAU

#NOME DO CAMPO #SIGNIFICADO #POSICAO #PICTURE

$conteudo .= 9; // tipo de registro id registro trailer 001 001 9(01)

$conteudo .= complementoRegistro(393,"zeros"); // brancos complemento de registro 002 394 X(393)

$conteudo .= zeros($sequencial,6); // nº sequencial do regsitro no arquivo 395 400 9(06)

*/

 

/* TENTATIVA SEM SUCESSO

$conteudo .= '9201341 000000000000000000000000000000 000000000000000000000000000000 000000000000000000000000000000 000000000000000000000000000000000010000000800000000000000 '.sequencial($i);

*/

 

// Em nosso exemplo, nós vamos abrir o arquivo $filename

// em modo de adição. O ponteiro do arquivo estará no final

// do arquivo, e é pra lá que $conteudo irá quando o

// escrevermos com fwrite().

// 'w+' e 'w' apaga tudo e escreve do zero

// 'a+' comeca a escrever do inicio para o fim preservando o conteudo do arquivo

 

if (!$handle = fopen($filename, 'w+'))

{

erro("Não foi possível abrir o arquivo ($filename)");

}

 

// Escreve $conteudo no nosso arquivo aberto.

if (fwrite($handle, "$conteudo") === FALSE)

{

echo "Não foi possível escrever no arquivo ($filename)";

}

fclose($handle);

 

echo "Arquivo de remessa gerado com sucesso!";

 

?>

 

 

 

 

 

 

 

 

 

  Em 29/08/2010 at 16:19, Larry disse:

Jão,

 

Acredito que você tem mudar essa linha:

define("REMESSA",PATH."sistemas/iMoveG/financeiro/arquivos/",true);

 

Talvez existão mais mudanças no código a fazer, se alguém tiver sucesso compartilhe a solução aqui no Fórum com o pessoal.

 

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Recentemente precisei implementar o processamento de arquivos de retorno de boleto bancário para o meu Sistema de Inscrições On-Line. Assim, resolvi criar um projeto para disponibilizar os fontes para a comunidade e também receber contribuições no desenvolvimento do mesmo, como ocorre com o projeto BoletoPHP.

 

Desta forma nasce o Retorno-BoletoPHP, um projeto em PHP 5+ que conta com um conjunto de classes para processamento de arquivos de retorno de títulos de cobrança (boleto bancário) de bancos brasileiros. O projeto utiliza Design Patters para permitir sua fácil extensão, sem modificar as classes que já estão funcionando, no conceito “Fechado para alteração e aberto para extensão”.

 

Atualmente estão implementados os padrões FEBRABAN/CNAB400 E FEBRABAN/CNAB240.

 

Acessem o projeto em http://github.com/manoelcampos/Retorno-BoletoPHP

 

Um exemplo online está disponível aqui.

 

Se inscreve no grupo de discussão do projeto para tirar dúvidas.

 

retorno-boletophp

Visitar este grupo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá bom dia.

 

Você teria como me passar o arquivo php para fazer a leitura do CNAB 400 do Itau..

 

Abraço

 

  Em 26/08/2010 at 23:56, Larry disse:

Olá Pessoal!

 

Esse é meu primeiro post aqui no imasters.

 

Eu estou implantando boletos para cobrança em meu site utilizando o Boletophp que é gratuito. Consigo gerar os boletos certinho é muito legal.

 

Mas o meu Banco (no caso Banco do Brasil) esta exigindo que eu envie o arquivo remessa para eles, mas eu não sei gerar isso em PHP. Achei na net em JAVA, ASP, Delphi mas não em PHP.

 

E como não queria ficar na mão de pagseguro e afins, gostaria de saber se alguém já fez esse tipo de programação que gera o arquivo remessa para enviar para o Banco.

 

O padrão que preciso é CNAB 240 POSIÇÕES.

 

Se alguém precisar eu encontrei na net o do Banco Itaú que é CNAB 400 POSIÇÕES, e tenho também em PHP a leitura do arquivo retorno.

 

É isso camaradas, quem sabe a gente não consegue fazer uma coisa completa totalmente gratuita pra todo mundo usar, eu me proponho a ajudar.

 

Abraço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá amigos, gostaria de saber se posso usar o código abaixo para gerar arquivos remessa para o santander CNAB400

ou se ele é especifico para itaú, e se for quais alterações tenho que fazer para funcionar com o santander?

e ainda tem a questão do convênio, 7, 6 digitos.. isso é relevante para remessa?

 

desde já agradeço a todos.

 

  Em 27/08/2010 at 22:21, Larry disse:

Aí Rodrigo, segue o código para gerar arquivo remessa do Banco Itaú. Não testei.

 

<?php
/*
* @descr: Gera o arquivo de remessa para cobranca no padrao CNAB 400 vers. 7.0 ITAU
*/

function limit($palavra,$limite)
{
   if(strlen($palavra) >= $limite)
   {
       $var = substr($palavra, 0,$limite);
   }
   else
   {
       $max = (int)($limite-strlen($palavra));
       $var = $palavra.complementoRegistro($max,"brancos");
   }
   return $var;
}

function sequencial($i)
{
   if($i < 10)
   {
       return zeros(0,5).$i;
   }
   else if($i > 10 && $i < 100)
   {
       return zeros(0,4).$i;
   }
   else if($i > 100 && $i < 1000)
   {
       return zeros(0,3).$i;
   }
   else if($i > 1000 && $i < 10000)
   {
       return zeros(0,2).$i;
   }
   else if($i > 10000 && $i < 100000)
   {
       return zeros(0,1).$i;
   }
}

function zeros($min,$max)
{
   $x = ($max - strlen($min));
   for($i = 0; $i < $x; $i++)
   {
       $zeros .= '0';
   }
   return $zeros.$min;
}

function complementoRegistro($int,$tipo)
{
   if($tipo == "zeros")
   {
       $space = '';
       for($i = 1; $i <= $int; $i++)
       {
           $space .= '0';
       }
   }
   else if($tipo == "brancos")
   {
       $space = '';
       for($i = 1; $i <= $int; $i++)
       {
           $space .= ' ';
       }
   }

   return $space;
}

$fusohorario = 3; // como o servidor de hospedagem é a dreamhost pego o fuso para o horario do brasil
$timestamp = mktime(date("H") - $fusohorario, date("i"), date("s"), date("m"), date("d"), date("Y"));

$DATAHORA['PT'] = gmdate("d/m/Y H:i:s", $timestamp);
$DATAHORA['EN'] = gmdate("Y-m-d H:i:s", $timestamp);
$DATA['PT'] = gmdate("d/m/Y", $timestamp);
$DATA['EN'] = gmdate("Y-m-d", $timestamp);
$DATA['DIA'] = gmdate("d",$timestamp);
$DATA['MES'] = gmdate("m",$timestamp);
$DATA['ANO'] = gmdate("y",$timestamp);
$HORA = gmdate("H:i:s", $timestamp);

define("REMESSA",PATH."sistemas/iMoveG/financeiro/arquivos/",true);

$filename = REMESSA.$DATA['DIA'].$DATA['MES'].$DATA['ANO'].".rm";
$conteudo = '';

## REGISTRO HEADER
                               #NOME DO CAMPO        #SIGNIFICADO            #POSICAO    #PICTURE
$conteudo .= '0';             //    tipo de registro    id registro header        001 001        9(01) 
$conteudo .= 1;             //     operacao            tipo operacao remessa    002 002        9(01)
$conteudo .= 'REMESSA';        //    literal remessa        escr. extenso            003 009        X(07)
$conteudo .= '01';            //     codigo servico        id tipo servico            010 011        9(02)
$conteudo .= limit('COBRANCA',15);    //     literal cobranca    escr. extenso    012 026        X(15)
$conteudo .= 1234;            //  agencia                mantenedora conta        027 030        9(04)
$conteudo .= complementoRegistro(2,"zeros");// zeros complemento d registro    031 032        9(02)
$conteudo .= '01234';        //     conta                conta da empresa        033 037        9(05)
$conteudo .= 2;                //    dac                    digito autoconf conta    038 038        9(01)
$conteudo .= complementoRegistro(8,"brancos");//    complemento registro     039 046        X(08)
$conteudo .= limit('NOME DA SUA EMPRESA',30);//nome da empresa            047 076        X(30)
$conteudo .= 341;            // codigo banco            Nº BANCO CÂMARA COMP.    077 079        9(03)
$conteudo .= limit('BANCO ITAU SA',15);            //    nome do banco por ext.    080 094        X(15)
$conteudo .= $DATA['DIA'].$DATA['MES'].$DATA['ANO'];//data geracao arquivo    095 100        9(06)
$conteudo .= complementoRegistro(294,"brancos");// complemento de registr    101 394        X(294)
$conteudo .= sequencial(1);        // numero sequencial    registro no arquivo        395 400        9(06)

$conteudo .= chr(13).chr(10); //essa é a quebra de linha

### DADOS DOS CLIENTES PARA TESTE
$clientes[] = array("BOLETO001","Cliente A","11111111111","100,00");
$clientes[] = array("BOLETO002","Cliente B","22222222222","200,00");
$clientes[] = array("BOLETO003","Cliente C","33333333333","300,00");
$clientes[] = array("BOLETO004","Cliente D","44444444444","400,00");

$i = 2;
foreach($clientes as $cliente)
{
   ## REGISTRO DETALHE (OBRIGATORIO)
                                                                           #NOME DO CAMPO                #SIGNIFICADO            #POSICAO    #PICTURE
   $conteudo .= 1;                                                        //    tipo registro                id registro transacac.    001 001        9(01)
   $conteudo .= '02';                                                    //     codigo inscricao            tipo inscricao empresa    002 003        9(02)
   $conteudo .= '00965290700010';                                        //    cnpj da empresa                                        004 017        9(14)
   $conteudo .= 6896;                                                    //     agencia                        mantenedora da conta    018 021        9(04)
   $conteudo .= '00';                                                    //    zeros                        complemento registro    022 023        9(02)
   $conteudo .= '08436';                                                //     conta                        numero da conta            024 028        9(05)
   $conteudo .= 2;                                                        //     dac                            dig autoconf conta        029 029        9(01)
   $conteudo .= complementoRegistro(4,"brancos");                        //     brancos                        complemento registro     030 033        X(04)
   $conteudo .= complementoRegistro(4,"zeros");                        //  CÓD.INSTRUÇÃO/ALEGAÇÃO A SER CANC NOTA 27             034 037        9(04)
   $conteudo .= limit($cliente[0],25);                                    //     USO / IDENT. DO TÍTULO NA EMPRESA NOTA 2            038 062        X(25)
   $conteudo .= complementoRegistro(8,"zeros");                        //     NOSSO NUMERO / ID TITULO DO BANCO NOTA 3            063 070        9(08)
   $conteudo .= '0000000000000';                                        //QTDE MOEDA            NOTA 4                            071 083        9(08)V9(5)
   $conteudo .= 109;                                                    //     nº da carteira        nº carteira banco                084 086        9(03)            
   $conteudo .= complementoRegistro(21,"brancos");                        // uso do banco ident. oper. no banco                    087 107        X(21)
   $conteudo .= 'I';                                                    //     carteira codigo da carteira NOTA 5                    108 108        X(01)
   $conteudo .= '01';                                                     // codigo ocorrencia / ident da ocorrencia NOTA 6        109 110        9(02)
   $conteudo .= limit('',10);                                             // nº documento / nº documento de cobranca    NOTA 18        111 120        X(10)
   $conteudo .= '310808';                                                // vencimento data venc. titulo NOTA 7                    121 126        9(06)
   $conteudo .= '0000000000000';                                        // valor titulo            valor nominal NOTA 8            127 139        9(11)V9(2)
   $conteudo .= 341;                                                    // codigo do banco        Nº BANCO CÂMARA COMP.            140    142        9(03)         
   $conteudo .= zeros(0,5);                                             //agencia cobradora / ONDE TÍTULO SERÁ COBRADO NOTA 9    143 147        9(05)
   $conteudo .= 15;                                                    // especie        especie do titulo NOTA 10                148 149        X(02)
   $conteudo .= 'A'; // aceite ident de titutlo aceito (A=aceite,N=nao aceite)    150 150        X(01)
   $conteudo .= '020808';         // data emissao titulo     NOTA 31                    151 156        9(06)
   $conteudo .= '88';             // instrucao 1            NOTA 11                    157 158        X(02)
   $conteudo .= '86';            // instrucao 2            NOTA 11                    159 160        X(02)
   $conteudo .= '0000000000000';// juros de 1 dia    valor de mora NOTA 12    161 173        9(11)V9(02)
   $conteudo .= zeros(0,6);    // desconto até            data limite p/ descont    174 179        9(06)
   $conteudo .= '0000000000000';// valor desconto        a ser concedido NOTA 13 180 192        9(11)V9(02)
   $conteudo .= '0000000000000';    // valor I.O.F RECOLHIDO P NOTAS SEGURO NOTA 14    193 205        9(11)V9(02)
   $conteudo .= '0000000000000';    // abatimento            a ser concedido NOTA 13    206 218        9(11)V9(02)
   $conteudo .= '02'; // codigo de inscricao tipo de insc. sacado 01=CPF 02=CNPJ    219 220        9(02)
   $conteudo .= '00999999700010';             // numero de inscricao    cpf ou cnpj                221 234        9(14)
   $conteudo .= limit($cliente[1],30);    // nome            nome do sacado NOTA 15    235 264        X(30)
   $conteudo .= complementoRegistro(10,"brancos");//NOTA 15 complem regist        265 274        X(10)
   $conteudo .= limit('',40);    // logradouro rua numero e compl sacado            275 314        X(40)
   $conteudo .= limit('',12);    // bairro                bairro do sacado        315 326        X(12)
   $conteudo .= zeros(0,8);    // cep                    cep do sacado            327 334        9(08)
   $conteudo .= limit('',15);    // cidade                cidade do sacado        335 349        X(15)        
   $conteudo .= limit('',2);    // estado                uf do sacado            350 351        X(02)
   $conteudo .= limit('',30);    // sacador/avalista        sacad ou aval. NOTA 16    352 381        X(30)
   $conteudo .= complementoRegistro(4,"brancos");// complemento de regist.        382 385        X(04)
   $conteudo .= zeros(0,6);    // data de mora            data de mora            386 391        9(06)        
   $conteudo .= zeros(0,2);            // prazo                qtde de dias NOTA 11(A)    392 393        9(02)            
   $conteudo .= complementoRegistro(1,"brancos");        // brancos                complemento de registr.    394 394     X(01)
   $conteudo .= sequencial($i++);            // numero sequencial    do registro no arquivo    395 400        9(06)

   $conteudo .= chr(13).chr(10); //essa é a quebra de linha
   /*
   ## REGISTRO DETALHE (OPCIONAL)

                                   #NOME DO CAMPO        #SIGNIFICADO            #POSICAO    #PICTURE
   $conteudo .= 4;                // tipo transacao        id do registro            001    001        9(01)
   $conteudo .= '';             // codigo de inscr    tipo inscr. empresa NOTA 1    002 003        9(02)
   $conteudo .= '';            // numero de inscr        cpf ou cnpj                004 017        9(14)
   $conteudo .= '';            // agencia                mantenedora conta        018 021        9(04)
   $conteudo .= '00';            // zeros                complemento de registro    022 023        9(02)
   $conteudo .= '';            // conta                da empresa                024 028        9(05)
   $conteudo .= '';            // DAC                    autoconf conta            029 029        9(01)
   $conteudo .= 109;            // n carteira            no banco NOTA 5            030 032        9(03)    
   $conteudo .= '';            // nosso número            id titulo banco    NOTA 3    033 040        9(08)        
   $conteudo .= '';            // dac nosso numero        NOTA 3                    041 041        9(01)
   $conteudo .= '';            // sequencia            n seq. tipo 4 titulo    042 043        9(02)

   $conteudo .= '';            // agencia (01)            agencia conta credito    044 047        9(04)
   $conteudo .= '';            // conta (01)            conta p credito            048 054        9(07)
   $conteudo .= '';            // dac (1)                autoconf conta credito    055 055     9(01)
   $conteudo .= '';            // valor (1)            valor p credito NOTA 32    056 068        9(11)V9(02)

   $conteudo .= '';            // agencia (2)                                    069 072        9(04)    
   $conteudo .= '';            // conta (2)                                    073 079        9(07)
   $conteudo .= '';            // dac (2)                                        080 080        9(01)
   $conteudo .= '';            // valor (2)                                    081 093     9(11)V9(02)

   $conteudo .= '';            // agencia (3)                                    094 097        9(04)    
   $conteudo .= '';            // conta (3)                                    098 104        9(07)
   $conteudo .= '';            // dac (3)                                        105 105        9(01)
   $conteudo .= '';            // valor (3)                                    106 118     9(11)V9(02)

   $conteudo .= '';            // agencia (4)                                    119 122        9(04)    
   $conteudo .= '';            // conta (4)                                    123 129        9(07)
   $conteudo .= '';            // dac (4)                                        130 130        9(01)
   $conteudo .= '';            // valor (4)                                    131 143     9(11)V9(02)

   $conteudo .= '';            // agencia (5)                                    144 147        9(04)    
   $conteudo .= '';            // conta (5)                                    148 154        9(07)
   $conteudo .= '';            // dac (5)                                        155 155        9(01)
   $conteudo .= '';            // valor (5)                                    156 168     9(11)V9(02)

   $conteudo .= '';            // agencia (6)                                    169 172        9(04)    
   $conteudo .= '';            // conta (6)                                    173 179        9(07)
   $conteudo .= '';            // dac (6)                                        180 180        9(01)
   $conteudo .= '';            // valor (6)                                    181 193     9(11)V9(02)

   $conteudo .= '';            // agencia (7)                                    194 197        9(04)    
   $conteudo .= '';            // conta (7)                                    198 204        9(07)
   $conteudo .= '';            // dac (7)                                        205 205        9(01)
   $conteudo .= '';            // valor (7)                                    206 218     9(11)V9(02)

   $conteudo .= '';            // agencia (8)                                    219 222        9(04)    
   $conteudo .= '';            // conta (8)                                    223 229        9(07)
   $conteudo .= '';            // dac (8)                                        230 230        9(01)
   $conteudo .= '';            // valor (8)                                    231 243     9(11)V9(02)

   $conteudo .= '';            // agencia (9)                                    244 247        9(04)    
   $conteudo .= '';            // conta (9)                                    248 254        9(07)
   $conteudo .= '';            // dac (9)                                        255 255        9(01)
   $conteudo .= '';            // valor (9)                                    256 268     9(11)V9(02)

   $conteudo .= '';            // agencia (10)                                    269 272        9(04)    
   $conteudo .= '';            // conta (10)                                    273 079        9(07)
   $conteudo .= '';            // dac (10)                                        280 280        9(01)
   $conteudo .= '';            // valor (10)                                    281 293     9(11)V9(02)

   $conteudo .= '';            // agencia (11)                                    294 297        9(04)    
   $conteudo .= '';            // conta (11)                                    298 304        9(07)
   $conteudo .= '';            // dac (11)                                        305 305        9(01)
   $conteudo .= '';            // valor (11)                                    306 318     9(11)V9(02)

   $conteudo .= '';            // agencia (12)                                    319 322        9(04)    
   $conteudo .= '';            // conta (12)                                    323 329        9(07)
   $conteudo .= '';            // dac (12)                                        330 330        9(01)
   $conteudo .= '';            // valor (12)                                    331 343     9(11)V9(02)

   $conteudo .= '';            // agencia (13)                                    344 347        9(04)    
   $conteudo .= '';            // conta (13)                                    348 354        9(07)
   $conteudo .= '';            // dac (13)                                        355 355        9(01)
   $conteudo .= '';            // valor (13)                                    356 368     9(11)V9(02)

   $conteudo .= '';            // agencia (14)                                    369 372        9(04)    
   $conteudo .= '';            // conta (14)                                    373 379        9(07)
   $conteudo .= '';            // dac (14)                                        380 380        9(01)
   $conteudo .= '';            // valor (14)                                    381 393     9(11)V9(02)

   $conteudo .= '';            // tipo de valor informado NOTA 32                394 394        9(01)
   $conteudo .= '';            // numero sequencial de registro no arquivo        395 400        9(06)                            
   */
   /*
   IMPORTANTE:
   · O arquivo pode conter tanto títulos de cobrança normal como títulos de cobrança com rateio de crédito;
   · Para instruções de protesto, os títulos com rateio de crédito seguem os mesmos procedimentos dos títulos sem rateio;
   · O rateio de crédito pode ser por percentual ou em valor (vide Nota 32);
   · Títulos com rateio de crédito – Para cada Registro Detalhe Obrigatório (Tipo de Registro “1”) podem ser utilizados até 3 (três) Registros
   Tipo “4” para indicação dos detalhes do rateio de crédito (máximo de 30 contas por título). Caso a Agência/Conta/Dac do cedente e Nº
   da Carteira/Nosso Número do título, informados nos registros Tipo “4” não coincidam com os dados do respectivo registro Tipo “1”, a
   entrada do título é aceita sem rateio de crédito (os registros Tipo “4” são desprezados);
   · A entrada do título é rejeitada nos casos em que a soma dos valores ou percentuais de rateio (informados nos registros Tipo “4”)
   ultrapasse o valor nominal do título do registro Tipo “1”;
   · Caso os registros de rateio (Tipo “4”) não apresentem agências/contas de crédito, os registros Tipo 4 são desprezados e o título será
   tratado como entrada de cobrança normal, sem rateio;
   · A agência/conta do cedente e sua respectiva agência/conta centralizadora de crédito da cobrança, não podem estar entre as
   agências/contas beneficiárias do rateio de crédito;
   · Títulos com rateio de crédito não aceitam instruções de Desconto ou de Abatimento e não permitem alteração dos valores nominal e de
   crédito;
   · Não haverá incidência de CPMF quando a raiz do CPNJ da conta do cedente for igual a da conta de crédito do rateio.
   */
   /*
   $conteudo .= chr(13).chr(10); //essa é a quebra de linha

   ## REGISTRO DETALHE (OPCIONAL)

                                   #NOME DO CAMPO        #SIGNIFICADO            #POSICAO    #PICTURE
   $conteudo .= 5;              // tipo de registro    id reg transac            001 001        9(01)
   $conteudo .= '';             //    endereco de email    do sacado NOTA 29        002 121        X(120)
   $conteudo .= '';             // codigo de inscr    sacador/avalista NOTA 30    122 123        9(02)
   $conteudo .= '';             // numero de inscr    sacador/avalista NOTA 30    124 137        9(14)
   $conteudo .= '';             // logradouro sacador/avalista NOTA 30            138 177        X(40)
   $conteudo .= '';             // bairro sacador/avalista NOTA 30                178 189        X(12)
   $conteudo .= '';             // cep sacador/avalista NOTA 30                190 197     9(08)
   $conteudo .= '';             // cidade    sacador/avalista NOTA 30            198 212        X(15)
   $conteudo .= '';             // estado sacador/avalista NOTA 30                213 214        X(02)
   $conteudo .= complementoRegistro(180,"brancos");// brancos complem regist    215 394        X(180)
   $conteudo .= '';              // numero sequencial do registro no arquivo    395    400        9(06)
   */
   /*
   IMPORTANTE:
   · Este registro é opcional e deverá ser enviado apenas quando o Cedente desejar que o BOLETO de
   cobrança seja entregue pelo Banco Itaú ao Sacado por e-mail e/ou, em substituição ou complemento
   dos dados referentes ao Sacador/Avalista, quando de sua existência; e
   · Sempre que for informado, deverá ser na seqüência do registro obrigatório de cobrança (Código de
   Registro ‘1’) a que seus dados se referem;
   · As informações constantes neste registro não são informadas no “arquivo retorno”;
   · Quando as informações referentes ao "Sacador / Avalista" tiverem sido indicadas nos registros “1” e “5”,
   prevalecerá sempre a do registro “5";
   · Na fase de testes não é possível o envio do BOLETO via e-mail, para tanto, este será emitido e
   consistido fisicamente.
   */

}// fecha loop de clientes

//$conteudo .= chr(13).chr(10); //essa é a quebra de linha

## REGISTRO TRAILER DE ARQUIVO
/*
CORRETO LAYOUT ITAU
                               #NOME DO CAMPO        #SIGNIFICADO            #POSICAO    #PICTURE
$conteudo .= 9;                //    tipo de registro    id registro trailer        001 001        9(01)
$conteudo .= complementoRegistro(393,"zeros");    //     brancos                complemento de registro    002 394        X(393)    
$conteudo .= zeros($sequencial,6);         //     nº sequencial        do regsitro no arquivo    395 400        9(06)
*/

/* TENTATIVA SEM SUCESSO
$conteudo .= '9201341          000000000000000000000000000000          000000000000000000000000000000                                                  000000000000000000000000000000          000000000000000000000000000000000010000000800000000000000                                                                                                                                                                '.sequencial($i);
*/

// Em nosso exemplo, nós vamos abrir o arquivo $filename
// em modo de adição. O ponteiro do arquivo estará no final
// do arquivo, e é pra lá que $conteudo irá quando o 
// escrevermos com fwrite().
// 'w+' e 'w' apaga tudo e escreve do zero
// 'a+' comeca a escrever do inicio para o fim preservando o conteudo do arquivo

if (!$handle = fopen($filename, 'w+')) 
{
    erro("Não foi possível abrir o arquivo ($filename)");
}

// Escreve $conteudo no nosso arquivo aberto.
if (fwrite($handle, "$conteudo") === FALSE) 
{
   erro("Não foi possível escrever no arquivo ($filename)");
}
fclose($handle);

msg("Arquivo de remessa gerado com sucesso!");

?>

 

E se alguém puder ajudar no meu caso com o código para gerar arquivo remessa do Banco do Brasil CNAB com 240 Posições ficarei grato.

 

Abraço!!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Nossa galera!! Eu fiz esse código há muitos anos atrás e sem querer acabei encontrando ele de novo.

É uma pena ver que nínguem deixou os créditos no comentário do código, mas sem duvida alguma apenas com esta linha:

 

 

define("REMESSA",PATH."sistemas/iMoveG/financeiro/arquivos/",true);

Pude ter certeza total de que o criador do código fui eu.... ao longo destes anos recebi muito contatos no meu email pessoal pedindo para corrigir os bugs, porém nunca mais tive a oportunidade de atualizar ele, mas percebo que não foi necessario muita alteração para a finalização do código.

 

Não posso exigir nada, pois não postei o código sob licença alguma.

Agradeço a todos que usaram, mas ficaria muito feliz em ter meu nome e email nos créditos!! Abraço.

 

Não to cobrando nínguem!! Só comentando... abraço!!

Compartilhar este post


Link para o post
Compartilhar em outros sites

pessoal boa tarde.

estou desenterrando este topico.

 

no meu sistema financeiro começei a utilizar o boletophp do itau, agora quero gerar arquivo de remessa.

 

o primeiro passa foi feito, usei este script acima e consegui gerar o txt sem problemas.

 

alguem que já fez pode me tirar a minha duvida.

 

nesta parte abaixo:

 

 

  Citar

 

### DADOS DOS CLIENTES PARA TESTE
$clientes[] = array("BOLETO001","Cliente A","11111111111","100,00");
$clientes[] = array("BOLETO002","Cliente B","22222222222","200,00");
$clientes[] = array("BOLETO003","Cliente C","33333333333","300,00");
$clientes[] = array("BOLETO004","Cliente D","44444444444","400,00");
$i = 2;
foreach($clientes as $cliente)
{
## REGISTRO DETALHE (OBRIGATORIO)
#NOME DO CAMPO #SIGNIFICADO #POSICAO #PICTURE
$conteudo .= 1; // tipo registro id registro transacac. 001 001 9(01)
$conteudo .= '02'; // codigo inscricao tipo inscricao empresa 002 003 9(02)
$conteudo .= '14104390000154'; // cnpj da empresa 004 017 9(14)
$conteudo .= 6556; // agencia mantenedora da conta 018 021 9(04)
$conteudo .= '00'; // zeros complemento registro 022 023 9(02)
$conteudo .= '13127'; // conta numero da conta 024 028 9(05)
$conteudo .= 1; // dac dig autoconf conta 029 029 9(01)
$conteudo .= complementoRegistro(4,"brancos"); // brancos complemento registro 030 033 X(04)
$conteudo .= complementoRegistro(4,"zeros"); // CÓD.INSTRUÇÃO/ALEGAÇÃO A SER CANC NOTA 27 034 037 9(04)
$conteudo .= limit($cliente[0],25); // USO / IDENT. DO TÍTULO NA EMPRESA NOTA 2 038 062 X(25)
$conteudo .= complementoRegistro(8,"zeros"); // NOSSO NUMERO / ID TITULO DO BANCO NOTA 3 063 070 9(08)
$conteudo .= '0000000000000'; //QTDE MOEDA NOTA 4 071 083 9(08)V9(5)
$conteudo .= 109; // nº da carteira nº carteira banco 084 086 9(03)
$conteudo .= complementoRegistro(21,"brancos"); // uso do banco ident. oper. no banco 087 107 X(21)
$conteudo .= 'I'; // carteira codigo da carteira NOTA 5 108 108 X(01)
$conteudo .= '01'; // codigo ocorrencia / ident da ocorrencia NOTA 6 109 110 9(02)
$conteudo .= limit('',10); // nº documento / nº documento de cobranca NOTA 18 111 120 X(10)
$conteudo .= '310808'; // vencimento data venc. titulo NOTA 7 121 126 9(06)
$conteudo .= '0000000000000'; // valor titulo valor nominal NOTA 8 127 139 9(11)V9(2)
$conteudo .= 341; // codigo do banco Nº BANCO CÂMARA COMP. 140 142 9(03)
$conteudo .= zeros(0,5); //agencia cobradora / ONDE TÍTULO SERÁ COBRADO NOTA 9 143 147 9(05)
$conteudo .= 15; // especie especie do titulo NOTA 10 148 149 X(02)
$conteudo .= 'A'; // aceite ident de titutlo aceito (A=aceite,N=nao aceite) 150 150 X(01)
$conteudo .= '020808'; // data emissao titulo NOTA 31 151 156 9(06)
$conteudo .= '88'; // instrucao 1 NOTA 11 157 158 X(02)
$conteudo .= '86'; // instrucao 2 NOTA 11 159 160 X(02)
$conteudo .= '0000000000000';// juros de 1 dia valor de mora NOTA 12 161 173 9(11)V9(02)
$conteudo .= zeros(0,6); // desconto até data limite p/ descont 174 179 9(06)
$conteudo .= '0000000000000';// valor desconto a ser concedido NOTA 13 180 192 9(11)V9(02)
$conteudo .= '0000000000000'; // valor I.O.F RECOLHIDO P NOTAS SEGURO NOTA 14 193 205 9(11)V9(02)
$conteudo .= '0000000000000'; // abatimento a ser concedido NOTA 13 206 218 9(11)V9(02)
$conteudo .= '02'; // codigo de inscricao tipo de insc. sacado 01=CPF 02=CNPJ 219 220 9(02)
$conteudo .= '00999999700010'; // numero de inscricao cpf ou cnpj 221 234 9(14)
$conteudo .= limit($cliente[1],30); // nome nome do sacado NOTA 15 235 264 X(30)
$conteudo .= complementoRegistro(10,"brancos");//NOTA 15 complem regist 265 274 X(10)
$conteudo .= limit('',40); // logradouro rua numero e compl sacado 275 314 X(40)
$conteudo .= limit('',12); // bairro bairro do sacado 315 326 X(12)
$conteudo .= zeros(0,8); // cep cep do sacado 327 334 9(08)
$conteudo .= limit('',15); // cidade cidade do sacado 335 349 X(15)
$conteudo .= limit('',2); // estado uf do sacado 350 351 X(02)
$conteudo .= limit('',30); // sacador/avalista sacad ou aval. NOTA 16 352 381 X(30)
$conteudo .= complementoRegistro(4,"brancos");// complemento de regist. 382 385 X(04)
$conteudo .= zeros(0,6); // data de mora data de mora 386 391 9(06)
$conteudo .= zeros(0,2); // prazo qtde de dias NOTA 11(A) 392 393 9(02)
$conteudo .= complementoRegistro(1,"brancos"); // brancos complemento de registr. 394 394 X(01)
$conteudo .= sequencial($i++); // numero sequencial do registro no arquivo 395 400 9(06)
$conteudo .= chr(13).chr(10); //essa é a quebra de linha

 

no foreach abaixo dos clientes ele já puxa automaticamente os dados do cliente acima ou tenho que colocar o preenchimento???

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.