Warenwirtschaft: Review-Fix — Mahnwesen-Storno über OrderStatusService::setShipped

Der Auto-Storno der Zahlungserinnerung schrieb shipped=10 direkt und rief
nur syncSaleStock() — Margen-Storno-Flag, pending_to/shipped_at-Reset und
Promotions-/Guthaben-Folgen fehlten. Die Partnerprovision einer
versendeten, nie bezahlten Bestellung wäre zahlbar geblieben.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Kevin Adametz 2026-07-20 09:47:20 +00:00
parent 3eb14762e7
commit ddd6dde593
3 changed files with 59 additions and 4 deletions

View file

@ -185,10 +185,12 @@ class PaymentReminderService
// action ausführen
if ($payment_reminder->action === 'set_order_status_cancelled') {
$this->setNoNPayment($payment);
$payment->shopping_order->shipped = 10;
$payment->shopping_order->save();
// AP-13: war die Bestellung bereits versendet, gebuchte Verkaufs-Abgänge zurückführen
app(ProductStockService::class)->syncSaleStock($payment->shopping_order);
// Review-Fix 20.07.2026: Storno über den zentralen Statuswechsel — der setzt
// neben dem AP-13-Bestandsabgleich auch das Storno-Flag der Marge, nullt
// pending_to/shipped_at und behandelt Promotions-/Guthaben-Folgen. Der
// bisherige Direkt-Write (shipped = 10 + syncSaleStock) ließ die Provision
// einer versendeten, nie bezahlten Bestellung zahlbar stehen.
app(OrderStatusService::class)->setShipped($payment->shopping_order->id, 10);
$this->createLog(
'action_completed',
"Action abgeschlossen: Bestellung auf 'Storniert' gesetzt, Payment auf 'non' gesetzt",