mega-plant/lib/cash-float-server.ts
David 1ec52961ee Cash float card, Office role + Slips tab, job card PDF, manual close/delete
- Cash Floats: ledger card (opening balance, top-ups, slips), manual entries, slip photos
- Office access level; clock app Slips tab (photograph a slip, popup for supplier/cost
  code/comments/amount); only Office sees it; per-role route table in lib/clock-access
- Job cards: Machine Service PDF (with Oil block), JC numbers, manual Close job, Delete
- Hide Expenses > Vehicle Costs and Finance (Bastion) from the menu

Co-Authored-By: Claude Sonnet 5.5 <noreply@anthropic.com>
2026-10-22 15:09:57 +02:00

11 lines
560 B
TypeScript

import "server-only";
import type PocketBase from "pocketbase";
import { normaliseCostCode } from "./cost-code";
/** The register vehicle a typed cost code names, or "" — matched like a purchase order's code, never guessed. */
export async function assetIdForCostCode(pb: PocketBase, costCode: string): Promise<string> {
const wanted = normaliseCostCode(costCode);
if (!wanted) return "";
const hit = (await pb.collection("assets").getFullList({ fields: "id,code" })).find((a) => normaliseCostCode(a.code || "") === wanted);
return hit?.id ?? "";
}