Пример #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 campo livre do código de barras.
  *
  * @param  ArrayObject $data
  * @return $data
  */
 public function gerarCampoLivre(ArrayObject $data)
 {
     $carteira = $this->carteira;
     switch (strlen($this->convenio)) {
         case 4:
             $this->nossoNumero = $this->convenio . $this->getNossoNumero();
             $this->alterarTamanho("CodigoCedente", 4);
             $this->alterarTamanho("NossoNumero", 7);
             $this->layout = ":Banco:Moeda:FatorVencimento:Valor:CodigoCedente:NossoNumero:Agencia:Conta:Carteira";
             break;
         case 6:
             if ($carteira instanceof Carteira21) {
                 $this->alterarTamanho("NossoNumero", 17);
                 $this->layout = ":Banco:Moeda:FatorVencimento:Valor:NossoNumero:Agencia:Conta:Carteira";
             } else {
                 $this->nossoNumero = $this->convenio . Number::modulo11($this->getNossoNumero(), 0, 0, true);
                 $this->alterarTamanho("CodigoCedente", 6);
                 $this->alterarTamanho("NossoNumero", 5);
                 $this->layout = ":Banco:Moeda:FatorVencimento:Valor:CodigoCedente:NossoNumero:Agencia:Conta:Carteira";
             }
             break;
         case 7:
             $this->nossoNumero = $this->convenio . $this->nossoNumero;
             $this->alterarTamanho("CodigoCedente", 7);
             $this->alterarTamanho("NossoNumero", 10);
             $this->layout = ":Banco:Moeda:FatorVencimento:Valor000000:NossoNumero:Carteira";
             break;
         default:
             throw new \LogicException("O codigo do convenio precisa ter 4, 6 ou 7 digitos!");
     }
     return $data;
 }
Пример #3
0
 /**
  * Ajusta o Nosso Numero antes de seta-lo no objeto Convenio.
  *
  * @param ArrayObject $data
  * @return mixed
  */
 public function ajustarNossoNumero(ArrayObject $data)
 {
     $nossoNumero = $data['NossoNumero'];
     $dvNossoNumero = Number::modulo11($nossoNumero);
     $data['NossoNumero'] = $nossoNumero . $dvNossoNumero;
     return $data['NossoNumero'];
 }
Пример #4
0
 /**
  * Inicializa uma nova instância da classe.
  * 
  * @param string $numero  Número do banco
  * @param string $nome    Nome do banco
  * @param string $agencia Agência favorecida
  * @param string $conta   Conta favorecida
  */
 public function __construct($numero, $nome, $agencia, $conta)
 {
     $this->numero = $numero;
     $this->nome = $nome;
     $this->agencia = $agencia;
     $this->conta = $conta;
     $this->codigo = Number::modulo11($this->numero);
 }
Пример #5
0
 /**
  * Gera o campo livre do código de barras.
  *
  * @param  ArrayObject $data
  */
 public function gerarCampoLivre(ArrayObject $data)
 {
     $this->alterarTamanho('Fixo', 1);
     $this->alterarTamanho('Ios', 1);
     $this->alterarTamanho('CodigoCedente', 7);
     $this->alterarTamanho('NossoNumero', 13);
     $data['Fixo'] = "9";
     $data['Ios'] = $this->banco->getIos();
     $nossoNumero = $data['NossoNumero'];
     $dvNossoNumero = Number::modulo11($nossoNumero);
     $this->nossoNumero = $nossoNumero . $dvNossoNumero;
     $this->layout = ':Banco:Moeda:FatorVencimento:Valor:Fixo:CodigoCedente:NossoNumero:Ios:Carteira';
 }
 /**
  * Seta o dígito verificador do nosso número.
  *
  * @param string $carteira
  * @param string $nossoNumero
  * @param string $ifTen
  * @param string $ifZero
  * @return \Umbrella\YaBoleto\AbstractConvenio $this
  */
 public function setDvNossoNumero($carteira, $nossoNumero, $ifTen = 'P', $ifZero = '0')
 {
     $this->dvNossoNumero = Number::modulo11($carteira . $nossoNumero, $ifTen, $ifZero, false, 7);
     return $this;
 }
Пример #7
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;
 }
Пример #8
0
 /**
  * Gera o código de barras, baseado nas informações do banco.
  *
  * @return string
  */
 protected function gerarCodigoBarras()
 {
     $banco = $this->convenio->getBanco();
     $convenio = $this->convenio;
     $total = $this->getTotal();
     if ($total < 0) {
         throw new \LogicException("Valor total do boleto não pode ser negativo");
     }
     $valor = Number::format($total);
     $agencia = substr($banco->getAgencia(), 0, 4);
     $conta = substr($banco->getConta(), 0, 4);
     $data = new ArrayObject(array('Banco' => $banco->getNumero(), 'Moeda' => $this->moeda, 'Valor' => $valor, 'Agencia' => $agencia, 'Carteira' => $convenio->getCarteira()->getNumero(), 'Conta' => $conta, 'NossoNumero' => $convenio->getNossoNumero(), 'FatorVencimento' => Number::fatorVencimento($this->getDataVencimento()), 'CodigoCedente' => $convenio->getConvenio()));
     $data->setFlags(ArrayObject::ARRAY_AS_PROPS);
     $this->getConvenio()->gerarCampoLivre($data);
     $tamanhos = $convenio->getTamanhos();
     foreach ($data as $var => $value) {
         if (array_key_exists($var, $tamanhos)) {
             $data[$var] = String::normalize($data[$var], $tamanhos[$var]);
         }
     }
     //Chamada do método que ajusta o NossoNumero
     $this->getConvenio()->ajustarNossoNumero($data);
     $convenio->setNossoNumero($data['NossoNumero']);
     $cod = String::insert($convenio->getLayout(), $data);
     $dv = Number::modulo11($cod, 1, 1);
     $codigoBarras = String::putAt($cod, $dv, 4);
     return $codigoBarras;
 }
Пример #9
0
 /**
  * Ajusta o Nosso Numero antes de seta-lo no objeto Convenio.
  *
  * @param ArrayObject $data
  * @return ArrayObject
  */
 public function ajustarNossoNumero(ArrayObject $data)
 {
     $carteira = $this->carteira;
     switch (strlen($this->convenio)) {
         case 6:
             if (!$carteira instanceof Carteira21) {
                 $data['NossoNumero'] = $this->convenio . Number::modulo11($data['NossoNumero'], 0, 0, true);
             }
             break;
         case 4:
         case 7:
             $data['NossoNumero'] = $this->convenio . $data['NossoNumero'];
             break;
         default:
             throw new \LogicException('O codigo do convenio precisa ter 4, 6 ou 7 digitos!');
     }
     return $data;
 }