示例#1
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;
 }
示例#2
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';
 }
示例#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'];
 }
 /**
  * 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
 /**
  * Insere os dados do boleto no layout do convênio
  *
  * @param $layout
  * @param $dados
  * @return string
  */
 protected function aplicarDadosAoLayout($layout, $dados)
 {
     $chaveAsbace = $dados['Agencia'] . $dados['Conta'] . $dados['NossoNumero'] . $dados['Banco'];
     $primeiroDvAsbace = Number::primeiroDvAsbace($chaveAsbace);
     $segundoDvAsbace = Number::segundoDvAsbace($chaveAsbace, $primeiroDvAsbace);
     $codigoBarras = StringBuilder::insert($layout, $dados);
     $codigoBarras = $this->inserirDigitoVerificador($codigoBarras, $primeiroDvAsbace, 41);
     $codigoBarras = $this->inserirDigitoVerificador($codigoBarras, $segundoDvAsbace, 42);
     return $codigoBarras;
 }
示例#6
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;
 }
 /**
  * Gera a linha digitável baseado em um código de barras.
  *
  * @param  string $codigoBarras
  * @return string
  */
 protected function gerarLinhaDigitavel($codigoBarras)
 {
     // Campo1 - Posições de 1-4 e 20-24
     $linhaDigitavel = substr($codigoBarras, 0, 4) . substr($codigoBarras, 19, 5) . substr($codigoBarras, 24, 10) . substr($codigoBarras, 34, 10) . substr($codigoBarras, 4, 1) . substr($codigoBarras, 5, 14);
     $dv1 = Number::modulo10(substr($linhaDigitavel, 0, 9));
     $dv2 = Number::modulo10(substr($linhaDigitavel, 9, 10));
     $dv3 = Number::modulo10(substr($linhaDigitavel, 19, 10));
     $linhaDigitavel = StringBuilder::putAt($linhaDigitavel, $dv3, 29);
     $linhaDigitavel = StringBuilder::putAt($linhaDigitavel, $dv2, 19);
     $linhaDigitavel = StringBuilder::putAt($linhaDigitavel, $dv1, 9);
     return StringBuilder::applyMask($linhaDigitavel, $this->mascara);
 }
示例#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;
 }