numberFormatGeral() public static method

public static numberFormatGeral ( $n, $loop, $insert ) : string
$n
$loop
$insert
return string
Exemplo n.º 1
0
 private function gerarNossoNumero()
 {
     $nossoNumero = Util::numberFormatGeral($this->getNumero(), 11, 0);
     $dv = Util::modulo11($nossoNumero, 7, 0, 'P');
     $this->nossoNumero = $this->getCarteira() . '/' . $nossoNumero . '-' . $dv;
     return $nossoNumero;
 }
Exemplo n.º 2
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;
     }
     $nossoNumero = Util::numberFormatGeral($this->gerarNossoNumero(), 17);
     $beneficiario = Util::numberFormatGeral($this->getConta(), 6);
     // Código do beneficiário + DV]
     $campoLivre = $beneficiario . Util::modulo11($beneficiario);
     // Sequencia 1 (posições 3-5 NN) + Constante 1 (1 => registrada, 2 => sem registro)
     $carteira = $this->getCarteira();
     if ($carteira == 'SR') {
         $constante = '2';
     } else {
         $constante = '1';
     }
     $campoLivre .= substr($nossoNumero, 2, 3) . $constante;
     // Sequencia 2 (posições 6-8 NN) + Constante 2 (4-Beneficiário)
     $campoLivre .= substr($nossoNumero, 5, 3) . '4';
     // Sequencia 3 (posições 9-17 NN)
     $campoLivre .= substr($nossoNumero, 8, 9);
     // DV do Campo Livre
     $campoLivre .= Util::modulo11($campoLivre);
     return $this->campoLivre = $campoLivre;
 }
Exemplo n.º 3
0
 private function geraNossoNumero()
 {
     $nossonumero = Util::numberFormatGeral($this->getNumero(), 7, 0) . Util::modulo11($this->getNumero());
     $this->nossoNumero = Util::numberFormatGeral($this->getNumero(), 7, 0) . '-' . Util::modulo11($this->getNumero());
     return str_pad($nossonumero, 13, "0", STR_PAD_LEFT);
     #completo com zeros na esquerda até atingir 13 caracteres
 }
Exemplo n.º 4
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}');
     }
 }
Exemplo n.º 5
0
 private function geraNossoNumero()
 {
     $nossonumero = Util::numberFormatGeral($this->getNumero(), 7, 0) . Util::modulo11($this->getNumero());
     $this->nossoNumero = Util::numberFormatGeral($this->getNumero(), 7, 0) . '-' . Util::modulo11($this->getNumero());
     return sprintf('%013s', $nossonumero);
 }
Exemplo n.º 6
0
 /**
  * Método para gerar o código da posição de 20 a 44
  *
  * @return string
  */
 protected function getCampoLivre()
 {
     if ($this->campoLivre) {
         return $this->campoLivre;
     }
     $ag = Util::numberFormatGeral($this->getAgencia(), 4);
     $cc = Util::numberFormatGeral($this->getConta(), 6);
     $agCc = $ag . $cc . ($this->getContaDv() ? $this->getContaDv() : Util::modulo11($ag . $cc));
     return $this->campoLivre = $this->getNossoNumero() . $agCc . '00' . '1';
     // Codigo do aplicativo
 }
Exemplo n.º 7
0
 public function addBoleto(BoletoContract $boleto)
 {
     $this->iniciaDetalhe();
     $this->total += $boleto->getValor();
     $this->add(1, 1, '1');
     $this->add(2, 3, strlen(Util::onlyNumbers($this->getBeneficiario()->getDocumento())) == 14 ? '02' : '01');
     $this->add(4, 17, Util::formatCnab('9L', $this->getBeneficiario()->getDocumento(), 14));
     $this->add(18, 37, Util::formatCnab('9', $this->getCodigoTransmissao(), 20));
     $this->add(38, 62, Util::formatCnab('X', $boleto->getNumero(), 25));
     // numero de controle
     $this->add(63, 70, Util::numberFormatGeral($boleto->getNumeroDocumento(), 7) . Util::modulo11($boleto->getNumeroDocumento()));
     $this->add(71, 76, '000000');
     $this->add(77, 77, '');
     $this->add(78, 78, $boleto->getMulta() > 0 ? '4' : '0');
     $this->add(79, 82, Util::formatCnab('9', $boleto->getMulta(), 4, 2));
     $this->add(83, 84, '00');
     $this->add(85, 97, Util::formatCnab('9', 0, 13, 2));
     $this->add(98, 101, '');
     $this->add(102, 107, $boleto->getDataVencimento()->copy()->addDays($boleto->getJurosApos())->format('dmy'));
     $this->add(108, 108, $this->getCarteiraNumero() > 200 ? '1' : '5');
     $this->add(109, 110, self::OCORRENCIA_REMESSA);
     // REGISTRO
     if ($boleto->getStatus() == $boleto::STATUS_BAIXA) {
         $this->add(109, 110, self::OCORRENCIA_PEDIDO_BAIXA);
         // BAIXA
     }
     if ($boleto->getStatus() == $boleto::STATUS_ALTERACAO) {
         $this->add(109, 110, self::OCORRENCIA_ALT_VENCIMENTO);
         // ALTERAR VENCIMENTO
     }
     $this->add(111, 120, Util::formatCnab('X', $boleto->getNumeroDocumento(), 10));
     $this->add(121, 126, $boleto->getDataVencimento()->format('dmy'));
     $this->add(127, 139, Util::formatCnab('9', $boleto->getValor(), 13, 2));
     $this->add(140, 142, $this->getCodigoBanco());
     $this->add(143, 147, '00000');
     $this->add(148, 149, $boleto->getEspecieDocCodigo());
     $this->add(150, 150, $boleto->getAceite());
     $this->add(151, 156, $boleto->getDataDocumento()->format('dmy'));
     $this->add(157, 158, self::INSTRUCAO_SEM);
     $this->add(159, 160, self::INSTRUCAO_SEM);
     if ($boleto->getDiasProtesto() > 0) {
         $this->add(157, 158, self::INSTRUCAO_PROTESTAR);
     }
     $juros = 0;
     if ($boleto->getJuros() > 0) {
         $juros = Util::percent($boleto->getValor(), $boleto->getJuros()) / 30;
     }
     $this->add(161, 173, Util::formatCnab('9', $juros, 13, 2));
     $this->add(174, 179, '000000');
     $this->add(180, 192, Util::formatCnab('9', 0, 13, 2));
     $this->add(193, 205, Util::formatCnab('9', 0, 13, 2));
     $this->add(206, 218, Util::formatCnab('9', $boleto->getDescontosAbatimentos(), 13, 2));
     $this->add(219, 220, strlen(Util::onlyNumbers($boleto->getPagador()->getDocumento())) == 14 ? '02' : '01');
     $this->add(221, 234, Util::formatCnab('9L', $boleto->getPagador()->getDocumento(), 14));
     $this->add(235, 274, Util::formatCnab('X', $boleto->getPagador()->getNome(), 40));
     $this->add(275, 314, Util::formatCnab('X', $boleto->getPagador()->getEndereco(), 40));
     $this->add(315, 326, Util::formatCnab('X', $boleto->getPagador()->getBairro(), 12));
     $this->add(327, 334, Util::formatCnab('9L', $boleto->getPagador()->getCep(), 8));
     $this->add(335, 349, Util::formatCnab('X', $boleto->getPagador()->getCidade(), 15));
     $this->add(350, 351, Util::formatCnab('X', $boleto->getPagador()->getUf(), 2));
     $this->add(352, 381, Util::formatCnab('X', $boleto->getSacadorAvalista() ? $boleto->getSacadorAvalista()->getNome() : '', 30));
     $this->add(382, 382, '');
     $this->add(383, 383, 'I');
     $this->add(384, 385, substr($this->getConta(), -2));
     $this->add(386, 391, '');
     $this->add(392, 393, Util::formatCnab('9', $boleto->getDiasProtesto('0'), 2));
     $this->add(394, 394, '');
     $this->add(395, 400, Util::formatCnab('9', $this->iRegistros + 1, 6));
     return $this;
 }
Exemplo n.º 8
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';
 }
Exemplo n.º 9
0
 /**
  * Método para gerar o código da posição de 20 a 44
  *
  * @return string
  */
 protected function getCampoLivre()
 {
     if ($this->campoLivre) {
         return $this->campoLivre;
     }
     return $this->campoLivre = '9' . Util::numberFormatGeral($this->getConta(), 7) . $this->getNossoNumero() . Util::numberFormatGeral($this->getIos(), 1) . Util::numberFormatGeral($this->getCarteira(), 3);
 }
Exemplo n.º 10
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;
     }
     $tipo_cobranca = $this->isComRegistro() ? '1' : '3';
     $carteira = Util::numberFormatGeral($this->getCarteira(), 1);
     $nosso_numero = $this->getNossoNumero();
     $agencia = Util::numberFormatGeral($this->getAgencia(), 4);
     $posto = Util::numberFormatGeral($this->getPosto(), 2);
     $conta = Util::numberFormatGeral($this->getConta(), 5);
     $possui_valor = $this->getValor() > 0 ? '1' : '0';
     $campo_livre = $tipo_cobranca . $carteira . $nosso_numero . $agencia . $posto . $conta . $possui_valor . '0';
     return $this->campoLivre = $campo_livre . Util::modulo11($campo_livre);
 }
Exemplo n.º 11
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;
     }
     $length = strlen($this->getConvenio());
     $nossoNumero = $this->gerarNossoNumero();
     if (strlen($this->getNumero()) > 10) {
         if ($length == 6 && in_array($this->getCarteira(), ['16', '18']) && Util::numberFormatGeral($this->getVariacaoCarteira(), 3) == '017') {
             return $this->campoLivre = Util::numberFormatGeral($this->getConvenio(), 6) . $nossoNumero . '21';
         } else {
             throw new \Exception('Só é possível criar um boleto com mais de 10 dígitos no nosso número quando a carteira é 21 e o convênio possuir 6 dígitos.');
         }
     }
     switch ($length) {
         case 4:
         case 6:
             return $this->campoLivre = $nossoNumero . Util::numberFormatGeral($this->getAgencia(), 4) . Util::numberFormatGeral($this->getConta(), 8) . Util::numberFormatGeral($this->getCarteira(), 2);
         case 7:
             return $this->campoLivre = '000000' . $nossoNumero . Util::numberFormatGeral($this->getCarteira(), 2);
     }
     throw new \Exception('O código do convênio precisa ter 4, 6 ou 7 dígitos!');
 }
Exemplo n.º 12
0
 private function geraNossoNumero()
 {
     if ($this->carteira == 'cnr') {
         if ($this->getNumero() && $this->cedenteCodigo && $this->getDataVencimento()) {
             $nossonumero = Util::numberFormatGeral($this->getNumero(), 13, 0);
             $nossonumero .= Util::modulo11Reverso($nossonumero) . '4';
             $nossonumero .= Util::modulo11Reverso($nossonumero + $this->cedenteCodigo + $this->getDataVencimento()->format('dmy'));
             $this->nossoNumero = $nossonumero;
             return Util::numberFormatGeral($this->numero, 13, 0);
         } else {
             throw new Exception('Todos os parâmetros devem ser informados {numero,contaCorrente,vencimento}');
         }
     }
     if ($this->carteira == 'csb') {
         if ($this->range && $this->getNumero()) {
             $nossonumero = Util::numberFormatGeral($this->range, 5, 0) . Util::numberFormatGeral($this->numero, 5, 0);
             $nossonumero .= Util::modulo11($nossonumero, 7);
             $this->nossoNumero = $nossonumero;
             return $nossonumero;
         } else {
             throw new Exception('Todos os parâmetros devem ser informados {numero,range}');
         }
     }
 }
Exemplo n.º 13
0
 private function corrigirCedenteCodigo()
 {
     $_4first = substr($this->cedenteCodigo, 0, 4);
     $agencia = Util::numberFormatGeral($this->getAgencia(), 4, '0');
     if ($_4first != $agencia) {
         if (strlen($this->cedenteCodigo) == 12) {
             $this->cedenteCodigo = substr($this->cedenteCodigo, 0, 11);
         }
     } else {
         $this->cedenteCodigo = substr($this->cedenteCodigo, 4, 11);
     }
 }
Exemplo n.º 14
0
 protected function gerarNossoNumero()
 {
     if ($this->convenioFormato == '8') {
         $nossoNumero = Util::numberFormatGeral($this->getNumero(), 9, 0);
         $this->nossoNumero = $this->convenio . $nossoNumero . "-" . Util::modulo11($this - $this->convenio . $nossoNumero);
     } else {
         if ($this->convenioFormato == "7") {
             $nossoNumero = Util::numberFormatGeral($this->getNumero(), 10, 0);
             $this->nossoNumero = $this->convenio . $nossoNumero . "-" . Util::modulo11($this->convenio . $nossoNumero);
             $this->nossoNumero = $this->convenio . $nossoNumero;
         } else {
             if ($this->convenioFormato == "6") {
                 if ($this->nossoNumeroFormato == 1) {
                     $nossoNumero = Util::numberFormatGeral($this->getNumero(), 5, 0);
                     $this->nossoNumero = $this->convenio . $nossoNumero . "-" . Util::modulo11($this->convenio . $nossoNumero);
                 } else {
                     if ($this->nossoNumeroFormato == 2) {
                         $nossoNumero = Util::numberFormatGeral($this->getNumero(), 17, 0);
                         $this->nossoNumero = $nossoNumero;
                     } else {
                         throw new \Exception('Campo formatacaoNN inválido, deve possuir {1|2}');
                     }
                 }
             } else {
                 throw new \Exception('Formato de convenio inválido, deve possuir {6|7|8} digitos');
             }
         }
     }
     return $nossoNumero;
 }
Exemplo n.º 15
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;
     }
     $length = strlen($this->getConvenio());
     $nossoNumero = $this->gerarNossoNumero();
     // Apenas para convênio com 6 dígitos, modalidade sem registro - carteira 16 e 18 (definida para 21)
     if (strlen($this->getNumero()) > 10) {
         if ($length == 6 and in_array($this->getCarteira(), ['16', '18']) and Util::numberFormatGeral($this->getVariacaoCarteira(), 3) == '017') {
             // Convênio (6) + Nosso número (17) + Carteira (2)
             return $this->campoLivre = Util::numberFormatGeral($this->getConvenio(), 6) . $nossoNumero . '21';
         } else {
             throw new \Exception('Só é possível criar um boleto com mais de 10 dígitos no nosso número quando a carteira é 21 e o convênio possuir 6 dígitos.');
         }
     }
     switch ($length) {
         case 4:
         case 6:
             // Nosso número (11) + Agencia (4) + Conta (8) + Carteira (2)
             return $this->campoLivre = $nossoNumero . Util::numberFormatGeral($this->getAgencia(), 4) . Util::numberFormatGeral($this->getConta(), 8) . Util::numberFormatGeral($this->getCarteira(), 2);
         case 7:
             // Zeros (6) + Nosso número (17) + Carteira (2)
             return $this->campoLivre = '000000' . $nossoNumero . Util::numberFormatGeral($this->getCarteira(), 2);
     }
     throw new \Exception('O código do convênio precisa ter 4, 6 ou 7 dígitos!');
 }
Exemplo n.º 16
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;
     }
     // Carteira     => 20 - 20 | Valor: 1(Com registro) ou 2(Sem registro)
     $this->campoLivre = '2';
     // Constante    => 21 - 21 | Valor: 1(Constante)
     $this->campoLivre .= '1';
     // Agencia      => 22 a 25 | Valor: dinâmico(0000) ´4´
     $this->campoLivre .= Util::numberFormatGeral($this->getAgencia(), 4);
     // Cod. Cedente => 26 a 32 | Valor: dinâmico(0000000) ´7´
     $this->campoLivre .= $this->getConta();
     // Nosso numero => 33 a 40 | Valor: dinâmico(00000000) ´8´
     $this->campoLivre .= Util::numberFormatGeral($this->getNumeroDocumento(), 8);
     // Constante    => 41 - 42 | Valor: 40(Constante)
     $this->campoLivre .= '40';
     // Duplo digito => 43 - 44 | Valor: calculado(00) ´2´
     $this->campoLivre .= $this->duploDigitoBanrisul(Util::onlyNumbers($this->campoLivre));
     return $this->campoLivre;
 }
Exemplo n.º 17
0
 /**
  * Retorna o codigo de barras
  * @return string
  * @throws \Exception
  */
 public function getCodigoBarras()
 {
     if (!empty($this->campoCodigoBarras)) {
         return $this->campoCodigoBarras;
     }
     if (!$this->isValid()) {
         throw new \Exception('Campos requeridos pelo banco, aparentam estar ausentes');
     }
     $codigo = Util::numberFormatGeral($this->getCodigoBanco(), 3) . $this->getMoeda() . Util::fatorVencimento($this->getDataVencimento()) . Util::numberFormatValue($this->getValor(), 10, 0) . $this->getCampoLivre();
     $resto = Util::modulo11($codigo, 2, 9, false);
     $dv = in_array($resto, [0, 10, 11]) ? 1 : $resto;
     return $this->campoCodigoBarras = substr($codigo, 0, 4) . $dv . substr($codigo, 4);
 }
Exemplo n.º 18
0
 /**
  * Retorna o campo CIP do boleto
  *
  * @return int
  */
 public function getCip()
 {
     return Util::numberFormatGeral($this->cip, 3);
 }