/** * 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; }
/** * Retorna os dados do boleto * * @return ArrayObject */ protected function setDadosBoleto() { $data = new ArrayObject(array('Banco' => $this->convenio->getBanco()->getNumero(), 'Moeda' => $this->moeda, 'Valor' => $this->getValorFormatado(), 'Agencia' => $this->getAgenciaFormatada(), 'Carteira' => $this->convenio->getCarteira()->getNumero(), 'Conta' => $this->getContaFormatada(), 'NossoNumero' => $this->convenio->getNossoNumero(), 'FatorVencimento' => Number::fatorVencimento($this->getDataVencimento()), 'CodigoCedente' => $this->convenio->getConvenio())); $data->setFlags(ArrayObject::ARRAY_AS_PROPS); return $data; }