Пример #1
0
 /**
  * Gera o campo livre do código de barras.
  * 
  * @param  ArrayObject $data
  * @return $data
  */
 public function gerarCampoLivre(ArrayObject $data)
 {
     $this->alterarTamanho('NossoNumero', 17);
     $this->alterarTamanho('CodigoCedente', 7);
     // 06 digitos + DV
     $this->alterarTamanho('CampoLivre', 18);
     // 17 digitos + DV
     $data['CodigoCedente'] .= Number::modulo11($data['CodigoCedente'], 0, 0, false);
     $nossoNumero = StringBuilder::normalize($data['NossoNumero'], 17);
     $constante1 = '2';
     // 1ª posição do Nosso Numero: Tipo de Cobrança (1-Registrada / 2-Sem Registro)
     $constante2 = '4';
     // 2ª posição do Nosso Número: Identificador da Emissão do Boleto (4-Beneficiário)
     $sequencia1 = (string) substr($nossoNumero, 2, 3);
     $sequencia2 = (string) substr($nossoNumero, 5, 3);
     $sequencia3 = (string) substr($nossoNumero, 8, 9);
     if ($data['Carteira'] == 'RG') {
         $constante1 = '1';
         // 1ª posição do Nosso Numero: Tipo de Cobrança (1-Registrada / 2-Sem Registro)
     }
     $data['CampoLivre'] = $sequencia1 . $constante1 . $sequencia2 . $constante2 . $sequencia3;
     // Calculando o DV do campo livre
     $campoLivre = $data['CodigoCedente'] . $data['CampoLivre'];
     $data['CampoLivre'] .= Number::modulo11($campoLivre, 0, 0, false);
     $this->layout = ':Banco:Moeda:FatorVencimento:Valor:CodigoCedente:CampoLivre';
 }
Пример #2
0
 /**
  * Gera o código de barras, baseado nas informações do banco.
  *
  * @return string
  */
 protected function gerarCodigoBarras()
 {
     $data = $this->setDadosBoleto();
     $this->getConvenio()->gerarCampoLivre($data);
     $tamanhos = $this->convenio->getTamanhos();
     foreach ($data as $var => $value) {
         if (array_key_exists($var, $tamanhos)) {
             $data[$var] = StringBuilder::normalize($data[$var], $tamanhos[$var]);
         }
     }
     //Chamada do método que ajusta o NossoNumero
     $this->getConvenio()->ajustarNossoNumero($data);
     $this->convenio->setNossoNumero($data['NossoNumero']);
     $cod = $this->aplicarDadosAoLayout($this->convenio->getLayout(), $data);
     $dv = Number::modulo11($cod, 1, 1);
     $codigoBarras = $this->inserirDigitoVerificador($cod, $dv, 4);
     return $codigoBarras;
 }