public function prepare() { $nummoeda = "9"; $fixo = "9"; // Numero fixo para a posição 05-05 $ios = "0"; /** * 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(), 13, '0', STR_PAD_LEFT); $nossoNumeroDV = Util::digitoVerificadorNossoNumero($nossoNumeroProcessado); /** * 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 */ // $barra = "$codigobanco$nummoeda$fator_vencimento$valor$fixo$codigocliente$nossonumero$ios$carteira"; $DV = Util::digitoVerificadorBarra($this->getBanco()->getCodigoBanco() . $this->getBanco()->getMoeda() . $fatorVencimento . $valorProcessado . $fixo . $this->getCedente()->getCodigocliente() . $nossoNumeroProcessado . $ios . $this->getCedente()->getCarteira()); $barra = $this->getBanco()->getCodigoBanco() . $this->getBanco()->getMoeda() . $fatorVencimento . $valorProcessado . $fixo . $this->getCedente()->getCodigocliente() . $nossoNumeroProcessado . $ios . $this->getCedente()->getCarteira(); /** * Compondo a linha base para formação da Linha Digitável e do Código de Barras */ $strLinha = substr($barra, 0, 4) . $DV . substr($barra, 4); /** * Formatando o Nosso Número para impressão */ $nossoNumeroFormatado = $nossoNumeroProcessado; /** * Formatando os dados bancários do cedente para impressão */ $this->getCedente()->setAgenciaCodigo($this->getCedente()->getAgencia() . '-' . $this->getCedente()->getAgenciaDv() . ' / ' . $this->getCedente()->getContaCedente() . '-' . $this->getCedente()->getContaCedenteDv()); /** * 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; }
public function prepare() { // adicionando dados das instruções e demonstrativo no boleto (new ClassMethods())->hydrate($this->config['php-zf2-boleto']['instrucoes'], $this->getBoleto()); // adicionando valores default de configuração do cedente (new ClassMethods())->hydrate($this->config['php-zf2-boleto'][$this->banco->getCodigoBanco()]['dados_cedente'], $this->getCedente()); $nossoNumeroProcessado = (int) $this->getBoleto()->getNossoNumero(); $nossoNumeroProcessado = \str_pad($nossoNumeroProcessado, 7, '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")); $fatorVencimento = \str_pad($fatorVencimento, 4, '0', STR_PAD_LEFT); // 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); $parcela = $this->getBoleto()->getQuantidade(); $parcela = \str_pad($parcela ? $parcela : 1, 3, '0', STR_PAD_LEFT); $numeroCliente = (int) $this->getCedente()->getConvenio(); $numeroCliente = \str_pad($numeroCliente, 7, '0', STR_PAD_LEFT); /** * Calcula digito verificador nosso número boletos Bancoob * 3197 regra sicoob */ $sequencia = $this->getCedente()->getAgencia() . \str_pad($numeroCliente, 10, '0', STR_PAD_LEFT) . $nossoNumeroProcessado; $dvNossoNumero = Util::digitoVerificadorNossoNumeroBancoob($sequencia, '3197'); $nossoNumeroFormatado = "{$nossoNumeroProcessado}{$dvNossoNumero}"; // modalidade de cobranca $variacao = $this->getCedente()->getVariacaoCarteira(); $variacao = \str_pad($variacao ? $variacao : 2, 2, '0', STR_PAD_LEFT); $campoLivre = "{$variacao}{$numeroCliente}{$nossoNumeroFormatado}{$parcela}"; // Calcula o dígito verificador do código de barras $DV = Util::digitoVerificadorBarra($this->getBanco()->getCodigoBanco() . $this->getBanco()->getMoeda() . $fatorVencimento . $valorProcessado . $this->getBanco()->getCarteira() . $this->getCedente()->getAgencia() . $campoLivre); /** * 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() . $this->getCedente()->getAgencia() . $campoLivre; // Formatando os dados bancários do cedente para impressão $this->getCedente()->setAgenciaCodigo($this->getCedente()->getAgenciaDv() . ' / ' . $this->getCedente()->getCodigocliente()); // 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; }
public function prepare() { /** * adicionando dados das instruções e demonstrativo no boleto */ (new ClassMethods())->hydrate($this->config['php-zf2-boleto']['instrucoes'], $this->getBoleto()); /** * 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); /** * Formatando os dados bancários do cedente para impressão */ $this->getCedente()->setAgenciaCodigo($this->getCedente()->getAgencia() . '-' . $this->getCedente()->getAgenciaDv() . ' / ' . $this->getCedente()->getContaCorrente() . '-' . $this->getCedente()->getContaCorrenteDv()); // usado quando convenio tem 7 digitos $livreZeros = '000000'; switch ($this->getCedente()->getFormatacaoConvenio()) { case 8: $convenioProcessado = str_pad($this->getCedente()->getConvenio(), 8, '0', STR_PAD_LEFT); $nossoNumeroProcessado = str_pad($this->getBoleto()->getNossoNumero(), 9, '0', STR_PAD_LEFT); $DV = Util::modulo11($this->getBanco()->getCodigoBanco() . $this->getBanco()->getMoeda() . $fatorVencimento . $valorProcessado . $livreZeros . $convenioProcessado . $nossoNumeroProcessado . $this->getBanco()->getCarteira()); $strLinha = $this->getBanco()->getCodigoBanco() . $this->getBanco()->getMoeda() . $DV . $fatorVencimento . $valorProcessado . $livreZeros . $convenioProcessado . $nossoNumeroProcessado . $this->getBanco()->getCarteira(); $nossoNumeroFormatado = $convenioProcessado . $nossoNumeroProcessado . '-' . Util::modulo11($convenioProcessado . $nossoNumeroProcessado); break; case 7: $convenioProcessado = str_pad($this->getCedente()->getConvenio(), 7, '0', STR_PAD_LEFT); $nossoNumeroProcessado = str_pad($this->getBoleto()->getNossoNumero(), 10, '0', STR_PAD_LEFT); $DV = Util::modulo11($this->getBanco()->getCodigoBanco() . $this->getBanco()->getMoeda() . $fatorVencimento . $valorProcessado . $livreZeros . $convenioProcessado . $nossoNumeroProcessado . $this->getBanco()->getCarteira()); $strLinha = $this->getBanco()->getCodigoBanco() . $this->getBanco()->getMoeda() . $DV . $fatorVencimento . $valorProcessado . $livreZeros . $convenioProcessado . $nossoNumeroProcessado . $this->getBanco()->getCarteira(); $nossoNumeroFormatado = $convenioProcessado . $nossoNumeroProcessado; break; case 6: $convenioProcessado = str_pad($this->getCedente()->getConvenio(), 6, '0', STR_PAD_LEFT); switch ($this->getBoleto()->getFormatacaoNossoNumero()) { case 1: $nossoNumeroProcessado = str_pad($this->getBoleto()->getNossoNumero(), 5, '0', STR_PAD_LEFT); $DV = Util::modulo11($this->getBanco()->getCodigoBanco() . $this->getBanco()->getMoeda() . $fatorVencimento . $valorProcessado . $convenioProcessado . $nossoNumeroProcessado . $this->getCedente()->getAgencia() . $this->getCedente()->getContaCorrente() . $this->getCedente()->getCarteira()); $strLinha = $this->getBanco()->getCodigoBanco() . $this->getBanco()->getMoeda() . $DV . $fatorVencimento . $valorProcessado . $convenioProcessado . $nossoNumeroProcessado . $this->getCedente()->getAgencia() . $this->getCedente()->getContaCorrente() . $this->getCedente()->getCarteira(); $nossoNumeroFormatado = $convenioProcessado . $nossoNumeroProcessado . '-' . Util::modulo11($convenioProcessado . $nossoNumeroProcessado); break; case 2: $numeroServico = 21; $nossoNumeroProcessado = str_pad($this->getBoleto()->getNossoNumero(), 17, '0', STR_PAD_LEFT); $DV = Util::modulo11($this->getBanco()->getCodigoBanco() . $this->getBanco()->getMoeda() . $fatorVencimento . $valorProcessado . $convenioProcessado . $nossoNumeroProcessado . $numeroServico); $strLinha = $this->getBanco()->getCodigoBanco() . $this->getBanco()->getMoeda() . $DV . $fatorVencimento . $valorProcessado . $convenioProcessado . $nossoNumeroProcessado . $numeroServico; $nossoNumeroFormatado = $nossoNumeroProcessado; break; } break; } /** * 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; }
public function setCodigoBanco($codigo) { $this->codigoBanco = $codigo; $this->codigoBancoDv = Util::modulo11($codigo, 9, 0, $this->codigoBanco == '001' ? 1 : 0); return $this; }