fix: Bestand bei Storno nach erstatteter Retoure nicht doppelt zurueckbuchen
Wurde eine Retoure erstattet und die Bestellung danach auf "STORNIERT" gesetzt, buchten beide Schritte die Ware zurueck. Bei einer Testbestellung stieg der Bestand so von 105 auf 106 Glaeser. - Stornieren bucht nur noch zurueck, wenn keine Retoure erstattet ist (needsRestockOnCancel in lib/inventory.ts) - Retoure einer bereits stornierten Bestellung laesst sich nicht mehr erstatten, auch nicht im Wettlauf (Bedingung im atomaren Claim) Co-Authored-By: Claude Opus 5.5 (1M context) <[email protected]>
This commit is contained in:
1 parent
fdb6456207
commit
5848eb6ad5
4 files changed
+47
-4
No files matched your search
@@ -6,7 +6,7 @@ import { logAdminAction } from "@/lib/audit-log";
|
||||
import { sendMail } from "@/lib/mail";
|
||||
import { shipmentEmail, pickupReadyEmail } from "@/lib/email-templates";
|
||||
import { getCarrierTrackingUrl } from "@/lib/shipment-tracking";
|
||||
import { restockOrderItems } from "@/lib/inventory";
|
||||
import { needsRestockOnCancel, restockOrderItems } from "@/lib/inventory";
|
||||
import { checkOrderDeletable, needsRestockOnDelete } from "@/lib/order-delete";
|
||||
import { getStripeClient } from "@/lib/stripe";
|
||||
import { isLocale, defaultLocale } from "@/i18n/config";
|
||||
@@ -139,6 +139,7 @@ export async function updateOrderStatusAction(formData: FormData): Promise<void>
|
||||
stripeCheckoutSessionId: true,
|
||||
payment: { select: { status: true, stripePaymentIntentId: true } },
|
||||
items: { select: { productId: true, quantity: true } },
|
||||
returnRequest: { select: { status: true } },
|
||||
},
|
||||
});
|
||||
if (!previous) return null;
|
||||
@@ -164,7 +165,9 @@ export async function updateOrderStatusAction(formData: FormData): Promise<void>
|
||||
});
|
||||
if (claim.count === 1) {
|
||||
cancelledNow = true;
|
||||
await restockOrderItems(tx, previous.items);
|
||||
if (needsRestockOnCancel(previous.returnRequest?.status ?? null)) {
|
||||
await restockOrderItems(tx, previous.items);
|
||||
}
|
||||
}
|
||||
} else {
|
||||
await tx.order.update({ where: { id: orderId }, data: { status } });
|
||||
|
||||
Reference in new issue
Block a user