fix: derivar período da fatura ao abrir dialog com cartão pré-preenchido

Quando o lancamento-dialog abre com cartaoId já definido (ex: vindo de
pré-lançamentos), agora roda deriveCreditCardPeriod() na inicialização
para calcular o período correto da fatura automaticamente, sem precisar
trocar o cartão e voltar.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Felipe Coutinho
2026-02-26 17:53:26 +00:00
parent b9ea8f2864
commit 71537cc16b

View File

@@ -35,6 +35,7 @@ import {
import {
applyFieldDependencies,
buildLancamentoInitialState,
deriveCreditCardPeriod,
} from "@/lib/lancamentos/form-helpers";
import { BasicFieldsSection } from "./basic-fields-section";
import { BoletoFieldsSection } from "./boleto-fields-section";
@@ -98,8 +99,7 @@ export function LancamentoDialog({
useEffect(() => {
if (dialogOpen) {
setFormState(
buildLancamentoInitialState(
const initial = buildLancamentoInitialState(
lancamento,
defaultPagadorId,
defaultPeriod,
@@ -112,8 +112,27 @@ export function LancamentoDialog({
defaultTransactionType,
isImporting,
},
),
);
// Derive credit card period on open when cartaoId is pre-filled
if (
initial.paymentMethod === "Cartão de crédito" &&
initial.cartaoId &&
initial.purchaseDate
) {
const card = cartaoOptions.find(
(opt) => opt.value === initial.cartaoId,
);
if (card?.closingDay) {
initial.period = deriveCreditCardPeriod(
initial.purchaseDate,
card.closingDay,
card.dueDay,
);
}
}
setFormState(initial);
setErrorMessage(null);
}
}, [
@@ -128,6 +147,7 @@ export function LancamentoDialog({
defaultAmount,
defaultTransactionType,
isImporting,
cartaoOptions,
]);
const primaryPagador = formState.pagadorId;