Je volána procedurou hp_ZjistiCenuPolozky, která zajišťuje standardní ocenění položky dokladovou cenou.
Procedura umožňuje ovlivnit výpočet ceny, a to buď s výpočtem ceny zcela vlastním způsobem nebo s možností zasáhnout do ceny navržené systémem. To je ovlivněno neveřejnou konstantou TabHGlob.OZSlepaProcCena:
TabHGlob.OZSlepaProcCena = 0 - uživatelská procedura se nespouští
TabHGlob.OZSlepaProcCena = 1 - procedura se spouští na začátku standardního výpočtu ceny, určeno pro vlastní ocenění, v tomto případě se nespouští proces standardního ocenění HELIOS Orange, což může šetřit systémové prostředky
TabHGlob.OZSlepaProcCena = 2 - procedura se spouští na konci standardního výpočtu ceny, určeno pro ovlivnění ceny dotažené systémem podle standardních pravidel
V souvislosti s tím byla vytvořena nová zastřešující procedura HP_ZjistiCenuPolozky, která zastřešuje dvě původní procedury pro dohledání ceny HP_HodnotyProPolozkuZceniku a HP_DotahniNabidkovouCenuNew.
Parametry:
@IDDoklad INT - ID hlavičky cílového dokladu (Sklad, Fakturace, DOBJ)
@IDPolozka INT - ID položky cílového dokladu (Slad, Fakturace, DOBJ), při zakládání nové položky může být NULL
@DruhPohybu INT - Druh pohybu zboží cílového dokladu
@CisloOrg INT - Číslo organizace nebo Místo určení dle TabHGlob.DohledatCenyDle
@IDZboSklad INT - ID skladové karty
@CisloTabDObj INT - Číslo tabulky Došlých objednávek (1-v přípravě, 2-DOBJ, 3-archiv)
@CoMamDelat INT - Parametr z podřízené procedury (HP_HodnotyProPolozkuZCeniku)
0=nejprve hledat akci, poté cenu dle množství (Zejména při zakládání nové položky).
1=akci známe, hledat cenu podle množství (Zejména při aktualizaci ceny stávající položky).
2=hledat jen akci, nikoliv cenu (téměř nevyužívaný stav, pokud je třeba zjistit jen akci)
@DotahniCenu INT - 0= volá se pouze první (HP_HodnotyProPolozkuZceniku) procedura; 1= volá se první i druhá (HP_DotahniNabidkovouCenuNew) procedura
@ZdrojCeny BIT - Parametr pro obě podřízené procedury. Pokud je 1, dodá všechny možné ceny, které existují viz funkcionalita "Zdroj ceny" na položce dokladu. Pokud je 0, dodá pouze 1 cenu s nejvyšší prioritou.
@CenaPuvodni NUMERIC(19,6) -Cena z editoru položky před zahájením výpočtu. POZOR nejedná se o cenu dohledanou předchozími mechanismy cenotvorby při TabHGlob.OZSlepaProcCena = 2
@Nalezeno OUT BIT - OUT 0-procedura nestanovila cenu / 1-procedura cenu stanovila
na vstupu: byla stanovena standardní cenotvorbou
na výstupu: cena byla stanovena externím oceněním
@Cena OUT NUMERIC(19,6) - OUT Stanovená cena, při TabHGlob.OZSlepaProcCena = 2 obsahuje cenu dohledanou předchozími mechanismy
na vstupu: cena zjištěna standardní cenotvorbou
na výstupu: cena zjištěna externím oceněním
Příklad:
- Kód: Vybrat vše
/****** Object: StoredProcedure [dbo].[ep_ZjistiCenuPolozky] Script Date: 18.06.2019 18:18:30 ******/
IF EXISTS (SELECT * FROM sys.objects WHERE object_id = OBJECT_ID(N'[dbo].[ep_ZjistiCenuPolozky]') AND type in (N'P', N'PC'))
DROP PROCEDURE [dbo].[ep_ZjistiCenuPolozky]
GO
/****** Object: StoredProcedure [dbo].[ep_ZjistiCenuPolozky] Script Date: 18.06.2019 18:18:30 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
CREATE PROCEDURE [dbo].[ep_ZjistiCenuPolozky]
@IDDoklad INT
,@IDPolozka INT
,@DruhPohybu INT
,@IDZboSklad INT
,@VstupniCena INT
,@CisloTabDObj INT
,@CoMamDelat INT
,@DotahniCenu INT
,@ZdrojCeny BIT
,@Nalezeno BIT OUT
,@Cena NUMERIC(19,6) OUT
AS
SET XACT_ABORT, NOCOUNT ON;
-- =============================================
-- Author: JDO
-- Description: Slepa procedura pro dotazeni ceny pro testovani JHO
-- =============================================
SET @Nalezeno = 0;
SELECT
@Cena = ISNULL(@Cena,0.) + InventuraCena
,@Nalezeno = 1
FROM TabStavSkladu
WHERE ID = @IDZboSklad;
GO
Příklad pro TabHGlob.OZSlepaProcCena = 1
- Kód: Vybrat vše
alter PROCEDURE dbo.ep_ZjistiCenuPolozky
@IDDoklad INT,
@IDPolozka INT,
@DruhPohybu INT,
@CisloOrg INT,
@IDZboSklad INT,
@VstupniCena INT,
@CisloTabDObj INT,
@CoMamDelat INT,
@DotahniCenu INT,
@ZdrojCeny BIT,
@CenaPuvodni NUMERIC(19,6),
@Nalezeno BIT OUT,
@Cena NUMERIC(19,6) OUT
AS
IF @DotahniCenu=1
SELECT
@Cena = InventuraCena
,@Nalezeno = 1
FROM TabStavSkladu
WHERE ID = @IDZboSklad
--select ozslepaproccena from tabhglob
--update tabhglob set ozslepaproccena = 1
Příklad pro TabHGlob.OZSlepaProcCena = 2
- Kód: Vybrat vše
alter PROCEDURE dbo.ep_ZjistiCenuPolozky
@IDDoklad INT,
@IDPolozka INT,
@DruhPohybu INT,
@CisloOrg INT,
@IDZboSklad INT,
@VstupniCena INT,
@CisloTabDObj INT,
@CoMamDelat INT,
@DotahniCenu INT,
@ZdrojCeny BIT,
@CenaPuvodni NUMERIC(19,6),
@Nalezeno BIT OUT,
@Cena NUMERIC(19,6) OUT
AS
IF @Nalezeno = 1
SELECT
@Cena = @Cena + InventuraCena
FROM TabStavSkladu
WHERE ID = @IDZboSklad
--select ozslepaproccena from tabhglob
--update tabhglob set ozslepaproccena = 2