Popis formátu 2HCS 3.0 pro import zakázek z eshopů
Trynx ERP - Import zakázek z e-shopu (2HCS 3.0)
Dokumentace pro implementaci API endpointu na straně e-shopu, ze kterého Trynx ERP stahuje objednávky.
Princip fungování
- Trynx volá e-shop — periodicky nebo na pokyn uživatele stáhne XML se seznamem nových objednávek
- Import dat — Trynx zpracuje XML, vytvoří zakázky, partnery a položky ceníku
- Potvrzení — po úspěšném importu Trynx volá potvrzovací endpoint, aby e-shop označil objednávky jako odeslané
Autentizace
Trynx se autentizuje tokenem v URL. Token je nakonfigurován v nastavení e-shopu v Trynx.
Formát URL:
GET {base_url}/{token}{import_script}
Příklad:
GET https://eshop.example.com/a1b2c3d4e5/api/orders/new
base_url=https://eshop.example.comtoken=a1b2c3d4e5import_script=/api/orders/new
Endpoint pro stažení objednávek
Request
GET {base_url}/{token}{import_script}
Response
- Content-Type:
application/xmlnebotext/xml - Encoding: UTF-8
- Kořenový element:
<zakazky>
Endpoint musí vracet pouze nové, dosud neodeslané objednávky. Po potvrzení (viz níže) by je již neměl vracet.
XML formát objednávek
Minimální příklad
<?xml version="1.0" encoding="UTF-8"?>
<zakazky>
<zakazka>
<cis_obj>OBJ-2026-001</cis_obj>
<dat_vyt>2026-03-29</dat_vyt>
<cas_vyt>14:30:00</cas_vyt>
<z_pcena>1000.00</z_pcena>
<z_pcenas>1210.00</z_pcenas>
<mena>CZK</mena>
<platba>Dobírka</platba>
<preprava>PPL</preprava>
<nazev>Jan Novák</nazev>
<ulice>Hlavní 123</ulice>
<psc>11000</psc>
<mesto>Praha</mesto>
<stat>CZ</stat>
<email>jan@novak.cz</email>
<telefon>+420123456789</telefon>
<tbl_zakobs>
<tbl_zakob>
<ident_ci>PROD-001</ident_ci>
<nazev>Widget A</nazev>
<pocet_mj>2</pocet_mj>
<pcena_mj>500.00</pcena_mj>
<pscena_mj>605.00</pscena_mj>
<sazba>21</sazba>
</tbl_zakob>
</tbl_zakobs>
</zakazka>
</zakazky>
Prázdná odpověď (žádné nové objednávky)
<?xml version="1.0" encoding="UTF-8"?>
<zakazky>
</zakazky>
Kompletní struktura
Hlavička objednávky <zakazka>
| Element | Typ | Povinný | Popis |
|---|---|---|---|
<cis_obj> |
string | Ano* | Číslo objednávky (primární identifikátor) |
<cis_zak> |
string | Ne | Alternativní číslo zakázky (fallback pokud chybí cis_obj) |
<cis_zint> |
string | Ne | Interní číslo (fallback pokud chybí cis_obj i cis_zak) |
<dat_vyt> |
date | Ano | Datum vytvoření objednávky, formát YYYY-MM-DD |
<cas_vyt> |
time | Ne | Čas vytvoření, formát HH:MM:SS |
<z_pcena> |
decimal | Ano | Celková cena bez DPH |
<z_pcenas> |
decimal | Ano | Celková cena s DPH |
<zakl_txt3> |
string | Ne | Poznámka / popis objednávky |
<mena> |
string | Ano | Kód měny (CZK, EUR, USD apod.) |
<platba> |
string | Ne | Název způsobu platby (např. "Dobírka", "Převodem") |
<platba_id> |
string | Ne | Externí ID platební metody (pro přesné párování) |
<preprava> |
string | Ne | Název způsobu dopravy (např. "PPL", "Česká pošta") |
<preprava_id> |
string | Ne | Externí ID dopravce (pro přesné párování) |
* Alespoň jedno z cis_obj, cis_zak, cis_zint musí být vyplněno.
Fakturační adresa (v rámci <zakazka>)
| Element | Typ | Povinný | Popis |
|---|---|---|---|
<nazev> |
string | Ano | Jméno osoby nebo název firmy |
<nazev2> |
string | Ne | Název firmy (pokud vyplněno, nazev se bere jako jméno kontaktní osoby) |
<ulice> |
string | Ano | Ulice a číslo popisné |
<psc> |
string | Ano | PSČ |
<mesto> |
string | Ano | Město |
<stat> |
string | Ano | Kód státu (CZ, SK, DE, AT apod.) nebo název státu |
<ico> |
string | Ne | IČO firmy (použito pro vyhledání existujícího partnera) |
<dic> |
string | Ne | DIČ firmy |
<email> |
string | Ne | E-mailová adresa |
<telefon> |
string | Ne | Telefon |
<osoba> |
string | Ne | Jméno kontaktní osoby |
<ref_num> |
string | Ne | Referenční číslo / kód pobočky |
Doručovací adresa (v rámci <zakazka>, pokud se liší od fakturační)
| Element | Typ | Povinný | Popis |
|---|---|---|---|
<k_nazev> |
string | Ne | Jméno příjemce |
<k_nazev2> |
string | Ne | Název firmy příjemce |
<k_ulice> |
string | Ne | Ulice doručení |
<k_psc> |
string | Ne | PSČ doručení |
<k_mesto> |
string | Ne | Město doručení |
Položky objednávky <tbl_zakobs> → <tbl_zakob>
| Element | Typ | Povinný | Popis |
|---|---|---|---|
<ident_ci> |
string | Ano | SKU / katalogové číslo produktu |
<nazev> |
string | Ano | Název produktu |
<pocet_mj> |
decimal | Ano | Množství |
<pcena_mj> |
decimal | Ano | Jednotková cena bez DPH |
<pscena_mj> |
decimal | Ano | Jednotková cena s DPH |
<sazba> |
integer | Ano | Sazba DPH v procentech (0, 12, 21) |
Endpoint pro potvrzení importu
Po úspěšném importu Trynx volá potvrzovací endpoint pro každou importovanou objednávku. E-shop by měl objednávku po potvrzení označit jako odeslanou, aby ji příště nevracel.
Request
GET {base_url}/{token}{confirm_script}
V confirm_script se placeholder id_val nahrazuje číslem objednávky (cis_obj).
Příklad konfigurace:
confirm_script = /api/orders/confirm?order_id=id_val
Výsledné volání pro objednávku OBJ-2026-001:
GET https://eshop.example.com/a1b2c3d4e5/api/orders/confirm?order_id=OBJ-2026-001
Očekávaná odpověď
Trynx nevaliduje odpověď potvrzovacího endpointu. Doporučujeme vracet HTTP 200 s libovolným tělem.
Pravidla zpracování dat
Identifikace zákazníka
Trynx hledá existujícího partnera v adresáři podle:
- IČO (
<ico>) — pokud je vyplněno, hledá přesnou shodu - Název firmy (
<nazev2>nebo<nazev>) — pokud IČO chybí
Pokud partner neexistuje, automaticky se vytvoří nový záznam v adresáři.
Párování platební a dopravní metody
Pro přesné párování platebních a dopravních metod použijte <platba_id> a <preprava_id>. Tyto hodnoty se párují s polem external_id v konfiguraci Trynx.
Priorita párování:
external_id(pokud je<platba_id>/<preprava_id>vyplněno)- Název (
<platba>/<preprava>) - Výchozí hodnota ze systémového nastavení
Měna
Element <mena> se páruje s kódem nebo názvem měny v Trynx (tabulka cl_currencies, pole currency_name nebo currency_code). Pokud měna neexistuje, použije se výchozí měna firmy.
Ceník
Produkty se párují podle <ident_ci> (SKU). Pokud produkt v ceníku neexistuje, automaticky se vytvoří. Ceny se při importu aktualizují (lze vypnout v konfiguraci e-shopu).
ParcelShop
Pokud název dopravy obsahuje "ParcelShop - ParcelShop (ID)", Trynx automaticky extrahuje ID výdejního místa z textu v závorce a uloží ho do pole u_dbranch na zakázce.
Příklad: Kompletní objednávka se všemi poli
<?xml version="1.0" encoding="UTF-8"?>
<zakazky>
<zakazka>
<!-- Identifikace -->
<cis_obj>OBJ-2026-042</cis_obj>
<dat_vyt>2026-03-29</dat_vyt>
<cas_vyt>09:15:30</cas_vyt>
<!-- Ceny -->
<z_pcena>2450.00</z_pcena>
<z_pcenas>2964.50</z_pcenas>
<zakl_txt3>Urgentní objednávka - doručit do pátku</zakl_txt3>
<!-- Platba a doprava -->
<mena>CZK</mena>
<platba>Převodem</platba>
<platba_id>BANK_TRANSFER</platba_id>
<preprava>PPL</preprava>
<preprava_id>PPL_STANDARD</preprava_id>
<!-- Fakturační adresa -->
<nazev>Jan Novák</nazev>
<nazev2>Novák s.r.o.</nazev2>
<ulice>Průmyslová 456</ulice>
<psc>10200</psc>
<mesto>Praha 10</mesto>
<stat>CZ</stat>
<ico>12345678</ico>
<dic>CZ12345678</dic>
<email>objednavky@novak-sro.cz</email>
<telefon>+420 777 888 999</telefon>
<osoba>Jan Novák</osoba>
<ref_num>POB-01</ref_num>
<!-- Doručovací adresa -->
<k_nazev>Jan Novák</k_nazev>
<k_nazev2>Novák s.r.o. - sklad</k_nazev2>
<k_ulice>Skladová 789</k_ulice>
<k_psc>25001</k_psc>
<k_mesto>Brandýs nad Labem</k_mesto>
<!-- Položky -->
<tbl_zakobs>
<tbl_zakob>
<ident_ci>WIDGET-A100</ident_ci>
<nazev>Widget A - základní</nazev>
<pocet_mj>5</pocet_mj>
<pcena_mj>200.00</pcena_mj>
<pscena_mj>242.00</pscena_mj>
<sazba>21</sazba>
</tbl_zakob>
<tbl_zakob>
<ident_ci>WIDGET-B200</ident_ci>
<nazev>Widget B - prémiový</nazev>
<pocet_mj>3</pocet_mj>
<pcena_mj>450.00</pcena_mj>
<pscena_mj>544.50</pscena_mj>
<sazba>21</sazba>
</tbl_zakob>
<tbl_zakob>
<ident_ci>SLUZBA-MONTAZ</ident_ci>
<nazev>Montáž</nazev>
<pocet_mj>1</pocet_mj>
<pcena_mj>100.00</pcena_mj>
<pscena_mj>121.00</pscena_mj>
<sazba>21</sazba>
</tbl_zakob>
</tbl_zakobs>
</zakazka>
</zakazky>
Poznámky k implementaci
- Endpoint musí vracet pouze nové objednávky, které ještě nebyly potvrzeny
- Trynx detekuje duplicity podle čísla objednávky (
cis_obj) — pokud zakázka se stejným číslem již existuje, import ji přeskočí - Doprava a platba se v Trynx mohou automaticky přidat jako položky zakázky (pokud mají přiřazenou položku ceníku)
- Desetinná čísla používají tečku jako oddělovač (ne čárku)
- Všechny textové hodnoty mohou být obaleny v
CDATAsekcích

komentáře (0)