From 3fdcfba4075d2503fb9b1f464ae37415e20e83a1 Mon Sep 17 00:00:00 2001 From: Claude Date: Sun, 16 Nov 2025 16:48:33 +0000 Subject: [PATCH] =?UTF-8?q?refactor:=20adicionar=20logos=20de=20cart=C3=B5?= =?UTF-8?q?es=20e=20corrigir=20contagem=20de=20parcelas=20pendentes?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Exibir logo do cartão ao lado do nome da parcela na análise - Corrigir contagem de "X pendentes" para excluir parcelas já pagas - Adicionar cartaoLogo à query e tipo InstallmentGroup --- .../installment-group-card.tsx | 31 ++++++++++++++----- .../expenses/installment-analysis.ts | 3 ++ 2 files changed, 26 insertions(+), 8 deletions(-) diff --git a/components/dashboard/installment-analysis/installment-group-card.tsx b/components/dashboard/installment-analysis/installment-group-card.tsx index 15d965e..0d1c2a2 100644 --- a/components/dashboard/installment-analysis/installment-group-card.tsx +++ b/components/dashboard/installment-analysis/installment-group-card.tsx @@ -6,9 +6,10 @@ import { Card, CardContent } from "@/components/ui/card"; import { Checkbox } from "@/components/ui/checkbox"; import { Progress } from "@/components/ui/progress"; import { cn } from "@/lib/utils/ui"; -import { RiArrowDownSLine, RiArrowRightSLine } from "@remixicon/react"; +import { RiArrowDownSLine, RiArrowRightSLine, RiCreditCardLine } from "@remixicon/react"; import { format } from "date-fns"; import { ptBR } from "date-fns/locale"; +import Image from "next/image"; import { useState } from "react"; import type { InstallmentGroup } from "./types"; @@ -31,6 +32,8 @@ export function InstallmentGroupCard({ (i) => !i.isSettled ); + const unpaidCount = unpaidInstallments.length; + const isFullySelected = selectedInstallments.size === unpaidInstallments.length && unpaidInstallments.length > 0; @@ -63,7 +66,22 @@ export function InstallmentGroupCard({
-

{group.name}

+
+ {group.cartaoLogo ? ( + {group.cartaoName + ) : ( +
+ +
+ )} +

{group.name}

+
{group.cartaoName && ( <> @@ -96,10 +114,8 @@ export function InstallmentGroupCard({ {group.paidInstallments} de {group.totalInstallments} pagas - {group.pendingInstallments.length}{" "} - {group.pendingInstallments.length === 1 - ? "pendente" - : "pendentes"} + {unpaidCount}{" "} + {unpaidCount === 1 ? "pendente" : "pendentes"}
@@ -109,8 +125,7 @@ export function InstallmentGroupCard({
{isPartiallySelected && ( - {selectedInstallments.size} de{" "} - {group.pendingInstallments.length} selecionadas + {selectedInstallments.size} de {unpaidCount} selecionadas )}
diff --git a/lib/dashboard/expenses/installment-analysis.ts b/lib/dashboard/expenses/installment-analysis.ts index d2906e7..49348a6 100644 --- a/lib/dashboard/expenses/installment-analysis.ts +++ b/lib/dashboard/expenses/installment-analysis.ts @@ -41,6 +41,7 @@ export type InstallmentGroup = { paymentMethod: string; cartaoId: string | null; cartaoName: string | null; + cartaoLogo: string | null; cartaoDueDay: string | null; totalInstallments: number; paidInstallments: number; @@ -74,6 +75,7 @@ export async function fetchInstallmentAnalysis( purchaseDate: lancamentos.purchaseDate, cartaoId: lancamentos.cartaoId, cartaoName: cartoes.name, + cartaoLogo: cartoes.logo, cartaoDueDay: cartoes.dueDay, }) .from(lancamentos) @@ -131,6 +133,7 @@ export async function fetchInstallmentAnalysis( paymentMethod: row.paymentMethod, cartaoId: row.cartaoId, cartaoName: row.cartaoName, + cartaoLogo: row.cartaoLogo, cartaoDueDay: row.cartaoDueDay, totalInstallments: row.installmentCount ?? 0, paidInstallments: 0,