Přeskočit na hlavní obsah

Obecný konektor ESO9 - e-shop

info

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:

ParametrTyp/délkaPopis
idEshopID eshopu, pro který se mají načíst data
idZurnalOd 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.
idID 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.
iMaxMaximá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:

ParametrTyp/délkaPopis
enResultenResultOK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby.
iErrUpřesňující číslo chyby.
sErrText chyby.
iZbyvaPoč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í.
idZurnalMaxidZurnal 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.
aXXXXSXXXX()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:

PoleTyp/délkaPopis
idZurnalIdentifikátor záznamu v žurnálu změn
TimeStampDateTimeČasová značka databázové operace
TypOperenTypOperTyp 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:

enResultPopisiErr
OKMetoda proběhla bez chyby0
SQL_ERRORChyba v SQL proceduřeČíslo chyby
EXCEPTIONVýjimka v prostředí webové službyČíslo výjimky
UNKNOWN_IDNenalezen požadovaný záznam (v případě, že se metoda volá s určitým ID)
ESHOP_NOT_ALLOWEDKonektor 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:

ParametrTyp/délkaPopis
idEshopID eshopu, ze kterého se metoda volá.
idZurnalOd jakého žurnálového záznamu načítat.
idID požadovaného záznamu z dané tabulky.

Výstupní parametry:

ParametrTyp/délkaPopis
enResultenResultOK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby.
iErrUpřesňující číslo chyby.
sErrText chyby.
idZurnalMaxidZurnal z posledního vráceného záznamu.
aESHOPSESHOP()Pole vracených dat.

Struktura SESHOP :

PoleTyp/délkaPopisPoznámka
IDESHOPID – unikátní identifikaceVstupní parametr rozhraní metod webové služby
ESHOP_KOD(10)Kód eshopu
ESHOP_NAZEV(100)Název
ESHOP_URL(250)URL eshopu
POPISPřípadný popis eshopu
VLSTAVSmallintAktivita0=aktivní; 1=neaktivní
VLPOVOLENYSmallintKonektor má povoleno s tímto eshopem pracovat0=není povolen; 1=je povolen
idZurnalIdentifikátor záznamu v žurnálu změn
TimeStampDateTimeČasová značka databázové operace
TypOperenTypOperTyp 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:

ParametrTyp/délkaPopis
idEshopID eshopu, pro který se mají načíst parametry. Zatím se při zpracování nepoužije.
idZurnalOd jakého žurnálového záznamu načítat.
idID požadovaného záznamu z dané tabulky.

Výstupní parametry:

ParametrTyp/délkaPopis
enResultenResultOK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby.
iErrUpřesňující číslo chyby.
sErrText chyby.
idZurnalMaxidZurnal z posledního vráceného záznamu.
aParamSParam()Pole vracených parametrů.

Struktura SParam :

PoleTyp/délkaPopisPoznámka
IDPARAMIdentifikátor
KODPARAM(30)Kód parametruKaždý kód má předem určený význam
VLTYPPARARAMSmallintDatový typ parametru0=SmallInt; 1=Integer; 2=Float; 3=VarChar; 4=DateTime
HODNOTA(255)Hodnota parametruHodnota je ukládána jako string, konvertovatelná na definovaný typ
idZurnalIdentifikátor záznamu v žurnálu změn
TimeStampDateTimeČasová značka databázové operace
TypOperenTypOperTyp 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:

ParametrTyp/délkaPopis
idEshopID 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
idZurnalOd jakého žurnálového záznamu načítat.
idIDSTAT požadovaného záznamu.

Výstupní parametry:

ParametrTyp/délkaPopis
enResultenResultOK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby.
iErrUpřesňující číslo chyby.
sErrText chyby.
idZurnalMaxidZurnal z posledního vráceného záznamu.
aStatSStat()Pole vracených záznamů typu SStat.

Struktura SSTAT :

PoleTyp/délkaPopisPoznámka
IDSTATID – unikátní identifikace
KOD_STATU(10)Kód státuV ESO9Start se používá 2znakový kód státu
NAZEV_STATU(65)Název státu
BlackBoxDoplňková informace
idZurnalIdentifikátor záznamu v žurnálu změn
TimeStampDateTimeČasová značka databázové operace
TypOperenTypOperTyp 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:

ParametrTyp/délkaPopis
idEshopID 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
idZurnalOd jakého žurnálového záznamu načítat.
idID požadovaného záznamu z dané tabulky.

Výstupní parametry:

ParametrTyp/délkaPopis
enResultenResultOK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby.
iErrUpřesňující číslo chyby.
sErrText chyby.
idZurnalMaxidZurnal z posledního vráceného záznamu.
aDopPlatPodmSDopPlatPodm()Pole vracených záznamů dopravních a platebních podmínek.

Struktura SDopPlatPodm :

PoleTyp/délkaPopisPoznámka
IDPODMID – unikátní identifikace
VLDRUHPODMSmallintDruh0=Dodací podmínky; 1=Platební podmínky; 2=Dopravní podmínky
KOD_PODMINKY(10)Kód
NAZEVPODMINKY(60)Název
BlackBoxDoplňková informace
idZurnalIdentifikátor záznamu v žurnálu změn
TimeStampDateTimeČasová značka databázové operace
TypOperenTypOperTyp 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:

ParametrTyp/délkaPopis
idEshopID eshopu, pro který se mají načíst data
idZurnalOd jakého žurnálového záznamu načítat
idIDOBECCIS požadovaného záznamu

Výstupní parametry:

ParametrTyp/délkaPopis
enResultenResultOK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby.
iErrUpřesňující číslo chyby.
sErrText chyby.
idZurnalMaxidZurnal z posledního vráceného záznamu.
aObecCisSObecCis()Pole vracených dat.

Struktura: SObecCis

PoleTyp/délkaPopisPoznámka
IDOBECCISUnikátní identifikace typu
VLTYPOBECCISTyp číselníkuV 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
BlackBoxDoplňková informacePro PROFI implementace
idZurnalIdentifikátor záznamu v žurnálu změn
TimeStampDateTimeČasová značka databázové operace
TypOperenTypOperTyp 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:

ParametrTyp/délkaPopis
DocGUID(40)GUID požadovaných binárních dat.

Výstupní parametry:

ParametrTyp/délkaPopis
enResultenResultOK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby.
iErrUpřesňující číslo chyby.
sErrText chyby.
oDokumentSDokumentVrácený dokument.

Struktura SDokument :

PoleTyp/délkaPopisPoznámka
DocGUID(40)GUID požadovaných binárních datStejná hodnota jako na vstupu metody
FileName(255)Název souboru včetně přílohy, pokud je s dokumentem svázán
ContentByte()Vrácená binární data jako Base64

Návratové hodnoty metody (kromě obecných):

enResultPopisiErr
DOC_NO_IDNevyplněné DocGUID na vstupu
DOC_INVALID_IDIdentifikátor dokumentu nemá správnou strukturu
DOC_UNKNOWN_IDDokument 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:

ParametrTyp/délkaPopis
idEShopJen pro čtení POCET_DATA při vlData = 1
idZurnalOd 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:

ParametrTyp/délkaPopis
enResultenResultNávratová hodnota. OK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby.
iErrUpřesňující číslo chyby.
sErrText chyby.
aZurnalSZurnal()Pole vracených dat.

Struktura SZurnal:

PoleTyp/délkaPopisPoznámka
TABULKA(30)Technický název tabulky
VLBLACKMETHOD0 = standardní metoda, 1 = tabulka pro BlackMethod
idZurnalMaxMaximální ID žurnálu pro tabulku / metodupro vlZurnal = 1
POCETPočet záznamů v žurnálu (všech nebo od vstupního IdZurnal)pro vlZurnal = 1
MaxDTDateTimeDatum a čas posledního záznamupro vlZurnal = 1
POCET_DATAPočet záznamů označených pro ESHOP v databázi ESO9 (jen pro tabulky ZBOZI, SUBJEKT, SUBJADR, SUBJOSOBA)pro vlData = 1
IDESHOP_DATAPro jaké IDESHOP je vráceno POCET_DATApro 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

Obrázek 1 - strana 21 pokud přidáte sTabulka = SUBJ%

Obrázek 2 - strana 21 pokud přidáte sTabulka = ZBOZI

Obrázek 3 - strana 21

Lze kombinovat i s čtením statistiky žurnálu:

IdEShop=1, vlZurnal = 1, vlData = 1

Obrázek 4 - strana 21 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á):

Obrázek 5 - strana 21

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:

ParametrTyp/délkaPopis
idEshopID eshopu, pro který se mají načíst data
idZurnalOd jakého žurnálového záznamu načítat.
idID 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ů.
iMaxMaximální počet záznamů, který se má načíst. 0 – všechny, které jsou k dispozici.

Výstupní parametry:

ParametrTyp/délkaPopis
enResultenResultOK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby.
iErrUpřesňující číslo chyby.
sErrText chyby.
iZbyvaPoč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.
aZboziSZbozi()Pole vracených produktů.

Struktura SZbozi :

PoleTyp/délkaPopisPoznámka
IDZBOZIID – 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]
POPISDlouhý popis[2]
VLSTAVZBOZISmallintAktivita0=aktivní; 1=neaktivní
VLTYP_SLOZSmallintTyp1=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:

ParametrTyp/délkaPopis
idEshopID eshopu, pro který se mají načíst data.
idZurnalOd jakého žurnálového záznamu načítat.
idIDSKUPZNACZBOZI požadovaného záznamu.

Výstupní parametry:

ParametrTyp/délkaPopis
enResultenResultOK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby.
iErrUpřesňující číslo chyby.
sErrText chyby.
idZurnalMaxidZurnal z posledního vráceného záznamu.
aSkupZnacZboziSSkupZnacZbozi()Pole vracených záznamů.

Struktura SSkupZnacZbozi :

PoleTyp/délkaPopisPoznámka
IDSKUPZNACZBOZIUnikátní identifikace
KOD_SKUPZNACZBOZI(10)Kód skupiny
NAZEV_SKUPZNACZBOZI(50)Název skupiny
BlackBoxDoplň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:

ParametrTyp/délkaPopis
idEshopID eshopu, pro který se mají načíst data
idZurnalOd jakého žurnálového záznamu načítat.
idIDZNACZBOZI požadovaného záznamu.
iMaxMaximální počet záznamů, který se má načíst. 0 – všechny, které jsou k dispozici.

Výstupní parametry:

ParametrTyp/délkaPopis
enResultenResultOK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby.
iErrUpřesňující číslo chyby.
sErrText chyby.
iZbyvaPočet zbývajících záznamů za právě přenesenými
idZurnalMaxidZurnal z posledního vráceného záznamu.
aZnacZboziSZnacZbozi()Pole vracených dat.

Struktura SZnacZbozi :

PoleTyp/délkaPopisPoznámka
IDZNACZBOZIUnikátní identifikace
IDSKUPZNACZBOZIIdentifikátor skupiny značeníNačten metodou SkupZnacZbozi
IDZBOZIIdentifikátor zboží, pro které je zavedeno
NAZEV_ZNACZBOZI(100)Alternativní název – například v určitém jazyce
BlackBoxDoplň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:

ParametrTyp/délkaPopis
idEshopID eshopu, pro který se mají načíst data
idZurnalOd jakého žurnálového záznamu načítat.
idID 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:

ParametrTyp/délkaPopis
enResultenResultOK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby.
iErrUpřesňující číslo chyby.
sErrText chyby.
iZbyvaPočet zbývajících záznamů za právě přenesenými
idZurnalMaxidZurnal z posledního vráceného záznamu.
aCenMaticeSCenMatice()Pole vracených záznamů cenové matice.

Struktura SCenMatice :

PoleTyp/délkaPopisPoznámka
IDCENMATICEID – unikátní identifikace
IDZBOZIID zboží, pro které je cena určena
IDSUBJEKTID subjektu, pro který může být cena určena
IDCENSKUPID cenové skupiny subjektů, pro kterou může být cena určenaIDCENSKUP subjektu je předáváno metodou CtiSubjekt. Číselník se čte CtiCenSkup.
HDCENADPHMoneyVypočtená speciální cena s DPH
HDCENAMoneyVypočtená speciální cena bez DPHod verze 2.7.2
KOD_MENY(3)Kód měny pro předávanou cenuod verze 2.7.3. Vrací buď prázdnou hodnotu nebo CZK. Určeno pro speciální verze.
BlackBoxDoplň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:

ParametrTyp/délkaPopis
idEshopID eshopu, pro který se mají načíst data
idZurnalOd jakého žurnálového záznamu načítat.
idIDSKUPZBOZI požadovaného záznamu.

Výstupní parametry:

ParametrTyp/délkaPopis
enResultenResultOK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby.
iErrUpřesňující číslo chyby.
sErrText chyby.
idZurnalMaxidZurnal z posledního vráceného záznamu.
aCenSkupSCenSkup()Pole vracených dat.

Struktura SCenSkup :

PoleTyp/délkaPopisPoznámka
IDCENSKUPUnikátní identifikace skupiny
CEN_SKUP(20)Kód cenové skupiny
NAZEV_CEN_SKUP(90)Název cenové skupiny
BlackBoxDoplň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:

ParametrTyp/délkaPopis
idEshopID eshopu, pro který se mají načíst data
idZurnalOd jakého žurnálového záznamu načítat.
idIDMJ požadovaného záznamu.

Výstupní parametry:

ParametrTyp/délkaPopis
enResultenResultOK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby.
iErrUpřesňující číslo chyby.
sErrText chyby.
idZurnalMaxidZurnal z posledního vráceného záznamu.
aMJSMJ()Pole vracených dat.

Struktura SMJ :

PoleTyp/délkaPopisPoznámka
IDMJUnikátní identifikace
KOD_MJ(10)Kód měrné jednotky
NAZEV_MJ(60)Název měrné jednotky
BlackBoxDoplň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:

ParametrTyp/délkaPopis
idEshopID eshopu, pro který se mají načíst data
idZurnalOd jakého žurnálového záznamu načítat.
idIDTZBOZIPOZN požadovaného záznamu.

Výstupní parametry:

ParametrTyp/délkaPopis
enResultenResultOK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby.
iErrUpřesňující číslo chyby.
sErrText chyby.
idZurnalMaxidZurnal z posledního vráceného záznamu.
aZboziTypPoznSZboziTypPozn()Pole vracených záznamů.

Struktura SZboziTypPozn :

PoleTyp/délkaPopisPoznámka
IDTZBOZIPOZNUnikátní identifikace typu poznámky
KODTZBOZIPOZN(6)Kód typu
NAZEVTZBOZIPOZN(60)Název typu
BlackBoxDoplň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:

ParametrTyp/délkaPopis
idEshopID eshopu, pro který se mají načíst data
idZurnalOd jakého žurnálového záznamu načítat.
idIDZBOZIPOZN požadovaného záznamu.
iMaxMaximální počet záznamů, který se má načíst. 0 – všechny, které jsou k dispozici.

Výstupní parametry:

ParametrTyp/délkaPopis
enResultenResultOK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby.
iErrUpřesňující číslo chyby.
sErrText chyby.
iZbyvaPočet zbývajících záznamů za právě přenesenými
idZurnalMaxidZurnal z posledního vráceného záznamu.
aZboziPoznSZboziPozn()Pole vracených dat.

Struktura SZboziPozn :

PoleTyp/délkaPopisPoznámka
IDZBOZIPOZNUnikátní identifikace poznámky
IDZBOZIID zboží, pro které je určenaZískáno metodou Zbozi
IDTZBOZIPOZNTyp poznámkyZískáno metodou ZboziTypPozn
DTZBOZIPOZNDATUMDateTimeDatumová položka poznámky
HDZBOZIPOZNCISLOMoneyČíselná hodnota poznámky
ZBOZIPOZNTEXT(60)Krátký text poznámky
ZBOZIPOZNMEMODlouhý text poznámky
POZNGUID(40)Odkaz do dokumentové databázeLibovolná binární data, obrázek, dokument. Obsah se musí načíst speciální metodou CtiDokument.
BlackBoxDoplň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:

ParametrTyp/délkaPopis
idEshopID eshopu, pro který se mají načíst data
idZurnalOd jakého žurnálového záznamu načítat.
idIDSKUPZBOZI požadovaného záznamu.

Výstupní parametry:

ParametrTyp/délkaPopis
enResultenResultOK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby.
iErrUpřesňující číslo chyby.
sErrText chyby.
idZurnalMaxidZurnal z posledního vráceného záznamu.
aSkupZboziSSkupZbozi()Pole vracených dat.

Struktura SSkupZbozi :

PoleTyp/délkaPopisPoznámka
IDSKUPZBOZIUnikátní identifikace skupiny
KOD_SKUP_ZBOZI(20)Kód skupiny zbožíDefinuje i strom kategorie
NAZEV_SKUP_ZBOZI(255)Název skupiny zboží
BlackBoxDoplň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:

ParametrTyp/délkaPopis
idEshopID eshopu, pro který se mají načíst data
idZurnalOd jakého žurnálového záznamu načítat.
idIDZBOZIVAZBA požadovaného záznamu.
iMaxMaximální počet záznamů, který se má načíst. 0 – všechny, které jsou k dispozici.

Výstupní parametry:

ParametrTyp/délkaPopis
enResultenResultOK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby.
iErrUpřesňující číslo chyby.
sErrText chyby.
iZbyvaPočet zbývajících záznamů za právě přenesenými
idZurnalMaxidZurnal z posledního vráceného záznamu.
aZboziVazbaSZboziVazba()Pole vracených dat.

Struktura SZboziVazba :

PoleTyp/délkaPopisPoznámka
IDZBOZIVAZBAUnikátní identifikace vazby
VLTYP_VAZBYSmallintTyp vazbyViz tabulka níže
IDZBOZINID nadřízeného zbožíVýznam podle typu vazby
IDZBOZIPID podřízeného zbožíVýznam podle typu vazby
POZICEPořadí zobrazeníJen pro některé typy
BlackBoxDoplň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:

ParametrTyp/délkaPopis
idEshopID eshopu, pro který se mají načíst data
idZurnalOd jakého žurnálového záznamu načítat.
idIDSKLAD požadovaného záznamu.

Výstupní parametry:

ParametrTyp/délkaPopis
enResultenResultOK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby.
iErrUpřesňující číslo chyby.
sErrText chyby.
idZurnalMaxidZurnal z posledního vráceného záznamu.
aSkladSSklad()Pole vracených dat.

Struktura: SSklad

PoleTyp/délkaPopisPoznámka
IDSKLADUnikátní identifikace skladu
CIS_SKLAD(6)Číslo skladu
NAZEV_SKLAD(90)Název skladu
BlackBoxDoplň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:

ParametrTyp/délkaPopis
idEshopID eshopu, pro který se mají načíst data
idZurnalOd jakého žurnálového záznamu načítat.
idIDZBOZSKL požadovaného záznamu.
idZbozi[*1]Přímé čtení záznamů stavů na skladě pro zadané zboží mimo žurnál změn.
iMaxMaximální počet záznamů, který se má načíst. 0 – všechny, které jsou k dispozici.

Výstupní parametry:

ParametrTyp/délkaPopis
enResultenResultOK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby.
iErrUpřesňující číslo chyby.
sErrText chyby.
iZbyvaPočet zbývajících záznamů za právě přenesenými
idZurnalMaxidZurnal z posledního vráceného záznamu.
aZbozSklSZbozSkl()Pole vracených dat.

Struktura: SZbozSkl

PoleTyp/délkaPopisPoznámka
IDZBOZSKLUnikátní zboží na určitém skladě
IDSKLADIdentifikátor skladu
IDZBOZIIdentifikátor zboží / produktuNebude přenášeno pro služby
MNSTAVDecimal (19,5)MnožstvíStandardně se vrací volné fyzické množství
BlackBoxDoplň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:

ParametrTyp/délkaPopis
idEshopID eshopu, pro který se mají načíst data
idZurnalOd jakého žurnálového záznamu načítat.
idIDKURZL požadovaného záznamu z dané tabulky.

Výstupní parametry:

ParametrTyp/délkaPopis
enResultenResultOK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby.
iErrUpřesňující číslo chyby.
sErrText chyby.
idZurnalMaxidZurnal z posledního vráceného záznamu.
aKurzSKurz()Pole vracených dat.

Struktura: SKurz

PoleTyp/délkaPopisPoznámka
IDKURZLUnikátní identifikace záznamu
KOD_MENY(3)Kód měny
DTKURZLDateTimeDatum, ke kterému je kurz platný
HDKURZDecimal (19,6)Hodnota kurzuPředává se devizy střed
BlackBoxDoplňková informace
idZurnalIdentifikátor záznamu v žurnálu změn
TimeStampDateTimeČasová značka databázové operace
TypOperenTypOperTyp 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:

ParametrTyp/délkaPopis
idEshopID eshopu, pro který se mají načíst data
idZurnalOd jakého žurnálového záznamu načítat.
idIDSUBJEKT požadovaného záznamu.
iMaxMaximální počet záznamů, který se má načíst. 0 – všechny, které jsou k dispozici.

Výstupní parametry:

ParametrTyp/délkaPopis
enResultenResultOK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby.
iErrUpřesňující číslo chyby.
sErrText chyby.
iZbyvaPočet zbývajících záznamů za právě přenesenými
idZurnalMaxidZurnal z posledního vráceného záznamu.
aSubjektSSubjekt()Pole vracených dat.

Struktura: SSubjekt

PoleTyp/délkaPopisPoznámka
IDSUBJEKTUnikátní identifikace subjektu
SUBJ_NAZEV(255)Plný obchodní název podle ORZpravidla jméno a příjmení u soukromé osoby; Z
ICO(20)IČONebo 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:

ParametrTyp/délkaPopis
idEshopID eshopu, pro který se mají načíst data
idZurnalOd jakého žurnálového záznamu načítat.
idIDSUBJOSOBA požadovaného záznamu.
iMaxMaximální počet záznamů, který se má načíst. 0 – všechny, které jsou k dispozici.

Výstupní parametry:

ParametrTyp/délkaPopis
enResultenResultOK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby.
iErrUpřesňující číslo chyby.
sErrText chyby.
iZbyvaPočet zbývajících záznamů za právě přenesenými
idZurnalMaxidZurnal z posledního vráceného záznamu.
aSubjOsobaSSubjOsoba()Pole vracených dat.

Struktura: SSubjOsoba

PoleTyp/délkaPopisPoznámka
IDSUBJOSOBAUnikátní identifikace osoby
IDSUBJEKTIdentifikace subjektuSubjekt, kterému je osoba přiřazena
IDSUBJADRIdentifikace hlavní adresy osobyPokud je přiřazena [2]
JMENO(100)Jméno a příjmeníHistoricky v jedné položce; Z
TEL(30)TelefonZ
MOBIL(30)Mobilní čísloZ
FAX(30)FaxZ
EMAIL(100)E-mail[1]; Z
VLSTAVSUBJOSOBASmallintPříznak aktivity osoby0=Aktivní; 1=Neaktivní
FIDInt/BigIntID záznamu v databázi eShopZ
FGUID(40)ID záznamu v databázi eShopZ
BlackBoxDoplňková informaceZ 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:

ParametrTyp/délkaPopis
idEshopID eshopu, pro který se mají načíst data
idZurnalOd jakého žurnálového záznamu načítat.
idIDSUBJADR požadovaného záznamu.
iMaxMaximální počet záznamů, který se má načíst. 0 – všechny, které jsou k dispozici.

Výstupní parametry:

ParametrTyp/délkaPopis
enResultenResultOK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby.
iErrUpřesňující číslo chyby.
sErrText chyby.
iZbyvaPočet zbývajících záznamů za právě přenesenými
idZurnalMaxidZurnal z posledního vráceného záznamu.
aSubjAdrSSubjAdr()Pole vracených dat.

Struktura: SSubjAdr

PoleTyp/délkaPopisPoznámka
IDSUBJADRUnikátní identifikace adresy
IDSUBJEKTIdentifikace subjektuSubjekt, kterému je osoba přiřazena
IDSUBJOSOBAIdentifikace hlavní osoby adresyPokud je přiřazena [1]
SUBJADR_NAZEV(255)Doplňující název subjektu k adreseNapř. název pobočky; Z
ULICE(60)Ulice a čísloZ historických důvodů v jedné položce; Z
MESTO(60)Město, obecZ
PSC(10)PSČZ
POZNAMKA(60)Poznámka k adreseNapříklad o způsobu doručení na toto místo; Z
IDSTATIdentifikátor státuVazba na číselník států; Z
VLSTAVSUBJADRSmallintPříznak aktivity adresy0=Aktivní; 1=Neaktivní
VLSUBJADR_TYPSmallintTyp adresy0=neurčeno; 1=fakturační; 2=dodací; Z
FIDInt/BigIntID záznamu v databázi eShopZ
FGUID(40)ID záznamu v databázi eShopZ
BlackBoxDoplňková informaceZ pro čtení i zápis
idZurnalIdentifikátor záznamu v žurnálu změn
TimeStampDateTimeČasová značka databázové operace
TypOperenTypOperTyp 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:

ParametrTyp/délkaPopis
idEshopID eshopu, pro který se mají načíst data
idZurnalOd jakého žurnálového záznamu načítat
idIDTYPDOK požadovaného záznamu

Výstupní parametry:

ParametrTyp/délkaPopis
enResultenResultOK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby.
iErrUpřesňující číslo chyby.
sErrText chyby.
idZurnalMaxidZurnal z posledního vráceného záznamu.
aTypDokSTypDok()Pole vracených dat.

Struktura: STypDok

PoleTyp/délkaPopisPoznámka
IDTYPDOKUnikátní identifikace stavu
TYP_DOK(10)Kód typu dokladuNapříklad POB, FVU
NAZEV_TYPDOK(30)Název typu dokladuNapříklad „Faktura vydaná účetní“
VLUCELsmallintÚčel typu dokladu – viz popis nížeSituace, v jaké bude typ dokladu použit
idZurnalIdentifikátor záznamu v žurnálu změn
TimeStampDateTimeČasová značka databázové operace
TypOperenTypOperTyp 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:

ParametrTyp/délkaPopis
idEshopID eshopu, pro který se mají načíst data
idZurnalOd jakého žurnálového záznamu načítat
idIDSTAVHDOK požadovaného záznamu

Výstupní parametry:

ParametrTyp/délkaPopis
enResultenResultOK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby.
iErrUpřesňující číslo chyby.
sErrText chyby.
idZurnalMaxidZurnal z posledního vráceného záznamu.
aObjStavSObjStav()Pole vracených dat.

Struktura: SObjStav

PoleTyp/délkaPopisPoznámka
IDSTAVHDOKUnikátní identifikace stavu
IDTYPDOKID typu dokladu, pro který je stav určenTypy se vrací metodou CtiTypDok (od verze 3.0.2)
VLTYPDOKsmallintTyp dokladu – historická hodnotaVe start verzi 0=objednávka. Historická hodnota, nyní přesněji řeší IDTYPDOK
VLSTAVSmallintČíselná hodnota stavu
STAV(30)Stručný textový popis stavuZ těchto hodnot vybírá uživatel ESO9 při změně stavu
POPISVYZNAMU(200)Popis stavuJen doplňková informace
idZurnalIdentifiká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:

ParametrTyp/délkaPopis
idEshopID eshopu, pro který se mají načíst data
idZurnalOd jakého žurnálového záznamu načítat.
idIDHDOK požadovaného záznamu.
iMaxMaximální počet záznamů, který se má načíst. 0 – všechny, které jsou k dispozici.

Výstupní parametry:

ParametrTyp/délkaPopis
enResultenResultOK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby.
iErrUpřesňující číslo chyby.
sErrText chyby.
iZbyvaPočet zbývajících záznamů za právě přenesenými (zjišťuje se nanejvýš pro iMax záznamů)
idZurnalMaxidZurnal z posledního vráceného záznamu.
aObjHlavSObjHlav()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

PoleTyp/délkaPopisPoznámka
IDSDOKJednoznačný identifikátor složky / řádku
IDHDOKVazba na hlavičku dokladu
PORADIPořadí řádku v dokladuPomůže udržet stejné uspořádání řádů jako při založení
VLTYP_SLOZSmallintTyp složky0=Ostatní; 1=Zboží; 2=Služba; Z
IDZBOZIIdentifikátor zbožíVazba na číselník v případě typů 1 a 2; Z! povinná
SLOZKA_IDENT(30)Krátká identifikaceZpravidla kód zboží, případně volná pro typ ostatní; Z
TEXT_SLOZVolný textZ
IDSKLADIdentifikátor skladuU objednávky není povinná, ale při objednání z určitého skladu je možné vyplnit
MNPOCETMJDecimal (19,5)Objednané množstvíZ
IDMJJednotkaVazba na číselník MJ
RVCENASmallintUrčení řídící ceny0=Neurčeno; 1=JCENAVAL; 2=JCENAKC; 3=JCENADPH; 4=CCENAVAL; 5=CCENAKC; 6=CCENADPH; 7=JCENAVALDPH; 8=CCENAVALDPH; Z
HDJCENAVALMoneyJednotková cena v měně dokladuPři zakládání objednávky stačí jedna z cen. Podle hodnoty RVCENA
HDJCENAKCMoneyJednotková cena v domácí měněZ
HDJCENADPHMoneyJednotková cena s DPH v domácí měněZ
HDCCENAVALMoneyCelková cena v měně dokladu
HDCCENAKCMoneyCelková cena v domácí měně bez DPH
HDCCENADPHMoneyCelková 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

PoleTyp/délkaPopisPoznámka
IDHDOKUnikátní identifikace dokladu
IDTYPDOKID typu dokladuTypy 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 ESHOPuPokud 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
IDSUBJEKTIdentifikace subjektu / firmy
IDSUBJOSOBAID osoby subjektu, která objednala
IDSUBJADR_FID fakturační adresy subjektu
IDSUBJADR_DID adresy subjektu, kam dodat
NAZEV_PRIJEMCE(120)Jméno příjemce, firmaPřípadně ručně zadané údaje adresy
ULICE_PRIJEMCE(60)Ulice a číslo
MESTO_PRIJEMCE(60)Město, obec
PSC_PRIJEMCE(10)PSČ
DTPORIZENIDateDatum pořízení dokladuJen jako datum bez času
DTZDANITPLNDateDatum zdanitelného plnění
DTSPLATNODateDatum splatnosti
IDPODMINKY_PREPID přepravní podmínkyVazba na číselník podmínek, pro VLDRUHPODM = 1, struktura SDopPlatPodm
IDPODMINKY_PLATID platební podmínkyVazba na číselník pro VLDRUHPODM = 2
IDPODMINKY_DODID dodací podmínkyVazba na číselník (od verze 2.6) pro VLDRUHPODM = 0
HDKUHRADEVALMoneyK úhradě v měně dokladu (včetně DPH)
HDKUHRADEKCMoneyK úhradě v CZK (včetně DPH)Obecněji v domácí měně aplikace
HDKUHRADE_ZAKLADMoneyK ú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

PoleTyp/délkaPopisPoznámka
IDSDOKJednoznačný identifikátor složky / řádku
IDHDOKVazba na hlavičku faktury
PORADIPořadí řádku v dokladuPomůže udržet stejné uspořádání řádů jako při založení
VLTYP_SLOZSmallintTyp složky, stejný jako v číselníku ZBOZI0=Ostatní; 1=Zboží; 2=Služba
IDZBOZIIdentifikátor zbožíVazba na číselník v případě typů 1 a 2 povinná
SLOZKA_IDENT(30)Krátká identifikaceZpravidla kód zboží, případně volná pro typ ostatní
TEXT_SLOZVolný text
MNPOCETMJDecimal (19,5)Množství
IDMJJednotkaVazba na číselník MJ
HDJCENAVALMoneyJednotková cena v měně dokladu
HDJCENAKCMoneyJednotková cena v domácí měně
HDCCENAKCMoneyCelková cena v domácí měně bez DPH
HDCCENADPHMoneyCelková cena v domácí měně s DPH
MNSAZBADPHDecimal (3,1)DPH sazbaHodnota sazby v procentech
BlackBoxDoplň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:

ParametrTyp/délkaPopis
idEshopID eshopu, pro který se mají načíst data
idZurnalOd jakého žurnálového záznamu načítat.
idIDHDOK 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:

ParametrTyp/délkaPopis
enResultenResultOK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby.
iErrUpřesňující číslo chyby.
sErrText chyby.
iZbyvaPočet zbývajících záznamů za právě přenesenými
idZurnalMaxidZurnal z posledního vráceného záznamu.
aDokVazbaSDokVazba()Pole vracených vazeb.

Struktura: SDokVazba

PoleTyp/délkaPopisPoznámka
Struktura nemá identifikátor
IDHDOKPID hlavičky předchůdce – tedy objednávky
aDokNInt()Pole ID hlaviček faktur, které jsou následníkem objednávkyJe předávána vždy celá vazba
idZurnalIdentifikátor záznamu v žurnálu změn
TimeStampDateTimeČasová značka databázové operace
TypOperenTypOperTyp 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:

ParametrTyp/délkaPopis
idEshopID eshopu, pro který se mají načíst data
idZurnalOd jakého žurnálového záznamu načítat
idIDDOKLADTYPDOC požadovaného záznamu

Výstupní parametry:

ParametrTyp/délkaPopis
enResultenResultOK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby.
iErrUpřesňující číslo chyby.
sErrText chyby.
idZurnalMaxidZurnal z posledního vráceného záznamu.
aDokladTypDocSDokladTypDoc()Pole vracených dat.

Struktura: SDokladTypDoc

PoleTyp/délkaPopisPoznámka
IDDOKLADTYPDOCUnikátní identifikace typu
KOD(10)Kód typu
NAZEV(60)Popis typu
BlackBoxDoplňková informacePro PROFI implementace
idZurnalIdentifikátor záznamu v žurnálu změn
TimeStampDateTimeČasová značka databázové operace
TypOperenTypOperTyp 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:

ParametrTyp/délkaPopis
idEshopID eshopu, pro který se mají načíst data
idZurnalOd jakého žurnálového záznamu načítat
idIDDOKLADDOKUMENTTYP požadovaného záznamu

Výstupní parametry:

ParametrTyp/délkaPopis
enResultenResultOK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby.
iErrUpřesňující číslo chyby.
sErrText chyby.
idZurnalMaxidZurnal z posledního vráceného záznamu.
aDokladDokumentTypSDokladDokumentTyp()Pole vracených dat.

Struktura: SDokladDokumentTyp

PoleTyp/délkaPopisPoznámka
IDDOKLADDOKUMENTTYPIntUnikátní identifikace typu
KOD(10)Kód typu
NAZEV(60)Popis typu
BlackBoxDoplňková informacePro PROFI implementace
idZurnalIdentifikátor záznamu v žurnálu změn
TimeStampDateTimeČasová značka databázové operace
TypOperenTypOperTyp 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:

ParametrTyp/délkaPopis
idEshopID eshopu, pro který se mají načíst data
idZurnalOd jakého žurnálového záznamu načítat
idIDDOKLADSTAVDOC požadovaného záznamu

Výstupní parametry:

ParametrTyp/délkaPopis
enResultenResultOK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby.
iErrUpřesňující číslo chyby.
sErrText chyby.
idZurnalMaxidZurnal z posledního vráceného záznamu.
aDokladStavDocSDokladStavDoc()Pole vracených dat.

Struktura: SDokladStavDoc

PoleTyp/délkaPopisPoznámka
IDDOKLADSTAVDOCUnikátní identifikace typu
IDDOKLADTYPDOCID typu dokumentu k dokladu, ke kterému stav patříPřenáší se číselníkem CtiDokladTypDoc
VLSTAVČíselní hodnota stavuNapříklad 0, 10, 20, ...
STAV(30)Stručný název stavu
POPISVYZNAMUPopis významu stavu
BlackBoxDoplňková informacePro PROFI implementace
idZurnalIdentifikátor záznamu v žurnálu změn
TimeStampDateTimeČasová značka databázové operace
TypOperenTypOperTyp 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:

ParametrTyp/délkaPopis
idEshopID eshopu, pro který se mají načíst data
idZurnalOd jakého žurnálového záznamu načítat.
idIDDOKLADDOKUMENT požadovaného záznamu.
iMaxMaximální počet záznamů, který se má načíst. 0 – všechny, které jsou k dispozici.

Výstupní parametry:

ParametrTyp/délkaPopis
enResultenResultOK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby.
iErrUpřesňující číslo chyby.
sErrText chyby.
iZbyvaPočet zbývajících záznamů za právě přenesenými
idZurnalMaxidZurnal z posledního vráceného záznamu.
aDokladDokumentSDokladDokument()Pole vracených dokumentů k dokladům.

Struktura: SDokladDokument

PoleTyp/délkaPopisPoznámka
IDDOKLADDOKUMENTUnikátní identifikace
IDHDOKID dokladuVracené při založení objednávky nebo při čtení faktury
DOCGUID(40)GUID binárních datObsah dokumentu se načte metodou CtiDokument
IDDOKLADDOKUMENTTYPIntIdentifikace typu – zpětná kompatibilitaStarší číselník typů, vracený metodou CtiDokladDokumentTyp
IDDOKLADTYPDOCIdentifikace typuNovější číselník typů, vracený metodou CtiDokladTypDoc
DTINSERTDateTimeDatum a čas založení dokumentu
DTUPDATEDateTimeDatum a čas změny dokumentu
FILENAME(255)Název dokumentuVčetně přípony, například .PDF
DESCRIPTION(2000)Popis obsahu dokumentuOd verze 3.6
KEYWORDS(300)Klíčová slova, zpravidla oddělená ;Od verze 3.6
VERSION(20)Verze dokumentu, zpravidla ve tvaru X.Y.ZZOd verze 3.6, pokud se v implementaci používá
IDDOKLADSTAVDOCVazba na číselník stavů dokumentuOd verze 3.6, číselník se čte metodou CtiDokladStavDoc
BlackBoxDoplňková informacePro PROFI implementace
idZurnalIdentifikátor záznamu v žurnálu změn
TimeStampDateTimeČasová značka databázové operace
TypOperenTypOperTyp 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:

ParametrTyp/délkaPopis
idEshopID eshopu, pro který se mají načíst data
idZurnalOd jakého žurnálového záznamu načítat
idIDZBOZITYPDOC požadovaného záznamu

Výstupní parametry:

ParametrTyp/délkaPopis
enResultenResultOK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby.
iErrUpřesňující číslo chyby.
sErrText chyby.
idZurnalMaxidZurnal z posledního vráceného záznamu.
aZboziTypDocSZboziTypDoc()Pole vracených dat.

Struktura: SZboziTypDoc

PoleTyp/délkaPopisPoznámka
IDZBOZITYPDOCUnikátní identifikace typu
KOD(10)Kód typu
NAZEV(60)Popis typu
BlackBoxDoplňková informacePro PROFI implementace
idZurnalIdentifikátor záznamu v žurnálu změn
TimeStampDateTimeČasová značka databázové operace
TypOperenTypOperTyp 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:

ParametrTyp/délkaPopis
idEshopID eshopu, pro který se mají načíst data
idZurnalOd jakého žurnálového záznamu načítat
idIDZBOZISTAVDOC požadovaného záznamu

Výstupní parametry:

ParametrTyp/délkaPopis
enResultenResultOK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby.
iErrUpřesňující číslo chyby.
sErrText chyby.
idZurnalMaxidZurnal z posledního vráceného záznamu.
aZboziStavDocSZboziStavDoc()Pole vracených dat.

Struktura: SZboziStavDoc

PoleTyp/délkaPopisPoznámka
IDZBOZISTAVDOCUnikátní identifikace typu
IDZBOZITYPDOCID typu dokumentu ke zboží, ke kterému stav patříPřenáší se číselníkem CtiZboziTypDoc
VLSTAVČíselní hodnota stavuNapříklad 0, 10, 20, ...
STAV(30)Stručný název stavu
POPISVYZNAMUPopis významu stavu
BlackBoxDoplňková informacePro PROFI implementace
idZurnalIdentifikátor záznamu v žurnálu změn
TimeStampDateTimeČasová značka databázové operace
TypOperenTypOperTyp 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:

ParametrTyp/délkaPopis
idEshopID eshopu, pro který se mají načíst data
idZurnalOd jakého žurnálového záznamu načítat.
idIDZBOZIDOKUMENT požadovaného záznamu.
iMaxMaximální počet záznamů, který se má načíst. 0 – všechny, které jsou k dispozici.

Výstupní parametry:

ParametrTyp/délkaPopis
enResultenResultOK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby.
iErrUpřesňující číslo chyby.
sErrText chyby.
iZbyvaPočet zbývajících záznamů za právě přenesenými
idZurnalMaxidZurnal z posledního vráceného záznamu.
aZboziDokumentSZboziDokument()Pole vracených dokumentů k dokladům.

Struktura: SZboziDokument

PoleTyp/délkaPopisPoznámka
IDZBOZIDOKUMENTUnikátní identifikace
IDZBOZIID zbožíID zboží, ke kterému je dokument přiřazen
DOCGUID(40)GUID binárních datObsah dokumentu se načte metodou CtiDokument
IDZBOZITYPDOCIdentifikace typuNovější číselník typů, vracený metodou CtiZboziTypDoc
DTINSERTDateTimeDatum a čas založení dokumentu
DTUPDATEDateTimeDatum a čas změny dokumentu
FILENAME(255)Název dokumentuVčetně přípony, například .PDF
DESCRIPTION(2000)Popis obsahu dokumentuOd verze 3.6
KEYWORDS(300)Klíčová slova, zpravidla oddělená ;Od verze 3.6
VERSION(20)Verze dokumentu, zpravidla ve tvaru X.Y.ZZOd verze 3.6, pokud se v implementaci používá
IDZBOZISTAVDOCVazba na číselník stavů dokumentuOd verze 3.6, číselník se čte metodou CtiZboziStavDoc
BlackBoxDoplňková informacePro PROFI implementace
idZurnalIdentifikátor záznamu v žurnálu změn
TimeStampDateTimeČasová značka databázové operace
TypOperenTypOperTyp 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:

ParametrTyp/délkaPopis
idEshopID 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
idZurnalOd jakého žurnálového záznamu načítat.
idID 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:

ParametrTyp/délkaPopis
enResultenResultOK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby.
iErrUpřesňující číslo chyby.
sErrText chyby.
iZbyvaPočet zbývajících záznamů za právě přenesenými
idZurnalMaxidZurnal z posledního vráceného záznamu.
aBlackMethodSBlackMethod()Pole vracených dat.

Struktura: SBlackMethod

PoleTyp/délkaPopisPoznámka
TABULKA(30)Název přenášené tabulkyPokud 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áší.
IDTABULKAUnikátní ID záznamu z tabulky TABULKA
BlackBoxOstatní sloupce věty z přenášené tabulkyObsah je pro každou tabulku jiný
idZurnalIdentifikátor záznamu v žurnálu změn
TimeStampDateTimeČasová značka databázové operace
TypOperenTypOperTyp 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:

ParametrTyp/délkaPopis
idEshopID eshopu, ze kterého se volá
oSubjektSSubjektZapisovaný subjekt
aSubjOsobaSSubjOsoba()Pole osob subjektu
aSubjAdrSSubjAdr()Pole adres subjektu

Výstupní parametry:

ParametrTyp/délkaPopis
enResultenResultOK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby.
iErrUpřesňující číslo chyby.
sErrText chyby.
oSubjektZalSSubjektZalNávratové vazby na založený/modifikovaný subjekt.
aSubjOsobaZalSSubjOsobaZal()Návratové vazby na založené/modifikované osoby.
aSubjAdrZalSSubjAdrZal()Návratové vazby na založené/modifikované adresy.

Návratová struktura: SSubjektZal

PoleTyp/délkaPopisPoznámka
IDSUBJEKTUnikátní identifikace subjektuZaložený/modifikovaný
FIDBigIntID záznamu v databázi eShopHodnota ze vstupu, pro párování
FGUID(40)ID záznamu v databázi eShopHodnota ze vstupu, pro párování
TypOperenTypOperTyp databázové operaceInsert/Update

Návratová struktura: SSubjOsobaZal

PoleTyp/délkaPopisPoznámka
IDSUBJOSOBAUnikátní identifikace osobyZaložená/modifikovaná
FIDBigIntID záznamu v databázi eShopHodnota ze vstupu, pro párování
FGUID(40)ID záznamu v databázi eShopHodnota ze vstupu, pro párování
TypOperenTypOperTyp databázové operaceInsert/Update

Návratová struktura: SSubjAdrZal

PoleTyp/délkaPopisPoznámka
IDSUBJADRUnikátní identifikace adresyZaložená/modifikovaná
FIDBigIntID záznamu v databázi eShopHodnota ze vstupu, pro párování
FGUID(40)ID záznamu v databázi eShopHodnota ze vstupu, pro párování
TypOperenTypOperTyp databázové operaceInsert/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:

ParametrTyp/délkaPopis
idEshopID eshopu, ze kterého se volá
oObjHlavSObjHlavHlavička zapisované objednávky, typ stejný jako při čtení v metodě CtiObjHlav.
aObjSlozSObjSloz()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:

ParametrTyp/délkaPopis
enResultenResultOK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby.
iErrUpřesňující číslo chyby.
sErrText chyby.
IDHDOKID 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:

ParametrTyp/délkaPopis
idEshopID eshopu, ze kterého se volá
oObjPlatbaSObjPlatbaJeden záznam platby

Výstupní parametry:

ParametrTyp/délkaPopis
enResultenResultOK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby.
iErrUpřesňující číslo chyby.
sErrText chyby.

Struktura: SObjPlatba

PoleTyp/délkaPopisPoznámka
IDHDOKID objednávkyID získané založením objednávky do ESO9
DTPLATBADateTimeDatum a čas platby
HDUHRADAMoneyUhrazená částka
BRANA(20)Název platební brány
TRAN(100)TransakcePří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:

ParametrTyp/délkaPopis
idEshopID eshopu, pro který se mají načíst data
sTabulka(30)Název tabulky nebo entity, do které zapisujete.
idTabulkaID 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é.
FIDLongID 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.
iOperaceTyp 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.
BlackBoxVlastní 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:

ParametrTyp/délkaPopis
enResultenResultOK – metoda proběhla bez chyby. Jinak obsahuje hlavní kód metody chyby.
iErrUpřesňující číslo chyby.
sErrText chyby.
idTabulkaZalID 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.