syncBillingCandidates (idempotent, Event-Hook für work_order.released_for_billing und report.approved), Aufstellung ohne Preise (nur freigegebene Zeiten, Fahrzeit getrennt, Pausen informativ, Anfahrten-Zählung, Material), markBilled mit eingefrorenem Snapshot und Positionszuordnung, voidBilling mit Grund und neuem offenen Eintrag (billed → released_for_billing nur über applyTransition-Option billingVoid), Meilenstein-Flow mit Events, Job billing-pdf (Dokument other/backoffice_only), Sync-Op milestone.reach. Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
266 lines
9.6 KiB
JSON
266 lines
9.6 KiB
JSON
{
|
||
"bell": {
|
||
"label": "Benachrichtigungen",
|
||
"unreadCount": "{count, plural, =0 {Keine ungelesenen} one {# ungelesen} other {# ungelesen}}",
|
||
"empty": "Keine Benachrichtigungen.",
|
||
"markAllRead": "Alle gelesen",
|
||
"showAll": "Alle anzeigen"
|
||
},
|
||
"list": {
|
||
"crumb": "Übersicht",
|
||
"title": "Benachrichtigungen",
|
||
"sub": "Zuweisungen, Berichte, Notdienst und Fehler – neueste zuerst.",
|
||
"filterStatus": "Status",
|
||
"filterType": "Art",
|
||
"statusAll": "Alle",
|
||
"statusUnread": "Ungelesen",
|
||
"statusRead": "Gelesen",
|
||
"typeAll": "Alle Arten",
|
||
"apply": "Filtern",
|
||
"reset": "Zurücksetzen",
|
||
"empty": "Keine Benachrichtigungen für diese Auswahl.",
|
||
"unread": "Neu",
|
||
"read": "Gelesen",
|
||
"open": "Öffnen",
|
||
"markRead": "Als gelesen markieren",
|
||
"markAllRead": "Alle als gelesen markieren",
|
||
"previous": "Zurück",
|
||
"next": "Weiter",
|
||
"page": "Seite {page} von {pages}"
|
||
},
|
||
"types": {
|
||
"work_order_assigned": "Teamzuweisung",
|
||
"work_order_changed": "Auftrag geändert",
|
||
"work_order_cancelled": "Auftrag storniert",
|
||
"work_order_started": "Auftrag gestartet",
|
||
"work_order_daily_report_created": "Tagesbericht erstellt",
|
||
"work_order_technically_completed": "Technisch abgeschlossen",
|
||
"work_order_signature_missing": "Unterschrift fehlt",
|
||
"work_order_missing_required": "Pflichtangaben fehlen",
|
||
"work_order_released_for_billing": "Zur Abrechnung freigegeben",
|
||
"report_submitted": "Bericht zur Prüfung",
|
||
"report_approved": "Bericht freigegeben",
|
||
"report_rejected": "Bericht zurückgewiesen",
|
||
"emergency_created": "Notdiensteinsatz erstellt",
|
||
"emergency_completed": "Notdiensteinsatz abgeschlossen",
|
||
"import_ready_for_review": "Import zur Prüfung",
|
||
"import_failed": "Fehler bei Dokumentverarbeitung",
|
||
"sync_failed": "Synchronisationsfehler",
|
||
"time_approval_requested": "Zeit zur Freigabe",
|
||
"time_approved": "Zeit freigegeben",
|
||
"time_rejected": "Zeit abgelehnt",
|
||
"milestone_reached": "Meilenstein erreicht",
|
||
"milestone_confirmed": "Meilenstein bestätigt",
|
||
"milestone_rejected": "Meilenstein abgelehnt"
|
||
},
|
||
"events": {
|
||
"work_order_assigned": {
|
||
"title": "Neuer Auftrag {number}",
|
||
"message": "{title} – {customer} wurde Ihrem Team zugewiesen."
|
||
},
|
||
"work_order_changed": {
|
||
"title": "Auftrag {number} geändert",
|
||
"message": "{title} – {customer}: Angaben wurden aktualisiert."
|
||
},
|
||
"work_order_cancelled": {
|
||
"title": "Auftrag {number} storniert",
|
||
"message": "{title} – {customer} wurde storniert."
|
||
},
|
||
"work_order_started": {
|
||
"title": "Auftrag {number} gestartet",
|
||
"message": "{actor} hat den Einsatz bei {customer} begonnen."
|
||
},
|
||
"work_order_daily_report_created": {
|
||
"title": "Tagesbericht zu {number}",
|
||
"message": "{actor} hat einen Tagesbericht für {customer} erstellt."
|
||
},
|
||
"work_order_technically_completed": {
|
||
"title": "Auftrag {number} technisch abgeschlossen",
|
||
"message": "{title} – {customer}: Einsatz vor Ort beendet."
|
||
},
|
||
"work_order_signature_missing": {
|
||
"title": "Unterschrift fehlt: {number}",
|
||
"message": "{title} – {customer}: Kundenunterschrift liegt nicht vor."
|
||
},
|
||
"work_order_missing_required": {
|
||
"title": "Pflichtangaben fehlen: {number}",
|
||
"message": "{title} – {customer}: Dokumentation unvollständig."
|
||
},
|
||
"work_order_released_for_billing": {
|
||
"title": "Auftrag {number} zur Abrechnung",
|
||
"message": "{title} – {customer} ist bereit zur Abrechnung."
|
||
},
|
||
"report_submitted": {
|
||
"title": "Bericht zur Prüfung: {number}",
|
||
"message": "{actor} hat einen Bericht zu {title} eingereicht."
|
||
},
|
||
"report_approved": {
|
||
"title": "Bericht freigegeben: {number}",
|
||
"message": "Der Bericht zu {title} wurde freigegeben."
|
||
},
|
||
"report_rejected": {
|
||
"title": "Bericht zurückgewiesen: {number}",
|
||
"message": "Der Bericht zu {title} braucht eine Korrektur."
|
||
},
|
||
"emergency_created": {
|
||
"title": "Notdiensteinsatz {number} erstellt",
|
||
"message": "{actor} hat einen Notdiensteinsatz bei {customer} angelegt."
|
||
},
|
||
"emergency_completed": {
|
||
"title": "Notdiensteinsatz {number} abgeschlossen",
|
||
"message": "{customer}: zur Prüfung und Abrechnung."
|
||
},
|
||
"import_ready_for_review": {
|
||
"title": "Import zur Prüfung bereit",
|
||
"message": "Die Daten aus {fileName} liegen zur Prüfung vor."
|
||
},
|
||
"import_failed": {
|
||
"title": "Fehler bei Dokumentverarbeitung",
|
||
"message": "{fileName} konnte nicht verarbeitet werden."
|
||
},
|
||
"sync_failed": {
|
||
"title": "Synchronisation fehlgeschlagen",
|
||
"message": "Eine Änderung konnte nicht übernommen werden ({reason})."
|
||
},
|
||
"time_approval_requested": {
|
||
"title": "Zeit zur Freigabe: {number}",
|
||
"message": "{actor} hat eine Zeit zu {number} nachgetragen oder eine Korrektur beantragt."
|
||
},
|
||
"time_approved": {
|
||
"title": "Zeit freigegeben: {number}",
|
||
"message": "{actor} hat Ihre Zeit zu {number} freigegeben."
|
||
},
|
||
"time_rejected": {
|
||
"title": "Zeit abgelehnt: {number}",
|
||
"message": "{actor} hat Ihre Zeit zu {number} abgelehnt: {reason}"
|
||
},
|
||
"milestone_reached": {
|
||
"title": "Meilenstein erreicht: {number}",
|
||
"message": "{actor} meldet einen Meilenstein zu {number} als erreicht. Bitte bestätigen."
|
||
},
|
||
"milestone_confirmed": {
|
||
"title": "Meilenstein bestätigt: {number}",
|
||
"message": "{actor} hat Ihren gemeldeten Meilenstein zu {number} bestätigt."
|
||
},
|
||
"milestone_rejected": {
|
||
"title": "Meilenstein abgelehnt: {number}",
|
||
"message": "{actor} hat Ihren gemeldeten Meilenstein zu {number} abgelehnt: {reason}"
|
||
}
|
||
},
|
||
"fallback": {
|
||
"unknown": "unbekannt",
|
||
"system": "System",
|
||
"document": "Dokument"
|
||
},
|
||
"preferences": {
|
||
"title": "Benachrichtigungen",
|
||
"sub": "In der App erhalten Sie alle Benachrichtigungen. Hier legen Sie fest, welche zusätzlich per E-Mail kommen.",
|
||
"email": "E-Mail",
|
||
"mandatory": "Pflicht – nicht abbestellbar",
|
||
"save": "Speichern",
|
||
"saved": "Einstellungen gespeichert."
|
||
},
|
||
"mailSettings": {
|
||
"crumb": "Einstellungen",
|
||
"title": "E-Mail-Versand",
|
||
"sub": "Absender, Antwortadresse und feste Empfänger für Notdienst und Abrechnung.",
|
||
"back": "Zurück zu Einstellungen",
|
||
"sender": "Absender",
|
||
"fromName": "Absendername",
|
||
"fromNameHint": "Erscheint als Name im Posteingang. Leer = Firmenname.",
|
||
"fromAddress": "Absenderadresse",
|
||
"fromAddressHint": "Die Adresse bleibt {address}, damit Mails zugestellt werden (SPF/DKIM).",
|
||
"replyTo": "Antwortadresse",
|
||
"replyToHint": "Antworten auf Benachrichtigungen gehen an diese Adresse.",
|
||
"recipients": "Feste Empfänger",
|
||
"emergencyRecipients": "Empfänger Notdienst",
|
||
"emergencyHint": "Eine Adresse je Zeile. Erhalten jeden neuen und abgeschlossenen Notdiensteinsatz.",
|
||
"billingRecipients": "Empfänger Abrechnung",
|
||
"billingHint": "Eine Adresse je Zeile. Erhalten Aufträge, die zur Abrechnung freigegeben sind. Leer = Backoffice.",
|
||
"save": "Speichern",
|
||
"saved": "Einstellungen gespeichert.",
|
||
"invalid": "Bitte Eingaben prüfen: {detail}"
|
||
},
|
||
"audit": {
|
||
"crumb": "Einstellungen",
|
||
"title": "Audit-Protokoll",
|
||
"sub": "Wer hat wann was geändert – nur lesbar.",
|
||
"back": "Zurück zu Einstellungen",
|
||
"from": "Von",
|
||
"to": "Bis",
|
||
"actor": "Benutzer",
|
||
"actorAll": "Alle Benutzer",
|
||
"action": "Aktion",
|
||
"actionAll": "Alle Aktionen",
|
||
"entity": "Objektart",
|
||
"entityAll": "Alle Objektarten",
|
||
"entityId": "Objekt-ID",
|
||
"apply": "Filtern",
|
||
"reset": "Zurücksetzen",
|
||
"time": "Zeitpunkt",
|
||
"object": "Objekt",
|
||
"result": "Ergebnis",
|
||
"resultOk": "Erfolgreich",
|
||
"resultDenied": "Abgelehnt",
|
||
"details": "Details",
|
||
"empty": "Keine Einträge für diese Auswahl.",
|
||
"total": "{count, plural, one {# Eintrag} other {# Einträge}}",
|
||
"previous": "Zurück",
|
||
"next": "Weiter",
|
||
"page": "Seite {page} von {pages}",
|
||
"system": "System",
|
||
"platform": "Plattform",
|
||
"detailTitle": "Eintrag im Audit-Protokoll",
|
||
"close": "Schließen",
|
||
"field": "Feld",
|
||
"before": "Vorher",
|
||
"after": "Nachher",
|
||
"changed": "geändert",
|
||
"noValues": "Keine Werte protokolliert.",
|
||
"ip": "IP-Adresse",
|
||
"userAgent": "User-Agent",
|
||
"notCaptured": "nicht erfasst",
|
||
"actions": {
|
||
"create": "Erstellt",
|
||
"update": "Geändert",
|
||
"delete": "Gelöscht",
|
||
"login": "Anmeldung",
|
||
"logout": "Abmeldung",
|
||
"denied": "Abgelehnt",
|
||
"export": "Export",
|
||
"read": "Lesezugriff",
|
||
"import": "Import",
|
||
"provision": "Eingerichtet",
|
||
"approve": "Freigegeben",
|
||
"reject": "Zurückgewiesen"
|
||
},
|
||
"entities": {
|
||
"user": "Benutzer",
|
||
"role": "Rolle",
|
||
"tenant": "Mandant",
|
||
"tenant_settings": "Einstellungen",
|
||
"tenant_mail_settings": "E-Mail-Versand",
|
||
"tenant_module": "Modul",
|
||
"module": "Modul",
|
||
"session": "Sitzung",
|
||
"account_inactive": "Inaktives Konto",
|
||
"work_order": "Auftrag",
|
||
"customer": "Kunde",
|
||
"site": "Objekt",
|
||
"team": "Team",
|
||
"report": "Bericht",
|
||
"signature": "Unterschrift",
|
||
"document": "Dokument",
|
||
"import_job": "Auftragsimport",
|
||
"material_usage": "Material",
|
||
"time_entry": "Arbeitszeit",
|
||
"work_session": "Einsatzzeit",
|
||
"photo": "Foto",
|
||
"voice_note": "Sprachnotiz",
|
||
"notification": "Benachrichtigung",
|
||
"notification_settings": "Benachrichtigungseinstellungen",
|
||
"sync_operation": "Synchronisation"
|
||
}
|
||
}
|
||
}
|