fix(export): Stundennachweis nur fuer laufende Projekte auswaehlbar
Die Auswahl im Exportdialog kam aus allen zugewiesenen Projekten - also auch aus archivierten und von stillgelegten Kunden. In der Liste stand damit etwa "Top IT Services", wo seit 2025 nichts mehr laeuft. Waehlbar sind jetzt nur laufende Projekte aktiver Kunden. Dafuer liefert loadProjects den Status des Kunden mit; ohne ihn liesse sich "nur aktive Kunden" in der Oberflaeche nicht entscheiden. Die Zeiten aus archivierten Projekten bleiben erreichbar: ohne Filter exportiert der Nachweis alles, was die Person im Monat gebucht hat, und der Projektreport hat seinen eigenen Export. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
0cd426777d
commit
4e46df813c
@@ -33,12 +33,20 @@ export const ExportDialog: React.FC<{
|
||||
const [busy, setBusy] = useState(false);
|
||||
const isLead = atLeast(user, 'lead');
|
||||
|
||||
/*
|
||||
* Zur Auswahl stehen nur laufende Projekte aktiver Kunden. Archivierte
|
||||
* Projekte und stillgelegte Kunden wuerden die Liste mit Aufträgen fuellen,
|
||||
* fuer die niemand mehr einen Nachweis schreibt. Ihre Zeiten sind dadurch
|
||||
* nicht verloren: ohne Filter exportiert der Nachweis alles, was die Person
|
||||
* im Monat gebucht hat - und der Projektreport hat einen eigenen Export.
|
||||
*/
|
||||
const waehlbar = useMemo(() => projects.filter((p) => p.is_active && p.customer.is_active !== false), [projects]);
|
||||
const customers = useMemo(() => {
|
||||
const map = new Map<number, string>();
|
||||
projects.forEach((p) => map.set(p.customer.id, p.customer.name));
|
||||
waehlbar.forEach((p) => map.set(p.customer.id, p.customer.name));
|
||||
return [...map.entries()].sort((a, b) => a[1].localeCompare(b[1], 'de'));
|
||||
}, [projects]);
|
||||
const projectOptions = projects.filter((p) => !customerId || p.customer_id === customerId);
|
||||
}, [waehlbar]);
|
||||
const projectOptions = waehlbar.filter((p) => !customerId || p.customer_id === customerId);
|
||||
|
||||
// Monate: 18 zurueck, 2 voraus.
|
||||
const months = useMemo(() => {
|
||||
|
||||
+1
-1
@@ -178,7 +178,7 @@ export interface Project {
|
||||
owner_id: number | null;
|
||||
owner_name: string | null;
|
||||
is_active: boolean;
|
||||
customer: { id: number; name: string; short_name: string; color: string | null };
|
||||
customer: { id: number; name: string; short_name: string; color: string | null; is_active: boolean };
|
||||
pots: BudgetPot[];
|
||||
tasks: Task[];
|
||||
members: MemberRef[];
|
||||
|
||||
Reference in New Issue
Block a user