API pre sériové čísla

Načítanie a rozdeľovanie sériových čísel produktov (serial numbers, položky LOT/šarža)

Základná URL

https://{tenant}.logzi.com/api/stock_serial/

Každá požiadavka vracia odpoveď vo formáte JSON. Pri úspešnej odpovedi je result.code == 1 (HTTP 200), pri chybe alebo ak sa záznam nenájde result.code == 0 (HTTP 203).

Poznámka: Sériové čísla vznikajú automaticky v procese skladového príjmu/výdaja. Cez API ich možno načítať a položky LOT (šarža) rozdeliť; vytváranie nových sériových čísel a ich vymazanie nie je dostupné.

Princíp fungovania

Nastavenie serialnumber_required produktu určuje, ako systém spracúva sériové čísla:

  • 1 – povinné sériové číslo: každý kus je samostatný riadok sériového čísla, quantity je vždy 1.
  • 2 – povinné číslo LOT (šarže): jeden riadok predstavuje viac kusov, quantity je množstvo v LOT.
  • 3 – povinné číslo LOT a doba spotreby: ako LOT, riadok má však aj date_expire (expirácia).

Koncové body na rozdeľovanie (save_separate, save_separate_all) rozdeľujú riadky LOT. Pri rozdelení nové riadky dostanú všetky údaje zdrojového riadka (produkt, sklad, skladová lokalita, paleta, sériové číslo/identifikátor LOT, expirácia, dátum vytvorenia) aj väzby na doklady; celkové množstvo zásob sa nemení.

Rozdelenie je možné len pri riadku, ktorý nie je použitý (used = 0) ani vymazaný (remove = 0).

GET /api/stock_serial/get

Načítanie jedného záznamu sériového čísla podľa identifikátora. Vymazaný záznam (remove = 1) sa nevracia.

Query parametre

Parameter Typ Povinné Popis
id int Jedinečný identifikátor záznamu sériového čísla (db_stock_serial.id)

Polia odpovede (objekt data)

PoleTypPopis
idintIdentifikátor záznamu sériového čísla
product_idintIdentifikátor produktu
store_idintIdentifikátor skladu (prevádzky), v ktorom sa položka nachádza
company_idintIdentifikátor spoločnosti, ku ktorej položka patrí
serial_numberstringSériové číslo alebo identifikátor LOT (šarže), najviac 30 znakov
quantityfloatMnožstvo: pri produkte s povinným sériovým číslom 1, pri produkte LOT počet kusov v LOT
usedint0 = dostupné (nepoužité), 1 = použité
removeintPríznak vymazania, dopyt vracia iba záznamy s hodnotou 0
store_locality_idint | nullIdentifikátor skladovej lokality, ak je položka priradená k lokalite
pallet_idint | nullIdentifikátor palety, ak je položka priradená k palete
date_createdatetimeČas vytvorenia sériového čísla (RRRR-MM-DD HH:MM:SS)
date_expiredatetime | nullDátum spotreby (expirácie), vyplnený iba pri produktoch LOT s povinnou dobou spotreby
chkstringInterný kontrolný identifikátor (32 znakov), v integráciách sa nemá používať

Príklad požiadavky

GET /api/stock_serial/get?id=42
X-API-KEY: {tvoj_api_kluc}

Príklad odpovede

{
  "result": { "code": 1, "message": null },
  "data": {
    "id": 42,
    "product_id": 5,
    "store_id": 1,
    "date_create": "2024-03-15 10:22:00",
    "company_id": 1,
    "serial_number": "LOT-2024-00042",
    "remove": 0,
    "used": 0,
    "chk": "5f4dcc3b5aa765d61d8327deb882cf99",
    "store_locality_id": 7,
    "pallet_id": null,
    "quantity": 50,
    "date_expire": "2026-03-15 00:00:00"
  }
}

Záznam sa nenašiel

HTTP 203
{
  "result": { "code": 0, "message": "Not found" },
  "data": null
}
GET /api/stock_serial/list

Načítanie stránkovaného zoznamu sériových čísel s možnosťami filtrovania. Uvádzajú sa iba nevymazané (remove = 0) záznamy skladových produktov v zostupnom poradí identifikátora.

Query parametre

Parameter Typ Povinné Popis
list_offset int Posun stránkovania, koľko záznamov sa vynechá od začiatku (predvolené: 0). Jedna požiadavka vráti najviac 10 000 záznamov.
list_condition[product_id] int Filtrovanie podľa identifikátora produktu (presná zhoda)
list_condition[used] int Stav použitia: 0 = dostupné, 1 = použité
list_condition[serial_number] string Filtrovanie podľa sériového čísla / identifikátora LOT (presná zhoda)
list_condition[partnumber] string Filtrovanie podľa katalógového čísla produktu (presná zhoda)
list_condition[item_id_used_0] int Sériové čísla dostupné pre položku dokladu: nepoužité riadky (used = 0) a riadky, ktoré sú už viazané na túto položku (item_id)
list_condition[receipt_id] int Sériové čísla viazané na daný doklad. Platí iba spolu s poľom receipt_type_id.
list_condition[receipt_type_id] int Identifikátor typu dokladu. Platí iba spolu s poľom receipt_id.
list_condition[store_locality_id] int Filtrovanie podľa identifikátora skladovej lokality
list_condition[product_name_partnumber] string Filtrovanie podľa názvu alebo katalógového čísla produktu (LIKE, zástupný znak: %)
list_condition[product_name] string Filtrovanie podľa časti názvu produktu
list_condition[product_partnumber_barcode] string Filtrovanie podľa časti katalógového čísla alebo podľa čiarového kódu produktu
list_condition[date_create_from] date Dátum vytvorenia od (vrátane), formát: RRRR-MM-DD
list_condition[date_create_to] date Dátum vytvorenia do (vrátane), formát: RRRR-MM-DD
list_condition[date_expire_from] date Dátum expirácie od (vrátane), formát: RRRR-MM-DD
list_condition[date_expire_to] date Dátum expirácie do (vrátane), formát: RRRR-MM-DD

Polia odpovede (prvky poľa data)

Prvky obsahujú všetky polia koncového bodu get s týmito rozdielmi a doplneniami:

PoleTypPopis
stock_serial_idintIdentifikátor záznamu sériového čísla (zhodný s poľom id)
date_createstringČas vytvorenia, formát: RRRR.MM.DD HH:MM:SS
date_expirestring | nullDátum expirácie, formát: RRRR.MM.DD
product_unit_namestringNázov produktu
partnumberstringKatalógové číslo produktu
store_locality_barcodestring | nullČiarový kód skladovej lokality
pallet_barcodestring | nullČiarový kód palety
store_namestringNázov skladu (prevádzky)

Polia odpovede (objekt params)

PoleTypPopis
list_countintMaximálny počet záznamov vrátených v jednej požiadavke (10 000)
list_offsetintPosun zadaný v požiadavke
list_allintCelkový počet záznamov zodpovedajúcich filtru

Príklad požiadavky

GET /api/stock_serial/list?list_offset=0&list_condition[product_id]=5&list_condition[used]=0
X-API-KEY: {tvoj_api_kluc}

Príklad odpovede

{
  "result": { "code": 1, "message": null },
  "data": [
    {
      "id": 42,
      "stock_serial_id": 42,
      "product_id": 5,
      "store_id": 1,
      "company_id": 1,
      "serial_number": "LOT-2024-00042",
      "quantity": 50,
      "used": 0,
      "remove": 0,
      "chk": "5f4dcc3b5aa765d61d8327deb882cf99",
      "store_locality_id": 7,
      "pallet_id": null,
      "date_create": "2024.03.15 10:22:00",
      "date_expire": "2026.03.15",
      "product_unit_name": "Laptop XYZ",
      "partnumber": "LTP-XYZ-001",
      "store_locality_barcode": "A-01-02",
      "pallet_barcode": null,
      "store_name": "Centrálny sklad"
    }
  ],
  "params": {
    "list_count": 10000,
    "list_offset": 0,
    "list_all": 1
  }
}
POST /api/stock_serial/save_separate

Z riadka sériového čísla LOT (šarža) oddelí zadané množstvo do nového riadka. Množstvo zdrojového riadka sa zníži, nový riadok vznikne s rovnakými údajmi (produkt, sklad, skladová lokalita, paleta, sériové číslo/identifikátor LOT, expirácia) a s oddeleným množstvom.

POST polia - objekt data

PoleTypPovinnéPopis
stock_serial_idintIdentifikátor riadka sériového čísla, ktorý sa má rozdeliť. Riadok nesmie byť vymazaný ani použitý (used = 0).
quantityfloatMnožstvo, ktoré sa má oddeliť. Musí byť väčšie ako nula a menšie ako celkové množstvo riadka.

Polia odpovede (objekt data)

PoleTypPopis
stock_serial_idintIdentifikátor zdrojového riadka
new_stock_serial_idintIdentifikátor novo vytvoreného riadka
quantity_separatedfloatMnožstvo oddelené do nového riadka
quantity_leftfloatMnožstvo, ktoré zostalo v zdrojovom riadku

Chybové hlásenia (result.message)

HlásenieKedy
Not foundPole data chýba alebo je prázdne
ex_stock_serial_separate_itemstock_serial_id chýba, je neplatné, neexistuje alebo je vymazané
ex_stock_serial_separate_usedRiadok je už použitý (used = 1)
ex_stock_serial_separate_qtyquantity nie je číslo, nie je väčšie ako nula alebo nie je menšie ako celkové množstvo
ex_unknown_msgNeznáma chyba pri ukladaní. Pri chybe sa celá operácia vráti späť.

Príklad požiadavky

POST /api/stock_serial/save_separate
X-API-KEY: {tvoj_api_kluc}
Content-Type: application/json

{
  "data": {
    "stock_serial_id": 42,
    "quantity": 20
  }
}

Príklad odpovede

{
  "result": { "code": 1, "message": "success_msg" },
  "data": {
    "stock_serial_id": 42,
    "new_stock_serial_id": 57,
    "quantity_separated": 20,
    "quantity_left": 30
  }
}
POST /api/stock_serial/save_separate_all

Úplne rozdelí riadok sériového čísla LOT (šarža) na jednotlivé kusy: vznikne toľko riadkov po 1 kuse, koľko kusov mal riadok (napr. z riadka s 50 kusmi vznikne 50 riadkov po 1 kuse). Pôvodný riadok zostáva, jeho množstvo sa zníži na 1, ostatné (množstvo - 1) riadky vzniknú nové s rovnakými údajmi.

POST polia - objekt data

PoleTypPovinnéPopis
stock_serial_idintIdentifikátor riadka sériového čísla, ktorý sa má rozdeliť. Riadok nesmie byť vymazaný ani použitý (used = 0), jeho množstvo musí byť kladné celé číslo, najmenej 2 a najviac 25 000.

Polia odpovede (objekt data)

PoleTypPopis
stock_serial_idintIdentifikátor pôvodného riadka (aj on sa stane riadkom s 1 kusom)
quantity_beforefloatMnožstvo pôvodného riadka pred rozdelením
countintPočet riadkov po rozdelení (vrátane pôvodného riadka, zhodný s quantity_before)
stock_serial_idsint[]Identifikátory všetkých riadkov: prvý je pôvodný riadok, potom novo vytvorené riadky vo vzostupnom poradí

Chybové hlásenia (result.message)

HlásenieKedy
Not foundPole data chýba alebo je prázdne
ex_stock_serial_separate_itemstock_serial_id chýba, je neplatné, neexistuje alebo je vymazané
ex_stock_serial_separate_usedRiadok je už použitý (used = 1)
ex_stock_serial_separate_qty_integerMnožstvo riadka nie je kladné celé číslo
ex_stock_serial_separate_singleMnožstvo riadka je 1, nie je čo deliť
ex_stock_serial_separate_max_rowsMnožstvo riadka presahuje 25 000 kusov, ktoré možno rozdeliť naraz (na konci hlásenia je uvedené povolené maximum)
ex_unknown_msgNeznáma chyba pri ukladaní. Pri chybe sa celá operácia vráti späť.
Upozornenie: Operáciu nemožno cez API vrátiť späť (neexistuje koncový bod na opätovné zlúčenie riadkov). Rozdelenie veľkého množstva môže trvať dlhšie.

Príklad požiadavky

POST /api/stock_serial/save_separate_all
X-API-KEY: {tvoj_api_kluc}
Content-Type: application/json

{
  "data": {
    "stock_serial_id": 42
  }
}

Príklad odpovede (rozdelenie riadka s 3 kusmi)

{
  "result": { "code": 1, "message": "success_msg" },
  "data": {
    "stock_serial_id": 42,
    "quantity_before": 3,
    "count": 3,
    "stock_serial_ids": [42, 58, 59]
  }
}

Kontaktuj nás

Zaujíma ťa náš softvér? Pokojne nám napíš!

Potrebuješ pomoc?

Ak nevieš nájsť odpoveď a potrebuješ pomoc

Zaregistruj sa teraz,
zaplať neskôr!

Vyskúšaj 3 dni zadarmo, bez rizika a záväzkov!