0.0 OR RP.KontrolovatRozpracPriUzav=0)~ ~ SELECT * FROM #apiKusovnik~ END~ ]]> 0) BREAK~ ~ IF (@cZam IS NOT NULL) AND (@idZam IS NULL)~ UPDATE dbo._hdc_DataZone_Tasky SET ZamestnanecID=(SELECT ID FROM dbo.TabCisZam WHERE Cislo=@cZam) WHERE ID=@id~ ~ END~ CLOSE c~ DEALLOCATE c~ ~ END~ '~ IF NOT EXISTS(SELECT 1 FROM sys.triggers WHERE [name]=N'et_hdc_DataZone_Tasky_IU')~ EXEC sp_executesql @sql~ ~ ~ ~ ~ --DECLARE @sql NVARCHAR(max)~ SET @sql=N'~ CREATE TRIGGER dbo.et_hdc_DataZone_Tasky_D ON dbo._hdc_DataZone_Tasky~ WITH EXECUTE AS CALLER~ FOR DELETE~ AS~ BEGIN~ SET NOCOUNT ON~ ~ DECLARE~ @iTemp INT,~ @id INT~ ~ ~ DECLARE c CURSOR LOCAL FAST_FORWARD FOR~ SELECT d.ID FROM deleted d~ OPEN c~ WHILE (1=1)~ BEGIN~ FETCH NEXT FROM c INTO @id~ IF (@@FETCH_STATUS<>0) BREAK~ ~ DELETE FROM dbo._hdc_DataZone_Subtasky WHERE IdTask=@id~ IF NOT EXISTS(SELECT ID FROM dbo._hdc_DataZone_Subtasky)~ TRUNCATE TABLE dbo._hdc_DataZone_Subtasky~ ELSE~ BEGIN~ SELECT @iTemp=MAX(ID) FROM dbo._hdc_DataZone_Subtasky~ DBCC CHECKIDENT(_hdc_DataZone_Subtasky, RESEED, @iTemp)~ END~ ~ END~ CLOSE c~ DEALLOCATE c~ ~ ~ IF NOT EXISTS(SELECT ID FROM dbo._hdc_DataZone_Tasky)~ TRUNCATE TABLE dbo._hdc_DataZone_Tasky~ ELSE~ BEGIN~ SELECT @iTemp=MAX(ID) FROM dbo._hdc_DataZone_Tasky~ DBCC CHECKIDENT(_hdc_DataZone_Tasky, RESEED, @iTemp)~ END~ ~ END'~ IF NOT EXISTS(SELECT 1 FROM sys.triggers WHERE [name]=N'et_hdc_DataZone_Tasky_D')~ EXEC sp_executesql @sql~ ]]> 0) BREAK~ ~ IF (@idPrPost IS NULL) AND (@bc<>N'''')~ BEGIN~ SET @idPrPost=(SELECT ID FROM dbo.TabPrPostup WHERE IDOdchylkyDo IS NULL AND BarCode=@bc)~ IF (@idPrPost IS NOT NULL)~ BEGIN~ SELECT @idVPr=IDPrikaz, @dokl=Doklad, @alt=Alt FROM dbo.TabPrPostup WHERE ID=@idPrPost~ UPDATE dbo._hdc_DataZone_Subtasky SET IdPrPostup=@idPrPost, IDPrikaz=@idVPr, Doklad=@dokl, Alt=@alt WHERE ID=@id AND IDPrPostup IS NULL~ END~ END~ ~ SET @idTask=(SELECT ID FROM dbo._hdc_DataZone_Tasky WHERE IdDataZoneTaskID=@idDZTask)~ UPDATE dbo._hdc_DataZone_Subtasky SET IDTask=@idTask WHERE ID=@id AND IDTask<>@idTask~ ~ END~ CLOSE c~ DEALLOCATE c~ ~ END~ '~ IF NOT EXISTS(SELECT 1 FROM sys.triggers WHERE [name]=N'et_hdc_DataZone_Subtasky_IU')~ EXEC sp_executesql @sql~ ]]> 0) BREAK~ ~ UPDATE dbo._hdc_DataZone_Tasky SET Blokovano=1 WHERE ID=@idTask~ ~ SET @loginName=(SELECT LoginId FROM dbo.TabCisZam WHERE Cislo=@cZam)~ IF (ISNULL(@loginName,N'')=N'')~ SET @loginName=(SELECT PrijmeniJmeno FROM dbo.TabCisZam WHERE ID=@idZam)~ IF (ISNULL(@loginName,N'')=N'')~ SET @loginName=ISNULL( (SELECT PrijmeniJmeno FROM dbo.TabCisZam WHERE Cislo=@cZam), SUSER_SNAME())~ ~ ~ -- mam zapsane subtasky ?~ IF NOT EXISTS(SELECT 1 FROM dbo._hdc_DataZone_Subtasky WHERE IDTask=@idTask)~ BEGIN~ SET @jsonStr=(SELECT Obsah FROM dbo._hdc_DataZone_Tasky WHERE ID=@idTask)~ IF (@jsonStr IS NOT NULL)~ IF (CHARINDEX(N'subtask', @jsonStr)>0) AND (ISJSON(@jsonStr)=1)~ BEGIN~ IF OBJECT_ID(N'tempdb..#TabJSONData', N'U') IS NOT NULL~ DROP TABLE #TabJSONData~ CREATE TABLE #TabJSONData (ID INT IDENTITY(1,1) NOT NULL, doc NVARCHAR(max))~ INSERT #TabJSONData (doc) SELECT @jsonStr~ ~ INSERT dbo._hdc_DataZone_Subtasky (IDTask, IdDataZoneTaskID, Pozice, DatumStart, DatumKonec, Kusy_odv, BarcodeOperace, StatusText)~ SELECT @idTask, @idDZTask, ROW_NUMBER() OVER (ORDER BY(SELECT NULL)), CONVERT(datetime2(0), startedAt), CONVERT(datetime2(0), finishedAt),~ CONVERT(NUMERIC(19,6), v.kusy_odv), code, [status] -- JSON_VALUE(d.doc, '$.worker.code') AS CisloZam~ FROM #TabJSONData d~ CROSS APPLY OPENJSON(d.doc, '$.subtask')~ WITH(code nvarchar(20), [status] NVARCHAR(30), startedAt NVARCHAR(25), finishedAt NVARCHAR(25), [values] nvarchar(max) AS JSON)~ CROSS APPLY OPENJSON([values])~ WITH (kusy_odv nvarchar(100)) as v~ ~ UPDATE st SET st.IDPrikaz=pp.IDPrikaz, st.Doklad=pp.Doklad, st.Alt=pp.Alt, st.IdPrPostup=pp.ID~ FROM dbo._hdc_DataZone_Subtasky st~ INNER JOIN dbo.TabPrPostup pp ON (pp.Barcode=st.BarcodeOperace AND pp.IDOdchylkyDo IS NULL)~ WHERE st.IDTask=@idTask~ ~ IF OBJECT_ID(N'tempdb..#TabJSONData', N'U') IS NOT NULL~ DROP TABLE #TabJSONData~ END~ END~ ~ ~ -- zapis nezpracovane subtasky~ IF EXISTS(SELECT ID FROM dbo._hdc_DataZone_Subtasky WHERE IDTask=@idTask AND IDPolKoopObj IS NULL)~ BEGIN~ IF (@radaKObj IS NULL)~ SET @radaKObj = (SELECT TOP(1) Rada FROM dbo.TabRadyKoopObj ORDER BY ID)~ INSERT @idKooperace (ID) SELECT DISTINCT(IDkooperace) FROM dbo.TabPrPostup~ WHERE BarCode IN (SELECT BarcodeOperace FROM dbo._hdc_DataZone_Subtasky WHERE IDTask=@idTask)~ AND IDOdchylkyDo IS NULL AND Typ=2 GROUP BY IDkooperace~ IF (1=(SELECT COUNT(*) FROM (SELECT DISTINCT(ID) FROM @idKooperace GROUP BY ID) x))~ BEGIN~ SET @idTypKoop=(SELECT TOP(1) ID FROM @idKooperace)~ SELECT @radaKObj=cke._RadaKoopObj FROM dbo.TabCKoop ck INNER JOIN dbo.TabRadyCKoop rck ON (rck.Rada=ck.Rada)~ INNER JOIN dbo.TabRadyCKoop_EXT cke ON (cke.ID=ck.ID) WHERE ck.ID=@idTypKoop~ ~ IF (@radaKObj IS NOT NULL)~ BEGIN~ BEGIN TRY~ SET @tranPred=@@TRANCOUNT~ IF (@tranPred=0)~ BEGIN TRAN~ SET @aktDate = CONVERT(datetime, CONVERT(int, CONVERT(float, @aktDate)))~ EXEC dbo.hp_InsertHlavickyKoopObj @IDObjednavky=@idKoopObj OUT, @Rada=@radaKObj, @TerminOdeslani=@aktDate~ IF (@idKoopObj IS NOT NULL)~ BEGIN~ UPDATE dbo.TabKoopObj SET Autor=@loginName WHERE ID=@idKoopObj~ SELECT @cisKoopObj=Objednavka FROM dbo.TabKoopObj WHERE ID=@idKoopObj~ ~ DECLARE p CURSOR LOCAL FOR~ SELECT ID, IDPrikaz, Doklad, Alt, Kusy_odv, BarcodeOperace, IDPrPostup FROM dbo._hdc_DataZone_Subtasky~ WHERE IDTask=@idTask AND IDPolKoopObj IS NULL~ OPEN p~ WHILE (1=1)~ BEGIN~ FETCH NEXT FROM p INTO @idSubtask, @idVPr, @dokl, @alt, @mnoz, @bc, @idPrPost~ IF (@@FETCH_STATUS<>0) BREAK~ ~ IF (@idPrPost IS NULL)~ SET @idPrPost=(SELECT ID FROM dbo.TabPrPostup WHERE IDOdchylkyDo IS NULL AND BarCode=@bc)~ IF NOT EXISTS(SELECT ID FROM dbo.TabPrPostup WHERE ID=@idPrPost)~ SET @idPrPost = (SELECT ID FROM dbo.TabPrPostup WHERE IDOdchylkyDo IS NULL AND BarCode=@bc)~ SELECT @idVPr=IDPrikaz, @dokl=Doklad, @alt=Alt, @idKoop=IDKooperace FROM dbo.TabPrPostup WHERE ID=@idPrPost~ IF EXISTS(SELECT pp.ID FROM dbo.TabPrPostup pp INNER JOIN dbo.TabPrikaz p ON (p.ID=pp.IDPrikaz) WHERE pp.ID=@idPrPost AND pp.predzpracovano=1 AND p.StavPrikazu=30)~ UPDATE dbo.TabPrPostup SET predzpracovano=0 WHERE ID=@idPrPost~ ~ EXEC dbo.hp_InsertPolozkyKoopObj @IDPolozky=@idPolKoopObj OUT, @IDObjednavky=@idKoopObj, @IDPrikaz=@idVPr, @Doklad=@dokl, @Alt=@alt, @Kusy=@mnoz, @IDKooperace=@idKoop~ IF (@idPolKoopObj IS NOT NULL)~ BEGIN~ UPDATE dbo._hdc_DataZone_Subtasky SET IDPolKoopObj=@idPolKoopObj WHERE ID=@idSubtask~ UPDATE dbo.TabPolKoopObj SET Autor=@loginName WHERE ID=@idPolKoopObj~ END~ ~ END~ CLOSE p~ DEALLOCATE p~ ~ SET @idOrg=(SELECT dodavatel FROM dbo.TabCKoop WHERE ID=@idKoop)~ SET @dicOrg=(SELECT DIC FROM dbo.TabCisOrg WHERE ID=@idOrg)~ UPDATE dbo.TabKoopObj SET IDOrganizace=@idOrg, DIC=@dicOrg WHERE ID=@idKoopObj~ ~ UPDATE dbo._hdc_DataZone_Tasky SET IDKoopObj=@idKoopObj, DatZpracovani=GETDATE(), Nezpracovavat=0, CisloKoopObj=@cisKoopObj, Blokovano=0~ WHERE ID=@idTask~ ~ END -- @IDObjednavky IS NOT NULL~ IF (@@TRANCOUNT>0) AND (@tranPred=0)~ COMMIT TRAN~ END TRY~ BEGIN CATCH~ IF (@@TRANCOUNT>0) AND (@tranPred=0)~ ROLLBACK TRAN~ SET @errMsg = ERROR_MESSAGE()~ ~ IF (CHARINDEX(N'2001434', @errMsg)>0) -- vyrobni operace jiz neexistuje~ UPDATE dbo._hdc_DataZone_Tasky SET DatZpracovani=GETDATE(), Nezpracovavat=1, PosledniChyba=N'Výrobní operace již neexistuje' WHERE ID=@idTask~ ELSE~ INSERT dbo._hdc_Log (Typ, LogText, intVal) SELECT 11, N'Import kooperace - chyba: ' + @errMsg, @idTask~ ~ END CATCH~ END -- @radaKObj IS NOT NULL~ ~ END -- jen jeden druh kooperace~ ELSE~ BEGIN~ UPDATE dbo._hdc_DataZone_Tasky SET PosledniChyba=N'Naskenováno víc typů kooperace', Blokovano=0 WHERE ID=@idTask~ END~ ~ END -- existuji subtasky ? ano, vytvor kooperacni objednavku~ ~ END~ CLOSE d~ DEALLOCATE d ]]>