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;
}