1081 lines
48 KiB
Transact-SQL
1081 lines
48 KiB
Transact-SQL
-- dbo.ep_HDCDZApi_ZpracujPrijataData
|
||
CREATE PROCEDURE dbo.ep_HDCDZApi_ZpracujPrijataData
|
||
@idJson INT=NULL
|
||
AS
|
||
|
||
SET NOCOUNT ON
|
||
-- ! proceduru neupravujte, bude stejne pregenerovana pri startu Windows sluzby HDCDZApi !
|
||
|
||
|
||
|
||
DECLARE
|
||
@errMsg NVARCHAR(500)=N'',
|
||
@errProc NVARCHAR(100),
|
||
@tranPred INT,
|
||
@iChyba INT,
|
||
@bChyba BIT,
|
||
@iTemp INT,
|
||
@debugXML XML,
|
||
@idUziv INT
|
||
|
||
DECLARE
|
||
@operJson NVARCHAR(max),
|
||
@idDatazoneOper INT,
|
||
@prikJson NVARCHAR(max),
|
||
@materialJson NVARCHAR(max),
|
||
@objekt NVARCHAR(50),
|
||
@akce NVARCHAR(50),
|
||
@trida NVARCHAR(50),
|
||
@statusOp NVARCHAR(50),
|
||
@typOperJson NVARCHAR(50),
|
||
@jsonString NVARCHAR(max),
|
||
@cisZam INT,
|
||
@idZam INT,
|
||
@idVPr INT,
|
||
@radaVPr NVARCHAR(10),
|
||
@radaDZVydej NVARCHAR(3),
|
||
@dpzVydej TINYINT,
|
||
@idVCPrik INT,
|
||
@vc NVARCHAR(100),
|
||
@pocetVC INT,
|
||
@dokl INT,
|
||
@alt NCHAR(1),
|
||
@idPrP INT,
|
||
@idPrPOdv INT,
|
||
@doklOdv INT,
|
||
@doklNew INT,
|
||
@doklAutomat INT,
|
||
@altAutomat NCHAR(1),
|
||
@jeOdvadeci BIT=0,
|
||
@datStart DATETIME,
|
||
@datKonec DATETIME,
|
||
@skCasSek INT,
|
||
@mnoz NUMERIC(19,6),
|
||
@idPrednaOp INT,
|
||
@idPrednaOpOdv INT,
|
||
@operPrednaOdv NVARCHAR(4),
|
||
@cisloOdvOper NVARCHAR(4),
|
||
@operPrednaPrac INT,
|
||
@typOper TINYINT,
|
||
@idPrac INT,
|
||
@idPracOld INT,
|
||
@idPracAutomat INT,
|
||
@idStroj INT,
|
||
@nazevOp NVARCHAR(100),
|
||
@operPredna NVARCHAR(4),
|
||
@odvadeciPredna BIT=0,
|
||
@prvniOperace BIT=0, -- priznak prvni operace (neodvadeci)
|
||
@prvniOperaceVPrInt INT,
|
||
@cisOper INT,
|
||
@cisOperMax INT,
|
||
@operMax NVARCHAR(4),
|
||
@nazevOpMax NVARCHAR(100),
|
||
@idKoop INT,
|
||
@idEvidROp INT,
|
||
@idEvidROpPol INT,
|
||
@cntEvidROpPol INT,
|
||
@idMzdy INT,
|
||
@pocetMezd INT=0,
|
||
@idMezdStr NVARCHAR(max),
|
||
@idPrednaOpAutomat INT,
|
||
@operPrednaOpAutomat NVARCHAR(4),
|
||
@casSekOperPrednaAutomat INT,
|
||
@casSekVypalovani INT,
|
||
@idMzdyAutomat INT,
|
||
@datKonecOp DATETIME,
|
||
@ksZive NUMERIC(19,6),
|
||
@ksEvid NUMERIC(19,6),
|
||
@pocetEvidOp INT,
|
||
@mamVypaleno BIT=0,
|
||
@pocetVypalovani INT=0
|
||
|
||
DECLARE
|
||
@idDZ INT,
|
||
@idDZ2 INT,
|
||
@sz NVARCHAR(3),
|
||
@rc NVARCHAR(30),
|
||
@szJeMat BIT=0,
|
||
@idKZ INT,
|
||
@idPrKVazby INT,
|
||
@idDilec INT,
|
||
@idVCS INT,
|
||
@mnozstviPomer_A NUMERIC(19,6),
|
||
@mnozstviPomer_B NUMERIC(19,6),
|
||
@idGenVydejPrednaPol INT,
|
||
@sklProVydej NVARCHAR(30),
|
||
@sklProVydejRP NVARCHAR(30),
|
||
@sklSurovyDil NVARCHAR(30),
|
||
@sklSurovyJeIMaterial BIT=0 -- priznak ze sklad pro vydej suroveho dilu (SK 100) je i pro vydej materialu (ext.info na dilci TabKmenZbozi_EXT._SkladProVydejMat)
|
||
|
||
DECLARE @prikOperProEvid TABLE (IDPrikaz INT NOT NULL, DokladOp INT, AltOp NCHAR(1) )
|
||
DECLARE @evidOperR TABLE (ID INT NOT NULL, IDEvidRozpracOper INT, IDPrikaz INT, Doklad INT, Alt NCHAR(1), JeOdvadeci BIT NOT NULL DEFAULT 0, Smazat BIT NOT NULL DEFAULT 0)
|
||
DECLARE @evidMzdy TABLE (ID INT NOT NULL)
|
||
DECLARE @evidMzdyVypalovani TABLE (ID INT NOT NULL)
|
||
|
||
DROP TABLE IF EXISTS #TabJSONData
|
||
CREATE TABLE #TabJSONData (ID INT IDENTITY(1,1) NOT NULL, doc NVARCHAR(max) )
|
||
|
||
|
||
DROP TABLE IF EXISTS #HDCTabPrKVazbyGen_IDMzdyPredna
|
||
CREATE TABLE #HDCTabPrKVazbyGen_IDMzdyPredna (IDPrikaz int, Doklad int, IDMzdy int)
|
||
|
||
|
||
DROP TABLE IF EXISTS #HDCTabPrKVazbyGenVCPredna
|
||
CREATE TABLE #HDCTabPrKVazbyGenVCPredna (
|
||
ID INT IDENTITY NOT NULL,
|
||
IDPolozky INT NOT NULL,
|
||
VyrCislo NVARCHAR(100) NOT NULL,
|
||
Mnozstvi NUMERIC(19,6) NOT NULL,
|
||
Sklad NVARCHAR(30) NULL,
|
||
IDKmenZbozi INT NULL,
|
||
IDVyrCP INT NULL,
|
||
PRIMARY KEY(ID)
|
||
)
|
||
|
||
|
||
|
||
DROP TABLE IF EXISTS #HDCTabPrKVazbyGenPredna
|
||
CREATE TABLE #HDCTabPrKVazbyGenPredna (
|
||
ID INT IDENTITY NOT NULL,
|
||
Generuj BIT NOT NULL DEFAULT 1,
|
||
PoKorekciDat BIT NOT NULL DEFAULT 0,
|
||
IDPrKV INT NOT NULL,
|
||
Doklad INT NOT NULL,
|
||
IDPrikaz INT NOT NULL,
|
||
Prednastaveno BIT NOT NULL DEFAULT 1,
|
||
Sklad NVARCHAR(30) NULL,
|
||
VyrStredisko NVARCHAR(30) NULL,
|
||
IDPracoviste INT NULL,
|
||
mnoz_zad NUMERIC(19,6) NOT NULL DEFAULT 0,
|
||
Mnoz_nepotrebne NUMERIC(19,6) NOT NULL DEFAULT 0,
|
||
Mnoz_skut_realizovane NUMERIC(19,6) NOT NULL DEFAULT 0,
|
||
Cena_real NUMERIC(19,6) NOT NULL DEFAULT 0,
|
||
Mnoz_odv NUMERIC(19,6) NOT NULL DEFAULT 0,
|
||
Cena_odv NUMERIC(19,6) NOT NULL DEFAULT 0,
|
||
MnozstviMax NUMERIC(19,6) NULL,
|
||
PuvodniMnozstviPoz NUMERIC(19,6) NULL,
|
||
MnozstviPoz NUMERIC(19,6) NOT NULL,
|
||
PomMnozPoz NUMERIC(19,6) NOT NULL DEFAULT 0,
|
||
IDPohZbo INT NULL,
|
||
PoznamkaNaDoklad NTEXT NULL,
|
||
priorita INT NOT NULL DEFAULT 0,
|
||
vyssi INT NOT NULL,
|
||
nizsi INT NOT NULL,
|
||
DavkaTPV NUMERIC(19,6) NOT NULL DEFAULT 1,
|
||
pozice NVARCHAR(100) NULL DEFAULT N'',
|
||
Operace NCHAR(4) NULL,
|
||
FixniMnozstvi NUMERIC(19,6) NOT NULL DEFAULT 0,
|
||
mnozstvi NUMERIC(19,6) NOT NULL DEFAULT 1,
|
||
ProcZtrat NUMERIC(5,2) NOT NULL DEFAULT 0,
|
||
mnozstviSeZtratou NUMERIC(19,6) NOT NULL DEFAULT 0,
|
||
Prirez NUMERIC(19,6) NOT NULL DEFAULT 1,
|
||
Poznamka NTEXT NULL,
|
||
pom_pomer_A NUMERIC(19,6) NULL,
|
||
pom_pomer_B NUMERIC(19,6) NULL,
|
||
Dodavatel INT NULL,
|
||
mnoz_pozadovane AS (CONVERT(numeric(19,6),(CASE WHEN [mnoz_nepotrebne]>[mnoz_zad] THEN 0.0 ELSE [mnoz_zad] - [mnoz_nepotrebne] END))),
|
||
PRIMARY KEY (ID)
|
||
)
|
||
|
||
-- cisteni seedu
|
||
SET @iTemp = (SELECT MAX(ID) FROM dbo.TabPrikazMzdyAZmetky)
|
||
DBCC CHECKIDENT (TabPrikazMzdyAZmetky, RESEED, @iTemp)
|
||
SET @iTemp = (SELECT MAX(ID) FROM dbo.TabDokladyZbozi)
|
||
DBCC CHECKIDENT (TabDokladyZbozi, RESEED, @iTemp)
|
||
SET @iTemp = (SELECT MAX(ID) FROM dbo.TabPohybyZbozi)
|
||
DBCC CHECKIDENT (TabPohybyZbozi, RESEED, @iTemp)
|
||
|
||
|
||
|
||
|
||
|
||
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)
|
||
|
||
SET @operPrednaOdv = N''
|
||
SET @idPrednaOpOdv = (SELECT TOP(1) ID FROM dbo.TabPredna_EXT WHERE _OdvadeciOperace=1)
|
||
IF (@idPrednaOpOdv IS NOT NULL)
|
||
SET @operPrednaOdv = (SELECT _CIsloOperace FROM dbo.TabPredna_EXT WHERE ID=@idPrednaOpOdv)
|
||
|
||
|
||
|
||
|
||
|
||
IF (@idJson IS NOT NULL)
|
||
DECLARE j CURSOR LOCAL FOR
|
||
SELECT ID, JsonData, Objekt, Akce FROM dbo._hdc_ph_PrijataJsonData WITH(NOLOCK) WHERE ID=@idJson
|
||
ELSE
|
||
DECLARE j CURSOR LOCAL FOR
|
||
SELECT ID, JsonData, Objekt, Akce
|
||
FROM dbo._hdc_ph_PrijataJsonData WITH(NOLOCK)
|
||
WHERE Blokovano=0
|
||
AND DatZpracovani IS NULL
|
||
AND ISNULL(JSONData,N'')<>N''
|
||
ORDER BY DatPorizeni
|
||
OPEN j
|
||
WHILE (1=1)
|
||
BEGIN
|
||
FETCH NEXT FROM j INTO @idJson, @jsonString, @objekt, @akce
|
||
IF (@@FETCH_STATUS<>0) BREAK
|
||
|
||
IF (ISJSON(@jsonString)=0)
|
||
BEGIN
|
||
UPDATE dbo._hdc_ph_PrijataJsonData SET DatZpracovani=GETDATE(), PosledniChyba=N'Neplatna JSON data' WHERE ID=@idJson
|
||
END
|
||
|
||
SET @objekt = TRIM(ISNULL(@objekt, N''))
|
||
SET @akce = TRIM(ISNULL(@akce, N''))
|
||
|
||
BEGIN TRY
|
||
SET @tranPred=@@TRANCOUNT
|
||
IF (@tranPred=0)
|
||
BEGIN TRAN
|
||
|
||
|
||
DELETE FROM #TabJSONData
|
||
INSERT #TabJSONData (doc) VALUES (@jsonString)
|
||
IF (@objekt=N'')
|
||
SELECT TOP(1) @objekt = JSON_VALUE(doc, '$.object') FROM #TabJSONData
|
||
IF (@akce=N'')
|
||
SELECT TOP(1) @akce = JSON_VALUE(doc, '$.action') FROM #TabJSONData
|
||
|
||
IF (@objekt=N'operace')
|
||
BEGIN
|
||
SELECT TOP(1) @cisZam = JSON_VALUE(doc, '$.operace.worker.code') FROM #TabJSONData
|
||
SET @idZam = (SELECT ID FROM dbo.TabCisZam WHERE Cislo=@cisZam)
|
||
END
|
||
|
||
UPDATE dbo._hdc_ph_PrijataJsonData SET PosledniChyba=NULL, CisloZam=@cisZam, Blokovano=1 WHERE ID=@idJson
|
||
|
||
|
||
IF (@objekt=N'operace') AND (@idZam IS NOT NULL)
|
||
BEGIN
|
||
IF (@akce=N'start')
|
||
BEGIN
|
||
SET @idDatazoneOper = NULL
|
||
SET @idEvidROp = NULL
|
||
SET @errMsg = N''
|
||
SET @operPredna = N''
|
||
SET @odvadeciPredna = 0
|
||
SET @nazevOp = N''
|
||
SET @operMax = N''
|
||
|
||
SELECT @idVPr = JSON_VALUE(d2.prikaz, '$.id'), @trida = JSON_VALUE(d2.prikaz, '$.class'),
|
||
@idPrednaOp = JSON_VALUE(d3.operace, '$.id'), @datStart = JSON_VALUE(d3.operace, '$.startAt'),
|
||
@statusOp = JSON_VALUE(d3.operace, '$.status'), @typOperJson=JSON_VALUE(d3.operace, '$.typ'),
|
||
@prikJson = d4.prikazy, @idDatazoneOper = JSON_VALUE(d.doc, '$.operace.datazoneId')
|
||
FROM #TabJSONData d
|
||
CROSS APPLY OPENJSON(d.doc, N'$')
|
||
WITH ([prikaz] NVARCHAR(max) AS JSON) AS d2
|
||
CROSS APPLY OPENJSON(d.doc, N'$')
|
||
WITH ([operace] NVARCHAR(max) AS JSON) AS d3
|
||
CROSS APPLY OPENJSON(d3.operace, N'$')
|
||
WITH ([prikazy] NVARCHAR(max) AS JSON) AS d4
|
||
|
||
IF (@idVPr IS NOT NULL)
|
||
UPDATE dbo._hdc_ph_PrijataJsonData SET IDPrikaz=@idVPr WHERE ID=@idJson
|
||
IF (@idDatazoneOper IS NOT NULL)
|
||
UPDATE dbo._hdc_ph_PrijataJsonData SET IdPHIdent=@idDatazoneOper WHERE ID=@idJson
|
||
|
||
DELETE FROM @prikOperProEvid
|
||
SET @idPrP = NULL
|
||
|
||
IF (@idPrednaOp IS NOT NULL)
|
||
BEGIN
|
||
SET @operPredna = CONVERT(nvarchar, @idPrednaOp)
|
||
SET @idPrednaOp = (SELECT TOP(1) ID FROM dbo.TabPredna_EXT WHERE _CIsloOperace=@operPredna)
|
||
END
|
||
IF (@idPrednaOp IS NOT NULL)
|
||
BEGIN
|
||
SELECT @typOper=Typ, @nazevOp=nazev, @idPrac=IDpracoviste, @idStroj=IDStroje, @idKoop=IDkooperace
|
||
FROM dbo.TabPredna WHERE ID=@idPrednaOp
|
||
IF (COL_LENGTH(N'dbo.TabPredna_EXT', N'_CisloOperace') IS NOT NULL)
|
||
SET @operPredna = (SELECT _CisloOperace FROM dbo.TabPredna_EXT WHERE ID=@idPrednaOp)
|
||
IF (COL_LENGTH(N'dbo.TabPredna_EXT', N'_OdvadeciOperace') IS NOT NULL)
|
||
SET @odvadeciPredna = (SELECT _OdvadeciOperace FROM dbo.TabPredna_EXT WHERE ID=@idPrednaOp)
|
||
END
|
||
SET @operPredna = ISNULL(@operPredna,N'')
|
||
IF (@operPredna=N'')
|
||
BEGIN
|
||
UPDATE dbo._hdc_ph_PrijataJsonData SET PosledniChyba=N'CHYBA: p<>ednastaven<65> ID ' + CONVERT(nvarchar, @idPrednaOp) + N' nem<65> zadan<61> <20><>slo operace.' WHERE ID=@idJson
|
||
CONTINUE
|
||
END
|
||
|
||
|
||
IF (@typOperJson IN (N'prikaz', N'prednastavena')) AND (@idVPr IS NOT NULL)
|
||
INSERT @prikOperProEvid (IDPrikaz) SELECT @idVPr
|
||
|
||
IF (@typOperJson=N'hromadny') AND (@idVPr IS NULL)
|
||
BEGIN
|
||
DELETE FROM #TabJSONData
|
||
INSERT #TabJSONData (doc) SELECT @prikJson
|
||
SET @debugXML = (SELECT * FROM #TabJSONData FOR XML AUTO)
|
||
DECLARE hop CURSOR LOCAL FOR
|
||
SELECT d1.id
|
||
FROM #TabJSONData d
|
||
CROSS APPLY OPENJSON(d.doc, N'$')
|
||
WITH (id INT) AS d1
|
||
OPEN hop
|
||
WHILE (1=1)
|
||
BEGIN
|
||
FETCH NEXT FROM hop INTO @idVPr
|
||
IF (@@FETCH_STATUS<>0) BREAK
|
||
INSERT @prikOperProEvid (IDPrikaz) SELECT @idVPr
|
||
END
|
||
CLOSE hop
|
||
DEALLOCATE hop
|
||
END -- hromadny
|
||
|
||
|
||
-- sklad pro vydej si zjisti z rady prikazu nebo ext.info na dilci
|
||
SET @sklProVydej = NULL
|
||
|
||
DECLARE p CURSOR LOCAL FOR
|
||
SELECT IDPrikaz FROM @prikOperProEvid
|
||
OPEN p
|
||
WHILE (1=1)
|
||
BEGIN
|
||
FETCH NEXT FROM p INTO @idVPr
|
||
IF (@@FETCH_STATUS<>0) BREAK
|
||
|
||
SELECT @idDilec=p.IDTabKmen, @sklProVydejRP=rp.VydejMatPol_SkladProGenHlavDZ
|
||
FROM dbo.TabPrikaz p WITH(NOLOCK) JOIN dbo.TabRadyPrikazu rp WITH(NOLOCK) ON (rp.Rada=p.Rada) WHERE p.ID=@idVPr
|
||
|
||
-- SET @operPredna=dbo.hf_ZarovnejOperaciTechPos(@operPredna)
|
||
/*
|
||
SET @idPrP = (SELECT TOP(1) ID FROM dbo.TabPrPostup WHERE IDPrikaz=@idVPr AND IDOdchylkyDo IS NULL AND typ=@typOper AND nazev=@nazevOp
|
||
AND ISNULL(pracoviste,0)=ISNULL(@idPrac,0) AND ISNULL(IDkooperace,0)=ISNULL(@idKoop,0) AND ISNULL(IDStroje,0)=ISNULL(@idStroj,0))
|
||
*/
|
||
SET @idPrP = (SELECT TOP(1) ID FROM dbo.TabPrPostup WHERE Prednastaveno=1 AND IDPrikaz=@idVPr AND IDOdchylkyDo IS NULL AND typ=@typOper AND operace=@operPredna)
|
||
|
||
-- existuje odvadeci operace v Prednastaveni pro operace a v prikazu ? pokud neni v prikazu, pridej ji do prikazu
|
||
SET @doklOdv = NULL
|
||
SET @idPrPOdv = (SELECT ID FROM dbo.TabPrPostup WHERE IDPrikaz=@idVPr AND IDOdchylkyDo IS NULL AND Prednastaveno=1 AND Operace=@operPrednaOdv AND Odvadeci=1)
|
||
|
||
-- pokud prednastavena Odvadeci jeste neni v prikazu, pridej ji tam
|
||
IF (@idPrPOdv IS NULL) AND (@idPrednaOpOdv IS NOT NULL)
|
||
BEGIN
|
||
EXEC @idPrPOdv = dbo.hp_NewPozadavek_TabPrPostup @IDPrikaz=@idVPr, @IDPrednastaveni=@idPrednaOpOdv, @Operace=@operPrednaOdv
|
||
IF (@idPrPOdv IS NOT NULL)
|
||
BEGIN
|
||
-- korekce cisla dokladu odvadeci operace, posun na konec seznamu operaci
|
||
SET @doklOdv=9990
|
||
UPDATE dbo.TabPrPostup SET Odvadeci=0 WHERE ID<>@idPrPOdv AND IDPrikaz=@idVPr AND IDOdchylkyDo IS NULL
|
||
UPDATE dbo.TabPrPostup SET Doklad=@doklOdv, Odvadeci=1 WHERE ID=@idPrPOdv
|
||
END
|
||
END
|
||
IF (@doklOdv IS NULL) AND (@idPrPOdv IS NOT NULL)
|
||
SELECT @doklOdv=Doklad FROM dbo.TabPrPostup WHERE ID=@idPrPOdv
|
||
|
||
|
||
-- prednastavena operace v prikazu jeste neni, pridej ji
|
||
IF (@idPrP IS NULL)
|
||
BEGIN
|
||
EXEC @idPrP = dbo.hp_NewPozadavek_TabPrPostup @IDPrikaz=@idVPr, @IDPrednastaveni=@idPrednaOp, @Operace=@operPredna,
|
||
@VyraditZKontrolyPosloupOper=1
|
||
IF (@idPrP IS NOT NULL)
|
||
BEGIN
|
||
-- korekce cisla dokladu, pred odvadeci opeaci
|
||
SELECT @dokl=ISNULL(MAX(Doklad),0)+1 FROM dbo.TabPrPostup WHERE IDPrikaz=@idVPr AND Doklad<9990
|
||
UPDATE dbo.TabPrPostup SET Doklad=@dokl, Odvadeci=0 WHERE ID=@idPrP
|
||
END
|
||
END
|
||
|
||
SET @idPrednaOpAutomat = NULL
|
||
SET @operPrednaOpAutomat = N''
|
||
|
||
IF (@idPrP IS NOT NULL)
|
||
BEGIN
|
||
SELECT @dokl=Doklad, @alt=Alt FROM dbo.TabPrPostup WHERE ID=@idPrP
|
||
UPDATE dbo.TabPrPostup SET VyraditZKontrolyPosloupOper=1 WHERE ID=@idPrP AND Odvadeci=0
|
||
|
||
-- korekce cisla dokladu aby bylo pred odvadeci operaci
|
||
IF (@doklOdv IS NOT NULL)
|
||
IF (@dokl>@doklOdv)
|
||
BEGIN
|
||
SET @doklNew = 1 + ISNULL( (SELECT MAX(Doklad) FROM dbo.TabPrPostup
|
||
WHERE IDPrikaz=@idVPr AND IDOdchylkyDo IS NULL AND Doklad<@doklOdv AND ID<>@idPrP), 0)
|
||
IF (@doklNew IS NOT NULL)
|
||
BEGIN
|
||
UPDATE dbo.TabPrPostup SET Doklad=@doklNew WHERE ID=@idPrP
|
||
SET @dokl = @doklNew
|
||
END
|
||
END
|
||
|
||
IF (@idEvidROp IS NULL)
|
||
EXEC @idEvidROp = dbo.ep_Vyroba_InsertEvidRozpracOper @IDZamestnance=@idZam, @IDPracoviste=@idPrac, @IDStroje=@idStroj, @CasZahajeni=@datStart, @errMsg = @errMsg OUT
|
||
|
||
IF (@idEvidROp IS NOT NULL)
|
||
BEGIN
|
||
IF NOT EXISTS(SELECT 1 FROM dbo.TabEvidRozpracOper_EXT WHERE ID=@idEvidROp)
|
||
INSERT dbo.TabEvidRozpracOper_EXT (ID) VALUES (@idEvidROp)
|
||
IF (@idDatazoneOper IS NOT NULL)
|
||
UPDATE dbo.TabEvidRozpracOper_EXT SET _PHIdent=@idDatazoneOper WHERE ID=@idEvidROp
|
||
|
||
SET @idVCPrik = NULL
|
||
IF 1=ISNULL( (SELECT COUNT(ID) FROM dbo.TabVyrCisPrikaz WHERE IDPrikaz=@idVPr), 0)
|
||
SET @idVCPrik = (SELECT TOP(1) ID FROM dbo.TabVyrCisPrikaz WHERE IDPrikaz=@idVPr)
|
||
EXEC @idEvidROpPol = dbo.ep_Vyroba_InsertEvidRozpracOperPol @IDEvidRozpOper=@idEvidROp, @IdPrikaz=@idVPr, @doklPrPost=@dokl,
|
||
@altPrPost=@alt, @IdVyrCis=@idVCPrik, @errMsg = @errMsg OUT
|
||
END -- idEvidROp IS NOT NULL
|
||
END -- idPrP IS NOT NULL
|
||
|
||
-- pokud mam naslednou automatickou operaci, zkontrolu a pripadne ji pridej na prikaz
|
||
IF (COL_LENGTH(N'dbo.TabPredna_EXT', N'_IDNasledujiciOperaceAutomat') IS NOT NULL)
|
||
SET @idPrednaOpAutomat = (SELECT _IDNasledujiciOperaceAutomat FROM dbo.TabPredna_EXT WHERE ID=@idPrednaOp)
|
||
IF (COL_LENGTH(N'dbo.TabPredna_EXT', N'_CisloOperace') IS NOT NULL) AND (@idPrednaOpAutomat IS NOT NULL)
|
||
SELECT @operPrednaOpAutomat = _CisloOperace FROM dbo.TabPredna_EXT WHERE ID=@idPrednaOpAutomat
|
||
SET @operPrednaOpAutomat = ISNULL(@operPrednaOpAutomat, N'')
|
||
IF (@operPrednaOpAutomat<>N'')
|
||
BEGIN
|
||
SET @idPrP = (SELECT ID FROM dbo.TabPrPostup WHERE IDPrikaz=@idVPr AND IDOdchylkyDo IS NULL AND Operace=@operPrednaOpAutomat)
|
||
IF (@idPrP IS NULL)
|
||
EXEC @idPrP = dbo.hp_NewPozadavek_TabPrPostup @IDPrikaz=@idVPr, @IDPrednastaveni=@idPrednaOpAutomat, @Operace=@operPrednaOpAutomat,
|
||
@VyraditZKontrolyPosloupOper=1
|
||
IF (@idPrP IS NOT NULL)
|
||
BEGIN
|
||
-- korekce cisla dokladu
|
||
SELECT @dokl=Doklad FROM dbo.TabPrPostup WHERE ID=@idPrP
|
||
IF (@dokl>@doklOdv)
|
||
BEGIN
|
||
SET @doklNew = 1 + ISNULL( (SELECT MAX(Doklad) FROM dbo.TabPrPostup
|
||
WHERE IDPrikaz=@idVPr AND IDOdchylkyDo IS NULL AND Doklad<@doklOdv AND ID<>@idPrP), 0)
|
||
IF (@doklNew IS NOT NULL)
|
||
BEGIN
|
||
UPDATE dbo.TabPrPostup SET Doklad=@doklNew WHERE ID=@idPrP AND Operace=@operPrednaOpAutomat
|
||
SET @dokl = @doklNew
|
||
END
|
||
END -- @dokl>@doklOdv
|
||
END -- @idPrP IS NOT NULL
|
||
END -- @operPrednaOpAutomat<>N''
|
||
END
|
||
CLOSE p
|
||
DEALLOCATE p
|
||
|
||
IF (@errMsg<>N'')
|
||
UPDATE dbo._hdc_ph_PrijataJsonData SET PosledniChyba=N'CHYBA: ' + @errMsg WHERE ID=@idJson
|
||
UPDATE dbo._hdc_ph_PrijataJsonData SET DatZpracovani=GETDATE(), IDEvidRozpOp=@idEvidROp WHERE ID=@idJson
|
||
END -- akce Start
|
||
|
||
|
||
|
||
|
||
|
||
IF (@akce=N'stop')
|
||
BEGIN
|
||
SET @idDatazoneOper = NULL
|
||
SET @idEvidROp = NULL
|
||
SET @errMsg = N''
|
||
SET @operPredna = N''
|
||
SET @odvadeciPredna = 0
|
||
SET @operPrednaOpAutomat = N''
|
||
SET @idPrednaOpAutomat = NULL
|
||
SET @nazevOp = N''
|
||
SET @operMax = N''
|
||
DELETE FROM @prikOperProEvid
|
||
DELETE FROM @evidOperR
|
||
DELETE FROM @evidMzdy
|
||
|
||
SELECT @idVPr = JSON_VALUE(d2.prikaz, '$.id'), @trida = JSON_VALUE(d2.prikaz, '$.class'),
|
||
@idPrednaOp = JSON_VALUE(d3.operace, '$.id'), @datStart = JSON_VALUE(d3.operace, '$.startAt'),
|
||
@datKonec = JSON_VALUE(d3.operace, '$.stopAt'), @statusOp = JSON_VALUE(d3.operace, '$.status'),
|
||
@typOperJson=JSON_VALUE(d3.operace, '$.typ'),
|
||
@prikJson = d4.prikazy, @materialJson=d4.material, @idDatazoneOper = JSON_VALUE(d.doc, '$.operace.datazoneId')
|
||
FROM #TabJSONData d
|
||
CROSS APPLY OPENJSON(d.doc, N'$')
|
||
WITH ([prikaz] NVARCHAR(max) AS JSON) AS d2
|
||
CROSS APPLY OPENJSON(d.doc, N'$')
|
||
WITH ([operace] NVARCHAR(max) AS JSON) AS d3
|
||
CROSS APPLY OPENJSON(d3.operace, N'$')
|
||
WITH ([prikazy] NVARCHAR(max) AS JSON, [material] NVARCHAR(max) AS JSON) AS d4
|
||
|
||
SET @materialJson = ISNULL(@materialJson, N'')
|
||
IF (CHARINDEX('skupina', @materialJson)>0)
|
||
UPDATE dbo._hdc_ph_PrijataJsonData SET MamMaterial=1 WHERE ID=@idJson
|
||
|
||
IF (@idVPr IS NOT NULL)
|
||
UPDATE dbo._hdc_ph_PrijataJsonData SET IDPrikaz=@idVPr WHERE ID=@idJson
|
||
IF (@idDatazoneOper IS NOT NULL)
|
||
UPDATE dbo._hdc_ph_PrijataJsonData SET IdPHIdent=@idDatazoneOper WHERE ID=@idJson
|
||
|
||
SET @idPrP = NULL
|
||
SET @idPrac = NULL
|
||
|
||
IF (@idPrednaOp IS NOT NULL)
|
||
BEGIN
|
||
SET @operPredna = CONVERT(nvarchar, @idPrednaOp)
|
||
SET @idPrednaOp = (SELECT TOP(1) ID FROM dbo.TabPredna_EXT WHERE _CIsloOperace=@operPredna)
|
||
END
|
||
IF (@idPrednaOp IS NOT NULL)
|
||
BEGIN
|
||
SELECT @typOper=Typ, @nazevOp=nazev, @idPrac=IDpracoviste, @idStroj=IDStroje, @idKoop=IDkooperace
|
||
FROM dbo.TabPredna WHERE ID=@idPrednaOp
|
||
IF (COL_LENGTH(N'dbo.TabPredna_EXT', N'_CisloOperace') IS NOT NULL)
|
||
SET @operPredna = (SELECT _CisloOperace FROM dbo.TabPredna_EXT WHERE ID=@idPrednaOp)
|
||
IF (COL_LENGTH(N'dbo.TabPredna_EXT', N'_OdvadeciOperace') IS NOT NULL)
|
||
SET @odvadeciPredna = (SELECT _OdvadeciOperace FROM dbo.TabPredna_EXT WHERE ID=@idPrednaOp)
|
||
END
|
||
SET @operPredna = ISNULL(@operPredna,N'')
|
||
IF (@operPredna=N'')
|
||
BEGIN
|
||
UPDATE dbo._hdc_ph_PrijataJsonData SET PosledniChyba=N'CHYBA: p<>ednastaven<65> ID ' + CONVERT(nvarchar, @idPrednaOp) + N' nem<65> zadan<61> <20><>slo operace.' WHERE ID=@idJson
|
||
CONTINUE
|
||
END
|
||
|
||
SET @idPrednaOpAutomat = NULL
|
||
SET @operPrednaOpAutomat = N''
|
||
IF (COL_LENGTH(N'dbo.TabPredna_EXT', N'_IDNasledujiciOperaceAutomat') IS NOT NULL)
|
||
SET @idPrednaOpAutomat = (SELECT _IDNasledujiciOperaceAutomat FROM dbo.TabPredna_EXT WHERE ID=@idPrednaOp)
|
||
IF (COL_LENGTH(N'dbo.TabPredna_EXT', N'_CisloOperace') IS NOT NULL) AND (@idPrednaOpAutomat IS NOT NULL)
|
||
SELECT @operPrednaOpAutomat = _CisloOperace FROM dbo.TabPredna_EXT WHERE ID=@idPrednaOpAutomat
|
||
SET @operPrednaOpAutomat = ISNULL(@operPrednaOpAutomat, N'')
|
||
SET @casSekOperPrednaAutomat = ISNULL( (SELECT TAC_J_S FROM dbo.TabPredna WHERE ID=@idPrednaOpAutomat), 0)
|
||
|
||
SET @casSekVypalovani = 0
|
||
IF (@operPrednaOpAutomat=N'9260')
|
||
SET @casSekVypalovani = @casSekOperPrednaAutomat
|
||
|
||
|
||
IF (@idPrac IS NULL)
|
||
BEGIN
|
||
UPDATE dbo._hdc_ph_PrijataJsonData SET PosledniChyba=N'Z operace nelze identifikovat pracoviste, neslo by identifikovat EvidRozpracOper' WHERE ID=@idJson
|
||
CONTINUE
|
||
END
|
||
|
||
|
||
IF (@typOperJson IN (N'prikaz', N'prednastavena')) AND (@idVPr IS NOT NULL)
|
||
INSERT @prikOperProEvid (IDPrikaz) SELECT @idVPr
|
||
|
||
IF (@typOperJson=N'hromadny') AND (@idVPr IS NULL)
|
||
BEGIN
|
||
DELETE FROM #TabJSONData
|
||
INSERT #TabJSONData (doc) SELECT @prikJson
|
||
SET @debugXML = (SELECT * FROM #TabJSONData FOR XML AUTO)
|
||
DECLARE hop CURSOR LOCAL FOR
|
||
SELECT d1.id
|
||
FROM #TabJSONData d
|
||
CROSS APPLY OPENJSON(d.doc, N'$')
|
||
WITH (id INT) AS d1
|
||
OPEN hop
|
||
WHILE (1=1)
|
||
BEGIN
|
||
FETCH NEXT FROM hop INTO @idVPr
|
||
IF (@@FETCH_STATUS<>0) BREAK
|
||
INSERT @prikOperProEvid (IDPrikaz) SELECT @idVPr
|
||
END
|
||
CLOSE hop
|
||
DEALLOCATE hop
|
||
END -- hromadny
|
||
|
||
|
||
DECLARE p CURSOR LOCAL FOR
|
||
SELECT IDPrikaz FROM @prikOperProEvid
|
||
OPEN p
|
||
WHILE (1=1)
|
||
BEGIN
|
||
FETCH NEXT FROM p INTO @idVPr
|
||
IF (@@FETCH_STATUS<>0) BREAK
|
||
|
||
SET @idEvidROpPol = (SELECT TOP(1) r.ID FROM dbo.TabEvidRozpracOperR r INNER JOIN dbo.TabEvidRozpracOper h ON (h.ID=r.IDEvidRozpracOper)
|
||
LEFT JOIN dbo.TabEvidRozpracOper_EXT he ON (he.ID=h.ID)
|
||
INNER JOIN dbo.TabPrPostup pp ON (pp.IDPrikaz=r.IDPrikaz AND pp.Doklad=r.DokladPrPostup AND pp.Alt=r.AltPrPostup)
|
||
INNER JOIN dbo.TabPrikaz p ON (p.ID=r.IDPrikaz)
|
||
WHERE pp.IDOdchylkyDo IS NULL AND h.IDPracoviste=@idPrac AND r.IDPrikaz=@idVPr AND p.StavPrikazu IN (30)
|
||
AND pp.Operace=@operPredna AND pp.Prednastaveno=1 AND h.IDZamestnance=@idZam
|
||
AND ISNULL(he._PHIdent,0)=ISNULL(@idDatazoneOper,0)
|
||
AND h.CasUkonceni IS NULL)
|
||
IF (@idEvidROpPol IS NOT NULL)
|
||
INSERT @evidOperR (ID, IDEvidRozpracOper, IDPrikaz, Doklad, Alt)
|
||
SELECT ID, IDEvidRozpracOper, @idVPr, DokladPrPostup, AltPrPostup FROM dbo.TabEvidRozpracOperR WHERE ID=@idEvidROpPol
|
||
END
|
||
CLOSE p
|
||
DEALLOCATE p
|
||
|
||
IF EXISTS (SELECT 1 FROM @evidOperR)
|
||
BEGIN
|
||
IF (@datKonec<=@datStart) OR (@datKonec IS NULL)
|
||
SET @datKonec = DATEADD(s, 5, @datStart)
|
||
SET @skCasSek = DATEDIFF(s, @datStart, @datKonec)
|
||
|
||
SET @cntEvidROpPol = ISNULL( (SELECT COUNT(ID) FROM TabEvidRozpracOperR
|
||
WHERE IDEvidRozpracOper=(SELECT TOP(1) IDEvidRozpracOper FROM @evidOperR)), 0)
|
||
SET @pocetEvidOp = ISNULL( (SELECT COUNT(*) FROM @evidOperR), 0)
|
||
|
||
-- pokud mam stejny pocet rozpracovanych operaci vuci prikazum v json, zkontroluj jestli nejaka neni odvadeci
|
||
IF (@cntEvidROpPol=@pocetEvidOp)
|
||
BEGIN
|
||
DECLARE e CURSOR LOCAL FOR
|
||
SELECT ID FROM @evidOperR
|
||
OPEN e
|
||
WHILE (1=1)
|
||
BEGIN
|
||
FETCH NEXT FROM e INTO @idEvidROpPol
|
||
IF (@@FETCH_STATUS<>0) BREAK
|
||
|
||
SELECT @idVPr=r.IDPrikaz, @dokl=r.DokladPrPostup, @alt=r.AltPrPostup, @idVCPrik=r.IDVyrCis, @idPracOld=h.IDPracoviste
|
||
FROM dbo.TabEvidRozpracOperR r INNER JOIN dbo.TabEvidRozpracOper h ON (h.ID=r.IDEvidRozpracOper)
|
||
WHERE r.ID=@idEvidROpPol
|
||
|
||
SELECT @ksZive=kusy_zive FROM dbo.TabPrikaz WHERE ID=@idVPr
|
||
SET @ksEvid = ISNULL( (SELECT SUM(kusy_odv+kusy_zmet_opr+kusy_zmet_neopr) FROM dbo.TabPrikazMzdyAZmetky
|
||
WHERE IDPrikaz=@idVPr AND DokladPrPostup=@dokl AND AltPrPostup=@alt
|
||
AND ISNULL(IDVyrCis,0)=ISNULL(@idVCPrik,0)
|
||
), 0)
|
||
SET @jeOdvadeci=0
|
||
IF EXISTS (SELECT 1 FROM dbo.TabPrPostup WHERE IDPrikaz=@idVPr AND Doklad=@dokl AND Alt=@alt AND IDOdchylkyDo IS NULL
|
||
AND Prednastaveno=1 AND Odvadeci=1)
|
||
SET @jeOdvadeci=1
|
||
UPDATE @evidOperR SET JeOdvadeci=@jeOdvadeci WHERE ID=@idEvidROpPol
|
||
|
||
IF (@jeOdvadeci=1) AND (@ksEvid>=@ksZive)
|
||
BEGIN
|
||
DELETE FROM dbo.TabEvidRozpracOperR WHERE ID=@idEvidROpPol
|
||
UPDATE @evidOperR SET Smazat=1 WHERE ID=@idEvidROpPol
|
||
END
|
||
END
|
||
CLOSE e
|
||
DEALLOCATE e
|
||
DELETE FROM @evidOperR WHERE Smazat=1 OR IDEvidRozpracOper IS NULL
|
||
END -- mam v json stejny pocet prikazu jako v EvidROp
|
||
|
||
-- mam jen jednu EvidRozpracOper hlavicku ?
|
||
IF (1=ISNULL( (SELECT COUNT(*) FROM (SELECT DISTINCT(IDEvidRozpracOper) FROM @evidOperR GROUP BY IDEvidRozpracOper) x), 0))
|
||
BEGIN
|
||
SELECT TOP(1) @idEvidROp=IDEvidRozpracOper FROM @evidOperR
|
||
UPDATE dbo.TabEvidRozpracOperR
|
||
SET Mnoz_odv = IIF(@jeOdvadeci=1, 1, 0)
|
||
-- ,Sk_Cas = CASE Sk_Cas_T WHEN 0 THEN @skCasSek WHEN 1 THEN (@skCasSek/60.0) WHEN 2 THEN (@skCasSek/3600.0) END,
|
||
-- Sk_Cas_Obsluhy = CASE Sk_Cas_Obsluhy_T WHEN 0 THEN @skCasSek WHEN 1 THEN (@skCasSek/60.0) WHEN 2 THEN (@skCasSek/3600.0) END
|
||
WHERE IDEvidRozpracOper=@idEvidROp
|
||
UPDATE dbo.TabEvidRozpracOper SET CasUkonceni=@datKonec, CelkovyCas_T=0, CelkovyCas=@skCasSek WHERE ID=@idEvidROp
|
||
EXEC hp_EvidRozpracOper_AktualizaceCasuOper @IDEvidRozpracOper=@idEvidROp, @CelkovyCas_S=@skCasSek, @KVO=1
|
||
|
||
-- evidence vsech mezd
|
||
DELETE FROM @evidMzdy
|
||
DELETE FROM @evidMzdyVypalovani
|
||
DECLARE e CURSOR LOCAL FOR
|
||
SELECT ID, IDPrikaz, Doklad, Alt, JeOdvadeci FROM @evidOperR
|
||
OPEN e
|
||
WHILE (1=1)
|
||
BEGIN
|
||
FETCH NEXT FROM e INTO @idEvidROpPol, @idVPr, @dokl, @alt, @jeOdvadeci
|
||
IF (@@FETCH_STATUS<>0) BREAK
|
||
|
||
-- vypni kontrolu posloupnosti pro operaci
|
||
UPDATE dbo.TabPrPostup SET VyraditZKontrolyPosloupOper=1 WHERE IDPrikaz=@idVPr AND Doklad=@dokl AND Alt=@alt AND IDOdchylkyDo IS NULL
|
||
|
||
EXEC @idMzdy = dbo.hp_EvidenceOperace @IDEvidRozpracOperR=@idEvidROpPol, @Stav=0
|
||
IF (@idMzdy IS NOT NULL)
|
||
BEGIN
|
||
INSERT @evidMzdy (ID) VALUES (@idMzdy)
|
||
IF (@idPracOld IS NOT NULL)
|
||
EXEC dbo.hp_ZmenaStavuMezdAZmetku @ID=@idMzdy, @Stav=1, @ZapisZmenu=0
|
||
|
||
IF (@idVPr IS NULL)
|
||
SELECT @idVPr=IDPrikaz FROM dbo.TabPrikazMzdyAZmetky WHERE ID=@idMzdy
|
||
|
||
UPDATE dbo.TabPrikazMzdyAZmetky SET Datum = dbo.hf_TruncDate(@datKonec) WHERE ID=@idMzdy
|
||
SELECT @datKonecOp=DatumUkonceniOp FROM dbo.TabPrikazMzdyAZmetky WHERE ID=@idMzdy
|
||
-- zaeviduj i automatickou operaci
|
||
IF (@operPrednaOpAutomat<>N'')
|
||
BEGIN
|
||
SET @datStart = DATEADD(second, 1, @datKonecOp)
|
||
SET @datKonec = DATEADD(second, @casSekOperPrednaAutomat, @datStart)
|
||
SELECT @doklAutomat=Doklad, @altAutomat=Alt, @idPracAutomat=pracoviste FROM dbo.TabPrPostup
|
||
WHERE IDPrikaz=@idVPr AND IDOdchylkyDo IS NULL AND Operace=@operPrednaOpAutomat
|
||
IF (@doklAutomat IS NOT NULL)
|
||
BEGIN
|
||
SET @idMzdyAutomat = NULL
|
||
EXEC @idMzdyAutomat = dbo.hp_EvidenceOperace @IDPrikaz=@idVPr, @Doklad=@doklAutomat, @Alt=@altAutomat, @Datum=@datStart,
|
||
@Sk_Cas_S=@casSekOperPrednaAutomat, @Sk_Cas_Obsluhy_S=0, @IDZam=@idZam,
|
||
@DatumZahajeniOp=@datStart, @DatumUkonceniOp=@datKonec
|
||
IF (@idMzdyAutomat IS NOT NULL) AND (@idPracAutomat IS NOT NULL)
|
||
EXEC dbo.hp_ZmenaStavuMezdAZmetku @ID=@idMzdyAutomat, @Stav=1, @ZapisZmenu=0
|
||
|
||
-- poznamenej operaci vypalovani, bude se na ni rozpocitavat cas
|
||
IF (@idMzdyAutomat IS NOT NULL) AND (@operPrednaOpAutomat=N'9260')
|
||
INSERT @evidMzdyVypalovani (ID) VALUES (@idMzdyAutomat)
|
||
|
||
END -- @doklAutomat IS NOT NULL
|
||
|
||
END -- @operPrednaOpAutomat <> ''
|
||
END -- @idMzdy IS NOT NULL
|
||
|
||
END
|
||
CLOSE e
|
||
DEALLOCATE e
|
||
|
||
SET @pocetMezd = ISNULL( (SELECT COUNT(*) FROM @evidMzdy), 0)
|
||
|
||
IF (@pocetMezd=ISNULL( (SELECT COUNT(*) FROM @evidOperR), 0))
|
||
UPDATE dbo.TabEvidRozpracOper SET DatumUzavreni=GETDATE(), AutorUzavreni=SUSER_SNAME() WHERE ID=@idEvidROp
|
||
|
||
SET @pocetVypalovani = ISNULL( (SELECT COUNT(*) FROM @evidMzdyVypalovani), 0)
|
||
IF (@pocetVypalovani>0) AND (@casSekVypalovani>0)
|
||
BEGIN
|
||
SET @casSekVypalovani = CEILING(@casSekVypalovani / @pocetVypalovani)
|
||
DECLARE v CURSOR LOCAL FOR
|
||
SELECT ID FROM @evidMzdyVypalovani
|
||
OPEN v
|
||
WHILE (1=1)
|
||
BEGIN
|
||
FETCH NEXT FROM v INTO @idMzdy
|
||
IF (@@FETCH_STATUS<>0) BREAK
|
||
UPDATE dbo.TabPrikazMzdyAZmetky SET Sk_Cas=dbo.hf_PrepoctiCas(@casSekVypalovani, 0, Sk_Cas_T) WHERE ID=@idMzdy
|
||
EXEC dbo.hp_EvidenceOperace_OpravaMzdy @IDMzdy=@idMzdy
|
||
END
|
||
CLOSE v
|
||
DEALLOCATE v
|
||
END
|
||
|
||
|
||
END -- mam jen jednu EvidRozpOper
|
||
END -- mam EvidRozpOperR k evidenci
|
||
|
||
|
||
-- pokud mam mzdy, koukni jestli mam delat vydej/odvod
|
||
SET @materialJson = ISNULL(@materialJson, N'')
|
||
IF EXISTS(SELECT 1 FROM @evidMzdy)
|
||
BEGIN
|
||
SET @idDZ = NULL -- vydejka materialu
|
||
SET @idDZ2 = NULL -- vydejka suroveho dilu (SK 100)
|
||
|
||
DECLARE ev CURSOR LOCAL FOR
|
||
SELECT ID FROM @evidMzdy
|
||
OPEN ev
|
||
WHILE (1=1)
|
||
BEGIN
|
||
FETCH NEXT FROM ev INTO @idMzdy
|
||
IF (@@FETCH_STATUS<>0) BREAK
|
||
|
||
SELECT @idVPr=IDPrikaz, @dokl=DokladPrPostup, @alt=AltPrPostup FROM dbo.TabPrikazMzdyAZmetky WHERE ID=@idMzdy
|
||
SELECT @idDilec=p.IDTabKmen, @radaVPr=p.Rada, @radaDZVydej=rp.RadaDokl_GenerRezVyd_Mat, @dpzVydej=rp.DruhPohybu_GenerRezVyd,
|
||
@sklProVydejRP=rp.VydejMatPol_SkladProGenHlavDZ, @sklSurovyDil=rpe._SkladSurovychDilu
|
||
FROM dbo.TabPrikaz p INNER JOIN dbo.TabRadyPrikazu rp ON (rp.Rada=p.Rada) LEFT JOIN dbo.TabRadyPrikazu_EXT rpe ON (rpe.ID=rp.ID)
|
||
WHERE p.ID=@idVPr
|
||
SET @sklSurovyDil = ISNULL(@sklSurovyDil, @sklProVydejRP)
|
||
|
||
|
||
SET @prvniOperaceVPrInt = ISNULL( (SELECT MIN(TRY_PARSE(Operace AS int)) FROM dbo.TabPrPostup WHERE ISNULL(Operace,N'')<>N'' AND IDPrikaz=@idVPr
|
||
AND IDOdchylkyDo IS NULL AND Prednastaveno=1 AND Odvadeci=0 AND ISNULL(TRY_PARSE(Operace AS int),0)>0)
|
||
, 0)
|
||
SET @prvniOperace=0
|
||
IF (CONVERT(int,@operPredna)=@prvniOperaceVPrInt)
|
||
SET @prvniOperace=1
|
||
-- pokud jsem prvni operace na prikazu (ne odvadeci) a jsem prvni evidence, udelej vydej suroveho materialu (SK 100), sklad 001
|
||
IF (@prvniOperace=1) AND NOT EXISTS(SELECT 1 FROM dbo.TabPrikazMzdyAZmetky WHERE IDPrikaz=@idVPr AND DokladPrPostup=@dokl AND ID<>@idMzdy)
|
||
BEGIN
|
||
IF OBJECT_ID('tempdb..#HDCTabPrKVazbyGenPredna', 'U') IS NOT NULL
|
||
DELETE FROM #HDCTabPrKVazbyGenPredna
|
||
IF OBJECT_ID('tempdb..#HDCTabPrKVazbyGenVCPredna', 'U') IS NOT NULL
|
||
DELETE FROM #HDCTabPrKVazbyGenVCPredna
|
||
IF OBJECT_ID('tempdb..#HDCTabPrKVazbyGen_IDMzdyPredna', 'U') IS NOT NULL
|
||
DELETE FROM #HDCTabPrKVazbyGen_IDMzdyPredna
|
||
|
||
DECLARE m CURSOR LOCAL FOR
|
||
SELECT v.ID, v.mnozstvi
|
||
FROM dbo.TabPrKVazby v INNER JOIN dbo.TabKmenZbozi kN ON (kN.ID=v.nizsi)
|
||
WHERE v.IDPrikaz=@idVPr AND IDOdchylkyDo IS NULL AND Prednastaveno=1 AND kN.SkupZbo IN (N'100') AND v.vyssi=@idDilec
|
||
OPEN m
|
||
WHILE (1=1)
|
||
BEGIN
|
||
FETCH NEXT FROM m INTO @idPrKVazby, @mnoz
|
||
IF (@@FETCH_STATUS<>0) BREAK
|
||
|
||
SELECT @dokl=Doklad FROM dbo.TabPrKVazby WHERE ID=@idPrKVazby
|
||
SELECT @mnozstviPomer_A=(MZ.kusy_odv+MZ.kusy_zmet_opr+MZ.kusy_zmet_neopr),
|
||
@mnozstviPomer_B=PrP.kusy_zad
|
||
FROM dbo.TabPrikazMzdyAZmetky MZ
|
||
INNER JOIN dbo.TabPrPostup PrP ON (PrP.IDPrikaz=MZ.IDPrikaz AND PrP.Doklad=MZ.DokladPrPostup AND PrP.Alt=MZ.AltPrPostup AND PrP.IDOdchylkyDo IS NULL)
|
||
WHERE MZ.ID=@idMzdy
|
||
|
||
INSERT INTO #HDCTabPrKVazbyGenPredna
|
||
(IDPrKV, MnozstviPoz, pom_pomer_A, pom_pomer_B, Doklad, IDPrikaz, Prednastaveno, Sklad, VyrStredisko,
|
||
IDPracoviste, mnoz_zad, Mnoz_nepotrebne, Mnoz_skut_realizovane, Cena_real, Mnoz_odv, Cena_odv, priorita, vyssi, nizsi,
|
||
DavkaTPV, pozice, Operace, FixniMnozstvi, mnozstvi, ProcZtrat, mnozstviSeZtratou, Prirez, Poznamka)
|
||
SELECT
|
||
PrKV.ID, @mnoz, @mnozstviPomer_A, @mnozstviPomer_B, PrKV.Doklad, PrKV.IDPrikaz, PrKV.Prednastaveno, PrKV.Sklad, PrKV.VyrStredisko,
|
||
PrKV.IDPracoviste, PrKV.mnoz_zad, PrKV.Mnoz_nepotrebne, PrKV.Mnoz_skut_realizovane,
|
||
PrKV.Cena_real, PrKV.Mnoz_odv, PrKV.Cena_odv, PrKV.priorita, PrKV.vyssi, PrKV.nizsi,
|
||
PrKV.DavkaTPV, PrKV.pozice, PrKV.Operace, PrKV.FixniMnozstvi, PrKV.mnozstvi, PrKV.ProcZtrat, PrKV.mnozstviSeZtratou,
|
||
PrKV.Prirez, PrKV.Poznamka
|
||
FROM dbo.TabPrKVazby PrKV
|
||
WHERE PrKV.ID=@idPrKVazby AND PrKV.uzavreno=0
|
||
SET @iTemp = SCOPE_IDENTITY()
|
||
|
||
-- pokud mam na prikazu jen jedno VC, pridej ho pro vydej suroveho dilce
|
||
SET @pocetVC = ISNULL( (SELECT COUNT(ID) FROM dbo.TabVyrCisPrikaz WHERE IDPrikaz=@idVPr), 0)
|
||
IF (@pocetVC=1) AND (@iTemp IS NOT NULL)
|
||
BEGIN
|
||
SELECT TOP(1) @vc=VyrCislo FROM dbo.TabVyrCisPrikaz WHERE IDPrikaz=@idVPr
|
||
IF (@mnoz<=ISNULL( (SELECT Mnozstvi-Odvedeno-Zmetky FROM dbo.TabVyrCisPrikaz WHERE IDPrikaz=@idVPr AND VyrCislo=@vc), 0))
|
||
IF NOT EXISTS (SELECT 1 FROM #HDCTabPrKVazbyGenVCPredna WHERE IDPolozky=@iTemp AND VyrCislo=@vc)
|
||
INSERT #HDCTabPrKVazbyGenVCPredna (IDPolozky, VyrCislo, Mnozstvi, Sklad) SELECT @iTemp, @vc, @mnoz, @sklProVydejRP
|
||
END
|
||
|
||
-- dopln vazbu na mzdu
|
||
IF (@dokl IS NOT NULL) AND OBJECT_ID('tempdb..#HDCTabPrKVazbyGen_IDMzdyPredna', 'U') IS NOT NULL
|
||
INSERT INTO #HDCTabPrKVazbyGen_IDMzdyPredna (IDPrikaz, Doklad, IDMzdy) SELECT @idVPr, @dokl, @idMzdy
|
||
|
||
-- sklad pro vydej suroveho dilu je nastaven ext.info na rade prikazu
|
||
UPDATE #HDCTabPrKVazbyGenPredna SET Sklad=@sklSurovyDil
|
||
UPDATE #HDCTabPrKVazbyGenVCPredna SET Sklad=@sklSurovyDil
|
||
|
||
END
|
||
CLOSE m
|
||
DEALLOCATE m
|
||
|
||
IF EXISTS(SELECT 1 FROM #HDCTabPrKVazbyGenPredna) -- mam nejaky material pro vydejku ?
|
||
IF OBJECT_ID(N'dbo.ep_Vyroba_GenVydejZeMzdy', N'P') IS NOT NULL
|
||
BEGIN
|
||
UPDATE #HDCTabPrKVazbyGenPredna SET Sklad=@sklProVydejRP
|
||
SET @idDZ2 = NULL
|
||
BEGIN TRY
|
||
EXEC @iChyba = dbo.ep_Vyroba_GenVydejZeMzdy @IDMzdy=@idMzdy, @IDDoklad=@idDZ2 OUT, @errMsg=@errMsg OUT, @realizujVydej=0
|
||
IF (@errMsg<>N'') OR (@iChyba>0)
|
||
BEGIN
|
||
UPDATE dbo.TabPrikazMzdyAZmetky SET Poznamka=N'Chyba realizace vydejky suroveho dilu: ' + @errMsg WHERE ID=@idMzdy
|
||
UPDATE dbo.TabDokladyZbozi SET BlokovaniEditoru=NULL WHERE ID=@idDZ2
|
||
END
|
||
END TRY
|
||
BEGIN CATCH
|
||
IF (CHARINDEX(N'50014', @errMsg)>0)
|
||
SET @errMsg = N'Nesoulad mno<6E>stv<74> v<>robn<62>ch <20><>sel a polo<6C>ky' + NCHAR(13)+NCHAR(10) + @errMsg
|
||
IF (@errMsg<>N'')
|
||
UPDATE dbo.TabPrikazMzdyAZmetky SET Poznamka=N'Chyba realizace vydejky: ' + @errMsg WHERE ID=@idMzdy
|
||
UPDATE dbo.TabDokladyZbozi SET BlokovaniEditoru=NULL WHERE ID=@idDZ2
|
||
END CATCH
|
||
IF OBJECT_ID('tempdb..#HDCTabPrKVazbyGenPredna', 'U') IS NOT NULL
|
||
DELETE FROM #HDCTabPrKVazbyGenPredna
|
||
IF OBJECT_ID('tempdb..#HDCTabPrKVazbyGen_IDMzdyPredna', 'U') IS NOT NULL
|
||
DELETE FROM #HDCTabPrKVazbyGen_IDMzdyPredna
|
||
END -- mam ep_Vyroba_GenVydejZeMzdy
|
||
|
||
END -- @prvniOperace=1
|
||
|
||
|
||
|
||
-- mam vydat nejaky material, naskenovany s ukoncenim operace ?
|
||
IF (CHARINDEX('skupina', @materialJson)>0)
|
||
BEGIN
|
||
IF OBJECT_ID('tempdb..#HDCTabPrKVazbyGenPredna', 'U') IS NOT NULL
|
||
DELETE FROM #HDCTabPrKVazbyGenPredna
|
||
IF OBJECT_ID('tempdb..#HDCTabPrKVazbyGen_IDMzdyPredna', 'U') IS NOT NULL
|
||
DELETE FROM #HDCTabPrKVazbyGen_IDMzdyPredna
|
||
|
||
SELECT @sklProVydej=ISNULL(ke._SkladProVydejMat, rp.VydejMatPol_SkladProGenHlavDZ)
|
||
FROM dbo.TabPrikaz p
|
||
INNER JOIN dbo.TabRadyPrikazu rp ON (rp.Rada=p.Rada)
|
||
INNER JOIN dbo.TabKmenZbozi k ON (k.ID=p.IDTabKmen)
|
||
LEFT JOIN dbo.TabKmenZbozi_EXT ke ON (ke.ID=k.ID)
|
||
WHERE p.ID=@idVPr
|
||
|
||
SET @sklSurovyJeIMaterial=0
|
||
-- IF (@sklProVydejRP=@sklProVydej)
|
||
-- SET @sklSurovyJeIMaterial=1
|
||
|
||
DELETE FROM #TabJSONData
|
||
INSERT #TabJSONData (doc) SELECT @materialJson
|
||
DECLARE m CURSOR LOCAL FOR
|
||
SELECT ma.skupina, ma.regcis, ma.quantity
|
||
FROM #TabJSONData d
|
||
CROSS APPLY OPENJSON (d.doc, N'$')
|
||
WITH (skupina NVARCHAR(3), regcis NVARCHAR(30), quantity NUMERIC(19,6) ) AS ma
|
||
OPEN m
|
||
WHILE (1=1)
|
||
BEGIN
|
||
FETCH NEXT FROM m INTO @sz, @rc, @mnoz
|
||
IF (@@FETCH_STATUS<>0) BREAK
|
||
|
||
|
||
-- pokud jsem material/polotovar SK 100 (surovy dilec), vydej me jinym vydejem (viz vyse), mozna i z jineho skladu
|
||
-- (Rada prikazu sklad pro vydej x ext.param na dilci TabKmenZbozi_EXT._SkladProVydejMat)
|
||
IF (@sz IN (N'100'))
|
||
CONTINUE
|
||
|
||
|
||
SET @idKZ = (SELECT ID FROM dbo.TabKmenZbozi WHERE SkupZbo=@sz AND RegCis=@rc)
|
||
IF (@idKZ IS NOT NULL)
|
||
BEGIN
|
||
IF (@pocetMezd>1)
|
||
SET @mnoz = (@mnoz / @pocetMezd)
|
||
|
||
-- pokud neni urceno ze naskenovana karta je material, nastav to, pri tom zkontroluj i jestli je to nastavene na rade, at neprepises polotovar
|
||
SELECT @szJeMat=Material FROM dbo.TabSkupinyZbozi WHERE SkupZbo=@sz
|
||
SELECT @szJeMat=@szJeMat | Material FROM dbo.TabKmenZbozi WHERE ID=@idKZ
|
||
UPDATE dbo.TabKmenZbozi SET Material=1 WHERE ID=@idKZ AND Dilec=0 AND Material=0 AND @szJeMat=1
|
||
|
||
SET @idPrKVazby = (SELECT TOP(1) ID FROM dbo.TabPrKVazby WHERE IDPrikaz=@idVPr AND IDOdchylkyDo IS NULL
|
||
AND vyssi=@idDilec AND nizsi=@idKZ ORDER BY Prednastaveno DESC)
|
||
|
||
IF (@idPrKVazby IS NULL)
|
||
EXEC @idPrKVazby = dbo.hp_NewPozadavek_TabPrKVazby @IDPrikaz=@idVPr, @IDKmenZbozi=@idKZ, @Mnozstvi=@mnoz
|
||
SET @dokl = NULL
|
||
IF (@idPrKVazby IS NOT NULL)
|
||
BEGIN
|
||
SELECT @dokl=Doklad FROM dbo.TabPrKVazby WHERE ID=@idPrKVazby
|
||
SELECT @mnozstviPomer_A=(MZ.kusy_odv+MZ.kusy_zmet_opr+MZ.kusy_zmet_neopr),
|
||
@mnozstviPomer_B=PrP.kusy_zad
|
||
FROM dbo.TabPrikazMzdyAZmetky MZ
|
||
INNER JOIN dbo.TabPrPostup PrP ON (PrP.IDPrikaz=MZ.IDPrikaz AND PrP.Doklad=MZ.DokladPrPostup AND PrP.Alt=MZ.AltPrPostup AND PrP.IDOdchylkyDo IS NULL)
|
||
WHERE MZ.ID=@idMzdy
|
||
INSERT INTO #HDCTabPrKVazbyGenPredna
|
||
(IDPrKV, MnozstviPoz, pom_pomer_A, pom_pomer_B, Doklad, IDPrikaz, Prednastaveno, Sklad, VyrStredisko,
|
||
IDPracoviste, mnoz_zad, Mnoz_nepotrebne, Mnoz_skut_realizovane, Cena_real, Mnoz_odv, Cena_odv, priorita, vyssi, nizsi,
|
||
DavkaTPV, pozice, Operace, FixniMnozstvi, mnozstvi, ProcZtrat, mnozstviSeZtratou, Prirez, Poznamka)
|
||
SELECT
|
||
PrKV.ID, @mnoz, @mnozstviPomer_A, @mnozstviPomer_B, PrKV.Doklad, PrKV.IDPrikaz, PrKV.Prednastaveno, PrKV.Sklad, PrKV.VyrStredisko,
|
||
PrKV.IDPracoviste, PrKV.mnoz_zad, PrKV.Mnoz_nepotrebne, PrKV.Mnoz_skut_realizovane,
|
||
PrKV.Cena_real, PrKV.Mnoz_odv, PrKV.Cena_odv, PrKV.priorita, PrKV.vyssi, PrKV.nizsi,
|
||
PrKV.DavkaTPV, PrKV.pozice, PrKV.Operace, PrKV.FixniMnozstvi, PrKV.mnozstvi, PrKV.ProcZtrat, PrKV.mnozstviSeZtratou,
|
||
PrKV.Prirez, PrKV.Poznamka
|
||
FROM dbo.TabPrKVazby PrKV
|
||
WHERE PrKV.ID=@idPrKVazby AND PrKV.uzavreno=0
|
||
SET @iTemp = SCOPE_IDENTITY()
|
||
|
||
-- pokud neni prednastaveny sklad pro vydej, zkus to z rady prikazu, pripadne z ext.info na dilci TabKmenZbozi_EXT._SkladProVydejMat
|
||
UPDATE #HDCTabPrKVazbyGenPredna SET Sklad=@sklProVydej WHERE ID=@iTemp AND @sklProVydej IS NOT NULL
|
||
|
||
IF (@dokl IS NOT NULL) AND OBJECT_ID('tempdb..#HDCTabPrKVazbyGen_IDMzdyPredna', 'U') IS NOT NULL
|
||
INSERT INTO #HDCTabPrKVazbyGen_IDMzdyPredna (IDPrikaz, Doklad, IDMzdy) SELECT @idVPr, @dokl, @idMzdy
|
||
END -- idPrKVazby IS NOT NULL
|
||
END -- idKZ IS NOT NULL
|
||
END
|
||
CLOSE m
|
||
DEALLOCATE m
|
||
|
||
-- mam nejaky material pro vydejku ?
|
||
IF EXISTS(SELECT 1 FROM #HDCTabPrKVazbyGenPredna)
|
||
IF OBJECT_ID(N'dbo.ep_Vyroba_GenVydejZeMzdy', N'P') IS NOT NULL
|
||
BEGIN
|
||
SET @idDZ = NULL
|
||
|
||
-- pokud je sklad pro vydej materialu na rade VPr stejny jako na ext.info dilce prikazu, udelej vydej v jednom dokladu
|
||
IF (@sklSurovyJeIMaterial=1) AND (@idDZ2 IS NOT NULL)
|
||
BEGIN
|
||
SET @idDZ = @idDZ2
|
||
SET @idDZ2 = NULL
|
||
END
|
||
-- pokud je sklad jiny nez na rade VPr, zaloz hlavicku a predej ji do generovaci procedury, jinak se v "hp_generujRezVydNew" bere sklad z rady VPr
|
||
IF (@idDZ IS NULL) AND (@sklProVydej<>@sklProVydejRP)
|
||
EXEC dbo.hp_InsertHlavickyOZ_Full @Ident=@idDZ OUT, @Sklad=@sklProVydej, @DruhPohybu=@dpzVydej, @RadaDokladu=@radaDZVydej, @CisloOrg=0
|
||
|
||
|
||
BEGIN TRY
|
||
EXEC @iChyba = dbo.ep_Vyroba_GenVydejZeMzdy @IDMzdy=@idMzdy, @IDDoklad=@idDZ OUT, @errMsg=@errMsg OUT, @realizujVydej=1
|
||
IF (@errMsg<>N'') OR (@iChyba>0)
|
||
BEGIN
|
||
UPDATE dbo.TabPrikazMzdyAZmetky SET Poznamka=N'Chyba realizace vydejky: ' + @errMsg WHERE ID=@idMzdy
|
||
UPDATE dbo.TabDokladyZbozi SET BlokovaniEditoru=NULL WHERE ID=@idDZ
|
||
END
|
||
END TRY
|
||
BEGIN CATCH
|
||
IF (CHARINDEX(N'50014', @errMsg)>0)
|
||
SET @errMsg = N'Nesoulad mno<6E>stv<74> v<>robn<62>ch <20><>sel a polo<6C>ky' + NCHAR(13)+NCHAR(10) + @errMsg
|
||
IF (@errMsg<>N'')
|
||
UPDATE dbo.TabPrikazMzdyAZmetky SET Poznamka=N'Chyba realizace vydejky: ' + @errMsg WHERE ID=@idMzdy
|
||
UPDATE dbo.TabDokladyZbozi SET BlokovaniEditoru=NULL WHERE ID=@idDZ
|
||
END CATCH
|
||
IF OBJECT_ID('tempdb..#HDCTabPrKVazbyGenPredna', 'U') IS NOT NULL
|
||
DELETE FROM #HDCTabPrKVazbyGenPredna
|
||
IF OBJECT_ID('tempdb..#HDCTabPrKVazbyGen_IDMzdyPredna', 'U') IS NOT NULL
|
||
DELETE FROM #HDCTabPrKVazbyGen_IDMzdyPredna
|
||
END -- mam ep_Vyroba_GenVydejZeMzdy
|
||
|
||
END -- (CHARINDEX('skupina', @materialJson)>0)
|
||
|
||
|
||
-- pokud je odvadeci, generuj odvod na sklad
|
||
SET @jeOdvadeci=0
|
||
SET @cisloOdvOper=NULL
|
||
IF EXISTS (SELECT 1 FROM dbo.TabPrPostup WHERE IDPrikaz=@idVPr AND Doklad=@dokl AND Alt=@alt AND IDOdchylkyDo IS NULL
|
||
AND Prednastaveno=1 AND Odvadeci=1)
|
||
BEGIN
|
||
SET @jeOdvadeci=1
|
||
SET @cisloOdvOper = (SELECT Operace FROM dbo.TabPrPostup WHERE IDPrikaz=@idVPr AND Prednastaveno=1
|
||
AND Odvadeci=1 AND IDOdchylkyDo IS NULL)
|
||
END
|
||
IF (@jeOdvadeci=1)
|
||
BEGIN
|
||
IF OBJECT_ID(N'dbo.ep_Vyroba_GenOdvodZeMzdy', N'P') IS NOT NULL
|
||
BEGIN
|
||
SET @idDZ = NULL
|
||
BEGIN TRY
|
||
EXEC @iChyba = dbo.ep_Vyroba_GenOdvodZeMzdy @IDMzdy=@idMzdy, @bezVyrCis=0, @errMsg=@errMsg OUT, @realizujPrijem=1, @IDDoklad=@idDZ OUT
|
||
IF (@errMsg<>N'')
|
||
UPDATE dbo.TabDokladyZbozi SET BLokovaniEditoru=NULL WHERE ID=@idDZ
|
||
END TRY
|
||
BEGIN CATCH
|
||
UPDATE dbo.TabDokladyZbozi SET BlokovaniEditoru=NULL WHERE ID=@idDZ
|
||
END CATCH
|
||
END -- existuje ep_Vyroba_GenOdvodZeMzdy
|
||
END -- jeOdvadeci=1
|
||
|
||
END
|
||
CLOSE ev
|
||
DEALLOCATE ev
|
||
|
||
|
||
-- pokud mam vydejku na surovy dil na jinem dokladu/skladu, realizuj ji
|
||
IF (@idDZ2 IS NOT NULL) AND NOT EXISTS(SELECT 1 FROM dbo.TabDokladyZbozi WHERE ID=@idDZ2 AND Realizovano=1)
|
||
BEGIN
|
||
BEGIN TRY
|
||
EXEC dbo.hp_Realizuj_Vydej @ID=@idDZ2, @DatumRealizace=NULL, @Uzivatel=@idUziv, @Hlidat=0, @BylaChyba=@bChyba OUT
|
||
END TRY
|
||
BEGIN CATCH
|
||
SET @errMsg = ERROR_MESSAGE()
|
||
IF (CHARINDEX(N'50014', @errMsg)>0)
|
||
SET @errMsg = N'Nesoulad mno<6E>stv<74> v<>robn<62>ch <20><>sel a polo<6C>ky' + NCHAR(13)+NCHAR(10) + @errMsg
|
||
IF (@errMsg<>N'')
|
||
UPDATE dbo.TabPrikazMzdyAZmetky SET Poznamka=N'Chyba realizace vydejky suroveho dilu: ' + @errMsg WHERE ID=@idMzdy
|
||
UPDATE dbo.TabDokladyZbozi SET BlokovaniEditoru=NULL WHERE ID=@idDZ2
|
||
END CATCH
|
||
END
|
||
|
||
END -- mam evidovane mzdy
|
||
|
||
|
||
|
||
|
||
IF (ISNULL( (SELECT COUNT(*) FROM @evidMzdy), 0)>1)
|
||
SET @idMezdStr = (SELECT STRING_AGG(ID, N',') FROM @evidMzdy)
|
||
SET @idMezdStr = ISNULL(@idMezdStr, N'')
|
||
|
||
SET @errMsg = ISNULL(@errMsg,N'')
|
||
IF (@errMsg<>N'')
|
||
UPDATE dbo._hdc_ph_PrijataJsonData SET PosledniChyba=N'CHYBA: ' + @errMsg WHERE ID=@idJson
|
||
UPDATE dbo._hdc_ph_PrijataJsonData SET DatZpracovani=GETDATE(), IDMzda=IIF(@idMezdStr<>N'',NULL,@idMzdy),
|
||
IDMezd=IIF(@idMezdStr=N'', NULL, @idMezdStr)
|
||
WHERE ID=@idJson
|
||
|
||
END -- akce Stop
|
||
|
||
|
||
END -- objekt Operace AND idZam IS NOT NULL
|
||
|
||
|
||
UPDATE dbo._hdc_ph_PrijataJsonData SET Blokovano=0 WHERE ID=@idJson
|
||
IF (@tranPred=0) AND (@@TRANCOUNT>0)
|
||
COMMIT TRAN
|
||
END TRY
|
||
BEGIN CATCH
|
||
SET @errMsg = ERROR_MESSAGE()
|
||
SET @errProc = ERROR_PROCEDURE()
|
||
IF (@tranPred=0) AND (@@TRANCOUNT>0)
|
||
ROLLBACK TRAN
|
||
UPDATE dbo._hdc_ph_PrijataJsonData SET DatZpracovani=GETDATE(), PosledniChyba=N'CHYBA: ' + @errMsg WHERE ID=@idJson
|
||
END CATCH
|
||
|
||
END
|
||
CLOSE j
|
||
DEALLOCATE j
|
||
|
||
|
||
|
||
-- cisteni
|
||
DROP TABLE IF EXISTS #HDCTabPrKVazbyGenPredna
|
||
DROP TABLE IF EXISTS #HDCTabPrKVazbyGenVCPredna
|
||
DROP TABLE IF EXISTS #HDCTabPrKVazbyGen_IDMzdyPredna
|
||
DROP TABLE IF EXISTS #TabJSONData
|