protected function filterData(array $data)
 {
     $data = parent::filterData($data);
     $data = array_merge($data, array('texto_sacado' => 'Pagador', 'texto_cedente' => 'Beneficiário', 'texto_valor_unitario' => 'x Valor', 'exibir_demonstrativo_na_ficha' => false, 'exibir_demonstrativo_no_recibo' => true, 'agencia_codigo' => $data['agencia'] . ' / ' . $data['conta'] . $data['conta_dv']));
     $codigoBanco = $this->getCodigoBancoFormatado();
     $moeda = "9";
     $fixo = "9";
     $ios = "0";
     $carteira = $data['carteira'];
     $fator_vencimento = $this->fatorVencimento($data["data_vencimento"]);
     $valor = FormatterHelper::formataNumero($data["valor_boleto"], 10, 0, "valor");
     $codigoCedente = FormatterHelper::formataNumero($data["codigo_cedente"], 7, 0);
     $nossoNumero = FormatterHelper::formataNumero($data["nosso_numero"], 7, 0);
     //dv do nosso número
     $dvNossoNumero = $this->modulo11($nossoNumero, 9, 0);
     // nosso número (com dvs) são 13 digitos
     $nossoNumero = "00000" . $nossoNumero . $dvNossoNumero;
     $vencimento = $data["data_vencimento"];
     /* Código de Barras */
     $barra = "{$codigoBanco}{$moeda}{$fator_vencimento}{$valor}{$fixo}{$codigoCedente}{$nossoNumero}{$ios}{$carteira}";
     /* Linha Digitável */
     $dv = $this->digitoVerificadorBarra($barra);
     $linha = substr($barra, 0, 4) . $dv . substr($barra, 4);
     $data["codigo_barras"] = $linha;
     $data["linha_digitavel"] = $this->montaLinhaDigitavel($linha);
     $data["nosso_numero"] = $nossoNumero;
     return $data;
 }
 protected function filterData(array $data)
 {
     $data = parent::filterData($data);
     $data = array_merge($data, array('exibir_demonstrativo_na_ficha' => false, 'exibir_demonstrativo_no_recibo' => true, 'texto_valor_unitario' => 'Valor Documento'));
     $codigobanco = $this->getCodigoBanco();
     $codigo_banco_com_dv = $this->getCodigoBancoComDv();
     $nummoeda = "9";
     $fator_vencimento = $this->fatorVencimento($data["data_vencimento"]);
     //valor tem 10 digitos, sem virgula
     $valor = FormatterHelper::formataNumero($data["valor_boleto"], 10, 0, "valor");
     //agencia é 4 digitos
     $agencia = FormatterHelper::formataNumero($data["agencia"], 4, 0);
     //conta é 5 digitos + 1 do dv
     $conta = FormatterHelper::formataNumero($data["conta"], 5, 0);
     $conta_dv = FormatterHelper::formataNumero($data["conta_dv"], 1, 0);
     //carteira 175
     $carteira = $data["carteira"];
     //nosso_numero no maximo 8 digitos
     $nnum = FormatterHelper::formataNumero($data["nosso_numero"], 8, 0);
     $codigo_barras = $codigobanco . $nummoeda . $fator_vencimento . $valor . $carteira . $nnum . $this->modulo10($agencia . $conta . $carteira . $nnum) . $agencia . $conta . $this->modulo10($agencia . $conta) . '000';
     // 43 numeros para o calculo do digito verificador
     $dv = $this->digitoVerificadorBarra($codigo_barras);
     // Numero para o codigo de barras com 44 digitos
     $linha = substr($codigo_barras, 0, 4) . $dv . substr($codigo_barras, 4, 43);
     $nossonumero = $carteira . '/' . $nnum . '-' . $this->modulo10($agencia . $conta . $carteira . $nnum);
     $agencia_codigo = $agencia . " / " . $conta . "-" . $this->modulo10($agencia . $conta);
     $data["codigo_barras"] = $linha;
     $data["linha_digitavel"] = $this->montaLinhaDigitavel($linha);
     // verificar
     $data["agencia_codigo"] = $agencia_codigo;
     $data["nosso_numero"] = $nossonumero;
     $data["codigo_banco_com_dv"] = $codigo_banco_com_dv;
     return $data;
 }
 protected function filterData(array $dadosboleto)
 {
     $dadosboleto = parent::filterData($dadosboleto);
     $tamanhoNumeroConvenio = strlen($dadosboleto['convenio']);
     $tamanhoNossoNumero = strlen($dadosboleto['nosso_numero']);
     if ($tamanhoNumeroConvenio == 6) {
         $dadosboleto["formatacao_convenio"] = '6';
     } else {
         if ($tamanhoNumeroConvenio == 7) {
             $dadosboleto["formatacao_convenio"] = '7';
         } else {
             if ($tamanhoNumeroConvenio == 8) {
                 $dadosboleto["formatacao_convenio"] = '8';
             }
         }
     }
     if ($tamanhoNossoNumero <= 5) {
         $dadosboleto['formatacao_nosso_numero'] = '1';
     } else {
         $dadosboleto['formatacao_nosso_numero'] = '2';
     }
     $codigobanco = $this->getCodigoBancoFormatado();
     $codigo_banco_com_dv = $this->getCodigoBancoComDv();
     $nummoeda = "9";
     $fator_vencimento = $this->fatorVencimento($dadosboleto["data_vencimento"]);
     //valor tem 10 digitos, sem virgula
     $valor = FormatterHelper::formataNumero($dadosboleto["valor_boleto"], 10, 0, "valor");
     //agencia é sempre 4 digitos
     $agencia = FormatterHelper::formataNumero($dadosboleto["agencia"], 4, 0);
     //conta é sempre 8 digitos
     $conta = FormatterHelper::formataNumero($dadosboleto["conta"], 8, 0);
     //carteira 18
     $carteira = $dadosboleto["carteira"];
     //agencia e conta
     $agencia_codigo = $agencia . "-" . $this->modulo11($agencia) . " / " . $conta . "-" . $this->modulo11($conta);
     //Zeros: usado quando convenio de 7 digitos
     $livre_zeros = '000000';
     // Carteira 18 com Convênio de 8 dígitos
     if ($dadosboleto["formatacao_convenio"] == "8") {
         $convenio = FormatterHelper::formataNumero($dadosboleto["convenio"], 8, 0, "convenio");
         // Nosso número de até 9 dígitos
         $nossonumero = FormatterHelper::formataNumero($dadosboleto["nosso_numero"], 9, 0);
         $dv = $this->modulo11("{$codigobanco}{$nummoeda}{$fator_vencimento}{$valor}{$livre_zeros}{$convenio}{$nossonumero}{$carteira}");
         $linha = "{$codigobanco}{$nummoeda}{$dv}{$fator_vencimento}{$valor}{$livre_zeros}{$convenio}{$nossonumero}{$carteira}";
         //montando o nosso numero que aparecerá no boleto
         $nossonumero = $convenio . $nossonumero . "-" . $this->modulo11($convenio . $nossonumero);
     }
     // Carteira 18 com Convênio de 7 dígitos
     if ($dadosboleto["formatacao_convenio"] == "7") {
         $convenio = FormatterHelper::formataNumero($dadosboleto["convenio"], 7, 0, "convenio");
         //var_dump($convenio);die;
         // Nosso número de até 10 dígitos
         $nossonumero = FormatterHelper::formataNumero($dadosboleto["nosso_numero"], 10, 0);
         $dv = $this->modulo11("{$codigobanco}{$nummoeda}{$fator_vencimento}{$valor}{$livre_zeros}{$convenio}{$nossonumero}{$carteira}");
         $linha = "{$codigobanco}{$nummoeda}{$dv}{$fator_vencimento}{$valor}{$livre_zeros}{$convenio}{$nossonumero}{$carteira}";
         $nossonumero = $convenio . $nossonumero;
         //Não existe DV na composição do nosso-número para convênios de sete posições
     }
     // Carteira 18 com Convênio de 6 dígitos
     if ($dadosboleto["formatacao_convenio"] == "6") {
         $convenio = FormatterHelper::formataNumero($dadosboleto["convenio"], 6, 0, "convenio");
         if ($dadosboleto["formatacao_nosso_numero"] == "1") {
             // Nosso número de até 5 dígitos
             $nossonumero = FormatterHelper::formataNumero($dadosboleto["nosso_numero"], 5, 0);
             $dv = $this->modulo11("{$codigobanco}{$nummoeda}{$fator_vencimento}{$valor}{$convenio}{$nossonumero}{$agencia}{$conta}{$carteira}");
             $linha = "{$codigobanco}{$nummoeda}{$dv}{$fator_vencimento}{$valor}{$convenio}{$nossonumero}{$agencia}{$conta}{$carteira}";
             //montando o nosso numero que aparecerá no boleto
             $nossonumero = $convenio . $nossonumero . "-" . $this->modulo11($convenio . $nossonumero);
         }
         if ($dadosboleto["formatacao_nosso_numero"] == "2") {
             // Nosso número de até 17 dígitos
             $nservico = "21";
             $nossonumero = FormatterHelper::formataNumero($dadosboleto["nosso_numero"], 17, 0);
             $dv = $this->modulo11("{$codigobanco}{$nummoeda}{$fator_vencimento}{$valor}{$convenio}{$nossonumero}{$nservico}");
             $linha = "{$codigobanco}{$nummoeda}{$dv}{$fator_vencimento}{$valor}{$convenio}{$nossonumero}{$nservico}";
         }
     }
     $dadosboleto["codigo_barras"] = $linha;
     $dadosboleto["linha_digitavel"] = $this->montaLinhaDigitavel($linha);
     $dadosboleto["agencia_codigo"] = $agencia_codigo;
     $dadosboleto["nosso_numero"] = $nossonumero;
     $dadosboleto["codigo_banco_com_dv"] = $codigo_banco_com_dv;
     return $dadosboleto;
 }
    public function barcode($valor)
    {
        ob_start();
        $fino = 1;
        $largo = 3;
        $altura = 50;
        $barcodes[0] = "00110";
        $barcodes[1] = "10001";
        $barcodes[2] = "01001";
        $barcodes[3] = "11000";
        $barcodes[4] = "00101";
        $barcodes[5] = "10100";
        $barcodes[6] = "01100";
        $barcodes[7] = "00011";
        $barcodes[8] = "10010";
        $barcodes[9] = "01010";
        for ($f1 = 9; $f1 >= 0; $f1--) {
            for ($f2 = 9; $f2 >= 0; $f2--) {
                $f = $f1 * 10 + $f2;
                $texto = "";
                for ($i = 1; $i < 6; $i++) {
                    $texto .= substr($barcodes[$f1], $i - 1, 1) . substr($barcodes[$f2], $i - 1, 1);
                }
                $barcodes[$f] = $texto;
            }
        }
        ?>
        <img src=<?php 
        echo $this->makeImageUrl('p.png');
        ?>
 width=<?php 
        echo $fino;
        ?>
 height=<?php 
        echo $altura;
        ?>
 border=0><img 
        src=<?php 
        echo $this->makeImageUrl('b.png');
        ?>
 width=<?php 
        echo $fino;
        ?>
 height=<?php 
        echo $altura;
        ?>
 border=0><img 
        src=<?php 
        echo $this->makeImageUrl('p.png');
        ?>
 width=<?php 
        echo $fino;
        ?>
 height=<?php 
        echo $altura;
        ?>
 border=0><img 
        src=<?php 
        echo $this->makeImageUrl('b.png');
        ?>
 width=<?php 
        echo $fino;
        ?>
 height=<?php 
        echo $altura;
        ?>
 border=0><img 
        <?php 
        $texto = $valor;
        if (strlen($texto) % 2 != 0) {
            $texto = "0" . $texto;
        }
        // Draw dos dados
        while (strlen($texto) > 0) {
            $i = round(FormatterHelper::esquerda($texto, 2));
            $texto = FormatterHelper::direita($texto, strlen($texto) - 2);
            $f = $barcodes[$i];
            for ($i = 1; $i < 11; $i += 2) {
                if (substr($f, $i - 1, 1) == "0") {
                    $f1 = $fino;
                } else {
                    $f1 = $largo;
                }
                ?>
            src=<?php 
                echo $this->makeImageUrl('p.png');
                ?>
 width=<?php 
                echo $f1;
                ?>
 height=<?php 
                echo $altura;
                ?>
 border=0><img 
        <?php 
                if (substr($f, $i, 1) == "0") {
                    $f2 = $fino;
                } else {
                    $f2 = $largo;
                }
                ?>
            src=<?php 
                echo $this->makeImageUrl('b.png');
                ?>
 width=<?php 
                echo $f2;
                ?>
 height=<?php 
                echo $altura;
                ?>
 border=0><img 
        <?php 
            }
        }
        // Draw guarda final
        ?>
    src=<?php 
        echo $this->makeImageUrl('p.png');
        ?>
 width=<?php 
        echo $largo;
        ?>
 height=<?php 
        echo $altura;
        ?>
 border=0><img 
    src=<?php 
        echo $this->makeImageUrl('b.png');
        ?>
 width=<?php 
        echo $fino;
        ?>
 height=<?php 
        echo $altura;
        ?>
 border=0><img 
    src=<?php 
        echo $this->makeImageUrl('p.png');
        ?>
 width=<?php 
        echo 1;
        ?>
 height=<?php 
        echo $altura;
        ?>
 border=0> 
      <?php 
        $result = ob_get_contents();
        ob_end_clean();
        return $result;
    }