Files
Rootvin-pluginHDCRTN/_sql/ep_Vyroba_Doklady_Micharna.sql
2025-06-10 19:43:13 +02:00

1624 lines
71 KiB
Transact-SQL
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 !!
-- sklady/rady lze ovlivnit nastavenim tabulky #HDCTabDefiniceProZapisJSON
-- CREATE TABLE #HDCTabDefiniceProZapisJSON (HlavniSkladMat NVARCHAR(30), SkladVyrobaPekarna NVARCHAR(30), TechnologickySklad NVARCHAR(30), SkladVyrobky NVARCHAR(30),
-- RadaTechnologickyVydej NVARCHAR(3) )
SET NOCOUNT ON
DECLARE
@tranPred INT,
@cnt INT,
@errMsg NVARCHAR(500),
@bChyba BIT,
@iChyba INT,
@iTemp 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,
@sklMat NVARCHAR(30)=N'311',
@sklTechnicky NVARCHAR(30),
@sklPek NVARCHAR(30),
@sklProFin NVARCHAR(30)=N'312',
@sklProPolo NVARCHAR(30)=N'311',
@radaTechVydej NVARCHAR(30)=N'223',
@radaTechPrijem NVARCHAR(30)=N'',
@sklVydejMat NVARCHAR(30),
@sklProVydej NVARCHAR(30),
@radaDZVydejka NVARCHAR(3)=NULL,
@radaDZPrevodV NVARCHAR(3)=NULL,
@prevodka BIT=0,
@parZnak NVARCHAR(20)
DECLARE
@idPHIdent BIGINT,
@idPHIdentBak BIGINT,
@idPHIdent2 BIGINT,
@idPHObj INT,
@idPHObjPol INT
DECLARE
@datPorizeni DATETIME,
@idVPr INT,
@idZakazModif INT,
@radaVPr NVARCHAR(10),
@cisloPrikazu NVARCHAR(20),
@idVPrNizsi INT,
@radaVPrNizsi NVARCHAR(10),
@idVPrVyssi INT,
@radaVPrVyssi NVARCHAR(10),
@dilec INT,
@dilecVyssi 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,
@jsemMouka BIT,
@hmotTesta NUMERIC(19,6),
@idMzda INT,
@idMezd NVARCHAR(max),
@nazevDilce NVARCHAR(100),
@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
@mnDavkaPred NUMERIC(19,6),
@mnDavkaPo NUMERIC(19,6),
@procZtrat NUMERIC(19,6),
@mnBezZtrat NUMERIC(19,6),
@mnSeZtrat NUMERIC(19,6)
DECLARE
@doklKV INT,
@idPrKVazby INT,
@doklPrV INT,
@altPrV NCHAR(1),
@oper NVARCHAR(4),
@popisOper NVARCHAR(100),
@jeOdvOperace BIT,
@pozice NVARCHAR(100),
@idKZ INT,
@nazev1 NVARCHAR(100),
@idVCK INT,
@idVCS INT,
@idVCP INT,
@sz NVARCHAR(3),
@sz2 NVARCHAR(3),
@rc NVARCHAR(30),
@rc2 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),
@mnozEvid NUMERIC(19,6),
@idVazVP INT,
@mnozVyssiReq NUMERIC(19,6),
@mnozVyssiOdv NUMERIC(19,6),
@mnozVyssiOdvSum 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
@retVal INT,
@RespekExistDoklady BIT=0,
@NekontrolMnozOdvedFinal BIT,
@idUziv INT
DECLARE
@idKZv INT,
@idKZn INT,
@idKZn2 INT,
@idPrKVazbyPolot INT,
@idPrKVazbyNova INT,
@novaPriorita INT,
@mnozVaz NUMERIC(19,6),
@mnozZadVaz NUMERIC(19,6),
@procZtrVaz NUMERIC(19,6),
@idOdchylVaz 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)
DECLARE @TabPHObj TABLE (ID INT NOT NULL, IDPHIdent BIGINT, IDSklad NVARCHAR(30) )
DECLARE @PrKVazby TABLE (ID INT NOT NULL, Sklad NVARCHAR(30), IDKmenZbozi INT, Mnozstvi NUMERIC(19,6) DEFAULT 0.0 )
DECLARE @TabPolozky TABLE (ID INT IDENTITY(1,1) NOT NULL, IDKmen INT, Sarze NVARCHAR(100), PaletList NVARCHAR(100) )
DECLARE @TabIDMzdy TABLE (ID INT NOT NULL)
DECLARE @TabNocniPrevodky TABLE (IDSklad NVARCHAR(30), IDDoklad INT)
-- tabulky pro generovani vydejky a odvodu
DROP TABLE IF EXISTS #TabOdved
CREATE TABLE #TabOdved (
ID INT IDENTITY NOT NULL,
IDPrikaz INT NOT NULL,
IDDilec INT NOT NULL,
IDZakazModif INT NULL,
IDZakazka INT NULL,
maxMnozstvi NUMERIC(19,6) NULL,
mnozstvi NUMERIC(19,6) NOT NULL,
EvidJednotka NUMERIC(19,6) NOT NULL,
Sklad NVARCHAR(30) NULL,
KodUmisteni NVARCHAR(15) NULL,
IDPohZbo INT NULL,
PomVnoreni INT NULL,
StavPrikazu TINYINT NULL,
PRIMARY KEY(ID)
)
DROP TABLE IF EXISTS #TabOdved_IDMzdy
CREATE TABLE #TabOdved_IDMzdy (IDPrikaz int, IDMzdy int)
DROP TABLE IF EXISTS #TabVyrCisProGenOdv
CREATE TABLE #TabVyrCisProGenOdv (
ID INT IDENTITY NOT NULL,
IDOdvedeni INT NOT NULL,
IDPrikaz INT NOT NULL,
VyrCislo NVARCHAR(100) NOT NULL,
Mnozstvi NUMERIC(19,6) NOT NULL DEFAULT 0,
MaxMnozstvi NUMERIC(19,6) NULL,
IDVyrCP INT NULL,
PRIMARY KEY(ID)
)
DROP TABLE IF EXISTS #TabPolotovProGenOdv
CREATE TABLE #TabPolotovProGenOdv (
ID INT IDENTITY NOT NULL,
IDOdvedeni INT NOT NULL,
IDPrikaz INT NOT NULL,
Doklad INT NOT NULL,
IDDilec INT NOT NULL,
Mnozstvi NUMERIC(19,6) NOT NULL,
MaxMnozstvi NUMERIC(19,6) NULL,
PRIMARY KEY(ID)
)
DROP TABLE IF EXISTS #TabGenPrijem
CREATE TABLE #TabGenPrijem (ID INT NOT NULL, PRIMARY KEY(ID))
DROP TABLE IF EXISTS #TabPrKVazbyGen
CREATE TABLE #TabPrKVazbyGen (
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 NVARCHAR(max) 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,
MJ NVARCHAR(10) 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)
)
DROP TABLE IF EXISTS #TabPrKVazbyGen_IDMzdy
CREATE TABLE #TabPrKVazbyGen_IDMzdy (IDPrikaz int, Doklad int, IDMzdy int)
DROP TABLE IF EXISTS #TabPrKVazbyGenVC
CREATE TABLE #TabPrKVazbyGenVC (
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 #TabGenRezVyd
CREATE TABLE #TabGenRezVyd (ID int NOT NULL, PRIMARY KEY (ID))
-- reseed
SELECT @cnt = ISNULL( (SELECT MAX(ID) FROM dbo.TabPohybyZbozi), 0)
DBCC CHECKIDENT (TabPohybyZbozi, RESEED, @cnt)
SELECT @cnt = ISNULL( (SELECT MAX(ID) FROM dbo.TabDokladyZbozi), 0)
DBCC CHECKIDENT (TabDokladyZbozi, RESEED, @cnt)
SELECT @cnt = ISNULL( (SELECT MAX(ID) FROM dbo.TabPrikazMzdyAZmetky), 0)
DBCC CHECKIDENT (TabPrikazMzdyAZmetky, RESEED, @cnt)
SELECT @cnt = ISNULL( (SELECT MAX(ID) FROM dbo.TabEvidRozpracOper), 0)
DBCC CHECKIDENT (TabEvidRozpracOper, RESEED, @cnt)
SELECT @cnt = ISNULL( (SELECT MAX(ID) FROM dbo.TabEvidRozpracOperR), 0)
DBCC CHECKIDENT (TabEvidRozpracOperR, RESEED, @cnt)
-- vytvor pomocnou tabulku
DROP TABLE IF EXISTS #TabJSONData
CREATE TABLE #TabJSONData (ID INT IDENTITY(1,1) NOT NULL, doc NVARCHAR(max))
-- odlinkuj neplatna data
UPDATE dbo._hdc_ph_PrijataJsonData SET IDDoklad=NULL WHERE IDDoklad NOT IN (SELECT ID FROM dbo.TabDokladyZbozi)
UPDATE dbo._hdc_ph_PrijataJsonData SET IDMzda=NULL WHERE IDMzda NOT IN (SELECT ID FROM dbo.TabPrikazMzdyAZmetky)
IF OBJECT_ID(N'tempdb..#HDCTabDefiniceProZapisJSON', N'U') IS NOT NULL
SELECT TOP(1) @sklMat=HlavniSkladMat, @sklPek=SkladVyrobaPekarna, @sklTechnicky=TechnologickySklad, @radaTechVydej=RadaTechnologickyVydej, @sklProFin=SkladVyrobky
FROM #HDCTabDefiniceProZapisJSON
DROP TABLE IF EXISTS #HDCTabDefiniceProZapisJSON
IF (@sklMat IS NULL)
SELECT @sklMat=Cislo FROM dbo.TabStrom WHERE Nazev=N'Hlavn<EFBFBD> sklad - Materi<72>l'
IF (@sklMat IS NULL)
SET @sklMat=N'311'
SET @sklProPolo = @sklMat
IF (@sklTechnicky IS NULL)
SELECT @sklTechnicky=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technolog%ne<6E><65>%' AND CisloStr LIKE N'2%'
IF (@sklTechnicky IS NULL)
SET @sklTechnicky=N'261'
IF (@sklPek IS NULL)
SELECT @sklPek=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'V<EFBFBD>roba - Pek<65>rna'
IF (@sklPek IS NULL)
SET @sklPek=N'211'
IF (@sklTechnicky IS NULL) AND (@sklPek IS NOT NULL)
SET @sklTechnicky=@sklPek
IF (@sklProFin IS NULL)
SELECT @sklProFin=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Hlavn<EFBFBD> sklad - V<>robky / Zbo<62><6F>'
IF (@sklProFin IS NULL)
SET @sklProFin = N'312'
IF (@radaTechVydej IS NOT NULL)
SET @radaDZVydejka = @radaTechVydej
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 (@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''
AND DatPorizeni>CONVERT(datetime,N'18.3.2025',104)
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
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
UPDATE dbo._hdc_ph_PrijataJsonData SET PosledniChyba=NULL WHERE ID=@idJson
SET @logTyp = 0
SET @logInt = NULL
SET @logStr = N''
SET @log4Mail = 0
SET @logText = N''
DELETE FROM #TabJSONData
INSERT #TabJSONData (doc) SELECT @jsonString
BEGIN TRY
SET @tranPred = @@TRANCOUNT
IF (@tranPred=0)
BEGIN TRAN
-- BEGIN: SPOTREBA/ODPIS
IF (@akce=N'vyroba_spotreba')
BEGIN
DELETE FROM @PrKVazby
SET @radaDZVydejka = N'223'
SELECT @typDokum=u2.typ, @subtypDokum=ISNULL(u2.subtyp, N''), @idPHIdent=u2.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), subtyp NVARCHAR(50), datazoneId BIGINT) AS u2;
IF (@idPHIdent IS NOT NULL)
UPDATE dbo._hdc_ph_PrijataJsonData SET IdPHIdent=@idPHIdent WHERE ID=@idJson;
-- SPOTREBA PLUS UKONCENI OPERACE MICHANI ----------------------------------------------------
IF (@typDokum='vyroba')
BEGIN
SET @mnozEvid = NULL
IF (@subtypDokum='michani')
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 BIGINT, 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 BIGINT, skupzbo NVARCHAR(3), regcis NVARCHAR(30), zacatek DATETIME, konec DATETIME, viskozita TINYINT, silo TINYINT) u3;
END -- michani
IF (@subtypDokum='maceni') OR (@subtypDokum='baleni')
BEGIN
SELECT @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 BIGINT, stroj NVARCHAR(MAX) AS JSON) AS u2;
SELECT @idVPr=u3.heliosId, @casStart=u3.zacatek, @casKonec=u3.konec
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 BIGINT, skupzbo NVARCHAR(3), regcis NVARCHAR(30), zacatek DATETIME, konec DATETIME) u3;
END -- maceni/baleni
-- je prikaz zadany ? Pokud ne, pokracuj na dalsi json
IF EXISTS (SELECT 1 FROM dbo.TabPrikaz WHERE ID=@idVPr AND StavPrikazu NOT IN (30))
BEGIN
UPDATE dbo._hdc_ph_PrijataJsonData SET DatZpracovani=GETDATE(), PosledniChyba=N'P<EFBFBD>ikaz je ji<6A> uzav<61>en' WHERE ID=@idJson
CONTINUE
END
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, @idZakazModif=IDZakazModif, @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
DELETE FROM @TabPolozky
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'921') AND (@rc=N'001000')
SET @vodaLitry = @mnoz
IF (@sz=N'101') AND (@nazev1 LIKE N'%mouka%') and (@rc IN (N'111000',N'112000'))
BEGIN
SET @moukaKgFin = @mnoz
SET @moukaKgNorma = @mnoz2
END
IF EXISTS(SELECT 1 FROM dbo.TabPrKVazby WHERE IDPrikaz=@idVPr AND vyssi=@dilec AND nizsi=@idKZ AND IDOdchylkyDo IS NULL AND Priorita=0 AND Mnozstvi<>@mnoz)
UPDATE dbo.TabPrKVazby SET Mnozstvi=@mnoz, mnozstviSeZtratou=@mnoz
WHERE IDPrikaz=@idVPr AND vyssi=@dilec AND nizsi=@idKZ AND IDOdchylkyDo IS NULL AND Priorita=0
SET @idKZ = (SELECT ID FROM dbo.TabKmenZbozi WHERE SkupZbo<>N'921' AND SkupZbo=@sz AND RegCis=@rc AND (Material=1 OR Dilec=1) AND Sluzba=0)
IF (@idKZ IS NOT NULL)
BEGIN
INSERT @TabPolozky (IDKmen, Sarze, PaletList) SELECT @idKZ, @sarze, @paletList
-- 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)
EXEC @idPrKVazby=dbo.hp_NewPozadavek_TabPrKVazby @IDPrikaz=@idVPr, @IDKmenZbozi=@idKZ, @Mnozstvi=@mnoz, @Mnoz_zad=@mnoz, @VychoziSklad=@sklTechnicky
IF (@idPrKVazby IS NOT NULL)
BEGIN
INSERT @PrKVazby (ID, Sklad, IDKmenZbozi, Mnozstvi)
SELECT ID, Sklad, @idKZ, @mnoz 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
END -- @idPrKVazby IS NOT NULL
END -- @idKZ IS NOT NULL
END
CLOSE p
DEALLOCATE p
SET @kv = (SELECT * FROM @PrKVazby FOR XML AUTO)
IF (@subtypDokum=N'michani') OR (@subtypDokum=N'')
BEGIN
SET @mnozEvid = ISNULL(@mnozEvid, 1)
-- UPDATE #tabOdved SET mnozstvi=CASE WHEN @NekontrolMnozOdvedFinal=0 AND mnozstvi+@mnoz>maxMnozstvi THEN maxMnozstvi ELSE mnozstvi+@mnoz END WHERE IDPrikaz=@idVPr
UPDATE #tabOdved SET mnozstvi=@mnoz WHERE IDPrikaz=@idVPr
IF (@@ROWCOUNT=0)
INSERT INTO #tabOdved (IDPrikaz, IDDilec, IDZakazModif, IDZakazka, maxMnozstvi, EvidJednotka, mnozstvi, sklad, StavPrikazu)
SELECT P.ID,
CASE WHEN ISNULL(ParKZ.OdvadetNaZaklVari,0)=0 THEN P.IDTabKmen ELSE KZ.IDKusovnik END,
ZMD.IDZakazModif,
P.IDZakazka,
NULL, -- nekontrolovat odvedene mnozstvi
P.EvidJednotka,
@mnozEvid, -- u michani by mela byt vzdy jen jedna davka
@sklTechnicky,
P.StavPrikazu
FROM dbo.TabPrikaz P
INNER JOIN dbo.TabKmenZbozi KZ ON (KZ.ID=P.IDTabKmen)
LEFT OUTER JOIN dbo.TabZakazModifDilce ZMD ON (ZMD.IDZakazModif=P.IDZakazModif AND ZMD.IDKmenZbozi=KZ.ID)
LEFT OUTER JOIN dbo.TabParKmZ ParKZ ON (ParKZ.IDKmenZbozi=P.IDTabKmen)
WHERE P.ID=@idVPr
END
ELSE
BEGIN -- ne michani
-- UPDATE #tabOdved SET mnozstvi=CASE WHEN @NekontrolMnozOdvedFinal=0 AND mnozstvi+@mnoz>maxMnozstvi THEN maxMnozstvi ELSE mnozstvi+@mnoz END WHERE IDPrikaz=@idVPr
UPDATE #tabOdved SET mnozstvi=@mnoz WHERE IDPrikaz=@idVPr
IF (@@ROWCOUNT=0)
INSERT INTO #tabOdved (IDPrikaz, IDDilec, IDZakazModif, IDZakazka, maxMnozstvi, EvidJednotka, mnozstvi, sklad, StavPrikazu)
SELECT P.ID,
CASE WHEN ISNULL(ParKZ.OdvadetNaZaklVari,0)=0 THEN P.IDTabKmen ELSE KZ.IDKusovnik END,
ZMD.IDZakazModif,
P.IDZakazka,
CASE WHEN @NekontrolMnozOdvedFinal=1 THEN NULL ELSE P.kusy_zive END,
P.EvidJednotka,
@mnoz,
P.sklad,
P.StavPrikazu
FROM dbo.TabPrikaz P
INNER JOIN dbo.TabKmenZbozi KZ ON (KZ.ID=P.IDTabKmen)
LEFT OUTER JOIN dbo.TabZakazModifDilce ZMD ON (ZMD.IDZakazModif=P.IDZakazModif AND ZMD.IDKmenZbozi=KZ.ID)
LEFT OUTER JOIN dbo.TabParKmZ ParKZ ON (ParKZ.IDKmenZbozi=P.IDTabKmen)
WHERE P.ID=@idVPr AND
(CASE WHEN @NekontrolMnozOdvedFinal=0 AND @mnoz>P.kusy_zive THEN P.kusy_zive ELSE @mnoz END)>0
END
SET @odv = (SELECT * FROM #TabOdved FOR XML AUTO)
SET @RespekExistDoklady=0
SET @NekontrolMnozOdvedFinal=1
INSERT INTO #TabPrKVazbyGen (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,
PrKV.mnoz_zad*O.mnozstvi/P.kusy_zad
- CASE WHEN @RespekExistDoklady=1 THEN (PrKV.VydanoRefMnoz-PrKV.Mnoz_nepotrebne)
+ (SELECT ISNULL(SUM(PZ2.prepmnozstvi*(PZ2.mnozstvi-PZ2.MnOdebrane) * PrKV2.RefMnoz / PrKV2.mnoz_zad), 0.0)
FROM TabPohybyZbozi PZ2
INNER JOIN TabDokladyZbozi DZ2 ON (DZ2.ID=PZ2.IDDoklad AND DZ2.splneno=0)
INNER JOIN TabStavSkladu SS2 ON (SS2.ID=PZ2.IDZboSklad)
INNER JOIN TabPrKVazby PrKV2 ON (PrKV2.IDPrikaz=PZ2.IDPrikaz AND PrKV2.Doklad=PZ2.DokladPrikazu AND PrKV2.nizsi=SS2.IDKmenZbozi AND PrKV2.IDOdchylkyDo IS NULL)
WHERE PZ2.TypVyrobnihoDokladu=1 AND PZ2.IDPrikaz=PrKV.IDPrikaz AND PZ2.DokladPrikazu=PrKV.Doklad AND PZ2.Splneno=0 AND
PZ2.druhPohybuZbo IN (2,4,9,10) AND PZ2.SkutecneDatReal IS NULL)
ELSE 0.0 END,
CASE WHEN @RespekExistDoklady=0 THEN O.mnozstvi END, CASE WHEN @RespekExistDoklady=0 THEN P.kusy_zad END,
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 (SELECT IDPrikaz=O1.IDPrikaz,
Mnozstvi=SUM(O1.mnozstvi)
+ CASE WHEN @RespekExistDoklady=1 THEN MAX(P1.kusy_odved+P1.kusy_ztrac+P1.kusy_zmet)
+ (SELECT ISNULL(SUM(PZ1.prepmnozstvi*PZ1.mnozstvi), 0.0)
FROM TabPohybyZbozi PZ1 WHERE PZ1.TypVyrobnihoDokladu=0 AND PZ1.IDPrikaz=O1.IDPrikaz AND PZ1.druhPohybuZbo=0 AND PZ1.SkutecneDatReal IS NULL)
ELSE 0.0 END
FROM #tabOdved O1
INNER JOIN TabPrikaz P1 ON (P1.ID=O1.IDPrikaz)
GROUP BY O1.IDPrikaz) O
INNER JOIN TabPrikaz P ON (P.ID=O.IDPrikaz AND P.StavPrikazu IN (20,30,50))
INNER JOIN TabRadyPrikazu RP ON (RP.rada=P.rada)
INNER JOIN TabPrKVazby PrKV ON (PrKV.IDPrikaz=O.IDPrikaz AND /*PrKV.predzpracovano=0 AND*/ PrKV.prednastaveno=1 AND PrKV.uzavreno=0 AND PrKV.RezijniMat=0 AND PrKV.IDOdchylkyDo IS NULL)
INNER JOIN TabKmenZbozi KZ ON (KZ.ID=PrKV.nizsi AND KZ.sluzba=0)
WHERE (P.kusy_zive>0.0 OR RP.KontrolovatRozpracPriUzav=0)
SET @gKV = (SELECT * FROM #TabPrKVazbyGen FOR XML AUTO)
-- co neni v datech PH JSON, vymaz (pokud mam v kusovniku neco navic, ale standardne se to nepridava, tj. napr. pridavky do testa)
DELETE FROM #TabPrKVazbyGen WHERE IDPrKV NOT IN (SELECT ID FROM @PrKVazby)
UPDATE G SET MnozstviMax = CASE WHEN RP.NekontrolovatMnozMatPol=1 OR ISNULL(PKZ.VyraditZKontrMaxVydanehoMnozDoVyroby,0)=1 THEN NULL
ELSE (CASE WHEN PrKV.splneno=1 THEN 0.0 ELSE PrKV.mnoz_zad-PrKV.VydanoRefMnoz*PrKV.mnoz_zad/PrKV.RefMnoz END) END
FROM #TabPrKVazbyGen G
INNER JOIN TabPrKVazby PrKV ON (PrKV.ID=G.IDPrKV)
INNER JOIN TabPrikaz P ON (P.ID=PrKV.IDPrikaz)
INNER JOIN TabRadyPrikazu RP ON (RP.rada=P.rada)
LEFT OUTER JOIN TabParametryKmeneZbozi PKZ ON (PKZ.IDKmenZbozi=PrKV.nizsi)
UPDATE G SET MnozstviPoz=ROUND(MnozstviPoz,4,1), MnozstviMax=ROUND(MnozstviMax,4,1)
FROM #TabPrKVazbyGen G
INNER JOIN TabPrKVazby PrKV ON (PrKV.ID=G.IDPrKV)
INNER JOIN TabPrikaz P ON (P.ID=PrKV.IDPrikaz)
INNER JOIN TabRadyPrikazu RP ON (RP.rada=P.rada AND RP.GenerVydejVMJEvid=1)
UPDATE #TabPrKVazbyGen SET mnozstviPoz=CEILING(mnozstviPoz)
FROM #TabPrKVazbyGen G
INNER JOIN TabPrKVazby PrKV ON (PrKV.ID=G.IDPrKV)
INNER JOIN TabKmenZbozi KZ ON (KZ.ID=PrKV.nizsi)
INNER JOIN TabMJ MJ ON (MJ.kod=KZ.MJEvidence AND MJ.nedelitelna=1)
WHERE G.PoKorekciDat=0
UPDATE #TabPrKVazbyGen SET mnozstviPoz=MnozstviMax WHERE MnozstviMax IS NOT NULL AND mnozstviPoz>MnozstviMax
DELETE #TabPrKVazbyGen WHERE MnozstviPoz<=0.0 AND PoKorekciDat=0
UPDATE #TabPrKVazbyGen SET PuvodniMnozstviPoz=mnozstviPoz WHERE PuvodniMnozstviPoz IS NULL
UPDATE G SET Dodavatel=CO.ID
FROM #TabPrKVazbyGen G
INNER JOIN TabPrKVazby PrKV ON (PrKV.ID=G.IDPrKV)
INNER JOIN TabKmenZbozi KZ ON (KZ.ID=PrKV.nizsi)
INNER JOIN TabCisOrg CO ON (CO.CisloOrg=KZ.Aktualni_Dodavatel)
WHERE G.PoKorekciDat=0 AND G.Dodavatel IS NULL
UPDATE #TabPrKVazbyGen SET PoKorekciDat=1 WHERE PoKorekciDat=0
UPDATE #TabPrKVazbyGen SET Generuj=1
SET @gKV = (SELECT * FROM #TabPrKVazbyGen FOR XML AUTO)
-- u michani odmaz vodu
IF (@subtypDokum=N'michani') OR (@subtypDokum=N'')
BEGIN
DELETE FROM #TabPrKVazbyGen WHERE nizsi=(SELECT ID FROM dbo.TabKmenZbozi WHERE SkupZbo=N'921' AND RegCis=N'001000')
MERGE #TabPrKVazbyGen AS T USING @PrKVazby AS S ON (T.IDPrKV=T.ID) WHEN MATCHED THEN UPDATE SET T.Mnozstvi=S.Mnozstvi, T.MnozstviPoz=S.Mnozstvi;
END
SET @gKV = (SELECT * FROM #TabPrKVazbyGen FOR XML AUTO)
-- generuj vydejku
BEGIN TRY
EXEC @retVal=dbo.hp_generujRezVyd @RadaDokladu=@radaDZVydejka, @DruhPohybuZbo=NULL, @IDObdobi=0, @DatPorizeni=NULL, @SekejZakazky=0, @SekejPrikazy=0,
@IDExistDoklad=0, @SekejOperace=0
IF (@retVal=0)
BEGIN
DECLARE vy CURSOR LOCAL FOR
SELECT ID FROM #TabGenRezVyd
OPEN vy
WHILE (1=1)
BEGIN
FETCH NEXT FROM vy INTO @idDZ
IF (@@FETCH_STATUS<>0) BREAK
SELECT @sklVydejMat=IDSklad FROM dbo.TabDokladyZbozi WHERE ID=@idDZ
IF NOT EXISTS(SELECT ID FROM dbo.TabDokladyZbozi_EXT WHERE ID=@idDZ)
INSERT dbo.TabDokladyZbozi_EXT (ID) VALUES (@idDZ)
UPDATE dbo.TabDokladyZbozi_EXT SET _HDCAPI_PHident=@idPHIdentBak WHERE ID=@idDZ
-- dopln na ext.info polozky cislo posledni sarze
DECLARE vyPol CURSOR LOCAL FOR
SELECT p.ID, k.ID
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 AND k.SkupZbo<>N'921'
OPEN vyPol
WHILE (1=1)
BEGIN
FETCH NEXT FROM vyPol INTO @idPZ, @idKZ
IF (@@FETCH_STATUS<>0) BREAK
SET @paletList = ISNULL( (SELECT TOP(1) PaletList FROM @TabPolozky WHERE IDKmen=@idKZ), N'')
SET @sarze = ISNULL( (SELECT TOP(1) Sarze FROM @TabPolozky WHERE IDKmen=@idKZ), N'')
IF (@sarze=N'')
SET @sarze = ISNULL( (SELECT TOP(1) se._Prevod_PosledniSarze FROM dbo.TabStavSkladu s INNER JOIN dbo.TabStavSkladu_EXT se ON (se.ID=s.ID)
WHERE s.IDKmenZbozi=@idKZ AND s.IDSklad=@sklTechnicky), N'')
IF NOT EXISTS (SELECT 1 FROM dbo.TabPohybyZbozi_EXT WHERE ID=@idPZ)
INSERT dbo.TabPohybyZbozi_EXT (ID) VALUES (@idPZ)
UPDATE dbo.TabPohybyZbozi_EXT SET _Vyroba_Sarze=IIF(@sarze=N'', NULL, @sarze), _Vyroba_PaletList=IIF(@paletList=N'', NULL, @paletList) WHERE ID=@idPZ
-- u michani a mouky zadat i silo
IF (@subtypDokum=N'michani') OR (@subtypDokum=N'')
BEGIN
SELECT @jsemMouka = CONVERT(bit, CASE WHEN Nazev1 LIKE N'%mouka%' AND SkupZbo=N'101' AND RegCis IN (N'111000', N'112000') THEN 1 ELSE 0 END)
FROM dbo.TabKmenZbozi WHERE ID=@idKZ
IF (@jsemMouka=1)
UPDATE dbo.TabPohybyZbozi_EXT SET _Mouka_Silo=@moukaSilo WHERE ID=@idPZ
END
END
CLOSE vyPol
DEALLOCATE vyPol
UPDATE dbo._hdc_ph_PrijataJsonData SET IDDoklad=@idDZ WHERE ID=@idJson
-- begin: pomocna prijemka nedostatecneho materialu (jen materialu !!!)
EXEC dbo.ep_Vyroba_Doklady_PomocPrijemka @idVydej=@idDZ
-- end: pomocna prijemka nedostatecneho materialu
BEGIN TRY
EXEC dbo.hp_Realizuj_Vydej @ID=@idDZ, @DatumRealizace=NULL, @Uzivatel=@idUziv, @Hlidat=0, @BylaChyba=@bChyba OUT
END TRY
BEGIN CATCH
SET @errMsg = N'Chyba realizace v<>dejky p<><70>kazu: ' + ERROR_MESSAGE()
IF (CHARINDEX(N'71553', @errMsg)>0)
SET @errMsg = @errMsg + N' / nedostatek mnozstvi'
INSERT dbo._hdc_ph_Log (Typ, LogText, IntValue, IdJsonData) SELECT 51, @errMsg, @idDZ, @IdJson
UPDATE dbo._hdc_ph_PrijataJsonData SET PosledniChyba=@errMsg WHERE ID=@idJson
END CATCH
UPDATE dbo.TabDokladyZbozi SET BlokovaniEditoru=NULL WHERE ID=@idDZ AND BlokovaniEditoru IS NOT NULL
END
CLOSE vy
DEALLOCATE vy
END
END TRY
BEGIN CATCH
SET @errMsg = 'Chyba generovani vydeje prikazu: ' + ERROR_MESSAGE()
INSERT dbo._hdc_ph_Log (Typ, LogText, IntValue, IdJsonData) SELECT 50, @errMsg, @idVPr, @idJson
UPDATE dbo._hdc_ph_PrijataJsonData SET PosledniChyba=@errMsg WHERE ID=@idJson
END CATCH
IF (@idDZ IS NOT NULL) AND ((@subtypDokum='michani') OR (@subtypDokum=N''))
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 @idMzda = NULL
DELETE FROM @TabIDMzdy
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
INSERT @TabIDMzdy (ID) SELECT m.ID FROM dbo.TabPrikazMzdyAZmetky m INNER JOIN dbo.TabEvidRozpracOperR er ON (er.ID=m.IDEvidRozpracOperR)
WHERE er.IDEvidRozpracOper=@idEvROp
SET @idMzda = NULL
SET @idMezd = NULL
IF EXISTS (SELECT * FROM @TabIDMzdy)
BEGIN
IF (1=(SELECT COUNT(*) FROM @TabIDMzdy))
SET @idMzda = (SELECT TOP(1) ID FROM @TabIDMzdy)
ELSE
SELECT @idMezd=STRING_AGG(ID,N',') FROM @TabIDMzdy
END
UPDATE dbo._TabVyroba_OperaceStartStop SET CasKonec=@casKonec, Ukonceno=1, IDMzda=@idMzda WHERE ID=@idStartStopOp
UPDATE dbo._hdc_ph_PrijataJsonData SET IDMzda=@idMzda, IDMezd=@idMezd WHERE ID=@idJson
END
END -- @idStartStopOp IS NOT NULL
-- pripoj vydejku, resp. jeji polozky, k evidenci operace
IF (@idMzda IS NOT NULL) AND (@idDZ IS NOT NULL)
BEGIN
IF NOT EXISTS(SELECT 1 FROM dbo.TabPrikazMzdyAZmetky WHERE GenerovanaMatVydejka=1 AND ID=@idMzda)
BEGIN
INSERT dbo.TabPrikazMzdyAZmetkyGenPZ (IDMzdy, TypGen, IDPohybu)
SELECT @idMzda, 0, ID FROM dbo.TabPohybyZbozi WHERE IDDoklad=@idDZ
UPDATE dbo.TabPrikazMzdyAZmetky SET GenerovanaMatVydejka=1 WHERE ID=@idMzda AND GenerovanaMatVydejka=0
END
END
SET @jeOdvOperace = 0
IF (@idMzda IS NOT NULL)
SET @jeOdvOperace = (SELECT pp.Odvadeci FROM dbo.TabPrikazMzdyAZmetky pmz
INNER JOIN dbo.TabPrPostup pp ON (pp.IDPrikaz=pmz.IDPrikaz AND pp.Doklad=pmz.DokladPrPostup AND pp.Alt=pmz.AltPrPostup)
WHERE pp.IDOdchylkyDo IS NULL AND pmz.ID=@idMzda)
-- odved na vyssi prikaz
-- zatim v pripade jen jednoho vyssiho
IF (@subtypDokum=N'michani') OR (@subtypDokum=N'')
BEGIN
IF ISNULL( (SELECT COUNT(ID) FROM dbo.TabVazbyPrikazu WHERE IDPrikaz=@idVPr), 0)>1
BEGIN
SET @idVPrVyssi = NULL
IF ISNULL( (SELECT COUNT(*) FROM (SELECT DISTINCT(IDPrikazCil) FROM dbo.TabPrikazPrevodPolotov WHERE IDPrikazZdroj=@idVPr GROUP BY IDPrikazCil) x), 0)=1
SET @idVPrVyssi = (SELECT TOP(1) IDPrikazCil FROM dbo.TabPrikazPrevodPolotov WHERE IDPrikazZdroj=@idVPr)
IF (@idVPrVyssi IS NULL)
DECLARE vazP CURSOR LOCAL FOR
SELECT TOP(1) vp.ID, vp.IDPrikazVyssi, vp.Mnozstvi, ISNULL(vpe._MnozstviOdv, 0)
FROM dbo.TabVazbyPrikazu vp
LEFT JOIN dbo.TabVazbyPrikazu_EXT vpe ON (vpe.ID=vp.ID)
WHERE vp.IDPrikaz=@idVPr
-- AND (1=0) -- !!! VYPNUTO !!!
ORDER BY vp.IDPrikazVyssi
ELSE
DECLARE vazP CURSOR LOCAL FOR
SELECT TOP(1) vp.ID, vp.IDPrikazVyssi, vp.Mnozstvi, ISNULL(vpe._MnozstviOdv, 0)
FROM dbo.TabVazbyPrikazu vp
LEFT JOIN dbo.TabVazbyPrikazu_EXT vpe ON (vpe.ID=vp.ID)
WHERE vp.IDPrikaz=@idVPr
AND vp.IDPrikazVyssi=@idVPrVyssi
OPEN vazP
WHILE (1=1)
BEGIN
FETCH FROM vazP INTO @idVazVP, @idVPrVyssi, @mnozVyssiReq, @mnozVyssiOdv
IF (@@FETCH_STATUS<>0) BREAK
SET @mnozVyssiOdvSum = ISNULL( (SELECT SUM(mnozstvi) FROM dbo.TabPrikazPrevodPolotov WHERE IDPrikazZdroj=@idVPr AND IDPrikazCil=@idVPrVyssi), 0)
IF (@mnozVyssiOdvSum=0) AND EXISTS (SELECT 1 FROM dbo.TabPrikazPrevodPolotov WHERE IDPrikazZdroj=@idVPr AND IDPrikazCil<>@idVPrVyssi)
CONTINUE
IF NOT EXISTS (SELECT 1 FROM dbo.TabVazbyPrikazu_EXT WHERE ID=@idVazVP)
INSERT dbo.TabVazbyPrikazu_EXT (ID) VALUES (@idVazVP)
UPDATE dbo.TabVazbyPrikazu_EXT SET _MnozstviOdv=@mnozVyssiOdvSum WHERE ID=@idVazVP
SET @mnozVyssiReq = @mnozVyssiReq - @mnozVyssiOdvSum
IF (@mnozVyssiReq<=0)
CONTINUE
SELECT @dilecVyssi=IDTabKmen FROM dbo.TabPrikaz WHERE ID=@idVPrVyssi
SELECT @dilec=IDTabKmen FROM dbo.TabPrikaz WHERE ID=@idVPr
-- pokud jsem testo, odved me na vyssi prikaz
IF EXISTS (SELECT 1 FROM dbo.TabKmenZbozi WHERE SkupZbo=N'701' AND ID=@dilec)
BEGIN
SELECT TOP(1) @doklKV=Doklad FROM dbo.TabPrKVazby WHERE IDOdchylkyDo IS NULL AND IDPrikaz=@IDVPrVyssi AND nizsi=@dilec AND Splneno=0
-- v pripade necelociselneho mnozstvi davky testa to na vyssim prikazu zaokrouhli vcetne vypoctu ztrat
IF (@doklKV IS NOT NULL)
AND EXISTS (SELECT 1 FROM dbo.TabPrKVazby WHERE IDOdchylkyDo IS NULL AND IDPrikaz=@IDVPrVyssi AND nizsi=@dilec AND Splneno=0 AND mnoz_zad<>CEILING(mnoz_zad))
BEGIN
SELECT TOP(1) @mnDavkaPred=mnoz_zad, @mnDavkaPo=CEILING(mnoz_zad), @mnBezZtrat=mnozstvi, @mnSeZtrat=mnozstviSeZtratou
FROM dbo.TabPrKVazby WHERE IDOdchylkyDo IS NULL AND IDPrikaz=@IDVPrVyssi AND nizsi=@dilec AND Splneno=0 AND mnoz_zad<>CEILING(mnoz_zad)
SET @mnSeZtrat = ROUND(@mnSeZtrat * (@mnDavkaPo/@mnDavkaPred), 6)
UPDATE dbo.TabPrKVazby SET mnoz_zad=CEILING(mnoz_zad), mnozstviSeZtratou=@mnSeZtrat, ProcZtrat= ROUND(100*((@mnSeZtrat/@mnBezZtrat)-1), 2)
WHERE IDOdchylkyDo IS NULL AND IDPrikaz=@IDVPrVyssi AND nizsi=@dilec AND Splneno=0 AND mnoz_zad<>CEILING(mnoz_zad)
-- uprav i vazbu prikazu testa na vyssi
UPDATE dbo.TabVazbyPrikazu SET Mnozstvi=CEILING(Mnozstvi) WHERE ID=@idVazVP AND Mnozstvi<>CEILING(Mnozstvi)
END
-- pripoj to k evidenci operace
IF (@idMzda IS NOT NULL)
BEGIN
DELETE FROM #TabOdved_IDMzdy
INSERT #TabOdved_IDMzdy (IDPrikaz, IDMzdy) SELECT @idVPr, @idMzda
END
EXEC @idPZ=dbo.hp_OdvedeniPrikazuPrevodem @DatPripadu=@aktDatum, @KonecneOdvedeniNatvrdo=0, @IDPrikazZdroj=@idVPr, @IDPrikazCil=@IDVPrVyssi,
@Doklad=@doklKV, @IDDilec=@dilec, @mnozstvi=1, @IDOdvedeniVC=0, @IDZakazModif=@idZakazModif
IF (@idPZ>0)
BEGIN
IF NOT EXISTS (SELECT 1 FROM dbo.TabVazbyPrikazu_EXT WHERE ID=@idVazVP)
INSERT dbo.TabVazbyPrikazu_EXT (ID) VALUES (@idVazVP)
UPDATE dbo.TabVazbyPrikazu_EXT SET _MnozstviOdv = 1 + ISNULL(_MnozstviOdv,0) WHERE ID=@idVazVP
END
DELETE FROM #TabOdved_IDMzdy
END -- jsem SZ 701
END
CLOSE vazP
DEALLOCATE vazP
END
IF ISNULL( (SELECT COUNT(ID) FROM dbo.TabVazbyPrikazu WHERE IDPrikaz=@idVPr), 0)=1
BEGIN
SELECT @idVazVP=ID, @idVPrVyssi=IDPrikazVyssi FROM dbo.TabVazbyPrikazu WHERE IDPrikaz=@idVPr
SET @mnozVyssiOdvSum = ISNULL( (SELECT SUM(mnozstvi) FROM dbo.TabPrikazPrevodPolotov WHERE IDPrikazZdroj=@idVPr AND IDPrikazCil=@idVPrVyssi), 0)
SELECT @dilecVyssi=IDTabKmen FROM dbo.TabPrikaz WHERE ID=@idVPrVyssi
SELECT @dilec=IDTabKmen FROM dbo.TabPrikaz WHERE ID=@idVPr
-- pokud jsem testo, odved me na vyssi prikaz
IF EXISTS (SELECT 1 FROM dbo.TabKmenZbozi WHERE SkupZbo=N'701' AND ID=@dilec)
BEGIN
SELECT TOP(1) @doklKV=Doklad FROM dbo.TabPrKVazby WHERE IDOdchylkyDo IS NULL AND IDPrikaz=@IDVPrVyssi AND nizsi=@dilec AND Splneno=0
-- v pripade necelociselneho mnozstvi davky testa to na vyssim prikazu zaokrouhli vcetne vypoctu ztrat
IF (@doklKV IS NOT NULL)
AND EXISTS (SELECT 1 FROM dbo.TabPrKVazby WHERE IDOdchylkyDo IS NULL AND IDPrikaz=@IDVPrVyssi AND nizsi=@dilec AND Splneno=0 AND mnoz_zad<>CEILING(mnoz_zad))
BEGIN
SELECT TOP(1) @mnDavkaPred=mnoz_zad, @mnDavkaPo=CEILING(mnoz_zad), @mnBezZtrat=mnozstvi, @mnSeZtrat=mnozstviSeZtratou
FROM dbo.TabPrKVazby WHERE IDOdchylkyDo IS NULL AND IDPrikaz=@IDVPrVyssi AND nizsi=@dilec AND Splneno=0 AND mnoz_zad<>CEILING(mnoz_zad)
SET @mnSeZtrat = ROUND(@mnSeZtrat * (@mnDavkaPo/@mnDavkaPred), 6)
UPDATE dbo.TabPrKVazby SET mnoz_zad=CEILING(mnoz_zad), mnozstviSeZtratou=@mnSeZtrat, ProcZtrat= ROUND(100*((@mnSeZtrat/@mnBezZtrat)-1), 2)
WHERE IDOdchylkyDo IS NULL AND IDPrikaz=@IDVPrVyssi AND nizsi=@dilec AND Splneno=0 AND mnoz_zad<>CEILING(mnoz_zad)
END
-- pripoj to k evidenci operace
IF (@idMzda IS NOT NULL)
BEGIN
DELETE FROM #TabOdved_IDMzdy
INSERT #TabOdved_IDMzdy (IDPrikaz, IDMzdy) SELECT @idVPr, @idMzda
END
EXEC @idPZ=dbo.hp_OdvedeniPrikazuPrevodem @DatPripadu=@aktDatum, @KonecneOdvedeniNatvrdo=0, @IDPrikazZdroj=@idVPr, @IDPrikazCil=@IDVPrVyssi,
@Doklad=@doklKV, @IDDilec=@dilec, @mnozstvi=1, @IDOdvedeniVC=0, @IDZakazModif=@idZakazModif
IF (@idPZ>0)
BEGIN
IF NOT EXISTS (SELECT 1 FROM dbo.TabVazbyPrikazu_EXT WHERE ID=@idVazVP)
INSERT dbo.TabVazbyPrikazu_EXT (ID) VALUES (@idVazVP)
UPDATE dbo.TabVazbyPrikazu_EXT SET _MnozstviOdv = 1 + ISNULL(_MnozstviOdv,0) WHERE ID=@idVazVP
END
DELETE FROM #TabOdved_IDMzdy
END -- jsem SZ 701
END -- jen 1 nadrizeny prikaz
-- 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 -- @subtypDokum michani
IF (@subtypDokum IN (N'maceni', N'baleni')) AND (@jeOdvOperace=1) AND (@idMzda IS NOT NULL)
BEGIN
SELECT @nazevDilce=k.Nazev1, @dilec=k.ID FROM dbo.TabPrikazMzdyAZmetky pmz INNER JOIN dbo.TabKmenZbozi k ON (k.ID=pmz.IDTabKmen) WHERE pmz.ID=@idMzda
IF (@nazevDilce LIKE N'%polotovar%') OR EXISTS (SELECT 1 FROM dbo.TabParKmZ WHERE IDKmenZbozi=@dilec AND TypDilce=1)
EXEC dbo.ep_Vyroba_GenOdvodZeMzdy @IDMzdy=@idMzda, @bezVyrCis=0, @radaOdvod=N'283', @skladOdvod=@sklProPolo, @realizujPrijem=1, @errMsg=@errMsg OUT
ELSE
EXEC dbo.ep_Vyroba_GenOdvodZeMzdy @IDMzdy=@idMzda, @bezVyrCis=0, @radaOdvod=N'273', @skladOdvod=@sklProFin, @realizujPrijem=1, @errMsg=@errMsg OUT
IF (@errMsg<>N'')
BEGIN
IF (CHARINDEX(N'2003283', @errMsg)>0)
SET @errMsg = @errMsg + N' / nenalezena rada dokladu'
UPDATE dbo._hdc_ph_PrijataJsonData SET PosledniChyba='Odvod: ' + @errMsg WHERE ID=@idJson
END
END
UPDATE dbo._hdc_ph_PrijataJsonData SET DatZpracovani=GETDATE() WHERE ID=@idJson
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=0
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 BIGINT, 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, IDSklad)
SELECT @idPHObj, @idPHIdent, CASE WHEN k.Material=1 THEN @sklMat ELSE CASE WHEN ISNULL(p.TypDilce,0)=1 THEN @sklProPolo ELSE @sklProFin END END
FROM dbo.TabKmenZbozi k LEFT JOIN dbo.TabParKmZ p ON (p.IDKmenZbozi=k.ID) WHERE k.SkupZbo=@sz AND k.RegCis=@rc
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, IDSklad FROM @TabPHObj
OPEN p
WHILE (1=1)
BEGIN
FETCH NEXT FROM p INTO @idPHObj, @idPHIdent, @sklProVydej
IF (@@FETCH_STATUS<>0) BREAK
SET @idDZ = (SELECT IDDoklad FROM @TabNocniPrevodky WHERE IDSklad=@sklProVydej)
IF (@idDZ IS NULL)
BEGIN
EXEC dbo.hp_InsertHlavickyOZ @ident=@idDZ OUT, @Sklad=@sklProVydej, @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=NULL, Poznamka=N'No<EFBFBD>n<EFBFBD> v<>dej' WHERE ID=@idDZ
-- UPDATE dbo._TabVyroba_Objednavky SET IDDokladOZ=@idDZ WHERE ID=@idPHObj
IF NOT EXISTS (SELECT 1 FROM @TabNocniPrevodky WHERE IDSKlad=@sklProVydej)
INSERT @TabNocniPrevodky (IDSklad, IDDoklad) SELECT @sklProVydej, @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=@sklProVydej)
IF (@idSS IS NULL)
EXEC dbo.hp_InsertStavSkladu @IDKmen=@idKZ, @IDSklad=@sklProVydej, @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
IF NOT EXISTS (SELECT 1 FROM dbo.TabPohybyZbozi_EXT WHERE ID=@idPZ)
INSERT dbo.TabPohybyZbozi_EXT (ID) VALUES (@idPZ)
UPDATE dbo.TabPohybyZbozi_EXT SET _HDCAPI_PHident=@idPHIdent WHERE ID=@idPZ
IF (@sarze<>N'')
BEGIN
IF NOT EXISTS(SELECT 1 FROM dbo.TabKmenZbozi_EXT WHERE ID=@idKZ)
INSERT dbo.TabKmenZbozi_EXT (ID) VALUES (@idKZ)
UPDATE dbo.TabKmenZbozi_EXT SET _Prevod_PosledniSarze=@sarze WHERE ID=@idKZ
END
SET @idVCP = NULL
IF (@paletList<>N'') -- Helios VyrCis
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, PaletovyList, SkupZbo, RegCis)
SELECT @idPHObj, @idDZ, @idPZ, @idVCP, @mnoz, @sarze, @paletList, @sz, @rc
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
DECLARE dok CURSOR LOCAL FOR
SELECT IDDoklad FROM @TabNocniPrevodky
OPEN dok
WHILE (1=1)
BEGIN
FETCH NEXT FROM dok INTO @idDZ
IF (@@FETCH_STATUS<>0) BREAK
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()
-- odchytni chybu pri realizaci, chceme aby tam doklad zustal a vyresili to rucne
BEGIN TRY
EXEC dbo.hp_Realizuj_Vydej @ID=@idDZ, @DatumRealizace=@aktDatum, @Uzivatel=0, @Hlidat=0, @BylaChyba=@bChyba OUT
END TRY
BEGIN CATCH
SET @bChyba=1 -- chyba, vetsinou kvuli nedostatku na skladu
UPDATE dbo.TabDokladyZbozi SET BlokovaniEditoru=NULL WHERE ID=@idDZ -- zrus priznak, ktery se nastavuje pri pokusu o realizaci
END CATCH
IF (@bChyba=0)
BEGIN
-- je vygenerovana prijemka na druhe strane ? pokud ne, vygeneruj ji
IF NOT EXISTS (SELECT 1 FROM dbo.TabPohybyZbozi WHERE IDOldPolozka IN (SELECT ID FROM dbo.TabPohybyZbozi WHERE IDDoklad=@idDZ))
BEGIN
SET @aktDatum = GETDATE()
EXEC dbo.hp_InsertHlavickyOZ @ident=@idDZDst OUT, @Sklad=@sklPek, @DruhPohybu=0, @RadaDokladu='281',
@Mena=@menaDZ, @CisloOrg=0, @DatumPorizeni=@aktDatum
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=1, @VytvaretPolozkovouVazbu=1, @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_Prijem @ID=@idDZDst, @DatumRealizace=@datReal, @Uzivatel=0, @BylaChyba=@bChyba OUT, @RealMnoz=1, @RealFin=1, @VypnoutUpozorneniPriZajistovani=1
END
END
SET @logTyp=0
SET @logInt=0
SET @logStr = N''
SET @log4Mail = 0
SET @logText = N''
END -- @bChyba=0
END -- @idDZ IS NOT NULL
END
CLOSE dok
DEALLOCATE dok
END -- @typDokum='micharna' AND @subtypDokum='nocni'
UPDATE dbo._hdc_ph_PrijataJsonData SET DatZpracovani=GETDATE(), Blokovano=0, IDDoklad=@idDZ WHERE ID=@idJson
END -- akce: objednavka
-- END: OBJEDNAVKA
-- BEGIN: ZAHAJENI OPERACE
IF (@akce=N'vyroba_zacatek')
BEGIN
SELECT @typDokum=u2.typ, @subtypDokum=ISNULL(u2.subtyp, N''), @idPHIdent=u2.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), subtyp NVARCHAR(50), datazoneId BIGINT) AS u2;
IF (@idPHIdent IS NOT NULL)
UPDATE dbo._hdc_ph_PrijataJsonData SET IdPHIdent=@idPHIdent WHERE ID=@idJson;
SELECT @idVPr=u3.heliosId, @casStart=u3.zacatek, @casKonec=u3.konec
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) u3;
-- 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 NULL)
BEGIN
IF (@subtypDokum=N'maceni')
SET @idPracoviste = (SELECT TOP(1) pracoviste FROM dbo.TabPrPostup WHERE IDPrikaz=@idVPr AND IDOdchylkyDo IS NULL AND Typ=1
AND priorita=0 AND IDStroje IN (SELECT se.ID FROM dbo.TabCisStroju s INNER JOIN dbo.TabCisStroju_EXT se ON (se.ID=s.ID)
WHERE s.Blokovano=0 AND se._MaceciStroj=1))
IF (@subtypDokum=N'baleni')
SET @idPracoviste = (SELECT TOP(1) pracoviste FROM dbo.TabPrPostup WHERE IDPrikaz=@idVPr AND IDOdchylkyDo IS NULL AND Typ=0
AND priorita=0 AND LOWER(Nazev) LIKE N'%balen<65>%')
END
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 (@subtypDokum=N'michani')
IF (@sz='701')
SELECT TOP(1) @doklPrP=Doklad, @altPrP=Alt, @idPracoviste=pracoviste, @popisOper=N'M<EFBFBD>ch<EFBFBD>n<EFBFBD> pro stroj ' FROM dbo.TabPrPostup
WHERE IDOdchylkyDo IS NULL AND IDPrikaz=@idVPr AND priorita=0 AND LOWER(nazev) LIKE N'%m<>ch<63>n<EFBFBD>%' AND Typ=1
IF (@subtypDokum=N'maceni')
SELECT TOP(1) @doklPrP=Doklad, @altPrP=Alt, @idPracoviste=pracoviste, @popisOper=N'M<EFBFBD><EFBFBD>en<EFBFBD> ' FROM dbo.TabPrPostup
WHERE IDOdchylkyDo IS NULL AND IDPrikaz=@idVPr AND priorita=0 AND LOWER(Nazev) LIKE N'%m<><6D>en<65>%' AND Typ=1
IF (@subtypDokum=N'baleni')
SELECT TOP(1) @doklPrP=Doklad, @altPrP=Alt, @idPracoviste=pracoviste, @popisOper=N'Balen<EFBFBD> ' FROM dbo.TabPrPostup
WHERE IDOdchylkyDo IS NULL AND IDPrikaz=@idVPr AND priorita=0 AND LOWER(Nazev) LIKE N'%balen<65>%' AND Typ=0
IF (@doklPrP IS NOT NULL)
BEGIN
INSERT dbo.TabEvidRozpracOper (IDZamestnance, IDPracoviste, IDStroje, CasZahajeni, Poznamka)
SELECT @idZam, @idPracoviste, NULL, @casStart, @popisOper + 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
-- BEGIN: ZAHAJENI OPERACE
IF (@akce=N'prikaz_zamena_material')
BEGIN
SELECT @idVPr=u2.Id, @sz=u3.skupzbo, @rc=u3.regcis, @sz2=u4.skupzbo, @rc2=u4.regcis
FROM #TabJSONData d
CROSS APPLY OPENJSON (d.doc, '$')
WITH ([prikaz] NVARCHAR(MAX) AS JSON, [material] NVARCHAR(max) AS JSON) AS u
CROSS APPLY OPENJSON (prikaz)
WITH (id INT) AS u2
CROSS APPLY OPENJSON (material)
WITH (skupzbo NVARCHAR(3), regcis NVARCHAR(30), nazev NVARCHAR(100)) AS u3
CROSS APPLY OPENJSON (removeMaterial)
WITH (skupzbo NVARCHAR(3), regcis NVARCHAR(30), nazev NVARCHAR(100)) AS u4;
SET @idKZn = (SELECT ID FROM dbo.TabKmenZbozi WHERE SkupZbo=@sz AND RegCis=@rc)
SET @idKZn2 = (SELECT ID FROM dbo.TabKmenZbozi WHERE SkupZbo=@sz2 AND RegCis=@rc2)
IF EXISTS (SELECT 1 FROM dbo.TabPrikaz WHERE ID=@idVPr AND StavPrikazu=30)
BEGIN
SELECT @idKZv = (SELECT IDTabKmen FROM dbo.TabPrikaz WHERE ID=@idVPr)
IF (@idVPr IS NOT NULL) AND (@idKZn IS NOT NULL) AND (@idKZn<>@idKZv)
BEGIN
SET @idPrKVazbyPolot = (SELECT v.ID FROM dbo.TabPrKVazby v INNER JOIN dbo.TabKmenZbozi vn ON (vn.ID=v.nizsi)
WHERE v.IDPrikaz=@idVPr AND v.IDOdchylkyDo IS NULL AND v.Priorita=0 AND vn.Dilec=1)
SET @idPrKVazbyNova = (SELECT ID FROM dbo.TabPrKVazby WHERE IDPrikaz=@idVPr AND IDOdchylkyDo IS NULL AND vyssi=@idKZv AND nizsi=@idKZn)
IF (@idPrKVazbyNova IS NULL) AND (@idPrKVazbyPolot IS NOT NULL)
BEGIN
SELECT @doklPrV=Doklad, @mnozVaz=Mnozstvi, @mnozZadVaz=mnoz_zad, @idOdchylVaz=IdOdchylkyOd, @procZtrVaz=ProcZtrat
FROM dbo.TabPrKVazby WHERE ID=@idPrKVazbyPolot
EXEC @idPrKVazbyNova=dbo.hp_NewPozadavek_TabPrKVazby @IDPrikaz=@idVPr, @IDKmenZbozi=@idKZn, @Alt_K_Dokladu=@doklPrV, @Mnozstvi=@mnozVaz,
@Mnoz_zad=@mnozZadVaz, @ProcZtrat=@procZtrVaz, @IDOdchylky=@idOdchylVaz
END
IF (@idPrKVazbyNova IS NOT NULL)
BEGIN
SELECT @novaPriorita=Priorita FROM dbo.TabPrKVazby WHERE ID=@idPrKVazbyNova
IF (@novaPriorita>0)
BEGIN
UPDATE dbo.TabPrKVazby SET priorita=CASE WHEN priorita=@novaPriorita THEN @novaPriorita-1 ELSE @novaPriorita END
WHERE IDPrikaz=@idVPr AND Doklad=@doklPrV AND (priorita=@novaPriorita OR priorita=@novaPriorita-1)
UPDATE dbo.TabPrKVazby SET prednastaveno=0 WHERE IDPrikaz=@idVPr AND Doklad=@doklPrV
UPDATE dbo.TabPrKVazby SET prednastaveno=1 WHERE IDPrikaz=@idVPr AND Doklad=@doklPrV AND nizsi=@idKZn
END
END -- (@idPrKVazbyNova IS NOT NULL)
END -- (@idVPr IS NOT NULL) AND (@idKZn IS NOT NULL)
END -- prikaz ve stavu 30
END -- akce:
-- 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()
-- begin: pouzavirej mozne cursory
IF (CURSOR_STATUS('local','dok')>=-1)
BEGIN
CLOSE dok
DEALLOCATE dok
END
IF (CURSOR_STATUS('local','vy')>=-1)
BEGIN
CLOSE vy
DEALLOCATE vy
END
IF (CURSOR_STATUS('local','vyPol')>=-1)
BEGIN
CLOSE vyPol
DEALLOCATE vyPol
END
IF (CURSOR_STATUS('local','p')>=-1)
BEGIN
CLOSE p
DEALLOCATE p
END
IF (CURSOR_STATUS('local','vazP')>=-1)
BEGIN
CLOSE vazP
DEALLOCATE vazP
END
-- end: pouzavirej mozne cursory
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
-- cisteni
DROP TABLE IF EXISTS #TabGenPrijem
DROP TABLE IF EXISTS #TabPolotovProGenOdv
DROP TABLE IF EXISTS #TabVyrCisProGenOdv
DROP TABLE IF EXISTS #TabOdved_IDMzdy
DROP TABLE IF EXISTS #TabOdved
DROP TABLE IF EXISTS #TabPrKVazbyGen
DROP TABLE IF EXISTS #TabGenRezVyd
DROP TABLE IF EXISTS #TabPrKVazbyGen_IDMzdy
DROP TABLE IF EXISTS #TabPrKVazbyGenVC
-- pro jistotu
IF OBJECT_ID(N'tempdb..#TabJSONData', N'U') IS NOT NULL
DROP TABLE #TabJSONData