-- dbo.ep_V03_HDC1 CREATE PROCEDURE dbo.ep_V03_HDC1 @IDDoklad INT AS -- HD Consulting Strakonice, T. Buzin -- !! proceduru neupravujte, bude stejne pregenerovana pri startu pluginu pro pekarnu nebo Windows sluzby HDCDZApi !! -- doplnek realizace skladových výdeju, vola se na zacatku transakce v prubehu procesu realizace výdeju -- vstupni parametr @ID INT -- ID hlavicky realizovaneho dokladu; výstup neni -- Pozadovana funkcnost: napr. doplneni vazby do vyroby a napocet NV. SET NOCOUNT ON DECLARE @errMsg NVARCHAR(500), @iTemp INT DECLARE @dpz TINYINT, @rada NVARCHAR(3), @idPZ INT, @idSklad NVARCHAR(30), @idSkladPrev NVARCHAR(30), @radaPrev NVARCHAR(3), @sklMatHlavni NVARCHAR(30)=N'311', @sklPekarna NVARCHAR(30)=N'211', @sklTechnolog NVARCHAR(30), @paletList NVARCHAR(100), @sarze NVARCHAR(100) IF OBJECT_ID(N'tempdb..#TabExtKom', N'U') IS NULL CREATE TABLE #TabExtKom (Typ TINYINT, Poznamka NVARCHAR(255) ) IF OBJECT_ID(N'tempdb..#HDCTabDefiniceProV03', N'U') IS NOT NULL SELECT TOP(1) @sklMatHlavni=HlavniSkladMat, @sklPekarna=SkladVyrobaPekarna, @sklTechnolog=TechnologickySklad FROM #HDCTabDefiniceProV03 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 #HDCTabDefiniceProV03 SELECT @rada=RadaDokladu, @idSklad=IDSklad, @dpz=DruhPohybuZbo, @idSkladPrev=IdSkladPrevodu, @radaPrev=TypPrevodky FROM dbo.TabDokladyZbozi WHERE ID=@IDDoklad -- vydejka/prevodka na sklad Pekarna IF (@rada IN (N'231')) AND (@idSklad=@sklMatHlavni) AND (@idSkladPrev=@sklPekarna) AND (@radaPrev=N'281') BEGIN -- zapis VC na externi info DECLARE p CURSOR LOCAL FOR SELECT p.ID, vcs.Nazev1, vcp.Nazev FROM dbo.TabPohybyZbozi p INNER JOIN dbo.TabStavSkladu s ON (s.ID=p.IDZboSklad) INNER JOIN dbo.TabKmenZbozi k ON (k.ID=s.IDKmenZbozi) INNER JOIN dbo.TabVyrCP vcp ON (p.ID=vcp.IDPolozkaDokladu) INNER JOIN dbo.TabVyrCS vcs ON (vcs.ID=vcp.IDVyrCis) WHERE p.IDDoklad=@IDDoklad AND k.Sluzba=0 ORDER BY p.Poradi OPEN p WHILE (1=1) BEGIN FETCH NEXT FROM p INTO @idPZ, @paletList, @sarze IF (@@FETCH_STATUS<>0) BREAK 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=ISNULL(_Vyroba_Sarze, IIF(_Vyroba_Sarze IS NOT NULL, N',', N'') + @sarze) WHERE ID=@idPZ UPDATE dbo.TabPohybyZbozi_EXT SET _Vyroba_PaletList=ISNULL(_Vyroba_PaletList, IIF(_Vyroba_PaletList IS NOT NULL, N',', N'') + @paletList) WHERE ID=@idPZ END CLOSE p DEALLOCATE p -- zapis moznych puvodnich VC materialu do pomocne tabulky, u polotovaru je VC cislo paletoveho listu, to se musi nechat kvuli odpisu ze stavu VC !!! 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.TabStavSkladu s ON (s.ID=p.IDZboSklad) INNER JOIN dbo.TabKmenZbozi k ON (k.ID=s.IDKmenZbozi) INNER JOIN dbo.TabVyrCP vcp ON (vcp.IDPolozkaDokladu=p.ID) INNER JOIN dbo.TabVyrCS vcs ON (vcs.ID=vcp.IDVyrCis) WHERE p.IDDoklad=@IDDoklad -- AND k.Material=1 ORDER BY p.Poradi, vcp.ID -- odstran umisteni, delalo by problem pri vydeji UPDATE dbo.TabPohybyZbozi SET IDUmisteni=NULL WHERE IDDoklad=@IDDoklad -- smaz vyrobni cisla/sarze materialu, jejich evidenci vede ProHolding - nesmi se mazat u vyrobenych polotovaru, u tech mame cislo paletoveho listu !!! -- jen materialy ??? DELETE FROM dbo.TabVyrCP WHERE IDPolozkaDokladu IN (SELECT p.ID 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.Material=1 ) -- identity reseed tabulky pohybu VC SET @iTemp = ISNULL( (SELECT MAX(ID) FROM dbo.TabVyrCP), 0) DBCC CHECKIDENT (TabVyrCP, RESEED, @iTemp) END