"Uživatelské" uložené procedury v účetnictví

PříspěvekNapsal: 10.01.2007 17:40
od jan.novotny
dbo.ep_UCTO01

Po naimportování úč.dokladů z TXT souboru do importní tabulky úč. deníku je automaticky spuštěna uložená procedura dbo.ep_UCTO01 (pokud v databázi existuje). Existenci ani obsah procedury Helios nijak nekontroluje, je plně v režii uživatele. Procedura nemá žádné povinné parametry.
V proceduře lze využít toho, že jsou úč. doklady již načteny v tabulce TabDenikImp a lze tak na nich provést potřebné úpravy.
O probíhající proceduře je uživatel informován info-obrazovkou.
Po ukončení procedury je standardně zobrazen editoru pro zaúčtování úč.dokladů z imporního deníku do deníku (zobrazený přehled naimportovaných úč.dokladů je již po případné modifikaci procedurou).


dbo.ep_UCTO02

Ve chvíli, kdy je již nový záznam vygenerován do TabDenik a zdrojový záznam v TabDenikImp není ještě smazán, je volána procedura dbo.ep_UCTO02 (opět jen pokud v databázi existuje).

Parametry
@Nazvy NVARCHAR(255) - seznam názvů externích atributů (oddělený čárkami)
@IdDenik INT - ID insertovaného záznamu do TabDenik
@IdDenikImp INT - ID zdrojového záznamu v TabDenikImp

Využití procedury

1) s použitím parametru @Nazvy

Nutná konstrukce přes EXEC.
Lze plnit všechny externí atributy z jiných záznamů v TabDenikImp nebo TabDenik_EXT.
Příklad:

CREATE PROCEDURE dbo.ep_UCTO02 @Nazvy NVARCHAR(255), @IdDenik INT, @IdDenikImp INT
AS
SET NOCOUNT ON
DECLARE @IdDENCh NVARCHAR(10)
SET @IdDENCh=CAST(@IdDenik AS NVARCHAR(10))
DELETE FROM TabDenik_EXT WHERE Id=@IdDenik
EXEC(N'INSERT INTO TabDenik_EXT (Id,'+@Nazvy+N') SELECT '+@IdDENCh+N','+@Nazvy+N' FROM TabDenikImp WHERE....')

nebo

CREATE PROCEDURE dbo.ep_UCTO02 @Nazvy NVARCHAR(255), @IdDenik INT, @IdDenikImp INT
AS
SET NOCOUNT ON
DECLARE @IdDENCh NVARCHAR(10)
SET @IdDENCh=CAST(@IdDenik AS NVARCHAR(10))
DELETE FROM TabDenik_EXT WHERE Id=@IdDenik
EXEC(N'INSERT INTO TabDenik_EXT (Id,'+@Nazvy+N') SELECT '+@IdDENCh+N','+@Nazvy+N' FROM TabDenik_EXT JOIN TabDenik ON TabDenik.Id=TabDenik_EXT.Id WHERE TabDenik...')

2) bez použití parametru @Nazvy

Tady není potřeba kontrukce přes EXEC, ale je nutné samozřejmě atributy jmenovat. Parametr @Nazvy se ale musí formálně zachovat.
Příklad :
(externí atributy : _RetezecExt NVARCHAR, _DatumExt DATETIME, _CastkaExt NUMERIC, _PriznakExt BIT, _PocetExt INT)

CREATE PROCEDURE dbo.ep_UCTO02 @Nazvy NVARCHAR(255), @IdDenik INT, @IdDenikImp INT
AS
SET NOCOUNT ON
UPDATE TabDenik_EXT SET _RetezecExt='Popis', _DatumExt='20131220', _CastkaExt=1000.00, _PriznakExt=1, _PocetExt=100
WHERE TabDenik_EXT.Id=@IdDenik


dbo.ep_UCTO03

Možnost volání externí uložené procedury byla doplněna i do generování platebních příkazů. Jmenuje se ep_UCTO03, je volána pouze v případě, že existuje. Spouští se na úplný závěr generování PP (hlavičky, řádků i detailů), takže s její pomocí lze měnit hodnoty vygenerovaného PP.
Procedura má povinné parametry @X1 INT, @X2 INT.
Při volání se plní takto :
@X1 ... ID saldokontního případu
@X2 ... ID hlavičky vygenerovaného plat.příkazu
Platí pro generování tuzemských i zahraničních PP.
POZOR - proceduru ep_UCTO03 je možné využít jen při generování PP nebo generování sdružených PP systémem. Při ručním vystavení PP se neuplatní.

Příklad použití:
Zákazník má požadavek "nějak" v rámci standardního importu do úč.deníku přenášet i údaj o bankovním spojení na budoucí PP.
TXT importní struktura bude tedy rozšířena (dle konvence) o potřebné údaje bank.spojení (číslo účtu, konst.symbol, spec.symbol apod). Tyto ext.sloupce budou označeny v TXT indikátorem $ (nebudou tedy vytvářeny ext.sloupce v TabDenik_EXT).
Ve fázi 1 importu dojde k rozšíření struktury TabDenikImp a přenosu údajů bank.spojení do TabDenikImp. Použitím externí uložené procedury ep_UCTO01 bude dohledáno případně vygenerováno příslušné bankovní spojení, jehož ID bude zapsáno do dalšího ext.sloupce v TabDenikImp - tento sloupce již bude určen pro vygenerování ext.atributu v TabDenik_EXT.
Ve fázi 2 importu dojde k naplnění ext.atributu v TabDenik_EXT identifikátorem bankovního spojení.
Po zaúčtování importovaných úč.dokladů vzniknou saldokontní případy, ze kterých budou generovány PP. Při generování bude použita externí procedura ep_UCTO03, která zajistí přepsání původního bank.spojení dotaženého systémem bankovním spojením, které je přiřazeno příslušným úč.zápisům jako externí atribut.

Re: "Uživatelské" uložené procedury v účetnictví

PříspěvekNapsal: 06.05.2008 13:23
od jan.novotny
Do generování platebních příkazů ze saldokonta byla doplněna možnost volání externí uložené procedury ep_UCTO04. Umožňuje měnit dotažené bankovní spojení. Variabilní symbol se ponechá ze salda (případně z faktury) a z nového bank. spojení se dotahuje jen je-li prázdný nebo dotažený z původního bank. spojení.
Procedura má povinné parametry @X1 INT, @X2 INT OUTPUT.
Při volání se plní takto :
@X1 ... ID saldokontního případu
@X2 ... ID bankovního spojení
Platí pro generování tuzemských i zahraničních PP.
Proceduru ep_UCTO04 je možné využít jak při generování PP nebo generování sdružených PP systémem, tak při ručním vystavení PP.

Re: "Uživatelské" uložené procedury v účetnictví - F6 - účtování

PříspěvekNapsal: 24.11.2008 12:11
od jiri.dolezal
"Slepá" uloženka ep_UCTO05 se volá po ukončení procedury účtování před zobrazením naplněné #TabDenikUcto v přehledu přededitace. Je tedy možné upravovat záznamy v #TabDenikUcto ještě před jejich zobrazením.

Volá se jen při zapnutém parametru Editace před zaúčtováním v kontaci.

Volání je v obecné proceduře účtování UctujDleKontace, tedy na jednom místě v kódu.

Re: "Uživatelské" uložené procedury v účetnictví

PříspěvekNapsal: 25.06.2010 13:56
od dagmar.mayerova
Změna do verze 2.0.2010.0511 ze dne 24.6.2010 - nová procedura ep_UCTO06
Lze definovat slepou uloženou proceduru ep_UCTO03, která je automaticky volána po vygenerování tuzemského platebního příkazu a pomocí které lze dodatečně změnit např. bankovní spojení.
Problém nastává ve chvíli, kdy uživate definuje tuto uloženou proceduru a generuje i zahraniční platební příkazy. Po generování zahraničních platebních příkazů se volá také.
Může se tedy stát, že uložená procedura automaticky modifikuje již vygenerovaný tuzemský platební příkaz bez vědomí uživatele, který generoval zahraniční platební příkaz (jestliže ID vygenerovaného zahraničního platebního příkazu existuje v přehledu tuzemských platebních příkazů).

Po vygenerování zahraničního platebního příkazu se již automaticky nevolá uložená procedura ep_UCTO03, ale ep_UCTO06.
Jestliže někdo měl vytvořenou proceduru ep_UCTO03 pro modifikaci zahraničních příkazů, bude nucen změnit její název na ep_UCTO06 a původní ep_UCTO03 smazat (aby nedocházelo k modifikaci tuzemských platebních příkazů).
Problém lze v současné verzi řešit tím, že se v proceduře ep_UCTO03 použitím informací ze saldokonta zamezí modifikaci zahraničních platebních příkazů.

Re: "Uživatelské" uložené procedury v účetnictví

PříspěvekNapsal: 17.06.2013 14:25
od jiri.dolezal
dbo.ep_UCTO07
Popis:
Umožňuje nastavit číslo nově pořizovaného účetního dokladu.
Volá se v OnNovaVeta v editoru deniku.
Parametry:
@X1 ... Id obdobi
@X2 ... cislo DUD
@X3 ... puvodni cislo dokladu
@X4 ... datum pripadu
@X5 ... nove cislo dokladu, OUTPUT

dbo.ep_UCTO08
Popis:
Umožňuje modifikovat nově pořízený účetní záznam / doklad. Je volána ve chvíli, kdy se uzavírá editor účetního dokladu nebo se použije akce "Nový doklad" v editoru účetního dokladu a vznikl-li nový účetní řádek. Technicky řečeno, volá se na FormClose v editoru deníku.
Parametry:
@X1 ... ID řádku v deníku (posledního nově pořízeného)

dbo.ep_UCTO09
Popis:
Umožňuje upravit deníkové záznamy vzniklé účetní uzávěrkou v uzavíraném i otevíraném období.
Parametry:
@X1 ... Id uzavíraného období
@X2 ... Id otevíraného období