Podrobný popis práce s formátem ISDOC najdete v dokumentu Elektronická fakturace v ISDOC.
V rámci souboru ve formátu ISDOC si lze předávat i uživatelská data. Spolu s povinnými položkami si tak lze předat i vlastní data, která pak lze zpracovat v cílovém systému.
V ESO9 je si lze uživatelská data předávat v rámci ručního exportu/importu ISDOC souborů, v rámci tisku a importu PDF sestav, které mají ISDOC soubor vložený, a v rámci cloudové výměny dokladů. Tj. všude tam, kde se s formátem ISDOC pracuje.
Při exportu lze uživatelská data do souboru ISDOC sestavit v proceduře spGetUserData4ISDOC. Jejími vstupními parametry jsou ID aktuálně exportovaného dokladu (IDHDOK) a ID aktuálně přihlášeného uživatele (IDUZIVATEL). V ESO9Start je tato procedura prázdná, v Profi řešeních si ji lze implementačně upravit. Výstupem může být libovolný dataset/tabulka. Ten se následně zaZIPuje a vloží do ISDOC souboru.
CREATE OR ALTER PROCEDURE dbo.spGetUserData4ISDOC @IDHDOK INT, @IDUZIVATEL INT
Import z ISDOCu je realizován DLL knihovnou a stored procedurou spISDOC_HDOKimport. Při importu z ISDOCu dojde k rozZIPování uživatelských dat a jejich předání importní proceduře v parametru mf_userData. Rozhraní importní procedury bylo o tento parametr rozšířeno, stejně tak rozhraní procedur spISDOC_HDOK_BEFOREINSERT a spISDOC_HDOK_AFTERINSERT. Uživatelská data vstupují do parametru ve formátu XML, z něhož lze snadno zrekonstruovat původní tabulku z exportu.
CREATE OR ALTER PROCEDURE dbo.spISDOC_HDOKimport @IDHDOK INT = NULL, @TYP_DOK VARCHAR(10), @CIS_DOK_VZOR VARCHAR(20), @IDHDOK_VZOR_N INT = NULL, @ICO VARCHAR(20), @DIC VARCHAR(20)=NULL, @JEJICH_CISDOK VARCHAR(32), @KOD_MENY VARCHAR(3), @kod_PODMINKY_PLAT VARCHAR(10), @BUSUBJBUCET_UCET VARCHAR(35), @KODBANKY VARCHAR(20), @SPEC_SYMB VARCHAR(10), @KONS_SYMB VARCHAR(4), @VAR_SYMB VARCHAR(30), @HDKUHRADEVAL MONEY, @HDZALOHAVAL MONEY, @HDMIMODAN MONEY, @HDZAKLADDAN_0 MONEY, @HDZAKLAD_5 MONEY, @HDDAN_5 MONEY = NULL, -- pokud je uvedena, použije se uvedená hodnota a nastaví se RVDAN_5=3. Jinak se nastaví RV=1 a provede se výpočet DPH dle sazby @HDZAKLAD_22 MONEY, @HDDAN_22 MONEY = NULL, -- pokud je uvedena, použije se uvedená hodnota a nastaví se RVDAN_22=3. Jinak se nastaví RV=1 a provede se výpočet DPH dle sazby @HDZAKLAD_SS2 MONEY = NULL, @HDDAN_SS2 MONEY = NULL, -- pokud je uvedena, použije se uvedená hodnota a nastaví se RVDAN_SS2=3. Jinak se nastaví RV=1 a provede se výpočet DPH dle sazby @DTZDANITPLN DATETIME, @DTODESLANO DATETIME, @DTSPLATNO DATETIME, @DTVYSTAVENO DATETIME, @FILEIMAGE VARBINARY(MAX) =NULL, @FILENAME VARCHAR(100) = NULL, @IDUZIVATEL INT, @mf_HDokBeforeInsert varchar(100) = NULL, @mf_HDokAfterInsert varchar(100) = NULL, @TEXTPOZN VARCHAR(80) = NULL, @mf_ARES smallint = 0, @mf_userData VARCHAR(MAX) = NULL --uživatelská data předávaná do procedur @mf_HDokBeforeInsert/@mf_HDokAfterInsert
CREATE OR ALTER PROCEDURE dbo.spISDOC_HDOK_BEFOREINSERT @TYP_DOK VARCHAR(10), @CIS_DOK_VZOR VARCHAR(20), @ICO VARCHAR(20) OUT, @JEJICH_CISDOK VARCHAR(32) OUT, @KOD_MENY VARCHAR(3) OUT, @KOD_PODMINKY_PLAT VARCHAR(10) OUT, @BUSUBJBUCET_UCET VARCHAR(35) OUT, @KODBANKY VARCHAR(20) OUT, @SPEC_SYMB VARCHAR(10) OUT, @KONS_SYMB VARCHAR(4) OUT, @VAR_SYMB VARCHAR(30) OUT, @HDKUHRADEVAL MONEY OUT, @HDZALOHAVAL MONEY OUT, @HDMIMODAN MONEY OUT, @HDZAKLADDAN_0 MONEY OUT, @HDZAKLAD_5 MONEY OUT, @HDDAN_5 MONEY OUT, @HDZAKLAD_22 MONEY OUT, @HDDAN_22 MONEY OUT, @HDZAKLAD_SS2 MONEY OUT, @HDDAN_SS2 MONEY OUT, @DTZDANITPLN DATETIME OUT, @DTODESLANO DATETIME OUT, @DTSPLATNO DATETIME OUT, @DTVYSTAVENO DATETIME OUT, @IDUZIVATEL INT OUT, @mf_userData VARCHAR(MAX) = NULL -- uživatelská data předávaná do procedur @mf_HDokBeforeInsert/@mf_HDokAfterInsert
CREATE OR ALTER PROCEDURE dbo.spISDOC_HDOK_AFTERINSERT @IDHDOK INT, @mf_userData VARCHAR(MAX) = NULL, -- uživatelská data v XML předávaná z ISDOCu do procedur @mf_HDokBeforeInsert/@mf_HDokAfterInsert @mf_params VARCHAR(MAX) = NULL -- uživatelská data v XML předávaná z formuláře
CREATE OR ALTER PROCEDURE dbo.spISDOC_SDOK_BEFOREINSERT @IDHDOK INT, @SLOZKA_IDENT VARCHAR(30) OUT, --KÓD ZBOŽÍ, SLUŽBY ... @CARKOVY_KOD VARCHAR(20) OUT, --ČÁROVÝ KÓD @TEXT_SLOZ VARCHAR(MAX) OUT, -- NÁZEV ZBOŽÍ,... @MNPOCETMJ DECIMAL(19,5) OUT, @MJ VARCHAR(10) OUT, @HDJCENAVAL MONEY OUT, @HDCCENAVAL MONEY OUT, @HDJCENADPH MONEY OUT, @HDCCENADPH MONEY OUT, @SAZBADPH SMALLINT OUT, @IDUZIVATEL INT OUT
CREATE OR ALTER PROCEDURE dbo.spISDOC_SDOK_AFTERINSERT @IDSDOK INT