Unterstützung: Rechenregel und Abzug im Abo-Stundenkonto

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
ClaudeandClaude Opus 5.5 committed 2026-09-30 15:01:57 +00:00
1 parent c4fab31603
commit 7c6b0c906b
5 files changed
+148 -5

No files matched your search

+7 -4
View File
@@ -1,12 +1,13 @@
import { config } from '../config.js'
import { listDocuments, Query } from './appwriteAdmin.js'
import { worksheetMinutes } from './worksheetMinutes.js'
/**
* Abo-Stundenkonto eines Kunden.
*
* Gutschriften: je bezahlter Abo-Rechnung 60 min (Collection hourCredits), gueltig 12 Monate.
* Verbrauch: Worksheets mit countsToPlan=true auf Tickets des Kunden, je Eintrag
* auf 15 min aufgerundet.
* Verbrauch: Worksheets mit countsToPlan=true auf Tickets des Kunden inkl. Unterstuetzung
* (worksheetMinutes), je Eintrag auf 15 min aufgerundet.
* Verrechnung: FIFO - die aelteste noch gueltige Gutschrift wird zuerst verbraucht.
* Was kein Guthaben mehr findet, ist Mehraufwand (separat abzurechnen).
* Vertragsende: Restguthaben verfaellt (siehe Abo-Bedingungen Ziff. 4).
@@ -55,14 +56,16 @@ export async function listPlanUsage(customerId) {
.filter((ws) => Number(ws.totalTime) > 0)
.map((ws) => {
const wo = byId.get(ws.workorderId) || {}
const total = worksheetMinutes(ws)
return {
id: ws.$id,
wsid: ws.wsid || '',
woid: ws.woid || wo.woid || '',
topic: wo.topic || wo.title || '',
date: parseSheetDate(ws).toISOString(),
rawMinutes: Number(ws.totalTime) || 0,
minutes: roundUsage(ws.totalTime),
rawMinutes: total,
minutes: roundUsage(total),
supportMinutes: total - (Number(ws.totalTime) || 0),
details: String(ws.details || '').slice(0, 300),
employee: ws.employeeName || ws.employeeShort || '',
}