diff --git a/src/routes/settings.import.tsx b/src/routes/settings.import.tsx index eaca28b..2ad5187 100644 --- a/src/routes/settings.import.tsx +++ b/src/routes/settings.import.tsx @@ -716,6 +716,10 @@ function ImportPage() { // transform const transformed = cfg.transform ? cfg.transform(row, ctx) : row; if (!transformed) { + // Tables whose rows are linked to a case via _caseext / _casenum / _casename + const caseLinked = ["tasks", "events", "call_logs", "time_entries", "expenses", "comments", "status_updates"]; + const hasCaseHint = row._caseext != null || row._casenum != null || row._casename != null; + // Diagnose common transform-rejection reasons for clearer feedback if (cfg.table === "homeowners" && !row.client_id && !row._clientext && !row._clientname) { bumpSkip("no client match (missing companyid/company)"); @@ -725,20 +729,16 @@ function ImportPage() { bumpSkip("client not found"); } else if (cfg.table === "time_entries" && !row.work_date) { bumpSkip("missing or invalid work date"); - } else if (cfg.table === "time_entries" && !row.case_id && !row._caseext && !row._casenum && !row._casename) { - bumpSkip("missing case reference"); - } else if (cfg.table === "time_entries" && (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 === "time_entries" && (row.hours == null || row.hours <= 0) && row._time == null) { 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 if (caseLinked.includes(cfg.table) && !row.case_id && !hasCaseHint) { + bumpSkip("missing case reference"); + } else if (caseLinked.includes(cfg.table) && hasCaseHint && !row.case_id) { + bumpSkip("case not found (import cases first or match case title/number)"); } else { bumpSkip("rejected by transform"); }