<?php exit;
// *****************************************************************************************************************
// FUNÇÕES
// *****************************************************************************************************************

function left_0($palavra,$limite){
	$var=str_pad($palavra, $limite, "0", STR_PAD_LEFT);
	return $var;
}

function right_0($palavra,$limite){
	$var=str_pad($palavra, $limite, "0", STR_PAD_RIGHT);
	return $var;
}

function right_x( $palavra, $limite ){
	$var = str_pad( $palavra, $limite, " ", STR_PAD_RIGHT );
	$var = remover_acentos( $var );
	if( strlen( $palavra ) >= $limite ){
		$var = substr( $palavra, 0, $limite );
	}
	$var = strtoupper( $var );// converte em letra maiuscula
	return $var;
}	 
	 
function cr($seq_linhant,$tipo){ // COMPLETAR CAMPOS COM ZERO OU BRANCO
  if($tipo == "zeros"){
    $space = '';
    for($seq_linha = 1; $seq_linha <= $seq_linhant; $seq_linha++){
      $space .= '0';
    }
  } else if($tipo == "brancos"){
    $space = '';
    for($seq_linha = 1; $seq_linha <= $seq_linhant; $seq_linha++){
      $space .= ' ';
    }
  }
  return $space;
}

function mesesCod($mes){
  $mes_echo = $mes;
  if($mes==1){ $mes_echo = "1";}
  if($mes==2){ $mes_echo = "2";}
  if($mes==3){ $mes_echo = "3";}
  if($mes==4){ $mes_echo = "4";}
  if($mes==5){ $mes_echo = "5";}
  if($mes==6){ $mes_echo = "6";}
  if($mes==7){ $mes_echo = "7";}
  if($mes==8){ $mes_echo = "8";}
  if($mes==9){ $mes_echo = "9";}
  if($mes==10){ $mes_echo = "O";}
  if($mes==11){ $mes_echo = "N";}
  if($mes==12){ $mes_echo = "D";}
  return $mes_echo;
}

function download($arquivo){
  header("Content-Type: application/force-download");
  header("Content-Type: application/octet-stream;");
  header("Content-Length:".filesize($arquivo));
  header("Content-disposition: attachment; filename=".$arquivo);
  header("Pragma: no-cache");
  header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0");
  header("Expires: 0");
  readfile($arquivo);
  flush();
}

// *****************************************************************************************************************
// INFORMAÇÕES DO ARQUIVO
// *****************************************************************************************************************

$ext_arq = "crm";
if($num_remessa > 1 && $num_remessa < 10){ $ext_arq = "rm".$num_remessa; }
if($num_remessa == 10){ $ext_arq = "rm0"; }

// $letra_arq='m';
// if($num_remessa>1 && $num_remessa<10){ $letra_arq=$num_remessa;}
// if($num_remessa==10){$letra_arq='0';}

$arquivo        = left_0($conta,5).mesesCod(date("m")).date("d").".".$ext_arq;  // nome do arquivo da remessa
$filename       = $arquivo;

// *****************************************************************************************************************
// LINHAS
// *****************************************************************************************************************

$header          = ''; // linha header - primeira linha do arquivo de remessa
$header_lote     = ''; // linha header de lote - segunda linha do arquivo de remessa
$linha_p         = ''; // linha Segmento P = dados do boleto
$linha_q         = ''; // Linha Segmento Q = Dados do pagador
$linha_r         = ''; // Linha Segmento R = Dados da multa
$trailler_1      = ''; // Penultima linha do arquivo de remessa
$trailler_2      = ''; // Última linha do arquivo de remessa

// *****************************************************************************************************************
// VALORES INICIAIS
// *****************************************************************************************************************

$conteudo         = '';               // Variavel para formação de arquivo
$conteudo_meio    = '';               // Variavel para formação das linhas P, Q e R
$total_valor      = 0;                // Valor inicial para o somatorio do valor dos boletos da remessa
$seq_linha        = 1;                // Valor inicial para número de linhas
$total            = $qtd_boletos;     // Qtd de Boletos

// *****************************************************************************************************************
// HEADER - LINHA 1
// *****************************************************************************************************************

$header .= $banco;                                      // 01.0 -> Cod. do banco
$header .= cr(4,"zeros");                               // 02.0 -> Cod. do lote
$header .= '0';                                         // 03.0 -> Tipo de registro
$header .= cr(9,"brancos");                             // 04.0 ->
$header .= '2';                                         // 05.0 -> Tipo de inscri��o do beneficiario : um se pessoa fisico (1) ou juridica (2)
$header .= left_0($cpf_cnpj,14);                        // 06.0 -> N� de Inscri��o do Beneficiario cpf ou cnpj da escola emissora do boleto
$header .= cr(20,"brancos");                            // 07.0 -> Uso exclusivo do banco
$header .= left_0($agencia,5);                          // 08.0 -> Cod. da agencia mantenedora da conta
$header .= cr(1,"brancos");                             // 09.0 -> Digito verificador da agencia
$header .= left_0($conta,12);                           // 10.0 -> Cod. do benefici�rio fornecido pelo banco - N� do cedente
$header .= $dv_conta;                                   // 11.0 -> Digito verificador da conta
$header .= cr(1,"brancos");                             // 12.0 ->
$header .= right_x($empresa,30);                        // 13.0 -> Nome da empresa
$header .= right_x('SICREDI',30);                       // 14.0 -> Nome do banco
$header .= cr(10,"brancos");                            // 15.0 ->
$header .= '1';                                         // 16.0 -> Cod. (1) = Remessa ou (2) = Retorno.
$header .= date('dmY');;                                // 17.0 -> Data da geracao arquivo
$header .= date('His');                                 // 18.0 -> Hora da geracao arquivo
$header .= left_0($seq_remessa,6);                      // 19.0 -> Sequencial do arquivo um numero novo para cada arquivo de remessa que for gerado
$header .= '081';                                       // 20.0 -> Versao
$header .= '01600';                                     // 21.0 -> Densidade de Gravacao do Arquivo
$header .= cr(20,"brancos");                            // 22.0 ->
$header .= right_x('',20);                              // 23.0 -> Observação
$header .= cr(29,"brancos");                            // 24.0 ->
$header .= chr(13).chr(10);                             // QUEBRA DE LINHA

// *****************************************************************************************************************
// HEADER LOTE - LINHA 2
// *****************************************************************************************************************

$header_lote .= $banco;                                 // 01.1 -> Cod. do banco
$header_lote .= left_0($lote_seq,4);                    // 02.1 -> Lote de servico
$header_lote .= '1';                                    // 03.1 -> Preencher 1� (equivale a Header de Lote)
$header_lote .= 'R';                                    // 04.1 -> Preencher �R� (equivale a Arquivo Remessa)
$header_lote .= '01';                                   // 05.1 -> Preencher com �01', se Cobran�a Registrada
$header_lote .= cr(2,"brancos");                        // 06.1 ->
$header_lote .= '040';                                  // 07.1 -> No. da vers�o do layout
$header_lote .= cr(1,"brancos");                        // 08.1 ->
$header_lote .= '2';                                    // 09.1 -> Tipo de inscri��o do beneficiario : um se pessoa fisico (1) ou juridica (2)
$header_lote .= left_0($cpf_cnpj,15);                   // 10.1 -> CNPJ = N�mero de Inscri��o do  Benefici�rio cpf ou cnpj
$header_lote .= cr(20,"brancos");                       // 11.1 ->
$header_lote .= left_0($agencia,5);                     // 12.1 -> Agencia mantenedora da conta
$header_lote .= cr(1,"brancos");                        // 13.1 -> Digito verificador da agencia
$header_lote .= left_0($conta,12);                      // 14.1 -> Cod. do benefici�rio fornecido pelo banco - N� do cedente
$header_lote .= $dv_conta;                              // 15.1 -> Digito verificador da conta
$header_lote .= cr(1,"brancos");                        // 16.1 ->
$header_lote .= right_x($empresa,30);                   // 17.1 -> Nome da empresa
$header_lote .= cr(40,"brancos");                       // 18.1 ->
$header_lote .= cr(40,"brancos");                       // 19.1 ->
$header_lote .= left_0($num_remessa,8);                 // 20.1 -> Sequencial do arquivo um numero novo para cada arquivo de remessa que for gerado
$header_lote .= date('dmY');;                           // 21.1 -> Data da geracao arquivo
$header_lote .= cr(8,"zeros");                          // 22.1 -> Data do credito. Preencher com zeros
$header_lote .= cr(33,"brancos");                       // 23.1 ->
$header_lote .= chr(13).chr(10);                        // QUEBRA DE LINHA

// *****************************************************************************************************************
// BOLETOS
// *****************************************************************************************************************

$i = 0;
for( $j=0; $j<$total; $j++ ){

  // DADOS: Financeiro
  $nosso_numero                     = $boletos[$i]['nosso_numero'];           // NOSSO NUMERO USADO NO SEU BOLETO E QUE SERA ENVIADO AO BANCO
  $numero_documento                 = $boletos[$i]['numero_documento'];       // ID REGISTRO FINANCEIRO
  $data_vencimento                  = $boletos[$i]['data_vencimento'];        // DATA DE VENCIMENTO DO BOLETO
  $valor_boleto                     = $boletos[$i]['valor_boleto'];           // VALOR DO BOLETO COM 2 CASAS DECIMAIS --> R$ 250,45
  $data_emissao                     = $boletos[$i]['data_emissao'];           // DATA DE EMISSAO DO BOLETO
  $data_juros                       = $boletos[$i]['data_juros'];             // DATA DOS JUROS
  $data_desconto                    = $boletos[$i]['data_desconto'];          // DATA LIMITE PARA APLICACAO DO DESCONTO DO BOLETO
  $valor_desconto                   = $boletos[$i]['valor_desconto'];         // VALOR DA TAXA DE DESCONTO, AQUI => 13,67% SOBRE O VALOR NOMINAL DO TITULO
  $valor_abatimento                 = $boletos[$i]['valor_abatimento'];       // VALOR DO ABATIMENTO. ( *** PODE DEIXAR ZERADO) PORQUE NAO E' A MESMA COISA QUE DESCONTO

  // DADOS: Clube
  $pagador_doc_tipo                 = $boletos[$i]['pagador_doc_tipo'];       // Tipo de inscri��o do pagador / 1 = pessoa fisica / 2 = pessoa juridica
  $pagador_doc_num                  = $boletos[$i]['pagador_doc_num'];        // ESSE CPF TEM QUE SER VALIDO JUNTO A RECEITA FEDERAL. ESTE USADO AQUI E' APENAS 1 EXEMPLO E FICTICIO. USE UM VALIDO.
  $pagador_nome                     = $boletos[$i]['pagador_nome'];           // NAO USAR CARACTERES ACENTUADOS, COM TIL, CEDILHA OU SIMBOLOS
  $pagador_endereco                 = $boletos[$i]['pagador_endereco'];       // ENDERECO
  $pagador_bairro                   = $boletos[$i]['pagador_bairro'];         // BAIRRO
  $pagador_cep                      = $boletos[$i]['pagador_cep'];            // CEP
  $pagador_cidade                   = $boletos[$i]['pagador_cidade'];         // CIDADE
  $pagador_estado                   = $boletos[$i]['pagador_estado'];         // ESTADO

  // *****************************************************************************************************************
  // LINHA P - BOLETO
  // *****************************************************************************************************************

  $linha_p .= $banco;                                  // 01.3P -> CCONTROLE. COD. DO BANCO, Neste caso = 104
  $linha_p .= left_0($lote_seq,4);                     // 02.3P -> Lote de servico
  $linha_p .= '3';                                     // 03.3P -> CONTROLE. TIPO DE REGISTRO. Preencher com 3 (EQUIVALE A DETALHE DO LOTE)
  $linha_p .= left_0($seq_linha,5);                    // 04.3P -> SERVICO. N� Sequencial do Registro no Lote. (G038). EVOLUIR DE 1 EM 1 PARA CADA SEGMENTO DO LOTE
  $linha_p .= 'P';                                     // 05.3P -> SERVICO. C�d. Segmento do Registro Detalhe, PREENCHER P
  $linha_p .= cr(1,"brancos");                         // 06.3P ->
  $linha_p .= left_0($tipo_remessa,2);                 // 07.3P -> SERVICO. Cod. de movimento remessa. 1=entrada/2=baixa/6=alterar vencimento (C004)
  $linha_p .= left_0($agencia,5);                      // 08.3P -> Agencia mantenedora da conta
  $linha_p .= cr(1,"brancos");                         // 09.3P -> Digito verificador da agencia
  $linha_p .= left_0($conta,12);                       // 10.3P -> Cod. do benefici�rio fornecido pelo banco - N� do cedente
  $linha_p .= $dv_conta;                               // 11.3P -> Digito verificador da conta
  $linha_p .= cr(1,"brancos");                         // 12.3P ->
  $linha_p .= right_0($nosso_numero,20);               // 13.3P -> CARTEIRA/NOSSO NUMERO. Identificacao do titulo no banco = Nosso numero
  $linha_p .='1';                                      // 14.3P -> codigo da carteira (1) equivale a cobran�a simples (C006)
  $linha_p .='1';                                      // 15.3P -> Forma de Cadastramento do T�tulo no Banco. 1=cobranca registrada / 2=cobranca sem registro
  $linha_p .='1';                                      // 16.3P -> Tipo de Documento - Preencher '2� (equivale a Escritural)
  $linha_p .='2';                                      // 17.3P -> Identifica��o da Emissao do boleto. 1 = Banco emite/ 2 = Cliente emite (C009)
  $linha_p .='2';                                      // 18.3P -> Identificacao da Entrega do boleto. (C010)
  $linha_p .= left_0($numero_documento,10);            // 19.3P -> Numero do documento de cobranca. (C011) = meu numero de boleto
  $linha_p .= cr(5,"zeros");                           // 19.3P ->
  $linha_p .= $data_vencimento;                        // 20.3P -> Data de vencimento do t�tulo, no formato DDMMAAAA (Dia, M�se Ano);
  $linha_p .= left_0($valor_boleto,15);                // 21.3p -> Valor nominal do t�tulo,utilizando 2 casas decimais (exemplo:t�tulo de valor 530,44 - preencher 0000000053044)
  $linha_p .= cr(5,"zeros");                           // 22.3P ->
  $linha_p .= cr(1,"brancos");                         // 23.3P ->
  // VER SOBRE ESSE ITEM ***
  $linha_p .= right_x('03',2);                         // 24.3P -> Esp�cie do T�tulo
  // ***********************
  $linha_p .= right_x('N',1);                          // 25.3P -> Aceite. preencher com �A� (Aceite) ou�N� (N�o Aceite)
  $linha_p .= left_0($data_emissao,8);                 // 26.3P -> Data de emissj�o do t�tulo, no formato DDMMAAAA (Dia, M�se Ano);
  $linha_p .= left_0($forma_cobrar_juros,1);           // 27.3P -> JUROS --> Tipo de prefer�ncia: 1 = Valor por Dia / 2 = Taxa Mensal  / 3 = Isento
  $linha_p .= cr(8,"zeros");                           // 28.3P -> JUROS --> Data in�cio cobran�a de Juros formato DDMMAAAA (Dia, M�s e Ano). OBS: TEM QUE TER UMA DATA
  $linha_p .= left_0($taxa_juros_mes,15);              // 29.3P -> JUROS --> Taxa de Juros de mora por mes, contendo 2 (duas) casas decimais. Aqui e' 100 => 1% ao mes
  $linha_p .= left_0($forma_desconto,1);               // 30.3P -> DESCONTO 1 --> Cod. do desconto 1. Tipo: 0 = Sem Desconto / 1 = Valor Fixo / 2 = Percentual
  $linha_p .= left_0($data_desconto,8);                // 31.3P -> DESCONTO 1 --> Data do desconto
  $linha_p .= left_0($valor_desconto,15);              // 32.3P -> DESCONTO 1 --> Valor/percentual do desconto a ser concedido
  $linha_p .= cr(15,"zeros");                          // 33.3P ->
  $linha_p .= left_0($valor_abatimento,15);            // 34.3P -> Valor do abatimento
  $linha_p .= cr(25,"zeros");                          // 35.3P -> Uso empresa cedente. Identificacao do titulo na empresa. Identico ao campo 19.3P
  $linha_p .= '3';                                     // 36.3P -> C�digo para Protesto. 1 = protestar / 3 = nao protestar
  $linha_p .= '00';                                    // 37.3P -> Prazo para protesto. Numero de dias para  Protesto
  $linha_p .= '1';                                     // 38.3P -> C�digo p/ Baixa/Devolu��o: Preencher - vencido: '1� (Baixar/ Devolver) ou �2� (N�o Baixar / N�o Devolver
  $linha_p .= left_0('060',3);                         // 39.3P -> Prazo p/ baixa/devolucao. Numero de dias para baixa/devolucao.
  $linha_p .= left_0('9',2);                           // 40.3P -> Codigo da moeda. 09 = REAL
  $linha_p .= cr(10,"zeros");                          // 41.3P ->
  $linha_p .= cr(1,"brancos");                         // 42.3P ->
  $linha_p .= chr(13).chr(10);                         // QUEBRA DE LINHA

  $seq_linha ++;

  // *****************************************************************************************************************
  // LINHA Q - BOLETO
  // *****************************************************************************************************************

  $linha_q .= $banco;                                   // 01.3Q -> Cod. Banco
  $linha_q .= left_0($lote_seq,4);                      // 02.3Q -> Lote de servi�o
  $linha_q .= '3';                                      // 03.3Q -> tipo de registro. Equivalente a detalhe de lote. preencher '3'
  $linha_q .= left_0($seq_linha,5);                     // 04.3Q -> N� Sequencial do Registro no Lote
  $linha_q .= 'Q';                                      // 05.3Q -> C�d. Segmento do Registro Detalhe
  $linha_q .= cr(1,"brancos");                          // 06.3Q -> Espaco
  $linha_q .= left_0('01',2);                           // 07.3Q -> Cod de Movimento Remessa
  $linha_q .= $pagador_doc_tipo;                        // 08.3Q -> Tipo de Inscricao do Pagador (1) CPF (pessoa f�sica) (2) CNPJ Pessoa jur�dica
  $linha_q .= left_0($pagador_doc_num,15);              // 09.3Q -> cpf ou cnpj
  $linha_q .= right_x($pagador_nome,40);                // 10.3Q -> Nome do pagador
  $linha_q .= right_x($pagador_endereco,40);            // 11.3Q -> Endereco do pagador
  $linha_q .= right_x($pagador_bairro,15);              // 12.3Q -> Bairro
  $linha_q .= left_0($pagador_cep,8);                   // 13.3Q -> Cep
  //$linha_q .= left_0($pagador_cep_sufixo,3);          // 14.3Q -> Cep complemento (item 13.3 está completo)
  $linha_q .= right_x($pagador_cidade,15);              // 15.3Q -> Cidade
  $linha_q .= right_x($pagador_estado,2);               // 16.3Q -> UF
  $linha_q .= '0';                                      // 17.3Q -> Tipo de Inscri��o do sacador AVALISTA (0) nenhum (1) CPF (pessoa f�sica) (2) CNPJ Pessoa jur�dica
  $linha_q .= left_0('0',15);                           // 18.3Q -> CPF ou CNPJ do Sacador avalista
  $linha_q .= cr(40,"brancos");                         // 19.3Q -> nome do sacador avalista
  $linha_q .= cr(3,"zeros");                            // 20.3Q -> Zeros
  $linha_q .= cr(20,"brancos");                         // 21.3Q -> Espaco
  $linha_q .= cr(1,"brancos");                          // 22.3Q -> Espaco

  $linha_q = right_x($linha_q,240);
  $linha_q .= chr(13).chr(10);                          // QUEBRA DE LINHA

  $seq_linha ++;

  // *****************************************************************************************************************
  // LINHA R - BOLETO
  // *****************************************************************************************************************

  $linha_r .= $banco;                                   // 01.3R -> Cod. Banco. Caixa = 104
  $linha_r .= left_0($lote_seq,4);                      // 02.3R -> Lote de servi�o
  $linha_r .= '3';                                      // 03.3R -> tipo de registro. Equivalente a detalhe de lote. preencher '3'
  $linha_r .= left_0($seq_linha,5);                             // 04.3R -> N� Sequencial do Registro no Lote
  $linha_r .= 'R';                                      // 05.3R -> C�d. Segmento do Registro Detalhe
  $linha_r .= cr(1,"brancos");                          // 06.3R ->
  $linha_r .= left_0('01',2);                           // 07.3R -> Cod. Movimento Rem = 01 => Entrada de titulo Nota Explicativa: (C004)
  $linha_r .= '1';                                      // 08.3R -> DESCONTO-2. COD. DESCONTO / 0=sem / 1=valor fixo / 2=valor percentual
  $linha_r .= cr(8,"zeros");                            // 09.3R -> DESCONTO-2. DATA DESCONTO
  $linha_r .=	cr(15,"zeros");                           // 10.3R -> DESCONTO-2. VALOR DO DESCONTO
  $linha_r .= '0';                                      // 11.3R -> DESCONTO-3. COD. DESCONTO / 0=sem / 1=valor fixo / 2=valor percentual
  $linha_r .= cr(8,"zeros");                            // 12.3R -> DESCONTO-3. DATA DESCONTO
  $linha_r .=	cr(15,"zeros");                           // 13.3R -> DESCONTO-3. VALOR DO DESCONTO
  $linha_r .= '0';                                      // 14.3R -> MULTA. COD. DESCONTO / 0=sem / 1=valor fixo / 2=valor percentual
  $linha_r .= cr(8,"zeros");                            // 15.3R -> MULTA. DATA DA MULTA
  $linha_r .=	left_0('000',15);                         // 16.3R -> MULTA. VALOR DA MULTA
  $linha_r .= cr(10,"brancos");                         // 17.3R -> INFORMACAO AO PAGADOR - preencher com espacos
  $linha_r .= cr(40,"brancos");                         // 18.3R -> INFORMACAO 3 - mensagem 3
  $linha_r .= cr(40,"brancos");                         // 19.3R -> INFORMACAO 4 - Mensagem 4
  $linha_r .= cr(20,"brancos");                         // 20.3R -> e-mail pagador - e-mail pagador para envio de informacoes
  $linha_r .= cr(8,"zeros");                            // 21.3R ->
  $linha_r .= cr(3,"zeros");                            // 22.3R ->
  $linha_r .= cr(5,"zeros");                            // 23.3R ->
  $linha_r .= cr(1,"brancos");                          // 24.3R ->
  $linha_r .= cr(12,"zeros");                           // 25.3R ->
  $linha_r .= cr(1,"brancos");                          // 26.3R ->
  $linha_r .= cr(1,"brancos");                          // 27.3R ->
  $linha_r .= '0';                                      // 28.3R ->
  $linha_r .= cr(9,"brancos");                          // 29.3R ->
  $linha_r .= chr(13).chr(10);                          // QUEBRA DE LINHA

  $seq_linha ++;

  $total_valor += $valor_boleto;

  $conteudo_meio .= $linha_p.$linha_q.$linha_r;
  $linha_p = "";  $linha_q = "";  $linha_r = "";

  $i++;
}

// *****************************************************************************************************************
// LINHA TRAILLER 1
// *****************************************************************************************************************

$trailler_1 .= $banco;                                  // 01.5 -> COD. DO BANCO. CAIXA = 104
$trailler_1 .= left_0($lote_seq,4);                     // 02.5 -> CONTROLE -> Lote de servico equivalente a 02.1
$trailler_1 .= '5';                                     // 03.5 -> CONTROLE -> Tipo de registro, preencher com '5' equivalente a (Trailer de Lote).
$trailler_1 .= cr(9,"brancos");                         // 04.9 -> CNAB. FIller, preencher com espacos
$qtd_registros = $total*3;
$trailler_1 .= left_0(($qtd_registros+2),6);            // 05.5 -> Qtd. de registros no lote. Somatoria dos registros de tipo 1, 3 e 5 ( obs alex = total de linhas -2 )
$trailler_1 .= cr(6,"zeros");                           // 06.5 -> Preencher com zeros
$trailler_1 .= cr(17,"zeros");                          // 07.5 -> TOTALIZACAO COBRANCA SIMPLES - Preencher com o valor total de titulos informados no lote
$trailler_1 .= cr(6,"zeros");                           // 08.5 -> Preencher com zeros
$trailler_1 .= cr(17,"zeros");                          // 09.5 -> Preencher com zeros
$trailler_1 .= cr(6,"zeros");                           // 10.5 -> Preencher com zeros
$trailler_1 .= cr(17,"zeros");                          // 11.5 -> Preencher com zeros
$trailler_1 .= cr(6,"zeros");                           // 12.5 -> Preencher com zeros
$trailler_1 .= cr(17,"zeros");                          // 13.5 -> Preencher com zeros
$trailler_1 .= cr(8,"brancos");                         // 14.5 -> Preencher com zeros
$trailler_1 .= cr(117,"brancos");                       // 15.5 -> Preencher com zeros
$trailler_1 .= chr(13).chr(10);                         // QUEBRA DE LINHA

// *****************************************************************************************************************
// LINHA TRAILLER 2
// *****************************************************************************************************************

$trailler_2 .= $banco;                                  // 01.9 -> COD. DO BANCO. CAIXA = 104
$trailler_2 .= '9999';                                  // 02.9 -> lote de servi�o. Preencher '9999'
$trailler_2 .= '9';                                     // 03.9 -> Tipo de registro. Preencher '9'
$trailler_2 .= cr(9,"brancos");                         // 04.9 -> CNAB. FIller
$trailler_2 .= left_0($lote_seq,6);                     // 05.9 -> Quantidade de lotes do arquivo
$qtd_reg_arq = ($total*3)+4;
$trailler_2 .= left_0($qtd_reg_arq,6);                  // 06.9 -> Quantidade de registros no arquivo
$trailler_2 .= cr(6,"zeros");                           // 07.9 -> Espacos
$trailler_2 .= cr(205,"brancos");                       // 08.9 -> Espacos
$trailler_2 .= chr(13).chr(10);                         // QUEBRA DE LINHA

// *****************************************************************************************************************
// FORMAÇÃO DO ARQUIVO
// *****************************************************************************************************************

$conteudo = $header.$header_lote.$conteudo_meio.$trailler_1.$trailler_2;
if (!$handle = fopen($filename, 'w+')){}
if (fwrite($handle, "$conteudo") === FALSE){}
fclose($handle);

download($filename);
?>
