-- dbo.ep_Vyroba_Doklady_PomocPrijemka CREATE PROCEDURE dbo.ep_Vyroba_Doklady_PomocPrijemka @idVydej INT=NULL AS -- !! proceduru neupravujte, bude stejne pregenerovana pri startu pluginu PluginHDCRTN !! SET NOCOUNT ON DECLARE @tranPred INT, @cnt INT, @errMsg NVARCHAR(500), @bChyba BIT, @iChyba INT, @debugXml XML, @gKV XML, @kv XML, @odv XML, @aktDatum DATETIME=GETDATE(), @logTyp TINYINT, @logText NVARCHAR(500), @logInt INT, @logStr NVARCHAR(255), @log4Mail BIT=0 DECLARE @jsonString NVARCHAR(MAX), @jsonString2 NVARCHAR(MAX), @typDokum NVARCHAR(50), @subtypDokum NVARCHAR(50), @akce NVARCHAR(50) DECLARE @cOrg INT, @sklTechnicky NVARCHAR(30), @idKZ INT, @idSS INT DECLARE @retVal INT, @RespekExistDoklady BIT=0, @NekontrolMnozOdvedFinal BIT, @idUziv INT DECLARE @idDZPomocPrij INT, @radaPrijem NVARCHAR(3)='292', @menaPrij NVARCHAR(3), @kurzPrij NUMERIC(19,6), @kurzPrijE NUMERIC(19,6), @vstCPrij TINYINT, @jednMPrij INT, @idPZPomocPrij INT, @idSSPomocPrij INT, @mnozSklad NUMERIC(19,6), @mnozVydej NUMERIC(19,6), @mnozPrij NUMERIC(19,6) IF OBJECT_ID(N'dbo.TabUserCfg', N'U') IS NOT NULL SET @idUziv = (SELECT ID FROM dbo.TabUserCfg WHERE LoginName=SUSER_SNAME()) SET @idUziv = ISNULL(@idUziv, 0) IF (@sklTechnicky IS NULL) SET @sklTechnicky=(SELECT TOP(1) Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technolog%neúè%' AND CisloStr LIKE N'2%') IF (@sklTechnicky IS NULL) SET @sklTechnicky=N'261' -- begin: pomocna prijemka nedostatecneho materialu (jen materialu !!!) SET @idDZPomocPrij=NULL DECLARE pomPrij CURSOR LOCAL FOR SELECT p.IDZboSklad, p.Mnozstvi 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=@idVydej -- doklad vydejky -- AND k.Material=1 AND k.Sluzba=0 OPEN pomPrij WHILE (1=1) BEGIN FETCH NEXT FROM pomPrij INTO @idSS, @mnozVydej IF (@@FETCH_STATUS<>0) BREAK SELECT @idKZ=IDKmenZbozi FROM dbo.TabStavSkladu WHERE ID=@idSS SET @idSSPomocPrij=(SELECT ID FROM dbo.TabStavSkladu WHERE IDKmenZbozi=@idKZ AND IDSklad=@sklTechnicky) IF (@idSSPomocPrij IS NULL) EXEC dbo.hp_InsertStavSkladu @IDKmen=@idKZ, @IDSklad=@sklTechnicky, @IDZboSklad=@idSSPomocPrij OUT -- spocitej jestli mam skladem mnozstvi na realizaci vydejky -- SET @mnozSklad = ISNULL( (SELECT Mnozstvi+MnozstviKPrijmu-MnozstviKVydeji FROM dbo.TabStavSkladu WHERE ID=@idSSPomocPrij), 0) SET @mnozSklad = ISNULL( (SELECT Mnozstvi FROM dbo.TabStavSkladu WHERE ID=@idSSPomocPrij), 0) IF (@mnozVydej>@mnozSklad) BEGIN SET @mnozPrij = @mnozVydej - @mnozSklad IF (@idDZPomocPrij IS NULL) -- uz existuje doklad pomocne prijemky na sklade 261 (technologicky) ? BEGIN EXEC dbo.hp_InsertHlavickyOZ @ident=@idDZPomocPrij OUT, @Sklad=@sklTechnicky, @DruhPohybu=0, @RadaDokladu=@radaPrijem, @CisloOrg=0 SELECT @menaPrij=Mena, @kurzPrij=Kurz, @kurzPrijE=KurzEuro, @jednMPrij=JednotkaMeny, @vstCPrij=VstupniCena FROM dbo.TabDokladyZbozi WHERE ID=@idDZPomocPrij END IF (@idDZPomocPrij IS NOT NULL) BEGIN EXEC dbo.hp_InsertPolozkyOZ @Ident=@idPZPomocPrij OUT, @IDDoklad=@idDZPomocPrij, @DruhPohybu=0, @CisloOrg=0, @IDZboSklad=@idSSPomocPrij, @Mena=@menaPrij, @Kurz=@kurzPrij, @KurzEuro=@kurzPrijE, @JednotkaMeny=@jednMPrij, @SazbaSD=NULL, @SazbaDPH=NULL, @ZakazanoDPH=NULL, @VstupniCena=@vstCPrij, @Mnozstvi=@mnozPrij, @PovolitDuplicitu=1 END END END CLOSE pomPrij DEALLOCATE pomPrij IF (@idDZPomocPrij IS NOT NULL) -- pokud mam pomocnou prijemku, zkus ji realizovat nez budes realizovat vydejku BEGIN BEGIN TRY EXEC dbo.hp_Realizuj_Prijem @ID=@idDZPomocPrij, @DatumRealizace=NULL, @Uzivatel=@idUziv, @BylaChyba=@bChyba OUT, @VypnoutUpozorneniPriZajistovani=1 END TRY BEGIN CATCH SET @errMsg = ERROR_MESSAGE() END CATCH END -- end: pomocna prijemka nedostatecneho materialu