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).
Princíp fungovania
Nastavenie serialnumber_required produktu určuje, ako systém spracúva sériové čísla:
quantity je vždy 1.quantity je množstvo v LOT.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).
/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)
| Pole | Typ | Popis |
|---|---|---|
id | int | Identifikátor záznamu sériového čísla |
product_id | int | Identifikátor produktu |
store_id | int | Identifikátor skladu (prevádzky), v ktorom sa položka nachádza |
company_id | int | Identifikátor spoločnosti, ku ktorej položka patrí |
serial_number | string | Sériové číslo alebo identifikátor LOT (šarže), najviac 30 znakov |
quantity | float | Množstvo: pri produkte s povinným sériovým číslom 1, pri produkte LOT počet kusov v LOT |
used | int | 0 = dostupné (nepoužité), 1 = použité |
remove | int | Príznak vymazania, dopyt vracia iba záznamy s hodnotou 0 |
store_locality_id | int | null | Identifikátor skladovej lokality, ak je položka priradená k lokalite |
pallet_id | int | null | Identifikátor palety, ak je položka priradená k palete |
date_create | datetime | Čas vytvorenia sériového čísla (RRRR-MM-DD HH:MM:SS) |
date_expire | datetime | null | Dátum spotreby (expirácie), vyplnený iba pri produktoch LOT s povinnou dobou spotreby |
chk | string | Interný 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
}
/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:
| Pole | Typ | Popis |
|---|---|---|
stock_serial_id | int | Identifikátor záznamu sériového čísla (zhodný s poľom id) |
date_create | string | Čas vytvorenia, formát: RRRR.MM.DD HH:MM:SS |
date_expire | string | null | Dátum expirácie, formát: RRRR.MM.DD |
product_unit_name | string | Názov produktu |
partnumber | string | Katalógové číslo produktu |
store_locality_barcode | string | null | Čiarový kód skladovej lokality |
pallet_barcode | string | null | Čiarový kód palety |
store_name | string | Názov skladu (prevádzky) |
Polia odpovede (objekt params)
| Pole | Typ | Popis |
|---|---|---|
list_count | int | Maximálny počet záznamov vrátených v jednej požiadavke (10 000) |
list_offset | int | Posun zadaný v požiadavke |
list_all | int | Celkový 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
}
}
/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
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
stock_serial_id | int | Identifikátor riadka sériového čísla, ktorý sa má rozdeliť. Riadok nesmie byť vymazaný ani použitý (used = 0). | |
quantity | float | Množstvo, ktoré sa má oddeliť. Musí byť väčšie ako nula a menšie ako celkové množstvo riadka. |
Polia odpovede (objekt data)
| Pole | Typ | Popis |
|---|---|---|
stock_serial_id | int | Identifikátor zdrojového riadka |
new_stock_serial_id | int | Identifikátor novo vytvoreného riadka |
quantity_separated | float | Množstvo oddelené do nového riadka |
quantity_left | float | Množstvo, ktoré zostalo v zdrojovom riadku |
Chybové hlásenia (result.message)
| Hlásenie | Kedy |
|---|---|
Not found | Pole data chýba alebo je prázdne |
ex_stock_serial_separate_item | stock_serial_id chýba, je neplatné, neexistuje alebo je vymazané |
ex_stock_serial_separate_used | Riadok je už použitý (used = 1) |
ex_stock_serial_separate_qty | quantity nie je číslo, nie je väčšie ako nula alebo nie je menšie ako celkové množstvo |
ex_unknown_msg | Nezná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
}
}
/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
| Pole | Typ | Povinné | Popis |
|---|---|---|---|
stock_serial_id | int | Identifiká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)
| Pole | Typ | Popis |
|---|---|---|
stock_serial_id | int | Identifikátor pôvodného riadka (aj on sa stane riadkom s 1 kusom) |
quantity_before | float | Množstvo pôvodného riadka pred rozdelením |
count | int | Počet riadkov po rozdelení (vrátane pôvodného riadka, zhodný s quantity_before) |
stock_serial_ids | int[] | Identifikátory všetkých riadkov: prvý je pôvodný riadok, potom novo vytvorené riadky vo vzostupnom poradí |
Chybové hlásenia (result.message)
| Hlásenie | Kedy |
|---|---|
Not found | Pole data chýba alebo je prázdne |
ex_stock_serial_separate_item | stock_serial_id chýba, je neplatné, neexistuje alebo je vymazané |
ex_stock_serial_separate_used | Riadok je už použitý (used = 1) |
ex_stock_serial_separate_qty_integer | Množstvo riadka nie je kladné celé číslo |
ex_stock_serial_separate_single | Množstvo riadka je 1, nie je čo deliť |
ex_stock_serial_separate_max_rows | Množstvo riadka presahuje 25 000 kusov, ktoré možno rozdeliť naraz (na konci hlásenia je uvedené povolené maximum) |
ex_unknown_msg | Neznáma chyba pri ukladaní. Pri chybe sa celá operácia vráti späť. |
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]
}
}
Zaregistruj sa teraz,
zaplať neskôr!