-- dbo.ep_P01_HDCDZApi1 CREATE PROCEDURE dbo.ep_P01_HDCDZApi1 @IDDoklad INT AS -- HD Consulting Strakonice, T. Buzin -- !! proceduru neupravujte, bude stejne pregenerovana pri startu Windows sluzby HDCDZApi !! -- vola se na konci procesu realizace prijemky (po uskutecneni prijmu ale pred konecnym COMMIT TRAN) -- nastaveni skladu lze ovlivnit pres #TabDefiniceProP01 (HlavniSkladMat NVARCHAR(30), TechnologickySklad NVARCHAR(30), -- TechnologickySkladPolo NVARCHAR(30), SkladVyrobaPekarna NVARCHAR(30) ) SET NOCOUNT ON DECLARE @tranPred INT, @cnt INT, @errMsg NVARCHAR(500), @bChyba BIT, @iChyba INT DECLARE @sklHlavni NVARCHAR(30), @sklTechnolog NVARCHAR(30), @sklTechnologPolo NVARCHAR(30), @sklPekarna NVARCHAR(30), @sklPrijem NVARCHAR(30) DECLARE @sklDokl NVARCHAR(30), @radaDokl NVARCHAR(3), @cOrg INT, @idDZDst INT, @dpz TINYINT, @dzMena NVARCHAR(3), @dzDatum DATETIME, @datReal DATETIME, @vyrCis NVARCHAR(100), @nazevVyrCis NVARCHAR(100), @poslVyrCis NVARCHAR(100), @idVCK INT, @idVCS INT, @idVCP INT, @idPZ INT, @idZboSklad INT, @idKZ INT SELECT @radaDokl=RadaDokladu, @cOrg=CisloOrg, @sklDokl=IDSklad, @dpz=DruhPohybuZbo, @dzMena=Mena, @dzDatum=DatPorizeni FROM dbo.TabDokladyZbozi WHERE ID=@IDDoklad -- zapis posledni prevedene sarze IF (@radaDokl=N'281') AND (@sklDokl=@sklPekarna) // prijemka/prevodka na pekarnu BEGIN DECLARE p CURSOR LOCAL FOR SELECT p.ID, p.IDZboSklad 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, @idZboSklad IF (@@FETCH_STATUS<>0) BREAK SET @poslVyrCis = N'' DECLARE v CURSOR LOCAL FOR SELECT ID, Nazev FROM dbo.TabVyrCP WHERE IDPolozkaDokladu=@idPZ AND TRIM(ISNULL(Nazev,N''))<>N'' ORDER BY ID OPEN v WHILE (1=1) BEGIN FETCH NEXT FROM v INTO @idVCP, @vyrCis IF (@@FETCH_STATUS<>0) BREAK SET @poslVyrCis = @vyrCis END CLOSE v DEALLOCATE v IF (@poslVyrCis<>N'') BEGIN IF NOT EXISTS(SELECT 1 FROM dbo.TabStavSkladu_EXT WHERE ID=@idZboSklad) INSERT dbo.TabStavSkladu_EXT (ID) VALUES (@idZboSklad) UPDATE dbo.TabStavSkladu_EXT SET _Prevod_PosledniSarze=@poslVyrCis WHERE ID=@idZboSklad END END CLOSE p DEALLOCATE p END -- @radaDokl 281 -- kopie prevodkove prijemky ze skladu materialu na sklad Vyroba/Pekarna -- na "zrcadlovy" technologicky sklad (neni uctovany), ktery slouzi jen pro vydejky z Vyrobnich prikazu -- z tech se denne generuje sumacni na hlavnim sklade IF OBJECT_ID(N'tempdb..#TabDefiniceProP01', N'U') IS NOT NULL SELECT TOP(1) @sklHlavni=HlavniSkladMat, @sklPekarna=SkladVyrobaPekarna, @sklTechnolog=TechnologickySklad, @sklTechnologPolo=TechnologickySkladPolo FROM #TabDefiniceProP01 IF (@sklHlavni IS NULL) SELECT @sklHlavni=Cislo FROM dbo.TabStrom WHERE Nazev=N'Hlavní sklad - Materiál' AND CisloStr LIKE N'3%' IF (@sklTechnolog IS NULL) SELECT @sklTechnolog=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technolog%NEÚČ%' AND Nazev NOT LIKE N'%polotov%' AND CisloStr LIKE N'2%' IF (@sklTechnolog IS NULL) SELECT @sklTechnolog=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technologický sklad%výdej%' AND CisloStr LIKE N'2%' IF (@sklTechnologPolo IS NULL) SELECT @sklTechnologPolo=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technolog%NEÚČ%pol%' AND CisloStr LIKE N'2%' IF (@sklPekarna IS NULL) SELECT @sklPekarna=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Výroba - Pekárna' AND CisloStr LIKE N'2%' -- jen prijemka/prevodka na sklad Pekarna (211) -- vypnuto - prijemka pro odpis z prikazu se dela pred vydejkou (viz dbo.ep_Vyroba_GenVydejZeMzdy:prijemka materialu pro vydejku ) IF (1=0) AND (@dpz=0) AND (@radaDokl IN (N'281')) AND (@sklDokl=@sklPekarna) AND (@sklTechnolog IS NOT NULL) BEGIN EXEC dbo.hp_InsertHlavickyOZ @ident=@idDZDst OUT, @Sklad=@sklTechnolog, @DruhPohybu=@dpz, @RadaDokladu=@radaDokl, @Mena=@dzMena, @CisloOrg=@cOrg, @DatumPorizeni=@dzDatum IF (@idDZDst IS NOT NULL) BEGIN SELECT @datReal=DatRealizace FROM dbo.TabDokladyZbozi WHERE ID=@IDDoklad EXEC dbo.hp_generuj_navazny_doklad @IDDokladDst=@idDZDst, @IDDokladSrc=@IDDoklad, @CisloOrgCil=@cOrg, @MUCil=NULL, @MenaCil=@dzMena, @KurzCil=NULL, @JednotkaMenyCil=NULL, @KurzEuroCil=NULL, @CisloZakCil=NULL, @NOkruhCil=NULL, @StredNakladCil=NULL, @StredVynosCil=NULL, @FormaDopravyCil=NULL, @VozidloCil=NULL, @ObjednavkaCil=NULL, @PopisDodavkyCil=NULL, @NavaznyDobropisCil=NULL, @ZamestnanecCil=NULL, @DodFakCil=NULL, @Nasobek=1, @SlevaCil=NULL, @VytvaretDokladovouVazbu=0, @VytvaretPolozkovouVazbu=0, @ChybaSkladana=@errMsg OUT, @KopirovaniDokladu=1 IF EXISTS(SELECT 1 FROM dbo.TabPohybyZbozi WHERE IDDoklad=@idDZDst) EXEC dbo.hp_Realizuj_Prijem @ID=@idDZDst, @DatumRealizace=@datReal, @Uzivatel=0, @BylaChyba=@bChyba OUT, @VypnoutUpozorneniPriZajistovani=1 END END -- prijmka radaDokl 281, prijemkovy sklad Vyroba pekarna ci podobny, technologicky sklad vyplneny