20-02-2026
This commit is contained in:
parent
a8b395e20d
commit
a00c42e770
252 changed files with 28785 additions and 8907 deletions
143
dev/2026-02-06/next-steps.md
Normal file
143
dev/2026-02-06/next-steps.md
Normal file
|
|
@ -0,0 +1,143 @@
|
|||
### Die drei offenen Tickets aus
|
||||
|
||||
dev/22-01-2026/next-steps.md
|
||||
|
||||
### [✓] 13. Steuerberater-Modul (DATEV-Export)
|
||||
|
||||
**Priorität:** Hoch
|
||||
**Status:** Umgesetzt (Phase 1)
|
||||
|
||||
**Umgesetzte Features:**
|
||||
|
||||
1. **DATEV EXTF-Buchungsstapel-Export** (`DatevExportService`)
|
||||
|
||||
- Rechnungen, Gutschriften/Provisionen, Stornos
|
||||
- EXTF-Header + 116-Spalten CSV gemäß DATEV Developer Portal
|
||||
- Periodenauswahl (Monat/Jahr)
|
||||
|
||||
2. **Erlöskonto-Mapping nach Steuerberater-Vorgabe**
|
||||
|
||||
- 8400 Erlöse 19% (BU 9) – Inland
|
||||
- 8300 Erlöse 7% (BU 8) – Inland reduziert
|
||||
- 8125 IG-Lieferung steuerfrei §4 Nr. 1b (BU 1) – **nur bei EU + gültiger USt-ID**
|
||||
- 8120 Drittland steuerfrei §4 Nr. 1a (BU 11)
|
||||
|
||||
3. **Fachliche Regel: EU-Steuerbefreiung nur mit USt-ID**
|
||||
|
||||
- Nur registrierte Berater (`auth_user`) mit hinterlegter `tax_identification_number` erhalten BU 1
|
||||
- Gäste und Berater ohne USt-ID → reguläre Inlandsbesteuerung (19%/7%)
|
||||
- USt-ID wird über `ShoppingOrder → auth_user → account → tax_identification_number` ermittelt
|
||||
|
||||
4. **Provisions-Steuerschlüssel**
|
||||
|
||||
- 4760 Verkaufsprovision (Shop + Wachstumsbonus)
|
||||
- 4764 Payline-Provision
|
||||
- Normal (BU 9), Kleinunternehmer (BU 50), Reverse Charge (BU 94)
|
||||
|
||||
5. **Gegenkonto-Mapping**
|
||||
|
||||
- PayPal → 1230
|
||||
- Sonstige → Sammeldebitor (konfigurierbar)
|
||||
- Provisionen → Sammelkreditor
|
||||
|
||||
6. **Validierung mit klickbaren Warnungen**
|
||||
|
||||
- Strukturierte Warnungen/Fehler mit Metadaten (source_id, order_id, user_id)
|
||||
- Links zur Rechnung (Rechnungssuche) und zum Berater (Detailseite)
|
||||
- Prüfungen: Belegdatum, Belegnummer, BU-Schlüssel, EU ohne USt-ID, Reverse Charge ohne USt-ID
|
||||
|
||||
7. **DataTable mit Suchfunktion**
|
||||
|
||||
- Durchsuchbar nach Rechnungsnummer, Buchungstext, Konto, USt-ID, etc.
|
||||
- Server-seitige Verarbeitung via Yajra DataTables
|
||||
|
||||
8. **Admin-UI** (Route: `admin_payments_taxadvisor`)
|
||||
- Vorschau laden → Zusammenfassung + Validierung
|
||||
- Export generieren → CSV + DB-Protokoll
|
||||
- Download, Lock, Löschen
|
||||
|
||||
**Geänderte Dateien:**
|
||||
|
||||
- `app/Services/DatevExportService.php` – Kernlogik
|
||||
- `app/Http/Controllers/PaymentTaxAdvisorController.php` – Controller
|
||||
- `resources/views/admin/payment/taxadvisor.blade.php` – View
|
||||
- `config/datev.php` – Konfiguration
|
||||
- `tests/Unit/Services/DatevExportServiceTest.php` – 35 Tests
|
||||
|
||||
**Offene Punkte (Phase 2):**
|
||||
|
||||
- Debitoren/Kreditoren-Stammdaten (wenn Steuerberater OP-Listen braucht)
|
||||
- Payone-Debitor-Mapping (detaillierter als Sammeldebitor)
|
||||
- Automatischer Periodenabschluss / Sperr-Workflow
|
||||
|
||||
---
|
||||
|
||||
### [!] 10. Nicht zugeordnete Zahlungen/Punkte
|
||||
|
||||
**Priorität:** Hoch
|
||||
**Bereich:** Payment / Admin
|
||||
|
||||
**Problem:**
|
||||
Zahlungen ohne Zuordnung → Punkte verschwinden, keine Provision.
|
||||
|
||||
**Anforderung:**
|
||||
|
||||
- Admin-Hinweis bei nicht zugeordneten Zahlungen
|
||||
- Manuelle Zuordnungsmöglichkeit
|
||||
|
||||
**Technische Details:**
|
||||
| Parameter | Wert |
|
||||
|-----------|------|
|
||||
| Tabelle | `user_sales_volumes` |
|
||||
| Status-Feld | `status = 0` (not_assigned) |
|
||||
| Admin-View | Dashboard oder separate Sektion |
|
||||
|
||||
**Query für nicht zugeordnete Einträge:**
|
||||
|
||||
```php
|
||||
$unassigned = UserSalesVolume::where('status', 0)
|
||||
->with('user', 'order')
|
||||
->orderBy('created_at', 'desc')
|
||||
->get();
|
||||
```
|
||||
|
||||
**Umsetzung:**
|
||||
|
||||
1. **Dashboard-Alert:** Anzahl nicht zugeordneter Einträge anzeigen
|
||||
2. **Admin-Seite:** Liste aller nicht zugeordneten Einträge
|
||||
3. **Zuordnungs-Modal:**
|
||||
- User auswählen (Dropdown/Suche)
|
||||
- Status aktualisieren (1 = advisor_order, 2 = shoporder)
|
||||
- Punkte werden bei nächster Berechnung berücksichtigt
|
||||
|
||||
---
|
||||
|
||||
### [ ] 11. Monatsstatistik Erweiterungen
|
||||
|
||||
**Priorität:** Mittel
|
||||
**Bereich:** Dashboard / Team
|
||||
|
||||
**Probleme:**
|
||||
|
||||
- Teamumsatz wird seit Januar nicht angezeigt
|
||||
- Neupartner/Abos nicht klickbar (keine Detailansicht)
|
||||
|
||||
**Anforderungen:**
|
||||
| Feature | Beschreibung |
|
||||
|---------|--------------|
|
||||
| Teamumsatz | Bug fixen - wird nicht angezeigt |
|
||||
| Neupartner Details | Klick → Liste mit Name, E-Mail, Telefon, Generation, Mentor |
|
||||
| Team-Abos Details | Klick → Liste mit Abo-Details |
|
||||
| 1000-Punkte-Shops | Neue Kennzahl: Teampartner mit ≥1000 Punkte persönlichem Volumen |
|
||||
| Aktuelle Provision | In Monatsstatistik anzeigen |
|
||||
| Downline-Kontakte | Telefon, E-Mail, Adresse der eigenen Downline abrufbar (nicht nur VIPs) |
|
||||
|
||||
**Technische Details:**
|
||||
| Parameter | Wert |
|
||||
|-----------|------|
|
||||
| Service | `App\Services\LevelReportService` |
|
||||
| Controller | `App\Http\Controllers\User\TeamController` |
|
||||
| View | `resources/views/user/team/marketingplan.blade.php` |
|
||||
| Daten | `user_business` Tabelle |
|
||||
|
||||
**1000-Punkte Query:**
|
||||
Loading…
Add table
Add a link
Reference in a new issue