inventory library
Die Lager-API: Artikel, Standorte, Bestand und Lagerprotokoll lesen,
Konto-Webhooks verwalten und eingehende Zustellungen pruefen (Backend
Stufe 5a); Artikel anlegen und aendern, Bestand buchen und Ware
reservieren (Stufe 5b, seit 10.4); Variantengruppen (Stufe 5c, seit 10.5);
Inventur (Lager-Kern Stufe 3, seit 10.7) – Zwilling von
@kreiseck/kasseneck-api/inventory im JS-Paket.
Der Schluessel ist der api_key des Kontos, ohne Kassen-Token. Er
gehoert auf einen Server (etwa das Backend eines Online-Shops), nie in
eine App, die Kunden installieren. Lesen braucht das Modul lager,
Schreiben dazu den Konto-Schalter „Lager-API schreiben“; Einkaufspreise und
Lagerwerte kommen nur mit dem Recht costs. Jede schreibende Anfrage
traegt einen idempotencyKey.
Mengen in Tausendstel der Basiseinheit, Geld in Cent, Einkaufspreise in Mikro-Euro; alles Ganzzahlen.
StockLevel gibt es gleichnamig im Kassenweg (pos.dart); wer beide
Bibliotheken einbindet, nimmt fuer eine ein Praefix.
Classes
- AddVariantRequest
-
Legt eine Variante in einer aktiven Gruppe an (
addVariant). Antwort: der Artikel wiecreateArticle. - Article
-
Ein Artikel, wie
getArticle,listArticles,lookupArticleByCodeund die Ereignissearticle.*ihn senden. - ArticleInput
- Die Felder eines Artikels beim Anlegen.
- ArticlePage
-
Eine Seite von
listArticles. - CancelStocktakeRequest
-
Abbrechen (
cancelStocktake, auscountingoderreview); der Standort ist danach wieder frei. - ChangeStockConditionRequest
-
Ware zwischen verkaufbar und defekt umbuchen (
changeStockCondition). Ueberzieht nie (exceeds_stock). - CloseStocktakeRequest
-
Abschliessen (
closeStocktake, nur ausreview). - CloseStocktakeResult
-
Antwort von
closeStocktake: der Kopf (meistclosing, der Server bucht im Hintergrund weiter) und Hinweise wierecount_uncounted. - CreateArticleRequest
-
Legt einen Artikel an (
createArticle). - CreateReservationRequest
-
Reservieren (
createReservation, Checkout im Shop): ganz oder gar nicht. Fehlt verfuegbarer Bestand an einer Position, entsteht nichts und der Fehlerinsufficient_availablenennt die fehlenden Positionen (inventoryShortfalls). Nur bestandsgefuehrte Artikel; gleiche Artikel am gleichen Standort werden zusammengezaehlt. - CreateStocktakeRequest
-
Legt eine Inventur an (
createStocktake). Je Standort hoechstens eine offene (stocktake_location_busy,inventoryBusyStocktakeIdnennt sie); hoechstensstocktakeItemsMaxPositionen. - CreateVariantGroupRequest
-
Legt eine Variantengruppe an (
createVariantGroup): mitcreateMatrix: truesamt allen Kombinationen (hoechstens 100) oder mit den genannten variants (hoechstens 100), nie beides. Ohne beides entsteht die Gruppe ohne Variante. Die Antwort traegt die Gruppe mitvariants(Kennungen und Merkmale), nicht die Artikel. - DeactivateArticleRequest
-
Stilllegen (
deactivateArticle):active: false; Code und eigene Kennungen werden frei. Schon stillgelegt = dieselbe Antwort, nichts geschrieben. Den Bestand behaelt der Artikel, gebucht werden darf weiter. - ExtendReservationRequest
-
Verlaengern (
extendReservation): neuer Ablauf = jetzt + Minuten. Nur eine aktive, noch nicht faellige Reservierung (reservation_not_active). - GoodsReceiptItem
- Eine Position eines Wareneingangs.
- GoodsReceiptPreview
-
Antwort von
previewGoodsReceipt: was der Wareneingang buchen wuerde. - GoodsReceiptPreviewLine
-
Eine Zeile der Wareneingangs-Vorschau (
previewGoodsReceipt). - GoodsReceiptPreviewRequest
-
Vorschau eines Wareneingangs (
previewGoodsReceipt, am DrahtreceiveGoodsmitdryRun: true): dieselben Felder wie ReceiveGoodsRequest, der Schluessel ist freigestellt. Ein mitgesendeter Schluessel wird nur auf seine Form geprueft und nicht verbraucht; dieselbe Anfrage laesst sich danach mit ihm buchen. Das Schreibrecht braucht die Vorschau trotzdem; den Standort prueft erst die Buchung. - GoodsReceiptSupplier
- Lieferant eines Wareneingangs.
- InventoryArticleEvent
-
article.created,article.updatedoderarticle.deactivated(type): der Artikel wiegetArticleihn liefert, ohne Einkaufspreise. - InventoryClient
- InventoryReservationEvent
-
reservation.expired,reservation.releasedoderreservation.redeemed(type): die Reservierung wiegetReservationsie liefert, mit dem Status nach dem Vorgang.releasedundredeemedkommen bei jeder wirksamen Freigabe bzw. Einloesung, auch einer teilweisen; dann bleibt der Statusactive. Seit 10.4. - InventoryShortfall
-
Eine Position, fuer die beim Reservieren der verfuegbare Bestand nicht
reicht (
insufficient_available, sieheinventoryShortfalls). - InventoryStockBelowMinimumEvent
-
stock.below_minimum: einmal beim Unterschreiten des Mindestbestands des Standorts. - InventoryStockChangedEvent
-
stock.changed: der aktuelle Stand eines Artikels an einem Standort. Einen gespeicherten Stand nur ueberschreiben, wenndata.sequencegroesser ist. - InventoryTransport
- InventoryVariantGroupEvent
-
variant_group.createdodervariant_group.updated(type): die Variantengruppe wiegetVariantGroupsie liefert.updatedkommt nur bei einer aussen sichtbaren Aenderung (neuer Wert, neue oder stillgelegte Variante, Name, Vorgaben, Stilllegen der Gruppe). Zwei Zustellungen koennen sich ueberholen: den Stand nur uebernehmen, wenndata.updatedAtneuer ist als der gespeicherte. Seit 10.5. - InventoryWarning
- Ein Hinweis einer Buchung: sie hat gewirkt, es gibt nur etwas zu wissen.
- InventoryWebhook
- Ein Konto-Webhook.
- InventoryWebhookDelivery
-
Eine Zustellung aus
listWebhookDeliveries. - InventoryWebhookEvent
- Eine Zustellung als typisiertes Ereignis; die Unterklasse sagt, welches.
- InventoryWebhookLastDelivery
- Die letzte Zustellung an einen Webhook.
- InventoryWebhookList
-
Antwort von
listWebhooks. - InventoryWebhookTestDelivery
-
Eine Probezustellung aus
sendWebhookTest. - InventoryWebhookTestResult
-
Antwort von
sendWebhookTest. - InventoryWebhookWithSecret
-
Antwort von
createWebhookundrotateWebhookSecret. - LandedCost
- Nebenkosten eines Wareneingangs.
- Location
- Ein Standort des Kontos (Lager, Geschaeft, Fahrzeug).
- LocationAddress
-
Anschrift eines Standorts; ein leerer Teil ist
null. - PdfOrData
-
Ergebnis von InventoryTransport.callPdfOrData: die Datei als Bytes oder
die
dataeiner Erfolgshuelle (etwa ein Lese-Link, wenn die Datei zu gross fuer die Antwort ist). Zwilling vonPdfOrDataim JS-Paket. - PdfOrDataFile
-
Die Antwort war eine Datei (
%PDF). - PdfOrDataPayload
- Die Antwort war eine Erfolgshuelle; data ohne Huelle.
- ReceiveGoodsRequest
-
Bucht einen Wareneingang (
receiveGoods). Preise und Nebenkosten darf jeder Schreibende senden (so bekommt der Bestand seinen Wert); zurueck kommen Werte nur mit dem Rechtcostsund nur in der Vorschau (GoodsReceiptPreviewRequest). - RecordStockLossRequest
-
Abgang (
recordStockLoss: Bruch, Schwund, Entnahme …). Ueberzieht nie (exceeds_stock).reason: 'other'braucht note (note_required),reason: 'withdrawal'braucht withdrawalType (withdrawal_type_required). - RecordStocktakeCountRequest
-
Eine Zaehlung (
recordStocktakeCount). Menge in Tausendstel (0= leer gezaehlt; Stueckartikel und Einzelstuecke nur ganze Stueck), Einzelstueck mit je Stueck genau einer Seriennummer. Mehrere Zaehlungen derselben Position werden addiert. - RecountStocktakeRequest
-
Nachzaehlen (
recountStocktake, nur inreview): je Position eine neue Runde; danach zaehlen und erneut pruefen. - ReleaseReservationItem
- Eine Position einer Freigabe.
- ReleaseReservationRequest
-
Freigeben (
releaseReservation): ohne items alles, sonst je Position (ganz oder teilweise). Der Status wird erstreleased, wenn nichts mehr offen ist. - Reservation
-
Eine Reservierung, wie
getReservation, jede schreibende Reservierungs-Antwort und die Ereignissereservation.*sie senden. - ReservationItem
-
Eine Position einer Reservierung, Mengen in Tausendstel. Offen ist
quantity - redeemed - released(open). - ReservationItemInput
- Eine Position einer neuen Reservierung.
- ReservationPage
-
Eine Seite von
listReservations, neueste zuerst. - ReverseStockMovementRequest
-
Gegenbuchung (
reverseStockMovement): nimmt einen ganzen Vorgang zurueck. Verkaeufe und Reservierungen gehen so nicht (reversal_not_supported), ein zweites Mal auch nicht (already_reversed). - ReviewStocktakeRequest
-
Pruefen (
reviewStocktake):counting→review, inreviewneu rechnen (etwa nach dem Nachzaehlen). - StockAfter
- Bestand am Standort nach einer Bewegung, in Tausendstel.
- StockBelowMinimumEventData
-
Nutzlast von
stock.below_minimum: nur beim Unterschreiten, nicht bei jedem weiteren Sinken. - StockChangedEventData
-
Nutzlast von
stock.changed: der aktuelle Stand, nicht die Aenderung. - StockItem
- Eine Position von Umbuchung, Abgang oder Zustandswechsel.
- StockLevel
- Bestand eines Artikels an einem Standort, Mengen in Tausendstel.
- StockMovement
- Eine Zeile des Lagerprotokolls; neueste zuerst.
- StockMovementLot
- Ein Los einer Bewegung.
- StockMovementPage
-
Eine Seite von
listStockMovements. - StockMovementSourceRef
- Woher eine Bewegung kommt.
- StockOperation
-
Antwort jeder Buchung (
receiveGoods,transferStock,recordStockLoss,changeStockCondition,reverseStockMovement). Werte traegt sie nie. Eine Wiederholung mit demselbenidempotencyKeyliefert genau diese Antwort noch einmal. - StockPage
-
Eine Seite von
listStock. - StockResult
-
Antwort von
getStock. - Stocktake
- Eine Inventur (Kopf), wie jeder Inventur-Aufruf ausser den Listen der Positionen und Zaehlungen sie sendet.
- StocktakeActor
- Wer etwas tat: Inhaber, Kasseneck-Admin, Kassen-Benutzer oder ein API-Schluessel.
- StocktakeCancellation
- Der Abbruch einer Inventur.
- StocktakeClosing
- Der Abschluss: er bucht in Teilen und laesst sich wieder aufnehmen.
- StocktakeCount
- Eine Zaehlung.
- StocktakeCountPage
-
Eine Seite von
listStocktakeCountsbzw.listMyStocktakeCounts, neueste zuerst. - StocktakeCountResult
- Antwort von Zaehlen und Stornieren: die Zaehlung und ihre Position danach (Summe der Runde in StocktakeItem.quantity, kein Soll).
- StocktakeCountVoided
- Das Storno einer Zaehlung.
- StocktakeInventoryLine
- Eine Zeile des Inventars (nach dem Abschluss).
- StocktakeItem
-
Eine Position: ein Artikel in einem Zustand (
sellablebzw.defective). - StocktakeItemPage
-
Eine Seite von
listStocktakeItemsbzw.listMyStocktakeItems, nach Kennung. - StocktakeNotBooked
- Was von einer Position nicht gebucht wurde, und warum.
- StocktakePage
-
Eine Seite von
listStocktakes. - StocktakePdf
-
Das Inventurprotokoll: als Datei (StocktakePdfFile) oder, ueber 9 MiB,
als Lese-Link (StocktakePdfLink). Mit dem Recht
costsdie Fassung mit Werten, sonst die nur mit Mengen. - StocktakePdfDownload
- Lese-Link auf das Inventurprotokoll, wenn es zu gross fuer die Antwort ist (ueber 9 MiB). Signiert und 15 Minuten gueltig; die geladene Datei an sha256 pruefen.
- StocktakePdfFile
-
Das Inventurprotokoll als Datei (beginnt mit
%PDF). - StocktakePdfInfo
- Das Inventurprotokoll: ob es da ist, und die Pruefsummen der Fassungen, die der Aufrufer sehen darf.
- StocktakePdfLink
- Das Inventurprotokoll als Lese-Link: die Datei war zu gross fuer die Antwort.
- StocktakeProgress
- Fortschritt: Zahl der Positionen und ob Positionen zum Nachzaehlen offen sind.
- StocktakeRecount
- Ein Nachzaehlen-Auftrag an einer Position.
- StocktakeRecountItem
- Eine Position zum Nachzaehlen.
- StocktakeReview
- Die Pruefung: wann und von wem angestossen, ob Soll und Differenz schon gerechnet sind.
- StocktakeScope
- Umfang einer Inventur, bei der Anlage eingefroren.
- StocktakeScopeInput
- Umfang einer neuen Inventur.
- StocktakeSeal
-
Siegelstand des Lagerprotokolls beim Abschluss: Wiener Tage
YYYY-MM-DD.verified: nullheisst „nicht fertig geprueft“, nie Bruch. - StocktakeTotals
-
Summen des Abschlusses (Anzahlen von Positionen; Werte nur mit dem Recht
costs). - StocktakeWarning
- Ein Hinweis zur Inventur, mit der Zahl der betroffenen Positionen. Er ist kein Fehler: der Vorgang hat gewirkt.
- StockValue
-
Lagerwert eines Artikels. Derselbe Typ an der Kasse (
pos.dart) und in der Lager-API (inventory.dart); er kommt nur, wenn Werte freigegeben sind: an der Kasse mit dem RechtstockCostsdes Kassenbenutzers, in der Lager-API mit dem Konto-Schalter „Einkaufswerte per API“ (Rechtcosts). - TransferStockRequest
-
Umbuchung zwischen zwei Standorten (
transferStock). Ueberzieht nie (exceeds_stock). - UpdateArticleRequest
-
Eine Aenderung (
updateArticle): nur die genannten Felder, mindestens eines. - UpdateVariantGroupRequest
-
Aendert eine aktive Gruppe (
updateVariantGroup): nur die genannten Felder, mindestens eines. defaults ist ein Teil-Update (VariantGroupDefaultsInput.clear leert einzelne Felder, clearDefaults alle). addAttributeValues haengt Werte an bestehende Merkmale an und uebergeht still, was es schon gibt (auch in anderer Gross-/Kleinschreibung): der Shop darf immer alle seine Werte senden. Werte entfernen und Merkmale ergaenzen gibt es nicht. - VariantAttribute
-
Ein Merkmal einer Variantengruppe mit seinen Werten, in der Reihenfolge der
Gruppe. Dieselbe Form in der Anfrage (
CreateVariantGroupRequest.attributes) und in der Antwort. - VariantGroup
-
Eine Variantengruppe, wie
getVariantGroup,listVariantGroups, die schreibenden Gruppenaufrufe und die Ereignissevariant_group.*sie senden. Die Artikel selbst traegt sie nicht: die liestlistArticles(variantGroupId: …). - VariantGroupDefaults
-
Vorgaben einer Gruppe: sie fuellen bei der Anlage einer Variante die
Felder, die die Variante nicht selbst nennt. Ein spaeteres Aendern der
Vorgaben aendert keine bestehende Variante (dafuer
updateArticle). Ein Feld ohne Vorgabe istnullund fehlt in toJson. - VariantGroupDefaultsInput
-
Vorgaben einer Gruppe in einer Anfrage. Bei der Anlage fehlt ein Feld ohne
Wert; bei einer Aenderung (
updateVariantGroup) ist es ein Teil-Update: nur die genannten Felder, clear leert einzelne (am Drahtnull). - VariantGroupMember
- Eine Variante in der Liste ihrer Gruppe.
- VariantGroupPage
-
Eine Seite von
listVariantGroups, nachupdatedAtaufsteigend. - VariantInput
-
Eine neue Variante: ihre Merkmalswerte und die Felder eines Artikels wie
bei CreateArticleRequest. Was fehlt, fuellen die Vorgaben der Gruppe; ohne
name heisst sie „
<Gruppe> <Wert1> <Wert2>“ in Merkmalsreihenfolge. Mit ean wird sie ein Fremdartikel, sonst vergibt der Server den naechsten eigenen Code. - VoidStocktakeCountRequest
-
Storniert eine Zaehlung (
voidStocktakeCount); die Position wird aus den uebrigen Zaehlungen neu summiert.
Enums
- ErrorOutcome
-
Ausgang eines gescheiterten Aufrufs. rejected: nichts geschehen.
unknown: der Vorgang kann ausgefuehrt sein (ein Beleg signiert, ein
Storno gebucht, Ware gebucht, eine Rechnung ausgestellt); nie blind
wiederholen. Belege, Stornos und Zahlungen nachlesen; ein Aufruf mit
idempotencyKeynur mit demselben Schluessel erneut senden (wirkt genau einmal, ein neuer buchte doppelt); ohne Schluessel erst nachlesen.
Constants
-
inventoryEndpoints
→ const List<
String> -
Die 44 Endpunkte (14 aus 5a, 13 aus 5b, 5 aus 5c, 12 der Inventur), in der
Reihenfolge von
endpoints.public. -
inventoryErrorCodes
→ const List<
String> -
Die Codes, die die Lager-Endpunkte selbst senden (
errorCodes.inventory;register_user_not_allowedsteht bei inventoryRequestErrorCodes).validationtraegterrors: [{field, message}],rate_limitedtraegtretryAfterSec(dazu die KopfzeileRetry-After), auch beisendWebhookTestnach 20 Probesendungen je Wiener Kalendertag (dann bis Mitternacht in Wien). - inventoryIdempotencyKeyMax → const int
-
Laengster
idempotencyKeyin Zeichen; laenger weist schon der Client ab, er schneidet nie ab. - inventoryListLimitMax → const int
-
Groesstes
limiteiner Liste; ohne Angabe liefert der Server 50. -
inventoryRequestErrorCodes
→ const List<
String> -
Codes, die Anmeldung und Rand auf jedem Lager-Aufruf erzeugen koennen,
soweit sie nicht schon in inventoryErrorCodes stehen; zuletzt
route_missing(Code des Pakets). Dieselbe Ableitung wie bei der Rechnungs-API. -
inventoryWarningCodes
→ const List<
String> -
Hinweise einer Buchung (
warnings[].code,warningCodes.inventory). Sie sind keine Fehler: die Buchung hat gewirkt.insufficient_stockgibt es nur beim Verkauf (Abgang, Umbuchung und Zustandswechsel weisen mitexceeds_stockab),below_minimummisst am verfuegbaren Bestand (onHand - reserved) gegen den Mindestbestand des Standorts,reservation_exceededmeldet eine Rechnung, die mehr verkauft als reserviert war. -
inventoryWebhookEnvelopeFields
→ const List<
String> -
Die Felder der Huelle jeder Zustellung, in der Reihenfolge am Draht. Statt
partnerId(Partner-Webhooks) traegt sieaccountId;teststeht nur auf Probesendungen. -
inventoryWebhookEvents
→ const List<
String> -
Die Ereignisse, die ein Konto-Webhook abonnieren kann, in der Reihenfolge
von
listWebhooks().events.reservation.*(seit 10.4) tragen die Reservierung wiegetReservation, mit dem Status danach:reservation.releasedundreservation.redeemedkommen bei jeder wirksamen Freigabe bzw. Einloesung, auch einer teilweisen (dann bleibt der Statusactive).variant_group.createdundvariant_group.updated(seit 10.5) tragen die Variantengruppe wiegetVariantGroup;updatedkommt nur bei einer aussen sichtbaren Aenderung (neuer Wert, neue oder stillgelegte Variante, Name, Vorgaben, Stilllegen der Gruppe). - inventoryWebhookLimit → const int
-
Hoechstzahl der Webhooks je Konto (
webhook_limit). - kInventoryBaseUrl → const String
- Standardadresse der Lager-API (die oeffentliche Basis).
-
landedCostAllocations
→ const List<
String> -
Verteilung der Nebenkosten (
allocation, KatalogLAGER_VERTEILUNG); Vorgabe des Serversvalue. -
landedCostTypes
→ const List<
String> -
Art von Nebenkosten eines Wareneingangs (
landedCosts[].type, KatalogLAGER_NEBENKOSTEN_ART).discountundcash_discountmindern den Wert. -
locationTypes
→ const List<
String> -
Art eines Standorts (Katalog
STANDORT_TYP). - reservationMinutesMax → const int
- Laengste Haltedauer einer Reservierung in Minuten (30 Tage).
- reservationMinutesMin → const int
-
Kuerzeste Haltedauer einer Reservierung in Minuten (
expiresInMinutes). -
reservationStatuses
→ const List<
String> -
Stand einer Reservierung (Katalog
RESERVIERUNG_STATUS). Nuractivehaelt Ware zurueck; die drei anderen sind endgueltig:redeemed(ueber eine Rechnung eingeloest),released(freigegeben),expired(abgelaufen). -
stockChangeCauses
→ const List<
String> -
Ursache eines
stock.changed(KatalogLAGER_URSACHE), abgeleitet aus der juengsten Bewegung mit Mengenwirkung.other: keine Regel passt oder es gibt keine Bewegung (dann istmovementIdnull). -
stockConditions
→ const List<
String> -
Zustand der Ware an einer Bewegung (Katalog
LAGER_ZUSTAND). -
stockKinds
→ const List<
String> -
Bestandsart eines Artikels (
stockKind):quantity= Menge,serial= Einzelstueck mit Seriennummer. Kein Katalog des Vokabulars, der Server uebersetzt das Feld selbst; nach der ersten Bewegung fest (stock_kind_locked). -
stockLossReasons
→ const List<
String> -
Grund eines Abgangs (
RecordStockLossRequest.reason, KatalogLAGER_ABGANG_GRUND).otherbrauchtnote. -
stockMovementSources
→ const List<
String> -
Woher eine Bewegung kommt (Katalog
BEWEGUNG_QUELLE), zugleich der Filtersource. -
stockMovementTypes
→ const List<
String> -
Art einer Lagerbewegung (Katalog
BEWEGUNG_ART), zugleich der Filtertype.goods_receiptist der Wareneingang,takeoverder uebernommene Anfangsbestand (auch per Import).receiptgibt es hier nicht: das ist der Kassenbeleg und steht nur als Quelle (stockMovementSources).reservation(seit 10.4) aendert nurreserved:quantityDeltaist 0, die Menge steht inreservedDelta. Neue Arten stehen hinten. -
stocktakeActorTypes
→ const List<
String> -
Wer handelte (Katalog
INVENTUR_AKTEUR): Inhaber, Kasseneck-Admin, Kassen-Benutzer, API-Schluessel. -
stocktakeCheckReasons
→ const List<
String> -
Warum eine Position in der Pruefung „pruefen“ traegt (Katalog
INVENTUR_PRUEFGRUND): Bewegung zwischen der ersten und letzten Zaehlung, Zaehlung mehr als 10 Tage vom Stichtag, Seriennummern weichen ab, nicht gezaehlt. - stocktakeCountsPerItemMax → const int
-
Zaehlungen je Position und Runde (
too_many_counts), hoechstens so viele Seriennummern je Zaehlung. -
stocktakeInventoryAsOf
→ const List<
String> -
Zu welchem Zeitpunkt das Inventar im Protokoll steht (Katalog
INVENTUR_INVENTAR_ZUM):key_date(auf das Ende des Stichtags fortgeschrieben, Abschluss nach dem Stichtag) odercount_date(Menge zur Aufnahme: permanente Inventur oder Abschluss vor dem Stichtag). - stocktakeItemsMax → const int
-
Positionen je Inventur (
too_many_positions; groessere Bestaende in mehreren Inventuren nacheinander). -
stocktakeNotBookedReasons
→ const List<
String> -
Warum eine Position nicht oder nicht ganz gebucht wurde (
notBooked.code, KatalogINVENTUR_NICHT_GEBUCHT). Dazu kommen Codes, die schon englisch sind (serial_not_in_stock,serial_already_exists,article_not_found); das Modell laesst darum jeden Text stehen. - stocktakeRecountItemsMax → const int
-
Positionen je
recountStocktake. -
stocktakeScopeTypes
→ const List<
String> -
Umfang einer Inventur (Katalog
INVENTUR_UMFANG): alle bestandsgefuehrten Artikel des Standorts, Artikelgruppen oder genannte Artikel. -
stocktakeSources
→ const List<
String> -
Woher eine Zaehlung bzw. Inventur kam (Katalog
INVENTUR_QUELLE). -
stocktakeStatuses
→ const List<
String> -
Stand einer Inventur (Katalog
INVENTUR_STATUS). Gezaehlt wird incounting;reviewrechnet Soll und Differenz (erst ab hier sichtbar, blind);closingbucht den Abschluss in Teilen;closedundcancelledsind endgueltig.creatingsteht nur, solange eine grosse Anlage ihre Positionen schreibt. -
stocktakeTypes
→ const List<
String> -
Art einer Inventur (Katalog
INVENTUR_ART):key_datezu einem Stichtag (keyDate),perpetual(permanente Inventur, ohne Stichtag). - variantAttributesMax → const int
-
Merkmale je Gruppe (Schluessel
^[a-z0-9_]{1,32}$, eindeutig;__…__ist reserviert). - variantGroupActiveMax → const int
-
Aktive Varianten je Gruppe (
variant_limit). - variantMatrixMax → const int
-
Kombinationen bei
createMatrix: trueund hoechstens so viele Eintraege invariantsje Anfrage. - variantValuesMax → const int
- Werte je Merkmal (je 1–30 Zeichen, eindeutig ohne Gross/Klein).
- webhookDeliveryHeader → const String
- Der Kopf mit der Zustell-Kennung; bei Wiederholungen dieselbe.
-
webhookDeliveryStatuses
→ const List<
String> -
Stand einer Zustellung (Katalog
ZUSTELLUNG, derselbe wie bei Partner-Webhooks).dropped: der Webhook wurde vor der Faelligkeit deaktiviert oder geloescht. - webhookEventHeader → const String
-
Der Kopf mit dem Ereignisnamen (dasselbe wie
typeim Rumpf). - webhookSignatureHeader → const String
- Der Kopf, in dem die Signatur steht.
- webhookToleranceSec → const int
- Erlaubte Abweichung des Zeitstempels in Sekunden, in beide Richtungen.
-
withdrawalTypes
→ const List<
String> -
Art einer Entnahme (
withdrawalType, KatalogLAGER_ENTNAHME_ART); Pflicht beireason: 'withdrawal', sonst nicht erlaubt.
Functions
-
inventoryBusyStocktakeId(
Object? error) → String? -
Die Inventur, die einen Standort belegt (
stocktake_location_busy,details['stocktakeId']): weiterzaehlen statt neu anlegen.null, wenn der Fehler ein anderer ist oder der Server keine Kennung nennt. -
inventoryErrorCode(
Object? error) → String? -
Der Fehlercode eines geworfenen Fehlers;
null, wenn es keiner der Lager-API ist. -
inventoryFieldErrors(
Object? error) → List< ({String field, String message})> -
Die Feldfehler einer
validation-Antwort; leer, wenn es keine sind. -
inventoryRetryAfterSec(
Object? error) → int? -
Wie lange
rate_limitednoch gilt, in Sekunden (data.retryAfterSec, dasselbe wie die KopfzeileRetry-After).null, wenn der Fehler keinrate_limitedist oder der Server keine Angabe macht. Die Grenze gilt je Konto (etwa 20 Anfragen je Sekunde, kurze Spitzen bis 40). -
inventoryShortfalls(
Object? error) → List< InventoryShortfall> -
Die Positionen, fuer die beim Reservieren der verfuegbare Bestand nicht
reicht (
insufficient_available,details['details']): je Artikel und Standort angefragt und verfuegbar, in Tausendstel. Leer, wenn der Fehler ein anderer ist. Es fehlen nur diese Positionen; reserviert wurde nichts (ganz oder gar nicht). -
isInventoryError(
Object? error, [String? code]) → bool -
Kurzform fuer
on Object catch (e) { if (isInventoryError(e, 'article_not_found')) … }; ohnecodejeder Code der Lager-API. -
isInventoryErrorCode(
String? code) → bool - Ein Code, den ein Lager-Aufruf liefern kann?
-
isInventoryWarningCode(
String? code) → bool -
truefuer einen Hinweis-Code einer Buchung (StockOperation.warnings[].code). Hinweise sind nie Fehler: die Buchung hat gewirkt. -
isOutcomeUnknown(
Object? error) → bool -
Ist der Ausgang dieses Fehlers unklar? Dann den Aufruf nicht blind
wiederholen: Belege, Stornos und Zahlungen nachlesen; einen Aufruf mit
idempotencyKeynur mit demselben Schluessel erneut senden; ohne Schluessel erst nachlesen (siehe ErrorOutcome). Gilt fuer jede Fehlerart; nur KasseneckApiError und KasseneckHttpError koennen unklar sein. -
parseInventoryWebhookEvent(
Object? rawBody) → InventoryWebhookEvent? - Liest eine Zustellung als typisiertes Ereignis. Vorher die Signatur pruefen (verifyInventoryWebhookSignature).
-
verifyInventoryWebhookSignature(
Object? secret, String? header, Object? rawBody, {int toleranceSec = webhookToleranceSec, DateTime? now}) → bool -
Prueft die Signatur einer Zustellung.
truenur, wenn Kopf, Zeitfenster und HMAC stimmen; jede schlechte Eingabe und jede Ausnahme istfalse, nie ein Wurf.
Exceptions / Errors
- KasseneckApiError
- Fachlicher Fehler des Backends (PIN falsch, Kasse belegt, Geraet gesperrt …).
- KasseneckHttpError
-
Die Antwort war keine brauchbare Huelle
{status, data}oder der HTTP-Weg scheiterte. Traegt bewusst nichts aus dem Rumpf: dort koennten Werte stehen, die wir gerade nicht ins Protokoll lassen wollen. - KasseneckValidationError
- Der Aufrufer hat etwas nicht mitgegeben, oder die Antwort trug nicht, was der Aufruf zusagt. Die Meldung nennt immer nur das Feld, nie seinen Wert — sonst stuende ein Geraetegeheimnis im Protokoll.