URL de bază
https://{tenant}.logzi.com/api/stock_serial/
Fiecare cerere returnează un răspuns JSON. În cazul unui răspuns cu succes result.code == 1 (HTTP 200), în caz de eroare sau când nu se găsește nicio înregistrare result.code == 0 (HTTP 203).
Mod de funcționare
Setarea serialnumber_required a produsului determină modul în care sistemul gestionează numerele de serie:
quantity este întotdeauna 1.quantity este cantitatea din LOT.date_expire (expirare).Punctele finale de separare (save_separate, save_separate_all) împart rândurile LOT. La separare, rândurile noi primesc toate datele rândului sursă (produs, depozit, locație, palet, număr de serie/identificator LOT, expirare, data creării) precum și legăturile cu documentele; cantitatea totală din stoc nu se modifică.
Separarea este posibilă doar pentru un rând neutilizat (used = 0) și neșters (remove = 0).
/api/stock_serial/get
Preluarea unei singure înregistrări de număr de serie pe baza identificatorului. O înregistrare ștearsă (remove = 1) nu este returnată.
Parametri de interogare
| Parametru | Tip | Obligatoriu | Descriere |
|---|---|---|---|
id |
int | Identificatorul unic al înregistrării numărului de serie (db_stock_serial.id) |
Câmpuri de răspuns (obiectul data)
| Câmp | Tip | Descriere |
|---|---|---|
id | int | Identificatorul înregistrării numărului de serie |
product_id | int | Identificatorul produsului |
store_id | int | Identificatorul depozitului (punctului de lucru) în care se află articolul |
company_id | int | Identificatorul companiei căreia îi aparține articolul |
serial_number | string | Numărul de serie sau identificatorul LOT (lot), maximum 30 de caractere |
quantity | float | Cantitate: 1 pentru produsele cu număr de serie, numărul de bucăți din LOT pentru produsele LOT |
used | int | 0 = disponibil (neutilizat), 1 = utilizat |
remove | int | Indicator de ștergere, interogarea returnează doar înregistrările cu valoarea 0 |
store_locality_id | int | null | Identificatorul locației din depozit, dacă articolul este atribuit unei locații |
pallet_id | int | null | Identificatorul paletului, dacă articolul este atribuit unui palet |
date_create | datetime | Momentul creării numărului de serie (AAAA-LL-ZZ HH:MM:SS) |
date_expire | datetime | null | Data de valabilitate (expirare), completată doar pentru produsele LOT cu termen de valabilitate obligatoriu |
chk | string | Identificator intern de control (32 de caractere), nu se utilizează în integrări |
Exemplu de cerere
GET /api/stock_serial/get?id=42
X-API-KEY: {cheia_ta_api}
Exemplu de răspuns
{
"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"
}
}
Înregistrare negăsită
HTTP 203
{
"result": { "code": 0, "message": "Not found" },
"data": null
}
/api/stock_serial/list
Preluarea listei paginate a numerelor de serie, cu opțiuni de filtrare. Sunt listate doar înregistrările neșterse (remove = 0) ale produselor de stoc, în ordinea descrescătoare a identificatorului.
Parametri de interogare
| Parametru | Tip | Obligatoriu | Descriere |
|---|---|---|---|
list_offset |
int | Deplasarea paginării, câte înregistrări se omit de la început (implicit: 0). O cerere returnează cel mult 10.000 de înregistrări. | |
list_condition[product_id] |
int | Filtrare după identificatorul produsului (potrivire exactă) | |
list_condition[used] |
int | Starea de utilizare: 0 = disponibil, 1 = utilizat | |
list_condition[serial_number] |
string | Filtrare după numărul de serie / identificatorul LOT (potrivire exactă) | |
list_condition[partnumber] |
string | Filtrare după codul articolului produsului (potrivire exactă) | |
list_condition[item_id_used_0] |
int | Numere de serie disponibile pentru un articol de document: rândurile neutilizate (used = 0) și rândurile deja legate de acest articol (item_id) |
|
list_condition[receipt_id] |
int | Numerele de serie legate de documentul dat. Valabil doar împreună cu câmpul receipt_type_id. |
|
list_condition[receipt_type_id] |
int | Identificatorul tipului de document. Valabil doar împreună cu câmpul receipt_id. |
|
list_condition[store_locality_id] |
int | Filtrare după identificatorul locației din depozit | |
list_condition[product_name_partnumber] |
string | Filtrare după denumirea sau codul articolului produsului (LIKE, caracter generic: %) |
|
list_condition[product_name] |
string | Filtrare după o parte din denumirea produsului | |
list_condition[product_partnumber_barcode] |
string | Filtrare după o parte din codul articolului sau după codul de bare al produsului | |
list_condition[date_create_from] |
date | Data creării de la (inclusiv), format: AAAA-LL-ZZ |
|
list_condition[date_create_to] |
date | Data creării până la (inclusiv), format: AAAA-LL-ZZ |
|
list_condition[date_expire_from] |
date | Data de expirare de la (inclusiv), format: AAAA-LL-ZZ |
|
list_condition[date_expire_to] |
date | Data de expirare până la (inclusiv), format: AAAA-LL-ZZ |
Câmpuri de răspuns (elementele tabloului data)
Elementele conțin toate câmpurile punctului final get, cu următoarele diferențe și completări:
| Câmp | Tip | Descriere |
|---|---|---|
stock_serial_id | int | Identificatorul înregistrării numărului de serie (identic cu câmpul id) |
date_create | string | Momentul creării, format: AAAA.LL.ZZ HH:MM:SS |
date_expire | string | null | Data de expirare, format: AAAA.LL.ZZ |
product_unit_name | string | Denumirea produsului |
partnumber | string | Codul articolului produsului |
store_locality_barcode | string | null | Codul de bare al locației din depozit |
pallet_barcode | string | null | Codul de bare al paletului |
store_name | string | Denumirea depozitului (punctului de lucru) |
Câmpuri de răspuns (obiectul params)
| Câmp | Tip | Descriere |
|---|---|---|
list_count | int | Numărul maxim de înregistrări returnate într-o cerere (10.000) |
list_offset | int | Deplasarea indicată în cerere |
list_all | int | Numărul total de înregistrări care corespund filtrului |
Exemplu de cerere
GET /api/stock_serial/list?list_offset=0&list_condition[product_id]=5&list_condition[used]=0
X-API-KEY: {cheia_ta_api}
Exemplu de răspuns
{
"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": "Depozit central"
}
],
"params": {
"list_count": 10000,
"list_offset": 0,
"list_all": 1
}
}
/api/stock_serial/save_separate
Separă într-un rând nou cantitatea indicată dintr-un rând de număr de serie LOT (lot). Cantitatea rândului sursă scade, rândul nou este creat cu aceleași date (produs, depozit, locație, palet, număr de serie/identificator LOT, expirare) și cu cantitatea separată.
Câmpuri POST - obiectul data
| Câmp | Tip | Obligatoriu | Descriere |
|---|---|---|---|
stock_serial_id | int | Identificatorul rândului de număr de serie care trebuie separat. Rândul nu poate fi șters și nu poate fi utilizat (used = 0). | |
quantity | float | Cantitatea de separat. Trebuie să fie mai mare decât zero și mai mică decât cantitatea totală a rândului. |
Câmpuri de răspuns (obiectul data)
| Câmp | Tip | Descriere |
|---|---|---|
stock_serial_id | int | Identificatorul rândului sursă |
new_stock_serial_id | int | Identificatorul rândului nou creat |
quantity_separated | float | Cantitatea separată în rândul nou |
quantity_left | float | Cantitatea rămasă în rândul sursă |
Mesaje de eroare (result.message)
| Mesaj | Când |
|---|---|
Not found | Câmpul data lipsește sau este gol |
ex_stock_serial_separate_item | stock_serial_id lipsește, este invalid, nu există sau este șters |
ex_stock_serial_separate_used | Rândul este deja utilizat (used = 1) |
ex_stock_serial_separate_qty | quantity nu este un număr, nu este mai mare decât zero sau nu este mai mică decât cantitatea totală |
ex_unknown_msg | Eroare necunoscută în timpul salvării. În caz de eroare, întreaga operațiune este anulată. |
Exemplu de cerere
POST /api/stock_serial/save_separate
X-API-KEY: {cheia_ta_api}
Content-Type: application/json
{
"data": {
"stock_serial_id": 42,
"quantity": 20
}
}
Exemplu de răspuns
{
"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
Împarte complet un rând de număr de serie LOT (lot) în bucăți individuale: se creează tot atâtea rânduri de câte 1 bucată câte bucăți avea rândul (de ex. dintr-un rând de 50 de bucăți rezultă 50 de rânduri de câte 1 bucată). Rândul original rămâne, cantitatea lui scade la 1, celelalte (cantitate - 1) rânduri sunt create nou cu aceleași date.
Câmpuri POST - obiectul data
| Câmp | Tip | Obligatoriu | Descriere |
|---|---|---|---|
stock_serial_id | int | Identificatorul rândului de număr de serie care trebuie împărțit. Rândul nu poate fi șters și nu poate fi utilizat (used = 0), cantitatea lui trebuie să fie un număr întreg pozitiv, cel puțin 2 și cel mult 25.000. |
Câmpuri de răspuns (obiectul data)
| Câmp | Tip | Descriere |
|---|---|---|
stock_serial_id | int | Identificatorul rândului original (devine și el rând de 1 bucată) |
quantity_before | float | Cantitatea rândului original înainte de împărțire |
count | int | Numărul de rânduri după împărțire (inclusiv rândul original, egal cu quantity_before) |
stock_serial_ids | int[] | Identificatorii tuturor rândurilor: primul este rândul original, apoi rândurile nou create în ordine crescătoare |
Mesaje de eroare (result.message)
| Mesaj | Când |
|---|---|
Not found | Câmpul data lipsește sau este gol |
ex_stock_serial_separate_item | stock_serial_id lipsește, este invalid, nu există sau este șters |
ex_stock_serial_separate_used | Rândul este deja utilizat (used = 1) |
ex_stock_serial_separate_qty_integer | Cantitatea rândului nu este un număr întreg pozitiv |
ex_stock_serial_separate_single | Cantitatea rândului este 1, nu există nimic de împărțit |
ex_stock_serial_separate_max_rows | Cantitatea rândului depășește cele 25.000 de bucăți care pot fi împărțite simultan (la sfârșitul mesajului apare maximul permis) |
ex_unknown_msg | Eroare necunoscută în timpul salvării. În caz de eroare, întreaga operațiune este anulată. |
Exemplu de cerere
POST /api/stock_serial/save_separate_all
X-API-KEY: {cheia_ta_api}
Content-Type: application/json
{
"data": {
"stock_serial_id": 42
}
}
Exemplu de răspuns (împărțirea unui rând de 3 bucăți)
{
"result": { "code": 1, "message": "success_msg" },
"data": {
"stock_serial_id": 42,
"quantity_before": 3,
"count": 3,
"stock_serial_ids": [42, 58, 59]
}
}
Ești interesat de software-ul nostru? Scrie-ne cu încredere!
Dacă nu găsești răspunsul și ai nevoie de asistență
Creează-ți contul acum,
plătește mai târziu!