diff --git a/src/components/cases/ledger-row.tsx b/src/components/cases/ledger-row.tsx index 94ac184..d9c1333 100644 --- a/src/components/cases/ledger-row.tsx +++ b/src/components/cases/ledger-row.tsx @@ -8,7 +8,7 @@ import { formatCurrency } from "@/lib/format"; export interface EditableEntry { id: string; - entry_date: string; + entry_date: string | null; description: string | null; account: string | null; assess: number; @@ -63,6 +63,8 @@ export function SortableLedgerRow({ entry, onPatch, onRemove }: Props) { const commit = (key: keyof EditableEntry, raw: string | number) => { let val: any = raw; if (NUM_COLS.some((c) => c.key === key)) val = raw === "" ? 0 : Number(raw) || 0; + // Allow blank dates / blank text fields + if (key === "entry_date" && raw === "") val = null; if (val === (entry as any)[key]) return; setDraft((d) => ({ ...d, [key]: val })); onPatch(entry.id, { [key]: val } as any); @@ -84,9 +86,9 @@ export function SortableLedgerRow({ entry, onPatch, onRemove }: Props) { setDraft((d) => ({ ...d, entry_date: e.target.value }))} - onBlur={(e) => commit("entry_date", e.target.value)} + value={draft.entry_date ?? ""} + onChange={(e) => setDraft((d) => ({ ...d, entry_date: e.target.value || null }))} + onBlur={(e) => commit("entry_date", e.target.value || (null as any))} className="w-full bg-transparent border border-transparent hover:border-border focus:border-ring rounded px-1.5 py-1 text-xs outline-none" /> diff --git a/src/integrations/supabase/types.ts b/src/integrations/supabase/types.ts index 5be89d8..afed045 100644 --- a/src/integrations/supabase/types.ts +++ b/src/integrations/supabase/types.ts @@ -666,7 +666,7 @@ export type Database = { credit: number debit: number description: string | null - entry_date: string + entry_date: string | null id: string interest: number late: number @@ -688,7 +688,7 @@ export type Database = { credit?: number debit?: number description?: string | null - entry_date?: string + entry_date?: string | null id?: string interest?: number late?: number @@ -710,7 +710,7 @@ export type Database = { credit?: number debit?: number description?: string | null - entry_date?: string + entry_date?: string | null id?: string interest?: number late?: number diff --git a/src/lib/ledger.ts b/src/lib/ledger.ts index 3ff132c..c2f7018 100644 --- a/src/lib/ledger.ts +++ b/src/lib/ledger.ts @@ -25,7 +25,7 @@ export const BUCKET_SHORT: Record = { export interface LedgerEntry { id: string; collection_id: string; - entry_date: string; + entry_date: string | null; description: string | null; account: string | null; assess: number; diff --git a/supabase/migrations/20260426083827_b9521c94-636c-4fc1-877e-9cc9d02cae9c.sql b/supabase/migrations/20260426083827_b9521c94-636c-4fc1-877e-9cc9d02cae9c.sql new file mode 100644 index 0000000..fb63a3d --- /dev/null +++ b/supabase/migrations/20260426083827_b9521c94-636c-4fc1-877e-9cc9d02cae9c.sql @@ -0,0 +1,3 @@ +ALTER TABLE public.collection_ledger_entries + ALTER COLUMN entry_date DROP NOT NULL, + ALTER COLUMN entry_date DROP DEFAULT; \ No newline at end of file