-- 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