public function prepare() { /** * adicionando dados das instruções e demonstrativo no boleto */ (new ClassMethods())->hydrate($this->config['php-zf2-boleto']['instrucoes'], $this->getBoleto()); /** * Compondo o Nosso Número e seu dígito verificador */ $nossoNumeroProcessado = \str_pad($this->getBoleto()->getNossoNumero(), 8, '0', STR_PAD_LEFT); /** * Calcula o fator do vencimento (número inteiro que representa a data de vencimento na linha digitavel) */ $fatorVencimento = Util::fatorVencimento($this->getBoleto()->getDataVencimento()->format("d/m/Y")); /** * Processando o valor para aplicação na linha digitável e no código de barras */ $valor = preg_replace("/[^0-9]/", "", $this->getBoleto()->getValor()); // removendo formatação do número $valorProcessado = \str_pad($valor, 10, '0', STR_PAD_LEFT); /** * Calcula o dígito verificador do código de barras */ $DV = Util::digitoVerificadorBarra($this->getBanco()->getCodigoBanco() . $this->getBanco()->getMoeda() . $fatorVencimento . $valorProcessado . $this->getBanco()->getCarteira() . $nossoNumeroProcessado . Util::modulo10($this->getCedente()->getAgencia() . $this->getCedente()->getContaCedente() . $this->getBanco()->getCarteira() . $nossoNumeroProcessado) . $this->getCedente()->getAgencia() . $this->getCedente()->getContaCedente() . Util::modulo10($this->getCedente()->getAgencia() . $this->getCedente()->getContaCedente()) . '000'); /** * Compondo a linha base para formação da Linha Digitável e do Código de Barras */ $strLinha = $this->getBanco()->getCodigoBanco() . $this->getBanco()->getMoeda() . $DV . $fatorVencimento . $valorProcessado . $this->getBanco()->getCarteira() . $nossoNumeroProcessado . Util::modulo10($this->getCedente()->getAgencia() . $this->getCedente()->getContaCedente() . $this->getBanco()->getCarteira() . $nossoNumeroProcessado) . $this->getCedente()->getAgencia() . $this->getCedente()->getContaCedente() . Util::modulo10($this->getCedente()->getAgencia() . $this->getCedente()->getContaCedente()) . '000'; /** * Formatando o Nosso Número para impressão */ $nossoNumeroFormatado = $this->getBanco()->getCarteira() . '/' . $nossoNumeroProcessado . '-' . Util::modulo10($this->getCedente()->getAgencia() . $this->getCedente()->getContaCedente() . $this->getBanco()->getCarteira() . $nossoNumeroProcessado); /** * Formatando os dados bancários do cedente para impressão */ $this->getCedente()->setAgenciaCodigo($this->getCedente()->getAgencia() . ' / ' . $this->getCedente()->getContaCedente() . '-' . Util::modulo10($this->getCedente()->getAgencia() . $this->getCedente()->getContaCedente())); /** * Iniciando opções para criação do Código de Barras */ $barcodeOptions = array('text' => $strLinha); /** * Criando o código de barras em uma imagem e retornando seu base64 */ $codigoDeBarras = Barcode::factory('Code25interleaved', 'PhpBoletoZf2\\Lib\\Barcode\\Renderer\\Base64', $barcodeOptions, array()); /** * Termina de hidratar o objetodo boleto */ $this->getBoleto()->setCodigoDeBarras($codigoDeBarras)->setLinhaDigitavel(Util::montaLinhaDigitavel($strLinha))->setNossoNumeroFormatado($nossoNumeroFormatado); return $this; }