protected function segmentoP($nSequencialLote, BoletoContract $boleto)
{
$this->iniciaDetalhe();
$this->add(1, 3, Util::onlyNumbers($this->getCodigoBanco()));
//Código do Banco
$this->add(4, 7, Util::formatCnab(9, 01, 4));
// Numero do lote remessa
$this->add(8, 8, Util::formatCnab(9, 3, 1));
// Numero do lote remessa
$this->add(9, 13, Util::formatCnab(9, $nSequencialLote, 5));
// Nº sequencial do registro de lote
$this->add(14, 14, Util::formatCnab('9', 'P', 1));
// Nº sequencial do registro de lote
$this->add(15, 15, '');
// Reservado (Uso Banco)
$this->add(16, 17, Util::formatCnab(9, 01, 2));
// Código de movimento remessa
$this->add(18, 21, Util::formatCnab(9, $this->getAgencia(), 4));
// Agência do cedente
$this->add(22, 22, Util::formatCnab(9, $this->getAgenciaDv(), 1));
// Digito verificador da Agência do cedente
$this->add(23, 31, Util::formatCnab(9, $this->getConta(), 9));
// Numero da conta corrente
$this->add(32, 32, Util::formatCnab(9, $this->getContaDv(), 1));
// Digito verificador da conta corrente
$this->add(33, 41, Util::formatCnab(9, $this->getConta(), 9));
// Conta Cobrança
$this->add(42, 42, Util::formatCnab(9, $this->getContaDv(), 1));
// Digito da Conta Cobrança
$this->add(43, 44, '');
// Reservado (Uso Banco)
$this->add(45, 57, Util::formatCnab(9, $boleto->getNossoNumero(), 13));
// Nosso Número
$this->add(58, 58, Util::formatCnab(9, $this->getCarteira(), 1));
// Tipo de Cobrança
$this->add(59, 59, Util::formatCnab(9, 1, 1));
// Forma de Cadastramento
$this->add(60, 60, Util::formatCnab(9, 2, 1));
// Tipo de documento
$this->add(61, 61, '');
// Reservado (Uso Banco)
$this->add(62, 62, '');
// Reservado (Uso Banco)
//
$this->add(63, 77, Util::formatCnab(9, $boleto->getNumero(), 15));
// Seu Número
$this->add(78, 85, $boleto->getDataVencimento()->format('dmY'));
// Data de vencimento do título
$this->add(86, 100, Util::formatCnab(9, $boleto->getValor(), 15, 2));
// Valor nominal do título
$this->add(101, 104, Util::formatCnab(9, 0, 4));
//Agência encarregada da cobrança
$this->add(105, 105, Util::formatCnab(9, 0, 1));
//Dígito da Agência do Cedente
$this->add(106, 106, '');
//Reservado (uso Banco)
$this->add(107, 108, Util::formatCnab(9, self::DS_DUPLICATA_DE_SERVICO, 2));
//Espécie do título
$this->add(109, 109, Util::formatCnab('9', 'N', 1));
//Identif. de título Aceito/Não Aceito
$this->add(110, 117, date('dmY'));
//Data da emissão do título
$juros = 0;
if ($boleto->getJuros() > 0) {
$juros = Util::percent($boleto->getValor(), $boleto->getJuros()) / 30;
}
$this->add(118, 118, Util::formatCnab(9, '', 1));
//Código do juros de mora
$this->add(119, 126, Util::formatCnab(9, $boleto->getDataVencimento()->format('dmY'), 8));
//Data do juros de mora / data de vencimento do titulo
$this->add(127, 141, Util::formatCnab(9, $juros, 15, 2));
//Valor da mora/dia ou Taxa mensal
$this->add(142, 142, Util::formatCnab(9, '', 1));
//Código do desconto 1
$this->add(143, 150, Util::formatCnab(9, $boleto->getDataVencimento()->format('dmY'), 8));
//Data de desconto 1
$this->add(151, 165, Util::formatCnab(9, 0, 15, 2));
//Valor ou Percentual do desconto concedido //TODO
$this->add(166, 180, Util::formatCnab(9, 0, 15, 2));
//Valor do IOF a ser recolhido
$this->add(181, 195, Util::formatCnab(9, $boleto->getDescontosAbatimentos(), 15, 2));
//Valor do abatimento
$this->add(196, 220, '');
//Identificação do título na empresa
$this->add(221, 221, Util::formatCnab(9, 0, 1));
//Código para protesto
$this->add(222, 223, Util::formatCnab(9, 0, 2));
//Número de dias para protesto
$this->add(224, 224, Util::formatCnab(9, 2, 1));
//Código para Baixa/Devolução
$this->add(225, 225, Util::formatCnab(9, 0, 1));
// Reservado (uso Banco)
$this->add(226, 227, Util::formatCnab(9, 0, 2));
// Número de dias para Baixa/Devolução
$this->add(228, 229, Util::formatCnab(9, 0, 2));
// Código da moeda
$this->add(230, 240, '');
// Reservado (Uso Banco)
return $this;
}