Funkce je používána například v bankovních výpise nebo pokladních dokladech – zadává se v odkazu (URLEsoForm) v činnosti pro naplnění položky HDOKSTYLE, např :
HDOKSTYLE=dbo.fnBarva_NespDokladu(QHDOK_BAV.idHdok) AS MF_ROWSTYLE
CREATE OR ALTER function dbo.fnBarva_NespDokladu( @idHdok Int ) returns VARCHAR(7)
Funkce je použita v odkazu (URLEsoForm) v činnosti pro naplnění položky HDOKSTYLE.
CREATE OR ALTER function dbo.fnBarva_PP_Splatnost2( @dtSplatno dateTime, @vlNeduveryhodnyPlatce SmallInt, @vlNeduveryhodnyUcet SmallInt ) returns VARCHAR(7)
Funkce vrací hodnotu, která se má naplnit do poznámky při tvorbě platebního příkazu.
Pokud bude vrácena hodnota NULL, přebere se text z předchůdce.
Vstupním parametrem je idHdok dokladu, ze kterého PP vzniká.
CREATE OR ALTER function dbo.fnUzivTextPP ( @idHdok Int ) returns varchar(2500)
Volá se pro každou vytvořenou položku platebního příkazu. Volání probíhá 2x – jednou před založením a jednou po založení položky platebního příkazu (viz parametr @vlAkce).
CREATE OR ALTER PROCEDURE dbo.spBaV_VytvorPP_Uziv @vlAkce Smallint, -- 1=před založením PPP, 2=po založení PPP @vl_PP_BaV_INK Smallint, -- 0=PP, 2=INKASO @IDUcetZap Int, -- id účetního zápisu @idHdok_FA Int, @idHdok_PPP INT, @vlVypocetSkonta SMALLINT OUT, -- 0=Skonto se zapisuje do faktury, 1=Skonto se nezapisuje do faktury, vytváří se IDU, -1=skonto se nepíše do FA ani se nevytváří IDU @hdKUhradeVal Money, -- zadaná částka k úhradě ve valutě (částka nesnížená o skonto, PP bude vytvořen na @hdKUhradeVal - @hdSkonto) @hdSkonto MONEY, -- částka skonta @idLogUser Int
Uživatelsky přepsatelná funkce pro výpočet skonta - volá se při tvorbě platebního příkazu.
CREATE OR ALTER function dbo.fnVypoctiSkontoHDOK_Uziv( @idHdok Int, @DatumUhrady Datetime ) returns Money
Přepsáním této funkce je možno uživatelsky přepsat tvorbu číselné řady, kterou nelze definovat pomocí standardních možností v ESO9. Pokud vrací hodnotu NULL, použijí se pro tvorbu čísla dokladu v proceduře spNextVRade standardní pravidla, jestliže je vrácena neprázdná hodnota, pak se tato použije pro číslo dokladu.
CREATE OR ALTER function dbo.fnNextVRade_Uziv ( @IDCisRada Int, -- číselná řada @IDUctObd Int = NULL, -- účetní období @idBav Int = NULL, -- vazba na bankovní výpis @idSubjekt Int = NULL, -- vazba na subjekt @idHDokP Int = NULL, -- vazba na předchudce @idHdok_Vzor Int = NULL, @idStred_MD Int = NULL, @idStred_Dal Int = NULL, @idSklad Int = NULL, @idPenUcet Int = NULL, @idMena Int = NULL ) returns varchar(30)
V definici číselné řady lze použít výraz $FNxx. V tomto případě je pak nutno definovat funkci, která pro zadané číslo xx bude vracet řetězec, kterým se nahradí výraz $FNxx.
CREATE OR ALTER function dbo.fnCisRad_NahradUziv ( @CisFN integer ) returns varchar(30)
Funkce je určena pro možnost uživatelského přepsání některých vyjmenovaných položek ve funkci fnDZ_FormularHDOK. Pokud je třeba provést modifikaci položky například na základě subjektu na dokladu, je nutno si data dohledat dle příslušného @idHdok.
Zatím je funkční pouze pro položky : DIC, TextPreferencniVeta.
CREATE OR ALTER function dbo.fnDZHdok_UpravPolozku ( @idHdok int, -- pro možnost dohledání dalších položek z tištěného dokladu (HDOKu) @Jazyk varchar(10), -- pro možnost tisku v závislosti na použitém jazyce, ve kterém se tisk provádí @NazevPolozky varchar(20), -- Název položky z výsledného datového zdroje ve funkci fnDZ_FormularHDOK @StandardniHodnota varchar(max) -- hodnota, která bude standardně tištěna ) returns varchar(max)
Pro tisk preferenční věty se používá položka TextPreferencniVeta z datového zdroje - funkce fnDZ_FormularHDOK.
Položka je naplňována hodnotou, kterou vrací tato funkce fnTxtPreferencniVeta, kterou je možno uživatelsky přepsat.
CREATE OR ALTER function dbo.fnTxtPreferencniVeta ( @idHdok Int, @idSdok Int, @mf_NeAnoPrefVeta SmallInt, @Jazyk varchar(10) ) returns varchar(8000)
Používá se v datovém zdroji (funkci) fnDZ_FormularHDOK.
CREATE OR ALTER function dbo.fnHDOK_TisknoutQRPlatbu ( @idHdok Int )
CREATE OR ALTER function dbo.fnFaV_TextProSlozkuEU (@idHdok Int, @Jazyk varchar(10)) returns varchar(255)
CREATE OR ALTER function dbo.fnUzivPodm_ProDPH_FapEU ( @idHdok Int, @idSdok Int ) returns Int CREATE OR ALTER function dbo.fnFapEU_DatumProDPH( @idHdok Int, @Vstup_Vystup SmallInt, -- 1=daň na vstupu; 2=daň na výstupu @vlTypSloz SmallInt, -- 0=Ostatní; 1=Zboží; 2=Služba; 3=Pomůcka; 4=Operace; 5=Pracoviště; 6=Program; 7=Platidlo; 8=rezervováno; 9=rezervováno; 1000-1100=doprava; @ProVykazDPH SmallInt, @vlUZDatum_Sazba SmallInt -- 0=jedná se o datum pro určení data (období) DPH, 1=jedná se o datum pro výpočet kurzu a sazby DPH -- -- pokud to není storno, tak nemá význam, ale v případě storna se pro @vlUZDatum_Sazba = 1 vrací data z předchůdce ) returns DateTime CREATE OR ALTER function dbo.fnFapEU_UrciStredisko(@idHdok Int) returns Int CREATE OR ALTER function dbo.fnFapEU_UrciUcet( @idHdok Int, @vlSazbaDPH SmallInt, @Vstup_Vystup SmallInt, @vlDuvod SmallInt, @vlTypSloz SmallInt, @vlKraceni SmallInt ) returns Int CREATE OR ALTER function dbo.fnFapEU_UrciObecCis_01( @idHdok Int, @vlSazbaDPH SmallInt, @Vstup_Vystup SmallInt, @vlDuvod SmallInt, @vlTypSloz SmallInt, @vlKraceni SmallInt ) returns Int CREATE OR ALTER procedure dbo.spHDok_FapEU_VytvorDPH_AfterExec @idHdok INT, @XmlParams XML CREATE OR ALTER procedure dbo.spHDok_FapEU_ZpracujDetailUziv @idHdok INT, @XmlParams XML
CREATE OR ALTER function dbo.fnMandSml_CisloSmlouvy_Uziv ( @idSubjekt Integer = NULL, @idSubjBUcet Integer = NULL, @idSubjAdr Integer = NULL ) returns varchar(20)
CREATE OR ALTER function dbo.fnNazwaKontrahentaProDPH( @idHdok Int ) returns varchar(256)
Umožňuje nadefinovat, na jaký účet se má provádět zaúčtování kurzovního rozdílu závazků a pohledávek.
CREATE OR ALTER function dbo.fnRocUzav_ZavPohl_idUctOsn_KR ( @idHdok_KR Int, -- ID hlavičky uzávěrkového dokladu @idUcetZap Int, -- ID účetního zápisu, pro který se provádí uzávěrka @vlZisk_Ztrata SmallInt -- +1 = pro zisk, -1 = pro ztrátu ) returns Int
Funkce umožňuje nadefinovat, které účty nemají vstupovat do roční uzávěrky kurzovních rozdílů závazků a pohledávek.
CREATE OR ALTER function dbo.fnRocUzav_ZavPohl_NebratUcty() returns @SeznamUctu Table(idUctOsn Int Primary Key)
Tato procedura je volána na začátku procedury spHDOK_TestTypSubj, která provádí testování závazků a pohledávek dle nastavených limitů v subjektu (volá se při uložení hlavičky nebo složky dokladu).
CREATE OR ALTER procedure dbo.spHDOK_TestTypSubj_Uziv @idHDok Int, -- id hlavičky dokladu (Pozor - při pořizování nové hlavičky je NULL !) @idSdok Int = NULL, -- id složky dokladu (Pozor - při pořizování nové věty je NULL !) @vlHdok_Sdok SmallInt = NULL, -- 0=provádí se při editaci hlavičky, 1=provádí se při editaci složky @idTypDok Int, -- id typu dokladu @idHDok_Vzor Int = NULL, -- id vzoru dokladu @idSubjekt Int, -- id subjektu @idTypSubj Int, @idPodminky_Plat Int, @idLogUser Int, @vlHPohledavka_Zavazek SmallInt, @hdKUhradeKc Money, -- částka k úhradě v domácí měně @vlNeprovadetObecnyTest SmallInt = NULL OUT, -- 0=test se bude provádět, 1=test se nebude provádět @vlZpusobKontroly SmallInt = NULL OUT, -- způsob kontroly : 0=bez kontroly, 1=měkká kontrola, 2=tvrdá kontrola @hdLimit Money = NULL OUT -- hodnota limitu, vůči kterému se budou závazky/pohledávky testovat
CREATE OR ALTER function dbo.fnFullTextUziv_Formular ( @idLogUser Int, @TableNameMaster varchar(60), @idTableMaster Int, @TableNameSlave varchar(60), @idTableSlave Int, @Typ_Master varchar(20) ---- TypDok, VlTyp_Sloz ) returns varchar(255)
V rámci ESO9 Start tato funkce na základě parametru %VLSENDMAIL% vyhodnocuje, zda se daná sestava má/nemá odesílat e-mailem a v případě kladného vyhodnocení vrací parametry pro e-mail z tabulky DOK_EMAIL. Pokud by někdo vyžadoval vyhodnocení parametrů dle jiného algoritmu, než v ESO9 Start, může si funkci upravit v rámci uživatelských objektů.
CREATE OR ALTER FUNCTION dbo.fnDok_EMail ( @VLSENDMAIL SMALLINT --Zda se (ne)bude vyhodnocovat 0/NULL=Ne 1=Ano ,@IDHDOK INT --ID dokladu ) RETURNS @Dok_EMail TABLE ( MF_SendMailTo VARCHAR(100) ,MF_SendMailSubject VARCHAR(255) ,MF_SendMailBody VARCHAR(max) ) AS BEGIN -- DECLARE @IDDOK_EMAIL INT ,@EMAIL VARCHAR(100) ,@EMAIL_SUBJECT VARCHAR(255) ,@EMAIL_BODY VARCHAR(max) --HDOK DECLARE @IDSUBJOSOBA INT ,@IDTYPDOK INT -- IF @VLSENDMAIL = 0 --Zda se (ne)bude vyhodnocovat 0/NULL=Ne 1=Ano BEGIN GOTO Label_OUT END -- SELECT @IDSUBJOSOBA = H.IDSUBJOSOBA ,@IDTYPDOK = H.IDTYPDOK ,@EMAIL = NULLIF(TRIM(O.EMAIL), '') FROM HDOK H WITH (nolock) LEFT JOIN SUBJOSOBA O ON O.IDSUBJOSOBA = H.IDSUBJOSOBA WHERE H.idhdok = @IDHDOK -- SELECT @IDDOK_EMAIL = DE.IDDOK_EMAIL ,@EMAIL = ISNULL(@EMAIL, NULLIF(TRIM(DE.EMAIL), '')) ,@EMAIL_SUBJECT = NULLIF(TRIM(DE.EMAIL_SUBJECT), '') ,@EMAIL_BODY = NULLIF(TRIM(DE.EMAIL_BODY), '') FROM DOK_EMAIL DE WITH (NOLOCK) WHERE DE.IDSUBJOSOBA = @IDSUBJOSOBA AND DE.IDTYPDOK = @IDTYPDOK -- IF @IDDOK_EMAIL IS NULL BEGIN SELECT @IDDOK_EMAIL = DE.IDDOK_EMAIL ,@EMAIL = ISNULL(@EMAIL, NULLIF(TRIM(DE.EMAIL), '')) ,@EMAIL_SUBJECT = NULLIF(TRIM(DE.EMAIL_SUBJECT), '') ,@EMAIL_BODY = NULLIF(TRIM(DE.EMAIL_BODY), '') FROM DOK_EMAIL DE WITH (NOLOCK) WHERE DE.IDSUBJOSOBA = @IDSUBJOSOBA AND DE.IDTYPDOK IS NULL -- IF @IDDOK_EMAIL IS NULL BEGIN SELECT @IDDOK_EMAIL = NULL ,@EMAIL = NULL ,@EMAIL_SUBJECT = NULL ,@EMAIL_BODY = NULL END END Label_OUT: -- pokud je vyplněný e-mail a je ve formátu HTML, je k němu třeba přidat počáteční a koncový tag IF (@EMAIL_BODY IS NOT NULL) AND (LTRIM(@EMAIL_BODY) LIKE '<%') BEGIN SET @EMAIL_BODY = '<html><body>' + @EMAIL_BODY + '</body></html>' END --Vystup INSERT @Dok_EMail ( MF_SendMailTo ,MF_SendMailSubject ,MF_SendMailBody ) SELECT MF_SendMailTo = @EMAIL ,MF_SendMailSubject = @EMAIL_SUBJECT ,MF_SendMailBody = @EMAIL_BODY -- RETURN END