Obecný konektor ESO9 - e-shop
Tento obsah je dostupný i jako přiložený dokument. Stáhnout PDF
Princip
- Komunikace mezi IS ESO9 a eshopem probíhá přes jednu webovou službu (konektor), kterou vytvořilo ESO9.
- Webová služba je umístěna na serverech zákazníka nebo CLOUDu ESO9, je přímo napojena na databázi aplikace ESO9.
- Eshop je klientem této webové služby.
- Zpravidla se používá omezení přístupu na rozsah IP adres používaných eshopem.
- Eshop čte potřebná data z ESO9 přes webovou službu, ukládá je do pomocných tabulek eshop databáze. Eshop zapisuje potřebná data do ESO9, struktura zapisovaných dat je zpravidla stejná jako u čtení.
Všechna čtená data z ESO9 do eshopu bude možné získat více způsoby:
- Kompletní data žurnálu – volání metod bez udání počátečního ID žurnálu.
- Data změněná od zadaného ID žurnálu – jako argument metod se předá naposled přijaté ID žurnálu, metoda pak bude data vracet ze žurnálu změn následující po tomto ID.
- Přímé čtení určitého záznamu podle jeho ID – toto volání obejde mechanismy žurnálu, čte se pouze určitý záznam (typicky přímé načtení objednávky po jejím založení z eshopu do ESO9).
Smazané záznamy nebudou v kompletních datech a budou se přidávat do žurnálu s informací o smazání (žurnál obsahuje typ insert, update, delete).
Zápis dat z eshopu do ESO9 probíhá také přes webové služby, služba vrací ihned nově vytvořená id záznamů a data jsou “ihned” dostupná pro čtení (změna se zařadí do žurnálu, kromě toho je data možná načíst přímo).
V případě nedostupnosti webové služby eshop veškeré údaje „podrží“ a zapíše do ESO9 jakmile bude služba dostupná.
Referenční integrita – nedoporučujeme, aby si ESHOP udržoval ve svých tabulkách referenční integritu mezi identifikátory ESO9 (ID*). Může například nastat situace při čtení subjektů a adres:
- ESHOP načte všechny adresy (CtiSubjAdr), pak ESHOP načítá subjekty (CtiSubjekt), vyskytne se tam IDSUBJADR, které ještě nemá načteno, protože od okamžiku čtení adres se založil nový subjekt – a ESHOP nemá tuto adresu ještě načtenu, i když v žurnálu už je. Toto ID si v subjektu uloží – bez vazby na adresu.
- Adresu si dočte v dalším cyklu čtení adres.
- Podobná situace může běžně nastat i u jiných tabulek.
oXyShop
Rozhraní bylo vytvořeno ve spolupráci s firmou oXy Online.
Je určeno nejen pro komunikaci s oXyShopem, může být použito jako obecné rozhraní na jiné e-shopy, které se na ně dokáží napojit.
- oXy Online s.r.o., Zdaboř 570, Příbram 5, 261 01
- Pobočka a zasílací adresa: Tuřanka 1222/115, 627 00, Brno, tel: 511 113 111
- IČ: 274 04 129; DIČ: CZ27404129
Testovací verze
Pro každou implementaci se zpravidla vytvoří testovací verze webové služby napojená na testovací databázi zákazníka, na ní se vše odladí a řešení se přenese na ostrou verzi.
Přenos z ESO9 do eShopu
Poznámky k popisu struktur:
- Názvy polí vychází z názvosloví ESO9.
- Názvy metod jsou kombinací požadavků oXy Online a názvosloví ESO9.
- Datové typy:
- IDxxx začínají identifikátory vlastní tabulky, nebo vazební identifikátor na jinou tabulku.
- Vazební identifikátor má stejný název jako identifikátor ve své tabulce. Je to 32-bitový integer.
- VLxxx je zpravidla přepínač, má malé množství číselných hodnot s pevným významem (výjimečně je sada významů rozšířitelná při implementaci).
- Typ / délka – je uveden buď datový typ v ESO9, nebo číslo v závorce; to je délka textového typu Varchar. Občas se stane, že délku v databázi zvětšujeme, jen při přechodu na novou verzi, a velmi uvážlivě.
- Datový typ DateTime se předává jako text ve formátu yyyy-mm-dd hh:mm:ss.fff, tedy s přesností na milisekundy. Je použito i pro datum bez času jako yyyy-mm-dd 00:00:00.000.
- Obejdeme tak problémy práce s časovým pásmem přes různá prostředí.
BlackBox
Ve většině metod pro čtení dat je obsažen tzv. BlackBox – text s libovolným obsahem pro PROFI implementace rozhraní. Na obsahu atributu BlackBox se domluví implementátor ESO9 a implementátor ESHOPu, bez potřeby měnit rozhraní konektoru.
- BlackBox bude naplněn jen u těch metod, kde to bude potřeba.
- Zpravidla to bude XML struktura.
Rozhraní metod
Většina metod je použitelná dvěma způsoby.
- Žurnálové čtení – čtení proudu změn záznamů určitého typu od určitého místa nebo celého.
- Přímé čtení – přímé čtení právě jednoho záznamu podle předaného ID.
Metody pro načítání dat z ESO9 budou zpravidla mít následující rozhraní:
Vstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| idEshop | ID eshopu, pro který se mají načíst data | |
| idZurnal | Od jakého žurnálového záznamu načítat. Prakticky by to mělo být poslední načtené idZurnal z předchozího čtení. Metoda hledá záznamy žurnálu s vyšší hodnotou. Je-li 0, načítá se vše od začátku žurnálu. | |
| id | ID požadovaného záznamu z dané tabulky. Pokud je vyplněno, má přednost před idZurnal, nepoužije se žurnál, ale čte se přímo z dat. | |
| iMax | Maximální počet záznamů, který se má načíst. 0 – všechny, které jsou k dispozici, nanejvýš však hodnota z parametru ES_CTI_MAX. Je zavedeno jen v metodách, kde se očekává velký obrat dat. |
Výstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| enResult | enResult | OK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby. |
| iErr | Upřesňující číslo chyby. | |
| sErr | Text chyby. | |
| iZbyva | Počet zbývajících záznamů žurnálu za právě přenesenými. V rozhraní je jen tehdy, je-li v něm i vstupní parametr iMax, který omezuje čtení. | |
| idZurnalMax | idZurnal z posledního vráceného záznamu. V každém datovém záznamu je jeho idZurnal, poslední by se z nich dal načíst. Na výstupu metody uvedeno pro lepší použitelnost metod. Od tohoto idZurnalMax je možné volat načtení dalších dat. | |
| aXXXX | SXXXX() | Pole vracených dat. Pole záznamů určité struktury. Struktura SXXXX definována v konkrétní metodě. |
Každý předávaný záznam v typu SXXX kromě specifických datových polí obsahuje i společná pole:
| Pole | Typ/délka | Popis |
|---|---|---|
| idZurnal | Identifikátor záznamu v žurnálu změn | |
| TimeStamp | DateTime | Časová značka databázové operace |
| TypOper | enTypOper | Typ databázové operace |
kde enTypOper je výčtový typ pro druh databázové operace:
- 0 – init – počáteční zápis do žurnálu. Před zahájením práce eshopu je vyvolán „admin“ insert na všech přenášených tabulkách.
- 1 – insert – nově vložený záznam
- 2 – update – aktualizovaný záznam
- 3 – delete – zrušený záznam
Operace init, insert, update budou vracet všechna datová pole vyplněna podle hodnot v databázi v okamžiku volání metody webové služby. Žurnál změn neeviduje historická data v okamžiku databázové operace. Tudíž i při update jednoho pole v ESO9 přijde v metodě kompletní obsah záznamu.
Operace delete vrací pouze primární ID dané struktury, které se má zrušit a společná pole. Žádná další data nejsou vyplněna, protože již nejsou známa a ani nemají význam. Je třeba ošetřit, aby používané datové typy polí ve WSDL rozhraní byly nillable, mohly mít nevyplněné hodnoty. (Jedinou výjimkou je pole FID používané v metodách pro práci se subjekty.)
Pokud webová služba při zpracování žurnálu změn narazí na operaci init/insert/update, ke které příslušné ID v databázi již neexistuje, znamená to, že záznam byl již zrušen (a někde dál v žurnálu je o tom zápis – to v tomto okamžiku neověřujeme). Takovou operaci metoda vůbec nevrátí, přeskočí ji – neměla by čím naplnit data, a stejně bude záznam později zrušen.
Pokud do eshopu přijde událost zrušení záznamu, ale ID tohoto záznamu v eshopu není, nemělo by se vyhodnotit jako chyba. Ruší se něco, co neexistuje – výsledný stav je tedy na obou stranách stejný.
Pokud do eshopu přijde update záznamu, který v eshopu ještě neexistuje, provede se založení záznamu. Výsledný stav je tedy jako by dřív přišel insert se starými hodnotami a nyní update na nové hodnoty.
Teoreticky zbývá ještě situace, kdy přijde operace insert na záznam, který v databázi eshopu již existuje….
Návratové hodnoty metod
Každá metoda jako návratovou hodnotu vrací OK nebo hlavní chybu z výčtového typu enResult.
Ve všech metodách může nastat některá z těchto společných návratových hodnot:
| enResult | Popis | iErr |
|---|---|---|
| OK | Metoda proběhla bez chyby | 0 |
| SQL_ERROR | Chyba v SQL proceduře | Číslo chyby |
| EXCEPTION | Výjimka v prostředí webové služby | Číslo výjimky |
| UNKNOWN_ID | Nenalezen požadovaný záznam (v případě, že se metoda volá s určitým ID) | |
| ESHOP_NOT_ALLOWED | Konektor ABC nemá povolenou práci s IDESHOP=2 |
U každé metody je uvedena případná množina jejich dalších specifických návratových hodnot.
Chyba UNKNOWN_ID:
Pokud je metoda pro načtení dat volána jako žurnálové čtení, pak není chybou, že se nevrátí žádná data – prostě v žurnálu žádná nejsou k dispozici.
Pokud je metoda pro načtení dat volána jako přímé čtení se zadaným ID, v případě, že takové ID není v datech nalezeno, vrátí se chyba UNKNOWN_ID.
Chyba ESHOP_NOT_ALLOWED:
V konfiguraci konektoru může být vyjmenována množina IDESHOP, tedy seznam ESHOPů se kterými může tento konektor pracovat.
Obecné číselníky
EShopy
Rozhraní musí umožnit napojení více eshopů na jednu databázi ESO9. Lze řešit více způsoby, volíme číselník eshopů v databázi a přiřazení produktů a zákazníků určitému eshopu. U některých bude možné záznam přiřadit jen jednomu eshopu, u jiných více eshopům – v tom případě bude vytvořena vazební tabulka 1:N. Pro načítání nebude podstatný způsob vazby, budou se načítat jen data pro požadovaný eshop, který je vstupním parametrem metod webové služby.
Metoda: CtiEshop
Metoda má na vstupu idEshop, ale načte se tabulka všech eshopů, nefiltruje se. Je o malou tabulku, není potřeba ani iMax pro omezení počtu vrácených záznamů a tím ani iZbyva.
Vstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| idEshop | ID eshopu, ze kterého se metoda volá. | |
| idZurnal | Od jakého žurnálového záznamu načítat. | |
| id | ID požadovaného záznamu z dané tabulky. |
Výstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| enResult | enResult | OK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby. |
| iErr | Upřesňující číslo chyby. | |
| sErr | Text chyby. | |
| idZurnalMax | idZurnal z posledního vráceného záznamu. | |
| aESHOP | SESHOP() | Pole vracených dat. |
Struktura SESHOP :
| Pole | Typ/délka | Popis | Poznámka |
|---|---|---|---|
| IDESHOP | ID – unikátní identifikace | Vstupní parametr rozhraní metod webové služby | |
| ESHOP_KOD | (10) | Kód eshopu | |
| ESHOP_NAZEV | (100) | Název | |
| ESHOP_URL | (250) | URL eshopu | |
| POPIS | Případný popis eshopu | ||
| VLSTAV | Smallint | Aktivita | 0=aktivní; 1=neaktivní |
| VLPOVOLENY | Smallint | Konektor má povoleno s tímto eshopem pracovat | 0=není povolen; 1=je povolen |
| idZurnal | Identifikátor záznamu v žurnálu změn | ||
| TimeStamp | DateTime | Časová značka databázové operace | |
| TypOper | enTypOper | Typ databázové operace |
Poznámka: tento číselník by neměl vykazovat výrazné změny – jde jen o přenos IDESHOP.
V ESO9 je v číselníku e-shopů stav aktivní/neaktivní. Od verze 2.4 se stav předává do e-shopu. Do neaktivního e-shopu není možné přes rozhraní zapsat objednávku, zapsat platbu objednávky, modifikovat subjekt.
Povolené ESHOPY
Od verze 2.5 se vrací metoda CtiEshop i atribut VLPOVOLENY.
V konfiguraci konektoru (web.config) je možné nastavit seznam IDESHOP a do entity SESHOP se naplní až ve webové službě. Není uloženo v databázi. Metodou CtiEshop se vrátí seznam všech eshopů, i nepovolených.
Pokud seznam povolených IDESHOP není vyplněn, je povolena práce se všemi eshopy.
Pokud se ale volá jakákoliv jiná metoda (než CtiEshop) pro nepovolený ESHOP, vrátí se chyba ESHOP_NOT_ALLOWED s textem „Konektor ABC nemá povolenou práci s IDESHOP=NN“, kde ABC je jméno konektoru a NN je požadované IDESHOP.
Důvodem této kontroly je situace, kdy na jednu databázi je napojeno více typů ESHOPů (například B2B a B2C) různých stran a není žádoucí, aby ani omylem nezapsali do databáze „jménem druhého
ESHOPu“
Parametry aplikace a eshopu
Některá nastavení vazby ESO9 – eshop je možné parametrizovat.
V ESO9 se eviduje ve skupině parametrů ESHOP. Tyto parametry ovlivňují chování aplikace ESO9, jsou přenášeny do eshopu, a tím ovlivňují i jeho chování. Tím rozšíříme škálu možné funkčnosti a zjednodušíme určité části nasazení pouze na parametrizaci.
Metoda: CtiParametry
Metoda se má na vstupu idEshop, ale parametry zatím nebudou rozlišeny eshopem, pro který platí.
Je o malou tabulku, není potřeba ani iMax pro omezení počtu vrácených záznamů a tím ani iZbyva.
Vstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| idEshop | ID eshopu, pro který se mají načíst parametry. Zatím se při zpracování nepoužije. | |
| idZurnal | Od jakého žurnálového záznamu načítat. | |
| id | ID požadovaného záznamu z dané tabulky. |
Výstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| enResult | enResult | OK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby. |
| iErr | Upřesňující číslo chyby. | |
| sErr | Text chyby. | |
| idZurnalMax | idZurnal z posledního vráceného záznamu. | |
| aParam | SParam() | Pole vracených parametrů. |
Struktura SParam :
| Pole | Typ/délka | Popis | Poznámka |
|---|---|---|---|
| IDPARAM | Identifikátor | ||
| KODPARAM | (30) | Kód parametru | Každý kód má předem určený význam |
| VLTYPPARARAM | Smallint | Datový typ parametru | 0=SmallInt; 1=Integer; 2=Float; 3=VarChar; 4=DateTime |
| HODNOTA | (255) | Hodnota parametru | Hodnota je ukládána jako string, konvertovatelná na definovaný typ |
| idZurnal | Identifikátor záznamu v žurnálu změn | ||
| TimeStamp | DateTime | Časová značka databázové operace | |
| TypOper | enTypOper | Typ databázové operace |
Metoda pro načtení parametrů je obecná, načte všechny parametry ze skupiny. Eshop využije jen ty, jejichž význam zná a umí použít.
Kódy parametrů budou pevné a nebudou se měnit (nelze editovat kódy parametrů, jsou pevně dány v aplikaci ESO9).
Například můžeme zavést níže uvedené parametry. Parametry mohou mít výchozí hodnotu, která bude obvyklou START hodnotou ( vyznačena tučně ).
Kód parametru
Příklad možné hodnoty parametru
Popis významu
ES_CTI_MAX
Pokud při volání metody pro čtení
(Cti*) není uvedena hodnota iMax
= maximální počet záznamů, který se má načíst, je nastavena hodnota z tohoto parametru.
Zabrání pádu komunikace při velkém množství záznamů v žurnálu.
ES_ZnacZbozi_EN
EN, GB
Kód anglického značení zboží ve
(volná hodnota parametru) skupinách značení zboží
ES_ZnacZbozi_DE
DE
Kód německého značení zboží ve skupinách značení zboží
ES_PoznZbozi_EN
EN, GB
Kód anglického značení zboží v
(volná hodnota parametru) poznámkách zboží
ES_PoznZbozi_DE
DE
Kód německého značení zboží v poznámkách zboží
ES_PoznZbozi_OBR
OBR1;OBR2;….;OBR8
Až 8 kódů typů poznámek ke zboží
(seznam kódů z číselníku určuje 8 možných obrázků
SZboziTypPozn.KODTZBOZIPOZN) v poznámce ke zboží
ES_PoznZbozi_PRIL
PRIL
Kód typu poznámky ke zboží, ve kód z číselníku které je obsažen dokument přílohy
SZboziTypPozn.KODTZBOZIPOZN
(poznámek s přílohou může být víc)
ES_PoznZbozi_PARAM
Seznam kódů z číselníku
Ostatní parametry zboží
SZboziTypPozn.KODTZBOZIPOZN přenášené do e-shopu kromě OBR a PRIL.
ES_Kateg_Delka
1, 2, 3, 4
Počet znaků pro jednu úroveň
(jedna z hodnot) kategorie
ES_MENY
EUR;USD
Seznam kódů měn, pro které se má přenášet kurzovní lístek. Pokud (kód měny z číselníku měn) je prázdný, žádné kurzy se nepřenáší. Pracuje ve spolupráci s parametrem ES_KURSL_OD.
ES_KURSL_OD
2020-01-01
Datum, od kterého se přenáší kurzovní lístek. Ve tvaru RRRR-
MM-DD.
Pracuje ve spolupráci s parametrem ES_MENY
ES_ROZMER_VYSKA,
1, 2, 3
Pro určitý typ rozměru „číslo“
ES_ROZMER_SIRKA,
(předem dané hodnoty parametru, sloupce ROZMER_1, ROZMER_2,
ROZMER_3,
ES_ROZMER_HLOUBKA rozdělit všechny 3 hodnoty mezi parametry)
ES_ROZMER_MJ
Kód měrné jednotky, ve které E-shop pak případné velké/malé se udávají rozměry rozměry přepočte na rozumnější jednotku
ES_ZAPISSUBJ_ID
0=autodetekce;
Metoda ZapisSubjektVse hledá
1=IDSUBJ* (=IDSUBJEKT, existující subjekt, osobu a adresu
IDSUBJOSOBA, IDSUBJADR); podle zvoleného typu ID.
2=FGUID;
(od verze 2.0).
3=FID
ES_ZAPISSUBJ_ICO
0=ne;
Slučování subjektů podle IČO.
1=ano
Metoda ZapisSubjektVse při zápisu nového subjektu hledá již existující podle IČO.
ES_ZAPISSUBJ_MAIL
0=ne;
Metoda ZapisSubjektVse při zápisu
1=ano nové osoby hledá již existující osobu podle emailu.
ES_ZAPISOBJ_HLEDATZBOZI
0=jen podle IDZBOZI;
Hledání zboží při zakládání složky
1=hledat podle SLOZKA_IDENT objednávky.
Při hodnotě 1, pokud není vyplněno IDZBOZI, hledá se zboží podle SLOZKA_IDENT jako
CIS_ZBOZI.
ES_ZAPISOBJ_CIS_DOK
0= nepoužije vstupní CIS_DOK,
Metoda ZapisObj při založení
naplní je vždy z řady v ESO9 ; objednávky, pokud na vstupu je
1= použije vstupní CIS_DOK, pokud vyplněné CIS_DOK. již existuje, naplní je z řady v ESO9;
2= použije vstupní CIS_DOK, pokud již existuje v rámci typu dokladu, vrátí chybu
ES_ZAPISOBJ_SLOZKA_IDENT
0= nikdy,
Metoda ZapisObj při založení
1= jen pokud není vyplněno nebo složky objednávky naplní
nalezeno IDZBOZI,
SLOZKA_IDENT hodnotou
2= vždy z ESHOPU.
ES_ZAPISOBJ_TEXT_SLOZ
0= nikdy,
Metoda ZapisObj při založení
1= jen pokud není vyplněno nebo složky objednávky naplní
nalezeno IDZBOZI,
TEXT_SLOZ hodnotou z ESHOPU
2= vždy
ES_ZAPISOBJ_SLUZBA_DOBIRKA
Kód služby pro dobírku.
(*)
Tento kód může ESHOP použít při předávání složky za dobírku.
Kód z parametru se naplní do složky objednávky do atributu
SLOZKA_IDENT, současně naplní VLTYP_SLOZ = 2 (služba).
V ESO9 se podle kódu dohledá služba.
Funguje, pokud současně parametr ES_ZAPISOBJ_HLEDATZBOZI = 1.
ES_ZAPISOBJ_SLUZBA_DOPRAVA
Kód služby pro dopravu.
(*)
Tento kód může ESHOP použít při předávání složky za dopravu.
Kód z parametru se naplní do složky objednávky do atributu
SLOZKA_IDENT, současně naplní VLTYP_SLOZ = 2 (služba).
V ESO9 se podle kódu dohledá služba.
Funguje, pokud současně parametr ES_ZAPISOBJ_HLEDATZBOZI = 1.
ES_PRENOS_OBJ
0=ne
Do e-shopu se přenášejí
1=objednávky zákazníků objednávky podle nastavení označených pro e-shop (tedy i jejich objednávky založené v ESO9)
2=objednávky založené z eshopu
ES_PRENOS_FAV
0=ne
Do e-shopu se přenášejí faktury
1=faktury zákazníků označených podle nastavení pro e-shop
ES_ZBOZIVAZBA
2;3;4
Seznam hodnot VLTYP_VAZBY z tabulky ZBOZIMNSPOTR pro metodu CtiZboziVazba. Jednotlivé hodnoty se oddělují středníkem
ES_OBECCIS_VLTYP
Typy obecného číselníku, které se mají přenášet metodou CtiObecCis.
Seznam hodnot VLTYPOBECCIS z tabulky OBECCIS.
Jednotlivé hodnoty se oddělují středníkem.
POZOR! - po změně hodnoty je potřeba vyvolat speciální akci, aby se nový typ začal používat.
Neuvádějte hodnotu 33, která je použita pro typy dokumentů.
(*) Parametry ES_ZAPISOBJ_SLUZBA_DOBIRKA, ES_ZAPISOBJ_SLUZBA_DOPRAVA jsou určeny pro zjednodušené zakládání služeb do objednávek, bez potřeby číst služby z číselníku.
Standardní způsob napárování služeb z ESHOPU na službu z ESO9 při zakládání složky je načtení celého číselníku služeb z ESO9, párování služeb na dopravy a platby v administraci ESHOPU.
V případě, že ESHOP si služby nečte, mohou se použít uvedené parametry.
Státy
Metoda: CtiStat
Použije se v adrese subjektu.
Vstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| idEshop | ID eshopu, pro který se mají načíst státy. Zatím se při zpracování nepoužije – číselník je nezávislý na eshopu | |
| idZurnal | Od jakého žurnálového záznamu načítat. | |
| id | IDSTAT požadovaného záznamu. |
Výstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| enResult | enResult | OK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby. |
| iErr | Upřesňující číslo chyby. | |
| sErr | Text chyby. | |
| idZurnalMax | idZurnal z posledního vráceného záznamu. | |
| aStat | SStat() | Pole vracených záznamů typu SStat. |
Struktura SSTAT :
| Pole | Typ/délka | Popis | Poznámka |
|---|---|---|---|
| IDSTAT | ID – unikátní identifikace | ||
| KOD_STATU | (10) | Kód státu | V ESO9Start se používá 2znakový kód státu |
| NAZEV_STATU | (65) | Název státu | |
| BlackBox | Doplňková informace | ||
| idZurnal | Identifikátor záznamu v žurnálu změn | ||
| TimeStamp | DateTime | Časová značka databázové operace | |
| TypOper | enTypOper | Typ databázové operace |
Přepravní, dodací a platební podmínky
Metoda přenáší číselník přepravních dodacích a platebních podmínek z ESO9. Eshop si napáruje své číselníky doprav, způsobu dodání a plateb na ID z číselníku ESO9.
Použití v načítaných i zakládaných objednávkách.
Metoda: CtiDopPlatPodm
Poznámka: metoda má v názvu jen Dop a Plat , třetí typ, dodací podmínky byl doplněn později (verze
2.6), název již není možné změnit
Vstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| idEshop | ID eshopu, pro který se mají načíst státy. Zatím se při zpracování nepoužije – číselník je nezávislý na eshopu | |
| idZurnal | Od jakého žurnálového záznamu načítat. | |
| id | ID požadovaného záznamu z dané tabulky. |
Výstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| enResult | enResult | OK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby. |
| iErr | Upřesňující číslo chyby. | |
| sErr | Text chyby. | |
| idZurnalMax | idZurnal z posledního vráceného záznamu. | |
| aDopPlatPodm | SDopPlatPodm() | Pole vracených záznamů dopravních a platebních podmínek. |
Struktura SDopPlatPodm :
| Pole | Typ/délka | Popis | Poznámka |
|---|---|---|---|
| IDPODM | ID – unikátní identifikace | ||
| VLDRUHPODM | Smallint | Druh | 0=Dodací podmínky; 1=Platební podmínky; 2=Dopravní podmínky |
| KOD_PODMINKY | (10) | Kód | |
| NAZEVPODMINKY | (60) | Název | |
| BlackBox | Doplňková informace | ||
| idZurnal | Identifikátor záznamu v žurnálu změn | ||
| TimeStamp | DateTime | Časová značka databázové operace | |
| TypOper | enTypOper | Typ databázové operace |
Obecný číselník
Metoda: CtiObecCis
Od konektoru verze 3.6.5, přenáší část číselníku OBECCIS. Metoda přenáší jen typy, jejichž
VLTYPBOECCIS je v parametru ES_OBECCIS_VLTYP.
Metodu implementujte pouze tehdy, pokud v některém blackboxu dostáváte hodnoty z tohoto čísleníku pro speciální vlastnosti. Nebo je součástí dat předávaných některou z BlackMethod.
V základních metodách konektoru se nepoužívá.
Vstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| idEshop | ID eshopu, pro který se mají načíst data | |
| idZurnal | Od jakého žurnálového záznamu načítat | |
| id | IDOBECCIS požadovaného záznamu |
Výstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| enResult | enResult | OK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby. |
| iErr | Upřesňující číslo chyby. | |
| sErr | Text chyby. | |
| idZurnalMax | idZurnal z posledního vráceného záznamu. | |
| aObecCis | SObecCis() | Pole vracených dat. |
Struktura: SObecCis
| Pole | Typ/délka | Popis | Poznámka |
|---|---|---|---|
| IDOBECCIS | Unikátní identifikace typu | ||
| VLTYPOBECCIS | Typ číselníku | V profi implementaci budou použity jen některé typy. Seznam přenášených typů je dán parametrem ES_OBECCIS_VLTYP. | |
| KODOBECCIS | (10) | Kód | |
| TEXTOBECCIS | (60) | Popis | |
| BlackBox | Doplňková informace | Pro PROFI implementace | |
| idZurnal | Identifikátor záznamu v žurnálu změn | ||
| TimeStamp | DateTime | Časová značka databázové operace | |
| TypOper | enTypOper | Typ databázové operace |
Obrázky, dokumenty
V jednotlivých metodách přenášených datových strukturách se může vyskytovat odkaz na obrázek,
PDF dokument, obecně na binární data.
Ve většině případů jsou tato binární data uložena do dokumentové databáze a v relační databázi je uložen pouze GUID identifikující tato data. Typicky obrázek pro zboží.
Binární data se nebudou vracet přímo s předávanými primárními daty, ale speciální metodou, nejlépe asynchronně s načítáním primárních dat.
Metoda: CtiDokument
Vstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| DocGUID | (40) | GUID požadovaných binárních dat. |
Výstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| enResult | enResult | OK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby. |
| iErr | Upřesňující číslo chyby. | |
| sErr | Text chyby. | |
| oDokument | SDokument | Vrácený dokument. |
Struktura SDokument :
| Pole | Typ/délka | Popis | Poznámka |
|---|---|---|---|
| DocGUID | (40) | GUID požadovaných binárních dat | Stejná hodnota jako na vstupu metody |
| FileName | (255) | Název souboru včetně přílohy, pokud je s dokumentem svázán | |
| Content | Byte() | Vrácená binární data jako Base64 |
Návratové hodnoty metody (kromě obecných):
| enResult | Popis | iErr |
|---|---|---|
| DOC_NO_ID | Nevyplněné DocGUID na vstupu | |
| DOC_INVALID_ID | Identifikátor dokumentu nemá správnou strukturu | |
| DOC_UNKNOWN_ID | Dokument nebyl nalezen |
Stav žurnálu
Metody definované v rozhraní mohou být volány v pravidelných cyklech. U metod, kde změna dat není častá (např. číselníky) se ve většině volání nevrátí žádná změna.
Metoda: CtiZurnal
Metoda, která vrátí připravený počet změn pro každou metodu od zadaného idZurnal, Eshop se může zaměřit na vyčtení změn, kterých je nejvíc nebo jsou nejdůležitější. Metody, pro které žádné změny nebudou, by se nemusely volat zbytečně.
Od verze 3.4 lze použít i pro načtení počtu záznamů označených pro ESHOP v databázi ESO9 (pro tabulky ZBOZI a 3 tabulky k subjektům) – nastavením nového vstupního parametru vlData.
Vstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| idEShop | Jen pro čtení POCET_DATA při vlData = 1 | |
| idZurnal | Od jakého žurnálového záznamu načítat (vracejí se vyšší než vstupní hodnota) | |
| sTabulka | (30) | Pokud je prázdné, vrátí pro všechny tabulky. Pokus chcete číst jen pro jednu, zadejte ji. Nebo SQL výraz vyhodnotitelný výrazem LIKE – můžete filtrovat podmnožinu tabulek. vlBlackMethod -1=vše, 0=jen standardní tabulky, 1=jen tabulky pro BlackMethod. Výchzí hodnota = -1. vlZurnal 0 = jen seznam tabulek a metod, 1 = včetně statistiky ze žurnálu (tedy i hodnoty idZurnalMax, POCET, MaxDT) vlData 0 = nečte data, 1 = čte počet záznamů označených pro ESHOP v databázi ESO9 (jen pro tabulky ZBOZI, SUBJEKT, SUBJADR, SUBJOSOBA). |
Výstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| enResult | enResult | Návratová hodnota. OK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby. |
| iErr | Upřesňující číslo chyby. | |
| sErr | Text chyby. | |
| aZurnal | SZurnal() | Pole vracených dat. |
Struktura SZurnal:
| Pole | Typ/délka | Popis | Poznámka |
|---|---|---|---|
| TABULKA | (30) | Technický název tabulky | |
| VLBLACKMETHOD | 0 = standardní metoda, 1 = tabulka pro BlackMethod | ||
| idZurnalMax | Maximální ID žurnálu pro tabulku / metodu | pro vlZurnal = 1 | |
| POCET | Počet záznamů v žurnálu (všech nebo od vstupního IdZurnal) | pro vlZurnal = 1 | |
| MaxDT | DateTime | Datum a čas posledního záznamu | pro vlZurnal = 1 |
| POCET_DATA | Počet záznamů označených pro ESHOP v databázi ESO9 (jen pro tabulky ZBOZI, SUBJEKT, SUBJADR, SUBJOSOBA) | pro vlData = 1 | |
| IDESHOP_DATA | Pro jaké IDESHOP je vráceno POCET_DATA | pro vlData = 1 | |
| Metoda | (100) | Název metody konektoru |
Použití vlData = 1
Pokud chcete zjistit jen počet záznamů označených v databázi ESO9 pro ESHOP, můžete volat takto:
IdEShop=1, vlZurnal = 0, vlData = 1
pokud přidáte sTabulka = SUBJ%
pokud přidáte sTabulka = ZBOZI
Lze kombinovat i s čtením statistiky žurnálu:
IdEShop=1, vlZurnal = 1, vlData = 1
zde lze vidět, že počet záznamů v žurnálu je větší, než počet dat – a to proto, že do žurnálu se zaznamenává každá změna dat.
Pokud při volání nezadáte IDESHOP (nebo mu zadáte hodnotu 0): IdEShop=0, vlZurnal = 0, vlData = 1, vypíše hodnoty pro všechny IDESHOP (návratová hodnota IDESHOP_DATA je prázdná):
Produkty
Číselník produktů
Metoda: CtiZbozi
Metodu lze použít pro žurnálové čtení, pro přímé čtení jednoho záznamu nebo pro přímé čtení všech záznamů mimo žurnál.
Vstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| idEshop | ID eshopu, pro který se mají načíst data | |
| idZurnal | Od jakého žurnálového záznamu načítat. | |
| id | ID požadovaného záznamu z dané tabulky. Kladná hodnota = přímé čtení jednoho záznamu, záporná hodnota = přímé čtení všech záznamů. | |
| iMax | Maximální počet záznamů, který se má načíst. 0 – všechny, které jsou k dispozici. |
Výstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| enResult | enResult | OK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby. |
| iErr | Upřesňující číslo chyby. | |
| sErr | Text chyby. | |
| iZbyva | Počet zbývajících záznamů za právě přenesenými. Kladná hodnota pro žurnálové čtení, záporná hodnota pro přímé čtení všech záznamů. | |
| idZurnalMax | [Viz Poznámka] | idZurnal z posledního vráceného záznamu. |
| aZbozi | SZbozi() | Pole vracených produktů. |
Struktura SZbozi :
| Pole | Typ/délka | Popis | Poznámka |
|---|---|---|---|
| IDZBOZI | ID – unikátní identifikace | ||
| CIS_ZBOZI | (30) | Kód zboží | |
| CARKOVY_KOD | (20) | EAN (hlavní) | |
| NAZEV_ZBOZI | (255) | Název | [1] |
| TEXT_1 | (60) | Krátký popis | [2] |
| POPIS | Dlouhý popis | [2] | |
| VLSTAVZBOZI | Smallint | Aktivita | 0=aktivní; 1=neaktivní |
| VLTYP_SLOZ | Smallint | Typ | 1=Zboží; 2=Služba |
Smallint
Typ
1=Zboží; 2=Služba;
MNSAZBADPH
Decimal
DPH sazba
Hodnota sazby v procentech
(3,1)
(jedno desetinné místo pro jistotu, kdyby byla vymyšlena sazba 9,5 %)
HDCENADPHZBOZI
Money
Základní cena s DPH
HDPRODCENA
Money
Základní cena bez DPH
Doplněno ve verzi 3.1.3
IDSKUPZBOZI
Kategorie / skupina zboží
Vazba na číselník kategorií
IDMJ
Jednotka (hlavní)
Vazba na číselník MJ
ROZMER_1,
Decimal
Rozměry (například délka, šířka,
Význam jednotlivých rozměrů
ROZMER_2,
(19,5) výška) se určuje třemi parametry
ROZMER_3
ES_ROZMER_*.
Měrná jednotka se určuje parametrem ES_ROZMER_MJ
MNHMOTNOST
Decimal
Hmotnost
(19,5)
IDZBOZIMASTER
ID nadřízeného zboží
[3]
BlackBox
Doplňková informace
| idZurnal | | Identifikátor záznamu v žurnálu změn | | | TimeStamp | DateTime | Časová značka databázové operace | | | TypOper | enTypOper | Typ databázové operace | |
Poznámka pro rozlišení metod čtení.
-
žurnálové čtení jde, pokud na vstupu zadáte ID = 0 (nebo NULL). Na vstupu se použije idZurnal, iMax, na výstupu IdZurnalMax (kladné) a iZbyva. Jde o standardní použití metody.
-
přímé čtení jednoho záznamu jde tehdy, když zadáte ID > 0. Procedura čte záznam z tabulky ZBOZI pro toto IDZBOZI, nekontroluje se, zda je označeno pro ESHOP.
-
přímé čtení všech záznamů mimo žurnál jde tehdy, když zadáte ID < 0. (zařazeno od verze 3.5) začnete ID = -1, načte se prvních iMax záznamů (buď je iMax přímo zadáno nebo s použije z parametru). Setřídí se podle IDZBOZI, v IdZurnalMax se vrátí nejvyšší vrácené IDZBOZI z tohoto čtení - ale jako záporná hodnota, aby se odlišilo od žurnálového čtení. toto záporné IdZurnalMax vložíte pro další čtení do ID na vstupu a vrátí se dalších iMax záznamů. při tomto čtení vrací i iZbyva - počet zbývajících záznamů pro toto čtení. vrací se pouze zboží označené pro IDESHOP na vstupu metody pokud máte účet pro napojení konektoru zařazen do role, musíte do ní přidat právo na EXECUTE pro proceduru spESHOP_ZBOZI_PRIMO
Od verze 2.3 v metodách provedena optimalizace čtení při žurnálovém čtení. Pokud na vstupu metod je iMax ( maximální počet záznamů, který se má načíst – naplnění této hodnoty na vstupu se velmi doporučuje), je v návratové hodnotě iZbyva ( počet zbývajících záznamů za právě přenesenými ) nanejvýš hodnota iMax, i když zbývá více záznamů. Domníváme se, že tato změna neovlivní logiku čtení žurnálu a na druhé straně velmi zrychlí čtení dat těmito metodami.
Další doznámky:
IDESHOP nemusí být ve struktuře předávaných dat, je na vstupu metody CtiZbozi , tudíž všechny vracené záznamy patří tomuto eshopu.
Cenotvorba bude pouze základní cena + aplikace % slevy na firmě zákazníka. Další případné slevy bude moci zákazník nastavovat na straně eshopu nebo případně řešit zakázkovou úpravou.
[1] Jazykové mutace názvu zboží jsou evidovány v tabulce „Značení pro subjekt“, jsou to záznamy určitých typů a některé z nich mohou představovat název v určitém jazyce.
[2] Jazykové mutace krátkého popisu a dlouhého popisu nejsou systematicky evidovány, ale v implementaci, kde by bylo potřeba, by se mohla využít poznámka ke zboží (metoda
CtiZboziPozn ).
[3] IDZBOZIMASTER - Pokud je ID vyplněné, je právě načtené zboží variantou, ariklem (… atd podle aktuálního názvosloví) ke zboží IDZBOZI=IDZBOZIMASTER. Standardně se vrací NULL. Může být přesána PROFI funkce vracející ID podle implementace. Viz kapitola PROFI objekty.
Obrázky a dokumenty ke zboží se evidují buď v poznámkách ke zboží – metoda CtiZboziPozn nebo v dokumentech ke zboží – metoda CtiZboziDokument.
Od verze 2.3 v metodách pro čtení produktů CtiZbozi a skladové dostupnosti CtiZbozSkl provedena optimalizace čtení žurnálu. Pokud na vstupu metod je iMax ( maximální počet
záznamů, který se má načíst – naplnění této hodnoty na vstupu se velmi doporučuje), je v návratové hodnotě iZbyva ( počet zbývajících záznamů za právě přenesenými ) nanejvýš hodnota iMax, i když zbývá více záznamů. Domníváme se, že tato změna neovlivní logiku čtení žurnálu a na druhé straně velmi zrychlí čtení dat těmito metodami.
Skupina značení zboží – typy jazykových mutací
Číselník používaných typů pro „Značení zboží“. Bude používáno zejména pro jazykové mutace názvů zboží.
V parametrech aplikace bude uvedeno, že kód DE znamená německý název zboží (hodnota parametru ES_ZnacZbozi_DE), kód EN anglický název zboží (hodnota parametru ES_ZnacZbozi_EN).
Metoda vrátí číselníkové záznamy odpovídající pouze kódům uvedeným v těchto parametrech.
Může být použito i pro dodavatelské kódy zboží, alternativní dodavatelské názvy – pro každý další typ předávané skupiny bude doplněn parametr s hodnotou používaného kódu skupiny.
Metoda: CtiSkupZnacZbozi
Vstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| idEshop | ID eshopu, pro který se mají načíst data. | |
| idZurnal | Od jakého žurnálového záznamu načítat. | |
| id | IDSKUPZNACZBOZI požadovaného záznamu. |
Výstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| enResult | enResult | OK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby. |
| iErr | Upřesňující číslo chyby. | |
| sErr | Text chyby. | |
| idZurnalMax | idZurnal z posledního vráceného záznamu. | |
| aSkupZnacZbozi | SSkupZnacZbozi() | Pole vracených záznamů. |
Struktura SSkupZnacZbozi :
| Pole | Typ/délka | Popis | Poznámka |
|---|---|---|---|
| IDSKUPZNACZBOZI | Unikátní identifikace | ||
| KOD_SKUPZNACZBOZI | (10) | Kód skupiny | |
| NAZEV_SKUPZNACZBOZI | (50) | Název skupiny | |
| BlackBox | Doplňková informace |
| idZurnal | | Identifikátor záznamu v žurnálu změn | | | TimeStamp | DateTime | Časová značka databázové operace | | | TypOper | enTypOper | Typ databázové operace | |
Značení zboží – jazykové mutace
Značení zboží - bude používáno zejména pro jazykové mutace názvů zboží.
Typ konkrétního značení (IDSKUPZNACZBOZI určité jazykové mutace) bude určen číselníkovou položkou přenesenou metodou CtiSkupZnacZbozi.
Metoda: CtiZnacZbozi
Vstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| idEshop | ID eshopu, pro který se mají načíst data | |
| idZurnal | Od jakého žurnálového záznamu načítat. | |
| id | IDZNACZBOZI požadovaného záznamu. | |
| iMax | Maximální počet záznamů, který se má načíst. 0 – všechny, které jsou k dispozici. |
Výstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| enResult | enResult | OK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby. |
| iErr | Upřesňující číslo chyby. | |
| sErr | Text chyby. | |
| iZbyva | Počet zbývajících záznamů za právě přenesenými | |
| idZurnalMax | idZurnal z posledního vráceného záznamu. | |
| aZnacZbozi | SZnacZbozi() | Pole vracených dat. |
Struktura SZnacZbozi :
| Pole | Typ/délka | Popis | Poznámka |
|---|---|---|---|
| IDZNACZBOZI | Unikátní identifikace | ||
| IDSKUPZNACZBOZI | Identifikátor skupiny značení | Načten metodou SkupZnacZbozi | |
| IDZBOZI | Identifikátor zboží, pro které je zavedeno | ||
| NAZEV_ZNACZBOZI | (100) | Alternativní název – například v určitém jazyce | |
| BlackBox | Doplňková informace |
| idZurnal | | Identifikátor záznamu v žurnálu změn | | | TimeStamp | DateTime | Časová značka databázové operace | | | TypOper | enTypOper | Typ databázové operace | |
Poznámka: v této tabulce je v ESO9 v dalších polích evidován i alternativní/dodavatelský čárkový kód, dodací lhůty dodavatelů, alternativní kódy zboží. Ve START verzi nevyužijeme, ale ve speciálních implementacích se může hodit.
Do žurnálu se založení/modifikace značení zboží ke zboží zapisuje pouze tehdy, když zboží je označeno pro e-shop.
Při označení zboží pro e-shop se vyvolá zápis značení zboží ke zboží do žurnálu (těch typů, které do e-shopu patří).
Cenová matice
Metoda: CtiCenMatice
Metoda předává určitou část cenové politiky ESO9 do e-shopu. Je takto možno předat pouze cenovou politiku definovanou pro cenové skupiny subjektů typu odběratel nebo přímo pro určitý subjekt.
Metoda předává IDZBOZI, jednu z položek IDSUBJEKT/IDCENSKUP a cenu s DPH.
Pokud je metodou předán záznam pro určité zboží, má přednost před cenou na kartě zboží.
Záznam může být určen pro konkrétní IDSUBJEKT (zpravidla se budou vyskytovat záznamy pro více subjektů) nebo pro cenovou skupinu subjektů – pak tato cena platí pro všechny subjekty, náležející této cenové skupině.
Pokud se vyskytuje záznam pro IDSUBJEKT, má přednost před záznamem pro IDCENSKUP.
Cenová matice se neaktualizuje ihned po změně záznamu cenové politiky či změně základní ceny na zboží – ale JOBem zpravidla jednou denně. Volá se procedura spESHOP_CenMatNapln.
Vstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| idEshop | ID eshopu, pro který se mají načíst data | |
| idZurnal | Od jakého žurnálového záznamu načítat. | |
| id | ID požadovaného záznamu z dané tabulky, tedy IDCENMATICE idZbozi |
Přímé čtení pro určité zboží, viz poznámka [2] iMax
Maximální počet záznamů, který se má načíst.
0 – všechny, které jsou k dispozici. |
Výstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| enResult | enResult | OK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby. |
| iErr | Upřesňující číslo chyby. | |
| sErr | Text chyby. | |
| iZbyva | Počet zbývajících záznamů za právě přenesenými | |
| idZurnalMax | idZurnal z posledního vráceného záznamu. | |
| aCenMatice | SCenMatice() | Pole vracených záznamů cenové matice. |
Struktura SCenMatice :
| Pole | Typ/délka | Popis | Poznámka |
|---|---|---|---|
| IDCENMATICE | ID – unikátní identifikace | ||
| IDZBOZI | ID zboží, pro které je cena určena | ||
| IDSUBJEKT | ID subjektu, pro který může být cena určena | ||
| IDCENSKUP | ID cenové skupiny subjektů, pro kterou může být cena určena | IDCENSKUP subjektu je předáváno metodou CtiSubjekt. Číselník se čte CtiCenSkup. | |
| HDCENADPH | Money | Vypočtená speciální cena s DPH | |
| HDCENA | Money | Vypočtená speciální cena bez DPH | od verze 2.7.2 |
| KOD_MENY | (3) | Kód měny pro předávanou cenu | od verze 2.7.3. Vrací buď prázdnou hodnotu nebo CZK. Určeno pro speciální verze. |
| BlackBox | Doplňková informace |
| idZurnal | | Identifikátor záznamu v žurnálu změn | | | TimeStamp | DateTime | Časová značka databázové operace | | | TypOper | enTypOper | Typ databázové operace | |
Poznámka: zda se do cenové matice naplňuje cena s DPH nebo bez DPH závisí na způsobu implementace.
Poznámka [2]: vstupní parametr IDZBOZI od verze 3.1.1. Je-li vyplněno, provádí se přímé čtení záznamů cenové matice mimo žurnál změn. Načte všechny záznamy cenové matice pro požadované zboží. Přitom se nepoužije omezení vstupním parametrem iMax. Pokud chcete číst podle zboží, nesmíte do vstupních parametrů zadat ID (=IDCENMATICE), ale pouze IDZBOZI. Případné zadané idZurnal se nepoužije.
Technická poznámka: v případě čtení podle zboží se nevolá procedura spESHOP_CenMatice, ale volá
se spESHOP_CenMatice_ZBOZI.
Cenové skupiny subjektů
Identifikátor IDCENSKUP se již dříve předával v subjektu (CtiSubjekt) a cenové matici (CtiCenMat).
Kód a název cenové skupiny se na eshopu zpravidla nezobrazuje, ale může pomoci zpřehlednit interní databázi eshopu.
Metoda: CtiCenSkup
Vstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| idEshop | ID eshopu, pro který se mají načíst data | |
| idZurnal | Od jakého žurnálového záznamu načítat. | |
| id | IDSKUPZBOZI požadovaného záznamu. |
Výstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| enResult | enResult | OK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby. |
| iErr | Upřesňující číslo chyby. | |
| sErr | Text chyby. | |
| idZurnalMax | idZurnal z posledního vráceného záznamu. | |
| aCenSkup | SCenSkup() | Pole vracených dat. |
Struktura SCenSkup :
| Pole | Typ/délka | Popis | Poznámka |
|---|---|---|---|
| IDCENSKUP | Unikátní identifikace skupiny | ||
| CEN_SKUP | (20) | Kód cenové skupiny | |
| NAZEV_CEN_SKUP | (90) | Název cenové skupiny | |
| BlackBox | Doplňková informace |
| idZurnal | | Identifikátor záznamu v žurnálu změn | | | TimeStamp | DateTime | Časová značka databázové operace | | | TypOper | enTypOper | Typ databázové operace | |
Měrné jednotky
Metoda: CtiMJ
Vstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| idEshop | ID eshopu, pro který se mají načíst data | |
| idZurnal | Od jakého žurnálového záznamu načítat. | |
| id | IDMJ požadovaného záznamu. |
Výstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| enResult | enResult | OK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby. |
| iErr | Upřesňující číslo chyby. | |
| sErr | Text chyby. | |
| idZurnalMax | idZurnal z posledního vráceného záznamu. | |
| aMJ | SMJ() | Pole vracených dat. |
Struktura SMJ :
| Pole | Typ/délka | Popis | Poznámka |
|---|---|---|---|
| IDMJ | Unikátní identifikace | ||
| KOD_MJ | (10) | Kód měrné jednotky | |
| NAZEV_MJ | (60) | Název měrné jednotky | |
| BlackBox | Doplňková informace |
| idZurnal | | Identifikátor záznamu v žurnálu změn | | | TimeStamp | DateTime | Časová značka databázové operace | | | TypOper | enTypOper | Typ databázové operace | |
Parametry (číselník parametrů)
Jde o číselník typů poznámek k produktům (zboží). V ESO9 může být definováno a používáno mnoho typů poznámek. Jde o uživatelský číselník, který může být průběžně doplňován.
Jen některé typy poznámek budou mít význam pro eshop. V parametrech ESO9 (přenášených do eshopu metodou CtiParametry) je definováno, jaké typy poznámek se používají k jakému účelu. Jen tyto se budou přenášet do eshopu.
Podrobný výčet použití parametrů v další metodě CtiZboziPozn.
Metoda: CtiZboziTypPozn
Vstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| idEshop | ID eshopu, pro který se mají načíst data | |
| idZurnal | Od jakého žurnálového záznamu načítat. | |
| id | IDTZBOZIPOZN požadovaného záznamu. |
Výstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| enResult | enResult | OK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby. |
| iErr | Upřesňující číslo chyby. | |
| sErr | Text chyby. | |
| idZurnalMax | idZurnal z posledního vráceného záznamu. | |
| aZboziTypPozn | SZboziTypPozn() | Pole vracených záznamů. |
Struktura SZboziTypPozn :
| Pole | Typ/délka | Popis | Poznámka |
|---|---|---|---|
| IDTZBOZIPOZN | Unikátní identifikace typu poznámky | ||
| KODTZBOZIPOZN | (6) | Kód typu | |
| NAZEVTZBOZIPOZN | (60) | Název typu | |
| BlackBox | Doplňková informace |
| idZurnal | | Identifikátor záznamu v žurnálu změn | | | TimeStamp | DateTime | Časová značka databázové operace | | | TypOper | enTypOper | Typ databázové operace | |
Parametry – produkty
Jde o hodnotu poznámky určitého typu na určitém zboží. Tedy parametry produktů. Viz popis k typům poznámek v metodě CtiZboziTypPozn.
Poznámka může obsahovat hodnoty různých datových typů (datum, číslo, krátký text, dlouhý text, odkaz na dokument). U určitého typu poznámky má smysl vyplňovat určitý typy hodnot.
Bude se využívat pro jazykové mutace krátkých (SZbozi.TEXT_1) a dlouhých popisů (SZbozi.POPIS) zboží, pokud budou potřeba (přeložený název zboží se předává v metodě CtiZnacZbozi ). Kódy poznámek, které budou určovat překlad do určitého jazyka, budou v parametrech aplikace
(ES_PoznZbozi_EN a ES_PoznZbozi_DE).
Bude se využívat k přenosu obrázků. Parametr ES_PoznZbozi_OBR může obsahovat až 8 kódů typů poznámek ke zboží – a určuje tak 8 možných obrázků v poznámce ke zboží.
Bude se využívat k přenosu dokumentů. Parametr ES_PoznZbozi_PRIL může obsahovat kód typu poznámky ke zboží, ve které je obsažen dokument přílohy (poznámek s přílohou může být víc).
Je to jedna z možných metod k předávání dokumentů a obrázků ke zboží. Dokumenty lze předávat přes poznámky určitých typů metodou CtiZboziPozn, popsanou zde, nebo metodou
CtiZboziDokument. Způsob závisí na implementaci práce s dokumenty a obrázky v ESO9.
Bude se využívat pro přenos ostatních parametrů zboží. Budou uvedeny v parametru
ES_PoznZbozi_PARAM - ostatní parametry zboží přenášené do e-shopu kromě OBR a PRIL.
Budou se přenášet jen poznámky, jejichž typ je uveden v některém z výše uvedených parametrů.
Poznámky ostatních typů nebudou mít význam pro eshop.
Metoda: CtiZboziPozn
Vstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| idEshop | ID eshopu, pro který se mají načíst data | |
| idZurnal | Od jakého žurnálového záznamu načítat. | |
| id | IDZBOZIPOZN požadovaného záznamu. | |
| iMax | Maximální počet záznamů, který se má načíst. 0 – všechny, které jsou k dispozici. |
Výstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| enResult | enResult | OK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby. |
| iErr | Upřesňující číslo chyby. | |
| sErr | Text chyby. | |
| iZbyva | Počet zbývajících záznamů za právě přenesenými | |
| idZurnalMax | idZurnal z posledního vráceného záznamu. | |
| aZboziPozn | SZboziPozn() | Pole vracených dat. |
Struktura SZboziPozn :
| Pole | Typ/délka | Popis | Poznámka |
|---|---|---|---|
| IDZBOZIPOZN | Unikátní identifikace poznámky | ||
| IDZBOZI | ID zboží, pro které je určena | Získáno metodou Zbozi | |
| IDTZBOZIPOZN | Typ poznámky | Získáno metodou ZboziTypPozn | |
| DTZBOZIPOZNDATUM | DateTime | Datumová položka poznámky | |
| HDZBOZIPOZNCISLO | Money | Číselná hodnota poznámky | |
| ZBOZIPOZNTEXT | (60) | Krátký text poznámky | |
| ZBOZIPOZNMEMO | Dlouhý text poznámky | ||
| POZNGUID | (40) | Odkaz do dokumentové databáze | Libovolná binární data, obrázek, dokument. Obsah se musí načíst speciální metodou CtiDokument. |
| BlackBox | Doplňková informace |
| idZurnal | | Identifikátor záznamu v žurnálu změn | | | TimeStamp | DateTime | Časová značka databázové operace | | | TypOper | enTypOper | Typ databázové operace | |
Poznámky:
GUID pro identifikaci obrázků/dokumentů. Binární data se musí načíst speciální metodou
CtiDokument. struktura nebude obsahovat měrnou jednotku. V ESO9 se v poznámce nevyskytuje. Musí se volně uvádět textově v popisu.
Do žurnálu se založení/modifikace poznámky ke zboží zapisuje pouze tehdy, když zboží je označeno pro e-shop.
Při označení zboží pro e-shop se vyvolá zápis poznámky ke zboží do žurnálu (těch typů poznámek, které do e-shopu patří).
Kategorie / skupina zboží
V ESO9 nejsou produkty zařazovány do kategorií ve stromové struktuře v obvyklém smyslu. Je používán číselník „Skupina zboží“. Ve START verzi je stromová struktura definována po dvou znacích v kódu skupiny. Zpravidla se takto používá u většiny zákazníků.
Příklad: ve start verzi každá úroveň použije dva znaky z kódu: 01 – kategorie1, 0101 – podkategorie1,
0102 – podkategorie2, …
Do jaké kategorie/skupiny je produkt zařazen, je určeno polem IDSKUPZBOZI ve struktuře SZBOZI.
Do eshopu bude přenášeno ve tvaru z ESO9 (při zpracování je třeba použít parametr ES_Kateg_Delka
- po kolika znacích se vytváří další úroveň stromu) a strom si sestaví eshop.
Metoda: CtiSkupZbozi
Vstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| idEshop | ID eshopu, pro který se mají načíst data | |
| idZurnal | Od jakého žurnálového záznamu načítat. | |
| id | IDSKUPZBOZI požadovaného záznamu. |
Výstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| enResult | enResult | OK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby. |
| iErr | Upřesňující číslo chyby. | |
| sErr | Text chyby. | |
| idZurnalMax | idZurnal z posledního vráceného záznamu. | |
| aSkupZbozi | SSkupZbozi() | Pole vracených dat. |
Struktura SSkupZbozi :
| Pole | Typ/délka | Popis | Poznámka |
|---|---|---|---|
| IDSKUPZBOZI | Unikátní identifikace skupiny | ||
| KOD_SKUP_ZBOZI | (20) | Kód skupiny zboží | Definuje i strom kategorie |
| NAZEV_SKUP_ZBOZI | (255) | Název skupiny zboží | |
| BlackBox | Doplňková informace |
| idZurnal | | Identifikátor záznamu v žurnálu změn | | | TimeStamp | DateTime | Časová značka databázové operace | | | TypOper | enTypOper | Typ databázové operace | |
Vazby mezi produkty
Umožňuje definovat vazbu mezi záznamy typu zboží. O jaký typ vazby se jedná je dáno číselnou položkou VLTYP_VAZBY.
V ESO9 je uloženo v tabulce ZBOZIMNSPOTR.
Které typy vazeb se mají přenášet určuje parametr ES_ZBOZIVAZBA. Seznam hodnot VLTYP_VAZBY z tabulky ZBOZIMNSPOTR. Jednotlivé hodnoty se oddělují středníkem. Například 2;3;4
Záznam o vazbě mezi produkty je do žurnálu změn zapsán, pokud současně platí:
VLTYP_VAZBY je uveden v parametru ES_ZBOZIVAZBA
Zboží/služba IDZBOZIN je označeno pro ESHOP
Zboží/služba IDZBOZIP je označeno pro ESHOP
Pokud je zboží z některé vazby odebráno z označení pro ESHOP, zrušení vazby se do žurnálu nepíše.
Předpokládá se, že ESHOP již toto zboží nezobrazuje a tudíž nezobrazuje ani vazbu.
Metoda: CtiZboziVazba
Vstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| idEshop | ID eshopu, pro který se mají načíst data | |
| idZurnal | Od jakého žurnálového záznamu načítat. | |
| id | IDZBOZIVAZBA požadovaného záznamu. | |
| iMax | Maximální počet záznamů, který se má načíst. 0 – všechny, které jsou k dispozici. |
Výstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| enResult | enResult | OK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby. |
| iErr | Upřesňující číslo chyby. | |
| sErr | Text chyby. | |
| iZbyva | Počet zbývajících záznamů za právě přenesenými | |
| idZurnalMax | idZurnal z posledního vráceného záznamu. | |
| aZboziVazba | SZboziVazba() | Pole vracených dat. |
Struktura SZboziVazba :
| Pole | Typ/délka | Popis | Poznámka |
|---|---|---|---|
| IDZBOZIVAZBA | Unikátní identifikace vazby | ||
| VLTYP_VAZBY | Smallint | Typ vazby | Viz tabulka níže |
| IDZBOZIN | ID nadřízeného zboží | Význam podle typu vazby | |
| IDZBOZIP | ID podřízeného zboží | Význam podle typu vazby | |
| POZICE | Pořadí zobrazení | Jen pro některé typy | |
| BlackBox | Doplňková informace |
| idZurnal | | Identifikátor záznamu v žurnálu změn | | | TimeStamp | DateTime | Časová značka databázové operace | | | TypOper | enTypOper | Typ databázové operace | |
Typy vazeb
Význam
VLTYP_VAZBY
Význam IDZBOZIN
Význam IDZBOZIP
(nadřízené)
(podřízené) zastupitelnost jednostranná
Zboží
Zastupitelné zboží zastupitelnost oboustranná
Zboží
Zastupitelné zboží recyklační poplatek
Zboží, ke kterému se definuje
Služba recyklačního recyklační poplatek poplatku
PROFI vazby
NNN
…
V PROFI implementaci je možné domluvit předávání dalších hodnot VLTYP_VAZBY s dalšími možnými významy. Pak stačí doplnit jejich hodnoty do parametru, zavolat „první naplnění“ do žurnálu a na straně ESHOPU doplnit správné zpracování/zobrazení takových vazeb. například vazba „ostatní také nakoupili“ nebo vazba „náhradní díly k nakoupenému zboží“
Sklady
Číselník skladů
Budou předávány jen sklady, které jsou přiřazeny eshopu, na který se metoda ptá.
Přiřazeno může být buď výčtem kódů skladů v interním parametr ESX_SKLAD nebo vazební tabulkou pro sklad v eshopu (zpravidla při práci s více eshopy) nebo profi verzí funkce fnESHOP_SkladProEshop.
Metoda: CtiSklad
Vstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| idEshop | ID eshopu, pro který se mají načíst data | |
| idZurnal | Od jakého žurnálového záznamu načítat. | |
| id | IDSKLAD požadovaného záznamu. |
Výstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| enResult | enResult | OK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby. |
| iErr | Upřesňující číslo chyby. | |
| sErr | Text chyby. | |
| idZurnalMax | idZurnal z posledního vráceného záznamu. | |
| aSklad | SSklad() | Pole vracených dat. |
Struktura: SSklad
| Pole | Typ/délka | Popis | Poznámka |
|---|---|---|---|
| IDSKLAD | Unikátní identifikace skladu | ||
| CIS_SKLAD | (6) | Číslo skladu | |
| NAZEV_SKLAD | (90) | Název skladu | |
| BlackBox | Doplňková informace |
| idZurnal | | Identifikátor záznamu v žurnálu změn | | | TimeStamp | DateTime | Časová značka databázové operace | | | TypOper | enTypOper | Typ databázové operace | |
Skladová dostupnost
Metoda: CtiZbozSkl
Metoda vrací změnu stavu na skladě u zboží pro eshop, zařazené na sklad pro eshop. Viz metody pro určení skladu a zboží pro eshop.
Vstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| idEshop | ID eshopu, pro který se mají načíst data | |
| idZurnal | Od jakého žurnálového záznamu načítat. | |
| id | IDZBOZSKL požadovaného záznamu. | |
| idZbozi | [*1] | Přímé čtení záznamů stavů na skladě pro zadané zboží mimo žurnál změn. |
| iMax | Maximální počet záznamů, který se má načíst. 0 – všechny, které jsou k dispozici. |
Výstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| enResult | enResult | OK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby. |
| iErr | Upřesňující číslo chyby. | |
| sErr | Text chyby. | |
| iZbyva | Počet zbývajících záznamů za právě přenesenými | |
| idZurnalMax | idZurnal z posledního vráceného záznamu. | |
| aZbozSkl | SZbozSkl() | Pole vracených dat. |
Struktura: SZbozSkl
| Pole | Typ/délka | Popis | Poznámka |
|---|---|---|---|
| IDZBOZSKL | Unikátní zboží na určitém skladě | ||
| IDSKLAD | Identifikátor skladu | ||
| IDZBOZI | Identifikátor zboží / produktu | Nebude přenášeno pro služby | |
| MNSTAV | Decimal (19,5) | Množství | Standardně se vrací volné fyzické množství |
| BlackBox | Doplňková informace |
| idZurnal | | Identifikátor záznamu v žurnálu změn | | | TimeStamp | DateTime | Časová značka databázové operace | | | TypOper | enTypOper | Typ databázové operace | |
[*1] – idZbozi na vstupu metody od verze 3.1.2: vstupní parametr IDZBOZI, který provádí přímé čtení záznamů stavů na skladě pro zadané zboží mimo žurnál změn. Načte všechny záznamy stavů na skladě pro požadované zboží pro všechny sklady z parametru. Přitom se nepoužije omezení vstupním parametrem iMax.
Pokud se zadá IDZBOZI = -1 načte stav na skladě pro všechno zboží označené pro eshop a pro všechny sklady z parametru. POZOR, může vrátit velké množství záznamů.
Další poznámky:
Stav na skladu bude vracen jen pro zboží. U služeb se neeviduje stav na skladu
Vraceno bude pouze u zboží (alespoň formálně) zařazeného na sklad.
Pokud u určitého zboží není žádný stav vrácen, znamená to, že má stav na skladě 0
Pokud je určité zboží na více skladech, bude vrcen stav za každý sklad. Podle nastavení eshopu se může zobrazovat stav po skladech nebo kumulovaně.
Jde o tabulku s potenciálně velkou obrátkou dat.
Od verze 2.3 je v metodách pro čtení produktů CtiZbozi a skladové dostupnosti CtiZbozSkl provedena optimalizace čtení žurnálu. Pokud na vstupu metod je iMax ( maximální počet
záznamů, který se má načíst – naplnění této hodnoty na vstupu se velmi doporučuje), je v návratové hodnotě iZbyva ( počet zbývajících záznamů za právě přenesenými ) nanejvýš hodnota iMax, i když zbývá více záznamů. Domníváme se, že tato změna neovlivní logiku čtení žurnálu a na druhé straně velmi zrychlí čtení dat těmito metodami.
Při označení zboží pro e-shop se vyvolá zápis stavu tohoto zboží na skladech do žurnálu, i když stav již byl naplněn před označením zboží pro e-shop.
Kurzy
Měny, které se mají přenášet, jsou určeny parametrem se seznamem kódů měn ES_MENY. Pokud bude parametr prázdný, žádné kurzy se přenášet nebudou.
Kurz může být určen pro každý den (podle toho, jestli firma používá denní nebo měsíční kurzovní lístek), tedy každý den může být doplněn jeden záznam. Přidal jsem tedy do struktury datum platnosti kurzu.
Od verze 2.7 je datum od kterého se přenášejí kurzy, určeno parametrem ES_KURSL_OD.
Metoda: CtiKurz
Vstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| idEshop | ID eshopu, pro který se mají načíst data | |
| idZurnal | Od jakého žurnálového záznamu načítat. | |
| id | IDKURZL požadovaného záznamu z dané tabulky. |
Výstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| enResult | enResult | OK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby. |
| iErr | Upřesňující číslo chyby. | |
| sErr | Text chyby. | |
| idZurnalMax | idZurnal z posledního vráceného záznamu. | |
| aKurz | SKurz() | Pole vracených dat. |
Struktura: SKurz
| Pole | Typ/délka | Popis | Poznámka |
|---|---|---|---|
| IDKURZL | Unikátní identifikace záznamu | ||
| KOD_MENY | (3) | Kód měny | |
| DTKURZL | DateTime | Datum, ke kterému je kurz platný | |
| HDKURZ | Decimal (19,6) | Hodnota kurzu | Předává se devizy střed |
| BlackBox | Doplňková informace | ||
| idZurnal | Identifikátor záznamu v žurnálu změn | ||
| TimeStamp | DateTime | Časová značka databázové operace | |
| TypOper | enTypOper | Typ databázové operace |
Zákazníci
V ESO9 může každý subjekt (firma i soukromá osoba) mít přiřazeno více osob i adres. Jedna osoba a jedna adresa je zvolena jako hlavní.
Nemůže existovat osoba bez nadřízeného subjektu – i když u soukromé osoby je takový subjekt v podstatě formální.
Kromě příznaku přiřazení určitému eshopu, který je filtrem pro načtení metodou webové služby je důležitým příznakem subjektu / osoby / adresy i příznak aktivity. Každou z těchto entit je možné v ESO9 označit za neaktivní. Zpravidla tyto záznamy není možné mazat, protože jsou přes ID navázány na doklady. Tyto neaktivní entity, pokud i nadále mají příznak eshopu budou metodami přenášeny s tímto příznakem neaktivity.
Do struktur pro subjekt, adresu a osobu je doplněno FID/FGUID – cizí číselné nebo textové ID záznamu. Hlavně pro spárování při zakládání nového subjektu. Bude použitelné i při dohledání rozdílů mezi databázemi.
Firmy
Metoda požadující subjekty pro určitý eshop bude načítat jen takové, ve kterých existuje alespoň jedna osoba přiřazená tomuto eshopu.
Bylo by možné dávat příznak eshopu i na subjekt – ale to by bylo duplicitní a potenciálně nekonzistentní značení.
Metoda: CtiSubjekt
Vstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| idEshop | ID eshopu, pro který se mají načíst data | |
| idZurnal | Od jakého žurnálového záznamu načítat. | |
| id | IDSUBJEKT požadovaného záznamu. | |
| iMax | Maximální počet záznamů, který se má načíst. 0 – všechny, které jsou k dispozici. |
Výstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| enResult | enResult | OK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby. |
| iErr | Upřesňující číslo chyby. | |
| sErr | Text chyby. | |
| iZbyva | Počet zbývajících záznamů za právě přenesenými | |
| idZurnalMax | idZurnal z posledního vráceného záznamu. | |
| aSubjekt | SSubjekt() | Pole vracených dat. |
Struktura: SSubjekt
| Pole | Typ/délka | Popis | Poznámka |
|---|---|---|---|
| IDSUBJEKT | Unikátní identifikace subjektu | ||
| SUBJ_NAZEV | (255) | Plný obchodní název podle OR | Zpravidla jméno a příjmení u soukromé osoby; Z |
| ICO | (20) | IČO | Nebo rodné číslo; Z |
| DIC | (20) | DIČ | Z |
IDSUBJADR
Hlavní adresa subjektu
Vazba na číselník adres [1]
MNPROCPRIRAZKA
Decimal
Procento přirážky na veškeré zboží
Pokud jde o slevu je číslo
(19,5)
(Pro typ subjektu ODB) záporné.
VLSTAVSUBJEKT
Smallint
Aktivita subjektu
0=Aktivní;
1=Neaktivní;
IDCENSKUP
ID cenové skupiny subjektu.
Číselník, čte se metodou
(Pro typ subjektu ODB)
CtiCenSkup.
FID
BigInt
ID záznamu v databázi eShop
Z
FGUID
(40)
ID záznamu v databázi eShop
Z
VLNEREG
Smallint
Neregistrovaný subjekt – subjekt z
0=Ne; 1=Ano.
Z jednorázového nákupu se musí
Použije se zejména při také předat. založení z eshopu. Při načtení je naplněno pouze tehdy, když se v ESO9 eviduje,
BlackBox
Doplňková informace,
Z pro čtení i zápis
| idZurnal | | Identifikátor záznamu v žurnálu změn | | | TimeStamp | DateTime | Časová značka databázové operace | | | TypOper | enTypOper | Typ databázové operace | |
Poslední sloupec „Z“ označuje položky, které se ze struktury přebírají do zakládaného subjektu, Z! je povinná položka.
Změnu atributů IDCENSKUP, MNPROCPRIRAZKA v tabulce SUBJVTSUBJ hlídá její trigger, ale zapisuje tuto změnu do žurnálu jako změnu tabulky SUBJEKT. Týká se jen záznamů s typem subjektu ODB.
Poznámky:
[1] - IDSUBJADR - Identifikace hlavní adresy subjektu se naplní jen při čtení. Zatím není určena pro zápis. Pokud se vrací IDSUBJADR, které ESHOP ještě nemá ve své databázi, buď ještě nedošlo k jeho zápisu do žurnálu nebo tato adresa není přiřazena do ESHOPu. Pak ji může ESHOP ignorovat nebo si uložit IDSUBJADR a počkat, až si ji načte metodou pro čtení adres.
Osoby
Každý subjekt může mít přiřazeno libovolné množství osob. Jen některé budou určeny pro eshop, na který se bude metoda ptát. Tyto se budou vracet.
Metoda: CtiSubjOsoba
Vstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| idEshop | ID eshopu, pro který se mají načíst data | |
| idZurnal | Od jakého žurnálového záznamu načítat. | |
| id | IDSUBJOSOBA požadovaného záznamu. | |
| iMax | Maximální počet záznamů, který se má načíst. 0 – všechny, které jsou k dispozici. |
Výstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| enResult | enResult | OK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby. |
| iErr | Upřesňující číslo chyby. | |
| sErr | Text chyby. | |
| iZbyva | Počet zbývajících záznamů za právě přenesenými | |
| idZurnalMax | idZurnal z posledního vráceného záznamu. | |
| aSubjOsoba | SSubjOsoba() | Pole vracených dat. |
Struktura: SSubjOsoba
| Pole | Typ/délka | Popis | Poznámka |
|---|---|---|---|
| IDSUBJOSOBA | Unikátní identifikace osoby | ||
| IDSUBJEKT | Identifikace subjektu | Subjekt, kterému je osoba přiřazena | |
| IDSUBJADR | Identifikace hlavní adresy osoby | Pokud je přiřazena [2] | |
| JMENO | (100) | Jméno a příjmení | Historicky v jedné položce; Z |
| TEL | (30) | Telefon | Z |
| MOBIL | (30) | Mobilní číslo | Z |
| FAX | (30) | Fax | Z |
| (100) | [1]; Z | ||
| VLSTAVSUBJOSOBA | Smallint | Příznak aktivity osoby | 0=Aktivní; 1=Neaktivní |
| FID | Int/BigInt | ID záznamu v databázi eShop | Z |
| FGUID | (40) | ID záznamu v databázi eShop | Z |
| BlackBox | Doplňková informace | Z pro čtení i zápis |
| idZurnal | | Identifikátor záznamu v žurnálu změn | | | TimeStamp | DateTime | Časová značka databázové operace | | | TypOper | enTypOper | Typ databázové operace | |
Poznámka [1]:
Email osoby je unikátním loginem osoby.
Je třeba do editace osoby doplnit kontrolu, že email je vyplněn, je pro určitý eshop unikátní – aby uživatel mohl vyřešit již v okamžiku editace emailu či přiřazení k eshopu.
Poslední sloupec „Z“ označuje položky, které se ze struktury přebírají do zakládané osoby, Z! je povinná položka.
[2] - IDSUBJADR - Identifikace hlavní adresy osoby se naplní jen při čtení. Zatím není určena pro zápis.
Pokud se vrací IDSUBJADR, které ESHOP ještě nemá ve své databázi, buď ještě nedošlo k jeho zápisu do žurnálu nebo tato adresa není přiřazena do ESHOPu. Pak ji může ESHOP ignorovat nebo uložit
IDSUBJADR a počkat, až si ji načte metodou pro čtení adres.
Adresy
Každý subjekt může mít přiřazeno libovolné množství adres. Jen některé mohou být určeny pro eshop, na který se bude metoda ptát. Tyto se budou vracet.
Adresa má rozlišení typu: fakturační / dodací / nerozlišeno (stav „nerozlišeno“ lze s výhodou vyžít pro volbu „dodací adresa je stejná jako fakturační“).
Metoda: CtiSubjAdr
Vstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| idEshop | ID eshopu, pro který se mají načíst data | |
| idZurnal | Od jakého žurnálového záznamu načítat. | |
| id | IDSUBJADR požadovaného záznamu. | |
| iMax | Maximální počet záznamů, který se má načíst. 0 – všechny, které jsou k dispozici. |
Výstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| enResult | enResult | OK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby. |
| iErr | Upřesňující číslo chyby. | |
| sErr | Text chyby. | |
| iZbyva | Počet zbývajících záznamů za právě přenesenými | |
| idZurnalMax | idZurnal z posledního vráceného záznamu. | |
| aSubjAdr | SSubjAdr() | Pole vracených dat. |
Struktura: SSubjAdr
| Pole | Typ/délka | Popis | Poznámka |
|---|---|---|---|
| IDSUBJADR | Unikátní identifikace adresy | ||
| IDSUBJEKT | Identifikace subjektu | Subjekt, kterému je osoba přiřazena | |
| IDSUBJOSOBA | Identifikace hlavní osoby adresy | Pokud je přiřazena [1] | |
| SUBJADR_NAZEV | (255) | Doplňující název subjektu k adrese | Např. název pobočky; Z |
| ULICE | (60) | Ulice a číslo | Z historických důvodů v jedné položce; Z |
| MESTO | (60) | Město, obec | Z |
| PSC | (10) | PSČ | Z |
| POZNAMKA | (60) | Poznámka k adrese | Například o způsobu doručení na toto místo; Z |
| IDSTAT | Identifikátor státu | Vazba na číselník států; Z | |
| VLSTAVSUBJADR | Smallint | Příznak aktivity adresy | 0=Aktivní; 1=Neaktivní |
| VLSUBJADR_TYP | Smallint | Typ adresy | 0=neurčeno; 1=fakturační; 2=dodací; Z |
| FID | Int/BigInt | ID záznamu v databázi eShop | Z |
| FGUID | (40) | ID záznamu v databázi eShop | Z |
| BlackBox | Doplňková informace | Z pro čtení i zápis | |
| idZurnal | Identifikátor záznamu v žurnálu změn | ||
| TimeStamp | DateTime | Časová značka databázové operace | |
| TypOper | enTypOper | Typ databázové operace |
Poslední sloupec „Z“ označuje položky, které se ze struktury přebírají do zakládané adresy, Z! je povinná položka.
[1] - IDSUBJOSOBA - Identifikace hlavní osoby adresy se naplní jen při čtení. Zatím není určena pro zápis. Pokud se vrací IDSUBJOSOBA, které ESHOP ještě nemá ve své databázi, buď ještě nedošlo k jeho zápisu do žurnálu nebo tato osoba není přiřazena do ESHOPu. Pak ji může ESHOP ignorovat nebo uložit IDSUBJOSOBA a počkat, až si ji načte metodou pro čtení adres.
Doklady – objednávky a faktury
Doklady se rozumí objednávky a faktury.
Objednávky jsou zakládané eshopem, ale je možné do eshopu vracet i jiné typy dokladů (odvozené od objednávek, ale zakládané v ESO9 jako jejich následníci)
Typy dokladů
Předává se číselník typů dokladů pro objednávky, faktury a stavy dokladů, od verze 3.1.0
Metoda: CtiTypDok
Vstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| idEshop | ID eshopu, pro který se mají načíst data | |
| idZurnal | Od jakého žurnálového záznamu načítat | |
| id | IDTYPDOK požadovaného záznamu |
Výstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| enResult | enResult | OK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby. |
| iErr | Upřesňující číslo chyby. | |
| sErr | Text chyby. | |
| idZurnalMax | idZurnal z posledního vráceného záznamu. | |
| aTypDok | STypDok() | Pole vracených dat. |
Struktura: STypDok
| Pole | Typ/délka | Popis | Poznámka |
|---|---|---|---|
| IDTYPDOK | Unikátní identifikace stavu | ||
| TYP_DOK | (10) | Kód typu dokladu | Například POB, FVU |
| NAZEV_TYPDOK | (30) | Název typu dokladu | Například „Faktura vydaná účetní“ |
| VLUCEL | smallint | Účel typu dokladu – viz popis níže | Situace, v jaké bude typ dokladu použit |
| idZurnal | Identifikátor záznamu v žurnálu změn | ||
| TimeStamp | DateTime | Časová značka databázové operace | |
| TypOper | enTypOper | Typ databázové operace |
VLUCEL – účel typu dokladu.
Situace, v jaké bude typ dokladu použit. Je dáno i způsobem, kam byl typ zadán do parametrů.
VLUCEL
Popis
Poznámka
Objednávka založená z ESHOPU
Podle parametru ESX_TYPDOK_OBJ
Faktura
Podle parametru ESX_TYPDOK_FAV
Další typy objednávek, založené v PROFI
Podle parametru ESX_TYPDOK_OBJ2, může úpravě, nebo založení jako následníci být více hodnot objednávky z ESHOPU
Stavy dokladů
Předává se číselník stavů objednávek a faktury. Od verze 3.0.2 se stavy vrací za všechny typy předávané v číselníku typů dokladů. Dříve se předávaly jen pro objednávky.
Stav dokladu je uživatelským číselníkem – stav dokladu je reprezentován ID záznamu z tohoto číselníku a IDTYPDOK určuje, pro jaký typ dokladu je stav určen.
Případné překlady stavů dokladů budou přiřazeny až v eshopu.
Metoda: CtiObjStav
Název metody zůstává Cti Obj Stav, i když již není určen jen pro stavy objednávek, ale pro všechny typy. Aby eshopy nemusely měnit rozhraní. Je jen doplněn atribut IDTYPDOK.
Vstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| idEshop | ID eshopu, pro který se mají načíst data | |
| idZurnal | Od jakého žurnálového záznamu načítat | |
| id | IDSTAVHDOK požadovaného záznamu |
Výstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| enResult | enResult | OK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby. |
| iErr | Upřesňující číslo chyby. | |
| sErr | Text chyby. | |
| idZurnalMax | idZurnal z posledního vráceného záznamu. | |
| aObjStav | SObjStav() | Pole vracených dat. |
Struktura: SObjStav
| Pole | Typ/délka | Popis | Poznámka |
|---|---|---|---|
| IDSTAVHDOK | Unikátní identifikace stavu | ||
| IDTYPDOK | ID typu dokladu, pro který je stav určen | Typy se vrací metodou CtiTypDok (od verze 3.0.2) | |
| VLTYPDOK | smallint | Typ dokladu – historická hodnota | Ve start verzi 0=objednávka. Historická hodnota, nyní přesněji řeší IDTYPDOK |
| VLSTAV | Smallint | Číselná hodnota stavu | |
| STAV | (30) | Stručný textový popis stavu | Z těchto hodnot vybírá uživatel ESO9 při změně stavu |
| POPISVYZNAMU | (200) | Popis stavu | Jen doplňková informace |
| idZurnal | Identifikátor záznamu v žurnálu změn |
změn
TimeStamp
DateTime
Časová značka databázové
operace
TypOper
enTypOper
Typ databázové operace
Objednávky
Obecně mohou doklady zakládané eshopem být více typů (poptávky, předobjednávky, objednávky,
…) podle složitosti schvalování na obchodním oddělení a charakteru prodávaných produktů.
Ve START verzi budeme pracovat s jedním typem dokladu – objednávkou (ve struktuře VLTYPDOK=0) a odpovídající IDTYPDOK.
Hlavičky a řádky objednávek
Žurnálově změny hlaviček i řádků objednávek se nesledují samostatně, protože by to znamenalo velký objem záznamů v žurnálu.
V pravidelných cyklech se spouští SQL JOB, který najde poslední žurnálový záznam pro objednávky
(načte datum a čas poslední změny). Poté projde objednávky definovaného typu a vzoru, a všechny, které mají na hlavičce datum a čas založení/změny vyšší než poslední žurnálový záznam, zapíše do žurnálu (jednou pro každou takovou hlavičku).
Změny složek se nesledují vůbec – každá změna složky zapisuje do hlavičky a tím ji mění. Sledovat hlavičky tedy stačí.
Je tedy jen jedna metoda CtiObjednavka, která vrací pole hlaviček objednávek, ale struktura hlavičky obsahuje vnořené pole se všemi složkami této objednávky.
Metoda: CtiObjednavka
Vstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| idEshop | ID eshopu, pro který se mají načíst data | |
| idZurnal | Od jakého žurnálového záznamu načítat. | |
| id | IDHDOK požadovaného záznamu. | |
| iMax | Maximální počet záznamů, který se má načíst. 0 – všechny, které jsou k dispozici. |
Výstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| enResult | enResult | OK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby. |
| iErr | Upřesňující číslo chyby. | |
| sErr | Text chyby. | |
| iZbyva | Počet zbývajících záznamů za právě přenesenými (zjišťuje se nanejvýš pro iMax záznamů) | |
| idZurnalMax | idZurnal z posledního vráceného záznamu. | |
| aObjHlav | SObjHlav() | Pole vracených objednávek. |
Struktura: SObjHlav
IDHDOK
Unikátní identifikace dokladu
FGUID_OBJ
(40)
FGUID objednávky
[6] Pokud ESHOP eviduje, je vhodné
Z v ESHOPu předávat. Pojistka proti opakovanému založení stejné objednávky při výpadku konektivity
IDTYPDOK
ID typu dokladu
Typy se vrací metodou CtiTypDok
(od verze 3.1.0).
Při založení se nepoužije.
VLTYPDOK smallint
Podtyp objednávky
Ve start verzi 0=objednávka.
Přesnější význam má IDTYPDOK
CIS_DOK
(20)
Číslo dokladu
[1],
(Z) generované v ESO9 viz parameter ES_ZAPISOBJ_CIS_DOK
CIS_DOK_ESHOP
(30)
Číslo objednávky v
Pokud je domluveno jeho předávání.
Z
ESHOPu
Může být předáváno i do CIS_DOK.
V ESO9 se zapisuje do JEJICH_CISDOK.
V_SYM
(30)
Variabilní symbol
Pokud se na ESHOPu generuje V_SYM
Z pro platbu. V CZ legislativě by měl být max. na 10 číslic
IDSUBJEKT
Identifikace subjektu /
Při zápisu se naplní i do IDSUBJEKTP
Z firmy
(od verze 2.7)
IDSUBJOSOBA
ID osoby subjektu,
Při zápisu se naplní i do
Z která objednala
IDSUBJOSOBAP (od verze 2.7)
IDSUBJADR_F
ID fakturační adresy
Z subjektu
IDSUBJADR_D
ID adresy subjektu,
Z kam dodat
FGUID_SUBJEKT
(40)
FGUID subjektu / firmy
Je-li vyplněno má přednost před
Z
IDSUBJEKT
FGUID_SUBJOSOBA
(40)
FGUID osoby subjektu,
Je-li vyplněno má přednost před
Z která objednala
IDSUBJOSOBA
FGUID_SUBJADR_F
(40)
FGUID fakturační
Je-li vyplněno má přednost před
Z adresy subjektu
IDSUBJADR_F
FGUID_SUBJADR_D
(40)
FGUID adresy subjektu,
Je-li vyplněno má přednost před
Z kam dodat
IDSUBJADR_D
NAZEV_PRIJEMCE
(120)
Jméno příjemce, firma
[2] Případně ručně zadané údaje
Z adresy
ULICE_PRIJEMCE
(60)
Ulice a číslo
[2]
Z
MESTO_PRIJEMCE
(60)
Město, obec
[2]
Z
PSC_PRIJEMCE
(10)
PSČ
[2]
Z
DTPORIZENI
Datetime
Datum pořízení
[3] Jen jako datum bez času
Z dokladu
IDPODMINKY_PLAT
ID platební podmínky
[4] vazba na číselník.
Z pro VLDRUHPODM = 1
Struktura SDopPlatPodm
IDPODMINKY_PREP
ID přepravní podmínky
[4] vazba na číselník
Z pro VLDRUHPODM = 2
IDPODMINKY_DOD
ID dodací podmínky
[4] vazba na číselník (od verze 2.6)
Z pro VLDRUHPODM = 0
TEXTPOZN
(2500)
Poznámka
Například další požadavky, upřesnění
Z dodání, …
HDKUHRADEVAL
Money
K úhradě v měně
Z dokladu (včetně DPH)
HDKUHRADEKC
Money
K úhradě v CZK (včetně
… obecněji v domácí měně aplikace
Z
DPH)
HDKUHRADE_ZAKLAD Money
K úhradě v CZK (bez
Určí se jako součet základu
DPH) jednotlivých daní
KOD_MENY
(3)
Kód měny
Vyplnit vždy. Pro domácí případně
Z měnu dopočítat.
HDKURZHDOK
Decimal
Použitý kurz
Pokud jde o jinou, než domácí měnu.
Z
(19,14)
VLUHRAZENO
Smallint
Příznak, že objednávka
[5] Například: 0=ne, 1=ano, je uhrazena
2=částečně
IDSTAVHDOK
ID stavu objednávky
Vazba na číselník stavů ObjStav
KOD_VYDEJNY
(30)
Kód výdejního místa
Pokud se předává dopravce balíku,
Z může být předán i kód výdejního místa. Například pro Zásilkovnu.
BlackBox
Doplňková informace, lze použít pro čtení objednávek i pro zápis objednávek. aObjSloz
SObjSloz()
Pole řádků objednávky
Typ definován dále
idZurnal
Identifikátor v žurnálu
změn
TimeStamp
DateTime
Časová značka
databázové operace
TypOper
enTypOper
Typ databázové
operace
Poznámky:
[1] Číslo dokladu: ve standardu je číslo dokladu generováno v ESO9. Pokud ale je na vstupu, chová se podle parametru ES_ZAPISOBJ_CIS_DOK.
[2] Dodací adresa může být zadána právě jedním ze dvou způsobů: buď odkazem do číselníku adres ( IDSUBJADR_D ) nebo ručně zadanými údaji - pokud ji zákazník nechce zakládat do svých údajů, například jde o jednorázový nákup na tuto adresu.
I když bude přebráno ID adresy, bude její obsah do hlavičky vyplněn – z důvodu fixace aktuálně použité adresy
[3] Datum pořízení: kromě toho evidujeme technické datum a čas založení záznamu
[4] je přenášen číselník přepravních, dodacích a platebních podmínek z ESO9, metodou
CtiDopPlatPodm, struktura SDopPlatPodm. ESHOP si spáruje své číselníky doprav, způsobu dodání a plateb s ID z číselníku ESO9.
- Většinou stačí přepravní (například dopravce) a platební podmínky (například dobírka)
- Pokud však používáte jako dopravce například Českou poštu, můžete chtít nabídnou na ESHOPU i službu tohoto dopravce: třeba: Balík do ruky / Balík na poštu / Balík do balíkovny – a na to se používají dodací podmínky v rámci přepravních podmínek
(tedy dopravce). V ESO9, například při použití Balíkobotu kombinace
IDPODMINKY_PREP / IDPODMINKY_DOD určí dopravce a jeho službu.
[5] příznak úhrady objednávky není na objednávce evidován, zjišťuje se dynamicky z historie dokladů – což jednak může dlouho trvat a hlavně se změna tohoto stavu jednoduše neodrazí v žurnálu změn- řešením je pouštět v JOB, který tento příznak bude naplňovat a tím vyvolá zápis do žurnálu změn.
[6] atribut FGUID_OBJ jako identifikátor objednávky v ESHOPu. Pokud ESHOP nějaký identifikátor eviduje, je vhodné předávat. Slouží jako pojistka proti opakovanému založení stejné objednávky při výpadku konektivity.
Příklad: Pokud při založení objednávky z ESHOPu do ESO9 vypadla konektivita, objednávka ale
již byla v ESO9 založena a ESHOP o tom „neví“, pokusí se ji založit znovu. Bez předávaného
FGUID_OBJ se objednávka založí znovu. Pokud bylo předáno (stejné) FGUID_OBJ při obou
pokusech, ESO9 při druhém dohledá FGUID_OBJ, objednávku již nezakládá, pouze opakovaně
vrátí údaje, jako při prvním založení.
Poslední sloupec „Z“ označuje položky, které se ze struktury přebírají do zakládané objednávky, Z! je povinná položka. V hlavičce objednávky tedy není žádná povinná položka
(dokonce ani IDSUBJEKT / FGUID_SUBJEKT, i když v některých implementacích by objednávka bez vazby na subjekt nemusela být povolena.)
Práce s Blackboxem při zakládání objednávky z ESHOPU: Použije se Blackbox v hlavičce i složkách objednávky - pokud je některý z nich v metodě pro založení objednávky vyplněn volá se procedura pro uživatelskou akci s Blackboxem. Tuto standardně prázdnou proceduru spESHOP_BlackBoxZapis lze přepsat jako uživatelský objekt (je stejná i pro založení subjektu).
Struktura pro řádky objednávek: SObjSloz
| Pole | Typ/délka | Popis | Poznámka |
|---|---|---|---|
| IDSDOK | Jednoznačný identifikátor složky / řádku | ||
| IDHDOK | Vazba na hlavičku dokladu | ||
| PORADI | Pořadí řádku v dokladu | Pomůže udržet stejné uspořádání řádů jako při založení | |
| VLTYP_SLOZ | Smallint | Typ složky | 0=Ostatní; 1=Zboží; 2=Služba; Z |
| IDZBOZI | Identifikátor zboží | Vazba na číselník v případě typů 1 a 2; Z! povinná | |
| SLOZKA_IDENT | (30) | Krátká identifikace | Zpravidla kód zboží, případně volná pro typ ostatní; Z |
| TEXT_SLOZ | Volný text | Z | |
| IDSKLAD | Identifikátor skladu | U objednávky není povinná, ale při objednání z určitého skladu je možné vyplnit | |
| MNPOCETMJ | Decimal (19,5) | Objednané množství | Z |
| IDMJ | Jednotka | Vazba na číselník MJ | |
| RVCENA | Smallint | Určení řídící ceny | 0=Neurčeno; 1=JCENAVAL; 2=JCENAKC; 3=JCENADPH; 4=CCENAVAL; 5=CCENAKC; 6=CCENADPH; 7=JCENAVALDPH; 8=CCENAVALDPH; Z |
| HDJCENAVAL | Money | Jednotková cena v měně dokladu | Při zakládání objednávky stačí jedna z cen. Podle hodnoty RVCENA |
| HDJCENAKC | Money | Jednotková cena v domácí měně | Z |
| HDJCENADPH | Money | Jednotková cena s DPH v domácí měně | Z |
| HDCCENAVAL | Money | Celková cena v měně dokladu | |
| HDCCENAKC | Money | Celková cena v domácí měně bez DPH | |
| HDCCENADPH | Money | Celková cena v domácí měně s DPH |
Money
Jednotková cena v měně
Od verze 2.4 dokladu s DPH
HDCCENAVALDPH
Money
Celková cena v měně
Od verze 2.4 dokladu s DPH
MNSAZBADPH
Decimal
| Pole | Typ/délka | Popis | Poznámka |
|---|---|---|---|
| IDHDOK | Unikátní identifikace dokladu | ||
| IDTYPDOK | ID typu dokladu | Typy se vrací metodou CtiTypDok (od verze 3.1.0) | |
| CIS_DOK | (20) | Číslo faktury generované v ESO9 | |
| CIS_DOK_ESHOP | (30) | Číslo objednávky v ESHOPu | Pokud se provedlo jeho předávání do objednávky a přeneslo do faktury; čte se z JEJICH_CISDOK |
| V_SYM | (30) | Variabilní symbol | |
| IDSUBJEKT | Identifikace subjektu / firmy | ||
| IDSUBJOSOBA | ID osoby subjektu, která objednala | ||
| IDSUBJADR_F | ID fakturační adresy subjektu | ||
| IDSUBJADR_D | ID adresy subjektu, kam dodat | ||
| NAZEV_PRIJEMCE | (120) | Jméno příjemce, firma | Případně ručně zadané údaje adresy |
| ULICE_PRIJEMCE | (60) | Ulice a číslo | |
| MESTO_PRIJEMCE | (60) | Město, obec | |
| PSC_PRIJEMCE | (10) | PSČ | |
| DTPORIZENI | Date | Datum pořízení dokladu | Jen jako datum bez času |
| DTZDANITPLN | Date | Datum zdanitelného plnění | |
| DTSPLATNO | Date | Datum splatnosti | |
| IDPODMINKY_PREP | ID přepravní podmínky | Vazba na číselník podmínek, pro VLDRUHPODM = 1, struktura SDopPlatPodm | |
| IDPODMINKY_PLAT | ID platební podmínky | Vazba na číselník pro VLDRUHPODM = 2 | |
| IDPODMINKY_DOD | ID dodací podmínky | Vazba na číselník (od verze 2.6) pro VLDRUHPODM = 0 | |
| HDKUHRADEVAL | Money | K úhradě v měně dokladu (včetně DPH) | |
| HDKUHRADEKC | Money | K úhradě v CZK (včetně DPH) | Obecněji v domácí měně aplikace |
| HDKUHRADE_ZAKLAD | Money | K úhradě v CZK (bez DPH) | |
| Datum pořízení dokladu |
Jen jako datum bez času
DTZDANITPLN
Date
Datum zdanitelného plnění
DTSPLATNO
Date
Datum splatnosti
IDPODMINKY_PREP
ID přepravní podmínky vazba na číselník Podmínek, pro VLDRUHPODM = 1
Struktura SDopPlatPodm
IDPODMINKY_PLAT
ID platební podmínky vazba na číselník pro VLDRUHPODM = 2
IDPODMINKY_DOD
ID dodací podmínky vazba na číselník (od verze 2.6) pro VLDRUHPODM = 0
HDKUHRADEVAL
Money
K úhradě v měně dokladu (včetně
DPH)
HDKUHRADEKC
Money
K úhradě v CZK (včetně DPH)
… obecněji v domácí měně aplikace
HDKUHRADE_ZAKLAD
Money
K úhradě v CZK (bez DPH)
Určí se jako součet základu jednotlivých daní
KOD_MENY
(3)
Kód měny
Vyplnit vždy. Pro domácí případně měnu dopočítat.
HDKURZHDOK
Decimal
Použitý kurz
Pokud jde o jinou, než domácí
(19,14) měnu. aFakSloz
SFakSloz()
Pole řádků faktury
Typ definován dále
BlackBox
Doplňková informace
idZurnal
Identifikátor v žurnálu změn
TimeStamp
DateTime
Časová značka databázové
operace
TypOper
enTypOper
Typ databázové operace
Struktura pro řádky faktur: SFakSloz
| Pole | Typ/délka | Popis | Poznámka |
|---|---|---|---|
| IDSDOK | Jednoznačný identifikátor složky / řádku | ||
| IDHDOK | Vazba na hlavičku faktury | ||
| PORADI | Pořadí řádku v dokladu | Pomůže udržet stejné uspořádání řádů jako při založení | |
| VLTYP_SLOZ | Smallint | Typ složky, stejný jako v číselníku ZBOZI | 0=Ostatní; 1=Zboží; 2=Služba |
| IDZBOZI | Identifikátor zboží | Vazba na číselník v případě typů 1 a 2 povinná | |
| SLOZKA_IDENT | (30) | Krátká identifikace | Zpravidla kód zboží, případně volná pro typ ostatní |
| TEXT_SLOZ | Volný text | ||
| MNPOCETMJ | Decimal (19,5) | Množství | |
| IDMJ | Jednotka | Vazba na číselník MJ | |
| HDJCENAVAL | Money | Jednotková cena v měně dokladu | |
| HDJCENAKC | Money | Jednotková cena v domácí měně | |
| HDCCENAKC | Money | Celková cena v domácí měně bez DPH | |
| HDCCENADPH | Money | Celková cena v domácí měně s DPH | |
| MNSAZBADPH | Decimal (3,1) | DPH sazba | Hodnota sazby v procentech |
| BlackBox | Doplňková informace |
Vazba objednávky – faktury
Metoda vrací vazební záznamy z historie dokladů. Konkrétně pouze vazbu mezi objednávkou a fakturou a jen takovou, která má pro e-shop smysl.
Vazba přichází vždy celá pro vstupní objednávku – nebude se tedy přidávat/ubírat jeden následník v již existující vazbě.
Jako téměř jediná struktura nemá identifikátor záznamu. Zastupuje jej ID objednávky.
Metoda: CtiDokVazba
Vstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| idEshop | ID eshopu, pro který se mají načíst data | |
| idZurnal | Od jakého žurnálového záznamu načítat. | |
| id | IDHDOK objednávky pro výpis vazby iMax Maximální počet záznamů, který se má načíst. 0 – všechny, které jsou k dispozici. |
Výstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| enResult | enResult | OK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby. |
| iErr | Upřesňující číslo chyby. | |
| sErr | Text chyby. | |
| iZbyva | Počet zbývajících záznamů za právě přenesenými | |
| idZurnalMax | idZurnal z posledního vráceného záznamu. | |
| aDokVazba | SDokVazba() | Pole vracených vazeb. |
Struktura: SDokVazba
| Pole | Typ/délka | Popis | Poznámka |
|---|---|---|---|
| Struktura nemá identifikátor | |||
| IDHDOKP | ID hlavičky předchůdce – tedy objednávky | ||
| aDokN | Int() | Pole ID hlaviček faktur, které jsou následníkem objednávky | Je předávána vždy celá vazba |
| idZurnal | Identifikátor záznamu v žurnálu změn | ||
| TimeStamp | DateTime | Časová značka databázové operace | |
| TypOper | enTypOper | Typ databázové operace |
Dokumenty k dokladům a zboží
Metody umožňují načítání binárních souborů k dokladům (faktur, objednávek, smluv, dodacích listů,
…) k již přeneseným dokladům (objednávkám, fakturám),
Metody umožňují načítání binárních souborů ke zboží (obrázky, návody, certifikáty, …), pokud se to neprovádí přes poznámky ke zboží.
Ke zvýšení přehlednosti, o jaké doklady jde, slouží číselník typů dokumentů.
K dokumentům předáváme dva číselníky typů dokumentů, kvůli zpětné kompatibilitě, než ESHOP přejde na novější typ číselníku.
- Starší typ, do verze 2.8 konektoru (a do verze 6.2 ESO9), který vychází z číselníku
OBECCIS, reprezentován metodou CtiDokladDokumentTyp .
- Novější typ, od verze 3.0 konektoru (a od verze 6.3 ESO9), který vychází z číselníku
TYPDOC, reprezentován metodou CtiDokladTypDoc .
Ke zboží předáváme jen novější číselník typů dokumentů:
- Novější typ, od verze 3.0 konektoru (a od verze 6.3 ESO9), který vychází z číselníku
TYPDOC, reprezentován metodou CtiZboziTypDoc .
Metoda CtiDokladDokument pak přenáší z ESO9 do ESHOPu seznam dokumentů k dokladům.
Dokument je reprezentován DocGUID. Samotné načtení binárního obsahu dokumentu musíte provést metodou CtiDokument.
Metoda CtiZboziDokument pak přenáší z ESO9 do ESHOPu seznam dokumentů ke zboží (produktu).
Dokument je reprezentován DocGUID. Samotné načtení binárního obsahu dokumentu musíte provést metodou CtiDokument.
Typy dokumentů k dokladům
Metoda: CtiDokladTypDoc
Novější typ číselníku od konektoru verze 3.0 (a od verze 6.3 ESO9), který vychází z číselníku TYPDOC.
Metoda přenáší jen typy, jejichž kód je v interním parametru ESX_DOKDOC_TYP.
Vstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| idEshop | ID eshopu, pro který se mají načíst data | |
| idZurnal | Od jakého žurnálového záznamu načítat | |
| id | IDDOKLADTYPDOC požadovaného záznamu |
Výstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| enResult | enResult | OK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby. |
| iErr | Upřesňující číslo chyby. | |
| sErr | Text chyby. | |
| idZurnalMax | idZurnal z posledního vráceného záznamu. | |
| aDokladTypDoc | SDokladTypDoc() | Pole vracených dat. |
Struktura: SDokladTypDoc
| Pole | Typ/délka | Popis | Poznámka |
|---|---|---|---|
| IDDOKLADTYPDOC | Unikátní identifikace typu | ||
| KOD | (10) | Kód typu | |
| NAZEV | (60) | Popis typu | |
| BlackBox | Doplňková informace | Pro PROFI implementace | |
| idZurnal | Identifikátor záznamu v žurnálu změn | ||
| TimeStamp | DateTime | Časová značka databázové operace | |
| TypOper | enTypOper | Typ databázové operace |
Metoda: CtiDokladDokumentTyp
Starší typ číselníku, do verze 2.8 konektoru (a do verze 6.2 ESO9), který vychází z číselníku OBECCIS.
Zařazen kvůli zpětné kompatibilitě, než ESHOP přejde na novější typ číselníku.
Viz novější typ číselníku od verze 3.0 konektoru (a od verze 6.3 ESO9), který vychází z číselníku
TYPDOC a je reprezentován metodou CtiDokladTypDoc.
Metoda přenáší jen typy, jejichž kód je v interním parametru ESX_DOKDOC_TYP.
Vstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| idEshop | ID eshopu, pro který se mají načíst data | |
| idZurnal | Od jakého žurnálového záznamu načítat | |
| id | IDDOKLADDOKUMENTTYP požadovaného záznamu |
Výstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| enResult | enResult | OK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby. |
| iErr | Upřesňující číslo chyby. | |
| sErr | Text chyby. | |
| idZurnalMax | idZurnal z posledního vráceného záznamu. | |
| aDokladDokumentTyp | SDokladDokumentTyp() | Pole vracených dat. |
Struktura: SDokladDokumentTyp
| Pole | Typ/délka | Popis | Poznámka |
|---|---|---|---|
| IDDOKLADDOKUMENTTYP | Int | Unikátní identifikace typu | |
| KOD | (10) | Kód typu | |
| NAZEV | (60) | Popis typu | |
| BlackBox | Doplňková informace | Pro PROFI implementace | |
| idZurnal | Identifikátor záznamu v žurnálu změn | ||
| TimeStamp | DateTime | Časová značka databázové operace | |
| TypOper | enTypOper | Typ databázové operace |
Stavy dokumentů k dokladům
Metoda: CtiDokladStavDoc
Od konektoru verze 3.6, vychází z číselníku VLSTAVDOC.
Implementujte metodu, jen pokud se v zákaznické aplikaci ESO9 používají stavy dokumentů u dokladů.
Metoda přenáší jen stavy k typům přenášeným metodou CtiDokladTypDoc. Tedy stavy jen pro typy, jejichž kód je v interním parametru ESX_DOKDOC_TYP.
Vstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| idEshop | ID eshopu, pro který se mají načíst data | |
| idZurnal | Od jakého žurnálového záznamu načítat | |
| id | IDDOKLADSTAVDOC požadovaného záznamu |
Výstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| enResult | enResult | OK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby. |
| iErr | Upřesňující číslo chyby. | |
| sErr | Text chyby. | |
| idZurnalMax | idZurnal z posledního vráceného záznamu. | |
| aDokladStavDoc | SDokladStavDoc() | Pole vracených dat. |
Struktura: SDokladStavDoc
| Pole | Typ/délka | Popis | Poznámka |
|---|---|---|---|
| IDDOKLADSTAVDOC | Unikátní identifikace typu | ||
| IDDOKLADTYPDOC | ID typu dokumentu k dokladu, ke kterému stav patří | Přenáší se číselníkem CtiDokladTypDoc | |
| VLSTAV | Číselní hodnota stavu | Například 0, 10, 20, ... | |
| STAV | (30) | Stručný název stavu | |
| POPISVYZNAMU | Popis významu stavu | ||
| BlackBox | Doplňková informace | Pro PROFI implementace | |
| idZurnal | Identifikátor záznamu v žurnálu změn | ||
| TimeStamp | DateTime | Časová značka databázové operace | |
| TypOper | enTypOper | Typ databázové operace |
Dokumenty k dokladům
Metoda CtiDokladDokument přenáší z ESO9 do ESHOPu seznam dokumentů. Dokument je reprezentován DocGUID. Samotné načtení binárního obsahu dokumentu musíte provést metodou
CtiDokument . Obsah dokumentů není potřeba načítat ihned po získání DOCGUID, ale například až tehdy, když zákazník vyvolá jeho zobrazení (stažení). Při takovém řešení nebude muset dokumenty ukládat do databáze ESHOPu, ale můžete o ně požádat ESO9 podle potřeby.
- jaký typ dokumentu jde, zjistíte z IDDOKLADDOKUMENTTYP, jeho název lze načíst metodou
CtiDokladDokumentTyp . Název typu z číselníku lze nabídnout uživateli ESHOPu jako typ dokumentu.
Metoda: CtiDokladDokument
Vstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| idEshop | ID eshopu, pro který se mají načíst data | |
| idZurnal | Od jakého žurnálového záznamu načítat. | |
| id | IDDOKLADDOKUMENT požadovaného záznamu. | |
| iMax | Maximální počet záznamů, který se má načíst. 0 – všechny, které jsou k dispozici. |
Výstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| enResult | enResult | OK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby. |
| iErr | Upřesňující číslo chyby. | |
| sErr | Text chyby. | |
| iZbyva | Počet zbývajících záznamů za právě přenesenými | |
| idZurnalMax | idZurnal z posledního vráceného záznamu. | |
| aDokladDokument | SDokladDokument() | Pole vracených dokumentů k dokladům. |
Struktura: SDokladDokument
| Pole | Typ/délka | Popis | Poznámka |
|---|---|---|---|
| IDDOKLADDOKUMENT | Unikátní identifikace | ||
| IDHDOK | ID dokladu | Vracené při založení objednávky nebo při čtení faktury | |
| DOCGUID | (40) | GUID binárních dat | Obsah dokumentu se načte metodou CtiDokument |
| IDDOKLADDOKUMENTTYP | Int | Identifikace typu – zpětná kompatibilita | Starší číselník typů, vracený metodou CtiDokladDokumentTyp |
| IDDOKLADTYPDOC | Identifikace typu | Novější číselník typů, vracený metodou CtiDokladTypDoc | |
| DTINSERT | DateTime | Datum a čas založení dokumentu | |
| DTUPDATE | DateTime | Datum a čas změny dokumentu | |
| FILENAME | (255) | Název dokumentu | Včetně přípony, například .PDF |
| DESCRIPTION | (2000) | Popis obsahu dokumentu | Od verze 3.6 |
| KEYWORDS | (300) | Klíčová slova, zpravidla oddělená ; | Od verze 3.6 |
| VERSION | (20) | Verze dokumentu, zpravidla ve tvaru X.Y.ZZ | Od verze 3.6, pokud se v implementaci používá |
| IDDOKLADSTAVDOC | Vazba na číselník stavů dokumentu | Od verze 3.6, číselník se čte metodou CtiDokladStavDoc | |
| BlackBox | Doplňková informace | Pro PROFI implementace | |
| idZurnal | Identifikátor záznamu v žurnálu změn | ||
| TimeStamp | DateTime | Časová značka databázové operace | |
| TypOper | enTypOper | Typ databázové operace |
Poznámka: při operaci enTypOper = 3 - delete, dostanete v žurnálu pouze IDDOKLADDOKUMENT, ostatní atributy jsou prázdné. Pokud je potřebujete, musíte si je zjistit ze své databáze.
Typy dokumentů ke zboží
Metoda: CtiZboziTypDoc
Od konektoru verze 3.0 (a od verze 6.3 ESO9), vychází z číselníku TYPDOC.
Metoda přenáší jen typy, jejichž kód je v interním parametru ESX_ZBOZIDOC_TYP.
Vstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| idEshop | ID eshopu, pro který se mají načíst data | |
| idZurnal | Od jakého žurnálového záznamu načítat | |
| id | IDZBOZITYPDOC požadovaného záznamu |
Výstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| enResult | enResult | OK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby. |
| iErr | Upřesňující číslo chyby. | |
| sErr | Text chyby. | |
| idZurnalMax | idZurnal z posledního vráceného záznamu. | |
| aZboziTypDoc | SZboziTypDoc() | Pole vracených dat. |
Struktura: SZboziTypDoc
| Pole | Typ/délka | Popis | Poznámka |
|---|---|---|---|
| IDZBOZITYPDOC | Unikátní identifikace typu | ||
| KOD | (10) | Kód typu | |
| NAZEV | (60) | Popis typu | |
| BlackBox | Doplňková informace | Pro PROFI implementace | |
| idZurnal | Identifikátor záznamu v žurnálu změn | ||
| TimeStamp | DateTime | Časová značka databázové operace | |
| TypOper | enTypOper | Typ databázové operace |
Stavy dokumentů ke zboží
Metoda: CtiZboziStavDoc
Od konektoru verze 3.6, vychází z číselníku VLSTAVDOC.
Implementujte metodu, jen pokud se v zákaznické aplikaci ESO9 požívají stavy dokumentů u zboží.
Metoda přenáší jen stavy k typům přenášeným metodou CtiZboziTypDoc. Tedy stavy jen pro typy, jejichž kód je v interním parametru ESX_ZBOZIDOC_TYP.
Vstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| idEshop | ID eshopu, pro který se mají načíst data | |
| idZurnal | Od jakého žurnálového záznamu načítat | |
| id | IDZBOZISTAVDOC požadovaného záznamu |
Výstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| enResult | enResult | OK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby. |
| iErr | Upřesňující číslo chyby. | |
| sErr | Text chyby. | |
| idZurnalMax | idZurnal z posledního vráceného záznamu. | |
| aZboziStavDoc | SZboziStavDoc() | Pole vracených dat. |
Struktura: SZboziStavDoc
| Pole | Typ/délka | Popis | Poznámka |
|---|---|---|---|
| IDZBOZISTAVDOC | Unikátní identifikace typu | ||
| IDZBOZITYPDOC | ID typu dokumentu ke zboží, ke kterému stav patří | Přenáší se číselníkem CtiZboziTypDoc | |
| VLSTAV | Číselní hodnota stavu | Například 0, 10, 20, ... | |
| STAV | (30) | Stručný název stavu | |
| POPISVYZNAMU | Popis významu stavu | ||
| BlackBox | Doplňková informace | Pro PROFI implementace | |
| idZurnal | Identifikátor záznamu v žurnálu změn | ||
| TimeStamp | DateTime | Časová značka databázové operace | |
| TypOper | enTypOper | Typ databázové operace |
Dokumenty ke zboží
Alternativní metoda k předávání dokumentů a obrázků ke zboží. Dokumenty lze předávat přes poznámky určitých typů metodou CtiZboziPozn (podle parametrů ES_PoznZbozi_OBR,
ES_PoznZbozi_PRIL) nebo metodou CtiZboziDokument popsanou v této kapitole. Způsob závisí na implementaci práce s dokumenty a obrázky v ESO9.
Metoda CtiZboziDokument přenáší z ESO9 do ESHOPu seznam dokumentů. Dokument je reprezentován DocGUID. Samotné načtení binárního obsahu dokumentu musíte provést metodou
CtiDokument . Obsah dokumentů není potřeba načítat ihned po získání DOCGUID, ale například až tehdy, když zákazník vyvolá jeho zobrazení (stažení). Při takovém řešení nebude muset dokumenty ukládat do databáze ESHOPu, ale můžete o ně požádat ESO9 podle potřeby.
- jaký typ dokumentu jde, zjistíte z IDZBOZITYPDOC , jeho název lze načíst metodou CtiZboziTypDoc .
Název typu z číselníku lze nabídnout uživateli ESHOPu jako typ dokumentu.
Metoda: CtiZboziDokument
Vstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| idEshop | ID eshopu, pro který se mají načíst data | |
| idZurnal | Od jakého žurnálového záznamu načítat. | |
| id | IDZBOZIDOKUMENT požadovaného záznamu. | |
| iMax | Maximální počet záznamů, který se má načíst. 0 – všechny, které jsou k dispozici. |
Výstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| enResult | enResult | OK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby. |
| iErr | Upřesňující číslo chyby. | |
| sErr | Text chyby. | |
| iZbyva | Počet zbývajících záznamů za právě přenesenými | |
| idZurnalMax | idZurnal z posledního vráceného záznamu. | |
| aZboziDokument | SZboziDokument() | Pole vracených dokumentů k dokladům. |
Struktura: SZboziDokument
| Pole | Typ/délka | Popis | Poznámka |
|---|---|---|---|
| IDZBOZIDOKUMENT | Unikátní identifikace | ||
| IDZBOZI | ID zboží | ID zboží, ke kterému je dokument přiřazen | |
| DOCGUID | (40) | GUID binárních dat | Obsah dokumentu se načte metodou CtiDokument |
| IDZBOZITYPDOC | Identifikace typu | Novější číselník typů, vracený metodou CtiZboziTypDoc | |
| DTINSERT | DateTime | Datum a čas založení dokumentu | |
| DTUPDATE | DateTime | Datum a čas změny dokumentu | |
| FILENAME | (255) | Název dokumentu | Včetně přípony, například .PDF |
| DESCRIPTION | (2000) | Popis obsahu dokumentu | Od verze 3.6 |
| KEYWORDS | (300) | Klíčová slova, zpravidla oddělená ; | Od verze 3.6 |
| VERSION | (20) | Verze dokumentu, zpravidla ve tvaru X.Y.ZZ | Od verze 3.6, pokud se v implementaci používá |
| IDZBOZISTAVDOC | Vazba na číselník stavů dokumentu | Od verze 3.6, číselník se čte metodou CtiZboziStavDoc | |
| BlackBox | Doplňková informace | Pro PROFI implementace | |
| idZurnal | Identifikátor záznamu v žurnálu změn | ||
| TimeStamp | DateTime | Časová značka databázové operace | |
| TypOper | enTypOper | Typ databázové operace |
Poznámka: při operaci enTypOper = 3 - delete, dostanete v žurnálu pouze IDZBOZIDOKUMENT, ostatní atributy jsou prázdné. Pokud je potřebujete, musíte si je zjistit ze své databáze.
BlackMethod - obecná metoda pro čtení
Výše uvedené metody pro čtení dat, vrací do rozhraní obsah jedné určité tabulku (entity) z ESO9.
Většina čtecích metod obsahuje BlackBox, aby při přenosy dat mohly být předávány PROFI atributy nebo atributy, které nejdou v základním rozhraní metody.
Dalším krokem k zobecnění je nástroj, jak přenášet přes konektor libovolnou další tabulku bez potřeby doplňovat do rozhraní další specializovanou metodu. Je nazvaná BlackMethod. Je to obálka pro přenos libovolné tabulky z ESO9 do ESHOPU, stačí k tomu zásah implementátora, není potřeba upravovat metody rozhraní.
Metoda: CtiBlackMethod
Metoda pro přenos jiné než standardně implementované tabulky či entity.
Na vstupu metody je kromě obvyklých parametrů i TABULKA – název tabulky, jejíž změny chcete v tomto volání přenášet.
Musí proběhnout domluva s implementátorem ESO9, by přenos takových tabulek připravil, Nestačí pouze zahájit volání přenosu nové tabulky. Je určeno zejména pro PROFI tabulky s názvem XX***, ale lze přenášet i standardní tabulky, které nejsou zařazeny do základních metod konektoru.
Lze použít tyto scénáře volání metody CtiBlackMethod:
Volat metodu pro každou tabulku zvlášť, pro každou tabulku si ukládat vrácené idZurnalMax a od něj volat další čtení.
Volat metodu pro všechny tabulky současně. Na vstupu zadáte TABULKA = %, metoda použije
LIKE a vrací změny pro všechny tabulky od zadaného idZurnal. V tomto případě si idZurnalMax musíte ukládat jako společnou informaci pro všechny BlackMethod tabulky
Volat metodu pro nějakou podmnožinu tabulek. Na vstupu do atributu TABULKA zadáte SQL výraz vyhodnotitelný výrazem LIKE. Jinak je stejné jako v předchozím bodě.
Poznámka: Seznam používaných tabulek pro BlackMethod si můžete načíst metodou CtiZurnal s parametry vlBlackMethod = 1, vlZurnal = 0.
Vstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| idEshop | ID eshopu, pro který se mají načíst data sTabulka (30) Název čtené tabulku nebo entity. Musí být zadán přesný název nebo SQL výraz vyhodnotitelný výrazem LIKE. Pokud se zadá %, čtou se všechny záznamu žurnálu určené pro BlackMethod od předaného idZurnal | |
| idZurnal | Od jakého žurnálového záznamu načítat. | |
| id | ID požadovaného záznamu z uvedené tabulky. Pokud je vyplněno (ID > 0), provádí se přímé čtení z dat tohoto jednoho záznamu, mimo mechanismus žurnálu. V tomto případě je nutné zadat přesné jméno tabulky. Od verze 3.4.1.0.: Přímé čtení celé tabulky se provede při zadání ID = -1. Přečte se celá tabulka se setříděnými ID. V tomto případě se nevrací idZurnalMax, a v detailech se nevrací idZurnal, TimeStamp ani TypOper. Na vstupu nemá význam idZurnal ani iMax. Lze zadat i masku tabulek - pak se výstup třídí podle názvu tabulky a ID. iMax Maximální počet záznamů, který se má načíst. 0 – všechny, které jsou k dispozici od zadaného idZurnal. |
Výstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| enResult | enResult | OK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby. |
| iErr | Upřesňující číslo chyby. | |
| sErr | Text chyby. | |
| iZbyva | Počet zbývajících záznamů za právě přenesenými | |
| idZurnalMax | idZurnal z posledního vráceného záznamu. | |
| aBlackMethod | SBlackMethod() | Pole vracených dat. |
Struktura: SBlackMethod
| Pole | Typ/délka | Popis | Poznámka |
|---|---|---|---|
| TABULKA | (30) | Název přenášené tabulky | Pokud je na vstupu přesný název tabulky, má na výstupu stejnou hodnotu. Pokud je na vstupu SQL výraz, je na výstupu přesný název tabulky, jejíž změna se přenáší. |
| IDTABULKA | Unikátní ID záznamu z tabulky TABULKA | ||
| BlackBox | Ostatní sloupce věty z přenášené tabulky | Obsah je pro každou tabulku jiný | |
| idZurnal | Identifikátor záznamu v žurnálu změn | ||
| TimeStamp | DateTime | Časová značka databázové operace | |
| TypOper | enTypOper | Typ databázové operace |
Návratové hodnoty metody (kromě obecných):
EMPTY_TABLE
Nevyplněna vstupní hodnota TABULKA
Poznámky pro implementátora ESO9. Aby se byl funkční přenos další tabulky přes BlackMethod je potřeba:
Doplnit trigger nad tabulkou, se jménem například trTABULKA_ESHOP_BLACKMETHOD, vzorový obsah v příkladech. Je nutné dát pozor na naplnění sloupce VLBLACKMETHOD = 1.
Doplnit ve funkci fnESHOP_BlackBox_ALL sekci pro tuto tabulku.
Provést prvotní naplnění hodnot již existujících dat do žurnálu. Vzorové SQL pro naplnění je v příkladech.
Předat vývoji ESHOPU přesné jméno doplněné tabulky.
Přenos z eShopu do ESO9
Zákazníci
Eshop zapisuje firmu, osobu a dodací adresu (pokud bude vyplněna). Struktury jsou stejné, jako u čtení.
Pro zápis informací o zákazníkovi bude sloužit metoda ZapisSubjektVse . Umožní komplexní pořízení nového subjektu – na vstupu obsahuje jak pořizovaný subjekt, tak všechny jeho přidávané / modifikované osoby a adresy. Přitom se využije FID/FGUID (cizí číselné nebo textové ID), které vygeneruje a pošle e-shop a podle nich si spáruje toto své FID/FGUID a ESOID jednotlivých záznamů.
Způsob zakládání/modifikace subjektu se řídí parametrem ES_ZAPISSUBJ_ID. Měl by se nastavit podle způsobu, jak eshop metodu implementuje.
ES_ZAPISSUBJ_ID=0, autodetekce .
Pokud na vstupu přijdou nevyplněná ESOID (tedy IDSUBJEKT, IDSUBJOSOBA,
IDSUBJADR) jedná se o požadavek na založení nového subjektu/osoby/adresy.
Pokud na vstupu přijdou nevyplněná ESOID, ale současně jsou vyplněná FGUID/FID pokusí se metoda podle nich dohledat existující příslušná ESOID (v tom je ta
autodetekce ).
Pokud na vstupu přijde vyplněné ESOID (tedy IDSUBJEKT, IDSUBJOSOBA, IDSUBJADR) jedná se o požadavek na modifikaci již založeného subjektu (tato ID tedy byla vrácena předchozím požadavkem na založení).
Ve všech případech je vhodné posílat z eshopu i FGUID/FID, aby se do ESO9 uložily a umožnily vzájemné dohledání
ES_ZAPISSUBJ_ID=1, podle IDSUBJ (=IDSUBJEKT, IDSUBJOSOBA, IDSUBJADR)* .
Pokud na vstupu přijdou nevyplněná ESOID (tedy IDSUBJEKT, IDSUBJOSOBA,
IDSUBJADR) jedná se o požadavek na založení nového subjektu/osoby/adresy.
Pokud na vstupu přijde vyplněné ESOID (tedy IDSUBJEKT, IDSUBJOSOBA, IDSUBJADR) jedná se o požadavek na modifikaci již založeného subjektu (tato ID tedy byla vrácena předchozím požadavkem na založení).
Je vhodné posílat z eshopu i FGUID/FID, aby se do ESO9 uložily a umožnily vzájemné dohledání
ES_ZAPISSUBJ_ID=2, podle FGUID .
Pokud na vstupu přijdou nevyplněná FGUID, jedná se o požadavek na založení nového subjektu/osoby/adresy.
Pokud na vstupu přijde vyplněné FGUID, jedná se o požadavek na modifikaci již založeného subjektu (tato ID tedy byla vrácena předchozím požadavkem na založení).
Pokud by při takovém nastavení parametru přišlo na i některé IDSIBJ*, ignoruje se
ES_ZAPISSUBJ_ID=3, podle FID .
Pokud na vstupu přijdou nevyplněná FID, jedná se o požadavek na založení nového subjektu/osoby/adresy.
Pokud na vstupu přijde vyplněné FID, jedná se o požadavek na modifikaci již založeného subjektu (tato ID tedy byla vrácena předchozím požadavkem na založení).
Pokud by při takovém nastavení parametru přišlo na i některé IDSIBJ*, ignoruje se
V jednom volání metody lze kombinovat modifikaci a založení adres v subjektu. Pokud v některé adrese ID nepřijde, bude to signál k založení nové adresy, u jiných, kde je obsažen dojde k modifikaci.
Stejně pro osoby v subjektu.
V každé entitě předávané v metodě je na vstupu i typ operace (TypOper). Toto se ale nebere v úvahu při opravdu provedené operaci, ta se odvozuje podle existence/neexistence ID v databázi ESO9.
Důvodem je to, že například opakovaný pokus o vložení stejného subjektu (při výpadku konektivity, či nevyčtení odpovědi) by způsobil konflikt v cílové databázi.
Detaily k vyplnění položek jsou uvedeny za tabulkami.
Rušení adres a osob v eshopu se nepředpokládá. V datech pro modifikaci přijde jen ta adresa, která se má upravit (má ESOID nebo FID/FGUID). Adresy, které v modifikačním záznamu nepřijdou, se ponechají beze změny.
Metoda: ZapisSubjektVse
Vstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| idEshop | ID eshopu, ze kterého se volá | |
| oSubjekt | SSubjekt | Zapisovaný subjekt |
| aSubjOsoba | SSubjOsoba() | Pole osob subjektu |
| aSubjAdr | SSubjAdr() | Pole adres subjektu |
Výstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| enResult | enResult | OK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby. |
| iErr | Upřesňující číslo chyby. | |
| sErr | Text chyby. | |
| oSubjektZal | SSubjektZal | Návratové vazby na založený/modifikovaný subjekt. |
| aSubjOsobaZal | SSubjOsobaZal() | Návratové vazby na založené/modifikované osoby. |
| aSubjAdrZal | SSubjAdrZal() | Návratové vazby na založené/modifikované adresy. |
Návratová struktura: SSubjektZal
| Pole | Typ/délka | Popis | Poznámka |
|---|---|---|---|
| IDSUBJEKT | Unikátní identifikace subjektu | Založený/modifikovaný | |
| FID | BigInt | ID záznamu v databázi eShop | Hodnota ze vstupu, pro párování |
| FGUID | (40) | ID záznamu v databázi eShop | Hodnota ze vstupu, pro párování |
| TypOper | enTypOper | Typ databázové operace | Insert/Update |
Návratová struktura: SSubjOsobaZal
| Pole | Typ/délka | Popis | Poznámka |
|---|---|---|---|
| IDSUBJOSOBA | Unikátní identifikace osoby | Založená/modifikovaná | |
| FID | BigInt | ID záznamu v databázi eShop | Hodnota ze vstupu, pro párování |
| FGUID | (40) | ID záznamu v databázi eShop | Hodnota ze vstupu, pro párování |
| TypOper | enTypOper | Typ databázové operace | Insert/Update |
Návratová struktura: SSubjAdrZal
| Pole | Typ/délka | Popis | Poznámka |
|---|---|---|---|
| IDSUBJADR | Unikátní identifikace adresy | Založená/modifikovaná | |
| FID | BigInt | ID záznamu v databázi eShop | Hodnota ze vstupu, pro párování |
| FGUID | (40) | ID záznamu v databázi eShop | Hodnota ze vstupu, pro párování |
| TypOper | enTypOper | Typ databázové operace | Insert/Update |
Založení/modifikace celé předané struktury (subjekt, adresy, osoby) probíhá v transakci – buď se zdaří vše, nebo nic.
Založená data (subjekt, adresy, osoby) jsou při založení zařazena na e-shop, ze kterého bylo zakládání zavoláno.
V metodě ZapisSubjektVse musí být vyplněn alespoň subjekt. Osoby a Adresy nemusí.
Ve struktuře SSubjekt: má smysl vyplňovat pouze SUBJ_NAZEV, ICO, DIC – ostatní položky ze struktury se nezapíší
(například: sleva a stav subjektu se nastavuje v ESO9).
IDSUBJEKT se naplňuje jen při modifikaci subjektu existujícího v ESO9. Při požadavku na založení nového subjektu musí být prázdné.
Modifikaci subjektu lze vyvolat zadáním FID/FGUID místo IDSUBJEKT
- procedura si IDSUBJEKT dohledá podle vazebního FID/FGUID
- přednost má IDSUBJEKT, pokud je zadané
- pak se hledá podle FID a pak podle FGUID – pokud se nalezne vazební záznam podle
FID/FGUID, provede se modifikace, pokud se nenalezne, subjekt se založí
Ve struktuře SSubjOsoba: má smysl vyplňovat pouze JMENO, TEL, MOBIL, FAX, EMAIL.
IDSUBJEKT se převezme ze subjektu
IDSUBJOSOBA se naplňuje jen při modifikaci osoby existující v ESO9. Při požadavku na založení nové osoby v rámci subjektu musí být prázdné
Při modifikaci se provádí kontrola, že osoba náleží subjektu, v jehož rámci se modifikuje
Modifikaci osoby lze vyvolat zadáním FID/FGUID místo IDSUBJOSOBA
- procedura si IDSUBJOSOBA dohledá podle vazebního FID/FGUID
- přednost má IDSUBJOSOBA, pokud je zadané
- pak se hledá podle FID a pak podle FGUID – pokud se nalezne vazební záznam podle
FID/FGUID, provede se modifikace, pokud se nenalezne, osoba se založí
Ve struktuře SSubjAdr: má smysl vyplňovat pouze SUBJADR_NAZEV, ULICE, MESTO, PSC, POZNAMKA, IDSTAT,
VLSUBJADR_TYP.
IDSUBJEKT se převezme ze subjektu
IDSUBJADR se naplňuje jen při modifikaci adresy existující v ESO9. Při požadavku na založení nové adresy v rámci subjektu musí být prázdné
Při modifikaci se provádí kontrola, že adresa náleží subjektu, v jehož rámci se modifikuje.
Dále se provádí kontrola na to že VLSUBJADR_TYP má hodnoty 0, 1, 2 a IDSTAT se vyskytuje v číselníku nebo je prázdný.
Modifikaci adresy lze vyvolat zadáním FID/FGUID místo IDSUBJADR
- procedura si IDSUBJADR dohledá podle vazebního FID/FGUID
- přednost má IDSUBJADR, pokud je zadané
- pak se hledá podle FID a pak podle FGUID – pokud se nalezne vazební záznam podle
FID/FGUID, provede se modifikace, pokud se nenalezne, adresa se založí
Po založení/modifikaci je v návratové struktuře oSubjektZal typu SSubjektZal vrácena sada nových ID z ESO9 ve vazbě na FID/FGUID přijaté na vstupu metody, aby bylo možné si ihned doplnit ID z ESO9 do databáze eshopu. Vrací se i typ provedené operace s každou strukturou v ESO9 (insert/update).
Také je možné podle předaného IDSUBJEKT načíst subjekt metodou přímého čtení (metoda
CtiSubjekt se zadaným IDSUBJEKT).
Speciální postupy při zakládání nového subjektu.
Pokud se zakládá nový subjekt (tzn. na vstupu není IDSUBJEKT nebo se IDSUBJEKT nedohledá podle
FGUID/FID) a současně je na vstupu zadáno IČO, hledá se, zda v databázi ESO9 již existuje aktivní subjekt s tímto IČO:
Vše následující platí, jen pokud parametr ES_ZAPISSUBJ_ICO má hodnotu 1 (=ano)
Pokud existuje právě jeden aktivní subjekt s tímto IČO, provede se jeho modifikace.
- Nepřepíše se ale IČO, DIČ ani Název subjektu – předpokládá se, že v ESO9 jsou správné údaje z rejstříků a že subjekt již byl použit na dokladech.
- Pokud původní subjekt měl vazební klíče FGUID/FID přepíší se hodnotou z tohoto nového požadavku.
- V návratové hodnotě metody pak je typ operace Update místo Insert.
- Do LOG záznamu v ESO9 se napíše informace o způsobu zpracování *INFO: Nalezen*
subjekt IDSUBJEKT=N pro modifikaci podle IČO: "X".
- Pokud v tomto případě (modifikace existujícího subjektu) je současně předávána i **nová** **fakturační adresa** ( VLSUBJADR_TYP=1 ) a u subjektu již existuje aktivní fakturační adresa – nová se nezaloží, přednost má již používaná fakturační adresa, její data se ani nepřepíší.
Poznámka: v tomto případě se v návratové hodnotě metody pro adresu vrátí operace
Update místo Insert. Navíc se vrátí ID nejnovější nalezené fakturační adresy – a pokud
adresa měla vazební klíče FGUID/FID přepíší se hodnotou z tohoto nového požadavku.
Toto může být problém v datech eshopu… prosím prověřit .
- Případné dodací adresy se přidají.
Pokud existuje více než jeden aktivní subjekt s tímto IČO – skončí pokus o založení chybou
(není možné rozhodnout, který záznam modifikovat).
Poznámka: toto chování se týká pouze požadavku na založení nového subjektu, pokud je
současně zadáno IČO a toto je nalezeno u jiného již existujícího subjektu – tedy jde o
„ukradení identity“. Pokud se naopak v metodě volá modifikace určitého subjektu (pomocí
zadaného a nalezeného ID z ESO9 nebo ID z e-shopu) proběhne požadovaná modifikace bez
ohledu na výskyt více subjektů se stejným IČO.
Pokud se zakládá nová osoba subjektu (na vstupu není IDSUBJOSOBA nebo se IDSUBJOSOBA nedohledá podle FGUID/FID) a současně je na vstupu zadán e-mail, hledá se, zda v databázi ESO9 již existuje aktivní osoba tohoto subjektu se stejným e-mailem:
Vše následující platí, jen pokud parametr ES_ZAPISSUBJ_MAIL má hodnotu 1 (=ano)
Pokud existuje alespoň jedna aktivní osoba s tímto e-mailem, provede se jeho modifikace.
Pokud jich existuje více, vybere se nejnovější z nich (podle nejvyššího ID)
Přepíšou se všechny údaje, které přišly z e-shopu
Pokud původní osoba měla vazební klíče FGUID/FID přepíší se hodnotou z tohoto nového požadavku.
V návratové hodnotě metody pak je pro osobu typ operace Update místo Insert.
Do LOG záznamu v ESO9 se napíše informace o způsobu zpracování INFO: Nalezena osoba
IDSUBJOSOBA=N pro modifikaci podle e-mailu: "X".
Naplnění cenové skupiny subjektu:
Číselník ESHOP obsahuje vazbu na cenovou skupinu subjektů. Nově zakládaný subjekt z tohoto eshopu je do této cenové skupiny zařazen. Pokud cenová skupina není v číselníku ESHOP vyplněna, hledá se hodnota společného parametru ESX_CENSKUP, pokud je vyplněn existující cenovou skupinou, použije se.
Práce s Blackboxem při zakládání subjektu z ESHOPU: Použije se Blackbox v subjektu, osobě i adrese - pokud je některý z nich v metodě pro založení subjektu vyplněn volá se procedura pro uživatelskou akci s Blackboxem. Tuto standardně prázdnou proceduru spESHOP_BlackBoxZapis lze přepsat jako uživatelský objekt (je stejná i pro založení objednávky). Viz popis v kapitole PROFI objekty.
Pokud existuje procedura s názvem spESHOP_ZapisSubjekt_After , zavolá se po založení subjektu v metodě ZapisSubjektVse (tedy ještě před založením osoby a adresy v tomto subjektu). Od verze
2.7.1 je zapojeno ještě jedno volání po zapsání všech dat. Viz popis v kapitole PROFI objekty.
Historická poznámka: Byla zamítnuta varianta: samostatné metody ZapisSubjekt, ZapisOsobu ,
ZapisAdresu pro vložení/modifikaci subjektů, adres a osob. V tomto případě by transakci musel hlídat
eshop: Jako první by se musela zavolat metoda ZapisSubjekt, vyčkat na vrácené IDSUBJEKT a s ním
zavolat metody ZapisOsobu, ZapisAdresu. Jinak by ESO9 nevědělo, kam zařadit Osobu/Adresu
Objednávky
Objednávka se zapíše s řádky vždy pouze jednou, nebude se eshopem updatovat.
ESO9 přijme ceny tak, jak je eshop pošle, nebude je přepočítávat podle cenotvorby ESO9. Na objednávce bude identifikace firmy, osoby a případně dodací adresy.
Metoda: ZapisObj
Vstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| idEshop | ID eshopu, ze kterého se volá | |
| oObjHlav | SObjHlav | Hlavička zapisované objednávky, typ stejný jako při čtení v metodě CtiObjHlav. |
| aObjSloz | SObjSloz() | Pole složek objednávky. Složky a hlavičku je třeba předat v jedné metodě, aby se v ESO9 mohlo založit v jedné transakci. |
Výstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| enResult | enResult | OK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby. |
| iErr | Upřesňující číslo chyby. | |
| sErr | Text chyby. | |
| IDHDOK | ID nově založené objednávky v ESO9. | |
| CIS_DOK | (20) | Číslo založené objednávky. Poznámka: současně se zápisem se nově založená objednávka zařadí do žurnálu objednávek – je ji tedy možné načíst v metodě pro načtení objednávek. Návratové hodnoty metody ( IDHDOK, CIS_DOK ) slouží k aktualizaci informace zákazníka a také k případnému dočasnému provázání založené objednávky. Eshop si může vzápětí načíst celou objednávku metodou CtiObjHlav se zadáním ID Návratové hodnoty metody (kromě obecných): enResult Popis iErr OBJ_INS_ERR Chyba při vložení objednávky. - Není definována hlavička objednávky. Objednávka nemá složky. Založení celé předané struktury (hlavičky a složek objednávku) probíhá v transakci – buď se zdaří vše, nebo nic. U definice struktur SObjHlav a SObjSloz (u metody CtiObjednavka) je ve sloupci Z označeno, které položky se při zakládání použijí. Ostatní sice ve struktuře formálně jsou, ale nepředávají se do procedury pro založení objednávky. V hlavičce objednávky je možné předat pouze ID subjektu, osoby a adres nebo i položky *PRIJEMCE, které takto předané budou mít přednost před údaji z číselníku subjektů. Ve struktuře složky objednávky doplněna RVCENA. Při zakládání je možné předávat jednu z jednotkových cen - HDJCENAVAL , HDJCENAKC , HDJCENADPH, ostatní mohou být 0, resp. jejich hodnota není použita – doklad se přepočte podle jediné vyplněné ceny nebo podle hodnoty RVCENA. Mají tedy význam jen 3+1 hodnoty ( 0-Neurčeno, 1-JCENAVAL, 2-JCENAKC, 3-JCENADPH ). Například u eshopu typu B2C budou mít prioritu ceny s DPH, budou připraveny jako „pěkné“. Naopak u eshopu typu B2C mohou mít prioritu ceny bez DPH. Kontroly: Musí být vyplněna hlavička a alespoň jedna složka. Existence IDSUBJEKT a zda osoba a adresy přísluší tomuto subjektu. Existence ID přepravní a platební podmínky. Existence měny podle kódu. Existence vzoru objednávky podle číselníku nebo příslušného parametru. Hledání vzoru objednávky: Číselník ESHOP obsahuje vazbu na vzor objednávky. Nově zakládaná objednávka z tohoto eshopu je do tohoto vzoru založena. Pokud vzor není v číselníku ESHOP vyplněn, hledá se hodnota společného parametru ESX_VZOROBJ, pokud je vyplněn existujícím vzorem pro typ POB, použije se. Zakládání hlavičky objednávky. Použije se parametr ES_ZAPISOBJ_CIS_DOK. Metoda ZapisObj při založení objednávky, pokud na vstupu je vyplněné CIS_DOK pracuje podle hodnoty parametru takto: 0= nepoužije vstupní CIS_DOK, naplní je vždy z řady v ESO9; 1= použije vstupní CIS_DOK, pokud již existuje, naplní je z řady v ESO9; 2= použije vstupní CIS_DOK, pokud již existuje v rámci typu dokladu, vrátí chybu Zakládání složek objednávky: Pokud je na vstupu IDZBOZI, dohledá se podle něj zboží v číselníku zboží Pokud na vstupu IDZBOZI není, ale je vyplněna hodnota SLOZKA_IDENT a parametr ES_ZAPISOBJ HLEDATZBOZI = 1, hledá se CIS_ZBOZI podle SLOZKA_IDENT: - pokud je vyplněno VLTYP_SLOZ, hledá se v číselníku zboží podle tohoto VLTYP_SLOZ - pokud VLTYP_SLOZ není vyplněno, hledá se nejprve jako zboží (VLTYP_SLOZ=1), není- li nalezeno, hledá se jako služba (VLTYP_SLOZ=2) - pokud se jedním z těchto způsobů nalezlo, doplní se do zakládané složky nalezené IDZBOZI – díky tomu se může zablokovat zboží na skladě. Parametr ES_ZAPISOBJ_SLOZKA_IDENT pro zakládání složek objednávek. Při založení složky objednávky se naplní SLOZKA_IDENT hodnotou z ESHOPU: - 0= nikdy, - 1= jen pokud není vyplněno nebo nalezeno IDZBOZI (výchozí hodnota), - 2= vždy Parametr ES_ZAPISOBJ_TEXT_SLOZ pro zakládání složek objednávek. Při založení složky objednávky se naplní TEXT_SLOZ hodnotou z ESHOPU: - 0= nikdy, - 1= jen pokud není vyplněno nebo nalezeno IDZBOZI (výchozí hodnota), - 2= vždy Další logika: Není-li zadaná dodací adresa ( IDSUBJADR_D = NULL ), naplní se hodnotou fakturační adresy ( IDSUBJADR_F ). Předpokládá se, že v takovém případě zákazník na e-shopu nezadal jinou doručovací adresu, chce tedy doručit na fakturační. Od verze 2.7 se IDSUBJEKT při zápisu naplní i do IDSUBJEKTP, IDSUBJOSOBA se naplní i do IDSUBJOSOBAP. Speciální akce Pokud existuje procedura s názvem spESHOP_ZapisObjHDOK_After , zavolá se po založení objednávky v metodě ZapisObj. Zavolá se 2x: poprvé po založení hlavičky objednávky (ještě neexistují složky), podruhé po založení poslední složky objednávky (toto nastane pouze při zakládání objednávky, tedy ne při @vlNalezena=1), hodnotou parametru @vlAkce můžete rozhodnout, kdy chcete svou akci provést. Zároveň musí procedura mít právo EXECUTE v roli/účtu, pod kterým webová služba na SQL server přistupuje. Rozhraní procedury: CREATE PROCEDURE dbo . spESHOP_ZapisObjHDOK_After @IDHDOK int , -- ID založené objednávky @IDESHOP int , -- ID eshopu, ze kterého je voláno @vlNalezena smallint , -- 0-nenalezena, proběhlo vložení objednávky; 1-nalezena, neproběhla akce v datech existující objednávky @vlAkce smallint -- 0=po založení hlavičky, 1=po založení poslední složky (neproběhne pokud @vlNalezena=1) Rozšířená verze procedury spESHOP_ZapisObjHDOK_After , pro volání @vlAkce = 1, tedy po založení objednávky (od verze 2.7.2): Pokud procedura obsahuje @VLUHRAZENO smallint -- Například: 0=ne, 1=ano, 2=částečně – podle domluvy s eshopem nebo i @HDKUHRADEKC money -- celková cena objednávky Tak se po založení objednávky s těmito atributy zavolá. Zpracování těchto 2 atributů musí být obsaženo v PROFI proceduře. |
Úhrady objednávek
Pokud zákazník zvolí online platbu, která eshopu umožňuje získat výsledek platby, zapíše eshop úhradu objednávky do ESO9.
Metoda: ZapisObjPlatba
Vstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| idEshop | ID eshopu, ze kterého se volá | |
| oObjPlatba | SObjPlatba | Jeden záznam platby |
Výstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| enResult | enResult | OK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby. |
| iErr | Upřesňující číslo chyby. | |
| sErr | Text chyby. |
Struktura: SObjPlatba
| Pole | Typ/délka | Popis | Poznámka |
|---|---|---|---|
| IDHDOK | ID objednávky | ID získané založením objednávky do ESO9 | |
| DTPLATBA | DateTime | Datum a čas platby | |
| HDUHRADA | Money | Uhrazená částka | |
| BRANA | (20) | Název platební brány | |
| TRAN | (100) | Transakce | Případné číslo transakce |
V metodě ZapisObjPlatba musí být vyplněn objekt platby.
BlackMethod - obecná metoda pro zápis
Výše uvedené metody pro zápis dat, umí zapsat data jen do určitých tabulku (entity) v ESO9.
Metoda: ZapisBlackMethod
Metoda pro zápis do jiné než standardně implementované tabulky či entity.
Na vstupu metody je kromě obvyklých parametrů i TABULKA – název tabulky, jejíž změny chcete v tomto volání přenášet.
Musí proběhnout domluva s implementátorem ESO9, by zápis do takových tabulek připravil, nestačí pouze zahájit volání zápisu nové tabulky. Je určeno zejména pro PROFI tabulky s názvem XX***, ale lze zapisovat i do standardní tabulky, které nejsou zařazeny do základních metod konektoru.
Vstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| idEshop | ID eshopu, pro který se mají načíst data | |
| sTabulka | (30) | Název tabulky nebo entity, do které zapisujete. |
| idTabulka | ID z tabulky v ESO9, do které zapisujete – použijte jen tehdy, pokud je znáte, například pokud se vrátilo při předchozím založení a následně provádíte update záznamu. Je-li vstupní hodnota = 0, považuje se za nevyplněné. | |
| FID | Long | ID záznamu v eshopu. ESO9 si FID uloží a prováže se svým idTabulka. |
| FGUID | (40) | Textové ID záznamu v eshopu, alternativa k FID. Důrazně doporučujeme používat pouze buď FID nebo FGUID. ESO9 si FGUID uloží a prováže se svým idTabulka. |
| iOperace | Typ operace (init / insert / update / delete). ESO9 si podle idTabulka / FID / FGUID dohledá, zda v ESO9 již záznam existuje a provede buď insert nebo update. Init je prvotní naplnění, má stejný význam jako insert. Delete se provede, pokud záznam existuje, pokud neexistuje, výsledek je OK. | |
| BlackBox | Vlastní obsah zakládaného/modifikovaného záznamu. Obsah závisí na dohodě implementátora ESO9 a tvůrce eshopu. Může být XML/JSON/... |
Výstupní parametry:
| Parametr | Typ/délka | Popis |
|---|---|---|
| enResult | enResult | OK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby. |
| iErr | Upřesňující číslo chyby. | |
| sErr | Text chyby. | |
| idTabulkaZal | ID založeného nebo modifikovaného záznamu v ESO9. Pokud k založení nedošlo, je návratová hodnota -1. |
Poznámky pro implementátora ESO9. Aby se byl funkční zápis přes ZapisBlackMethod je potřeba:
V proceduře spESHOP_ZapisBlackMethod doplnit sekci pro tabulku, včetně parsování
XML/JSON obsahu, který předává eshop a upravit Insert / Update pro tuto tabulku.
Domluvit se s vývojem ESHOPU strukturu předávaných dat.
Servisní metody webové služby
Verze webové služby
Metoda vrátí verzi knihovny webové služby. Přitom se nepřipojuje do databáze ESO9.
Metoda: VerzeWS
Vstupní parametry: - nemá
Výstupní parametry:
enResult
OK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby. wsVerze
(20)
Číslo verze DLL knihovny konektoru wsPopis
(200)
Název konektoru iErr
Upřesňující číslo chyby. sErr
Text chyby.
Verze databáze ESO9
Metoda vrátí verzi databáze ESO9 a firmu, které databáze/aplikace ESO9 patří (podle příslušného parametru ESO9).
Tato metoda se již připojuje do databáze ESO9, může tedy sloužit i jako test připojení na SQL server.
Metoda: VerzeESO
Vstupní parametry: - nemá
Výstupní parametry:
enResult
OK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby. esoVerze
(20)
Číslo verze databáze esoPopis
(200)
Popis verze esoDB
(255)
Název SQL databáze firmaICO
(20)
IČ firmy, která aplikaci/databázi provozuje firmaNazev
(255)
Název firmy iErr
Upřesňující číslo chyby. sErr
Text chyby.
Vracení WSDL schématu
Pokud chce eshop získat WSDL schéma webové služby voláním: https://api.mojefirma.cz/MujEshop/eso9oxy.asmx?WSDL
Standardně se vrátí WSDL schéma končící elementem
<wsdl:service name="eso9oxy">
<wsdl:port name="eso9oxySoap" binding="tns:eso9oxySoap">
<soap:address location="https://api.mojefirma.cz/MujEshop/eso9oxy.asmx"/>
</wsdl:port>
<wsdl:port name="eso9oxySoap12" binding="tns:eso9oxySoap12">
<soap12:address location="https://api.mojefirma.cz/MujEshop/eso9oxy.asmx"/>
</wsdl:port>
</wsdl:service> tedy adresa konektoru se doplní do location.
Pokud ale voláte konektor na nestandardním portu, třeba 999: https://api.mojefirma.cz:999/MujEshop/eso9oxy.asmx?WSDL port se do elementu location nepřenese.
Pokud eshop location využívá pro volání metod konektoru, port v cestě potřebuje. Může si jej doplnit sám. pokud to není možné, od verze 3.6.4 existuje řešení na straně konektoru:
Do web.config doplníte (resp. rozšížíte případné existující sekce system.web, system.webserver).
Funguje od IIS verze 7.0:
< system.web >
< httpModules >
< add name = " WsdlPortPreserver " type = " eso9oxy.WsdlPortPreserverModule " />
</ httpModules >
</ system.web >
< system.webServer >
< modules >
< add name = " WsdlPortPreserver " type = " eso9oxy.WsdlPortPreserverModule " />
</ modules >
< validation validateIntegratedModeConfiguration = " false " />
</ system.webServer >
Stačí uvést pouze jednu sekci, podle použitého režimu.
Do konektoru je doplněn modul WsdlPortPreserverModule. Pokud je voláno načtení WSDL a je použit jiný, než standardní port (80 nebo 443), načte se modul aktuální WSDL a doplní do elemetu location použítý port.
V uvedenám případě tedy bude výsledkem:
<wsdl:service name="eso9oxy">
<wsdl:port name="eso9oxySoap" binding="tns:eso9oxySoap">
<soap:address location="https://api.mojefirma.cz:999/MujEshop/eso9oxy.asmx"/>
</wsdl:port>
<wsdl:port name="eso9oxySoap12" binding="tns:eso9oxySoap12">
<soap12:address location="https://api.mojefirma.cz:999/MujEshop/eso9oxy.asmx"/>
</wsdl:port>
</wsdl:service>
V některých případech ani toto nepomůže. Pokud nefunguje, zapněte si v web.config logování.
V logovacím adresáři se objeví soubor wsdl_log-RR-MM-DD.txt, kde můžete zjisit, zda se port do konektoru předává a měl by se použít pro modifikaci WSDL.
Pokud se nepředává a máte jeden pevně zvolený port, přidejte do web.config klíč:
< appSettings >
< add key = " WSDL_PORT " value = " 999 " />
</ appSettings >
Tento port se použije pro modifikaci WSDL, i když se na vstupu do modulu nepředává.
PROFI objekty
BlackBox
V metodách pro čtení doplněn aparát pro tzv. BlackBox – text s libovolným obsahem pro PROFI implementace rozhraní. Na obsahu atributu BlackBox se domluví implementátor ESO9 a implementátor ESHOPu, bez potřeby měnit rozhraní konektoru.
Rozhraní funkce pro výstupní BlackBox: function fnESHOP_BlackBox_ALL (
@IDESHOP int = NULL,
@ID int = NULL,
@Tabulka varchar ( 30 ) = NULL ) returns varchar ( max )
V zapisujících metodách (ZapisObj, ZapisSubjektVse) je možné zpracovat i vstupní Blackbox z ESHOPU a předat tak další specifické údaje do ESO9.
Blackbox lze předat v metodě ZapisObj, samostatně v hlavičce i v každé složce - pokud je v některé ze vstupních struktur vyplněn, volá se procedura pro uživatelskou akci s Blackboxem.
Blackbox lze předat v metodě ZapisSubjektVse, samostatně v subjektu, osobě i v adrese - pokud je v některé ze vstupních struktur vyplněn, volá se procedura pro uživatelskou akci s Blackboxem.
Procedura se volá až po založení záznamu v ESO9, do procedury se předává název tabulky a ID záznamu. Tento se může modifikovat, zapsat něco do ADD tabulky, nebo kamkoliv jinam.
Rozhraní procedury pro vstupní BlackBox:
PROCEDURE spESHOP_BlackBoxZapis
@ID
= NULL, -- ID v tabulce
@Tabulka varchar ( 30 )
= NULL, -- jméno tabulky, do které ESHOP zapisuje
@BlackBox varchar ( max ) = NULL, -- obsah Blackboxu, volá se jen když není NULL
@IDESHOP
= NULL, -- ID eshopu, ze kterého je voláno
@vlNalezena smallint
= NULL -- 0-nenalezena, vložení; 1-nalezena
Čtení produktů – zboží
Atribut IDZBOZIMASTER se standardně vrací prázdný.
Pokud je ID vyplněné, je právě načtené zboží variantou, artiklem (… atd podle aktuálního názvosloví) ke zboží IDZBOZI=IDZBOZIMASTER.
Může být přesána PROFI funkce vracející ID podle implementace.
Rozhraní funkce, standardně je prázdná, vrací NULL:
CREATE OR ALTER function dbo . fnESHOP_IdZboziMaster ( @idzbozi int ) returns int as
BEGIN
-- standardní metoda vrací NULL, v profi lze upravit podle implementace return NULL
END
GO
Založení subjektu
Pokud existuje procedura s názvem spESHOP_ZapisSubjekt_After , zavolá se po založení subjektu v metodě ZapisSubjektVse (tedy ještě před založením osoby a adresy v tomto subjektu).
Zároveň musí procedura mít právo EXECUTE v roli/účtu, pod kterým webová služba na SQL server přistupuje (nebo se do ní dopíše WITH EXECUTE AS OWNER).
Rozhraní procedury:
CREATE PROCEDURE dbo . spESHOP_ZapisSubjekt_After
@IDSUBJEKT int = NULL, -- zakladany / modifikovany subjekt
@IDESHOP int = NULL, -- ESHOP ze ktereho bylo volano
@vlTypOper smallint = NULL -- typ operace:
1=insert,
2=update, (3=delete-nenastane),
10=po založení všeho
Od verze 2.7.1 se procedura volá ještě jednou po založení všeho, co přišlo v metodě ZapisSubjektVse, tedy i po založení osob a adres. Volá se s parametrem @vlTypOper = 10.
Založení objednávky
Vzor v objednávce, akce před založením objednávky
V metodě zakládání objednávky (ZapisObj) se ještě před založením objednávky volá procedura spESHOP_ZapisObjHDOK_Before, pokud v databázi existuje.
Může se například použít pro vyhledání vzoru dokladu, pokud nestačí jeho určení zařazením do číselníku ESHOP nebo do parametru ESX_VZOROBJ.
Rozhraní procedury:
ALTER PROCEDURE dbo . spESHOP_ZapisObjHDOK_Before
@IDESHOP
= NULL,
@IDHDOK
= NULL, -- má hodnotu, jen pokud se dohledalo podle @FGUID_OBJ
@FGUID_OBJ varchar ( 40 )
= NULL, -- od verze 2.0
@KOD_MENY varchar ( 10 )
= NULL, --
@CIS_DOK varchar ( 20 )
= NULL, -- pokud se má převzít číslo dokladu z ESHOPU
@CIS_DOK_ESHOP varchar ( 30 )
= NULL, -- do JEJICH_CISDOK
@V_SYM varchar ( 30 )
= NULL, -- VAR SYMBOL,
@BlackBox varchar ( max )
= NULL, -- obsah black boxu z ESHOPU
@vlNalezena smallint
= NULL, -- 0=nenalezena, 1=nalezena
@IDHDOK_VZOR integer
= NULL OUT , -- pripadna upravena hodnota
@ERRTEXT varchar ( 4000 ) = NULL OUT ,
@vlResult smallint
= NULL OUT
-- 0=pokračovat,
1=chyba, text chyby v @ERRTEXT,
-1=nepokračovat v zakládání dokladu, ale nekončit chybou
Od verze 2.7.3 lze parametry procedury rozšířit o ID přicházející do objednávky:
@IDSUBJEKT
INT = NULL,
@IDSUBJOSOBA
INT = NULL,
@IDSUBJADR_F
INT = NULL,
@IDSUBJADR_D
INT = NULL
Akce po založení objednávky
Pokud existuje procedura s názvem spESHOP_ZapisObjHDOK_After , zavolá se po založení objednávky v metodě ZapisObj. Zavolá se 2x. Popis u metody ZapisObj .
Připravujeme
Zde je hrubý popis připravovaných změn. Zpravidla byly předjednány s připojenými eshopy nebo plynou z dříve plánovaného rozvoje konektoru.
Do příštích verzí
Nové metody
Do konektoru mohou být doplněny nové metody:
Metoda pro přenos vazeb mezi sortimentem
Metoda pro přenos poznámek k objednávkám
Doplněno ve verzi 2.0 a novějších
Identifikace subjektů
Doplněn nový parametr, konfigurující zda v metodě ZapisSubjektVse probíhá hledání podle ID z ESO9 nebo podle FGUID z ESHOPu.
Odstraní se tím problémy ze současné složité implementace a umožní eshopům snadnější napojení.
I nadále se ale doporučuje ukládat si v databázi eshopu ID z ESO9 (IDSUBJEKT, IDSUBJOSOBA,
IDSUBJADR), slouží k rychlejšímu dohledání rozdílů v databázích.
Bude provedena implementace tohoto parametru v metodě ZapisSubjektVse
V metodě ZapisSubjektVse doplněn atribut s informací, že jde o neregistrovaný nákup, aby se v ESO9 mohl u subjektu takový příznak naplnit a usnadnil identifikaci filtrování takových subjektů.
Objednávky
V metodě ZapisObj (resp, ve struktuře SObjHlav) doplněny atributy FGUID pro subjekt, osobu, fakturační a dodací adresu. Aby ESHOP alternativně mohl nakupující identifikovat svými GUID
(zafunguje jen tehdy, když tyto FGUID již budou do ESO9 předány metodou ZapisSubjektVse). Pokud bude při volání metody vyplněna data FGUID, použije se, pokud vyplněna nebude, použije sada ID z
ESO9.
V metodě ZapisObj doplněno GUID objednávky z ESHOPu. Vyřešena tím situace, kdy došlo k založení objednávky z ESHOPu do ESO9, ale při výpadku konektivity se o tom ESHOP nedozvěděl a poslal opakovanou žádost o založení objednávky – a tím byla v ESO9 vícekrát. Podle GUID se dohledá a nově nezakládá.
Popis změn webové služby
Tato kapitola obsahuje stručný popis změn v určité verzi knihovny webové služby.
Změny jsou současně zavedeny do popisu příslušné metody.
Konektor verze 3.6.5
Doplněna metoda pro čtení obecného číselníku CtiObecCis .
Metodu implementujte pouze tehdy, pokud v některém blackboxu dostáváte hodnoty z tohoto čísleníku pro speciální vlastnosti. Nebo je součástí dat předávaných některou z BlackMethod.
V základních metodách konektoru se nepoužívá.
Doplněn parametr ES_OBECCIS_VLTYP - typy obecného číselníku, které se mají přenášet metodou CtiObecCis. Seznam hodnot VLTYPOBECCIS z tabulky OBECCIS. Jednotlivé hodnoty se oddělují středníkem.
Doplněna funkce pro naplnění IDZBOZIMASTER v metodě CtiZbozi.
Konektor verze 3.6.4.0
Upraveno vracení WSDL, pokud se konektor volá z nestandardního portu. V běžném řešení se port do elementu location ve WSDL nepředává, což může způsobit problém eshopu, pokud element location používá k volání metod webové služby.
Byla rozšířena konfigurace web.config o volání modulu a tento modul pro úpravu WSDL byl doplněn do knihovny konektoru. Viz kapitola: „Vracení WSDL schématu“.
Konektor verze 3.6.2.0
Doplněno dekódování textů vstupujících do metod pro zápis dat (ZapisSubjektVse, ZapisObj) – tzv deescaping (zrušení escapování).
Například sekvence „&” se do dat ESO9 vloží jako „&“.
Výchozí stav je, že se provádí dekódování. Lze je vypnout v konfiguraci webové služby konektoru
(web.config) klíčem:
< appSettings >
< add key = " DECODE " value = "0" />
</ appSettings >
Konektor verze 3.6.1.0
V metodě ZapisObj se při chybě založení objednávky mohlo vracet v návratových hodnotách IDHDOK a CIS_DOK objednávky, která ale v transakci odrolovala a nebyla založena. Pokud ESHOP vyhodnocoval návratovou hodnotu metody (enResult.OK), neprojevilo se. Pokud vyhodnocoval pouze návratové hodnoty atributů IDHDOK a CIS_DOK mohl si uložit údaje k neexistujícímu dokladu. Od verze 3.6.1. se při chybě návratové hodnoty obou atributů vymažou.
Konektor verze 3.6.0.0
Rozšíření práce s dokumenty ke zboží a dokladům. Metody CtiZboziDokument a CtiDokladDokument vracejí navíc popis dokumentu, klíčová slova, verzi (DESCRIPTION, KEYWORDS, VERSION) a stav dokumentu. Doplněny metody na načítání číselníku stavů dokumentů: CtiZboziStavDoc a CtiDokladStavDoc
Konektor verze 3.5.0.1
V metodě ZapisBlackMethod ošetřeno, pokud IDTABULKA je v jiném než prvním výstupním recordsetu procedury.
Konektor verze 3.5.0
Do metody CtiZbozi přidána možnost přímého čtení všeho zboží mimo žurnál.
Konektor verze 3.4.1
Metodě ZapisBlackBox se předává také parametr iOperace.
Metoda CtiBlackMethod - přímé čtení se zadáním ID rozšířeno o čtení celé tabulky. Provede se při zadání ID = -1.
Konektor verze 3.4.0
Metoda CtiZurnal rozšířena i pro načtení počtu záznamů označených pro ESHOP v databázi ESO9 (pro tabulky ZBOZI a 3 tabulky k subjektům: SUBJEKT, SUBJADR, SUBJOSOBA).
Konektor verze 3.3.0.1, jen SQL
Čtení dat pro BlackMethod optimalizováno pro případ, kdy záznam zapsaný do žurnálu již v databázi není (pomocí kontroly prázdného blackboxu).
Konektor verze 3.3.0.1, jen oprava dokumentace
V dokumentaci opraven překlep aSubkAdr na správné aSubjAdr ve popis volání metody
ZapisSubjektVse. Ve WSDL bylo v pořádku.
Konektor verze 3.3.0.1
V rozhraní metody ZapisBlackMethod opraven překlep návratové hodnoty z chybného idTabukaZal na správné idTabulkaZal (chybělo l). Pokud k založení záznamu nedošlo, je návratová hodnota idTabulkaZal = -1.
Konektor verze 3.3.0
Nová metoda ZapisBlackMethod umožňuje zápis do libovolné tabulky.
Konektor verze 3.2.0
Oprava délku předávaných polí v dokumentaci:
Metoda CtiParametry, pole KODPARAM délka z 20 na 30.
Metoda CtiMJ, pole KOD_MJ délka z 3 na 10.
Metoda CtiZbozi, pole NAZEV_ZBOZI délka z 100 na 255.
Metoda CtiSkupZbozi, pole NAZEV_SKUP_ZBOZI délka z 90 na 255.
Konektor verze 3.2.0
Doplněna metoda pro CtiCenSkup čtení cenových skupin subjektů. Identifikátor IDCENSKUP se již dříve předával v subjektu a cenové matici. Kód a název cenové skupiny se na eshopu zpravidla nezobrazuje, ale může pomoci zpřehlednit interní databázi eshopu.
Konektor verze 3.1.3, jen SQL
Doplněn parametr ESX_SKLAD_MNSTAV - Jaký stav zboží skladu se přenáší na eshop do položky
MNSTAV v metodě CtiZbozSkl . Možné hodnoty: 0=MNFYZVOLNYSTAV, výchozí hodnota,
1=MNUCETSTAV.
Změny procedury spESHOP_ZbozSkl a spESHOP_ZbozSkl_ZBOZI pro metodu CtiZbozSkl , aby respektovala nový parametr.
Upraven trigger trESHOP_ZBOZSKL, aby respektoval změny obou hodnot.
Konektor verze 3.1.3, jen SQL
V založení objednávky spESHOP_ZapisObjHDOK přesunuto dohledání ID podle FGUID před volání procedury spESHOP_ZapisObjHDOK_Before, aby do Before procedury vstupovala ID i v případě, že z eshopu přijde pouze FGIUD (subjekt, osoba, dodací a fakturační adresa).
Konektor verze 3.1.3
Do metody CtiZbozi doplněna ve výstupní struktuře SZbozi hodnota HDPRODCENA – Základní cena
bez DPH (doplňuje již dříve existující HDCENADPHZBOZI - Základní cena s DPH ).
Konektor verze 3.1.2, jen SQL a formuláře ESO9
K akci „Zařadit označené zboží na e-shop“ doplněna akce „Vyřadit označené zboží z e-shopu“.
Akce pro zařazení již nevrací chybové hlášení “Zboží ZZZ je již zařazeno do e-shopu”, ale již zařazené zboží ponechá zařazené a pokračuje na další.
Pokud řada pro subjekty zakládané z eshopu byla definována jako „Způsob tvorby“ = „z řady – dle položky poslední v řadě“, docházelo k chybě duplicit kódu subjektu. Opraveno v proceduře spESHOP_ZapisSubjekt.
Konektor verze 3.1.2, jen SQL
Ošetřena situace, kdy objednávka založená z eshopu je v ESO9 smazána. Kontrola dřívějšího založení objednávky podle FGUID_OBJ ověřuje i to, zda objednávka v ESO9 opravdu existuje. Pokud ne informace o založení se zruší a objednávka se založí.
Konektor verze 3.1.2
Do metody CtiZbozSkl doplněn vstupní parametr IDZBOZI, který provádí přímé čtení záznamů stavů na skladě pro zadané zboží mimo žurnál změn. Načte všechny záznamy stavů na skladě pro požadované zboží pro všechny sklady z parametru. Přitom se nepoužije omezení vstupním parametrem iMax.
Pokud se zadá IDZBOZI = -1 načte stav na skladě pro všechno zboží označené pro eshop a pro všechny sklady z parametru. POZOR, může vrátit velké množství záznamů.
Konektor verze 3.1.1, jen změna SQL
V metodách CtiObjednavka a CtiFaktura je hodnota zbývajících záznamů iZbyva zjišťována nanejvýš pro iMax záznamů. Není nutné vědět kolik přesně zbývá v žurnálu záznamů, ale že nějaký zůstává, zrychlí se tím čtení – zejména opakované od začátku žurnálu.
Konektor verze 3.1.1, dokument verze 3.04
Do metody CtiCenMatice doplněn vstupní parametr IDZBOZI, který provádí přímé čtení záznamů cenové matice mimo žurnál změn. Načte všechny záznamy cenové matice pro požadované zboží.
Přitom se nepoužije omezení vstupním parametrem iMax.
Konektor verze 3.1.0, dokument verze 3.03
Doplněna práce s typem dokladu
Doplněna metoda CtiTypDok, vrací informace o všech typech dokladů, které se z ESO9 mohou vracet do ESHOPu:
- Objednávky zakládané z ESHOPu
- Objednávky zakládané profi metodami
- Další typy dokladů (chápané jako objednávky) zakládané v ESO9 jako následníci objednávek, které se mají zobrazovat na ESHOPu
- Faktury
ID typu dokladu je doplněno do metod pro čtení objednávek a faktur
ID typu dokladu je doplněno do metody pro čtení stavů objednávek a faktur
Doplněn parametr ESX_TYPDOK_OBJ2 - Kódy typů dokladů dalších objednávek. Kódy typů dokladů, které se mají vracet do ESOPu kromě typu zakládaných objednávek. Mohou to být typy zakládané v profi úpravě metody pro zakládání objednávek nebo následníci objednávky zakládaní v ESO9. Může být uvedeno více typů oddělených středníkem. Neuvádějte opakovaně stejný typ, jako pro zakládání objednávky
Konektor verze 3.0.2, jen změna SQL
Při rušení poznámky ke zboží se do žurnálu změn zapíše i IDZBOZI, ke kterému zboží patřilo, aby se při čtení metodou CtiZboziPozn mohlo vrátit i toto IDZBOZI. Projeví se až u poznámek rušených novým skriptem (triggerem).
Konektor verze 3.0.2, dokument verze 3.02
Návratová hodnota iErr v metodách je v případě SQL chyby naplněna číslem chyby. Dříve bylo iErr = 0 i pro případy, kdy návratová hodnota metody byla správně naplněna enResult = SQL_ERROR.
V chybách, které jsou výsledkem kontrol vstupních hodnot je zpravidla iErr = 50000.
Konektor verze 3.0.1, dokument verze 3.01
Doplněna nová metoda CtiZboziVazba pro předání vazeb mezi produkty (zbožím).
Které typy vazeb se mají přenášet určuje parametr ES_ZBOZIVAZBA. Seznam hodnot VLTYP_VAZBY z tabulky ZBOZIMNSPOTR. Jednotlivé hodnoty se oddělují středníkem. Například 2;3;4
Konektor verze 3.0.0, dokument verze 3.00
Doplněny nové metody pro čtení dokumentů ke zboží.
Metoda CtiZboziDokument přenáší z ESO9 do ESHOPu seznam dokumentů (obrázky, návody, certifikáty, …). Dokument je reprezentován DocGUID.
Samotné načtení binárního obsahu dokumentu musíte provést metodou CtiDokument .
Obsah dokumentů není potřeba načítat ihned po získání DOCGUID, ale například až tehdy, když zákazník vyvolá jeho zobrazení (stažení). Při takovém řešení nebude muset dokumenty ukládat do databáze ESHOPu, ale můžete o ně požádat ESO9 podle potřeby.
- jaký typ dokladu jde, zjistíte z IDZBOZITYPDOC , jeho název lze načíst metodou
CtiZboziTypDoc . Název typy lze nabídnout uživateli ESHOPu jako typ dokumentu. Seznam kódů typů dokumentů se uvede v novém parametru ESX_ZBOZIDOC_TYP .
Jsou to alternativní metody k předávání dokumentů a obrázků ke zboží. Dokumenty lze předávat přes poznámky určitých typů metodou CtiZboziPozn (podle parametrů ES_PoznZbozi_OBR,
ES_PoznZbozi_PRIL) nebo nově přidanou metodou CtiZboziDokument. Způsob závisí na implementaci práce s dokumenty a obrázky v ESO9.
Již existující metoda pro čtení dokumentům k dokladům rozšířena o nový číselník TYPDOC z ESO9 verze 6.3.
Doplněna metoda CtiDokladTypDoc jako náhrada CtiDokladDokumentTyp. Původní metoda zůstává kvůli zpětné kompatibilitě.
V metodě CtiDokladDokument doplněno IDDOKLADTYPDOC.
Konektor verze 2.8.0, dokument verze 2.22
Doplněna metoda CtiBlackMethod - metoda pro přenos jiných než standardně implementovaných tabulek či entit. Je určeno zejména pro PROFI tabulky s názvem XX***, ale lze přenášet i standardní tabulky, které nejsou zařazeny do základních metod konektoru.
Doplněna metoda CtiZurnal , která vrátí připravený počet změn pro každou metodu od zadaného idZurnal, ESHOP se může zaměřit na vyčtení změn, kterých je nejvíc nebo jsou nejdůležitější. Lze použít i jako metodu pro načtení seznamu přenášených tabulek pro metodu CtiBlackMethod.
Konektor verze 2.7.4.1
Lépe ošetřena práce s prázdným IDESHOP na vstupu metod.
Konektor verze 2.7.4, dokument verze 2.21
V metodě CtiZboziPozn zapojeno iMax, iZbyva, aby bylo ve shodě s popisem
Konektor verze 2.7.3, dokument verze 2.20
Metoda CtiCenMatice rozšířena o KOD_MENY . Určeno po speciální verze. Vrací buď prázdnou hodnotu nebo CZK – kód domácí měny.
Procedura spESHOP_ZapisObjHDOK_Before, volaná ještě před založením objednávky má volitelně rozšířitelné parametry.
Dokument verze 2.19
Upřesněn popis metod.
Konektor verze 2.7.2, dokument verze 2.18
Doplněn parametr ES_CTI_MAX - Pokud při volání metody pro čtení (Cti*) není uvedena hodnota iMax = maximální počet záznamů, který se má načíst, je nastavena hodnota z tohoto parametru.
Zabrání pádu komunikace při velkém množství záznamů v žurnálu.
Do metody CtiCenMatice doplněna kromě ceny HDCENADPH i cena HDCENA – tedy cena bez DPH.
Pro některé typy ESHOPů může mít význam.
Konektor verze 2.7.1, dokument verze 2.17
Chybové hlášení již nemá prefix „RunSQL:“.
Po založení subjektu metodou ZapisSubjektVse, se procedura spESHOP_ZapisSubjekt_After volá ještě jednou po založení všech entit, které přišly v metodě. Tedy i po založení osob a adres. Volá se s parametrem @vlTypOper=10. (Již dříve se volalo hned po založení hlavní entity subjekt.)
Do zakládání objednávky doplněna procedura spESHOP_ZapisObjHDOK_Before, volaná ještě před založením objednávky. Může se použít pro vyhledání vzoru dokladu, pokud nestačí jeho určení zařazením do číselníku ESHOP nebo do parametru ESX_VZOROBJ.
Konektor verze 2.7, dokument verze 2.16
Doplněna práce s dokumenty k dokladům . Doplněny dvě metody. Metody umožňují načítání binárních souborů (faktur, objednávek, smluv, dodacích listů, …) k již přeneseným dokladům
(objednávkám, fakturám).
Ke zvýšení přehlednosti, o jaké doklady jde, slouží číselník typů dokumentů. Čte se metodou
CtiDokladDokumentTyp. Metoda přenáší jen typy, jejichž kód je v interním parametru
ESX_DOKDOC_TYP.
Metoda CtiDokladDokument pak přenáší z ESO9 do ESHOPu seznam dokumentů. Dokument je reprezentován DOCGUID. Samotné načtení binárního obsahu dokumentu musíte provést metodou CtiDokument.
Obsah dokumentů není potřeba načítat ihned po získání DOCGUID, ale například až tehdy, když zákazník vyvolá jeho zobrazení (stažení). Při takovém řešení nebude muset dokumenty ukládat do databáze ESHOPu, ale můžete o ně požádat ESO9 podle potřeby.
Rozšířena struktura pro založení a čtení objednávky. Metody ZapisObj a CtiObjednavka. Do struktury
SObjHlav doplněno:
CIS_DOK_ESHOP - Číslo objednávky v ESHOPu. Pokud je domluveno jeho předávání. V ESO9 se zapisuje do JEJICH_CISDOK. Číslo objednávky v ESHOPu může ale také být předáváno do
CIS_DOK.
V_SYM - Variabilní symbol. Pokud se na ESHOPu generuje V_SYM pro platbu. V CZ legislativě by měl být max. na 10 číslic.
Stejné položky doplněny pro čtení faktur, do struktury SFakHlav pro metodu CtiFaktura.
Rozšířena struktura pro čtení osoby subjektu. Metoda CtiSubjOsoba. Do struktury SSubjOsoba přidáno:
IDSUBJADR - Identifikace hlavní adresy osoby, pokud je v ESO9 přiřazena.
Určeno jen pro čtení, v metodě pro zápis se nepoužije.
Rozšířena struktura pro čtení adresy subjektu. Metoda CtiSubjAdr. Do struktury SSubjAdr přidáno:
IDSUBJOSOBA - Identifikace hlavní osoby adresy, pokud je v ESO9 přiřazena.
Určeno jen pro čtení, v metodě pro zápis se nepoužije.
Poznámka: pokud se verze instaluje na již běžící ESHOP, a je zájem používat vzájemné vazby osob a
adres, je potřeba domluvit a vyvolat nový zápis do žurnálu změn.
Doplněn parametr ES_KURSL_OD. Datum, od kterého se přenáší kurzovní lístek. Ve tvaru RRRR-MM-
DD. Pracuje ve spolupráci s parametrem ES_MENY – tedy se seznamem měn, které se přenášejí.
Změny v ESO9: V metodě ZapisObj, od verze 2.7 se IDSUBJEKT při zápisu naplní i do IDSUBJEKTP,
IDSUBJOSOBA se naplní i do IDSUBJOSOBAP.
Konektor verze 2.6, dokument verze 2.15
Doplněny parametry pro zjednodušené zakládání služeb do objednávek , bez potřeby číst služby z číselníku.
-
Doplněn parametr ES_ZAPISOBJ_SLUZBA_DOBIRKA. Kód služby pro dobírku.
-
Tento kód může ESHOP použít při předávání složky za dobírku. Kód z parametru se naplní do složky objednávky do atributu SLOZKA_IDENT, současně naplní VLTYP_SLOZ = 2 (služba). V
ESO9 se podle kódu dohledá služba. Funguje, pokud současně parametr
ES_ZAPISOBJ_HLEDATZBOZI = 1
-
Doplněn parametr ES_ZAPISOBJ_SLUZBA_DOPRAVA. Kód služby pro dopravu.
-
Tento kód může ESHOP použít při předávání složky za dopravu. Kód z parametru se naplní do složky objednávky do atributu SLOZKA_IDENT, současně naplní VLTYP_SLOZ = 2 (služba). V
ESO9 se podle kódu dohledá služba. Funguje, pokud současně parametr
ES_ZAPISOBJ_HLEDATZBOZI = 1
V metodě CtiDopPlatPodm pro přenos číselníku přepravních a platebních podmínek doplněna třetí
množina: dodací podmínky pro VLDRUHPODM = 0. Doplněn i třetí identifikátor v hlavičce dokladu pro zápis objednávky: IDPODMINKY_DOD. Použití v objednávce:
-
Většinou na objednávce stačí přepravní (například dopravce) a platební podmínky (například dobírka) – jako v původním řešení.
-
Pokud však používáte jako dopravce například Českou poštu, můžete chtít nabídnou na
ESHOPU i službu tohoto dopravce: třeba: Balík do ruky / Balík na poštu / Balík do balíkovny – a na to se používají dodací podmínky v rámci přepravních podmínek (tedy dopravce). V ESO9, například při použití Balíkobotu kombinace IDPODMINKY_PREP / IDPODMINKY_DOD určí dopravce a jeho službu.
-
Doplněno i při čtení faktur, v metodě CtiFaktura, ve struktuře SFakHlav.
-
Poznámka: pokud přecházíte z verze. Která dodací podmínky nepřenášela, je potřeba je do
žurnálu jednorázově doplnit.
Změny v ESO9: v procedurách pro zařazení zboží / subjektu na ESHOP se kontroluje, zda ESHOP je aktivní.
Konektor verze 2.5, dokument verze 2.14
Zakládání objednávek
Doplněn parametr ES_ZAPISOBJ_CIS_DOK. Metoda ZapisObj při založení objednávky, pokud na vstupu je vyplněné CIS_DOK pracuje podle hodnoty parametru takto:
0= nepoužije vstupní CIS_DOK, naplní je vždy z řady v ESO9;
1= použije vstupní CIS_DOK, pokud již existuje, naplní je z řady v ESO9;
2= použije vstupní CIS_DOK, pokud již existuje v rámci typu dokladu, vrátí chybu
Doplněn parametr ES_ZAPISOBJ_HLEDATZBOZI, pro hledání zboží při zakládání složky objednávky.
Pokud je ve složce objednávky na vstupu IDZBOZI, dohledá se podle něj zboží v číselníku zboží
Pokud na vstupu IDZBOZI není, ale je vyplněna hodnota SLOZKA_IDENT a (nový) parametr
ES_ZAPISOBJ_ HLEDATZBOZI = 1, hledá se CIS_ZBOZI podle SLOZKA_IDENT:
- pokud je vyplněno VLTYP_SLOZ, hledá se v číselníku zboží podle tohoto VLTYP_SLOZ
- pokud VLTYP_SLOZ není vyplněno, hledá se nejprve jako zboží (VLTYP_SLOZ=1), není- li nalezeno, hledá se jako služba (VLTYP_SLOZ=2)
- pokud se jedním z těchto způsobů nalezlo, doplní se do zakládané složky nalezené
IDZBOZI – díky tomu se může zablokovat zboží na skladě.
Doplněn parametr ES_ZAPISOBJ_SLOZKA_IDENT pro zakládání složek objednávek. Metoda ZapisObj při založení složky objednávky naplní SLOZKA_IDENT hodnotou z ESHOPU:
0= nikdy,
1= jen pokud není vyplněno nebo nalezeno IDZBOZI (výchozí hodnota),
2= vždy
Doplněn parametr ES_ZAPISOBJ_TEXT_SLOZ pro zakládání složek objednávek. Metoda ZapisObj při založení složky objednávky naplní TEXT_SLOZ hodnotou z ESHOPU:
0= nikdy,
1= jen pokud není vyplněno nebo nalezeno IDZBOZI (výchozí hodnota),
2= vždy
Založení subjektu
V metodě ZapisSubjekt je akceptován BlackBox i jako vstupní struktura – ve všech 3 entitách, tedy v SSubjekt, SSubjOsoba, SSubjAdr. Dříve bylo naplňováno jen při čtení dat. Aby se vstupní Blackbox zpravoval, musí být upraven uživatelský objekt spESHOP_BlackBoxZapis, používaná i při zápisu
Blackboxu objednávek.
Povolené ESHOPY
Doplněna nová chyba ESHOP_NOT_ALLOWED. V konfiguraci konektoru může být vyjmenována množina IDESHOP, tedy seznam ESHOPů se kterými může tento konektor pracovat. Pokud se ESHOP pokusí volat metodu s nepovoleným IDESHOP, vrátí se tato chyba s upřesňujícím popisem „Konektor
ABC nemá povolenou práci s IDESHOP=NN“, kde ABC je jméno konektoru a NN je požadovaný
IDESHOP.
Do návratové struktury SESHOP v metodě CtiEshop doplněn atribut VLPOVOLENY, tedy informace, zda konektor má povoleno z tímto eshopem pracovat. Možné hodnoty: 0=není povolen; 1=je povolen.
Důvodem této kontroly je situace, kdy na jednu databázi je napojeno více typů ESHOPů (například B2B a B2C) různých stran a není žádoucí, aby ani omylem nezapsali do databáze „jménem druhého
ESHOPu“
Konektor verze 2.4, dokument verze 2.13
Do struktury SObjSloz doplněno:
HDJCENAVALDPH - Jednotková cena v měně dokladu s DPH (pro RVCENA=7)
HDCCENAVALDPH - Celková cena v měně dokladu s DPH (pro RVCENA=8)
Akceptují se nové hodnoty pro RVCENA: 7 a 8.
Použije se při zakládání objednávky metodou ZapisObj a při čtení objednávky metodou
CtiObjednavka .
Do struktury SESHOP doplněno:
VLSTAV = příznak aktivity tohoto ESHOPU. 0=aktivní; 1=neaktivní.
Ve struktuře v ESO9 je již déle, nyní zveřejněno do rozhraní. Vrací metoda CtiEshop .
Již dříve také platilo: Do neaktivního e-shopu není možné přes rozhraní zapsat objednávku, zapsat platbu objednávky, modifikovat subjekt.
Konektor verze 2.3, dokument verze 2.12 (jen SQL)
Doplněna reakce na změnu cenové skupiny subjektu nebo procenta jeho slevy/přirážky. Pokud se údaje v ESO9 změní pouze ve formuláři „Subjekt v typu subjektu“, vyvolá se zápis do žurnálu jako změna subjektu. ESHOP si pak metodou CtiSubjekt přečte nové hodnoty. Týká se jen záznamů s typem subjektu ODB.
V metodách pro čtení produktů CtiZbozi a skladové dostupnosti CtiZbozSkl provedena optimalizace čtení žurnálu. Pokud na vstupu metod je iMax ( maximální počet záznamů, který se má načíst – naplnění této hodnoty na vstupu se velmi doporučuje), je v návratové hodnotě iZbyva ( počet
zbývajících záznamů za právě přenesenými ) nanejvýš hodnota iMax, i když zbývá více záznamů.
Domníváme se, že tato změna neovlivní logiku čtení žurnálu a na druhé straně velmi zrychlí čtení dat těmito metodami.
Konektor verze 2.3, dokument verze 2.11
V metodě pro založení objednávky ZapisObj , v entitě SObjHlav doplněn atribut KOD_VYDEJNY. Pokud se předává dopravce balíku, může být předán i kód výdejního místa. Například pro Zásilkovnu.
Konektor verze 2.2, dokument verze 2.10 (jen SQL)
V metodě pro zápis subjektů z eshopu do ESO9 ( ZapisSubjektVse ) je ICO a DIC před zpracováním zbaveno počátečních a koncových mezer. Tím je zamezeno některým chybám při zapnutém parametru ES_ZAPISSUBJ_ICO = 1 (slučování subjektů podle IČO).
Konektor verze 2.2, dokument verze 2.09
Do funkce vracející obsah blackboxu doplněn vstupní parametr @IDESHOP, aby funkce mohla reagovat na čtení dat pro jednotlivé eshopy.
Rozhraní funkce v uživatelském objektu je třeba rozšířit. Změnilo se na: function fnESHOP_BlackBox_ALL (
@IDESHOP int = NULL,
@ID int = NULL,
@Tabulka varchar ( 30 ) = NULL) returns varchar ( max )
Do metod CtisStat, CtiDopPlatPodm, CtiMJ, CtiZboziTypPozn, CtiZboziPozn, CtiSkupZbozi,
CtiSkupZnacZbozi, CtiSklad, CtiKurz doplněno předávání IDESHOP z metody webové služby do SQL procedury, aby se mohl předat dále do funkce fnESHOP_BlackBox_ALL.
Konektor verze 2.1.5, dokument verze 2.08
Ošetřeno použití apostrofu v textech v metodách pro založení subjektu a objednávky. Upraveno i logování takových chyb.
Konektor verze 2.1.4, dokument verze 2.07
Metoda pro čtení skladových zásob CtiZbozSkl použije i IDESHOP – vrací zásoby jen pro zboží, které přísluší ESHOPU.
Úprava metody pro čtení cenové matice CtiCenMatice – pokud záznam obsahuje IDSUBJEKT vrací se jen tehdy, pokud je subjekt přiřazen ESHOPU, který metody volá.
Konektor verze 2.1.3, dokument verze 2.06
Pokud existuje procedura s názvem spESHOP_ZapisObjHDOK_After , zavolá se po založení objednávky v metodě ZapisObj. Zavolá se 2x: poprvé po založení hlavičky objednávky (ještě neexistují složky), podruhé po založení poslední složky objednávky (toto nastane pouze při zakládání objednávky, tedy ne při @vlNalezena=1), hodnotou parametru @vlAkce můžete rozhodnout, kdy chcete svou akci provést.
Zároveň musí procedura mít právo EXECUTE v roli/účtu, pod kterým webová služba na SQL server přistupuje. Rozhraní procedury:
CREATE PROCEDURE dbo . spESHOP_ZapisObjHDOK_After
@IDHDOK int , -- ID založené objednávky
@IDESHOP int , -- ID eshopu, ze kterého je voláno
@vlNalezena smallint , -- 0-nenalezena, proběhlo vložení objednávky;
1-nalezena, neproběhla akce v datech existující objednávky
@vlAkce smallint -- 0=po založení hlavičky,
1=po založení poslední složky (neproběhne pokud @vlNalezena=1)
Konektor verze 2.1.2, dokument verze 2.05
V zakládání objednávky úprava práce s atributy FGUID_SUBJEKT, FGUID_SUBJOSOBA,
FGUID_SUBJADR_F, FGUID_SUBJADR_D v SObjHlav. Dříve, pokud bylo vyplněno FGUID_SUBJEKT měla celá sada FGUID_* přednost sadou IDSUBJ*. Nyní změněno na posuzování podle každého
FGUID – pokud je vyplněn příslušný FGUID má přednost před příslušným IDSUBJ*, pokud byl vyplněn.
Konektor verze 2.1.2, dokument verze 2.04
Doplněna práce s Blackboxem při zakládání objednávky z ESHOPU. Použije se Blackbox v hlavičce i složkách objednávky - pokud je některý z nich v metodě pro založení objednávky vyplněn volá se procedura pro uživatelskou akci s Blackboxem. Tuto standardně prázdnou proceduru spESHOP_BlackBoxZapis lze přepsat jako uživatelský objekt.
Konektor verze 2.1.2, dokument verze 2.03
Doplněny nové parametry:
ES_PRENOS_OBJ
0=ne
Do e-shopu se přenášejí
1=objednávky zákazníků označených pro e-shop (tedy i objednávky podle nastavení jejich objednávky založené v ESO9)
2=objednávky založené z eshopu
ES_PRENOS_FAV
0=ne
Do e-shopu se přenášejí
1=faktury zákazníků označených pro e-shop faktury podle nastavení
Do triggeru rušení zboží doplněno zrušení zařazení zboží na ESHOP. Tím se do žurnálu zapíše i zrušení tohoto zboží z ESHOPu.
Konektor verze 2.1.2, dokument verze 2.02
Doplněny interní parametry ESO9 pro zobecnění práce s typy dokladů objednávek a faktur.
Doplněn parametr ESX_TYPDOK_OBJ - Kód typu dokladu, do kterého patří vzor, do jakého se má založit objednávka z eshopu. Pokud není vyplněno, použije se typ POB.
Doplněn parametr ESX_TYPDOK_FAV - Kód typu dokladu, ze které se čtou faktury do
ESHOPu. Pokud není vyplněno, použije se typ FVU.
Doplněno naplnění hodnoty BlackBox i při čtení podle ID požadovaného záznamu.
Doplněno textové logování zakládání složek objednávek.
Konektor verze 2.1.1
V metodě CtiZbozi u položek POPIS a BlackBox, v metodě CtiSkupZbozi u položky BlackBox doplněno mazání „bílých znaků“ – všechny znaky s dekadickou hodnotou menší než 32 mimo 9, 10, 13 jsou vypuštěny.
Konektor verze 2.1.0, dokument verze 2.01
Ve většině metod pro čtení dat byl doplněn tzv. BlackBox – text s libovolným obsahem pro PROFI implementace rozhraní. Na obsahu atributu BlackBox se domluví implementátor ESO9 a implementátor ESHOPu, bez potřeby měnit rozhraní konektoru.
BlackBox bude naplněn jen u těch metod, kde to bude potřeba.
Konektor verze 2.0.0, dokument verze 2.00
Parametrizace práce při zakládání subjektů – v metodě ZapisSubjektVse.
Doplněn parametr pro popis způsobu identifikace subjektů v metodě ZapisSubjektVse.
Jméno parametru ES_ZAPISSUBJ_ID
Metoda ZapisSubjektVse hledá existující subjekt, osobu a adresu podle:
0=autodetekce; 1=IDSUBJ* (=IDSUBJEKT, IDSUBJOSOBA, IDSUBJADR); 2=FGUID; 3=FID
Parametr se načítá z ESO9 do ESHOPU pro informaci o tom, jak je ESO9 nakonfigurováno.
V metodě ZapisSubjektVse doplněna akceptace tohoto parametru. V popisu metody doplněn podrobnější popis chování pro jednotlivé hodnoty parametru.
Do návratové struktury SSubjektZal metody ZapisSubjektVse doplněny atributy FGUID / FID, které slouží ke spárování vráceného IDSUBJEKT se vstupními daty (stejně byly již dříve konstruovány návratové hodnoty SSubjOsobaZal, SSubjAdrZal).
Na již existující funkčnost „Slučování subjektů podle IČO“ doplněn parametr:
Jméno parametru ES_ZAPISSUBJ_ICO
Metoda ZapisSubjektVse při zápisu nového subjektu hledá již existující subjekt podle IČO
(hodnoty 0=ne; 1=ano)
Podrobněji popsáno v metodě ZapisSubjektVse
Na již existující funkčnost „Dohledání osoby podle emailu“ doplněn parametr:
Jméno parametru ES_ZAPISSUBJ_MAIL
Metoda ZapisSubjektVse při zápisu nové osoby hledá již existující osobu podle emailu
(hodnoty 0=ne; 1=ano)
Podrobněji popsáno v metodě ZapisSubjektVse
Do struktury SSubjekt doplněn atribut VLNEREG – hodnoty (0=Ne; 1=Ano). Označuje neregistrovaný subjekt – subjekt z jednorázového nákupu se musí také předat do ESO9. Použije se zejména při založení z eshopu. Při načtení je naplněno pouze tehdy, když se v ESO9 eviduje.
Rozšíření zakládání objednávek.
Do struktury SObjHlav doplněn atribut FGUID_OBJ jako identifikátor objednávky v ESHOPu. Pokud ESHOP nějaký identifikátor eviduje, je vhodné předávat. Slouží jako pojistka proti opakovanému založení stejné objednávky při výpadku konektivity.
Příklad: Pokud při založení objednávky z ESHOPu do ESO9 vypadla konektivita, objednávka ale
již byla v ESO9 založena a ESHOP o tom „neví“, pokusí se ji založit znovu. Bez předávaného
FGUID_OBJ se objednávka založí znovu. Pokud bylo předáno (stejné) FGUID_OBJ při obou
pokusech, ESO9 při druhém dohledá FGUID_OBJ, objednávku již nezakládá, pouze opakovaně
vrátí údaje, jako při prvním založení.
Do struktury SObjHlav doplněny atribut FGUID_SUBJEKT, FGUID_SUBJOSOBA, FGUID_SUBJADR_F,
FGUID_SUBJADR_D jako alternativa ESO9 identifikátorů IDSUBJ*. Je-li vyplněno FGUID_SUBJEKT má celá sada FGUID_* přednost sadou IDSUBJ*. (později ve verzi 2.05 změněno na jednotlivé posuzování) Slouží buď pro implementace, kde ESHOP s IDSUBJ* nepracuje nebo upřednostňuje zakládání subjektů podle FGUID.
Poznámka: Subjekt s těmito identifikátory musí být již založen, jinak se nedohledá.
Nové atributy se zatím používají jen při zakládání objednávky. Při čtení se nenaplňují.
Verze 1.9.12.0, dokument verze 1.20
Ve všech metodách, kde se v rozhraní vyskytuje iMax (maximální počet záznamů, který se má načíst) je tato funkčnost zapojena. Současně se naplňuje i hodnota iZbyva (počet zbývajících záznamů žurnálu za právě přenesenými).
Verze 1.9.11.0 (jen SQL změny) , dokument verze 1.20
V metodě pro zápis subjektu upravena logika hledání ID (ve verzi 2.0 se chová podle nového parametru)
Dříve: pokud na vstupu bylo vyplněno IDSUBJEKT mělo absolutní přednost při hledání
SUBJEKTU.
Nyní: pokud IDSUBJEKT na vstupu metody v tabulce SUBJEKT neexistuje, ale na vstupu metody je vyplněn FGUID a takový existuje ve vazební tabulce ESHOPVAZBA pro SUBJEKT, dohledá se z tohoto záznamu IDSUBJEKT.
Tím se řeší případy, kdy první pokus o zápis subjektu selže, e-shop si ve své DB uloží do
IDSUBJEKT (náhodné vysoké) číslo. Toto pak nešlo při dalším pokusu dohledat a subjekt byl neuložitelný.
Totéž pro OSOBU (IDSUBJOSOBA) a ADRESU (IDSUBJADR)
Verze 1.9.11.0 (jen SQL změny) , dokument verze 1.19
V metodě pro založení objednávky (ZapisObj) doplněno:
Není-li zadaná dodací adresa ( IDSUBJADR_D = NULL ), naplní se hodnotou fakturační adresy
( IDSUBJADR_F ). Předpokládá se, že v takovém případě zákazník na e-shopu nezadal jinou doručovací adresu, chce tedy doručit na fakturační.
Verze 1.9.11.0
Úprava logování do textového souboru – akceptováno vypnutí i pro zápis detailního LOGu požadavku ve tvaru XML.
Verze 1.9.10.0
Upraven mail chybového hlášení z webové služby – obsahuje i serializovaný obsah požadavku z e- shopu.
Verze 1.9.8.0 (jen SQL změny) , dokument verze 1.19
Upraven přepočet cenové matice tak, aby správně používal i cenovou politiku definovanou vzorci.
Doplněn parametr ESX_SKLADCENMAT - Kód skladu, který se použije při přepočtu cenové matice, pokud je v cenové politice použita skladová cena jako řídící. Lze zadat jen jeden sklad.
V aplikaci doplněna činnost 9.11.4 - Cenová matice pro e-shop. V této činnost je zobrazena celá matice předávaná do e-shopu + tlačítko „Přepočíst cenovou matici“ pro okamžitý přepočet (jinak se volá jobem podle nastavení na SQL serveru).
Verze 1.9.8.0, dokument verze 1.18
Upraveny algoritmy pro zápis subjektů z e-shopu (metoda ZapisSubjektVse):
Pokud se zakládá nový subjekt (tzn. na vstupu není IDSUBJEKT nebo se IDSUBJEKT nedohledá podle
FGUID/FID) a současně je na vstupu zadáno IČO, hledá se, zda v databázi ESO9 již existuje aktivní subjekt s tímto IČO:
Pokud existuje právě jeden aktivní subjekt s tímto IČO, provede se jeho modifikace.
- Nepřepíše se ale IČO, DIČ ani Název subjektu – předpokládá se, že v ESO9 jsou správné údaje z rejstříků a že subjekt již byl použit na dokladech.
- Pokud původní subjekt měl vazební klíče FGUID/FID přepíší se hodnotou z tohoto nového požadavku.
- V návratové hodnotě metody pak je typ operace Update místo Insert.
- Do LOG záznamu v ESO9 se napíše informace o způsobu zpracování *INFO: Nalezen*
subjekt IDSUBJEKT=N pro modifikaci podle IČO: "X".
- Pokud v tomto případě (modifikace existujícího subjektu) je současně předávána i **nová** **fakturační adresa** ( VLSUBJADR_TYP=1 ) a u subjektu již existuje aktivní fakturační adresa – nová se nezaloží, přednost má již používaná fakturační adresa, její data se ani nepřepíší.
Poznámka: v tomto případě se v návratové hodnotě metody pro adresu vrátí operace
Update místo Insert. Navíc se vrátí ID nejnovější nalezené fakturační adresy – a pokud
adresa měla vazební klíče FGUID/FID přepíší se hodnotou z tohoto nového požadavku.
Toto může být problém v datech eshopu… prosím prověřit .
- Případné dodací adresy se přidají.
Pokud existuje více než jeden aktivní subjekt s tímto IČO – skončí pokus o založení chybou
(není možné rozhodnout, který záznam modifikovat).
Poznámka: toto chování se týká pouze požadavku na založení nového subjektu, pokud je
současně zadáno IČO a toto je nalezeno u jiného již existujícího subjektu – tedy jde o
„ukradení identity“. Pokud se naopak v metodě volá modifikace určitého subjektu (pomocí
zadaného a nalezeného ID z ESO9 nebo ID z e-shopu) proběhne požadovaná modifikace bez
ohledu na výskyt více subjektů se stejným IČO.
Pokud se zakládá nová osoba subjektu (na vstupu není IDSUBJOSOBA nebo se IDSUBJOSOBA nedohledá podle FGUID/FID) a současně je na vstupu zadán e-mail, hledá se, zda v databázi ESO9 již existuje aktivní osoba tohoto subjektu se stejným e-mailem:
Pokud existuje alespoň jedna aktivní osoba s tímto e-mailem, provede se jeho modifikace.
Pokud jich existuje více, vybere se nejnovější z nich (podle nejvyššího ID)
Přepíšou se všechny údaje, které přišly z e-shopu
Pokud původní osoba měla vazební klíče FGUID/FID přepíší se hodnotou z tohoto nového požadavku.
V návratové hodnotě metody pak je pro osobu typ operace Update místo Insert.
Do LOG záznamu v ESO9 se napíše informace o způsobu zpracování INFO: Nalezena osoba
IDSUBJOSOBA=N pro modifikaci podle e-mailu: "X".
Další změny
Formuláře zařazení subjektu i zboží do e-shopu zobrazují i ID z e-shopu (FID, FGUID).
Verze 1.9.7.0, dokument verze 1.18
Oprava založení objednávky v jiné měně. Kód měny se již použije správně a přenese do objednávky.
Číselník ESHOP rozšířen o vazbu na cenovou skupinu subjektů. Nově zakládaný subjekt z tohoto eshopu je do této cenové skupiny zařazen. Pokud cenová skupina není v číselníku ESHOP vyplněna, hledá se hodnota společného parametru ESX_CENSKUP, pokud je vyplněn existující cenovou skupinou, použije se.
Číselník ESHOP rozšířen o vazbu na vzor objednávky. Nově zakládaná objednávka z tohoto eshopu je do tohoto vzoru založena. Pokud vzor není v číselníku ESHOP vyplněn, hledá se hodnota společného parametru ESX_VZOROBJ, pokud je vyplněn existujícím vzorem pro typ POB, použije se.
Verze 1.9.6.0
Metoda vracející objednávky a faktury nově testuje, zda subjekt, na který je objednávka vystavena patří do eshopu, ze kterého se volá.
Verze 1.9.5.0
Po založení/modifikaci subjektu z e-shopu je možné volat uživatelskou proceduru, která provede specifickou akci nad subjektem:
Pokud existuje procedura s názvem spESHOP_ZapisSubjekt_After, zavolá se po založení subjektu v metodě ZapisSubjektVse (tedy ještě před založením osoby a adresy v tomto subjektu).
Procedura musí mít na rozhraní 3 povinné parametry, viz specifikace v kapitole….
Zároveň musí mít právo EXECUTE v roli/účtu, pod kterým webová služba na SQL server přistupuje.
Doplněny parametry pro možnost nastavení odesílání chyb mailem při volání založení subjektu, objednávky a platby.
(27.1.2016) Při opětovném zařazení produktu do e-shopu se vyvolá vynucený zápis do žurnálu o stavu produktu na všech skladech, značení zboží a parametrech (poznámkách) tohoto zboží. Tím se vyvolá na e-shopu nové načtení těchto informací. Dříve se volalo jen při prvním zařazení do e-shopu, při opakovaném již ne.
V ESO9 v číselníku e-shopů doplněn stav aktivní/neaktivní. Zatím se nepředává do e-shopu. Do neaktivního e-shopu není možné přes rozhraní zapsat objednávku, zapsat platbu objednávky, modifikovat subjekt.
Verze 1.9.2, dokument verze 1.17
Doplněna možnost zadat složku typu ostatní na objednávce v metodě ZapisObj . V tomto případě se nekontroluje IDZBOZI. Do složky je zapsán i případný popisný text.
Upravena logika zápisu ZBOZI do žurnálu. Správně se zapisuje i operace vyřazení z e-shopu – POZOR na správné info, ze kterého e-shopu bylo zboží vyřazeno.
Doplněn parametr ESX_CENSKUP - Kód cenové skupiny subjektu, do které se zařadí subjekt založený z e-shopu, pokud v žádné není. Zařazuje se do typu ODB.
Rozšířeno logování metod modifikujících data z eshopu: Do LOG databáze se zapisuje jako AKCE=9, v položce SQL je celý serializovaný požadavek, který přišel z e-shopu.
Verze 1.9.0, dokument verze 1.16
Interní změny v algoritmech ESO9:
Do žurnálu se založení/modifikace značení zboží a poznámky ke zboží zapisuje pouze tehdy, když zboží je označeno pro e-shop.
Při označení zboží pro e-shop se vyvolá zápis stavu tohoto zboží na skladech do žurnálu, i když stav již byl naplněn před označením zboží pro e-shop.
Při označení zboží pro e-shop se vyvolá zápis značení zboží a poznámek ke zboží do žurnálu
(těch typů, které do e-shopu patří).
Verze 1.9.0
V metodě ZapisSubjektVse rozšířena návratová hodnota z IDSUBJEKT na strukturu vracející ID založených/modifikovaných osob a adres – aby bylo možné si ihned doplnit ID z ESO9 do databáze eshopu.
V návratové struktuře pro osoby a adresy se vrací ESOID, identifikátory předané z eshopu FID/FGUID, a navíc i typ provedené operace v ESO9 (insert/update).
Detailní popis struktur a rozhraní metody v kapitole 6.1
Verze 1.8.0
Doplněna práce s cenovou maticí:
Do subjektu (metoda CtiSubjekt, struktura SSubjekt) doplněna položka IDCENSKUP – „ID cenové skupiny subjektu“. Tato položka nemá v rozhraní e-shopu vazbu na žádný předávaný číselník. Může se vyskytovat pouze v cenové matici.
Doplněna metoda CtiCenMatice pro předávání cenové matice. Metoda předává určitou část cenové politiky ESO9 do e-shopu. Je takto možno předat pouze cenovou politiku definovanou pro cenové skupiny subjektů typu odběratel nebo přímo pro určitý subjekt.
Metoda předává IDZBOZI, jednu z položek IDSUBJEKT/IDCENSKUP a cenu s DPH. Pokud je metodou CtiCenMatice předán záznam pro určité zboží, má přednost před cenou na kartě zboží. Záznam může být určen pro konkrétní IDSUBJEKT (zpravidla se budou vyskytovat záznamy pro více subjektů) nebo pro cenovou skupinu subjektů – pak tato cena platí pro všechny subjekty, náležející této cenové skupině.
Pokud se vyskytuje záznam pro IDSUBJEKT, má přednost před záznamem pro IDCENSKUP.
Cenová matice se neaktualizuje ihned po změně záznamu cenové politiky či změně základní ceny na zboží – ale JOBem zpravidla jednou denně.
Interní změny v ESO9:
Do metody pro založení objednávky ZapisObj doplněny další kontroly, na existenci předávaných ID (chyba se vrací jako „neexistuje…“ místo systémových chyb referenční integrity). Kontroluje se také, zda osoba a adresy přísluší subjektu.
Interní změna při zakládání subjektů z eshopu: je možné nastavit parametrem řadu pro určení kódu nového subjektu.
Doplněny nástroje pro naplňování cenové matice z cenové politiky.
Verze 1.7.4
Plně zapojena i metoda ZapisObjPlatba .
Verze 1.7.3
Doplněn parametr ES_PoznZbozi_PARAM - ostatní parametry zboží přenášené do e-shopu kromě
OBR a PRIL. Jde o seznam kódů z číselníku SZboziTypPozn.KODTZBOZIPOZN, jednotlivé kódy jsou odděleny středníkem.
Verze 1.7.2
Doplněna kontrola na vstupu zápisových metod:
V metodě ZapisSubjektVse musí být vyplněn alespoň subjekt. Osoby a Adresy nemusí.
V metodě ZapisObj musí být vyplněna hlavička a alespoň jedna složka.
V metodě ZapisObjPlatba musí být vyplněn objekt platby.
Doplněno plné logování vstupních dat zápisových metod.
Verze 1.7.0
Úpravy související se zapojením zápisové metody pro objednávky:
Datumové položky v hlavičce objednávky (DTPORIZENI) a faktury (DTPORIZENI,
DTZDANITPLN, DTSPLATNO) uvedeny do souladu s dohodou o datových typech – jsou nyní textové typy.
Zbývající identifikátory ve struktuře pro hlavičku a složku objednávky (IDHDOK, IDSDOK) předeklarovány jako nillable – aby na vstupu zápisové metody mohl být prázdné při zakládání nového objednávky.
Do struktury složky objednávky doplněny 2 ceny HDJCENADPH (jednotková cena s DPH – aby mohla být zadávána na vstupu při založení objednávky), HDCCENAVAL (celková cena ve valutě – aby sada cen byla kompletní). Doplněna i položka RVCENA – aby se při založení složky objednávky mohlo určit, která cena je řídící. (Všechny tyto položky se samozřejmě vracejí i na výstupu metodou CtiObjednavka.)
Zapojena zápisová metoda pro objednávky – ZapisObj.
Založení celé předané struktury (hlavičky a složek objednávku) probíhá v transakci – buď se zdaří vše, nebo nic.
U struktur SObjHlav a SObjSloz (u metody CtiObjednavka) je ve sloupci Z označeno, které položky se při zakládání použijí. Ostatní sice ve struktuře formálně jsou, ale nepředávají se do procedury pro založení objednávky.
V hlavičce objednávky je možné předat pouze ID subjektu, osoby a adres nebo i položky *_PRIJEMCE, které takto předané budou mít přednost před údaji z číselníku subjektů.
Ve struktuře složky objednávky doplněna RVCENA. Při zakládání je možné předávat jednu z jednotkových cen - HDJCENAVAL , HDJCENAKC , HDJCENADPH, ostatní mohou být 0, resp. jejich hodnota není použita – doklad se přepočte podle jediné vyplněné ceny nebo podle hodnoty RVCENA. Mají tedy význam jen 3+1 hodnoty ( 0-Neurčeno, 1-JCENAVAL, 2-JCENAKC, 3-JCENADPH ).
Například u eshopu typu B2C budou mít prioritu ceny s DPH, budou připraveny jako „pěkné“. Naopak u eshopu typu B2C mohou mít prioritu ceny bez DPH.
Aby vše fungovalo správně, bude asi potřeba tuto RVCENU předávat i ve zboží – aby se přenesla řídící cena již z karty zboží… globální nastavení e-shopu by obecně nestačilo, kdyby se na eshopu vycházelo z jiné ceny než v ESO9, mohlo by se při zpětném výpočtu DPH dojít k jiným číslům – zejména u vyšších cen.
(Sloupec „Z“ – položky použité pro zápis - doplněn zpětně i u tabulek definic struktur pro subjekty, osoby, adresy.)
Do rozhraní přidána metoda ZapisObjPlatba – ještě není plně odladěna, stihnout bych měl do zítřka.
Verze 1.6.0
Úpravy související se zapojením zápisové metody pro subjekty:
Načtení Subjektu, Osoby a Adresy (metody CtiSubjekt , CtiSubjOsoba , CtiSubAdr ) již filtruje jen data podle zadaného IDESHOP.
Atribut IDSUBJEKT ve strukturách subjekt, osoba, adresa předeklarován jako nillable – aby na vstupu zápisové metody mohl být prázdný při zakládání nového subjektu. Podobně identifikátory osoby a adresy.
Do struktur SSubjekt, SSubjOsoba, SSubjAdr doplněn atribut FGUID - string(40), jako cizí identifikátor. Zůstává i FID (int64) – lze využívat takový typ identifikátoru, který databáze e- shopu používá.
Zapojena zápisová metoda pro subjekty – ZapisSubjektVse.
Založení/modifikace celé předané struktury (subjekt, adresy, osoby) probíhá v transakci – buď se zdaří vše, nebo nic.
Založená data (subjekt, adresy, osoby) jsou při založení zařazena na e-shop, ze kterého bylo zakládání zavoláno.
Ve struktuře SSubjekt: má smysl vyplňovat pouze SUBJ_NAZEV, ICO, DIC – ostatní položky ze struktury se nezapíší
(například: sleva a stav subjektu se nastavuje v ESO9).
IDSUBJEKT se naplňuje jen při modifikaci subjektu existujícího v ESO9. Při požadavku na založení nového subjektu musí být prázdné.
Modifikaci subjektu lze vyvolat zadáním FID/FGUID místo IDSUBJEKT
- procedura si IDSUBJEKT dohledá podle vazebního FID/FGUID
- přednost má IDSUBJEKT, pokud je zadané
- pak se hledá podle FID a pak podle FGUID – pokud se nalezne vazební záznam podle
FID/FGUID, provede se modifikace, pokud se nenalezne, subjekt se založí
Ve struktuře SSubjOsoba: má smysl vyplňovat pouze JMENO, TEL, MOBIL, FAX, EMAIL.
IDSUBJEKT se převezme ze subjektu
IDSUBJOSOBA se naplňuje jen při modifikaci osoby existující v ESO9. Při požadavku na založení nové osoby v rámci subjektu musí být prázdné
Při modifikaci se provádí kontrola, že osoba náleží subjektu, v jehož rámci se modifikuje
Modifikaci osoby lze vyvolat zadáním FID/FGUID místo IDSUBJOSOBA
- procedura si IDSUBJOSOBA dohledá podle vazebního FID/FGUID
- přednost má IDSUBJOSOBA, pokud je zadané
- pak se hledá podle FID a pak podle FGUID – pokud se nalezne vazební záznam podle
FID/FGUID, provede se modifikace, pokud se nenalezne, osoba se založí
Ve struktuře SSubjAdr: má smysl vyplňovat pouze SUBJADR_NAZEV, ULICE, MESTO, PSC, POZNAMKA, IDSTAT,
VLSUBJADR_TYP.
IDSUBJEKT se převezme ze subjektu
IDSUBJADR se naplňuje jen při modifikaci adresy existující v ESO9. Při požadavku na založení nové adresy v rámci subjektu musí být prázdné
Při modifikaci se provádí kontrola, že adresa náleží subjektu, v jehož rámci se modifikuje.
Dále se provádí kontrola na to že VLSUBJADR_TYP má hodnoty 0, 1, 2 a IDSTAT se vyskytuje v číselníku nebo je prázdný.
Modifikaci adresy lze vyvolat zadáním FID/FGUID místo IDSUBJADR
- procedura si IDSUBJADR dohledá podle vazebního FID/FGUID
- přednost má IDSUBJADR, pokud je zadané
- pak se hledá podle FID a pak podle FGUID – pokud se nalezne vazební záznam podle
FID/FGUID, provede se modifikace, pokud se nenalezne, adresa se založí
Verze 1.5.0
Zapojena práce s vazební tabulkou pro určení vazby „zboží pro e-shop“.
Metoda CtiZbozi vrací zboží jen pro zadaný e-shop (vstupní parametr idEshop).
Verze 1.4.0
Upřesněna definice a rozhraní metody CtiDokVazba .
Metoda je zapojena. Naplněna data vazeb. Některé objednávky v předaných datech mají více následujících faktur ve vazbě 1:N.
Verze 1.3.0
Zapojeny metody:
CtiSklad – sklad „30“ definován jako sklad pro e-shop.
CtiZbozSkl – stav zboží na skladě „30“ – toho zboží, které je na něj již naskladněno. Ostatní zboží bude mít stav zásob 0.
- Provedeno první naplnění žurnálu.
- Dále provedeno založení zboží na sklad, vytvořena skladová příjemka, která zvýšila stav zásob.
CtiObjStav – číselník stavů objednávek – do žurnálu naplněno 6 možných stavů objednávky.
CtiKurz – kurzovní lístek pro měny určené parametrem
- Parametr pro měnu doplněn EUR;USD - z cvičných důvodů.
- Do žurnálu naplněny nalezené kurzy pro tyto měny od 1.1.2015 (bude nutné doplnit parametr, od kterého data načítat kurzy)
- Názvosloví sjednoceno na KURZ (včetně kurzu u hlaviček dokladů)
Zapojeny metody pro načtení dokladů
CtiObjednavka – čte hlavičky i složky objednávek.
- Do žurnálu naplněno 30 objednávek
- Předávají se jen takové, na kterých je subjekt určený pro eshop.
CtiFaktura – čte hlavičky i složky faktur.
- Do žurnálu naplněno 43 faktur.
- Předávají se jen takové, na kterých je subjekt určený pro eshop.
Doplněn popis metody CtiDokVazba , kde však nastal obecný problém s identifikací takových záznamů. Viz poznámky v kapitole 5.10.2
Metoda tudíž ještě není zapojena.
Verze 1.2.0
Zapojeny metody: pro produkty: CtiSkupZnacZbozi , CtiZnacZbozi , pro subjekty: CtiSubjekt , CtiSubjOsoba , CtiSubAdr.
Do parametrů doplněn ES_ROZMER_MJ pro kód měrné jednotky, ve které se uvádějí všechny 3 rozměry na kartě produktu. E-shop pak případné velké/malé rozměry u přepočte na rozumnější jednotku.
Verze 1.1.2
Úprava po prozkoumání LOGu: všechny metody upraveny tak, aby akceptovaly NULL hodnoty ve vstupních parametrech.
Verze 1.1.0
Metody pro čtení doplněny prefixem Cti, aby se jednodušeji odlišily od metod pro zápis a servisních metod.
Zapojeny metody: obecné: CtiEshop, CtiDopPlatPodm, CtiDokument . pro produkty: CtiMJ, CtiZboziTypPozn, CtiZboziPozn, CtiZbozi, CtiSkupZbozi . pro načtení parametrů celého eshopu: CtiParametry pro čtení dokumentů a obrázků: CtiDokument
Metody mají zapojeno plnohodnotné čtení přes žurnál, jak je popsáno v dokumentaci. Současně funguje i přímé čtení jednoho záznamu podle zadaného ID.
Pro všechny metody založeny do žurnálu záznamy s počátečním stavem (operace init=0). U některých tabulek provedeny i následné jiné databázové operace.
Založena tabulka ESHOP, její obsah vrací metoda CtiEshop . Založen jeden záznam v tabulce ESHOP.
Do rozhraní metod se jeho IDESHOP může uvádět, ale zatím se data podle eshopů nerozlišují podle ehopu.
Založeny parametry eshopu a naplněny výchozími hodnotami.
Pro poznámky ke zboží zaveden parametr PRIL pro přílohy a parametr pro 3 typy obrázků
OBR1;OBR2;OBR3. U zboží s kódem K001 připraveny 3 obrázky židlí a PDF příloha. Tyto obrázky a přílohu je možné stáhnout metodou CtiDokument .
U metody CtiZbozi je v rozhraní uveden parametr na maximální počet vrácených záznamů, ale ještě není vnitřně implementován – vrací se všechny záznamy.
Z metod pro produkty chybí pouze metody pro skupinu značení / značení (CtiSkupZnacZbozi,
CtiZnacZbozi).
Verze 1.0.1
Doplněna metoda Stat. Zatím nepracuje s žurnálem, nereaguje tedy na vstupní položku idZurnal.
Vždy vrací celý číselník. Je však možné volat přímé čtení přes přímo zadané ID.
Verze 1.0.0
Slouží k ověření konektivity. Obsahuje metody VerzeWS, VerzeESO
Protože jde o vývojovou verzi konektoru, na které budeme ladit předávání dat, je webová služba i databáze umístěna na našich interních serverech a webová služba je zpřístupněna ven.
Při „ručním“ i programovém přístupu bude potřeba nastavit „považovat certifikát za důvěryhodný“
(či podobné nastavení).
Finální verzi umístíme na náš ESO9 Cloud, jak bylo domluveno, aby i aplikace ESO9 byla přístupná potenciálním zákazníkům.