From 51652da4f8fd73d3c1cf71608cc3230c8ff4ae06 Mon Sep 17 00:00:00 2001 From: Felipe Coutinho Date: Mon, 4 May 2026 01:44:08 +0000 Subject: [PATCH] =?UTF-8?q?fix(invoices):=20exibir=20=C3=ADcone=20de=20ane?= =?UTF-8?q?xo=20na=20fatura=20do=20cart=C3=A3o=20(2.5.1)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit fetchCardTransactions não preenchia hasAttachments, então o ícone não aparecia em /cards/[cardId]/invoice. Agora delega para fetchTransactionsWithRelations, que já calcula o flag via EXISTS. Co-Authored-By: Claude Opus 4.7 --- CHANGELOG.md | 7 +++++++ README.md | 2 +- package.json | 2 +- src/features/invoices/queries.ts | 14 +++----------- 4 files changed, 12 insertions(+), 13 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 5174f69..3a6f34c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,13 @@ Todas as mudanças notáveis deste projeto serão documentadas neste arquivo. O formato é baseado em [Keep a Changelog](https://keepachangelog.com/pt-BR/1.1.0/), e este projeto adere ao [Versionamento Semântico](https://semver.org/lang/pt-BR/). +## [2.5.1] - 2026-05-04 + +Versão de correção pontual focada na exibição do indicador de anexo nas tabelas de lançamentos da fatura do cartão. Em `/cards/[cardId]/invoice`, lançamentos com anexos não mostravam o ícone porque o fetcher dedicado da fatura não calculava o flag `hasAttachments`. A primeira tentativa de adicionar o EXISTS via `extras` na query relacional gerou SQL inválido (Drizzle re-aliasava `transactionAttachments.transactionId` para o alias da tabela externa). A correção definitiva troca o fetcher pela função compartilhada `fetchTransactionsWithRelations` de `features/transactions`, que já implementa o EXISTS corretamente via `select`. + +### Corrigido +- Ícone de anexo voltou a aparecer na tabela de lançamentos da fatura do cartão (`/cards/[cardId]/invoice`). `fetchCardTransactions` em `features/invoices/queries.ts` agora delega para `fetchTransactionsWithRelations`, garantindo que o flag `hasAttachments` seja preenchido com a mesma EXISTS subquery usada no restante do app. + ## [2.5.0] - 2026-05-01 Esta versão melhora o fechamento de faturas, a correção de lançamentos já registrados e a conferência de saldos contra o extrato do banco. O novo **ajuste de fatura** fecha a conta entre o total calculado pelo sistema e o valor real cobrado pelo banco, sem exigir que o usuário reabra lançamentos individuais. A mesma ideia foi estendida para **contas correntes**: na página do extrato, ao lado de "Saldo ao final do período", o usuário informa o saldo real e o sistema cria (ou atualiza) um lançamento de ajuste no período visualizado. Também entra o fluxo de **reembolso** para despesas à vista: pelo menu de ações do lançamento, o usuário informa a data do reembolso e o sistema cria uma receita espelhada no extrato ou na fatura correta. O widget de boletos do dashboard ganhou paridade com o widget de faturas — confirmação de pagamento agora pede conta de origem e data antes de quitar o boleto. Por fim, o **limite do cartão** passou a ser obrigatório e o sistema bloqueia despesas em cartão que ultrapassem o limite disponível, retornando uma mensagem com o valor exato disponível. As operações mantêm rastro no lançamento gerado e respeitam a proteção de faturas já pagas. diff --git a/README.md b/README.md index 319bac2..945c58d 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,7 @@ > **⚠️ Não há versão online hospedada.** Você precisa clonar o repositório e rodar localmente ou no seu próprio servidor. -[![Version](https://img.shields.io/badge/version-2.5.0-blue?style=flat-square)](CHANGELOG.md) +[![Version](https://img.shields.io/badge/version-2.5.1-blue?style=flat-square)](CHANGELOG.md) [![Next.js](https://img.shields.io/badge/Next.js-black?style=flat-square&logo=next.js)](https://nextjs.org/) [![TypeScript](https://img.shields.io/badge/TypeScript-blue?style=flat-square&logo=typescript)](https://www.typescriptlang.org/) [![PostgreSQL](https://img.shields.io/badge/PostgreSQL-blue?style=flat-square&logo=postgresql)](https://www.postgresql.org/) diff --git a/package.json b/package.json index 980fa5e..4a93913 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "openmonetis", - "version": "2.5.0", + "version": "2.5.1", "private": true, "packageManager": "pnpm@10.33.0", "scripts": { diff --git a/src/features/invoices/queries.ts b/src/features/invoices/queries.ts index 748a04f..f6fdcb0 100644 --- a/src/features/invoices/queries.ts +++ b/src/features/invoices/queries.ts @@ -1,5 +1,6 @@ -import { and, desc, eq, type SQL, sum } from "drizzle-orm"; +import { and, eq, type SQL, sum } from "drizzle-orm"; import { cards, invoices, transactions } from "@/db/schema"; +import { fetchTransactionsWithRelations } from "@/features/transactions/queries"; import { buildInvoicePaymentNote } from "@/shared/lib/accounts/constants"; import { db } from "@/shared/lib/db"; import { @@ -104,14 +105,5 @@ export async function fetchInvoiceData( } export async function fetchCardTransactions(filters: SQL[]) { - return db.query.transactions.findMany({ - where: and(...filters), - with: { - payer: true, - financialAccount: true, - card: true, - category: true, - }, - orderBy: desc(transactions.purchaseDate), - }); + return fetchTransactionsWithRelations({ filters }); }