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
]]>