mirror of
https://github.com/felipegcoutinho/openmonetis.git
synced 2026-05-10 03:11:46 +00:00
feat(cartoes): exigir limite e bloquear lançamentos acima do disponível
- campo limite passa a ser NOT NULL DEFAULT 0 no schema (migration 0029) - validação Zod com requiredDecimalSchema garante valor positivo no formulário - validateCardLimit() em transactions/actions/core.ts bloqueia criação e edição de despesas em cartão que ultrapassem o limite disponível, retornando mensagem com o valor exato restante - tipos Card.limit e Card.limitAvailable deixam de ser nullable - branch "sem limite registrado" removido de card-item.tsx Co-Authored-By: Claude Opus 4.7 <noreply@anthropic.com>
This commit is contained in:
@@ -13,10 +13,10 @@ import { db } from "@/shared/lib/db";
|
||||
import {
|
||||
dayOfMonthSchema,
|
||||
noteSchema,
|
||||
optionalDecimalSchema,
|
||||
requiredDecimalSchema,
|
||||
uuidSchema,
|
||||
} from "@/shared/lib/schemas/common";
|
||||
import { formatDecimalForDb } from "@/shared/utils/currency";
|
||||
import { formatDecimalForDbRequired } from "@/shared/utils/currency";
|
||||
import { normalizeFilePath } from "@/shared/utils/string";
|
||||
|
||||
const cardBaseSchema = z.object({
|
||||
@@ -35,7 +35,7 @@ const cardBaseSchema = z.object({
|
||||
closingDay: dayOfMonthSchema,
|
||||
dueDay: dayOfMonthSchema,
|
||||
note: noteSchema,
|
||||
limit: optionalDecimalSchema,
|
||||
limit: requiredDecimalSchema("limite"),
|
||||
logo: z
|
||||
.string({ message: "Selecione um logo." })
|
||||
.trim()
|
||||
@@ -87,7 +87,7 @@ export async function createCardAction(
|
||||
closingDay: data.closingDay,
|
||||
dueDay: data.dueDay,
|
||||
note: data.note ?? null,
|
||||
limit: formatDecimalForDb(data.limit),
|
||||
limit: formatDecimalForDbRequired(data.limit),
|
||||
logo: logoFile,
|
||||
accountId: data.accountId,
|
||||
userId: user.id,
|
||||
@@ -121,7 +121,7 @@ export async function updateCardAction(
|
||||
closingDay: data.closingDay,
|
||||
dueDay: data.dueDay,
|
||||
note: data.note ?? null,
|
||||
limit: formatDecimalForDb(data.limit),
|
||||
limit: formatDecimalForDbRequired(data.limit),
|
||||
logo: logoFile,
|
||||
accountId: data.accountId,
|
||||
})
|
||||
|
||||
Reference in New Issue
Block a user