From 9bb802cab9765861af10100c39a51904531345d2 Mon Sep 17 00:00:00 2001 From: "gpt-engineer-app[bot]" <159125892+gpt-engineer-app[bot]@users.noreply.github.com> Date: Sun, 19 Apr 2026 01:04:03 +0000 Subject: [PATCH 1/3] Changes Co-authored-by: renee-png <262607627+renee-png@users.noreply.github.com> --- src/routes/settings.import.tsx | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/routes/settings.import.tsx b/src/routes/settings.import.tsx index 91642b3..62c4b05 100644 --- a/src/routes/settings.import.tsx +++ b/src/routes/settings.import.tsx @@ -427,6 +427,7 @@ const IMPORTERS: ImporterConfig[] = [ aliases: { id: "external_id", expenseid: "external_id", externalid: "external_id", caseid: "_caseext", matterid: "_caseext", casenumber: "_casenum", + casename: "_casename", casetitle: "_casename", matter: "_casename", mattername: "_casename", description: "description", notes: "description", amount: "amount", cost: "amount", billable: "billable", @@ -436,8 +437,12 @@ const IMPORTERS: ImporterConfig[] = [ boolCols: ["billable"], dateCols: ["expense_date"], transform: (r, ctx) => { - r.case_id = (r._caseext && ctx.caseByExt.get(String(r._caseext))) || (r._casenum && ctx.caseByNumber.get(String(r._casenum))) || null; - delete r._caseext; delete r._casenum; + r.case_id = + (r._caseext && ctx.caseByExt.get(String(r._caseext))) || + (r._casenum && ctx.caseByNumber.get(String(r._casenum))) || + (r._casename && ctx.caseByTitle?.get(String(r._casename).toLowerCase())) || + null; + delete r._caseext; delete r._casenum; delete r._casename; if (!r.case_id || r.amount == null) return null; r.user_id = ctx.userId; return r; From 1d9e8fc77d2a969d6901d7ac859ec27063f8d4bb Mon Sep 17 00:00:00 2001 From: "gpt-engineer-app[bot]" <159125892+gpt-engineer-app[bot]@users.noreply.github.com> Date: Sun, 19 Apr 2026 01:04:14 +0000 Subject: [PATCH 2/3] Changes Co-authored-by: renee-png <262607627+renee-png@users.noreply.github.com> --- src/routes/settings.import.tsx | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/routes/settings.import.tsx b/src/routes/settings.import.tsx index 62c4b05..d9ecac9 100644 --- a/src/routes/settings.import.tsx +++ b/src/routes/settings.import.tsx @@ -710,6 +710,12 @@ function ImportPage() { bumpSkip("missing or invalid hours"); } else if (cfg.table === "time_entries" && !row.description && !row._activity) { bumpSkip("missing description/activity"); + } else if (cfg.table === "expenses" && !row.case_id && !row._caseext && !row._casenum && !row._casename) { + bumpSkip("missing case reference"); + } else if (cfg.table === "expenses" && (row._caseext || row._casenum || row._casename) && !row.case_id) { + bumpSkip("case not found (import cases first or match case title/number)"); + } else if (cfg.table === "expenses" && row.amount == null) { + bumpSkip("missing or invalid amount"); } else { bumpSkip("rejected by transform"); } From cf973d0618f1ee176e9c9d9e35cc440d9b42b287 Mon Sep 17 00:00:00 2001 From: "gpt-engineer-app[bot]" <159125892+gpt-engineer-app[bot]@users.noreply.github.com> Date: Sun, 19 Apr 2026 01:04:28 +0000 Subject: [PATCH 3/3] Changes Co-authored-by: renee-png <262607627+renee-png@users.noreply.github.com> --- src/routes/settings.import.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/routes/settings.import.tsx b/src/routes/settings.import.tsx index d9ecac9..65a7f57 100644 --- a/src/routes/settings.import.tsx +++ b/src/routes/settings.import.tsx @@ -440,7 +440,7 @@ const IMPORTERS: ImporterConfig[] = [ r.case_id = (r._caseext && ctx.caseByExt.get(String(r._caseext))) || (r._casenum && ctx.caseByNumber.get(String(r._casenum))) || - (r._casename && ctx.caseByTitle?.get(String(r._casename).toLowerCase())) || + (r._casename && ctx.caseByTitle.get(String(r._casename).toLowerCase().trim())) || null; delete r._caseext; delete r._casenum; delete r._casename; if (!r.case_id || r.amount == null) return null;