diff --git a/apps/web/src/app/(app)/lizenzen/[id]/page.tsx b/apps/web/src/app/(app)/lizenzen/[id]/page.tsx index b4f08bf..6202aed 100644 --- a/apps/web/src/app/(app)/lizenzen/[id]/page.tsx +++ b/apps/web/src/app/(app)/lizenzen/[id]/page.tsx @@ -29,13 +29,15 @@ const Dd = ({ label, children }: { label: string; children: ReactNode }) =>
(iso ? new Date(new Date(iso).getTime() - new Date().getTimezoneOffset() * 60000).toISOString().slice(0, 10) : ''); export default function Lizenz() { - const { id } = useParams<{ id: string }>(); const { can } = useSession(); const staff = can('licenses.read'); + const { id } = useParams<{ id: string }>(); const { can } = useSession(); const staff = can('licenses.read'); const w = can('licenses.write'); + const [custs, setCusts] = useState<{ id: string; name: string; customerNumber: string }[]>([]); const [assignTo, setAssignTo] = useState(''); const [d, setD] = useState(null); const [msg, setMsg] = useState<{ k: 'ok' | 'err' | 'warn'; t: string } | null>(null); const [busy, setBusy] = useState(false); const [confirm, setConfirm] = useState Promise }>(null); const [products, setProducts] = useState(null); const load = useCallback(() => api('GET', `/licenses/${id}`).then(setD).catch((e) => setMsg({ k: 'err', t: errMsg(e) })), [id]); useEffect(() => { void load(); }, [load]); useEffect(() => { if (d?.can.manage && products === null) api<{ products: CatalogProduct[] }>('GET', '/admin/licenses/catalog').then((c) => setProducts(c.products)).catch(() => setProducts([])); }, [d?.can.manage, products]); + useEffect(() => { if (w) api('GET', '/admin/customers').then(setCusts).catch(() => undefined); }, [w]); if (!d) return msg ? {msg.t} :

Wird geladen …

; async function act(fn: () => Promise, ok: string) { @@ -82,9 +84,17 @@ export default function Lizenz() { {d.can.reveal &&

Lizenzschlüssel

} + {w &&

{d.orgId ? 'Kunde ändern' : 'Kunde zuweisen'}

+
+ + + {d.orgId && } +
+

Ändert nur die Zuordnung im Kundencenter, nicht die Lizenz im Lizenzsystem.

} +

Details

- {staff &&
{d.orgId ? {d.customerNumber} · {d.orgName} : 'nicht zugewiesen'}
} + {staff &&
{d.orgId ? {d.customerNumber} · {d.orgName} : Nicht zugewiesen}
}
{d.program ?? '–'}
{d.product ?? d.edition ?? '–'}
{d.durationType ? DURATION[d.durationType] ?? d.durationType : '–'}