R-001 — Reparcelamento de dívida

TLDR: no máximo 2 reparcelamentos por produto, até 12 parcelas, primeira vencendo em até 7 dias, sem desconto — e um único acordo ativo por produto.

Família original no blueprint §08: RN-REPARC. Detalhada em USER-015 — Motor de negociação.

Given / When / Then

Dado um aluno com parcelas em atraso em um produto, Quando um atendente simula ou emite um reparcelamento, Então o sistema só aceita a proposta se ela respeitar simultaneamente o limite de reparcelamentos do produto, o teto de parcelas, o prazo da primeira parcela e a proibição de desconto.

Regras

ID Regra
RN-REPARC-1 Até 2 reparcelamentos por produto. Depois do 2º, nunca mais há parcelamento
RN-REPARC-2 Máximo 12 parcelas, com valor próximo ao da compra original
RN-REPARC-3 Vencimento da 1ª parcela em até 7 dias. Prazo maior vira agendamento, não acordo
RN-REPARC-4 Sem desconto em reparcelamento — desconto é exclusivo de quitação (R-002)
RN-REPARC-5 Um acordo por produto. Havendo concorrência, a prioridade é Formação de Terapeutas TRG
RN-REPARC-6 Durante acordo ativo, novas compras só à vista. Exceção: filiação CITRG parcelada, com TRG 100% concluído e certificado provisório

Tabela de decisão

Reparcelamentos já feitos no produto Parcelas pedidas Venc. da 1ª Resultado
0 ou 1 ≤ 12 ≤ 7 dias Acordo aceito
0 ou 1 ≤ 12 > 7 dias Vira agendamento (RN-REPARC-3)
0 ou 1 > 12 qualquer Rejeitado (RN-REPARC-2)
2 qualquer qualquer Rejeitado (RN-REPARC-1) — resta quitação

Divergência em aberto — RN-REPARC-4

A regra abaixo diz uma coisa e o código faz outra. Registrado aqui para o doc não mentir sobre o sistema; a regra em si não foi alterada e precisa de decisão de quem a escreveu.

A calculadora IBFT, em uso pelos atendentes, tem um campo “Desconto nos juros das parcelas em atraso (%)” que funciona apenas no reparcelamento — na quitação ela zera o desconto, o inverso de RN-REPARC-4.

O formulário de negociação do front (spec, decisão D2) foi construído seguindo a calculadora, e portanto permite esse desconto em reparcelamento.

O argumento a favor é que desconto de juros não é desconto de principal. Se a distinção for aceita, RN-REPARC-4 precisa ser reescrita e a validação discount_only_on_settlement (app/models/negotiation.rb) precisa separar os dois casos. Se for recusada, o campo sai do reparcelamento no front e na calculadora.

Enquanto não se decide, o backend continua rejeitando discount_percent em reparcelamento — e o front ainda não grava no backend, então a contradição não chegou a produzir dado inválido.

Restrições

  • Um reparcelamento com desconto é sempre inválido: se há flexibilização de valor, o instrumento correto é quitação (R-002). Ver a divergência em aberto acima.
  • O 2º reparcelamento exige contrato de confissão de dívida — ver USER-022.
  • No 2º reparcelamento, a negativação deixa de depender do progresso do aluno (R-003, RN-NEG-2), e o cancelamento de matrícula fica vedado (R-005, RN-CANC-1).
  • Antes de reparcelar parcelas atrasadas, todas as negativadas precisam estar quitadas (R-003, RN-NEG-4).

Teste vinculado

test/use_cases/debits/repayment_test.rb cobre a execução do acordo aprovado no Asaas (Debits::Repayment). As regras RN-REPARC-1 a RN-REPARC-6 seguem sem teste: a aprovação do Negotiation (motor de negociação, USER-015) ainda não foi implementada.