/** * @param $numero * @return int|string */ public function digitoVerificadorNossonumero($numero) { $resto2 = Modulo::modulo11($numero, 7, 1); $digito = 11 - $resto2; if ($digito == 10) { $dv = "P"; } elseif ($digito == 11) { $dv = 0; } else { $dv = $digito; } return $dv; }
public function geraCodigoBanco() { $parte1 = substr($this->codigo, 0, 3); $parte2 = Modulo::modulo11($parte1); return $parte1 . "-" . $parte2; }
public function gerarLinhaDigitavel() { $codigo = $this->getLinha(); // Posição Conteúdo // 1 a 3 Número do banco // 4 Código da Moeda - 9 para Real // 5 Digito verificador do Código de Barras // 6 a 9 Fator de Vencimento // 10 a 19 Valor (8 inteiros e 2 decimais) // 20 a 44 Campo Livre definido por cada banco (25 caracteres) // 1. Campo - composto pelo código do banco, código da moéda, as cinco primeiras posições // do campo livre e DV (modulo10) deste campo $p1 = substr($codigo, 0, 4); $p2 = substr($codigo, 19, 5); $p3 = Modulo::modulo10("{$p1}{$p2}"); $p4 = "{$p1}{$p2}{$p3}"; $p5 = substr($p4, 0, 5); $p6 = substr($p4, 5); $campo1 = "{$p5}.{$p6}"; // 2. Campo - composto pelas posiçoes 6 a 15 do campo livre // e livre e DV (modulo10) deste campo $p1 = substr($codigo, 24, 10); $p2 = Modulo::modulo10($p1); $p3 = "{$p1}{$p2}"; $p4 = substr($p3, 0, 5); $p5 = substr($p3, 5); $campo2 = "{$p4}.{$p5}"; // 3. Campo composto pelas posicoes 16 a 25 do campo livre // e livre e DV (modulo10) deste campo $p1 = substr($codigo, 34, 10); $p2 = Modulo::modulo10($p1); $p3 = "{$p1}{$p2}"; $p4 = substr($p3, 0, 5); $p5 = substr($p3, 5); $campo3 = "{$p4}.{$p5}"; // 4. Campo - digito verificador do codigo de barras $campo4 = substr($codigo, 4, 1); // 5. Campo composto pelo fator vencimento e valor nominal do documento, sem // indicacao de zeros a esquerda e sem edicao (sem ponto e virgula). Quando se // tratar de valor zerado, a representacao deve ser 000 (tres zeros). $p1 = substr($codigo, 5, 4); $p2 = substr($codigo, 9, 10); $campo5 = "{$p1}{$p2}"; return "{$campo1} {$campo2} {$campo3} {$campo4} {$campo5}"; }
/** * @param Boleto $boleto * @return int */ public function getDvCampoLivre(Boleto $boleto) { $campoLivre = $this->getCampoLivre($boleto); return $this->tratarRestoDigitoVerificadorNossoNumeroCampoLivre(Modulo::modulo11($campoLivre, 9, 1)); }