From a34d92f3bd7ceb96285bc32f1f2ff2eb79052170 Mon Sep 17 00:00:00 2001 From: Felipe Coutinho Date: Sun, 23 Nov 2025 14:52:22 -0300 Subject: [PATCH] =?UTF-8?q?feat:=20aprimora=20a=20exibi=C3=A7=C3=A3o=20do?= =?UTF-8?q?=20cart=C3=A3o=20de=20parcelas=20e=20ajusta=20a=20l=C3=B3gica?= =?UTF-8?q?=20de=20busca?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Melhora a apresentação do nome do grupo e do cartão no componente InstallmentGroupCard, utilizando um layout mais compacto. - Altera a lógica de busca na função fetchInstallmentAnalysis para incluir lançamentos parcelados apenas do pagador com a função de admin. --- .../installment-group-card.tsx | 45 ++++++++++--------- .../expenses/installment-analysis.ts | 7 ++- 2 files changed, 29 insertions(+), 23 deletions(-) diff --git a/components/dashboard/installment-analysis/installment-group-card.tsx b/components/dashboard/installment-analysis/installment-group-card.tsx index 5d162cd..46cbbc7 100644 --- a/components/dashboard/installment-analysis/installment-group-card.tsx +++ b/components/dashboard/installment-analysis/installment-group-card.tsx @@ -67,42 +67,45 @@ export function InstallmentGroupCard({ />
-
+
-

{group.name}

- {group.cartaoName && ( -
- {group.cartaoLogo && ( - {group.cartaoName} - )} - - {group.cartaoName} - -
- )} +
+ {group.cartaoLogo && ( + {group.cartaoName} + )} + {group.name}| + + {group.cartaoName} + +
-
+
+ + {selectedInstallments.size > 0 && ( + | + )} + {selectedInstallments.size > 0 && ( )}
{/* Progress bar */} -
-
+
+
{group.paidInstallments} de {group.totalInstallments} pagas diff --git a/lib/dashboard/expenses/installment-analysis.ts b/lib/dashboard/expenses/installment-analysis.ts index d08e87c..250bff7 100644 --- a/lib/dashboard/expenses/installment-analysis.ts +++ b/lib/dashboard/expenses/installment-analysis.ts @@ -1,10 +1,11 @@ -import { cartoes, lancamentos } from "@/db/schema"; +import { cartoes, lancamentos, pagadores } from "@/db/schema"; import { ACCOUNT_AUTO_INVOICE_NOTE_PREFIX, INITIAL_BALANCE_NOTE, } from "@/lib/accounts/constants"; import { db } from "@/lib/db"; import { toNumber } from "@/lib/dashboard/common"; +import { PAGADOR_ROLE_ADMIN } from "@/lib/pagadores/constants"; import { and, eq, isNotNull, isNull, or, sql } from "drizzle-orm"; // Calcula a data de vencimento baseada no período e dia de vencimento do cartão @@ -58,7 +59,7 @@ export type InstallmentAnalysisData = { export async function fetchInstallmentAnalysis( userId: string ): Promise { - // 1. Buscar todos os lançamentos parcelados não antecipados + // 1. Buscar todos os lançamentos parcelados não antecipados do pagador admin const installmentRows = await db .select({ id: lancamentos.id, @@ -80,6 +81,7 @@ export async function fetchInstallmentAnalysis( }) .from(lancamentos) .leftJoin(cartoes, eq(lancamentos.cartaoId, cartoes.id)) + .leftJoin(pagadores, eq(lancamentos.pagadorId, pagadores.id)) .where( and( eq(lancamentos.userId, userId), @@ -87,6 +89,7 @@ export async function fetchInstallmentAnalysis( eq(lancamentos.condition, "Parcelado"), eq(lancamentos.isAnticipated, false), isNotNull(lancamentos.seriesId), + eq(pagadores.role, PAGADOR_ROLE_ADMIN), or( isNull(lancamentos.note), and(