Obecné procedury a funkce pro ESO9 START

Obarvování řádků nespárovaného dokladu

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)

Obarvování řádků v činnosti 1.2.1.2 - Automatické vystavení platebního příkazu

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)

Naplnění poznámky při tvorbě platebního příkazu

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)

Procedura volaná při tvorbě platebního nebo inkasního příkazu

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

Definice číselné řady

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)

Úprava položek ve funkci fnDZ_FormularHDOK

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)

Funkce pro text referenční věty

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)

Podmínka pro tisk QR kódu na dokladu (vydané faktuře)

Používá se v datovém zdroji (funkci) fnDZ_FormularHDOK.

CREATE OR ALTER function dbo.fnHDOK_TisknoutQRPlatbu (
  @idHdok Int
)

Funkce pro definici položky TextProSlozkuEU datového zdroje fnDZ_FormularHDOK

CREATE OR ALTER function dbo.fnFaV_TextProSlozkuEU (@idHdok Int, @Jazyk varchar(10))
returns varchar(255)

Funkce pro určení podmínky, data, střediska, účtu a obecného číselníku při samovyměření DPH, procedury umožňující ovlivnit samovyměření DPH

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

Funkce pro určení čísla mandátní smlouvy

CREATE OR ALTER function dbo.fnMandSml_CisloSmlouvy_Uziv (
  @idSubjekt     Integer  = NULL,
  @idSubjBUcet   Integer  = NULL,
  @idSubjAdr     Integer  = NULL
)
returns varchar(20)

Funkce pro změnu názvu subjektu při exportu KH DPH (PL legislativa)

CREATE OR ALTER function dbo.fnNazwaKontrahentaProDPH(
  @idHdok Int
)
returns varchar(256)

Roční uzávěrka

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)

Kontroly závazků a pohledávek

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

Funkce pro definici odkazu na formulář při fulltextovém vyhledávání

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)

Funkce pro vyhodnocení parametrů pro odeslání sestavy e-mailem

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
DokuWiki Appliance - Powered by TurnKey Linux