Commit graph

71 commits

Author SHA1 Message Date
0660f4e0a0 Abo-Recovery: fehlgeschlagene Folgezahlung im Checkout nachholen
- Pay-now-Flow: bei fehlgeschlagenem Abo (Status 3) begleicht der Inhaber die
  offene Rechnung im Standard-Checkout mit frei waehlbarer, abo-faehiger Zahlart
  (nur eigenes Abo: Berater me-View + Kundenportal), payNow-Controller + Routen
- AboRecoveryCheckoutService baut die ShoppingInstance aus den Abo-Artikeln;
  neue Spalte shopping_orders.recovery_user_abo_id verknuepft Bestellung<->Abo
- Bei Erfolg: AboHelper::advanceAboAfterRecoveryPayment schreibt das Abo fort
  (Status->2, next_date) und uebernimmt die gewaehlte Zahlart als neues Token
  fuer kuenftige Abbuchungen
- Neue Pay-now-Fehlermail (AboPaymentFailedMail) ersetzt die generische
  Fehlermail im Abo-Cron; Link fuehrt auf die Abo-Detailseite (CRM bzw. Portal)
- Retry-/"extern erledigt"-Buttons nur noch fuer Admins; tote user/portal-
  Retry-Routen entfernt
- Checkout: Recovery-Hinweis statt "Abschluss des Abonnements", Lieferadresse
  vorbelegt, korrekter Zurueck-Link (Abo statt Shop)
- UserAbo::selfServiceDetailUrl zentralisiert die Abo-URL (Mail, Back-Links)
- Test-Command abo:test-recovery; Tests fuer payNow, Advance-Logik, Fehlermail

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-07-02 10:38:05 +00:00
65b867f8ee Abo Einmalprodukte: Phasen 5-7, konfigurierbare Sperrfristen, Lokalisierung & Dashboard
Rechnung/Lieferschein:
- PDF-Gruppierung Abo- vs. Einmal-Artikel (is_abo_addon), rueckwaertskompatibel
- Vorschau-Command sales:preview-invoice (umgeht Test-System-Gate, ohne Rechnungsnummer)

Reminder-Mail (vorbereitet, Cron inaktiv):
- MailAboExecutionReminder + Template, abo:send-execution-reminder, Spalte onetime_reminder_sent_for
- Berater -> Sales Center, Kunde -> Portal; Vorschau abo:preview-reminder
- Datum-Fix: formatDateDB() statt formatDate() (ICU-Format)

Sperrfristen konfigurierbar (Admin-Settings):
- abo-lock-days-change (Liefertag + Abo-Produkte), abo-lock-days-pause-cancel
- Meldungen mit :lock-Platzhalter; Pausieren/Kuendigen vom Change-Lock entkoppelt
- Abo-Produkt-Aenderungen im Lock-Fenster server- + clientseitig eingefroren
- Selbstbedienung: Add-only/Lock nach $view (kein Admin-Bypass), Stale-Cache-Fix beim Mengen-Update

Dashboard:
- Einmalprodukte-Card + Team-Abo-KPI-Card, News-Card responsiv (col-xl-6)

Lokalisierung:
- Sprachdateien en/es/fr vollstaendig mit de synchronisiert (inkl. marketingplan/portal)
- LocalizationSyncTest sichert Key-Gleichheit ab

Tests: AboOneTimeInvoiceGrouping, AboExecutionReminder, AboLockDaysSetting,
AboOnetimeDashboardAndMail, PreviewInvoiceCommand, TeamAboOverview + erweiterte View-Tests

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-23 13:38:11 +00:00
9f996a7f1b Abo: Extern erledigt zaehlt als ausgefuehrte Abo-Lieferung
getCountPaidOrders() zaehlt jetzt bezahlte ODER extern erledigte (Status 8)
Bestellungen als ausgefuehrte Lieferung. "Extern erledigt" = Lieferung
ausgefuehrt und Punkte vergeben, daher muss der Lieferungs-Zaehler hochgehen
(Anzeige "Abo-Lieferungen X / Mindestlaufzeit" sowie canCancelAbo), obwohl
paid=false bleibt (Inkasso laeuft ausserhalb des Systems).

Der Incentive-Zaehler (qualified_abos via IncentiveTracker::trackAboActivated)
lief bereits korrekt; Test ergaenzt diese Absicherung explizit.

Tests: getCountPaidOrders 0 -> 1 nach Erledigen, Incentive qualified_abos = 1.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-17 11:57:29 +00:00
4709dfde55 Abo: Bestellung extern als erledigt markieren (ohne Rechnung/Inkasso)
Neue Admin-Funktion fuer angehaltene Abo-Bestellungen, die der Kunde
ausserhalb des Systems geliefert und verrechnet hat.

Aktion (AboExternalCompletionService):
- Punkte gutschreiben wie bei eingegangener Zahlung (SalesPointsVolume,
  idempotent gegen Doppelbuchung)
- UserAboOrder auf neuen gruenen Status 8 "extern erledigt"; paid bleibt false
- Bestellung: shipped=2 (Lieferung bestaetigt), keine Rechnung/kein Lieferschein
- Blockade aufheben: Abo zurueck auf status=2 (okay), aktiv, next_date neu,
  damit der naechste Termin regulaer laeuft
- wie bei regulaerer Ausfuehrung: IncentiveTracker + AboOneTimeService-Purge

Einstiegspunkte: Button + Bestaetigungs-Modal auf der Kunden-Bestelldetailseite
(SalesController) und auf der Abo-Detailseite (Admin\AboController@externDone,
Route admin_abos_extern_done). Status 8 (gruen) in UserAbo/UserAboOrder, Labels
de/en.

Tests: tests/Feature/AboExternalCompletionTest (Happy Path, Idempotenz,
bezahlt-/Nicht-Abo-Guards, Abo-Detail-Einstieg) - 5 gruen.

Zusaetzlich: docs/2026-06-11-test-suite-vorbestehende-fehler.md - Diagnose der
93 vorbestehenden (von master geerbten) Test-Suite-Fehler.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-12 08:11:45 +00:00
5c11d48e6d Abo Einmalprodukte und Bestätigung abschließen
Co-authored-by: Cursor <cursoragent@cursor.com>
2026-06-05 15:28:08 +00:00
70f2c6012a 27-05-2026 DHL Modul v2.1 / Optimierung tracking 2026-05-27 18:51:23 +02:00
34d8f60bbd User Statistik 2026-05-18 17:23:28 +02:00
a95c2b665b 14-04-2026 2026-04-14 18:07:45 +02:00
396d049439 10.April 2026 2026-04-10 17:15:27 +02:00
4a8f4b4abc 20-02-2026 2026-02-20 17:55:06 +01:00
7325edebbd 23-01-2026 2026-01-23 17:35:23 +01:00
a67740d6ef update 20.10.2025 2025-10-20 17:42:08 +02:00
8ccd81b770 Cocker Setup 2025-08-29 14:48:03 +02:00
Kevin Adametz
fdb4aa7358 DHL Modul v0.5 Shipping Label ok 2025-08-22 18:18:26 +02:00
Kevin Adametz
3b2253147b commit 08-2025 2025-08-12 18:01:59 +02:00
Kevin Adametz
824fa43e96 Updates to 03-2025 2025-04-01 10:36:47 +02:00
Kevin Adametz
7ec90d7e18 08 2024 2024-08-05 12:05:24 +02:00
Kevin Adametz
3a81b8a0f5 last changes since 6-2023 2023-07-03 10:07:08 +02:00
Kevin Adametz
da10f19fcb Free Shipping, Business Levels correction, Products Buying, Fonts 2023-01-25 12:37:29 +01:00
Kevin Adametz
7f6052acf5 #51 Festschreiben der Points, Gutschriftenmodul 2022-07-29 18:18:05 +02:00
Kevin Adametz
89a1a34972 #51 2 Business Points edit / add, user dashboard 2022-07-22 13:43:24 +02:00
Kevin Adametz
813b30e616 #53, #52, #51 change Points 2022-07-21 10:37:34 +02:00
Kevin Adametz
37371ab31c Sammelbestellung von Extern 2022-07-18 18:07:31 +02:00
Kevin Adametz
77b0bc7c7c API Shopping Order backend 2022-07-15 21:21:56 +02:00
Kevin Adametz
6e5b002ec9 06 2022 2022-06-15 18:08:45 +02:00
Kevin Adametz
c56adb2c40 Update Framework, Invoices 2022-04-14 13:14:36 +02:00
Kevin Adametz
1b46427d58 Header Shop bug 2021-09-15 19:09:49 +02:00
Kevin Adametz
2d9db4e52e Country Prices | Homeparty | Shop | Order 2021-08-27 18:53:12 +02:00
Kevin Adametz
2ffc33dcd6 Custom Price / Land / User Order Homeparty 2021-08-20 18:22:21 +02:00
Kevin Adametz
33dae5adf3 Lieferland UST CH, Reverse Charge 2021-08-03 16:00:01 +02:00
Kevin Adametz
c90fe38039 Categories, Netto Homeparty 2021-06-18 15:02:34 +02:00
Kevin Adametz
c5a109fdd6 Cookiebot / Pixel / Kategorien erweitern 2021-04-29 16:36:58 +02:00
Kevin Adametz
87f3fd3c7e Homeparty online, Cron SEPA 2021-04-23 14:54:09 +02:00
Kevin Adametz
4979c12d9a API work 2021-02-10 10:56:40 +01:00
Kevin Adametz
e07be4a5f8 Homparty v1.0 2020-12-17 23:02:22 +01:00
Kevin Adametz
43c2d121d4 Homparty dev 2020-12-16 20:03:51 +01:00
Kevin Adametz
436f550117 + Homparty Part 1 2020-10-16 16:18:00 +02:00
Kevin Adametz
1f77fc7ef8 Berater bestellungen kleine Änderungen 2020-09-15 17:46:39 +02:00
Kevin Adametz
2160f7ddf5 Erweiterungen / Korrekturen Beraterbestellungen 2020-09-08 19:22:07 +02:00
Kevin Adametz
65edf8a8a7 Berater Bestellung / online 2020-08-24 18:17:02 +02:00
Kevin Adametz
a19f7700ea Next Member Shopping 2020-08-21 18:20:40 +02:00
Kevin Adametz
557a1c83a6 cart responsive, Checkout from cart 2020-08-14 18:32:41 +02:00
Kevin Adametz
99d2d55818 Berater Bestellungen 2020-08-12 19:21:19 +02:00
Kevin Adametz
01242b4690 User Order step1 2020-08-07 16:02:03 +02:00
Kevin Adametz
83c67d3d05 Shipping Tax Card 2020-07-01 16:13:38 +02:00
Kevin Adametz
db76085333 MwSt 2020-07-01 13:21:35 +02:00
Kevin Adametz
7260a1086f Produkte SysAdmin 2020-06-14 13:48:11 +02:00
Kevin Adametz
4bd888e6d6 Customers Add+Edit, API WP 2020-06-12 14:46:51 +02:00
Kevin Adametz
37e00c0eb7 Kundenhoheit 2020-05-06 15:43:53 +02:00
Kevin Adametz
9f7b6561ba Registierung Korrekturen 2020-04-29 20:06:51 +02:00