modulo10() 공개 정적인 메소드

public static modulo10 ( $n ) : integer
$n
리턴 integer
예제 #1
0
 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}');
     }
 }
예제 #2
0
 /**
  * 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;
 }
예제 #3
0
 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');
     }
 }
예제 #4
0
 /**
  * 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);
 }
예제 #5
0
 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;
 }
예제 #6
0
 /**
  * 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';
 }