Files
Rootvin-pluginHDCRTN/_sql/ep_Vyroba_Doklady_Micharna.sql.bak
2025-05-21 21:06:33 +02:00

833 lines
34 KiB
MySQL
Raw Blame History

-- dbo.ep_Vyroba_Doklady_Micharna
CREATE PROCEDURE dbo.ep_Vyroba_Doklady_Micharna
@idJson 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,
@aktDatum DATETIME,
@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,
@sklMat NVARCHAR(30),
@sklTechnicky NVARCHAR(30),
@sklPek NVARCHAR(30),
@radaTechVydej NVARCHAR(30)=N'222',
@radaDZVydejka NVARCHAR(3)=N'',
@radaDZPrevodV NVARCHAR(3)=N'',
@prevodka BIT=0,
@parZnak NVARCHAR(20)
DECLARE
@idPHIdent INT,
@idPHIdentBak INT,
@idPHIdent2 INT,
@idPHObj INT,
@idPHObjPol INT
DECLARE
@datPorizeni DATETIME,
@idVPr INT,
@radaVPr NVARCHAR(10),
@cisloPrikazu NVARCHAR(20),
@idVPrNizsi INT,
@radaVPrNizsi NVARCHAR(10),
@idVPrVyssi INT,
@radaVPrVyssi NVARCHAR(10),
@dilec INT,
@idZakazka INT,
@cisloZak NVARCHAR(30),
@casStart DATETIME,
@vyrobniDen DATETIME,
@smena TINYINT,
@casStartOld DATETIME,
@viskoz TINYINT,
@vodaLitry NUMERIC(12,3),
@moukaKgNorma NUMERIC(19,6),
@moukaKgFin NUMERIC(19,6),
@moukaSilo TINYINT,
@hmotTesta NUMERIC(19,6),
@idMzda INT,
@skCasSek INT,
@casKonec DATETIME,
@idSS INT,
@rDoklVyd NVARCHAR(3),
@idDZ INT,
@idDZDst INT,
@idPZ INT,
@datumDZ DATETIME,
@datReal DATETIME,
@menaDZ NVARCHAR(3),
@kurzDZ NUMERIC(19,6),
@kurzEDZ NUMERIC(19,6),
@dpz TINYINT,
@jednM INT,
@vstC TINYINT
DECLARE
@idPrKVazby INT,
@doklPrV INT,
@altPrV NCHAR(1),
@oper NVARCHAR(4),
@pozice NVARCHAR(100),
@idKZ INT,
@nazev1 NVARCHAR(100),
@idVCK INT,
@idVCS INT,
@idVCP INT,
@sz NVARCHAR(3),
@rc NVARCHAR(30),
@idUmist INT,
@sarze NVARCHAR(30),
@paletList NVARCHAR(30),
@mnozDilec NUMERIC(19,6),
@mnoz NUMERIC(19,6),
@mnoz2 NUMERIC(19,6),
@mnozVyd NUMERIC(19,6),
@mnozReq NUMERIC(19,6),
@mnozNew NUMERIC(19,6)
DECLARE
@idStartStopOp INT,
@idPracoviste INT,
@idPracovisteOld INT,
@idStroj INT,
@strojPec NVARCHAR(40),
@statusStroje NVARCHAR(50),
@idEvROp INT,
@idEvROpR INT,
@cisZam INT,
@idZam INT,
@doklPrP INT,
@altPrP NCHAR(1)
DECLARE @TabPHObj TABLE (ID INT NOT NULL, IDPHIdent INT )
DECLARE @PrKVazby TABLE (ID INT NOT NULL, Sklad NVARCHAR(30) )
-- vytvor pomocnou tabulku
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))
IF OBJECT_ID(N'tempdb..#TabDefiniceProMicharnu', N'U') IS NOT NULL
SELECT TOP(1) @sklMat=HlavniSkladMat, @sklPek=SkladVyrobaPekarna, @sklTechnicky=TechnologickySklad, @radaTechVydej=RadaTechnologickyVydej
FROM #TabDefiniceProMicharnu
IF (@sklMat IS NULL)
SELECT @sklMat=Cislo FROM dbo.TabStrom WHERE Nazev=N'Hlavn<EFBFBD> sklad - Materi<72>l'
IF (@sklTechnicky IS NULL)
SELECT @sklTechnicky=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technolog%ne<6E><65>%'
IF (@sklPek IS NULL)
SELECT @sklPek=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'V<EFBFBD>roba - Pek<65>rna'
IF (@sklTechnicky IS NULL) AND (@sklPek IS NOT NULL)
SET @sklTechnicky=@sklPek
DROP TABLE IF EXISTS #TabDefiniceProMicharnu
IF (@radaTechVydej IS NOT NULL)
SET @radaDZVydejka = @radaTechVydej
IF (@idJson IS NULL)
DECLARE j CURSOR LOCAL FOR
SELECT ID, JSONData, Akce
FROM dbo._hdc_ph_PrijataJsonData
WHERE DatZpracovani IS NULL
AND ISNULL(JSONData, N'')<>N''
ORDER BY DatPorizeni ASC
ELSE
DECLARE j CURSOR LOCAL FOR
SELECT ID, JSONData, Akce
FROM dbo._hdc_ph_PrijataJsonData
WHERE ID=@idJson
OPEN j
WHILE (1=1)
BEGIN
FETCH NEXT FROM j INTO @idJson, @jsonString, @akce
IF (@@FETCH_STATUS<>0) BREAK
IF (ISJSON(@jsonString)=0)
CONTINUE
IF ISNULL( (SELECT COUNT(ID) FROM dbo._hdc_ph_Log WHERE IdJsonData=@idJson), 0)>=3
BEGIN
IF EXISTS(SELECT 1 FROM dbo._hdc_ph_PrijataJsonData WHERE ID=@idJson AND ISNULL(PosledniChyba,N'')=N'')
UPDATE dbo._hdc_ph_PrijataJsonData SET PosledniChyba=(SELECT TOP(1) LogText FROM dbo._hdc_ph_Log WHERE IdJsonData=@idJson ORDER BY DatPorizeni DESC) WHERE ID=@idJson
CONTINUE
END
SET @logTyp = 0
SET @logInt = NULL
SET @logStr = N''
SET @log4Mail = 0
SET @logText = N''
BEGIN TRY
SET @tranPred = @@TRANCOUNT
IF (@tranPred=0)
BEGIN TRAN
-- BEGIN: SPOTREBA/ODPIS
IF (@akce=N'vyroba_spotreba')
BEGIN
DELETE FROM @PrKVazby
DELETE FROM #TabJSONData
INSERT #TabJSONData (doc) SELECT @jsonString
SELECT @typDokum=u2.typ, @subtypDokum=u2.subtyp
FROM #TabJSONData d
CROSS APPLY OPENJSON (d.doc, '$')
WITH ([data] NVARCHAR(MAX) AS JSON) AS u
CROSS APPLY OPENJSON ([data])
WITH (typ NVARCHAR(50), subtyp NVARCHAR(50)) AS u2
-- SPOTREBA PLUS UKONCENI OPERACE MICHANI ----------------------------------------------------
IF (@typDokum='vyroba')
BEGIN
SET @vodaLitry = 0
SET @moukaKgNorma = 0
SET @moukaKgFin = 0
SET @moukaSilo = 0
SELECT @idStroj=u3.heliosId, @idPHIdent=u2.datazoneId
FROM #TabJSONData d
CROSS APPLY OPENJSON (d.doc, '$')
WITH ([data] NVARCHAR(MAX) AS JSON) AS u
CROSS APPLY OPENJSON ([data])
WITH (datazoneId INT, stroj NVARCHAR(MAX) AS JSON) AS u2
CROSS APPLY OPENJSON (stroj)
WITH (heliosId INT) u3
SELECT @idVPr=u3.heliosId, @casStart=u3.zacatek, @casKonec=u3.konec, @viskoz=u3.viskozita, @moukaSilo=u3.silo
FROM #TabJSONData d
CROSS APPLY OPENJSON (d.doc, '$')
WITH ([data] NVARCHAR(MAX) AS JSON) AS u
CROSS APPLY OPENJSON ([data])
WITH (typ NVARCHAR(50), prikaz NVARCHAR(MAX) AS JSON) AS u2
CROSS APPLY OPENJSON (prikaz)
WITH (heliosId INT, datazoneId INT, skupzbo NVARCHAR(3), regcis NVARCHAR(30), zacatek DATETIME, konec DATETIME, viskozita TINYINT, silo TINYINT) u3
SET @idPHIdentBak = @idPHIdent
SELECT @vyrobniDen=Datum, @smena=Smena FROM dbo.ef_GetDatumASmenu(@casStart)
SELECT @idStartStopOp=ID FROM dbo._TabVyroba_OperaceStartStop WHERE IDPrikaz=@idVPr AND IDPHIdent=@idPHIdent
SELECT @dilec=IdTabKmen, @radaVPr=Rada, @idZakazka=IDZakazka, @mnozDilec=kusy_zad FROM dbo.TabPrikaz WHERE ID=@idVPr
SELECT @cisloZak=CisloZakazky FROM dbo.TabZakazka WHERE ID=@idZakazka
IF (@radaDZVydejka IS NULL)
SET @radaDZVydejka = ISNULL( (SELECT RadaDokl_GenerRezVyd_Mat FROM dbo.TabRadyPrikazu WHERE Rada=@radaVPr), @radaDZVydejka)
-- SET @sklMat = ISNULL( (SELECT VydejMatPol_SkladProGenHlavDZ FROM dbo.TabRadyPrikazu WHERE Rada=@radaVPr), @sklMat)
-- povol evidenci a odvod vice ks nez je na prikazu
UPDATE dbo.TabRadyPrikazu SET NekontrolMnozEvidMezd=1 WHERE Rada=@radaVPr AND NekontrolMnozEvidMezd=0
UPDATE dbo.TabRadyPrikazu SET NekontrolMnozOdvedFinal=1 WHERE Rada=@radaVPr AND NekontrolMnozOdvedFinal=0
SET @idDZ = (SELECT IDDoklad FROM dbo._hdc_ph_PrijataJsonData WHERE ID=@idJson)
IF (@idDZ IS NULL) -- @idDZ uz existuje ? Ne, udelej vydejku na prikaz
BEGIN
SELECT @jsonString2=u2.vydej
FROM #TabJSONData d
CROSS APPLY OPENJSON (d.doc, '$')
WITH (akce NVARCHAR(50), [data] NVARCHAR(MAX) AS JSON) AS u
CROSS APPLY OPENJSON ([data])
WITH ( vydej NVARCHAR(MAX) AS JSON) AS u2
DELETE FROM #TabJSONData
INSERT #TabJSONData (doc) SELECT @jsonString2
DECLARE p CURSOR LOCAL FOR
SELECT u.nazev, u.skupzbo, u.regcis, u.sarze, u.paletovylist, u.mnozstvi, u.mnozstviVychozi, u.datazoneId
FROM #TabJSONData d
CROSS APPLY OPENJSON (d.doc, '$')
WITH ( nazev NVARCHAR(100), skupzbo NVARCHAR(3), regcis NVARCHAR(30), sarze NVARCHAR(30), paletovyList NVARCHAR(30), mnozstvi NUMERIC(19,6), mnozstviVychozi NUMERIC(19,6), datazoneId INT) AS u
OPEN p
WHILE (1=1)
BEGIN
FETCH NEXT FROM p INTO @nazev1, @sz, @rc, @sarze, @paletList, @mnoz, @mnoz2, @idPHIdent
IF (@@FETCH_STATUS<>0) BREAK
SET @paletList = ISNULL(@paletList, N'')
IF (@sz=N'101') AND (@rc=N'001000')
SET @vodaLitry = @mnoz
IF (@sz=N'101') AND (@nazev1 LIKE N'%mouka%')
BEGIN
SET @moukaKgFin = @mnoz
SET @moukaKgNorma = @mnoz2
END
IF (@idDZ IS NULL)
BEGIN
SET @dpz = 4
EXEC dbo.hp_InsertHlavickyOZ @ident=@idDZ OUT, @Sklad=@sklTechnicky, @DruhPohybu=@dpz, @RadaDokladu=@radaDZVydejka, @CisloOrg=0
IF (@idDZ IS NOT NULL)
BEGIN
IF NOT EXISTS(SELECT 1 FROM dbo.TabDokladyZbozi_EXT WHERE ID=@idDZ)
INSERT dbo.TabDokladyZbozi_EXT (ID) VALUES (@idDZ)
UPDATE dbo.TabDokladyZbozi_EXT SET _HDCAPI_PHident=@idJson WHERE ID=@idDZ
SELECT @datumDZ=DatPorizeni, @menaDZ=Mena, @kurzDZ=Kurz, @kurzEDZ=KurzEuro, @jednM=JednotkaMeny, @vstC=VstupniCena
FROM dbo.TabDokladyZbozi WHERE ID=@idDZ
UPDATE dbo.TabDokladyZbozi SET IDPrikaz=@idVPr, BlokovaniEditoru=0 WHERE ID=@idDZ
IF (@cisloZak IS NOT NULL)
UPDATE dbo.TabDokladyZbozi SET CisloZakazky=@cisloZak WHERE ID=@idDZ
END
END
IF (@idDZ IS NOT NULL)
BEGIN
SET @idKZ = (SELECT ID FROM dbo.TabKmenZbozi WHERE Nazev1 NOT LIKE N'%Voda%' AND SkupZbo=@sz AND RegCis=@rc AND (Material=1 OR Dilec=1) AND Sluzba=0)
IF (@idKZ IS NOT NULL)
BEGIN
-- najdi vazbu vc. kontroly jestli polozka neni rezijni material
SET @idPrKVazby = (SELECT ID FROM dbo.TabPrKVazby WHERE IDPrikaz=@idVPr AND vyssi=@dilec AND nizsi=@idKZ AND IDOdchylkyDo IS NULL AND RezijniMat=0)
-- pokud neni material v pozadavcich prikazu, pridej ho (neni v TPV)
IF (@idPrKVazby IS NULL) AND (@mnoz>0)
BEGIN
EXEC @idPrKVazby=dbo.hp_NewPozadavek_TabPrKVazby @IDPrikaz=@idVPr, @IDKmenZbozi=@idKZ, @Mnozstvi=@mnoz, @Mnoz_zad=@mnoz, @VychoziSklad=@sklMat
END
-- pridej do vydejky
IF (@idPrKVazby IS NOT NULL)
BEGIN
INSERT @PrKVazby (ID, Sklad) SELECT ID, Sklad FROM dbo.TabPrKVazby WHERE ID=@idPrKVazby
UPDATE dbo.TabPrKVazby SET Sklad=@sklTechnicky WHERE ID=@idPrKVazby
SET @idSS = (SELECT ID FROM dbo.TabStavSkladu WHERE IDKmenZbozi=@idKZ AND IDSklad=@sklTechnicky)
IF (@idSS IS NULL)
EXEC dbo.hp_InsertStavSkladu @IDKmen=@idKZ, @IDSklad=@sklTechnicky, @IDZboSklad=@idSS OUT
IF (@idSS IS NOT NULL)
BEGIN
-- mnoz = mnozstvi realne spotrebovane / mnoz2 = mnozstvi vychozi normovane
/*
UPDATE dbo.TabPrKVazby SET mnozstvi=@mnoz, mnoz_zad=@mnoz*@mnozDilec WHERE ID=@idPrKVazby AND mnozstvi<>@mnoz
*/
/*
SELECT @mnozReq=mnoz_zad, @doklPrV=Doklad FROM dbo.TabPrKVazby WHERE ID=@idPrKVazby
SET @mnozVyd = ISNULL( (SELECT SUM(pz.Mnozstvi) FROM dbo.TabPohybyZbozi pz INNER JOIN dbo.TabDokladyZbozi dz ON (dz.ID=pz.IDDoklad)
WHERE dz.DruhPohybuZbo=@dpz AND dz.RadaDokladu=@radaDZVydejka AND pz.IDPrikaz=@idVPr AND pz.TypVyrobnihoDokladu=0), 0)
SET @mnozNew = @mnozReq - @mnozVyd - @mnoz
IF (@mnozNew<=0)
BEGIN
SET @mnozNew = @mnozVyd + @mnoz
UPDATE dbo.TabPrKVazby SET mnoz_zad = @mnozNew WHERE ID=@idPrKVazby
END
*/
EXEC dbo.hp_InsertPolozkyOZ @ident=@idPZ OUT, @IDDoklad=@idDZ, @DruhPohybu=@dpz, @CisloOrg=0, @IDZboSklad=@idSS, @Mena=@menaDZ, @Kurz=@kurzDZ,
@JednotkaMeny=@jednM, @KurzEuro=@kurzEDZ, @SazbaSD=NULL, @SazbaDPH=NULL, @ZakazanoDPH=0, @VstupniCena=@vstC, @Mnozstvi=@mnoz
IF (@idPZ IS NOT NULL)
BEGIN
IF NOT EXISTS(SELECT 1 FROM dbo.TabPohybyZbozi_EXT WHERE ID=@idPZ)
INSERT dbo.TabPohybyZbozi_EXT (ID) VALUES (@idPZ)
IF (@sz=N'101') AND (@nazev1 LIKE N'%mouka%') AND (@moukaSilo IS NOT NULL)
BEGIN
UPDATE dbo.TabPohybyZbozi_EXT SET _Mouka_Silo=@moukaSilo WHERE ID=@idPZ
/*
SET @idUmist = (SELECT ID FROM dbo.TabUmisteni WHERE Kod=CONVERT(nvarchar,@moukaSilo) AND IDSklad=@sklTechnicky)
IF (@idUmist IS NOT NULL)
UPDATE dbo.TabPohybyZbozi SET IdUmisteni=@idUmist WHERE ID=@idPZ
*/
END
INSERT dbo._TabVyroba_OperaceStartStopVydej (IDHlava, IDKmenZbozi, Mnozstvi, MnozstviPuvodni, IDPohybZbozi)
SELECT @idStartStopOp, @idKZ, @mnoz, @mnoz2, @idPZ
UPDATE dbo.TabPohybyZbozi SET IDPrikaz=@idVPr, TypVyrobnihoDokladu=1, DokladPrikazu=@doklPrV WHERE ID=@idPZ
UPDATE dbo.TabPohybyZbozi_EXT SET _HDCAPI_PHident=@idPHIdent WHERE ID=@idPZ
IF (ISNULL(@sarze,N'')=N'')
SET @sarze = (SELECT _Prevod_PosledniSarze FROM dbo.TabStavSkladu_EXT WHERE ID=@idSS)
UPDATE dbo.TabPohybyZbozi_EXT SET _Vyroba_PrikazMnoz=@mnoz2, _Vyroba_Sarze=@sarze, _Vyroba_PaletList=@paletList WHERE ID=@idPZ
END -- @idPZ IS NOT NULL
END -- @idSS IS NOT NULL
END -- @idPrKVazby IS NOT NULL
END -- @idKZ IS NOT NULL
END -- @idDZ IS NOT NULL
END
CLOSE p
DEALLOCATE p
IF (@idDZ IS NOT NULL)
BEGIN
SET @hmotTesta = ISNULL( (SELECT SUM(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=@idDZ AND k.Sluzba=0), 0)
IF (@hmotTesta>0)
BEGIN
SET @hmotTesta = ROUND(@hmotTesta, 2)
IF NOT EXISTS(SELECT 1 FROM dbo.TabDokladyZbozi_EXT WHERE ID=@idDZ)
INSERT dbo.TabDokladyZbozi_EXT (ID) VALUES (@idDZ)
UPDATE dbo.TabDokladyZbozi_EXT SET _Vyroba_HmotTesta=@hmotTesta WHERE ID=@idDZ
END
EXEC dbo.hp_VypCenOZPolozek_IDDokladu @idDZ, 0
UPDATE dbo.TabDokladyZbozi SET BlokovaniEditoru=NULL WHERE ID=@idDZ
END
END -- @idDZ uz existuje ?
-- konec operace
SET @idPHIdent = @idPHIdentBak
IF (@idStartStopOp IS NOT NULL)
BEGIN
IF (@idDZ IS NOT NULL)
UPDATE dbo._TabVyroba_OperaceStartStop SET IDDokladOZ=@idDZ WHERE ID=@idStartStopOp
SELECT @idEvROp=IDEvidRozpracOper FROM dbo._TabVyroba_OperaceStartStop WHERE ID=@idStartStopOp
IF (@idEvROp IS NOT NULL)
BEGIN
SELECT @idPracovisteOld=IDPracoviste, @idZam=IDZamestnance FROM dbo.TabEvidRozpracOper WHERE ID=@idEvROp
IF (@idZam IS NULL)
BEGIN
IF (ISNULL( (SELECT COUNT(ID) FROM dbo.TabCisZam), 0)=1)
SELECT TOP(1) @idZam=ID FROM dbo.TabCisZam
IF (@idZam IS NOT NULL)
UPDATE dbo.TabEvidRozpracOper SET IDZamestnance=@idZam WHERE ID=@idEvROp
END
UPDATE dbo._hdc_ph_PrijataJsonData SET CisloZam=(SELECT Cislo FROM dbo.TabCisZam WHERE ID=@idZam) WHERE ID=@idJson AND CisloZam IS NULL
SET @skCasSek = DATEDIFF(s, @casStart, @casKonec)
UPDATE dbo.TabEvidRozpracOperR SET Mnoz_odv=1,
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=@idEvROp
UPDATE dbo.TabEvidRozpracOper SET CasUkonceni=@casKonec, CelkovyCas_T=0, CelkovyCas=DATEDIFF(s, @casStart, @casKonec) WHERE ID=@idEvROp
EXEC dbo.hp_EvidRozpracOper_AktualizaceCasuOper @IDEvidRozpracOper=@idEvROp, @CelkovyCas_S=@skCasSek, @KVO=1
IF (@idPracovisteOld IS NOT NULL)
EXEC dbo.hp_EvidRozpracOper_Uzavreni @IDEvidRozpracOper=@idEvROp, @GenerovatEvidenciOperaci=1
ELSE
EXEC dbo.hp_EvidRozpracOper_Uzavreni @IDEvidRozpracOper=@idEvROp, @GenerovatEvidenciOperaci=0
SET @idMzda=NULL
IF (1=(SELECT COUNT(ID) FROM dbo.TabEvidRozpracOperR WHERE IDEvidRozpracOper=@idEvROp))
SET @idMzda = (SELECT TOP(1) m.ID FROM dbo.TabPrikazMzdyAZmetky m INNER JOIN dbo.TabEvidRozpracOperR er ON (er.ID=m.IDEvidRozpracOperR)
WHERE er.IDEvidRozpracOper=@idEvROp)
UPDATE dbo._TabVyroba_OperaceStartStop SET CasKonec=@casKonec, Ukonceno=1, IDMzda=@idMzda WHERE ID=@idStartStopOp
UPDATE dbo._hdc_ph_PrijataJsonData SET IDMzda=@idMzda WHERE ID=@idJson
END
END
MERGE dbo.TabPrKVazby AS T
USING @PrKVazby AS S ON (T.ID=S.ID)
WHEN MATCHED THEN UPDATE SET T.Sklad=S.Sklad;
-- zapis pro pocitani spotreby testa
INSERT dbo._TabVyroba_TestoVyroba (IdPHIdent, IDPrikaz, IDDokladVydejMat, IDKmenZbozi, SkupZbo, RegCis, DatPriprava, VyrobniDen, Smena, DatVypousteni,
IDStrojPek, Viskozita, VodaLitry, MoukaHmot, MoukaSilo)
SELECT @idPHIdent, @idVPr, @idDZ, @dilec, SkupZbo, RegCis, @casStart, @vyrobniDen, @smena, @casKonec,
@idStroj, @viskoz, @vodaLitry, @moukaKgFin, @moukaSilo FROM dbo.TabKmenZbozi WHERE ID=@dilec
UPDATE dbo._hdc_ph_PrijataJsonData SET DatZpracovani=GETDATE(), IDDoklad=@idDZ WHERE ID=@idJson
IF OBJECT_ID(N'tempdb..#TabJSONData', N'U') IS NOT NULL
DROP TABLE #TabJSONData
END -- typ spotreba
-- ODPIS -----------------------------------------------------------------
IF (@typDokum='odpis')
BEGIN
SET @sklMat = N'211' -- odpis ze skladu Pekarna nebo z 311 - sklad Material ???????
SET @radaDZVydejka = N'242'
SET @dpz=4
SELECT @jsonString2=u2.vydej
FROM #TabJSONData d
CROSS APPLY OPENJSON (d.doc, '$')
WITH (akce NVARCHAR(50), [data] NVARCHAR(MAX) AS JSON) AS u
CROSS APPLY OPENJSON ([data])
WITH ( vydej NVARCHAR(MAX) AS JSON) AS u2
DELETE FROM #TabJSONData
INSERT #TabJSONData (doc) SELECT @jsonString2
DECLARE p CURSOR LOCAL FOR
SELECT u.skupzbo, u.regcis, u.sarze, u.paletovylist, u.mnozstvi, u.datazoneId
FROM #TabJSONData d
CROSS APPLY OPENJSON (d.doc, '$')
WITH ( skupzbo NVARCHAR(3), regcis NVARCHAR(30), sarze NVARCHAR(30), paletovyList NVARCHAR(30), mnozstvi NUMERIC(19,6), datazoneId INT) AS u
OPEN p
WHILE (1=1)
BEGIN
FETCH NEXT FROM p INTO @sz, @rc, @sarze, @paletList, @mnoz, @idPHIdent
IF (@@FETCH_STATUS<>0) BREAK
SET @paletList = ISNULL(@paletList, N'')
SET @sarze = ISNULL(@sarze, N'')
IF (@idDZ IS NULL)
BEGIN
EXEC dbo.hp_InsertHlavickyOZ @ident=@idDZ OUT, @Sklad=@sklMat, @DruhPohybu=@dpz, @RadaDokladu=@radaDZVydejka, @CisloOrg=0
SELECT @datumDZ=DatPorizeni, @menaDZ=Mena, @kurzDZ=Kurz, @kurzEDZ=KurzEuro, @jednM=JednotkaMeny, @vstC=VstupniCena, @parZnak=ParovaciZnak
FROM dbo.TabDokladyZbozi WHERE ID=@idDZ
UPDATE dbo.TabDokladyZbozi SET BlokovaniEditoru=0 WHERE ID=@idDZ
END
IF (@idDZ IS NOT NULL)
BEGIN
SET @idKZ = (SELECT ID FROM dbo.TabKmenZbozi WHERE SkupZbo=@sz AND RegCis=@rc)
IF (@idKZ IS NOT NULL)
BEGIN
SET @idSS = (SELECT ID FROM dbo.TabStavSkladu WHERE IDKmenZbozi=@idKZ AND IDSklad=@sklMat)
IF (@idSS IS NULL)
EXEC dbo.hp_InsertStavSkladu @IDKmen=@idKZ, @IDSklad=@sklMat, @IDZboSklad=@idSS OUT
IF (@idSS IS NOT NULL)
BEGIN
EXEC dbo.hp_InsertPolozkyOZ @ident=@idPZ OUT, @IDDoklad=@idDZ, @DruhPohybu=@dpz, @CisloOrg=0, @IDZboSklad=@idSS, @Mena=@menaDZ, @Kurz=@kurzDZ,
@JednotkaMeny=@jednM, @KurzEuro=@kurzEDZ, @SazbaSD=NULL, @SazbaDPH=NULL, @ZakazanoDPH=0, @VstupniCena=@vstC, @Mnozstvi=@mnoz
IF (@idPZ IS NOT NULL)
BEGIN
UPDATE dbo._hdc_ph_PrijataJsonData SET IdPHIdent=@idPHIdent WHERE ID=@idJson
IF NOT EXISTS(SELECT 1 FROM dbo.TabPohybyZbozi_EXT WHERE ID=@idPZ)
INSERT dbo.TabPohybyZbozi_EXT (ID) VALUES (@idPZ)
IF (ISNULL(@sarze,N'')=N'')
SET @sarze = (SELECT _Prevod_PosledniSarze FROM dbo.TabStavSkladu_EXT WHERE ID=@idSS)
UPDATE dbo.TabPohybyZbozi_EXT SET _HDCAPI_PHident=@idPHIdent, _Vyroba_Sarze=@sarze WHERE ID=@idPZ
IF (@paletList<>N'')
BEGIN
SET @idVCK = (SELECT ID FROM dbo.TabVyrCK WHERE IDKmenZbozi=@idKZ AND Nazev1=@paletList)
IF (@idVCK IS NULL)
EXEC dbo.hp_OZInsertVyrCK @IDVyrCK=@idVCK OUT, @IDKmenZbozi=@idKZ, @Nazev1=@paletList, @Selectem=0
SET @idVCS = (SELECT ID FROM dbo.TabVyrCS WHERE IDVyrCK=@idVCK AND IDStavSkladu=@idSS AND Nazev1=@paletList)
IF (@idVCS IS NULL)
EXEC dbo.hp_OZInsertVyrCS @IDVyrCS=@idVCS OUT, @IDVyrCK=@idVCK, @IDZboSklad=@idSS
INSERT dbo.TabVyrCP (IDPolozkaDokladu, IDVyrCis, Nazev, Mnozstvi) SELECT @idPZ, @idVCS, @sarze, @mnoz
END
END -- @idPZ IS NOT NULL
END -- @idSS IS NOT NULL
END -- @idKZ IS NOT NULL
END -- @idDZ IS NOT NULL
END
CLOSE p
DEALLOCATE p
IF (@idDZ IS NOT NULL)
BEGIN
EXEC dbo.hp_VypCenOZPolozek_IDDokladu @idDZ, 0
UPDATE dbo.TabDokladyZbozi SET BlokovaniEditoru=NULL WHERE ID=@idDZ
-- musim odepsat i z technologickeho skladu
EXEC dbo.hp_InsertHlavickyOZ @ident=@idDZDst OUT, @Sklad=@sklTechnicky, @DruhPohybu=@dpz, @RadaDokladu=@radaDZVydejka,
@Mena=@menaDZ, @CisloOrg=0, @DatumPorizeni=@datumDZ
IF (@idDZDst IS NOT NULL)
BEGIN
IF NOT EXISTS(SELECT 1 FROM dbo.TabDokladyZbozi_EXT WHERE ID=@idDZDst)
INSERT dbo.TabDokladyZbozi_EXT (ID) VALUES (@idDZDst)
UPDATE dbo.TabDokladyZbozi_EXT SET _Vyroba_IDPuvodniDoklad=@idDZ WHERE ID=@idDZDst
SELECT @datReal=DatRealizace FROM dbo.TabDokladyZbozi WHERE ID=@idDZ
EXEC dbo.hp_generuj_navazny_doklad @IDDokladDst=@idDZDst, @IDDokladSrc=@idDZ, @CisloOrgCil=0, @MUCil=NULL, @MenaCil=@menaDZ,
@KurzCil=NULL, @JednotkaMenyCil=NULL, @KurzEuroCil=NULL, @CisloZakCil=NULL, @NOkruhCil=NULL,
@StredNakladCil=NULL, @StredVynosCil=NULL, @FormaDopravyCil=NULL, @VozidloCil=NULL, @ObjednavkaCil=NULL,
@PopisDodavkyCil=NULL, @NavaznyDobropisCil=NULL, @ZamestnanecCil=NULL, @DodFakCil=NULL, @Nasobek=1,
@SlevaCil=NULL, @VytvaretDokladovouVazbu=0, @VytvaretPolozkovouVazbu=0, @ChybaSkladana=@errMsg OUT,
@KopirovaniDokladu=1
IF EXISTS(SELECT 1 FROM dbo.TabPohybyZbozi WHERE IDDoklad=@idDZDst) AND EXISTS(SELECT 1 FROM dbo.TabDokladyZbozi WHERE Realizovano=1 AND ID=@idDZ)
EXEC dbo.hp_Realizuj_Vydej @ID=@idDZDst, @DatumRealizace=@datReal, @Uzivatel=0, @Hlidat=0, @BylaChyba=@bChyba OUT, @RealMnoz=1, @RealFin=1
END
UPDATE dbo._hdc_ph_PrijataJsonData SET DatZpracovani=GETDATE(), IDDoklad=@idDZ WHERE ID=@idJson
END
IF OBJECT_ID(N'tempdb..#TabJSONData', N'U') IS NOT NULL
DROP TABLE #TabJSONData
END -- typ odpis
END -- akce: vyroba_spotreba
-- END: SPOTREBA/ODPIS
-- BEGIN: OBJEDNAVKA
IF (@akce=N'objednavka')
BEGIN
-- smaz pomocnou tabulku
DELETE FROM #TabJSONData
INSERT #TabJSONData (doc) SELECT @jsonString
DELETE FROM @TabPHObj
DECLARE p CURSOR LOCAL FOR
SELECT u2.datazoneId, u3.datazoneId, u2.paletovyList, u2.created, u2.skupzbo, u2.regcis, u3.sarze, u3.mnozstvi, u2.typ, u2.subtyp
FROM #TabJSONData d
CROSS APPLY OPENJSON (d.doc, '$')
WITH ([data] NVARCHAR(MAX) AS JSON) AS u
CROSS APPLY OPENJSON ([data])
WITH (typ NVARCHAR(50), subtyp NVARCHAR(50), datazoneId INT, skupzbo NVARCHAR(3), regcis NVARCHAR(30), paletovyList NVARCHAR(50), created DATETIME, items NVARCHAR(MAX) AS JSON) AS u2
CROSS APPLY OPENJSON (items)
WITH ( datazoneId INT, heliosId INT, sarze NVARCHAR(30), mnozstvi NUMERIC(19,6) ) AS u3
OPEN p
WHILE (1=1)
BEGIN
FETCH NEXT FROM p INTO @idPHIdent, @idPHIdent2, @paletList, @datPorizeni, @sz, @rc, @sarze, @mnoz, @typDokum, @subtypDokum
IF (@@FETCH_STATUS<>0) BREAK
INSERT dbo._TabVyroba_Objednavky (IDPrijataDataJson, IdPHIdent, IdPHIdent2, SkupZbo, RegCis, PaletovyList, Sarze, Mnozstvi, DatPorizeni)
SELECT @idJson, @idPHIdent, @idPHIdent2, @sz, @rc, @paletList, @sarze, @mnoz, @datPorizeni
SET @idPHObj = SCOPE_IDENTITY()
INSERT @TabPHObj (ID, IDPHIdent) VALUES (@idPHObj, @idPHIdent)
IF (@typDokum='micharna') AND (@subtypDokum='nocni')
UPDATE dbo._TabVyroba_Objednavky SET NocniObjednavka=1 WHERE ID=@idPHObj
END
CLOSE p
DEALLOCATE p
IF (@typDokum='micharna') AND (@subtypDokum='nocni') AND EXISTS (SELECT 1 FROM @TabPHObj)
BEGIN
SET @idDZ = NULL
SET @prevodka = 1
SET @radaDZPrevodV = N'231'
SET @dpz = 4
DECLARE p CURSOR LOCAL FOR
SELECT ID, IDPHIdent FROM @TabPHObj
OPEN p
WHILE (1=1)
BEGIN
FETCH NEXT FROM p INTO @idPHObj, @idPHIdent
IF (@@FETCH_STATUS<>0) BREAK
IF (@idDZ IS NULL)
BEGIN
EXEC dbo.hp_InsertHlavickyOZ @ident=@idDZ OUT, @Sklad=@sklMat, @DruhPohybu=@dpz, @RadaDokladu=@radaDZPrevodV, @CisloOrg=0
UPDATE dbo.TabDokladyZbozi SET DruhPohybuPrevod=0, TypPrevodky=N'281', IdSkladPrevodu=@sklPek, PrevodRealizovat=1 WHERE ID=@idDZ
SELECT @menaDZ=Mena, @kurzDZ=Kurz, @kurzEDZ=KurzEuro, @jednM=JednotkaMeny, @vstC=VstupniCena, @parZnak=ParovaciZnak FROM dbo.TabDokladyZbozi WHERE ID=@idDZ
UPDATE dbo.TabDokladyZbozi SET BlokovaniEditoru=0 WHERE ID=@idDZ
END
IF (@idDZ IS NOT NULL)
BEGIN
SELECT @sz=SkupZbo, @rc=RegCis, @paletList=PaletovyList, @sarze=Sarze FROM dbo._TabVyroba_Objednavky WHERE ID=@idPHObj
SET @sarze = ISNULL(@sarze, N'')
SET @idKZ = (SELECT ID FROM dbo.TabKmenZbozi WHERE SkupZbo=@sz AND RegCis=@rc)
IF (@idKZ IS NOT NULL)
BEGIN
SET @idSS = (SELECT ID FROM dbo.TabStavSkladu WHERE IDKmenZbozi=@idKZ AND IDSklad=@sklMat)
IF (@idSS IS NULL)
EXEC dbo.hp_InsertStavSkladu @IDKmen=@idKZ, @IDSklad=@sklMat, @IDZboSklad=@idSS OUT
IF (@idSS IS NOT NULL)
BEGIN
EXEC dbo.hp_InsertPolozkyOZ @ident=@idPZ OUT, @IDDoklad=@idDZ, @DruhPohybu=@dpz, @CisloOrg=0, @IDZboSklad=@idSS, @Mena=@menaDZ, @Kurz=@kurzDZ,
@JednotkaMeny=@jednM, @KurzEuro=@kurzEDZ, @SazbaSD=NULL, @SazbaDPH=NULL, @ZakazanoDPH=0, @VstupniCena=@vstC, @Mnozstvi=@mnoz
IF (@idPZ IS NOT NULL)
BEGIN
UPDATE dbo.TabPohybyZbozi_EXT SET _HDCAPI_PHident=@idPHIdent WHERE ID=@idPZ
IF (@@ROWCOUNT=0)
INSERT dbo.TabPohybyZbozi_EXT (ID, _HDCAPI_PHident) SELECT @idPZ, @idPHIdent
IF (@sarze<>N'')
BEGIN
IF NOT EXISTS(SELECT 1 FROM dbo.TabKmenZbozi_EXT WHERE ID=@idKZ)
INSERT dbo.TabKmenZbozi_EXT (ID) SELECT @idKZ
UPDATE dbo.TabKmenZbozi_EXT SET _Prevod_PosledniSarze=@sarze WHERE ID=@idKZ
END
SET @idVCP = NULL
IF (@paletList<>N'')
BEGIN
SET @idVCK = (SELECT ID FROM dbo.TabVyrCK WHERE IDKmenZbozi=@idKZ AND Nazev1=@paletList)
IF (@idVCK IS NULL)
EXEC dbo.hp_OZInsertVyrCK @IDVyrCK=@idVCK OUT, @IDKmenZbozi=@idKZ, @Nazev1=@paletList, @Selectem=0
SET @idVCS = (SELECT ID FROM dbo.TabVyrCS WHERE IDVyrCK=@idVCK AND IDStavSkladu=@idSS AND Nazev1=@paletList)
IF (@idVCS IS NULL)
EXEC dbo.hp_OZInsertVyrCS @IDVyrCS=@idVCS OUT, @IDVyrCK=@idVCK, @IDZboSklad=@idSS
INSERT dbo.TabVyrCP (IDPolozkaDokladu, IDVyrCis, Nazev, Mnozstvi) SELECT @idPZ, @idVCS, @sarze, @mnoz
SET @idVCP = SCOPE_IDENTITY()
END
INSERT dbo._TabVyroba_Objednavky_Pol (IDHlava, IDDokladOZ, IDPohybOZ, IDVyrCP, Mnozstvi, Sarze)
SELECT @idPHObj, @idDZ, @idPZ, @idVCP, @mnoz, @paletList
SET @idPHObjPol = SCOPE_IDENTITY()
END -- @idPZ IS NOT NULL
END -- @idSS IS NOT NULL
END -- @idKZ IS NOT NULL
END -- @idDZ IS NOT NULL
END
CLOSE p
DEALLOCATE p
IF (@idDZ IS NOT NULL)
BEGIN
UPDATE dbo.TabDokladyZbozi SET BlokovaniEditoru=NULL WHERE ID=@idDZ
SET @logTyp=3
SET @logInt=@idDZ
SET @logStr = @parZnak
SET @log4Mail = 1
SET @logText = N'Nelze realizovat v<>dejka no<6E>n<EFBFBD> p<>evodky'
SET @aktDatum = GETDATE()
EXEC dbo.hp_Realizuj_Vydej @ID=@idDZ, @DatumRealizace=@aktDatum, @Uzivatel=0, @Hlidat=0, @BylaChyba=@bChyba OUT
IF (@bChyba=0)
BEGIN
SET @logTyp=0
SET @logInt=0
SET @logStr = N''
SET @log4Mail = 0
SET @logText = N''
END
END
END -- @subtypDokum='nocni'
UPDATE dbo._hdc_ph_PrijataJsonData SET DatZpracovani=GETDATE(), Blokovano=0 WHERE ID=@idJson
END -- akce: objednavka
-- END: OBJEDNAVKA
-- BEGIN: ZAHAJENI OPERACE
IF (@akce=N'vyroba_zacatek')
BEGIN
-- smaz pomocnou tabulku
DELETE FROM #TabJSONData
INSERT #TabJSONData (doc) SELECT @jsonString
IF (1=ISNULL( (SELECT COUNT(ID) FROM dbo.TabCisZam), 0))
UPDATE dbo._hdc_ph_PrijataJsonData SET CisloZam=(SELECT TOP(1)Cislo FROM dbo.TabCisZam) WHERE ID=@idJson AND CisloZam IS NULL
ELSE
UPDATE dbo._hdc_ph_PrijataJsonData SET CisloZam=999999 WHERE ID=@idJson AND CisloZam IS NULL
SET @cisZam = NULL
SET @idZam = NULL
SELECT @typDokum=u2.typ, @idVPr=u3.heliosId, @idPHIdent=u2.datazoneId, @idPracoviste=u4.idprac, @idStroj=u4.heliosId, @statusStroje=u3.[status],
@casStart=u3.zacatek, @sz=u3.skupzbo, @rc=u3.regcis, @idPHIdent2=u4.datazoneId
FROM #TabJSONData d
CROSS APPLY OPENJSON (d.doc, '$')
WITH ([data] NVARCHAR(MAX) AS JSON) AS u
CROSS APPLY OPENJSON ([data])
WITH ( typ NVARCHAR(50), prikaz NVARCHAR(MAX) AS JSON, datazoneId INT, stroj NVARCHAR(MAX) AS JSON) AS u2
CROSS APPLY OPENJSON (prikaz)
WITH ( heliosId INT, datazoneId INT, skupzbo NVARCHAR(3), regcis NVARCHAR(30), [status] NVARCHAR(20), zacatek DATETIME, konec DATETIME ) AS u3
CROSS APPLY OPENJSON (stroj)
WITH ( heliosId INT, datazoneId INT, idprac INT, kod NVARCHAR(20) ) AS u4
IF (@cisZam IS NULL)
SELECT @cisZam=CisloZam FROM dbo._hdc_ph_PrijataJsonData WHERE ID=@idJson
IF (@cisZam IS NOT NULL)
SELECT @idZam=ID FROM dbo.TabCisZam WHERE Cislo=@cisZam
IF (@idVPr IS NOT NULL) AND (@idPracoviste IS NOT NULL)
BEGIN
-- INSERT dbo._hdc_ph_Log (Typ, LogText, IntValue) SELECT 1, N'Zpracovavam PrijataJsonData jako Vyroba_zacatek', @idJson
SET @doklPrP = NULL
SET @altPrP = NULL
SELECT @cisloPrikazu = RadaPrikaz FROM dbo.TabPrikaz WHERE ID=@idVPr
SET @idStartStopOp = (SELECT ID FROM dbo._TabVyroba_OperaceStartStop WHERE IDPrijataDataJson=@idJson AND IdPHIdent=@idPHIdent)
IF (@idStartStopOp IS NULL)
BEGIN
INSERT dbo._TabVyroba_OperaceStartStop (IDPrijataDataJson, IdPHIdent, IdPHIdent2, IDPrikaz, SkupZbo, RegCis, IDStroj, IDPracoviste, CasStart)
SELECT @idJson, @idPHIdent, @idPHIdent2, @idVPr, @sz, @rc, @idStroj, @idPracoviste, @casStart
SET @idStartStopOp = SCOPE_IDENTITY()
END
IF EXISTS (SELECT 1 FROM dbo._TabVyroba_OperaceStartStop WHERE IDPrijataDataJson=@idJson AND IDEvidRozpracOper IS NULL)
BEGIN
SELECT @strojPec = Nazev FROM dbo.TabCisStroju WHERE ID=@idStroj
SET @doklPrP = NULL
IF (@sz='701')
SELECT TOP(1) @doklPrP=Doklad, @altPrP=Alt, @idPracoviste=pracoviste FROM dbo.TabPrPostup
WHERE IDOdchylkyDo IS NULL AND IDPrikaz=@idVPr AND nazev=N'M<EFBFBD>ch<EFBFBD>n<EFBFBD>'
IF (@doklPrP IS NOT NULL)
BEGIN
INSERT dbo.TabEvidRozpracOper (IDZamestnance, IDPracoviste, IDStroje, CasZahajeni, Poznamka)
SELECT @idZam, @idPracoviste, NULL, @casStart, N'M<EFBFBD>ch<EFBFBD>n<EFBFBD> pro stroj ' + ISNULL(@strojPec, N'') + N' *** p<><70>kaz ' + ISNULL(@cisloPrikazu, N'')
SET @idEvROp = SCOPE_IDENTITY()
INSERT dbo.TabEvidRozpracOperR (IDEvidRozpracOper, IDPrikaz, DokladPrPostup, AltPrPostup, Mnoz_odv) SELECT @idEvROp, @idVPr, @doklPrP, @altPrP, 1
UPDATE dbo._TabVyroba_OperaceStartStop SET IDEvidRozpracOper=@idEvROp, DokladPrP=@doklPrP, AltPrP=@altPrP WHERE ID=@idStartStopOp
UPDATE dbo._hdc_ph_PrijataJsonData SET DatZpracovani=GETDATE(), Blokovano=0, IDEvidRozpOp=@idEvROp WHERE ID=@idJson
END
END
END
END -- akce: vyroba_zacatek
-- END: ZAHAJENI OPERACE
IF (@tranPred=0) AND (@@TRANCOUNT>0)
COMMIT TRAN
END TRY
BEGIN CATCH
IF (@tranPred=0) AND (@@TRANCOUNT>0)
ROLLBACK TRAN
SET @errMsg = ERROR_PROCEDURE() + N'/r.' + CONVERT(nvarchar, ERROR_LINE()) + N' >> ' + ERROR_MESSAGE()
UPDATE dbo._hdc_ph_PrijataJsonData SET PosledniChyba=@errMsg WHERE ID=@idJson
IF (@logTyp>0)
INSERT dbo._hdc_ph_Log (Typ, LogText, IntValue, StrValue, IdJsonData, ForMail)
SELECT @logTyp, ISNULL(@logText, N'') + NCHAR(13)+NCHAR(10) + @errMsg, @logInt, @logStr, @idJson, @log4Mail
ELSE
INSERT dbo._hdc_ph_Log (Typ, LogText, IdJsonData, ForMail) SELECT 1, N'Chyba zpracovani PrijataJsonData: ' + @errMsg, @idJson, 1
END CATCH
SET @logTyp=0
END
CLOSE j
DEALLOCATE j
-- pro jistotu
IF OBJECT_ID(N'tempdb..#TabJSONData', N'U') IS NOT NULL
DROP TABLE #TabJSONData