diff --git a/components/dashboard/installment-analysis/installment-analysis-page.tsx b/components/dashboard/installment-analysis/installment-analysis-page.tsx
index 0217406..c132535 100644
--- a/components/dashboard/installment-analysis/installment-analysis-page.tsx
+++ b/components/dashboard/installment-analysis/installment-analysis-page.tsx
@@ -2,12 +2,10 @@
import MoneyValues from "@/components/money-values";
import { Button } from "@/components/ui/button";
-import { Card, CardContent, CardHeader, CardTitle } from "@/components/ui/card";
-import { Separator } from "@/components/ui/separator";
+import { Card, CardContent } from "@/components/ui/card";
import { useMemo, useState } from "react";
import type { InstallmentAnalysisData } from "./types";
import { InstallmentGroupCard } from "./installment-group-card";
-import { AnalysisSummaryPanel } from "./analysis-summary-panel";
import {
RiCalculatorLine,
RiCheckboxBlankLine,
@@ -98,7 +96,7 @@ export function InstallmentAnalysisPage({
};
// Calcular totais
- const { totalInstallments, grandTotal, selectedCount } = useMemo(() => {
+ const { grandTotal, selectedCount } = useMemo(() => {
let installmentsSum = 0;
let installmentsCount = 0;
@@ -120,7 +118,6 @@ export function InstallmentAnalysisPage({
});
return {
- totalInstallments: installmentsSum,
grandTotal: installmentsSum,
selectedCount: installmentsCount,
};
@@ -178,70 +175,46 @@ export function InstallmentAnalysisPage({
)}
-
- {/* Conteúdo principal */}
-
- {/* Seção de Lançamentos Parcelados */}
- {data.installmentGroups.length > 0 && (
-
-
-
-
Lançamentos Parcelados
-
-
-
-
- {data.installmentGroups.map((group) => (
-
- toggleGroupSelection(
- group.seriesId,
- group.pendingInstallments
- .filter((i) => !i.isSettled)
- .map((i) => i.id)
- )
- }
- onToggleInstallment={(installmentId) =>
- toggleInstallmentSelection(group.seriesId, installmentId)
- }
- />
- ))}
-
-
- )}
-
- {/* Estado vazio */}
- {hasNoData && (
-
-
-
-
-
Nenhuma parcela pendente
-
- Você está em dia com seus pagamentos!
-
-
-
-
- )}
-
-
- {/* Painel lateral de resumo (sticky) */}
- {!hasNoData && (
-
-
0 && (
+
+ {data.installmentGroups.map((group) => (
+
+ toggleGroupSelection(
+ group.seriesId,
+ group.pendingInstallments
+ .filter((i) => !i.isSettled)
+ .map((i) => i.id)
+ )
+ }
+ onToggleInstallment={(installmentId) =>
+ toggleInstallmentSelection(group.seriesId, installmentId)
+ }
/>
-
- )}
-
+ ))}
+
+ )}
+
+ {/* Estado vazio */}
+ {hasNoData && (
+
+
+
+
+
Nenhuma parcela pendente
+
+ Você está em dia com seus pagamentos!
+
+
+
+
+ )}
);
}
diff --git a/components/dashboard/installment-analysis/installment-group-card.tsx b/components/dashboard/installment-analysis/installment-group-card.tsx
index 26e277f..cf735e1 100644
--- a/components/dashboard/installment-analysis/installment-group-card.tsx
+++ b/components/dashboard/installment-analysis/installment-group-card.tsx
@@ -41,9 +41,7 @@ export function InstallmentGroupCard({
const progress =
group.totalInstallments > 0
- ? ((group.paidInstallments + selectedInstallments.size) /
- group.totalInstallments) *
- 100
+ ? (group.paidInstallments / group.totalInstallments) * 100
: 0;
const selectedAmount = group.pendingInstallments
@@ -156,7 +154,7 @@ export function InstallmentGroupCard({
className={cn(
"flex items-center gap-3 rounded-md border p-2 transition-colors",
isSelected && !isPaid && "border-primary/50 bg-primary/5",
- isPaid && "bg-muted/50 opacity-60"
+ isPaid && "border-green-200 bg-green-50 dark:border-green-900 dark:bg-green-950/30"
)}
>
-
+
Parcela {installment.currentInstallment}/
{group.totalInstallments}
{isPaid && (
-
+
Paga
)}
-
+
Vencimento: {dueDate}
diff --git a/lib/dashboard/expenses/installment-analysis.ts b/lib/dashboard/expenses/installment-analysis.ts
index 9d59310..d2906e7 100644
--- a/lib/dashboard/expenses/installment-analysis.ts
+++ b/lib/dashboard/expenses/installment-analysis.ts
@@ -143,10 +143,11 @@ export async function fetchInstallmentAnalysis(
// Calcular quantas parcelas já foram pagas para cada grupo
const installmentGroups = Array.from(seriesMap.values()).map((group) => {
- const minPendingInstallment = Math.min(
- ...group.pendingInstallments.map((i) => i.currentInstallment)
- );
- group.paidInstallments = minPendingInstallment - 1;
+ // Contar quantas parcelas estão marcadas como pagas (settled)
+ const paidCount = group.pendingInstallments.filter(
+ (i) => i.isSettled
+ ).length;
+ group.paidInstallments = paidCount;
return group;
});