Richte Nutzerdoku auf Bedienungsanleitung mit Frontend-Seitenkategorie aus
This commit is contained in:
1051
docs-site/content/bedienung/frontend/alle-seiten-und-felder.md
Normal file
1051
docs-site/content/bedienung/frontend/alle-seiten-und-felder.md
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,62 @@
|
|||||||
|
# Ausgangsbeleg-Editor
|
||||||
|
|
||||||
|
Seite: `/createDocument/edit/:id?`
|
||||||
|
|
||||||
|
Diese Maske dient zum Erstellen und Bearbeiten von Ausgangsbelegen wie Rechnungen, Abschlagsrechnungen, Angebote, Lieferscheine, Packscheine und Serienrechnungen.
|
||||||
|
|
||||||
|
## Bereich: Grunddaten
|
||||||
|
|
||||||
|
- `Dokumenttyp`: Legt die Belegart fest und steuert verfügbare Felder sowie Nummernlogik.
|
||||||
|
- `Steuertyp`: Steuert Steuerberechnung und Steuertexte (z. B. Standard, 13b UStG, 19 UStG, 12.3 UStG).
|
||||||
|
- `Briefpapier`: Definiert das verwendete Layout/Letterhead für PDF und Druck.
|
||||||
|
- `Kunde`: Hauptempfänger des Belegs; beeinflusst Vorschlagswerte (Adresse, Zahlungsart, Zahlungsziel).
|
||||||
|
- `Ansprechpartner`: Kontaktperson beim Kunden für den Beleg.
|
||||||
|
- `Adresse`:
|
||||||
|
- `Straße + Hausnummer`: Liefer-/Rechnungsstraße.
|
||||||
|
- `Adresszusatz`: Zusätzliche Adressinformationen.
|
||||||
|
- `PLZ`: Postleitzahl.
|
||||||
|
- `Ort`: Ort der Adresse.
|
||||||
|
- `Belegnummer` (z. B. Rechnungsnummer): Eindeutige Referenz des Belegs.
|
||||||
|
- `Lieferdatumsart`: Definiert, ob Einzel- oder Zeitraumdatum angezeigt wird.
|
||||||
|
- `Liefer-/Leistungsdatum Start`: Startdatum für Leistung/Lieferung.
|
||||||
|
- `Liefer-/Leistungsdatum Ende`: Enddatum bei Zeitraum.
|
||||||
|
- `Belegdatum`: Offizielles Dokumentdatum.
|
||||||
|
- `Zahlungsziel in Tagen`: Frist bis zur Fälligkeit (für Rechnungsarten).
|
||||||
|
- `Zahlungsart`: Überweisung oder SEPA-Lastschrift.
|
||||||
|
- `Individueller Aufschlag`: Prozentualer Zuschlag auf Positionen laut Beleglogik.
|
||||||
|
- `Mitarbeiter`: Verantwortlicher Bearbeiter/Ersteller.
|
||||||
|
- `Kontakt Telefon`: Telefon des Ansprechpartners im Dokument.
|
||||||
|
- `Kontakt E-Mail`: E-Mail des Ansprechpartners im Dokument.
|
||||||
|
- `Im Kundenportal anzeigen`: Gibt den Beleg für das Portal frei.
|
||||||
|
- `Objekt`: Zugeordnetes Objekt/Standort.
|
||||||
|
- `Projekt`: Zugeordnetes Projekt.
|
||||||
|
- `Vertrag`: Zugeordneter Vertrag.
|
||||||
|
|
||||||
|
## Bereich: Serienrechnung (nur Typ `serialInvoices`)
|
||||||
|
|
||||||
|
- `Datum erste Ausführung`: Start der automatischen Ausführung.
|
||||||
|
- `Datum letzte Ausführung`: Enddatum der Serienausführung.
|
||||||
|
- `Aktiv`: Aktiviert/deaktiviert die Serienlogik.
|
||||||
|
- `Intervall`: Ausführungsrhythmus (z. B. monatlich, vierteljährlich).
|
||||||
|
- `Richtung`: Zeitliche Berechnung (rückwirkend oder im Voraus).
|
||||||
|
|
||||||
|
## Bereich: Inhaltstexte
|
||||||
|
|
||||||
|
- `Titel`: Belegtitel (abhängig von Belegart und Nummernlogik).
|
||||||
|
- `Beschreibung`: Kurzbeschreibung unterhalb des Titels.
|
||||||
|
- `Vorlage auswählen`: Übernimmt Textbausteine in den Einleitungstext.
|
||||||
|
- `Einleitung`: Freitext vor den Positionen.
|
||||||
|
- `Positionen`: Zeilen mit Mengen, Einheiten, Preisen, Steuern, Rabatten und Summen.
|
||||||
|
|
||||||
|
## Bereich: Aktionen
|
||||||
|
|
||||||
|
- `Speichern`: Persistiert Entwurf oder Änderungen.
|
||||||
|
- `Buchen`: Finalisiert den Beleg (abhängig von Belegart/Validierung).
|
||||||
|
- `PDF/Vorschau`: Erstellt Vorschau bzw. Ausgabe.
|
||||||
|
- `Kopier-/Übernahmefunktionen`: Übernimmt Inhalte aus verknüpften Dokumenten (z. B. Lieferschein zu Rechnung).
|
||||||
|
|
||||||
|
## Typische Eingabefehler vermeiden
|
||||||
|
|
||||||
|
- Vor dem Buchen immer `Briefpapier`, `Kunde`, `Belegdatum` und (bei Rechnungstypen) `Zahlungsziel` prüfen.
|
||||||
|
- Bei Zeiträumen Start und Ende vollständig setzen.
|
||||||
|
- Für Portalfreigabe prüfen, ob Belegstatus nicht mehr `Entwurf` ist.
|
||||||
9
docs-site/content/bedienung/frontend/index.md
Normal file
9
docs-site/content/bedienung/frontend/index.md
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
# Frontend-Funktionen
|
||||||
|
|
||||||
|
Diese Kategorie enthält die Bedienung der einzelnen Seiten im Web-Frontend.
|
||||||
|
|
||||||
|
## Enthaltene Inhalte
|
||||||
|
|
||||||
|
- Vollständige Seitenübersicht mit erkannten Eingabefeldern: `alle-seiten-und-felder.md`
|
||||||
|
- Detaillierte Anleitung Ausgangsbeleg-Editor: `ausgangsbelege-editor.md`
|
||||||
|
- Detaillierte Anleitung Serienrechnungen: `serienrechnungen.md`
|
||||||
41
docs-site/content/bedienung/frontend/serienrechnungen.md
Normal file
41
docs-site/content/bedienung/frontend/serienrechnungen.md
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
# Serienrechnungen
|
||||||
|
|
||||||
|
Seite: `/createDocument/serialInvoice`
|
||||||
|
|
||||||
|
Diese Seite verwaltet Vorlagen für Serienrechnungen und erlaubt die manuelle Ausführung von Rechnungsläufen.
|
||||||
|
|
||||||
|
## Oberer Bereich
|
||||||
|
|
||||||
|
- `Suche`: Filtert die Vorlagenliste.
|
||||||
|
- `Ausführungen`: Öffnet die Übersicht bestehender Ausführungsläufe.
|
||||||
|
- `Ausführen`: Startet den Dialog zur manuellen Ausführung.
|
||||||
|
- `+ Serienrechnung`: Öffnet den Editor zur Anlage einer neuen Serienrechnungsvorlage.
|
||||||
|
|
||||||
|
## Filterbereich
|
||||||
|
|
||||||
|
- `Filter`: Mehrfachfilter für die Tabellenansicht (je nach verfügbarer Konfiguration).
|
||||||
|
|
||||||
|
## Dialog: Serienrechnungen manuell ausführen
|
||||||
|
|
||||||
|
- `Ausführungsdatum (Belegdatum)`: Dokumentdatum für den Lauf; beeinflusst Leistungszeitraum laut Konfiguration.
|
||||||
|
- `Heute`: Setzt das Ausführungsdatum auf den aktuellen Tag.
|
||||||
|
- `Kunde oder Vertrag suchen`: Freitextsuche innerhalb der Vorlagenliste.
|
||||||
|
- `Intervall`: Filtert Vorlagen nach Ausführungsrhythmus.
|
||||||
|
- `Alle auswählen`: Markiert alle sichtbaren Vorlagen.
|
||||||
|
- `Keine`: Entfernt die Auswahl.
|
||||||
|
- `Checkbox je Zeile`: Wählt einzelne Vorlagen aus.
|
||||||
|
- `Ausführen`: Startet den Lauf für die ausgewählten Vorlagen.
|
||||||
|
|
||||||
|
## Tabellenspalten (typisch)
|
||||||
|
|
||||||
|
- `Typ`: Belegtyp der Vorlage.
|
||||||
|
- `Partner`: Kunde der Vorlage.
|
||||||
|
- `Betrag`: Errechneter Vorlagenbetrag.
|
||||||
|
- `Intervall`: Ausführungsrhythmus.
|
||||||
|
- `Vertrag`: Zugeordneter Vertrag.
|
||||||
|
- `Objekt`: Zugeordnetes Objekt.
|
||||||
|
|
||||||
|
## Laufende Ausführungen
|
||||||
|
|
||||||
|
- `Fertigstellen`: Schließt einen laufenden Ausführungsvorgang ab.
|
||||||
|
|
||||||
8
docs-site/content/bedienung/index.md
Normal file
8
docs-site/content/bedienung/index.md
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
# Bedienung
|
||||||
|
|
||||||
|
Diese Sektion beschreibt die Nutzung der Software aus Anwendersicht.
|
||||||
|
|
||||||
|
## Bereiche
|
||||||
|
|
||||||
|
- Frontend-Funktionen je Seite: `frontend/README.md`
|
||||||
|
- Detaillierte Feld-Erklärungen: z. B. `frontend/ausgangsbelege-editor.md`
|
||||||
@@ -1,7 +1,7 @@
|
|||||||
---
|
---
|
||||||
seo:
|
seo:
|
||||||
title: FEDEO Dokumentation
|
title: FEDEO Bedienungsanleitung
|
||||||
description: Zentrale, versionierte Funktionsdokumentation für FEDEO.
|
description: Nutzerorientierte Bedienungsanleitung für alle zentralen Funktionen in FEDEO.
|
||||||
---
|
---
|
||||||
|
|
||||||
::u-page-hero{class="dark:bg-gradient-to-b from-neutral-900 to-neutral-950"}
|
::u-page-hero{class="dark:bg-gradient-to-b from-neutral-900 to-neutral-950"}
|
||||||
@@ -9,99 +9,56 @@ seo:
|
|||||||
orientation: horizontal
|
orientation: horizontal
|
||||||
---
|
---
|
||||||
#title
|
#title
|
||||||
FEDEO [Dokumentation]{.text-primary}
|
FEDEO [Bedienungsanleitung]{.text-primary}
|
||||||
|
|
||||||
#description
|
#description
|
||||||
Alle Funktionen von Backend, Web und Mobile an einem Ort. Versioniert, durchsuchbar und auf Basis von Nuxt UI + Nuxt Content aufgebaut.
|
Diese Dokumentation ist als praktische Anleitung für Anwenderinnen und Anwender der FEDEO-Software aufgebaut.
|
||||||
|
|
||||||
#links
|
#links
|
||||||
:::u-button
|
:::u-button
|
||||||
---
|
---
|
||||||
to: /funktionen
|
to: /bedienung
|
||||||
size: xl
|
size: xl
|
||||||
trailing-icon: i-lucide-arrow-right
|
trailing-icon: i-lucide-arrow-right
|
||||||
---
|
---
|
||||||
Zu den Funktionen
|
Zur Bedienungsanleitung
|
||||||
:::
|
:::
|
||||||
|
|
||||||
:::u-button
|
:::u-button
|
||||||
---
|
---
|
||||||
icon: i-simple-icons-github
|
to: /bedienung/frontend
|
||||||
|
size: xl
|
||||||
color: neutral
|
color: neutral
|
||||||
variant: outline
|
variant: outline
|
||||||
size: xl
|
|
||||||
to: https://git.federspiel.tech/flfeders/FEDEO
|
|
||||||
target: _blank
|
|
||||||
---
|
---
|
||||||
Repository öffnen
|
Frontend-Funktionen
|
||||||
:::
|
|
||||||
|
|
||||||
#default
|
|
||||||
:::prose-pre
|
|
||||||
---
|
|
||||||
code: |
|
|
||||||
node docs/scripts/sync-funktionsdoku.mjs
|
|
||||||
filename: docs-sync.sh
|
|
||||||
---
|
|
||||||
|
|
||||||
```bash [docs-sync.sh]
|
|
||||||
node docs/scripts/sync-funktionsdoku.mjs
|
|
||||||
```
|
|
||||||
:::
|
:::
|
||||||
::
|
::
|
||||||
|
|
||||||
::u-page-section{class="dark:bg-neutral-950"}
|
::u-page-section{class="dark:bg-neutral-950"}
|
||||||
#title
|
#title
|
||||||
Struktur der Dokumentation
|
Inhalte
|
||||||
|
|
||||||
#features
|
#features
|
||||||
:::u-page-feature
|
:::u-page-feature
|
||||||
---
|
---
|
||||||
icon: i-lucide-layers
|
icon: i-lucide-layout-dashboard
|
||||||
---
|
---
|
||||||
#title
|
#title
|
||||||
Funktionskatalog
|
Frontend-Seiten
|
||||||
|
|
||||||
#description
|
#description
|
||||||
Technische Übersichten für Backend-API, Web-Frontend und Mobile-App.
|
Übersicht aller Seitenfunktionen inklusive Eingabefelder und deren Bedeutung.
|
||||||
:::
|
:::
|
||||||
|
|
||||||
:::u-page-feature
|
:::u-page-feature
|
||||||
---
|
---
|
||||||
icon: i-lucide-shield-check
|
icon: i-lucide-file-text
|
||||||
---
|
---
|
||||||
#title
|
#title
|
||||||
Wartungsprozess
|
Praxisnahe Feld-Erklärungen
|
||||||
|
|
||||||
#description
|
#description
|
||||||
Klarer Ablauf, damit Funktionsänderungen immer dokumentiert bleiben.
|
Für zentrale Masken wie den Ausgangsbeleg-Editor werden die Felder konkret erläutert.
|
||||||
:::
|
|
||||||
|
|
||||||
:::u-page-feature
|
|
||||||
---
|
|
||||||
icon: i-lucide-git-branch
|
|
||||||
---
|
|
||||||
#title
|
|
||||||
Versionierung
|
|
||||||
|
|
||||||
#description
|
|
||||||
Änderungen an der Dokumentation sind nachvollziehbar versioniert.
|
|
||||||
:::
|
:::
|
||||||
::
|
::
|
||||||
|
|
||||||
::u-page-section{class="dark:bg-gradient-to-b from-neutral-950 to-neutral-900"}
|
|
||||||
:::u-page-c-t-a
|
|
||||||
---
|
|
||||||
links:
|
|
||||||
- label: Funktionsübersicht öffnen
|
|
||||||
to: '/funktionen/uebersicht'
|
|
||||||
trailingIcon: i-lucide-arrow-right
|
|
||||||
- label: Versionshistorie
|
|
||||||
to: '/versionen/docs-versionen'
|
|
||||||
variant: subtle
|
|
||||||
icon: i-lucide-history
|
|
||||||
title: Bereit für die tägliche Doku-Arbeit?
|
|
||||||
description: Nutze die technische Übersicht für Änderungen und halte die Dokumentation mit einem festen Sync-Workflow aktuell.
|
|
||||||
class: dark:bg-neutral-950
|
|
||||||
---
|
|
||||||
::
|
|
||||||
|
|||||||
@@ -1,35 +0,0 @@
|
|||||||
# Dokumentationsprozess
|
|
||||||
|
|
||||||
## Zweck
|
|
||||||
|
|
||||||
Dieser Prozess stellt sicher, dass die Funktionsdokumentation bei jeder Änderung aktuell bleibt.
|
|
||||||
|
|
||||||
## Verbindlicher Ablauf bei Funktionsänderungen
|
|
||||||
|
|
||||||
1. Funktion implementieren oder ändern
|
|
||||||
2. Technische Doku synchronisieren:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
node docs/scripts/sync-funktionsdoku.mjs
|
|
||||||
```
|
|
||||||
|
|
||||||
3. Fachliche Beschreibung in `docs/funktionen/uebersicht.md` ergänzen, falls ein neuer Bereich entsteht
|
|
||||||
4. Neue Doku-Version in `docs/versionen/docs-versionen.md` eintragen
|
|
||||||
5. Code und Doku gemeinsam committen
|
|
||||||
|
|
||||||
## Was als Funktionsänderung gilt
|
|
||||||
|
|
||||||
- Neue API-Route oder geänderte API-Route
|
|
||||||
- Neue Web-Seite oder geänderte Seitenstruktur
|
|
||||||
- Neuer Mobile-Screen oder geänderte Navigationsstruktur
|
|
||||||
- Größere fachliche Änderung in bestehenden Modulen
|
|
||||||
|
|
||||||
## Qualitätsregeln
|
|
||||||
|
|
||||||
- Automatisch erzeugte Dateien nicht manuell pflegen
|
|
||||||
- Fachliche Begriffe konsistent halten
|
|
||||||
- Jede Doku-Version erhält Datum, Änderungszusammenfassung und Bezug zu Commits
|
|
||||||
|
|
||||||
## CI-Empfehlung
|
|
||||||
|
|
||||||
Optional kann in CI geprüft werden, ob die generierten Doku-Dateien aktuell sind (z. B. per Diff nach Skriptlauf), damit keine Funktionsänderung ohne Doku-Update gemerged wird.
|
|
||||||
5952
docs-site/package-lock.json
generated
5952
docs-site/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -14,6 +14,7 @@
|
|||||||
"@nuxt/content": "^3.12.0",
|
"@nuxt/content": "^3.12.0",
|
||||||
"@nuxt/image": "^2.0.0",
|
"@nuxt/image": "^2.0.0",
|
||||||
"@nuxt/ui": "^4.6.1",
|
"@nuxt/ui": "^4.6.1",
|
||||||
|
"better-sqlite3": "^12.9.0",
|
||||||
"nuxt": "^4.4.2"
|
"nuxt": "^4.4.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
|||||||
@@ -1,46 +1,64 @@
|
|||||||
# FEDEO Funktionsdokumentation
|
---
|
||||||
|
seo:
|
||||||
|
title: FEDEO Bedienungsanleitung
|
||||||
|
description: Nutzerorientierte Bedienungsanleitung für alle zentralen Funktionen in FEDEO.
|
||||||
|
---
|
||||||
|
|
||||||
Diese Dokumentation bildet alle Funktionen der Software zentral ab und ist für die Nutzung in der Nuxt-Content-Docs-Homepage vorbereitet.
|
::u-page-hero{class="dark:bg-gradient-to-b from-neutral-900 to-neutral-950"}
|
||||||
|
---
|
||||||
|
orientation: horizontal
|
||||||
|
---
|
||||||
|
#title
|
||||||
|
FEDEO [Bedienungsanleitung]{.text-primary}
|
||||||
|
|
||||||
## Ziel
|
#description
|
||||||
|
Diese Dokumentation ist als praktische Anleitung für Anwenderinnen und Anwender der FEDEO-Software aufgebaut.
|
||||||
|
|
||||||
- Vollständige Übersicht über Funktionen in Backend, Web-Frontend und Mobile-App
|
#links
|
||||||
- Nachvollziehbare Versionierung der Doku
|
:::u-button
|
||||||
- Einfache Aktualisierung bei Funktionsänderungen
|
---
|
||||||
|
to: /bedienung
|
||||||
|
size: xl
|
||||||
|
trailing-icon: i-lucide-arrow-right
|
||||||
|
---
|
||||||
|
Zur Bedienungsanleitung
|
||||||
|
:::
|
||||||
|
|
||||||
## Struktur
|
:::u-button
|
||||||
|
---
|
||||||
|
to: /bedienung/frontend
|
||||||
|
size: xl
|
||||||
|
color: neutral
|
||||||
|
variant: outline
|
||||||
|
---
|
||||||
|
Frontend-Funktionen
|
||||||
|
:::
|
||||||
|
::
|
||||||
|
|
||||||
- `docs/funktionen/uebersicht.md`: Fachliche Gesamtübersicht der Bereiche
|
::u-page-section{class="dark:bg-neutral-950"}
|
||||||
- `docs/funktionen/backend-api.md`: Automatisch erzeugte API-Funktionsliste
|
#title
|
||||||
- `docs/funktionen/frontend-web.md`: Automatisch erzeugte Seiten-/Funktionsliste des Web-Frontends
|
Inhalte
|
||||||
- `docs/funktionen/mobile-app.md`: Automatisch erzeugte Screens-/Funktionsliste der Mobile-App
|
|
||||||
- `docs/versionen/docs-versionen.md`: Versionierung der Dokumentation
|
|
||||||
- `docs/wartung/dokumentationsprozess.md`: Prozess, damit die Doku dauerhaft aktuell bleibt
|
|
||||||
- `docs/scripts/sync-funktionsdoku.mjs`: Skript zur automatischen Aktualisierung
|
|
||||||
|
|
||||||
## Aktualisierung bei Funktionsänderungen
|
#features
|
||||||
|
:::u-page-feature
|
||||||
|
---
|
||||||
|
icon: i-lucide-layout-dashboard
|
||||||
|
---
|
||||||
|
#title
|
||||||
|
Frontend-Seiten
|
||||||
|
|
||||||
Bei jeder Funktionsänderung bitte ausführen:
|
#description
|
||||||
|
Übersicht aller Seitenfunktionen inklusive Eingabefelder und deren Bedeutung.
|
||||||
|
:::
|
||||||
|
|
||||||
```bash
|
:::u-page-feature
|
||||||
node docs/scripts/sync-funktionsdoku.mjs
|
---
|
||||||
```
|
icon: i-lucide-file-text
|
||||||
|
---
|
||||||
|
#title
|
||||||
|
Praxisnahe Feld-Erklärungen
|
||||||
|
|
||||||
Danach:
|
#description
|
||||||
|
Für zentrale Masken wie den Ausgangsbeleg-Editor werden die Felder konkret erläutert.
|
||||||
1. Änderungen in `docs/funktionen/*.md` prüfen
|
:::
|
||||||
2. Falls nötig fachliche Texte in `docs/funktionen/uebersicht.md` ergänzen
|
::
|
||||||
3. Eintrag in `docs/versionen/docs-versionen.md` ergänzen
|
|
||||||
4. Alles gemeinsam committen
|
|
||||||
|
|
||||||
## Verwendung mit Nuxt Content
|
|
||||||
|
|
||||||
Empfohlene Vorgehensweise:
|
|
||||||
|
|
||||||
1. `docs/` in das Content-Verzeichnis übernehmen (oder per Sync einbinden)
|
|
||||||
2. Navigation anhand der Ordner `funktionen`, `wartung`, `versionen` aufbauen
|
|
||||||
3. `backend-api.md`, `frontend-web.md`, `mobile-app.md` als referenzierende Funktionskataloge einbinden
|
|
||||||
|
|
||||||
## Hinweis
|
|
||||||
|
|
||||||
Die Dateien `backend-api.md`, `frontend-web.md` und `mobile-app.md` werden automatisch generiert. Manuelle Änderungen in diesen Dateien werden bei der nächsten Synchronisation überschrieben.
|
|
||||||
|
|||||||
8
docs/bedienung/README.md
Normal file
8
docs/bedienung/README.md
Normal file
@@ -0,0 +1,8 @@
|
|||||||
|
# Bedienung
|
||||||
|
|
||||||
|
Diese Sektion beschreibt die Nutzung der Software aus Anwendersicht.
|
||||||
|
|
||||||
|
## Bereiche
|
||||||
|
|
||||||
|
- Frontend-Funktionen je Seite: `frontend/README.md`
|
||||||
|
- Detaillierte Feld-Erklärungen: z. B. `frontend/ausgangsbelege-editor.md`
|
||||||
9
docs/bedienung/frontend/README.md
Normal file
9
docs/bedienung/frontend/README.md
Normal file
@@ -0,0 +1,9 @@
|
|||||||
|
# Frontend-Funktionen
|
||||||
|
|
||||||
|
Diese Kategorie enthält die Bedienung der einzelnen Seiten im Web-Frontend.
|
||||||
|
|
||||||
|
## Enthaltene Inhalte
|
||||||
|
|
||||||
|
- Vollständige Seitenübersicht mit erkannten Eingabefeldern: `alle-seiten-und-felder.md`
|
||||||
|
- Detaillierte Anleitung Ausgangsbeleg-Editor: `ausgangsbelege-editor.md`
|
||||||
|
- Detaillierte Anleitung Serienrechnungen: `serienrechnungen.md`
|
||||||
1051
docs/bedienung/frontend/alle-seiten-und-felder.md
Normal file
1051
docs/bedienung/frontend/alle-seiten-und-felder.md
Normal file
File diff suppressed because it is too large
Load Diff
62
docs/bedienung/frontend/ausgangsbelege-editor.md
Normal file
62
docs/bedienung/frontend/ausgangsbelege-editor.md
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
# Ausgangsbeleg-Editor
|
||||||
|
|
||||||
|
Seite: `/createDocument/edit/:id?`
|
||||||
|
|
||||||
|
Diese Maske dient zum Erstellen und Bearbeiten von Ausgangsbelegen wie Rechnungen, Abschlagsrechnungen, Angebote, Lieferscheine, Packscheine und Serienrechnungen.
|
||||||
|
|
||||||
|
## Bereich: Grunddaten
|
||||||
|
|
||||||
|
- `Dokumenttyp`: Legt die Belegart fest und steuert verfügbare Felder sowie Nummernlogik.
|
||||||
|
- `Steuertyp`: Steuert Steuerberechnung und Steuertexte (z. B. Standard, 13b UStG, 19 UStG, 12.3 UStG).
|
||||||
|
- `Briefpapier`: Definiert das verwendete Layout/Letterhead für PDF und Druck.
|
||||||
|
- `Kunde`: Hauptempfänger des Belegs; beeinflusst Vorschlagswerte (Adresse, Zahlungsart, Zahlungsziel).
|
||||||
|
- `Ansprechpartner`: Kontaktperson beim Kunden für den Beleg.
|
||||||
|
- `Adresse`:
|
||||||
|
- `Straße + Hausnummer`: Liefer-/Rechnungsstraße.
|
||||||
|
- `Adresszusatz`: Zusätzliche Adressinformationen.
|
||||||
|
- `PLZ`: Postleitzahl.
|
||||||
|
- `Ort`: Ort der Adresse.
|
||||||
|
- `Belegnummer` (z. B. Rechnungsnummer): Eindeutige Referenz des Belegs.
|
||||||
|
- `Lieferdatumsart`: Definiert, ob Einzel- oder Zeitraumdatum angezeigt wird.
|
||||||
|
- `Liefer-/Leistungsdatum Start`: Startdatum für Leistung/Lieferung.
|
||||||
|
- `Liefer-/Leistungsdatum Ende`: Enddatum bei Zeitraum.
|
||||||
|
- `Belegdatum`: Offizielles Dokumentdatum.
|
||||||
|
- `Zahlungsziel in Tagen`: Frist bis zur Fälligkeit (für Rechnungsarten).
|
||||||
|
- `Zahlungsart`: Überweisung oder SEPA-Lastschrift.
|
||||||
|
- `Individueller Aufschlag`: Prozentualer Zuschlag auf Positionen laut Beleglogik.
|
||||||
|
- `Mitarbeiter`: Verantwortlicher Bearbeiter/Ersteller.
|
||||||
|
- `Kontakt Telefon`: Telefon des Ansprechpartners im Dokument.
|
||||||
|
- `Kontakt E-Mail`: E-Mail des Ansprechpartners im Dokument.
|
||||||
|
- `Im Kundenportal anzeigen`: Gibt den Beleg für das Portal frei.
|
||||||
|
- `Objekt`: Zugeordnetes Objekt/Standort.
|
||||||
|
- `Projekt`: Zugeordnetes Projekt.
|
||||||
|
- `Vertrag`: Zugeordneter Vertrag.
|
||||||
|
|
||||||
|
## Bereich: Serienrechnung (nur Typ `serialInvoices`)
|
||||||
|
|
||||||
|
- `Datum erste Ausführung`: Start der automatischen Ausführung.
|
||||||
|
- `Datum letzte Ausführung`: Enddatum der Serienausführung.
|
||||||
|
- `Aktiv`: Aktiviert/deaktiviert die Serienlogik.
|
||||||
|
- `Intervall`: Ausführungsrhythmus (z. B. monatlich, vierteljährlich).
|
||||||
|
- `Richtung`: Zeitliche Berechnung (rückwirkend oder im Voraus).
|
||||||
|
|
||||||
|
## Bereich: Inhaltstexte
|
||||||
|
|
||||||
|
- `Titel`: Belegtitel (abhängig von Belegart und Nummernlogik).
|
||||||
|
- `Beschreibung`: Kurzbeschreibung unterhalb des Titels.
|
||||||
|
- `Vorlage auswählen`: Übernimmt Textbausteine in den Einleitungstext.
|
||||||
|
- `Einleitung`: Freitext vor den Positionen.
|
||||||
|
- `Positionen`: Zeilen mit Mengen, Einheiten, Preisen, Steuern, Rabatten und Summen.
|
||||||
|
|
||||||
|
## Bereich: Aktionen
|
||||||
|
|
||||||
|
- `Speichern`: Persistiert Entwurf oder Änderungen.
|
||||||
|
- `Buchen`: Finalisiert den Beleg (abhängig von Belegart/Validierung).
|
||||||
|
- `PDF/Vorschau`: Erstellt Vorschau bzw. Ausgabe.
|
||||||
|
- `Kopier-/Übernahmefunktionen`: Übernimmt Inhalte aus verknüpften Dokumenten (z. B. Lieferschein zu Rechnung).
|
||||||
|
|
||||||
|
## Typische Eingabefehler vermeiden
|
||||||
|
|
||||||
|
- Vor dem Buchen immer `Briefpapier`, `Kunde`, `Belegdatum` und (bei Rechnungstypen) `Zahlungsziel` prüfen.
|
||||||
|
- Bei Zeiträumen Start und Ende vollständig setzen.
|
||||||
|
- Für Portalfreigabe prüfen, ob Belegstatus nicht mehr `Entwurf` ist.
|
||||||
41
docs/bedienung/frontend/serienrechnungen.md
Normal file
41
docs/bedienung/frontend/serienrechnungen.md
Normal file
@@ -0,0 +1,41 @@
|
|||||||
|
# Serienrechnungen
|
||||||
|
|
||||||
|
Seite: `/createDocument/serialInvoice`
|
||||||
|
|
||||||
|
Diese Seite verwaltet Vorlagen für Serienrechnungen und erlaubt die manuelle Ausführung von Rechnungsläufen.
|
||||||
|
|
||||||
|
## Oberer Bereich
|
||||||
|
|
||||||
|
- `Suche`: Filtert die Vorlagenliste.
|
||||||
|
- `Ausführungen`: Öffnet die Übersicht bestehender Ausführungsläufe.
|
||||||
|
- `Ausführen`: Startet den Dialog zur manuellen Ausführung.
|
||||||
|
- `+ Serienrechnung`: Öffnet den Editor zur Anlage einer neuen Serienrechnungsvorlage.
|
||||||
|
|
||||||
|
## Filterbereich
|
||||||
|
|
||||||
|
- `Filter`: Mehrfachfilter für die Tabellenansicht (je nach verfügbarer Konfiguration).
|
||||||
|
|
||||||
|
## Dialog: Serienrechnungen manuell ausführen
|
||||||
|
|
||||||
|
- `Ausführungsdatum (Belegdatum)`: Dokumentdatum für den Lauf; beeinflusst Leistungszeitraum laut Konfiguration.
|
||||||
|
- `Heute`: Setzt das Ausführungsdatum auf den aktuellen Tag.
|
||||||
|
- `Kunde oder Vertrag suchen`: Freitextsuche innerhalb der Vorlagenliste.
|
||||||
|
- `Intervall`: Filtert Vorlagen nach Ausführungsrhythmus.
|
||||||
|
- `Alle auswählen`: Markiert alle sichtbaren Vorlagen.
|
||||||
|
- `Keine`: Entfernt die Auswahl.
|
||||||
|
- `Checkbox je Zeile`: Wählt einzelne Vorlagen aus.
|
||||||
|
- `Ausführen`: Startet den Lauf für die ausgewählten Vorlagen.
|
||||||
|
|
||||||
|
## Tabellenspalten (typisch)
|
||||||
|
|
||||||
|
- `Typ`: Belegtyp der Vorlage.
|
||||||
|
- `Partner`: Kunde der Vorlage.
|
||||||
|
- `Betrag`: Errechneter Vorlagenbetrag.
|
||||||
|
- `Intervall`: Ausführungsrhythmus.
|
||||||
|
- `Vertrag`: Zugeordneter Vertrag.
|
||||||
|
- `Objekt`: Zugeordnetes Objekt.
|
||||||
|
|
||||||
|
## Laufende Ausführungen
|
||||||
|
|
||||||
|
- `Fertigstellen`: Schließt einen laufenden Ausführungsvorgang ab.
|
||||||
|
|
||||||
149
docs/scripts/generate-frontend-bedienung.mjs
Executable file
149
docs/scripts/generate-frontend-bedienung.mjs
Executable file
@@ -0,0 +1,149 @@
|
|||||||
|
#!/usr/bin/env node
|
||||||
|
|
||||||
|
import { promises as fs } from 'node:fs'
|
||||||
|
import path from 'node:path'
|
||||||
|
|
||||||
|
const ROOT = process.cwd()
|
||||||
|
const FRONTEND_PAGES_DIR = path.join(ROOT, 'frontend', 'pages')
|
||||||
|
const OUT_FILE = path.join(ROOT, 'docs', 'bedienung', 'frontend', 'alle-seiten-und-felder.md')
|
||||||
|
|
||||||
|
function normalizePosix(p) {
|
||||||
|
return p.split(path.sep).join('/')
|
||||||
|
}
|
||||||
|
|
||||||
|
async function walkFiles(dir, extension) {
|
||||||
|
const result = []
|
||||||
|
|
||||||
|
async function walk(current) {
|
||||||
|
const entries = await fs.readdir(current, { withFileTypes: true })
|
||||||
|
for (const entry of entries) {
|
||||||
|
const full = path.join(current, entry.name)
|
||||||
|
if (entry.isDirectory()) {
|
||||||
|
await walk(full)
|
||||||
|
} else if (entry.isFile() && full.endsWith(extension)) {
|
||||||
|
result.push(full)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
await walk(dir)
|
||||||
|
return result.sort()
|
||||||
|
}
|
||||||
|
|
||||||
|
function filePathToNuxtRoute(filePath, baseDir) {
|
||||||
|
const relative = normalizePosix(path.relative(baseDir, filePath))
|
||||||
|
let route = relative.replace(/\.vue$/, '')
|
||||||
|
|
||||||
|
route = route
|
||||||
|
.replace(/\.client$/, '')
|
||||||
|
.replace(/\.server$/, '')
|
||||||
|
.replace(/\[\[\.\.\.(.+?)\]\]/g, ':$1*?')
|
||||||
|
.replace(/\[\.\.\.(.+?)\]/g, ':$1*')
|
||||||
|
.replace(/\[\[(.+?)\]\]/g, ':$1?')
|
||||||
|
.replace(/\[(.+?)\]/g, ':$1')
|
||||||
|
|
||||||
|
route = route.replace(/\/index$/g, '')
|
||||||
|
if (route === 'index') route = ''
|
||||||
|
if (!route.startsWith('/')) route = `/${route}`
|
||||||
|
return route || '/'
|
||||||
|
}
|
||||||
|
|
||||||
|
function pickAttr(tag, attr) {
|
||||||
|
const doubleQuoted = new RegExp(`${attr}\\s*=\\s*"([^"]+)"`)
|
||||||
|
const singleQuoted = new RegExp(`${attr}\\s*=\\s*'([^']+)'`)
|
||||||
|
return tag.match(doubleQuoted)?.[1] || tag.match(singleQuoted)?.[1] || null
|
||||||
|
}
|
||||||
|
|
||||||
|
function detectFields(source) {
|
||||||
|
const fields = []
|
||||||
|
const seen = new Set()
|
||||||
|
|
||||||
|
const formFieldRegex = /<UForm(?:Field|Group)\b([\s\S]*?)>/g
|
||||||
|
let match
|
||||||
|
while ((match = formFieldRegex.exec(source)) !== null) {
|
||||||
|
const attrs = match[1] || ''
|
||||||
|
const label = pickAttr(attrs, 'label')
|
||||||
|
const key = `form:${label || ''}`
|
||||||
|
if (label && !seen.has(key)) {
|
||||||
|
seen.add(key)
|
||||||
|
fields.push({
|
||||||
|
name: label,
|
||||||
|
component: 'UFormField',
|
||||||
|
description: `Eingabebereich für „${label}“.`
|
||||||
|
})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
const inputRegex = /<(UInput|UTextarea|USelectMenu|USelect|USwitch|UCheckbox|URadioGroup|UInputNumber|UDatePicker)\b([\s\S]*?)>/g
|
||||||
|
while ((match = inputRegex.exec(source)) !== null) {
|
||||||
|
const component = match[1]
|
||||||
|
const attrs = match[2] || ''
|
||||||
|
|
||||||
|
const label = pickAttr(attrs, 'label')
|
||||||
|
const placeholder = pickAttr(attrs, 'placeholder')
|
||||||
|
const model = pickAttr(attrs, 'v-model') || pickAttr(attrs, 'v-model:model-value')
|
||||||
|
|
||||||
|
const name = label || placeholder || model || '(ohne Bezeichnung)'
|
||||||
|
const key = `${component}:${name}`
|
||||||
|
if (seen.has(key)) continue
|
||||||
|
seen.add(key)
|
||||||
|
|
||||||
|
let description = 'Eingabefeld in dieser Seite.'
|
||||||
|
if (label) description = `Eingabefeld für „${label}“.`
|
||||||
|
else if (placeholder) description = `Eingabefeld mit Platzhalter „${placeholder}“.`
|
||||||
|
else if (model) description = `Eingabefeld für den internen Wert „${model}“.`
|
||||||
|
|
||||||
|
fields.push({ name, component, description })
|
||||||
|
}
|
||||||
|
|
||||||
|
return fields
|
||||||
|
}
|
||||||
|
|
||||||
|
function getPagePurpose(route) {
|
||||||
|
if (route.startsWith('/createDocument')) return 'Dokumentenerstellung und Verwaltung von Ausgangsbelegen.'
|
||||||
|
if (route.startsWith('/support') || route.startsWith('/helpdesk')) return 'Support- und Kommunikationsprozesse.'
|
||||||
|
if (route.startsWith('/staff')) return 'Mitarbeiterbezogene Verwaltung und Zeiterfassung.'
|
||||||
|
if (route.startsWith('/settings')) return 'Konfiguration und Stammdatenpflege.'
|
||||||
|
if (route.startsWith('/accounting') || route.startsWith('/banking')) return 'Finanz- und Buchhaltungsfunktionen.'
|
||||||
|
return 'Funktionsseite im FEDEO-Frontend.'
|
||||||
|
}
|
||||||
|
|
||||||
|
async function main() {
|
||||||
|
const files = await walkFiles(FRONTEND_PAGES_DIR, '.vue')
|
||||||
|
|
||||||
|
let output = '# Frontend-Seiten und Eingabefelder\n\n'
|
||||||
|
output += 'Diese Übersicht dient als Nutzer-Bedienung für alle Seiten des Web-Frontends.\n'
|
||||||
|
output += 'Die Felder wurden technisch aus den Seiten erkannt und nutzerorientiert beschrieben.\n\n'
|
||||||
|
|
||||||
|
for (const file of files) {
|
||||||
|
const source = await fs.readFile(file, 'utf-8')
|
||||||
|
const route = filePathToNuxtRoute(file, FRONTEND_PAGES_DIR)
|
||||||
|
const fields = detectFields(source)
|
||||||
|
const relativeFile = normalizePosix(path.relative(ROOT, file))
|
||||||
|
|
||||||
|
output += `## ${route}\n\n`
|
||||||
|
output += `- Datei: \`${relativeFile}\`\n`
|
||||||
|
output += `- Seitenfunktion: ${getPagePurpose(route)}\n\n`
|
||||||
|
|
||||||
|
output += '### Felder\n\n'
|
||||||
|
if (fields.length === 0) {
|
||||||
|
output += 'Auf dieser Seite wurden keine direkten Eingabefelder erkannt.\n\n'
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
output += '| Feld | Komponente | Erklärung |\n'
|
||||||
|
output += '|---|---|---|\n'
|
||||||
|
for (const field of fields) {
|
||||||
|
output += `| ${field.name.replace(/\|/g, '\\|')} | ${field.component} | ${field.description.replace(/\|/g, '\\|')} |\n`
|
||||||
|
}
|
||||||
|
output += '\n'
|
||||||
|
}
|
||||||
|
|
||||||
|
await fs.writeFile(OUT_FILE, output, 'utf-8')
|
||||||
|
console.log(`Frontend-Bedienungsübersicht erzeugt: ${OUT_FILE}`)
|
||||||
|
}
|
||||||
|
|
||||||
|
main().catch((err) => {
|
||||||
|
console.error('Fehler beim Erzeugen der Frontend-Bedienungsübersicht', err)
|
||||||
|
process.exit(1)
|
||||||
|
})
|
||||||
@@ -1,35 +0,0 @@
|
|||||||
# Dokumentationsprozess
|
|
||||||
|
|
||||||
## Zweck
|
|
||||||
|
|
||||||
Dieser Prozess stellt sicher, dass die Funktionsdokumentation bei jeder Änderung aktuell bleibt.
|
|
||||||
|
|
||||||
## Verbindlicher Ablauf bei Funktionsänderungen
|
|
||||||
|
|
||||||
1. Funktion implementieren oder ändern
|
|
||||||
2. Technische Doku synchronisieren:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
node docs/scripts/sync-funktionsdoku.mjs
|
|
||||||
```
|
|
||||||
|
|
||||||
3. Fachliche Beschreibung in `docs/funktionen/uebersicht.md` ergänzen, falls ein neuer Bereich entsteht
|
|
||||||
4. Neue Doku-Version in `docs/versionen/docs-versionen.md` eintragen
|
|
||||||
5. Code und Doku gemeinsam committen
|
|
||||||
|
|
||||||
## Was als Funktionsänderung gilt
|
|
||||||
|
|
||||||
- Neue API-Route oder geänderte API-Route
|
|
||||||
- Neue Web-Seite oder geänderte Seitenstruktur
|
|
||||||
- Neuer Mobile-Screen oder geänderte Navigationsstruktur
|
|
||||||
- Größere fachliche Änderung in bestehenden Modulen
|
|
||||||
|
|
||||||
## Qualitätsregeln
|
|
||||||
|
|
||||||
- Automatisch erzeugte Dateien nicht manuell pflegen
|
|
||||||
- Fachliche Begriffe konsistent halten
|
|
||||||
- Jede Doku-Version erhält Datum, Änderungszusammenfassung und Bezug zu Commits
|
|
||||||
|
|
||||||
## CI-Empfehlung
|
|
||||||
|
|
||||||
Optional kann in CI geprüft werden, ob die generierten Doku-Dateien aktuell sind (z. B. per Diff nach Skriptlauf), damit keine Funktionsänderung ohne Doku-Update gemerged wird.
|
|
||||||
Reference in New Issue
Block a user