commit 08-2025
This commit is contained in:
parent
9b54eb0512
commit
02f2a4c23e
184 changed files with 31653 additions and 22327 deletions
249
PAYMENT_REMINDER_CRON.md
Normal file
249
PAYMENT_REMINDER_CRON.md
Normal file
|
|
@ -0,0 +1,249 @@
|
|||
# Payment Reminder Cron-Job Einrichtung
|
||||
|
||||
## Übersicht
|
||||
|
||||
Der `PaymentsReminders` Command automatisiert das Senden von Zahlungserinnerungen basierend auf den konfigurierten Intervallen in der Datenbank.
|
||||
|
||||
## Command ausführen
|
||||
|
||||
```bash
|
||||
php artisan payments:reminders
|
||||
```
|
||||
|
||||
## Cron-Job Konfiguration
|
||||
|
||||
### 1. Crontab öffnen
|
||||
|
||||
```bash
|
||||
crontab -e
|
||||
```
|
||||
|
||||
### 2. Cron-Job hinzufügen
|
||||
|
||||
**Täglich um 9:00 Uhr:**
|
||||
|
||||
```bash
|
||||
0 9 * * * cd /path/to/your/project && php artisan payments:reminders >> /dev/null 2>&1
|
||||
```
|
||||
|
||||
**Stündlich:**
|
||||
|
||||
```bash
|
||||
0 * * * * cd /path/to/your/project && php artisan payments:reminders >> /dev/null 2>&1
|
||||
```
|
||||
|
||||
**Alle 6 Stunden:**
|
||||
|
||||
```bash
|
||||
0 */6 * * * cd /path/to/your/project && php artisan payments:reminders >> /dev/null 2>&1
|
||||
```
|
||||
|
||||
### 3. Cron-Job testen
|
||||
|
||||
```bash
|
||||
# Teste den Command manuell
|
||||
php artisan payments:reminders
|
||||
|
||||
# Prüfe die Logs
|
||||
tail -f storage/logs/laravel.log
|
||||
```
|
||||
|
||||
## Funktionsweise
|
||||
|
||||
### 1. Intervall-basierte Verarbeitung
|
||||
|
||||
- Der Command holt alle aktiven `PaymentReminder` aus der Datenbank
|
||||
- Gruppiert sie nach `clearingtype` (z.B. 'invoice', 'prepayment')
|
||||
- Verwendet das kleinste Intervall pro `clearingtype`
|
||||
|
||||
### 2. Zahlungsprüfung
|
||||
|
||||
- Sucht offene Zahlungen, die älter als das konfigurierte Intervall sind
|
||||
- Berücksichtigt nur die neueste Zahlung pro Bestellung
|
||||
- Prüft nur Live-Zahlungen (nicht Test)
|
||||
|
||||
### 3. Erinnerungslogik
|
||||
|
||||
- **Erste Erinnerung**: Nach X Tagen ab Bestelldatum
|
||||
- **Weitere Erinnerungen**: Nach Y Tagen ab letzter Erinnerung
|
||||
- Stoppt wenn alle konfigurierten Erinnerungen gesendet wurden
|
||||
|
||||
### 4. Automatische Aktionen
|
||||
|
||||
- E-Mail-Versand mit Platzhalter-Ersetzung
|
||||
- Optional: Bestellung auf "Storniert" setzen
|
||||
- Optional: Payment auf "non" Status setzen
|
||||
- Logging aller Aktivitäten
|
||||
|
||||
## Logging
|
||||
|
||||
### Command-Logs
|
||||
|
||||
```bash
|
||||
# Live-Logs während der Ausführung
|
||||
php artisan payments:reminders
|
||||
|
||||
# Beispiel-Output:
|
||||
RUN Command Payments Reminders: 15.12.2024 09:00
|
||||
=== STARTE PAYMENT REMINDERS ===
|
||||
Gefundene aktive PaymentReminder: 3
|
||||
Gefundene clearingtypes mit kleinsten Intervallen:
|
||||
- invoice: 7 Tage
|
||||
- prepayment: 3 Tage
|
||||
--- Verarbeite clearingtype: invoice mit Intervall: 7 Tage ---
|
||||
Suche Zahlungen vor: 08.12.2024 09:00:00
|
||||
Gefundene offene Zahlungen für invoice: 5
|
||||
Verarbeite Order ID: 12345, Created: 05.12.2024 10:30:00, Amount: 5000, Reminder: 0
|
||||
📧 Sende Erinnerung...
|
||||
✅ Erinnerung erfolgreich gesendet
|
||||
=== PAYMENT REMINDERS ABGESCHLOSSEN ===
|
||||
Ausführungszeit: 2.34 Sekunden
|
||||
Statistiken:
|
||||
- Gesamt verarbeitet: 5
|
||||
- Erinnerungen gesendet: 3
|
||||
- Fehler: 0
|
||||
- Übersprungen: 2
|
||||
```
|
||||
|
||||
### Laravel-Logs
|
||||
|
||||
```bash
|
||||
# Logs in storage/logs/laravel.log
|
||||
tail -f storage/logs/laravel.log | grep "Payment reminder"
|
||||
```
|
||||
|
||||
## Konfiguration
|
||||
|
||||
### PaymentReminder Einstellungen
|
||||
|
||||
```sql
|
||||
-- Beispiel-Konfiguration
|
||||
INSERT INTO payment_reminders (clearingtype, interval, subject, message, action, active) VALUES
|
||||
('invoice', 7, 'Zahlungserinnerung - Bestellung {order_number}', 'Sehr geehrte/r {billing_first_name}...', NULL, 1),
|
||||
('invoice', 14, '2. Zahlungserinnerung - Bestellung {order_number}', 'Sehr geehrte/r {billing_first_name}...', NULL, 1),
|
||||
('invoice', 21, 'Letzte Zahlungserinnerung - Bestellung {order_number}', 'Sehr geehrte/r {billing_first_name}...', 'set_order_status_cancelled', 1);
|
||||
```
|
||||
|
||||
### Platzhalter
|
||||
|
||||
- `{billing_first_name}` - Vorname
|
||||
- `{billing_last_name}` - Nachname
|
||||
- `{order_number}` - Bestellnummer
|
||||
- `{order_date}` - Bestelldatum
|
||||
- `{order_total}` - Bestellsumme
|
||||
|
||||
## Monitoring
|
||||
|
||||
### 1. Log-Statistiken
|
||||
|
||||
- Admin-Bereich: `/admin/payments/reminder/logs`
|
||||
- Zeigt Statistiken der letzten 7, 30 und 90 Tage
|
||||
- Filter nach Order ID, Aktion und Datum
|
||||
|
||||
### 2. Erfolgsrate
|
||||
|
||||
- E-Mails gesendet vs. Fehler
|
||||
- Aktionen ausgeführt
|
||||
- Übersprungene Erinnerungen
|
||||
|
||||
### 3. Performance
|
||||
|
||||
- Ausführungszeit pro Lauf
|
||||
- Anzahl verarbeiteter Zahlungen
|
||||
- Speicherverbrauch
|
||||
|
||||
## Troubleshooting
|
||||
|
||||
### Häufige Probleme
|
||||
|
||||
**1. Command läuft nicht**
|
||||
|
||||
```bash
|
||||
# Prüfe PHP-Pfad
|
||||
which php
|
||||
|
||||
# Prüfe Projekt-Pfad
|
||||
pwd
|
||||
|
||||
# Teste Command manuell
|
||||
php artisan payments:reminders
|
||||
```
|
||||
|
||||
**2. Keine E-Mails werden gesendet**
|
||||
|
||||
```bash
|
||||
# Prüfe Mail-Konfiguration
|
||||
php artisan config:cache
|
||||
|
||||
# Prüfe Logs
|
||||
tail -f storage/logs/laravel.log
|
||||
```
|
||||
|
||||
**3. Falsche Intervalle**
|
||||
|
||||
```bash
|
||||
# Prüfe PaymentReminder-Konfiguration
|
||||
php artisan tinker
|
||||
>>> App\Models\PaymentReminder::where('active', true)->get()
|
||||
```
|
||||
|
||||
**4. Cron-Job läuft nicht**
|
||||
|
||||
```bash
|
||||
# Prüfe Crontab
|
||||
crontab -l
|
||||
|
||||
# Prüfe Cron-Logs
|
||||
sudo tail -f /var/log/cron
|
||||
|
||||
# Teste mit absoluten Pfaden
|
||||
0 9 * * * /usr/bin/php /path/to/project/artisan payments:reminders
|
||||
```
|
||||
|
||||
## Sicherheit
|
||||
|
||||
### 1. Berechtigungen
|
||||
|
||||
```bash
|
||||
# Stelle sicher, dass der Webserver-Benutzer Schreibrechte hat
|
||||
chown -R www-data:www-data storage/logs
|
||||
chmod -R 755 storage/logs
|
||||
```
|
||||
|
||||
### 2. Log-Rotation
|
||||
|
||||
```bash
|
||||
# Konfiguriere Log-Rotation in /etc/logrotate.d/laravel
|
||||
/path/to/project/storage/logs/*.log {
|
||||
daily
|
||||
missingok
|
||||
rotate 52
|
||||
compress
|
||||
notifempty
|
||||
create 644 www-data www-data
|
||||
}
|
||||
```
|
||||
|
||||
### 3. Backup
|
||||
|
||||
```bash
|
||||
# Backup der PaymentReminder-Konfiguration
|
||||
mysqldump -u username -p database payment_reminders > payment_reminders_backup.sql
|
||||
```
|
||||
|
||||
## Performance-Optimierung
|
||||
|
||||
### 1. Batch-Verarbeitung
|
||||
|
||||
- Der Command verarbeitet Zahlungen in Batches
|
||||
- Verwendet Datenbank-Indizes für bessere Performance
|
||||
|
||||
### 2. Memory-Management
|
||||
|
||||
- Garbage Collection nach jeder Zahlung
|
||||
- Begrenzte Anzahl von Logs
|
||||
|
||||
### 3. Timeout-Handling
|
||||
|
||||
- Lange Ausführungen werden abgebrochen
|
||||
- Fehler werden geloggt und übersprungen
|
||||
Loading…
Add table
Add a link
Reference in a new issue