E-shop
Pokud je implementováno napojení ESHOPu přes obecný konektor (dokumentace: 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