==== E-shop ====
Pokud je implementováno napojení ESHOPu přes obecný konektor (dokumentace: {{ :techdoc:konektoreso9_eshop_public.pdf| Konektor ESO9-eshop}}) je možné modifikovat jeho chování PROFI procedurami.\\
=== Blackbox pro čtení dat===
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.
CREATE OR ALTER function fnESHOP_BlackBox_ALL (
@IDESHOP int = NULL,
@ID int = NULL,
@Tabulka varchar(30) = NULL)
returns varchar(max)
=== Blackbox pro zápis dat ===
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.\\
CREATE OR ALTER PROCEDURE spESHOP_BlackBoxZapis
@ID int = 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 int = NULL, -- ID eshopu, ze kterého je voláno
@vlNalezena smallint = NULL -- 0-nenalezena, vložení; 1-nalezena
=== 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).\\
CREATE OR ALTER 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
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 ===
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.\\
CREATE OR ALTER PROCEDURE dbo.spESHOP_ZapisObjHDOK_Before
@IDESHOP int = NULL,
@IDHDOK int = 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.\\
CREATE OR ALTER 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):\\
@VLUHRAZENO smallint -- Například: 0=ne, 1=ano, 2=částečně – podle domluvy s eshopem
@HDKUHRADEKC money -- celková cena objednávky