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;
 }