161 lines
5.6 KiB
Transact-SQL
161 lines
5.6 KiB
Transact-SQL
-- dbo.ep_P01_HDC1
|
|
CREATE PROCEDURE dbo.ep_P01_HDC1
|
|
@IDDoklad INT
|
|
AS
|
|
|
|
-- HD Consulting Strakonice, T. Buzin
|
|
-- !! proceduru neupravujte, bude stejne pregenerovana pri startu pluginu pro pekarnu nebo Windows sluzby HDCDZApi !!
|
|
-- vola se na konci procesu realizace prijemky (po uskutecneni prijmu ale pred konecnym COMMIT TRAN)
|
|
-- nastaveni skladu lze ovlivnit pres #HDCTabDefiniceProP01 (HlavniSkladMat NVARCHAR(30), TechnologickySklad NVARCHAR(30), SkladVyrobaPekarna NVARCHAR(30) )
|
|
|
|
-- pred finalizaci prijemky smaz vyrobni cisla (sarze hlida aplikace ProHoldingu, ale zapis si sarze do ext.info skladove karty
|
|
-- puvodni prirazeni VC k polozkam dokladu zapis do pomocne tabulice _hdc_PZ_PuvodniVC
|
|
|
|
|
|
SET NOCOUNT ON
|
|
|
|
DECLARE
|
|
@errMsg NVARCHAR(500),
|
|
@bChyba BIT,
|
|
@iTemp INT
|
|
|
|
DECLARE
|
|
@radaTechPrijem NVARCHAR(30)=N'251',
|
|
@sklTechnolog NVARCHAR(30),
|
|
@sklMatHlavni NVARCHAR(30),
|
|
@sklPekarna NVARCHAR(30)
|
|
|
|
DECLARE
|
|
@idDZDst INT,
|
|
@cOrg INT,
|
|
@dpz TINYINT,
|
|
@dpzOld TINYINT,
|
|
@datReal DATETIME,
|
|
@dzDatum DATETIME,
|
|
@dzMena NVARCHAR(3),
|
|
@dzKurz NUMERIC(19,6),
|
|
@dzKurzE NUMERIC(19,6),
|
|
@jednM INT,
|
|
@vstC TINYINT,
|
|
@radaDokl NVARCHAR(3),
|
|
@idSklad NVARCHAR(30),
|
|
@idSkladOld NVARCHAR(30),
|
|
@strChyba NVARCHAR(max)=N''
|
|
|
|
DECLARE
|
|
@idPZ INT,
|
|
@idPZOld INT,
|
|
@idPZNew INT,
|
|
@idSS INT,
|
|
@idKZ INT,
|
|
@idVCP INT,
|
|
@vyrCis NVARCHAR(100),
|
|
@poslVyrCis NVARCHAR(100),
|
|
@popisVC NVARCHAR(100), -- paletovy list
|
|
@moukaSilo SMALLINT,
|
|
@mnoz NUMERIC(19,6),
|
|
@mnozVCP NUMERIC(19,6),
|
|
@sz NVARCHAR(3),
|
|
@nazev1 NVARCHAR(100)
|
|
|
|
|
|
|
|
|
|
IF OBJECT_ID(N'tempdb..#HDCTabDefiniceProP01', N'U') IS NOT NULL
|
|
SELECT TOP(1) @sklMatHlavni=HlavniSkladMat, @sklPekarna=SkladVyrobaPekarna, @sklTechnolog=TechnologickySklad FROM #HDCTabDefiniceProP01
|
|
IF (@sklMatHlavni IS NULL)
|
|
SELECT @sklMatHlavni=Cislo FROM dbo.TabStrom WHERE Nazev=N'Hlavní sklad - Materiál'
|
|
IF (@sklTechnolog IS NULL)
|
|
SELECT @sklTechnolog=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technolog%neúè%' AND CisloStr LIKE N'2%'
|
|
IF (@sklPekarna IS NULL)
|
|
SELECT @sklPekarna=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Výroba - Pekárna'
|
|
DROP TABLE IF EXISTS #HDCTabDefiniceProP01
|
|
|
|
|
|
SELECT @dpz=DruhPohybuZbo, @radaDokl=RadaDokladu, @idSklad=IDSklad, @vstC=VstupniCena, @dzMena=Mena, @dzKurz=Kurz, @dzKurzE=KurzEuro,
|
|
@jednM=JednotkaMeny, @cOrg=CisloOrg, @dzDatum=DatPorizeni, @datReal=DatRealizace
|
|
FROM dbo.TabDokladyZbozi WHERE ID=@IDDoklad
|
|
|
|
|
|
MERGE dbo._hdc_PZ_PuvodniVC AS T
|
|
USING dbo.TabPohybyZbozi AS S ON (S.ID=T.IDPohybZbozi)
|
|
WHEN MATCHED AND T.IDDoklad IS NULL THEN UPDATE SET T.IDDoklad=S.IDDoklad;
|
|
|
|
|
|
|
|
-- na hlavnim sklade - prijemky a storna prijmu na hlavnim skladu - kopie puvodnich VC
|
|
IF (@radaDokl IN (N'251', N'259', N'261', N'269')) AND (@idSklad=@sklMatHlavni)
|
|
BEGIN
|
|
INSERT dbo._hdc_PZ_PuvodniVC (IDPohybZbozi, IDDoklad, IDZboSklad, VyrCis, IDVyrCis, Mnozstvi, Sarze, PaletovyList, IDUmisteni)
|
|
SELECT p.ID, p.IDDoklad, p.IDZboSklad, vcp.Nazev, vcp.IDVyrCis, vcp.Mnozstvi, vcp.Nazev, vcs.Nazev1, p.IDUmisteni
|
|
FROM dbo.TabPohybyZbozi p
|
|
INNER JOIN dbo.TabVyrCP vcp ON (vcp.IDPolozkaDokladu=p.ID)
|
|
INNER JOIN dbo.TabVyrCS vcs ON (vcs.ID=vcp.IDVyrCis)
|
|
WHERE p.IDDoklad=@IDDoklad
|
|
ORDER BY p.Poradi, vcp.ID
|
|
-- smaz vyrobni cisla, jejich evidenci vede ProHolding
|
|
DELETE FROM dbo.TabVyrCP WHERE IDPolozkaDokladu IN (SELECT ID FROM dbo.TabPohybyZbozi WHERE IDDoklad=@IDDoklad)
|
|
SET @iTemp = ISNULL( (SELECT MAX(ID) FROM dbo.TabVyrCP), 0)
|
|
DBCC CHECKIDENT (TabVyrCP, RESEED, @iTemp)
|
|
END
|
|
|
|
|
|
|
|
|
|
-- prevodka/prijemka na sklad Pekarna
|
|
-- zapis posledni prevedene sarze
|
|
IF (@dpz=0) AND (@radaDokl=N'281')
|
|
BEGIN
|
|
DECLARE p CURSOR LOCAL FOR
|
|
SELECT p.ID, p.IDZboSklad, s.IDKmenZbozi, p.IDOldPolozka
|
|
FROM dbo.TabPohybyZbozi p
|
|
INNER JOIN dbo.TabStavSkladu s ON (s.ID=p.IDZboSklad)
|
|
INNER JOIN dbo.TabKmenZbozi k ON (k.ID=s.IDKmenZbozi)
|
|
WHERE p.IDDoklad=@IDDoklad
|
|
AND k.Sluzba=0
|
|
ORDER BY p.Poradi
|
|
OPEN p
|
|
WHILE (1=1)
|
|
BEGIN
|
|
FETCH NEXT FROM p INTO @idPZ, @idSS, @idKZ, @idPZOld
|
|
IF (@@FETCH_STATUS<>0) BREAK
|
|
|
|
SET @vyrCis = (SELECT ISNULL(peN._Vyroba_Sarze, peO._Vyroba_Sarze)
|
|
FROM dbo.TabPohybyZbozi_EXT peN, dbo.TabPohybyZbozi_EXT peO WHERE peN.ID=@idPZ AND peO.ID=@idPZOld)
|
|
IF (@vyrCis IS NOT NULL)
|
|
BEGIN
|
|
IF NOT EXISTS(SELECT 1 FROM dbo.TabPohybyZbozi_EXT WHERE ID=@idPZ)
|
|
INSERT dbo.TabPohybyZbozi_EXT (ID) VALUES (@idPZ)
|
|
UPDATE dbo.TabPohybyZbozi_EXT SET _Vyroba_Sarze=@vyrCis WHERE ID=@idPZ
|
|
END
|
|
-- zapis posledni prevedenou sarzi
|
|
IF NOT EXISTS(SELECT 1 FROM dbo.TabStavSkladu_EXT WHERE ID=@idSS)
|
|
INSERT dbo.TabStavSkladu_EXT (ID) VALUES (@idSS)
|
|
UPDATE dbo.TabStavSkladu_EXT SET _Prevod_PosledniSarze=@vyrCis WHERE ID=@idSS
|
|
|
|
|
|
SET @popisVC = (SELECT ISNULL(peN._Vyroba_PaletList, peO._Vyroba_PaletList)
|
|
FROM dbo.TabPohybyZbozi_EXT peN, dbo.TabPohybyZbozi_EXT peO WHERE peN.ID=@idPZ AND peO.ID=@idPZOld)
|
|
IF (@popisVC IS NOT NULL)
|
|
BEGIN
|
|
IF NOT EXISTS(SELECT 1 FROM dbo.TabPohybyZbozi_EXT WHERE ID=@idPZ)
|
|
INSERT dbo.TabPohybyZbozi_EXT (ID) VALUES (@idPZ)
|
|
UPDATE dbo.TabPohybyZbozi_EXT SET _Vyroba_PaletList=@popisVC WHERE ID=@idPZ
|
|
END
|
|
|
|
|
|
SET @moukaSilo = (SELECT ISNULL(peN._Mouka_Silo, peO._Mouka_Silo)
|
|
FROM dbo.TabPohybyZbozi_EXT peN, dbo.TabPohybyZbozi_EXT peO WHERE peN.ID=@idPZ AND peO.ID=@idPZOld)
|
|
IF (@moukaSilo IS NOT NULL)
|
|
BEGIN
|
|
IF NOT EXISTS(SELECT 1 FROM dbo.TabPohybyZbozi_EXT WHERE ID=@idPZ)
|
|
INSERT dbo.TabPohybyZbozi_EXT (ID) VALUES (@idPZ)
|
|
UPDATE dbo.TabPohybyZbozi_EXT SET _Mouka_Silo=@moukaSilo WHERE ID=@idPZ
|
|
END
|
|
|
|
END
|
|
CLOSE p
|
|
DEALLOCATE p
|
|
END -- @radaDokl 281
|
|
|