==== Přenos uživatelských dat v rámci formátu ISDOC ====
Podrobný popis práce s formátem ISDOC najdete v dokumentu {{ :techdoc:isdoc.pdf | 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.\\
=== Procedura spGetUserData4ISDOC ===
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
\\
=== Procedura spISDOC_HDOKimport ===
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
\\
=== Procedura volané před/po založení hlavičky a složky dokladu ===
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