Import zboží ze souboru XLSX
/api/v2/import/productsNačte tabulku XLSX, která už je na serveru, a zpracuje z ní zboží firmy. Pro každý řádek (hlavičku na prvním řádku přeskočí) vezme kód produktu ze sloupce A a hledá nesmazaný produkt firmy se stejným kódem. Existující produkt upraví, jinak založí nový. Poté srovná jeho kategorie, sklady, ingredience a ceníky podle řádku.
Odkud se bere soubor
Operace nepřijímá soubor v těle požadavku. Pracuje se souborem, který už je na serveru, a najde ho podle dvojice file a table v rámci vaší firmy:
table=imports: soubor dříve nahraný k importu, například v aplikaci na obrazovce Import / Export.table=exports: soubor vytvořený exportem zboží.
Co se v souboru čte
Čte se první (aktivní) list, sloupce A až AJ ve stejném pořadí, v jakém je vytváří export zboží; význam sloupců a hodnot popisuje návod Import / Export. Nejjednodušší cesta je vyexportovat zboží, v souboru upravit řádky a nahrát ho zpět.
Řádek se zpracuje, jen když jsou vyplněné sloupce A (Kod), C (Nazev), F (Merna jednotka), G (Mena nakupni ceny), H (DPH), I (s DPH? u nákupní ceny), L (Primarni DPH), M (s DPH? u prodejní ceny), Q (Skladove), T (Hlidani min a max), Y (Zadavat mnozstvi), Z (Hlasit do kuchyne), AA (Respektovat sklad), AB (Samostatne prodejne) a AC (Vytezovani).
- Kód produktu se z hodnoty ve sloupci A upraví: odstraní se diakritika, písmena se převedou na velká a mezery,
/a-se nahradí podtržítkem. Podle takto upraveného kódu se produkt hledá. - Ceny: když je v sloupci I (resp. M)
0, bere se cena bez DPH ze sloupce J (resp. N) a cena s DPH se dopočítá. Jinak se bere cena s DPH ze sloupce K (resp. O) a cena bez DPH se dopočítá. Výsledek se zaokrouhlí na dvě desetinná místa. - Kódy jednotky, měny a DPH se hledají v nastavení firmy. U existujícího produktu se nenalezená hodnota nezmění.
- Kategorie, sklady, ingredience a ceníky (sloupce P, R až S, AD až AE, AH až AI) se srovnají podle řádku: co v řádku chybí, se od produktu odpojí (
DETACHING), co přibylo, se přiřadí (ASSIGNING), změněné počty a ceny se přepíšou (UPDATING). Počty a ceny jsou čísla oddělená čárkou ve stejném pořadí jako kódy. Rozdílný počet kódů a čísel je chyba řádku.
Odpověď
Úspěšné zpracování je HTTP 200 s Content-Type: text/html; charset=UTF-8. Tělo není JSON, ale text, kde každý řádek končí <br />. Zprávy začínají INFO: (provedená změna), WARNING: (upozornění, například náhrada sekundárního DPH primárním) nebo ERROR: (problém na řádku, například ERROR: INVALID ROW (4) - ( ... ), ERROR: CATEGORY NOT FOUND, ERROR: STOCK NOT FOUND ..., ERROR: count(STOCKS) != count(COUNTS)). Když se nezpracoval žádný řádek, tělo je No rows processed.
Chybný řádek zpracování nezastaví a odpověď má i tak HTTP 200, proto čtěte tělo. Řádky se ukládají postupně, dříve zpracované řádky zůstanou uložené i při chybě v pozdějším řádku. Selhání před zpracováním (neplatné parametry, soubor nenalezen nebo nečitelný) vrací HTTP 400 nebo 404 s Content-Type: text/plain; charset=UTF-8 a textem začínajícím ERROR:. Chyby přihlášení vrací JSON se status a message. Viz Chybové stavy.
Autentizace a oprávnění
Vyžaduje API token: Bearer v hlavičce nebo URL token.
Parametry
Query parametry
| Název | Typ | Povinný | Popis | Příklad |
|---|---|---|---|---|
file | integer | ano | ID souboru, který je už na serveru, ze skupiny určené parametrem `table`. Soubor musí patřit vaší firmě. | 12 |
table | enum | ano | Odkud je soubor. `imports` = soubor nahraný k importu, `exports` = soubor vytvořený exportem. Jiná hodnota je chyba. | imports |
Příklad požadavku
curl
curl -X POST 'https://www.elpokladny.cz/api/v2/import/products?file=12&table=imports' \
-H 'Authorization: Bearer elp_live_example.example_secret'PHP
<?php
$ch = curl_init('https://www.elpokladny.cz/api/v2/import/products?file=12&table=imports');
curl_setopt_array($ch, [
CURLOPT_CUSTOMREQUEST => 'POST',
CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => array (
0 => 'Authorization: Bearer elp_live_example.example_secret',
),
]);
$response = curl_exec($ch);
curl_close($ch);
echo $response;javascript
const response = await fetch("https://www.elpokladny.cz/api/v2/import/products?file=12&table=imports", {
"method": "POST",
"headers": {
"Authorization": "Bearer elp_live_example.example_secret"
}
});
const data = await response.json();Ukázkové odpovědi
Zpráva o zpracování řádků (HTTP 200)
text/html; charset=UTF-8
WARNING: SECONDARY VAT () NOT FOUND - REPLACED BYPRIMARY VAT<br />INFO: INSERTED: (PRODUCT ID: 105 / CODE: KAVA / NAME: Káva<br />INFO: ASSIGNING CATEGORY "NAPOJE" TO PRODUCT<br />INFO: UPDATED: (PRODUCT ID: 77 / CODE: CAJ / NAME: Čaj<br />INFO: DETACHING CATEGORY "AKCE" FROM PRODUCT<br />ERROR: INVALID ROW (4) - ( A - Kod, C - Nazev )<br />
Soubor nenalezen (HTTP 404)
text/plain; charset=UTF-8
ERROR: file not found
Neplatné parametry (HTTP 400)
text/plain; charset=UTF-8
ERROR: invalid parameters
Chybí platné přihlášení (HTTP 401)
application/json
{
"status": "error",
"message": "Unauthorized"
}
Možné chyby
| HTTP | Kdy | Podoba |
|---|---|---|
| 400 | Chybí `file` nebo `table`, `file` není kladné číslo, nebo `table` není `imports` ani `exports`. Tělo je `ERROR: invalid parameters`. | text |
| 400 | Soubor nejde přečíst jako tabulka. Tělo je `ERROR: cannot read spreadsheet`. | text |
| 404 | Soubor s tímto ID ve vaší firmě neexistuje (`ERROR: file not found`), nebo už není na serveru (`ERROR: file does not exist on disk`). | text |
| 401 | Chybí API token. Odpověď má hlavičku WWW-Authenticate: Bearer. | status-message |
| 401 | Neplatný, odvolaný nebo expirovaný API token (Bearer, api_token). Odpověď nemá hlavičku WWW-Authenticate. | status-message |
| 403 | API token se použil z IP adresy, která není u přístupu povolená. | status-message |