-- dbo.ep_Vyroba_GenDenniVydejka CREATE PROCEDURE dbo.ep_Vyroba_GenDenniVydejka @proDen DATETIME=NULL AS DECLARE @errMsg NVARCHAR(500), @cnt INT DECLARE @sklPekarna NVARCHAR(30), @sklTechnolog NVARCHAR(30), @sklTechnologHV NVARCHAR(30), @radaDoklVydej NVARCHAR(3), @radaStorno NVARCHAR(3), @idDZVydej INT, @idPZOld INT, @idZboSkladOld INT, @idZboSkladNew INT, @idKmen INT, @idPZNew INT, @idVCK INT, @idVCS INT, @paletList NVARCHAR(50), @sarze NVARCHAR(50), @mnoz NUMERIC(19,6) DECLARE @dzMena NVARCHAR(3), @dzKurz NUMERIC(19,6), @dzKurzE NUMERIC(19,6), @vstC TINYINT, @jednM INT IF (@sklPekarna IS NULL) SELECT TOP(1) @sklPekarna=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Výroba - Pekárna' AND CisloStr LIKE N'2%' IF (@sklTechnolog IS NULL) SELECT @sklTechnolog=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technolog%NE%' AND Nazev NOT LIKE N'%polotov%' AND Nazev NOT LIKE N'%HV%' AND CisloStr LIKE N'2%' IF (@sklTechnolog IS NULL) SET @sklTechnolog = N'261' IF (@sklTechnologHV IS NULL) SELECT @sklTechnologHV=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technolog%NE%' AND Nazev LIKE N'%HV%' AND CisloStr LIKE N'2%' IF (@sklTechnologHV IS NULL) SET @sklTechnologHV = N'262' SET @radaDoklVydej=N'223' SET @radaStorno = N'229' IF (@proDen IS NULL) SET @proDen=GETDATE() SET @proDen = dbo.hf_TruncDate(@proDen) SET @proDen = DATEADD(second, -1, @proDen) -- ma vubec smysl to delat ? IF NOT EXISTS (SELECT 1 FROM dbo.TabPohybyZbozi p WITH(NOLOCK) JOIN dbo.TabDokladyZbozi d WITH(NOLOCK) ON (d.ID=p.IDDoklad) WHERE d.IDSklad IN (@sklTechnolog) AND d.RadaDokladu IN (@radaDoklVydej, @radaStorno) AND d.Realizovano=1 AND dbo.hf_TruncDate(d.DatPorizeni)=dbo.hf_TruncDate(@proDen) AND d.CisloOrg=0 ) RETURN SET @cnt=ISNULL( (SELECT COUNT(ID) FROM dbo.TabDokladyZbozi WHERE IDSklad=@sklPekarna AND RadaDokladu=@radaDoklVydej AND DruhPohybuZbo=4 AND dbo.hf_TruncDate(DatPorizeni)=dbo.hf_TruncDate(@proDen) AND CisloOrg=0 AND Realizovano=0), 0) IF (@cnt=0) EXEC dbo.hp_InsertHlavickyOZ @ident=@idDZVydej OUT, @Sklad=@sklPekarna, @DruhPohybu=4, @RadaDokladu=@radaDoklVydej, @CisloOrg=0, @DatumPorizeni=@proDen ELSE IF (@cnt=1) SET @idDZVydej=(SELECT ID FROM dbo.TabDokladyZbozi WHERE IDSklad=@sklPekarna AND RadaDokladu=@radaDoklVydej AND DruhPohybuZbo=4 AND dbo.hf_TruncDate(DatPorizeni)=dbo.hf_TruncDate(@proDen) AND CisloOrg=0 AND Realizovano=0) ELSE SET @idDZVydej=(SELECT TOP(1) ID FROM dbo.TabDokladyZbozi WHERE IDSklad=@sklPekarna AND RadaDokladu=@radaDoklVydej AND DruhPohybuZbo=4 AND dbo.hf_TruncDate(DatPorizeni)=dbo.hf_TruncDate(@proDen) AND CisloOrg=0 AND Realizovano=0 ORDER BY DatPorizeni DESC) IF (@idDZVydej IS NOT NULL) BEGIN SELECT @dzMena=Mena, @dzKurz=Kurz, @dzKurzE=KurzEuro, @jednM=JednotkaMeny, @vstC=VstupniCena FROM dbo.TabDokladyZbozi WHERE ID=@idDZVydej -- begin: polozky materialu, tj. ze skladu 261 DECLARE p CURSOR LOCAL FOR SELECT -1.0*SUM(p.MnozstviDruhove), p.IDZboSklad FROM dbo.TabPohybyZbozi p WITH(NOLOCK) JOIN dbo.TabDokladyZbozi d WITH(NOLOCK) ON (d.ID=p.IDDoklad) JOIN dbo.TabStavSkladu s WITH(NOLOCK) ON (s.ID=p.IDZboSklad) JOIN dbo.TabKmenZbozi k WITH(NOLOCK) ON (k.ID=s.IDKmenZbozi) WHERE d.IDSklad=@sklTechnolog AND d.RadaDokladu IN (@radaDoklVydej, @radaStorno) AND d.DruhPohybuZbo IN (3,4) AND d.Realizovano=1 AND p.Mnozstvi>0 AND k.Sluzba=0 AND dbo.hf_TruncDate(d.DatPorizeni)=dbo.hf_TruncDate(@proDen) GROUP BY p.IDZboSklad, k.Nazev1 ORDER BY k.Nazev1 OPEN p WHILE (1=1) BEGIN FETCH NEXT FROM p INTO @mnoz, @idZboSkladOld IF (@@FETCH_STATUS<>0) BREAK SELECT @idKmen=IDKmenZbozi FROM dbo.TabStavSkladu WHERE ID=@idZboSkladOld SELECT @idZboSkladNew=ID FROM dbo.TabStavSkladu WHERE IDKmenZbozi=@idKmen AND IDSklad=@sklPekarna SET @idPZNew=(SELECT ID FROM dbo.TabPohybyZbozi WHERE IDDoklad=@idDZVydej AND IDZboSklad=@idZboSkladNew) IF (@idPZNew IS NULL) EXEC dbo.hp_InsertPolozkyOZ @ident=@idPZNew OUT, @IDDoklad=@idDZVydej, @DruhPohybu=4, @CisloOrg=0, @IDZboSklad=@idZboSkladNew, @Mena=@dzMena, @Kurz=@dzKurz, @KurzEuro=@dzKurzE, @JednotkaMeny=@jednM, @SazbaSD=NULL, @SazbaDPH=NULL, @ZakazanoDPH=0, @VstupniCena=@vstC, @PovolitDuplicitu=0, @PovolitBlokovane=1, @Mnozstvi=@mnoz IF (@idPZNew IS NOT NULL) INSERT dbo._TabVyroba_VydejMatSarze (IDPohybZbozi, IDPohybZboziNew, PaletovyList, Sarze, IDKmenZbozi, Mnozstvi) SELECT p.ID, @idPZNew, ISNULL(pe._Vyroba_PaletList, N''), ISNULL(_Vyroba_Sarze, N''), s.IDKmenZbozi, -1.0*p.Mnozstvi FROM dbo.TabPohybyZbozi p WITH(NOLOCK) LEFT JOIN dbo.TabPohybyZbozi_EXT pe WITH(NOLOCK) ON (pe.ID=p.ID) JOIN dbo.TabDokladyZbozi d WITH(NOLOCK) ON (d.ID=p.IDDoklad) JOIN dbo.TabStavSkladu s WITH(NOLOCK) ON (s.ID=p.IDZboSklad) JOIN dbo.TabKmenZbozi k WITH(NOLOCK) ON (k.ID=s.IDKmenZbozi) WHERE d.IDSklad=@sklTechnolog AND d.RadaDokladu IN (@radaDoklVydej, @radaStorno) AND d.DruhPohybuZbo IN (3,4) AND d.Realizovano=1 AND p.Mnozstvi>0 AND k.Sluzba=0 AND p.IDZboSklad=@idZboSkladOld AND dbo.hf_TruncDate(d.DatPorizeni)=dbo.hf_TruncDate(@proDen) ORDER BY k.Nazev1 END CLOSE p DEALLOCATE p -- end: polozky materialu, tj. ze skladu 261 END