Order Numbers

Vergibt fortlaufende, lesbare Bestellnummern wie ORD-01042 an Payload-Bestellungen über eine Reservierungs-Collection.

Community 1 6/Wo. MIT v1.0.1

Installation

pnpm add payload-order-numbers

Über

Das Plugin vergibt jeder Payload-Bestellung eine kurze, lesbare Referenznummer wie ORD-01042. Die Dokument-ID von Payload eignet sich nicht als Bestellreferenz: MongoDB erzeugt einen 24-stelligen ObjectId, PostgreSQL liefert einen nackten Integer ab 1, der die Gesamtzahl der Bestellungen preisgibt. Das Plugin formatiert eine fortlaufende Nummer mit konfigurierbarem Präfix, Suffix und Null-Padding und speichert sie direkt auf der Bestellung. Die Nummernvergabe erfolgt in einem beforeChange-Hook, aber die Reservierung läuft über eine separate Collection. Bevor eine Bestellung geschrieben wird, fügt das Plugin den nächsten Kandidatenwert in diese Collection ein, und der Insert committet in einer eigenen Transaktion. Eine zweite Bestellung, die im gleichen Moment ankommt, sieht die Reservierung und nimmt den nächsten Wert. Der Unique-Index auf der Bestellnummer ist die finale Garantie. Auf Payload 3.88 wurden 25 gleichzeitige Bestellungen gegen PostgreSQL und MongoDB getestet, alle Nummern waren eindeutig, ohne Lücken im Reservierungsschritt. Das Plugin fügt der konfigurierten Orders-Collection zwei Felder hinzu: ein schreibgeschütztes orderNumber-Textfeld und ein verstecktes orderSequence-Zahlenfeld, beide unique und indiziert. Eine versteckte Collection order-number-reservations speichert die reservierten Werte und ist für alle API-Zugriffe (Create, Read, Update, Delete) gesperrt. Die Optionen umfassen Präfix, Suffix, Padding, Startwert, Feldnamen, Collection-Slugs und die Anzahl der Versuche vor Abbruch. Es funktioniert mit @payloadcms/plugin-ecommerce und jeder Collection namens orders (ordersSlug-Standardwert: 'orders'). Zwei Einschränkungen sind bekannt. Die Sequenz ist aufsteigend und eindeutig, aber nicht lückenlos: Ein reservierter Wert bleibt erhalten, auch wenn die Bestellung danach fehlschlägt. Für PostgreSQL muss der Connection-Pool mindestens doppelt so groß sein wie die erwartete Anzahl gleichzeitiger Bestellungen, da der Reservierungs-Insert eine zweite Verbindung öffnet, während die Transaktion der Bestellung die erste hält. MongoDB ist davon nicht betroffen. Bestehende Bestellungen werden nicht neu nummeriert.

Paketinformationen

Paketname
payload-order-numbers
Neueste Version
1.0.1
Entpackte Größe
15 kB
Lizenz
MIT
Wöchentliche Downloads
6
Zuletzt veröffentlicht
21. Aug. 2026

Mehr von Poseidonas

Profil ansehen

Ähnliche Plugins

Mehr in Commerce