1552 lines
69 KiB
Transact-SQL
1552 lines
69 KiB
Transact-SQL
-- 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,
|
||
@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),
|
||
@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),
|
||
@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),
|
||
@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),
|
||
@mnozEvid NUMERIC(19,6),
|
||
@idVazVP INT,
|
||
@mnozVyssiReq NUMERIC(19,6),
|
||
@mnozVyssiOdv 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,
|
||
@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 )
|
||
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)
|
||
|
||
|
||
-- 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'
|
||
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 (@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
|
||
IF (@sklProFin IS NULL)
|
||
SELECT @sklProFin=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Hlavn<EFBFBD> sklad - V<>robky / Zbo<62><6F>'
|
||
|
||
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%')
|
||
BEGIN
|
||
SET @moukaKgFin = @mnoz
|
||
SET @moukaKgNorma = @mnoz2
|
||
END
|
||
|
||
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='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='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<>'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='michani') OR (@subtypDokum=N'')
|
||
BEGIN
|
||
SELECT @jsemMouka = CONVERT(bit, CASE WHEN Nazev1 LIKE N'%mouka%' AND SkupZbo=N'101' 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 !!!)
|
||
SET @idDZPomocPrij=NULL
|
||
DECLARE pomPrij CURSOR LOCAL FOR
|
||
SELECT p.IDZboSklad, 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 -- doklad vydejky
|
||
AND k.Material=1 AND k.Sluzba=0
|
||
OPEN pomPrij
|
||
WHILE (1=1)
|
||
BEGIN
|
||
FETCH NEXT FROM pomPrij INTO @idSSPomocPrij, @mnozVydej
|
||
IF (@@FETCH_STATUS<>0) BREAK
|
||
|
||
-- spocitej jestli mam skladem mnozstvi na realizaci vydejky
|
||
SET @mnozSklad = ISNULL( (SELECT Mnozstvi+MnozstviKPrijmu-MnozstviKVydeji FROM dbo.TabStavSkladu WHERE ID=@idSSPomocPrij), 0)
|
||
IF (@mnozVydej>@mnozSklad)
|
||
BEGIN
|
||
SET @mnozPrij = @mnozVydej - @mnozSklad
|
||
IF (@idDZPomocPrij IS NULL) -- uz existuje doklad pomocne prijemky na sklade 261 (technologicky) ?
|
||
BEGIN
|
||
EXEC dbo.hp_InsertHlavickyOZ @ident=@idDZPomocPrij OUT, @Sklad=@sklTechnicky, @DruhPohybu=0, @RadaDokladu=@radaPrijem, @CisloOrg=0
|
||
SELECT @menaPrij=Mena, @kurzPrij=Kurz, @kurzPrijE=KurzEuro, @jednMPrij=JednotkaMeny, @vstCPrij=VstupniCena
|
||
FROM dbo.TabDokladyZbozi WHERE ID=@idDZPomocPrij
|
||
END
|
||
IF (@idDZPomocPrij IS NOT NULL)
|
||
BEGIN
|
||
EXEC dbo.hp_InsertPolozkyOZ @Ident=@idPZPomocPrij OUT, @IDDoklad=@idDZPomocPrij, @DruhPohybu=0, @CisloOrg=0, @IDZboSklad=@idSSPomocPrij,
|
||
@Mena=@menaPrij, @Kurz=@kurzPrij, @KurzEuro=@kurzPrijE, @JednotkaMeny=@jednMPrij, @SazbaSD=NULL, @SazbaDPH=NULL,
|
||
@ZakazanoDPH=NULL, @VstupniCena=@vstCPrij, @Mnozstvi=@mnozPrij, @PovolitDuplicitu=1
|
||
END
|
||
END
|
||
END
|
||
CLOSE pomPrij
|
||
DEALLOCATE pomPrij
|
||
IF (@idDZPomocPrij IS NOT NULL) -- pokud mam pomocnou prijemku, zkus ji realizovat nez budes realizovat vydejku
|
||
BEGIN
|
||
BEGIN TRY
|
||
EXEC dbo.hp_Realizuj_Prijem @ID=@idDZPomocPrij, @DatumRealizace=NULL, @Uzivatel=@idUziv, @BylaChyba=@bChyba OUT, @VypnoutUpozorneniPriZajistovani=1
|
||
END TRY
|
||
BEGIN CATCH
|
||
SET @errMsg = ERROR_MESSAGE()
|
||
END CATCH
|
||
END
|
||
-- 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
|
||
|
||
DECLARE vazP CURSOR LOCAL FOR
|
||
SELECT 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 !!!
|
||
OPEN vazP
|
||
WHILE (1=1)
|
||
BEGIN
|
||
FETCH FROM vazP INTO @idVazVP, @idVPrVyssi, @mnozVyssiReq, @mnozVyssiOdv
|
||
IF (@@FETCH_STATUS<>0) BREAK
|
||
|
||
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
|
||
|
||
|
||
|
||
|
||
IF 1=ISNULL( (SELECT COUNT(ID) FROM dbo.TabVazbyPrikazu WHERE IDPrikaz=@idVPr), 0)
|
||
BEGIN
|
||
SELECT @idVazVP=ID, @idVPrVyssi=IDPrikazVyssi FROM dbo.TabVazbyPrikazu WHERE IDPrikaz=@idVPr
|
||
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 FROM dbo.TabPrikazMzdyAZmetky pmz INNER JOIN dbo.TabKmenZbozi k ON (k.ID=pmz.IDTabKmen) WHERE pmz.ID=@idMzda
|
||
IF (@nazevDilce LIKE N'%polotovar%')
|
||
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) 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, Poznamka=N'No<EFBFBD>n<EFBFBD> v<>dej' WHERE ID=@idDZ
|
||
UPDATE dbo._TabVyroba_Objednavky SET IDDokladOZ=@idDZ WHERE ID=@idPHObj
|
||
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
|
||
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'')
|
||
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
|
||
|
||
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
|
||
-- 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
|
||
END
|
||
END -- @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
|
||
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;
|
||
IF EXISTS (SELECT 1 FROM dbo.TabPrikaz WHERE ID=@idVPr AND StavPrikazu=30)
|
||
BEGIN
|
||
SET @idKZn = (SELECT ID FROM dbo.TabKmenZbozi WHERE SkupZbo=@sz AND RegCis=@rc)
|
||
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()
|
||
|
||
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
|
||
|
||
|