private function geraNossoNumero() { if ($this->getAgencia() && $this->getConta() && $this->getCarteira()) { $nossonumero = Util::numberFormatGeral($this->getNumero(), 8, 0); $dv = Util::modulo10($this->getAgencia() . $this->getConta() . $this->getCarteira() . $nossonumero); $this->nossoNumero = $this->getCarteira() . '/' . $nossonumero . '-' . $dv; return $nossonumero . $dv; } else { throw new Exception('Todos os parâmetros devem ser informados {numero,contaCorrente,agencia}'); } }
/** * Gera o Duplo digito do nosso npumero * @param $nossoNumero * @return int */ private function duploDigitoBanrisul($nossoNumero) { $dv1 = Util::modulo10($nossoNumero); $dv2 = Util::modulo11($nossoNumero . $dv1, 2, 7, 0, 10); if ($dv2 == 10) { $dv1++; $dv2 = Util::modulo11($nossoNumero . $dv1, 2, 7, 0, 10); if ($dv1 > 9) { $dv1 = 0; } } return $dv1 . $dv2; }
protected function gerarLinha() { if (strlen($this->codigoBarras) == 44) { $campo1 = substr($this->codigoBarras, 0, 3) . substr($this->codigoBarras, 3, 1) . substr($this->codigoBarras, 19, 1) . substr($this->codigoBarras, 20, 4); $campo1 = $campo1 . Util::modulo10($campo1); $campo1 = substr($campo1, 0, 5) . '.' . substr($campo1, 5); $campo2 = substr($this->codigoBarras, 24, 10); $campo2 = $campo2 . Util::modulo10($campo2); $campo2 = substr($campo2, 0, 5) . '.' . substr($campo2, 5); $campo3 = substr($this->codigoBarras, 34, 10); $campo3 = $campo3 . Util::modulo10($campo3); $campo3 = substr($campo3, 0, 5) . '.' . substr($campo3, 5); $campo4 = substr($this->codigoBarras, 4, 1); $campo5 = substr($this->codigoBarras, 5, 4) . substr($this->codigoBarras, 9, 10); $this->linha = "{$campo1} {$campo2} {$campo3} {$campo4} {$campo5}"; return $this->linha; } else { throw new Exception('Código de barras não gerado ou inválido'); } }
/** * Retorna a linha digitável do boleto * @return string * @throws \Exception */ public function getLinhaDigitavel() { if (!empty($this->campoLinhaDigitavel)) { return $this->campoLinhaDigitavel; } $codigo = $this->getCodigoBarras(); $s1 = substr($codigo, 0, 4) . substr($codigo, 19, 5); $s1 = $s1 . Util::modulo10($s1); $s1 = substr_replace($s1, '.', 5, 0); $s2 = substr($codigo, 24, 10); $s2 = $s2 . Util::modulo10($s2); $s2 = substr_replace($s2, '.', 5, 0); $s3 = substr($codigo, 34, 10); $s3 = $s3 . Util::modulo10($s3); $s3 = substr_replace($s3, '.', 5, 0); $s4 = substr($codigo, 4, 1); $s5 = substr($codigo, 5, 14); return $this->campoLinhaDigitavel = sprintf('%s %s %s %s %s', $s1, $s2, $s3, $s4, $s5); }
public function addDetalhe(Detalhe $detalhe) { $this->iniciaDetalhe(); $this->add(1, 1, '1'); $this->add(2, 3, '02'); $this->add(4, 17, Util::formatCnab('L', $this->getCedenteDocumento(), 14)); $this->add(18, 21, Util::formatCnab('9', $this->getAgencia(), 4)); $this->add(22, 23, '00'); $this->add(24, 28, Util::formatCnab('9', $this->getConta(), 5)); $this->add(29, 29, Util::modulo10($this->getAgencia() . $this->getConta())); $this->add(30, 33, ''); $this->add(34, 37, '0000'); $this->add(38, 62, Util::formatCnab('X', $detalhe->getNumeroControleString(), 25)); $this->add(63, 70, Util::formatCnab('9', $detalhe->getNumero(), 8)); $this->add(71, 83, Util::formatCnab('9', '0', 13, 2)); $this->add(84, 86, Util::formatCnab('9', $this->getCarteira('109'), 3)); $this->add(87, 107, ''); $this->add(108, 108, 'I'); $this->add(109, 110, '01'); $this->add(111, 120, Util::formatCnab('X', $detalhe->getNumeroDocumento(), 10)); $this->add(121, 126, Util::formatCnab('d', $detalhe->getDataVencimento(), 6)); $this->add(127, 139, Util::formatCnab('9', $detalhe->getValor(), 13, 2)); $this->add(140, 142, 341); $this->add(143, 147, '00000'); $this->add(148, 149, $detalhe->getEspecie('01')); $this->add(150, 150, $detalhe->getAceite('N')); $this->add(151, 156, Util::formatCnab('D', $detalhe->getDataDocumento(), 6)); $this->add(157, 158, $detalhe->getInstrucao1('00')); $this->add(159, 160, $detalhe->getInstrucao2('00')); $this->add(161, 173, Util::formatCnab('9', $detalhe->getValorMora(), 13, 2)); $this->add(174, 179, Util::formatCnab('D', $detalhe->getDataLimiteDesconto(), 6)); $this->add(180, 192, Util::formatCnab('9', $detalhe->getValorDesconto(), 13, 2)); $this->add(193, 205, Util::formatCnab('9', $detalhe->getvalorIOF(), 13, 2)); $this->add(206, 218, Util::formatCnab('9', $detalhe->getValorAbatimento(), 13, 2)); $this->add(219, 220, Util::formatCnab('9L', $detalhe->getSacadoTipoDocumento(), 2)); $this->add(221, 234, Util::formatCnab('L', $detalhe->getSacadoDocumento(), 14)); $this->add(235, 264, Util::formatCnab('X', $detalhe->getSacadoNome(), 30)); $this->add(265, 274, ''); $this->add(275, 314, Util::formatCnab('X', $detalhe->getSacadoEndereco(), 40)); $this->add(315, 326, Util::formatCnab('X', $detalhe->getSacadoBairro(), 12)); $this->add(327, 334, Util::formatCnab('L', $detalhe->getSacadoCEP(), 8)); $this->add(335, 349, Util::formatCnab('A', $detalhe->getSacadoCidade(), 15)); $this->add(350, 351, Util::formatCnab('A', $detalhe->getSacadoEstado(), 2)); $this->add(352, 381, Util::formatCnab('A', $detalhe->getSacadorAvalista(), 30)); $this->add(382, 385, ''); $this->add(386, 391, Util::formatCnab('D', $detalhe->getDataVencimento(), 6)); $this->add(392, 393, Util::formatCnab('9', $detalhe->getDiasProtesto(), 2)); $this->add(394, 394, ''); $this->add(395, 400, Util::formatCnab('9', $this->iRegistros + 1, 6)); return $this; }
/** * Método para gerar o código da posição de 20 a 44 * * @return string * @throws \Exception */ protected function getCampoLivre() { if ($this->campoLivre) { return $this->campoLivre; } $numero = Util::numberFormatGeral($this->getNumero(), 8); $carteira = Util::numberFormatGeral($this->getCarteira(), 3); $agencia = Util::numberFormatGeral($this->getAgencia(), 4); $conta = Util::numberFormatGeral($this->getConta(), 5); // Carteira 198 - (Nosso Número com 15 posições) - Anexo 5 do manual if (in_array($this->getCarteira(), ['107', '122', '142', '143', '196', '198'])) { $codigo = $carteira . $numero . Util::numberFormatGeral($this->getNumeroDocumento(), 7) . Util::numberFormatGeral($this->getCodigoCliente(), 5); // Define o DV da carteira para a view $this->carteiraDv = $modulo = Util::modulo10($codigo); return $this->campoLivre = $codigo . $modulo . '0'; } // Geração do DAC - Anexo 4 do manual if (!in_array($this->getCarteira(), ['126', '131', '146', '150', '168'])) { // Define o DV da carteira para a view $this->carteiraDv = $dvAgContaCarteira = Util::modulo10($agencia . $conta . $carteira . $numero); } else { // Define o DV da carteira para a view $this->carteiraDv = $dvAgContaCarteira = Util::modulo10($carteira . $numero); } // Módulo 10 Agência/Conta $dvAgConta = Util::modulo10($agencia . $conta); return $this->campoLivre = $carteira . $numero . $dvAgContaCarteira . $agencia . $conta . $dvAgConta . '000'; }