Regras de Negócio — Amortização Extraordinária
Esta página consolida as invariantes que governam a criação, a liquidação e o cancelamento de uma amortização extraordinária. Consulte-a sempre que as páginas de endpoints citarem um código de erro, um campo ou uma condição que precise de contexto adicional.
Data de referência (reference_date)
A reference_date é fornecida pelo chamador na requisição de criação e é a única referência temporal usada pelo serviço — o sistema nunca usa date.today(). Toda lógica dependente de data (classificação de parcelas vencidas, desconto pro-rata do Valor Presente, seleção de parcelas elegíveis para early_amortization) parte desse campo.
Tipos de amortização
Os 5 tipos suportados e como cada um se combina com os modos de criação:
| Tipo | Modo | installment_list | Regra de distribuição | Permite pagamento parcial |
|---|---|---|---|---|
equal_amount | Modo 2 (Acquittance) | Não envia | Proporcional, vencidas primeiro e depois futuras | Não |
first_installments | Modo 2 (Acquittance) | Não envia | Sequencial nas N primeiras parcelas | Não |
present_amount | Modo 1 (Targeted) | Envia | Explícita por parcela; desconto ordena juros → multa → principal | Não |
matured_installments | Modo 1 (Targeted) | Envia | Apenas parcelas já vencidas | Não |
early_amortization | Modo 1 (Targeted) | Envia (exatamente 1) | Uma única parcela futura com suporte a pagamento parcial | Sim |
Modo 1 — Targeted (com installment_list — array de installment_number inteiros): usa o endpoint PV per-installment — uma chamada por parcela selecionada. O serviço resolve cada installment_number para a parcela correspondente da security. Modo 2 — Acquittance (sem installment_list): usa o endpoint PV bulk — uma única chamada devolve o PV de todas as parcelas.
Amortização antecipada (early_amortization)
early_amortization é o único tipo que permite pagamento parcial. Todas as seguintes condições se aplicam:
- Exatamente 1 parcela em
installment_list— caso contrário,EVC100015. - A parcela-alvo não pode estar vencida — caso contrário,
EVC100016. - O
amountdeve ser ≤ Valor Presente da parcela — caso contrário,EVC100017. - Pagamento parcial é permitido. O estado
paid_amount > 0 AND paid_amount < expected_amounté derivado das colunas; não há novo valor de enum de status.pending_conciliationrepresenta tanto "não pago" quanto "parcialmente pago"; a transição parapaidsó ocorre quandototal_paid_amount >= total_expected_amount - tolerance_amount.
Fluxo de liquidação
Orquestração interna. A liquidação dos eventos extraordinários é executada pela QI Tech (account-liquidation-api) ao detectar o pagamento — o integrador não chama nenhum endpoint nesta etapa, nem recebe webhook dedicado às transições de status. As regras abaixo descrevem o comportamento interno para você entender o que ocorre após a criação.
Liquidação ordinária emite o total completo (regra 4). A liquidação ordinária na due_date continua emitindo o total_amount completo da parcela via SQS; não há subtração do paid_amount. O evento reconcilia o estado parcial-pago no seu próprio engine de early_amortization.