import type { InternerTransport } from '../client/aufrufe.js'; /** * Lager an der Kasse (Lager-Kern Stufe 2, Backend lager-endpoints.js): * Standorte, Bestand und der Standort der Kasse. Alle drei Aufrufe gibt es * nur ueber den Kassenweg `/api/v3` (registerInternal); Rechte am Server: * `stockView` (lesen), `stockCosts` (Werte), `stockLocation` (Standort setzen). * * **Ganzzahlen:** Mengen sind Tausendstel der Basiseinheit (`1000` = 1 Stueck, * `250` = 0,250 kg), Werte ganze Cent bzw. Mikro-Euro. Nichts wird geteilt, * gerundet oder geklemmt -- ein negativer Bestand (mehr verkauft als gebucht) * ist eine Aussage des Servers und bleibt negativ. Eine Zahl, die keine * Ganzzahl ist, oder eine fehlende Menge wird **nie** zu `0`: der Aufruf * endet mit `KasseneckValidationError` (`scope: 'response'`), denn „kein * Bestand“ und „Antwort kaputt“ sind verschiedene Aussagen. */ /** Standort-Typen (Katalog `STANDORT_TYP`), englisch wie am Draht. */ export declare const STOCK_LOCATION_TYPES: readonly ["warehouse", "store", "vehicle", "other"]; export type StockLocationType = (typeof STOCK_LOCATION_TYPES)[number]; export interface StockLocationAddress { street: string | null; zip: string | null; city: string | null; country: string | null; } export interface StockLocation { id: string; name: string; /** `null`: ein Typ, den dieses Paket nicht kennt. */ type: StockLocationType | null; /** Fahrzeuge haben keine Adresse. */ address: StockLocationAddress | null; /** Kennzeichen, nur bei `vehicle`. */ licensePlate: string | null; /** `false` = aufgeloest; als Standort der Kasse abgewiesen (`location_inactive`). */ active: boolean; /** `true` = Hauptstandort, den der Server ohne eigenes Dokument ergaenzt. */ virtual: boolean; } /** Bestand eines Artikels an einem Standort, in Tausendstel der Basiseinheit. */ export interface StockLevel { articleId: string; locationId: string; sellable: number; defective: number; reserved: number; /** `sellable - reserved`, vom Server gerechnet. */ available: number; } /** Lagerwert eines Artikels -- nur mit dem Recht `stockCosts`. */ export interface StockValue { articleId: string; stockValueCents: number; /** Durchschnittlicher Einstandspreis je Basiseinheit in Mikro-Euro; `null` bei Menge 0. */ averageCostMicros: number | null; } export interface StockList { stock: StockLevel[]; /** * `null`, wenn der Aufrufer das Recht `stockCosts` nicht hat (der Server * laesst das Feld weg); `[]`, wenn er es hat und nichts bewertet ist. Eine * Oberflaeche zeigt bei `null` keinen Wert, nie „0,00 €“. */ values: StockValue[] | null; } export interface ListMyStockOptions { /** Nur dieser Standort; `''` gilt wie nicht angegeben. */ locationId?: string; /** Nur dieser Artikel; `''` gilt wie nicht angegeben. */ articleId?: string; /** Nur Zeilen unter dem Mindestbestand. */ belowMinimum?: boolean; } export interface SetMyCashregisterStockLocationOptions { /** Standort-Kennung; `null` setzt auf den Standard-Standort des Betriebs zurueck. */ stockLocationId: string | null; /** Ohne Angabe gilt die Kasse der Anmeldung (`registerUserAuth`). */ cashregisterId?: string; } export interface CashregisterStockLocation { cashregisterId: string; /** `null` = Standard-Standort des Betriebs. */ stockLocationId: string | null; } /** Standorte des Betriebs, samt aufgeloesten (`active: false`) und dem Hauptstandort. */ export declare function listMyStockLocations(transport: InternerTransport): Promise; /** Bestand je Artikel und Standort; Werte nur mit dem Recht `stockCosts`. */ export declare function listMyStock(transport: InternerTransport, options?: ListMyStockOptions): Promise; /** * Standort der Kasse setzen -- von dort bucht der Server Verkauf und Storno * ab. `stockLocationId: null` setzt zurueck (am Draht der leere Text). * Fehler am Code: `location_not_found`, `location_inactive`, * `cashregister_not_found`, `cashregister_not_assigned`, `not_permitted`, * `module_inactive`. */ export declare function setMyCashregisterStockLocation(transport: InternerTransport, options: SetMyCashregisterStockLocationOptions): Promise;