feat(reports): nicht abrechenbare Projekte ausblenden
Im Zeitreport stehen interne Projekte und Abwesenheiten zwischen den Kundenzahlen: 2025 sind das 19.451 von 45.762 Stunden, und die Auslastung zeigt 146 Prozent, weil Urlaub und Krankheit mitzaehlen. Ein Haken neben der Billable-Aufteilung blendet Projekte vom Typ "nicht abrechenbar" aus. Er wirkt auf den ganzen Report - Summen, Auslastung, alle vier Gruppierungen - und auf die Exporte, die denselben Report bauen; im PDF-Kopf steht dann "Nicht abrechenbare Projekte: ausgeblendet". Gefiltert wird in loadEntries, damit Kunden-, Projekt- und Taskliste dieselbe Grundmenge sehen. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Opus 5
parent
2710baa615
commit
80e46910fd
@@ -12,7 +12,7 @@ import { userFilter } from './access.js';
|
||||
* (Topfbudget / alle auf dem Topf gebuchten Stunden). Nur
|
||||
* intern, in Reports per Schalter zuschaltbar.
|
||||
*/
|
||||
export async function loadEntries(settings, { from, to, userIds = null, customerId, projectId, taskId } = {}) {
|
||||
export async function loadEntries(settings, { from, to, userIds = null, customerId, projectId, taskId, skipNonBillableProjects = false } = {}) {
|
||||
// Administratoren sind keine Mitarbeiter - ihre Zeiten zaehlen nirgends mit.
|
||||
const where = ["u.role <> 'admin'"];
|
||||
const params = [];
|
||||
@@ -39,6 +39,9 @@ export async function loadEntries(settings, { from, to, userIds = null, customer
|
||||
where.push('e.task_id = ?');
|
||||
params.push(Number(taskId));
|
||||
}
|
||||
// Fuer Auswertungen, die nur das Kundengeschaeft zeigen sollen: interne
|
||||
// Projekte und Abwesenheiten bleiben draussen.
|
||||
if (skipNonBillableProjects) where.push("p.type <> 'non_billable'");
|
||||
|
||||
const [rows] = await pool.query(
|
||||
`SELECT e.id, e.user_id, e.project_id, e.task_id, e.pot_id, e.entry_date, e.minutes, e.note, e.billable,
|
||||
|
||||
Reference in New Issue
Block a user