Prvni verze

This commit is contained in:
2025-05-21 21:14:32 +02:00
commit 03ff9ebc84
147 changed files with 40100 additions and 0 deletions

View File

@ -0,0 +1,6 @@
DECLARE @currDat DATETIME=GETDATE()
IF (COL_LENGTH(N'dbo.TabEvidRozpracOper_EXT', N'_PHIdent') IS NULL)
EXEC dbo.hp_ImportUzivAtr @Externi=1, @NazevTabulkySys=N'TabEvidRozpracOper', @NazevAtrSys=N'_PHIdent', @Skupina=N'HDCDZApi', @NazevAtrVer=N'Datazone ID',
@NazevAtrVerZkr=N'', @TypAtr=N'INT', @MaskaAtr=NULL, @VerejnyAtr=N'N', @SirkaSloupceAtr=12, @SumovatAtr=N'N', @TiskAtr=N'A', @ProcPruhAtr=0, @Kopirovat=0,
@KonverzeAtr=NULL, @ExtEd_Poradi=1, @ExtEd_Zalozka=NULL, @ExtEd_BrowseID=NULL, @ExtEd_Atr=NULL, @ExtEd_PrimaEditace=0, @DatPorizeni=@currDat, @DatZmeny=NULL,
@TypAtrSQL=N'INT', @ExtEd_BrowseID_DPSN=NULL, @Poznamka=NULL, @Definice=NULL, @Podminka=NULL, @HromadneZmenyAtr=1

View File

@ -0,0 +1,8 @@
DECLARE @currDat DATETIME=GETDATE()
IF (COL_LENGTH(N'dbo.TabKmenZbozi_EXT', N'_SkladProVydejMat') IS NULL)
EXEC dbo.hp_ImportUzivAtr @Externi=1, @NazevTabulkySys=N'TabKmenZbozi', @NazevAtrSys=N'_SkladProVydejMat', @Skupina=N'HDCDZApi', @NazevAtrVer=N'Sklad pro v<>dej pod<6F><64>zen<65>ho materi<72>lu',
@NazevAtrVerZkr=N'Sklad mat.', @TypAtr=N'NVARCHAR', @MaskaAtr=NULL, @VerejnyAtr=N'A', @SirkaSloupceAtr=14, @SumovatAtr=N'N', @TiskAtr=N'A', @ProcPruhAtr=0, @Kopirovat=0,
@KonverzeAtr=NULL, @ExtEd_Poradi=1, @ExtEd_Zalozka=NULL, @ExtEd_BrowseID=4, @ExtEd_Atr=N'Cislo', @ExtEd_PrimaEditace=1, @DatPorizeni=@currDat, @DatZmeny=NULL,
@TypAtrSQL=N'NVARCHAR(30)', @ExtEd_BrowseID_DPSN=NULL, @Poznamka=NULL, @Definice=NULL, @Podminka=NULL, @HromadneZmenyAtr=1,
@BublinaAtr=N'Sklad, ze kter<65>ho bude vyd<79>v<EFBFBD>n v<>echen materi<72>l v po<70>adavc<76>ch p<><70>kazu tohoto d<>lce'

View File

@ -0,0 +1,6 @@
DECLARE @currDat DATETIME=GETDATE()
IF (COL_LENGTH(N'dbo.TabPrPostup_EXT', N'_IDPrednaOper') IS NULL)
EXEC dbo.hp_ImportUzivAtr @Externi=1, @NazevTabulkySys=N'TabPrPostup', @NazevAtrSys=N'_IDPrednaOper', @Skupina=N'HDCDZApi', @NazevAtrVer=N'Vazba na P<>ednastaven<65> operac<61>',
@NazevAtrVerZkr=N'', @TypAtr=N'INT', @MaskaAtr=NULL, @VerejnyAtr=N'A', @SirkaSloupceAtr=14, @SumovatAtr=N'N', @TiskAtr=N'A', @ProcPruhAtr=0, @Kopirovat=0,
@KonverzeAtr=NULL, @ExtEd_Poradi=1, @ExtEd_Zalozka=NULL, @ExtEd_BrowseID=NULL, @ExtEd_Atr=NULL, @ExtEd_PrimaEditace=1, @DatPorizeni=@currDat, @DatZmeny=NULL,
@TypAtrSQL=N'INT', @ExtEd_BrowseID_DPSN=NULL, @Poznamka=NULL, @Definice=NULL, @Podminka=NULL, @HromadneZmenyAtr=1, @BublinaAtr=N''

View File

@ -0,0 +1,20 @@
DECLARE @currDat DATETIME=GETDATE()
IF (COL_LENGTH(N'dbo.TabPredna_EXT', N'_CisloOperace') IS NULL)
EXEC dbo.hp_ImportUzivAtr @Externi=1, @NazevTabulkySys=N'TabPredna', @NazevAtrSys=N'_CisloOperace', @Skupina=N'HDCDZApi', @NazevAtrVer=N'<EFBFBD><EFBFBD>slo operace',
@NazevAtrVerZkr=N'Operace', @TypAtr=N'NVARCHAR', @MaskaAtr=NULL, @VerejnyAtr=N'A', @SirkaSloupceAtr=14, @SumovatAtr=N'N', @TiskAtr=N'A', @ProcPruhAtr=0, @Kopirovat=0,
@KonverzeAtr=NULL, @ExtEd_Poradi=1, @ExtEd_Zalozka=NULL, @ExtEd_BrowseID=NULL, @ExtEd_Atr=NULL, @ExtEd_PrimaEditace=1, @DatPorizeni=@currDat, @DatZmeny=NULL,
@TypAtrSQL=N'NVARCHAR(4)', @ExtEd_BrowseID_DPSN=NULL, @Poznamka=NULL, @Definice=NULL, @Podminka=NULL, @HromadneZmenyAtr=1, @BublinaAtr=N'<EFBFBD><EFBFBD>slo operace jedine<6E>n<EFBFBD> p<>es v<>echny p<><70>kazy'
IF (COL_LENGTH(N'dbo.TabPredna_EXT', N'_OdvadeciOperace') IS NULL)
EXEC dbo.hp_ImportUzivAtr @Externi=1, @NazevTabulkySys=N'TabPredna', @NazevAtrSys=N'_OdvadeciOperace', @Skupina=N'HDCDZApi', @NazevAtrVer=N'Odv<EFBFBD>d<EFBFBD>c<EFBFBD> operace',
@NazevAtrVerZkr=N'Odv.operace', @TypAtr=N'BIT', @MaskaAtr=NULL, @VerejnyAtr=N'A', @SirkaSloupceAtr=14, @SumovatAtr=N'N', @TiskAtr=N'A', @ProcPruhAtr=0, @Kopirovat=0,
@KonverzeAtr=NULL, @ExtEd_Poradi=1, @ExtEd_Zalozka=NULL, @ExtEd_BrowseID=NULL, @ExtEd_Atr=NULL, @ExtEd_PrimaEditace=1, @DatPorizeni=@currDat, @DatZmeny=NULL,
@TypAtrSQL=N'BIT', @ExtEd_BrowseID_DPSN=NULL, @Poznamka=NULL, @Definice=NULL, @Podminka=NULL, @HromadneZmenyAtr=1, @BublinaAtr=N'P<EFBFBD><EFBFBD>znak Odv<64>d<EFBFBD>c<EFBFBD> operace'
IF (COL_LENGTH(N'dbo.TabPredna_EXT', N'_IDNasledujiciOperaceAutomat') IS NULL)
EXEC dbo.hp_ImportUzivAtr @Externi=1, @NazevTabulkySys=N'TabPredna', @NazevAtrSys=N'_IDNasledujiciOperaceAutomat', @Skupina=N'HDCDZApi', @NazevAtrVer=N'N<EFBFBD>sledn<EFBFBD> operace',
@NazevAtrVerZkr=N'N<EFBFBD>sledn<EFBFBD> operace', @TypAtr=N'INT', @MaskaAtr=NULL, @VerejnyAtr=N'A', @SirkaSloupceAtr=14, @SumovatAtr=N'N', @TiskAtr=N'A', @ProcPruhAtr=0, @Kopirovat=0,
@KonverzeAtr=NULL, @ExtEd_Poradi=1, @ExtEd_Zalozka=NULL, @ExtEd_BrowseID=NULL, @ExtEd_Atr=NULL, @ExtEd_PrimaEditace=1, @DatPorizeni=@currDat, @DatZmeny=NULL,
@TypAtrSQL=N'INT', @ExtEd_BrowseID_DPSN=NULL, @Poznamka=NULL, @Definice=NULL, @Podminka=NULL, @HromadneZmenyAtr=1, @BublinaAtr=N'N<EFBFBD>sledn<EFBFBD> operace'

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,611 @@
-- dbo.ep_HDCDZApi_ZpracujPrijataData
CREATE PROCEDURE dbo.ep_HDCDZApi_ZpracujPrijataData
@idJson INT=NULL
AS
SET NOCOUNT ON
-- ! proceduru neupravujte, bude stejne pregenerovana pri startu Windows sluzby HDCDZApi !
DECLARE
@errMsg NVARCHAR(500)=N'',
@errProc NVARCHAR(100),
@tranPred INT,
@iChyba INT,
@debugXML XML
DECLARE
@operJson NVARCHAR(max),
@prikJson NVARCHAR(max),
@objekt NVARCHAR(50),
@akce NVARCHAR(50),
@trida NVARCHAR(50),
@statusOp NVARCHAR(50),
@typOperJson NVARCHAR(50),
@jsonString NVARCHAR(max),
@cisZam INT,
@idZam INT,
@idVPr INT,
@idVCPrik INT,
@vc NVARCHAR(100),
@dokl INT,
@alt NCHAR(1),
@idPrP INT,
@idPrPOdv INT,
@doklOdv INT,
@doklNew INT,
@doklAutomat INT,
@altAutomat NCHAR(1),
@jeOdvadeci BIT=0,
@datStart DATETIME,
@datKonec DATETIME,
@skCasSek INT,
@mnoz NUMERIC(19,6),
@idPrednaOp INT,
@idPrednaOpOdv INT,
@operPrednaOdv NVARCHAR(4),
@operPrednaPrac INT,
@typOper TINYINT,
@idPrac INT,
@idPracOld INT,
@idStroj INT,
@nazevOp NVARCHAR(100),
@operPredna NVARCHAR(4),
@odvadeciPredna BIT=0,
@cisOper INT,
@cisOperMax INT,
@operMax NVARCHAR(4),
@nazevOpMax NVARCHAR(100),
@idKoop INT,
@idEvidROp INT,
@idEvidROpPol INT,
@idMzdy INT,
@idPrednaOpAutomat INT,
@operPrednaOpAutomat NVARCHAR(4),
@casSekOperPredaAutomat INT,
@idMzdyAutomat INT,
@datKonecOp DATETIME,
@ksZive NUMERIC(19,6),
@ksEvid NUMERIC(19,6)
DECLARE
@idDZ INT,
@sz NVARCHAR(3),
@rc NVARCHAR(30),
@idKZ INT,
@idPrKVazby INT,
@idDilec INT,
@mnozstviPomer_A NUMERIC(19,6),
@mnozstviPomer_B NUMERIC(19,6),
@idGenVydejPrednaPol INT,
@sklProVydej NVARCHAR(30)
DROP TABLE IF EXISTS #TabJSONData
CREATE TABLE #TabJSONData (ID INT IDENTITY(1,1) NOT NULL, doc NVARCHAR(max) )
DROP TABLE IF EXISTS #HDCTabPrKVazbyGen_IDMzdyPredna
CREATE TABLE #HDCTabPrKVazbyGen_IDMzdyPredna (IDPrikaz int, Doklad int, IDMzdy int)
DROP TABLE IF EXISTS #HDCTabPrKVazbyGenPredna
CREATE TABLE #HDCTabPrKVazbyGenPredna (
ID INT IDENTITY NOT NULL,
Generuj BIT NOT NULL DEFAULT 1,
PoKorekciDat BIT NOT NULL DEFAULT 0,
IDPrKV INT NOT NULL,
Doklad INT NOT NULL,
IDPrikaz INT NOT NULL,
Prednastaveno BIT NOT NULL DEFAULT 1,
Sklad NVARCHAR(30) NULL,
VyrStredisko NVARCHAR(30) NULL,
IDPracoviste INT NULL,
mnoz_zad NUMERIC(19,6) NOT NULL DEFAULT 0,
Mnoz_nepotrebne NUMERIC(19,6) NOT NULL DEFAULT 0,
Mnoz_skut_realizovane NUMERIC(19,6) NOT NULL DEFAULT 0,
Cena_real NUMERIC(19,6) NOT NULL DEFAULT 0,
Mnoz_odv NUMERIC(19,6) NOT NULL DEFAULT 0,
Cena_odv NUMERIC(19,6) NOT NULL DEFAULT 0,
MnozstviMax NUMERIC(19,6) NULL,
PuvodniMnozstviPoz NUMERIC(19,6) NULL,
MnozstviPoz NUMERIC(19,6) NOT NULL,
PomMnozPoz NUMERIC(19,6) NOT NULL DEFAULT 0,
IDPohZbo INT NULL,
PoznamkaNaDoklad NTEXT NULL,
priorita INT NOT NULL DEFAULT 0,
vyssi INT NOT NULL,
nizsi INT NOT NULL,
DavkaTPV NUMERIC(19,6) NOT NULL DEFAULT 1,
pozice NVARCHAR(100) NULL DEFAULT N'',
Operace NCHAR(4) NULL,
FixniMnozstvi NUMERIC(19,6) NOT NULL DEFAULT 0,
mnozstvi NUMERIC(19,6) NOT NULL DEFAULT 1,
ProcZtrat NUMERIC(5,2) NOT NULL DEFAULT 0,
mnozstviSeZtratou NUMERIC(19,6) NOT NULL DEFAULT 0,
Prirez NUMERIC(19,6) NOT NULL DEFAULT 1,
Poznamka NTEXT NULL,
pom_pomer_A NUMERIC(19,6) NULL,
pom_pomer_B NUMERIC(19,6) NULL,
Dodavatel INT NULL,
mnoz_pozadovane AS (CONVERT(numeric(19,6),(CASE WHEN [mnoz_nepotrebne]>[mnoz_zad] THEN 0.0 ELSE [mnoz_zad] - [mnoz_nepotrebne] END))),
PRIMARY KEY (ID)
)
SET @operPrednaOdv = N''
SET @idPrednaOpOdv = (SELECT TOP(1) ID FROM dbo.TabPredna_EXT WHERE _OdvadeciOperace=1)
IF (@idPrednaOpOdv IS NOT NULL)
SET @operPrednaOdv = (SELECT _CIsloOperace FROM dbo.TabPredna_EXT WHERE ID=@idPrednaOpOdv)
IF (@idJson IS NOT NULL)
DECLARE j CURSOR LOCAL FOR
SELECT ID, JsonData, Objekt, Akce FROM dbo._hdc_ph_PrijataJsonData WHERE ID=@idJson
ELSE
DECLARE j CURSOR LOCAL FOR
SELECT ID, JsonData, Objekt, Akce
FROM dbo._hdc_ph_PrijataJsonData
WHERE Blokovano=0
AND DatZpracovani IS NULL
AND ISNULL(JSONData,N'')<>N''
ORDER BY DatPorizeni
OPEN j
WHILE (1=1)
BEGIN
FETCH NEXT FROM j INTO @idJson, @jsonString, @objekt, @akce
IF (@@FETCH_STATUS<>0) BREAK
IF (ISJSON(@jsonString)=0)
BEGIN
UPDATE dbo._hdc_ph_PrijataJsonData SET DatZpracovani=GETDATE(), PosledniChyba=N'Neplatna JSON data' WHERE ID=@idJson
END
SET @objekt = TRIM(ISNULL(@objekt, N''))
SET @akce = TRIM(ISNULL(@akce, N''))
BEGIN TRY
SET @tranPred=@@TRANCOUNT
IF (@tranPred=0)
BEGIN TRAN
DELETE FROM #TabJSONData
INSERT #TabJSONData (doc) VALUES (@jsonString)
IF (@objekt=N'')
SELECT TOP(1) @objekt = JSON_VALUE(doc, '$.object') FROM #TabJSONData
IF (@akce=N'')
SELECT TOP(1) @akce = JSON_VALUE(doc, '$.action') FROM #TabJSONData
SELECT TOP(1) @cisZam = JSON_VALUE(doc, '$.operace.worker.code') FROM #TabJSONData
SET @idZam = (SELECT ID FROM dbo.TabCisZam WHERE Cislo=@cisZam)
UPDATE dbo._hdc_ph_PrijataJsonData SET PosledniChyba=NULL, CisloZam=@cisZam WHERE ID=@idJson
IF (@objekt=N'operace') AND (@idZam IS NOT NULL)
BEGIN
IF (@akce=N'start')
BEGIN
SET @idEvidROp = NULL
SET @errMsg = N''
SET @operPredna = N''
SET @odvadeciPredna = 0
SET @nazevOp = N''
SET @operMax = N''
SELECT @idVPr = JSON_VALUE(d2.prikaz, '$.id'), @trida = JSON_VALUE(d2.prikaz, '$.class'),
@idPrednaOp = JSON_VALUE(d3.operace, '$.id'), @datStart = JSON_VALUE(d3.operace, '$.startAt'),
@statusOp = JSON_VALUE(d3.operace, '$.status'), @typOperJson=JSON_VALUE(d3.operace, '$.typ')
FROM #TabJSONData d
CROSS APPLY OPENJSON(d.doc, N'$')
WITH ([prikaz] NVARCHAR(max) AS JSON) AS d2
CROSS APPLY OPENJSON(d.doc, N'$')
WITH ([operace] NVARCHAR(max) AS JSON) AS d3
IF (@idVPr IS NOT NULL)
BEGIN
SELECT @idDilec=p.IDTabKmen, @sklProVydej=rp.VydejMatPol_SkladProGenHlavDZ
FROM dbo.TabPrikaz p INNER JOIN dbo.TabRadyPrikazu rp ON (rp.Rada=p.Rada) WHERE p.ID=@idVPr
SET @idPrP = NULL
IF (@typOperJson=N'prikaz')
BEGIN
SET @operPredna = CONVERT(nvarchar, @idPrednaOp)
SET @idPrednaOp = (SELECT TOP(1) ID FROM dbo.TabPredna_EXT WHERE _CIsloOperace=@operPredna)
SET @typOperJson=N'prednastavena'
END
IF (@typOperJson=N'prednastavena')
BEGIN
IF (@idPrednaOp IS NOT NULL)
BEGIN
SELECT @operPrednaPrac=IDpracoviste FROM dbo.TabPredna WHERE ID=@idPrednaOp
IF EXISTS(SELECT 1 FROM dbo.TabPrikaz WHERE ID=@idVPr AND StavPrikazu IN (20,30,40) AND BlokovaniEditoru IS NULL)
AND EXISTS(SELECT 1 FROM dbo.TabPredna WHERE ID=@idPrednaOp AND BlokovaniEditoru IS NULL)
SELECT @typOper=Typ, @nazevOp=nazev, @idPrac=IDpracoviste, @idStroj=IDStroje, @idKoop=IDkooperace
FROM dbo.TabPredna WHERE ID=@idPrednaOp
IF (COL_LENGTH(N'dbo.TabPredna_EXT', N'_CisloOperace') IS NOT NULL)
SET @operPredna = (SELECT _CisloOperace FROM dbo.TabPredna_EXT WHERE ID=@idPrednaOp)
IF (COL_LENGTH(N'dbo.TabPredna_EXT', N'_OdvadeciOperace') IS NOT NULL)
SET @odvadeciPredna = (SELECT _OdvadeciOperace FROM dbo.TabPredna_EXT WHERE ID=@idPrednaOp)
END
END
SET @operPredna = ISNULL(@operPredna,N'')
IF (@operPredna=N'')
BEGIN
UPDATE dbo._hdc_ph_PrijataJsonData SET PosledniChyba=N'CHYBA: přednastavení ID ' + CONVERT(nvarchar, @idPrednaOp) + N' nemá zadané číslo operace.' WHERE ID=@idJson
CONTINUE
END
-- SET @operPredna=dbo.hf_ZarovnejOperaciTechPos(@operPredna)
/*
SET @idPrP = (SELECT TOP(1) ID FROM dbo.TabPrPostup WHERE IDPrikaz=@idVPr AND IDOdchylkyDo IS NULL AND typ=@typOper AND nazev=@nazevOp
AND ISNULL(pracoviste,0)=ISNULL(@idPrac,0) AND ISNULL(IDkooperace,0)=ISNULL(@idKoop,0) AND ISNULL(IDStroje,0)=ISNULL(@idStroj,0))
*/
SET @idPrP = (SELECT TOP(1) ID FROM dbo.TabPrPostup WHERE priorita=0 AND IDPrikaz=@idVPr AND IDOdchylkyDo IS NULL AND typ=@typOper AND operace=@operPredna)
-- existuje odvadeci operace v Prednastaveni pro operace a v prikazu ? pokud neni v prikazu, pridej ji do prikazu
SET @doklOdv = NULL
SET @idPrPOdv = (SELECT ID FROM dbo.TabPrPostup WHERE priorita=0 AND IDPrikaz=@idVPr AND IDOdchylkyDo IS NULL AND Operace=@operPrednaOdv)
-- pokud prednastavena Odvadeci jeste neni v prikazu, pridej ji tam
IF (@idPrPOdv IS NULL) AND (@idPrednaOpOdv IS NOT NULL)
BEGIN
EXEC @idPrPOdv = dbo.hp_NewPozadavek_TabPrPostup @IDPrikaz=@idVPr, @IDPrednastaveni=@idPrednaOpOdv, @Operace=@operPrednaOdv
IF (@idPrPOdv IS NOT NULL)
BEGIN
-- korekce cisla dokladu odvadeci operace, posun na konec seznamu operaci
SET @doklOdv=9990
UPDATE dbo.TabPrPostup SET Odvadeci=0 WHERE ID<>@idPrPOdv AND IDPrikaz=@idVPr AND IDOdchylkyDo IS NULL
UPDATE dbo.TabPrPostup SET Doklad=@doklOdv, Odvadeci=1 WHERE ID=@idPrPOdv
END
END
IF (@doklOdv IS NULL) AND (@idPrPOdv IS NOT NULL)
SELECT @doklOdv=Doklad FROM dbo.TabPrPostup WHERE ID=@idPrPOdv
-- prednastavena operace v prikazu jeste neni, pridej ji
IF (@idPrP IS NULL)
BEGIN
EXEC @idPrP = dbo.hp_NewPozadavek_TabPrPostup @IDPrikaz=@idVPr, @IDPrednastaveni=@idPrednaOp, @Operace=@operPredna
IF (@idPrP IS NOT NULL)
BEGIN
-- korekce cisla dokladu, pred odvadeci opeaci
SELECT @dokl=ISNULL(MAX(Doklad),0)+1 FROM dbo.TabPrPostup WITH (TABLOCKX) WHERE IDPrikaz=@idVPr AND Doklad<9990
UPDATE dbo.TabPrPostup SET Doklad=@dokl, Odvadeci=0, VyraditZKontrolyPosloupOper=1 WHERE ID=@idPrP
END
END
SET @idPrednaOpAutomat = NULL
SET @operPrednaOpAutomat = N''
IF (@idPrP IS NOT NULL)
BEGIN
SELECT @dokl=Doklad, @alt=Alt FROM dbo.TabPrPostup WHERE ID=@idPrP
UPDATE dbo.TabPrPostup SET VyraditZKontrolyPosloupOper=1 WHERE ID=@idPrP AND Odvadeci=0
-- korekce cisla dokladu aby bylo pred odvadeci operaci
IF (@doklOdv IS NOT NULL)
IF (@dokl>@doklOdv)
BEGIN
SET @doklNew = 1 + ISNULL( (SELECT MAX(Doklad) FROM dbo.TabPrPostup
WHERE IDPrikaz=@idVPr AND IDOdchylkyDo IS NULL AND Doklad<@doklOdv AND ID<>@idPrP), 0)
IF (@doklNew IS NOT NULL)
BEGIN
UPDATE dbo.TabPrPostup SET Doklad=@doklNew WHERE ID=@idPrP
SET @dokl = @doklNew
END
END
EXEC @idEvidROp = dbo.ep_Vyroba_InsertEvidRozpracOper @IDZamestnance=@idZam, @IDPracoviste=@idPrac, @IDStroje=@idStroj, @CasZahajeni=@datStart, @errMsg = @errMsg OUT
IF (@idEvidROp IS NOT NULL)
BEGIN
SET @idVCPrik = NULL
IF 1=ISNULL( (SELECT COUNT(ID) FROM dbo.TabVyrCisPrikaz WHERE IDPrikaz=@idVPr), 0)
SET @idVCPrik = (SELECT TOP(1) ID FROM dbo.TabVyrCisPrikaz WHERE IDPrikaz=@idVPr)
EXEC @idEvidROpPol = dbo.ep_Vyroba_InsertEvidRozpracOperPol @IDEvidRozpOper=@idEvidROp, @IdPrikaz=@idVPr, @doklPrPost=@dokl,
@altPrPost=@alt, @IdVyrCis=@idVCPrik, @errMsg = @errMsg OUT
END -- idEvidROp IS NOT NULL
END -- idPrP IS NOT NULL
-- pokud mam naslednou automatickou operaci, zkontrolu a pripadne ji pridej na prikaz
IF (COL_LENGTH(N'dbo.TabPredna_EXT', N'_IDNasledujiciOperaceAutomat') IS NOT NULL)
SET @idPrednaOpAutomat = (SELECT _IDNasledujiciOperaceAutomat FROM dbo.TabPredna_EXT WHERE ID=@idPrednaOp)
IF (COL_LENGTH(N'dbo.TabPredna_EXT', N'_CisloOperace') IS NOT NULL) AND (@idPrednaOpAutomat IS NOT NULL)
SELECT @operPrednaOpAutomat = _CisloOperace FROM dbo.TabPredna_EXT WHERE ID=@idPrednaOpAutomat
SET @operPrednaOpAutomat = ISNULL(@operPrednaOpAutomat, N'')
IF (@operPrednaOpAutomat<>N'')
BEGIN
SET @idPrP = (SELECT ID FROM dbo.TabPrPostup WHERE IDPrikaz=@idVPr AND IDOdchylkyDo IS NULL AND Operace=@operPrednaOpAutomat)
IF (@idPrP IS NULL)
EXEC @idPrP = dbo.hp_NewPozadavek_TabPrPostup @IDPrikaz=@idVPr, @IDPrednastaveni=@idPrednaOpAutomat, @Operace=@operPrednaOpAutomat
IF (@idPrP IS NOT NULL)
BEGIN
-- korekce cisla dokladu
SELECT @dokl=Doklad FROM dbo.TabPrPostup WHERE ID=@idPrP
IF (@dokl>@doklOdv)
BEGIN
SET @doklNew = 1 + ISNULL( (SELECT MAX(Doklad) FROM dbo.TabPrPostup
WHERE IDPrikaz=@idVPr AND IDOdchylkyDo IS NULL AND Doklad<@doklOdv AND ID<>@idPrP), 0)
IF (@doklNew IS NOT NULL)
BEGIN
UPDATE dbo.TabPrPostup SET Doklad=@doklNew WHERE ID=@idPrP AND Operace=@operPrednaOpAutomat
SET @dokl = @doklNew
END
END -- @dokl>@doklOdv
END -- @idPrP IS NOT NULL
END -- @operPrednaOpAutomat<>N''
END -- idVPr IS NOT NULL
IF (@errMsg<>N'')
UPDATE dbo._hdc_ph_PrijataJsonData SET PosledniChyba=N'CHYBA: ' + @errMsg WHERE ID=@idJson
UPDATE dbo._hdc_ph_PrijataJsonData SET DatZpracovani=GETDATE(), IDEvidRozpOp=@idEvidROp WHERE ID=@idJson
END -- akce Start
IF (@akce=N'stop')
BEGIN
SET @errMsg = N''
SELECT @idVPr = JSON_VALUE(d2.prikaz, '$.id'), @trida = JSON_VALUE(d2.prikaz, '$.class'),
@idPrednaOp = JSON_VALUE(d3.operace, '$.id'), @statusOp = JSON_VALUE(d3.operace, '$.status'),
@datStart = JSON_VALUE(d3.operace, '$.startAt'), @datKonec = JSON_VALUE(d3.operace, '$.stopAt'),
@operJson=d3.operace, @typOperJson=JSON_VALUE(d3.operace, '$.typ')
FROM #TabJSONData d
CROSS APPLY OPENJSON(d.doc, '$')
WITH ([prikaz] NVARCHAR(max) AS JSON) AS d2
CROSS APPLY OPENJSON(d.doc, '$')
WITH ([operace] NVARCHAR(max) AS JSON) AS d3
IF EXISTS (SELECT 1 FROM dbo.TabPrikaz WHERE ID=@idVPr AND StavPrikazu<>30)
BEGIN
UPDATE dbo._hdc_ph_PrijataJsonData SET DatZpracovani=GETDATE(), PosledniChyba=N'Vyrobni prikaz neni ve stavu Zadano' WHERE ID=@idJson
CONTINUE
END
SELECT @ksZive=p.kusy_zive, @sklProVydej=rp.VydejMatPol_SkladProGenHlavDZ
FROM dbo.TabPrikaz p INNER JOIN dbo.TabRadyPrikazu rp ON (rp.Rada=p.Rada) WHERE p.ID=@idVPr
IF (@datKonec<=@datStart)
SET @datKonec = DATEADD(s, 1, @datStart)
IF (@idVPr IS NOT NULL) AND (@operJson IS NOT NULL)
BEGIN
SELECT @idDilec = IDTabKmen FROM dbo.TabPrikaz WHERE ID=@idVPr
SET @idPrP = NULL
SET @operPredna = N''
SET @idPrednaOpAutomat = NULL
SET @operPrednaOpAutomat = N''
IF (@typOperJson=N'prikaz')
BEGIN
SET @operPredna = CONVERT(nvarchar, @idPrednaOp)
SET @idPrednaOp = (SELECT TOP(1) ID FROM dbo.TabPredna_EXT WHERE _CIsloOperace=@operPredna)
SET @typOperJson=N'prednastavena'
END
IF (@idPrednaOp IS NOT NULL)
BEGIN
IF (COL_LENGTH(N'dbo.TabPredna_EXT', N'_CisloOperace') IS NOT NULL) AND (@idPrednaOp IS NOT NULL)
SET @operPredna = (SELECT _CisloOperace FROM dbo.TabPredna_EXT WHERE ID=@idPrednaOp)
SET @operPredna = ISNULL(@operPredna, N'')
IF (@operPredna=N'')
BEGIN
UPDATE dbo._hdc_ph_PrijataJsonData SET DatZpracovani=GETDATE(), PosledniChyba=N'Nebylo nalezeno cislo operace Prednastaveni' WHERE ID=@idJson
CONTINUE
END
-- zjisti vyrobni cislo
SET @idVCPrik = NULL
IF 1=ISNULL( (SELECT COUNT(ID) FROM dbo.TabVyrCisPrikaz WHERE IDPrikaz=@idVPr), 0)
SET @idVCPrik = (SELECT TOP(1) ID FROM dbo.TabVyrCisPrikaz WHERE IDPrikaz=@idVPr)
-- zjisti operaci automatu
IF (COL_LENGTH(N'dbo.TabPredna_EXT', N'_IDNasledujiciOperaceAutomat') IS NOT NULL)
SET @idPrednaOpAutomat = (SELECT _IDNasledujiciOperaceAutomat FROM dbo.TabPredna_EXT WHERE ID=@idPrednaOp)
IF (COL_LENGTH(N'dbo.TabPredna_EXT', N'_CisloOperace') IS NOT NULL) AND (@idPrednaOpAutomat IS NOT NULL)
SELECT @operPrednaOpAutomat = _CisloOperace FROM dbo.TabPredna_EXT WHERE ID=@idPrednaOpAutomat
SET @operPrednaOpAutomat = ISNULL(@operPrednaOpAutomat, N'')
SET @casSekOperPredaAutomat = ISNULL( (SELECT TAC_Obsluhy_J_S FROM dbo.TabPredna WHERE ID=@idPrednaOpAutomat), 0)
IF EXISTS(SELECT 1 FROM dbo.TabPrikaz WHERE ID=@idVPr AND StavPrikazu IN (20,30,40) AND BlokovaniEditoru IS NULL)
AND EXISTS(SELECT 1 FROM dbo.TabPredna WHERE ID=@idPrednaOp AND BlokovaniEditoru IS NULL)
SELECT @typOper=Typ, @nazevOp=nazev, @idPrac=IDpracoviste, @idStroj=IDStroje, @idKoop=IDkooperace
FROM dbo.TabPredna WHERE ID=@idPrednaOp
END
SET @idPrP = (SELECT TOP(1) ID FROM dbo.TabPrPostup WHERE priorita=0 AND IDPrikaz=@idVPr AND IDOdchylkyDo IS NULL AND typ=@typOper AND operace=@operPredna)
/*
SET @idPrP = (SELECT TOP(1) ID FROM dbo.TabPrPostup WHERE IDPrikaz=@idVPr AND IDOdchylkyDo IS NULL AND typ=@typOper AND nazev=@nazevOp
AND ISNULL(pracoviste,0)=ISNULL(@idPrac,0) AND ISNULL(IDkooperace,0)=ISNULL(@idKoop,0) AND ISNULL(IDStroje,0)=ISNULL(@idStroj,0))
*/
SELECT @jeOdvadeci=Odvadeci, @dokl=Doklad, @alt=Alt FROM dbo.TabPrPostup WHERE ID=@idPrP
SET @ksEvid = ISNULL( (SELECT SUM(kusy_odv+kusy_zmet_opr+kusy_zmet_neopr) FROM dbo.TabPrikazMzdyAZmetky
WHERE IDPrikaz=@idVPr AND DokladPrPostup=@dokl AND AltPrPostup=@alt), 0)
-- muzu jeste odvest kusy ?
IF (@jeOdvadeci=1) AND (@ksEvid>=@ksZive)
BEGIN
UPDATE dbo._hdc_ph_PrijataJsonData SET DatZpracovani=GETDATE(), PosledniChyba=N'Nelze evidovat, uz je vse odvedeno' WHERE ID=@idJson
CONTINUE
END
SET @idMzdy = NULL
SET @iChyba = -1
SET @idEvidROp = (SELECT TOP(1) h.ID FROM dbo.TabEvidRozpracOperR r INNER JOIN dbo.TabEvidRozpracOper h ON (h.ID=r.IDEvidRozpracOper)
WHERE h.IDZamestnance=@idZam AND h.CasUkonceni IS NULL AND r.DokladPrPostup=@dokl AND r.AltPrPostup=@alt AND r.IDPrikaz=@idVPr)
IF (@idEvidROp IS NOT NULL)
BEGIN
SELECT @idPracOld=IDPracoviste FROM dbo.TabEvidRozpracOper WHERE ID=@idEvidROp
SET @skCasSek = DATEDIFF(s, @datStart, @datKonec)
UPDATE dbo.TabEvidRozpracOperR SET Mnoz_odv=CASE WHEN (@jeOdvadeci=1) THEN 1 ELSE 0 END,
Sk_cas=CASE Sk_Cas_T WHEN 0 THEN @skCasSek WHEN 1 THEN (@skCasSek/60.0) WHEN 2 THEN (@skCasSek/3600.0) END,
Sk_cas_Obsluhy=CASE Sk_Cas_Obsluhy_T WHEN 0 THEN @skCasSek WHEN 1 THEN (@skCasSek/60.0) WHEN 2 THEN (@skCasSek/3600.0) END
WHERE IDEvidRozpracOper=@idEvidROp
UPDATE dbo.TabEvidRozpracOper SET CasUkonceni=@datKonec, CelkovyCas_T=0, CelkovyCas=DATEDIFF(s, @datStart, @datKonec) WHERE ID=@idEvidROp
EXEC dbo.hp_EvidRozpracOper_AktualizaceCasuOper @IDEvidRozpracOper=@idEvidROp, @CelkovyCas_S=@skCasSek, @KVO=1
SET @idEvidROpPol = (SELECT TOP(1) ID FROM dbo.TabEvidRozpracOperR WHERE IDEvidRozpracOper=@idEvidROp AND IDPrikaz=@idVPr AND DokladPrPostup=@dokl AND AltPrPostup=@alt)
EXEC @idMzdy = dbo.hp_EvidenceOperace @IDEvidRozpracOperR=@idEvidROpPol, @Stav=0
UPDATE dbo.TabEvidRozpracOper SET DatumUzavreni=GETDATE(), AutorUzavreni=SUSER_SNAME() WHERE ID=@idEvidROp
IF (@idMzdy IS NOT NULL) AND (@idPracOld IS NOT NULL)
EXEC dbo.hp_ZmenaStavuMezdAZmetku @ID=@idMzdy, @Stav=1, @ZapisZmenu=0
END -- @idEvidROp IS NOT NULL
IF (@idMzdy IS NOT NULL)
BEGIN
UPDATE dbo.TabPrikazMzdyAZmetky SET Datum=CONVERT(datetime, CONVERT(int, CONVERT(float, @datStart))) WHERE ID=@idMZdy
SELECT @datKonecOp = DatumUkonceniOp FROM dbo.TabPrikazMzdyAZmetky WHERE ID=@idMzdy
-- zkus zaevidovat operaci automatu
IF (@operPrednaOpAutomat<>N'')
BEGIN
-- pouzij cas ukonceni predchozi operace
SET @datStart = DATEADD(second, 1, @datKonecOp)
SET @datKonec = DATEADD(second, @casSekOperPredaAutomat, @datStart)
SELECT @doklAutomat=Doklad, @altAutomat=Alt FROM dbo.TabPrPostup WHERE IDPrikaz=@idVPr AND IDOdchylkyDo IS NULL AND Operace=@operPrednaOpAutomat
IF (@doklAutomat IS NOT NULL)
BEGIN
SET @idMzdyAutomat = NULL
EXEC @idMzdyAutomat = dbo.hp_EvidenceOperace @IDPrikaz=@idVPr, @Doklad=@doklAutomat, @Alt=@altAutomat, @Datum=@datStart, @IDVyrCis=@idVCPrik,
@Sk_Cas_S=@casSekOperPredaAutomat, @Sk_Cas_Obsluhy_S=0, @IDZam=@idZam,
@DatumZahajeniOp=@datStart, @DatumUkonceniOp=@datKonec
END
END
-- generuj vydejku materialu
SET @sz = NULL
DELETE FROM #TabJSONData
INSERT #TabJSONData (doc) SELECT @operJson
DECLARE m CURSOR LOCAL FOR
SELECT m.skupina, m.regcis, m.quantity
FROM #TabJSONData d
CROSS APPLY OPENJSON(d.doc, N'$.material')
WITH (skupina NVARCHAR(3), regcis NVARCHAR(30), quantity NUMERIC(19,6)) AS m
OPEN m
WHILE (1=1)
BEGIN
FETCH NEXT FROM m INTO @sz, @rc, @mnoz
IF (@@FETCH_STATUS<>0) BREAK
SET @idKZ = (SELECT ID FROM dbo.TabKmenZbozi WHERE SkupZbo=@sz AND RegCis=@rc)
IF (@idKZ IS NOT NULL)
BEGIN
UPDATE dbo.TabKmenZbozi SET Material=1 WHERE ID=@idKZ AND Dilec=0 AND Material=0
SET @idPrKVazby=(SELECT TOP(1) ID FROM dbo.TabPrKVazby WHERE IDOdchylkyDo IS NULL AND IDPrikaz=@idVPr
AND vyssi=@idDilec AND nizsi=@idKZ ORDER BY Prednastaveno DESC)
IF (@idPrKVazby IS NULL)
EXEC @idPrKVazby = dbo.hp_NewPozadavek_TabPrKVazby @IDPrikaz=@idVPr, @IDKmenZbozi=@idKZ, @Mnozstvi=@mnoz
SET @dokl = NULL
IF (@idPrKVazby IS NOT NULL)
BEGIN
SELECT @dokl=Doklad FROM dbo.TabPrKVazby WHERE ID=@idPrKVazby
SELECT @mnozstviPomer_A=(MZ.kusy_odv+MZ.kusy_zmet_opr+MZ.kusy_zmet_neopr), @mnozstviPomer_B=PrP.kusy_zad
FROM dbo.TabPrikazMzdyAZmetky MZ
INNER JOIN dbo.TabPrPostup PrP ON (PrP.IDPrikaz=MZ.IDPrikaz AND PrP.Doklad=MZ.DokladPrPostup AND PrP.Alt=MZ.AltPrPostup AND PrP.IDOdchylkyDo IS NULL)
WHERE MZ.ID=@idMzdy
INSERT INTO #HDCTabPrKVazbyGenPredna (IDPrKV, MnozstviPoz, pom_pomer_A, pom_pomer_B, Doklad, IDPrikaz, Prednastaveno, Sklad, VyrStredisko,
IDPracoviste, mnoz_zad, Mnoz_nepotrebne, Mnoz_skut_realizovane, Cena_real, Mnoz_odv, Cena_odv, priorita, vyssi, nizsi,
DavkaTPV, pozice, Operace, FixniMnozstvi, mnozstvi, ProcZtrat, mnozstviSeZtratou, Prirez, Poznamka)
SELECT PrKV.ID, @mnoz, @mnozstviPomer_A, @mnozstviPomer_B, PrKV.Doklad, PrKV.IDPrikaz,
PrKV.Prednastaveno, PrKV.Sklad, PrKV.VyrStredisko, PrKV.IDPracoviste, PrKV.mnoz_zad, PrKV.Mnoz_nepotrebne, PrKV.Mnoz_skut_realizovane,
PrKV.Cena_real, PrKV.Mnoz_odv, PrKV.Cena_odv, PrKV.priorita, PrKV.vyssi, PrKV.nizsi, PrKV.DavkaTPV, PrKV.pozice, PrKV.Operace,
PrKV.FixniMnozstvi, PrKV.mnozstvi, PrKV.ProcZtrat, PrKV.mnozstviSeZtratou, PrKV.Prirez, PrKV.Poznamka
FROM dbo.TabPrKVazby PrKV
WHERE PrKV.ID=@idPrKVazby AND PrKV.uzavreno=0
SET @idGenVydejPrednaPol = SCOPE_IDENTITY()
-- pokud neni prednastaveny sklad pro vydej, zkus to z rady prikazu
UPDATE #HDCTabPrKVazbyGenPredna SET Sklad=@sklProVydej WHERE ID=@idGenVydejPrednaPol AND Sklad IS NULL AND @sklProVydej IS NOT NULL
IF (@dokl IS NOT NULL)
INSERT INTO #HDCTabPrKVazbyGen_IDMzdyPredna (IDPrikaz, Doklad, IDMzdy) SELECT @idVPr, @dokl, @idMzdy
END -- idPrKVazby IS NOT NULL
END -- idKZ
END
CLOSE m
DEALLOCATE m
SET @debugXML = (SELECT * FROM #HDCTabPrKVazbyGenPredna FOR XML AUTO)
IF (@idMzdy IS NOT NULL) AND (@sz IS NOT NULL) -- pokud prosel loopem na materialy, sz nemuze byt null
IF OBJECT_ID(N'dbo.ep_Vyroba_GenVydejZeMzdy', N'P') IS NOT NULL
BEGIN
SET @idDZ = NULL
BEGIN TRY
EXEC @iChyba = dbo.ep_Vyroba_GenVydejZeMzdy @IDMzdy=@idMzdy, @IDDoklad=@idDZ OUT, @errMsg=@errMsg OUT, @realizujVydej=1
IF (@errMsg<>N'')
UPDATE dbo.TabDokladyZbozi SET BLokovaniEditoru=NULL WHERE ID=@idDZ
END TRY
BEGIN CATCH
UPDATE dbo.TabDokladyZbozi SET BlokovaniEditoru=NULL WHERE ID=@idDZ
END CATCH
END
-- pokud je odvadeci, generuj odvod na sklad
IF (@idMzdy IS NOT NULL) AND (@jeOdvadeci=1)
BEGIN
IF OBJECT_ID(N'dbo.ep_Vyroba_GenOdvodZeMzdy', N'P') IS NOT NULL
BEGIN
SET @idDZ = NULL
BEGIN TRY
EXEC @iChyba = dbo.ep_Vyroba_GenOdvodZeMzdy @IDMzdy=@idMzdy, @bezVyrCis=0, @errMsg=@errMsg OUT, @realizujPrijem=1, @IDDoklad=@idDZ OUT
IF (@errMsg<>N'')
UPDATE dbo.TabDokladyZbozi SET BLokovaniEditoru=NULL WHERE ID=@idDZ
END TRY
BEGIN CATCH
UPDATE dbo.TabDokladyZbozi SET BlokovaniEditoru=NULL WHERE ID=@idDZ
END CATCH
END
END
END -- idMzdy IS NOT NULL
END -- idVPr IS NOT NULL AND operJson IS NOT NULL
SET @errMsg = ISNULL(@errMsg,N'')
IF (@errMsg<>N'')
UPDATE dbo._hdc_ph_PrijataJsonData SET PosledniChyba=N'CHYBA: ' + @errMsg WHERE ID=@idJson
UPDATE dbo._hdc_ph_PrijataJsonData SET DatZpracovani=GETDATE(), IDMzda=@idMzdy WHERE ID=@idJson
END -- akce Stop
END -- objekt Operace AND idZam IS NOT NULL
IF (@tranPred=0) AND (@@TRANCOUNT>0)
COMMIT TRAN
END TRY
BEGIN CATCH
SET @errMsg = ERROR_MESSAGE()
SET @errProc = ERROR_PROCEDURE()
IF (@tranPred=0) AND (@@TRANCOUNT>0)
ROLLBACK TRAN
UPDATE dbo._hdc_ph_PrijataJsonData SET DatZpracovani=GETDATE(), PosledniChyba=N'CHYBA: ' + @errMsg WHERE ID=@idJson
END CATCH
END
CLOSE j
DEALLOCATE j
-- cisteni
DROP TABLE IF EXISTS #HDCTabPrKVazbyGenPredna
DROP TABLE IF EXISTS #TabJSONData

View File

@ -0,0 +1,223 @@
-- dbo.ep_Vyroba_GenOdvodZeMzdy
CREATE PROCEDURE dbo.ep_Vyroba_GenOdvodZeMzdy
@IDMzdy INT,
@bezVyrCis BIT=1,
@errMsg NVARCHAR(500)=N'' OUT,
@realizujPrijem BIT=0,
@IDDoklad INT=NULL OUT
AS
-- HD Consulting Strakonice, T. Buzin
-- !! proceduru neupravujte, bude stejne pregenerovana pri startu sluzby HDCAPI !!
-- konfiguraci lze ovlivnit pres tabulku #HDCTabGenOdvodZeMzdyKonfig
-- pozor, v tom pripade musi byt na rade prikazu sklad pro generovani odvodu roven NULL
SET NOCOUNT ON
DECLARE
@ret integer,
@bChyba BIT,
@idUziv INT,
@idDZ INT,
@IDPrikaz INT,
@IDKmen INT,
@NekontrolMnozOdvedFinal bit=0,
@mnozstvi numeric(19,6)=0,
@radaOdvNaSklad NVARCHAR(3)=NULL,
@sklProOdvod NVARCHAR(30)=NULL,
@radaVPr NVARCHAR(10)
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)
-- CREATE TABLE #HDCTabGenOdvodZeMzdyKonfig (RadaOdvodNaSklad NVARCHAR(3), SkladProOdvod NVARCHAR(30), BezVyrobnichCisel BIT=0, IDUziv INT)
IF OBJECT_ID(N'tempdb..#HDCTabGenOdvodZeMzdyKonfig', N'U') IS NOT NULL
SELECT TOP(1) @radaOdvNaSklad=RadaOdvodNaSklad, @sklProOdvod=SkladProOdvod, @bezVyrCis=ISNULL(BezVyrobnichCisel,@bezVyrCis),
@idUziv=ISNULL(IDUziv, @idUziv)
FROM #HDCTabGenOdvodZeMzdyKonfig
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))
IF EXISTS (SELECT 1 FROM dbo.TabPrikazMzdyAZmetky WHERE GenerovanoOdvadeni=1 AND ID=@IDMzdy)
RETURN 0
SELECT @mnozstvi=kusy_odv FROM dbo.TabPrikazMzdyAZmetky WHERE ID=@IDMzdy
UPDATE dbo.TabPrikazMzdyAZmetky SET GenerovanoOdvadeni=1 WHERE ID=@IDMzdy
IF (@@ROWCOUNT=0) RETURN 0
IF @mnozstvi<=0.0 RETURN 0
SELECT @IDPrikaz=IDPrikaz FROM dbo.TabPrikazMzdyAZmetky WHERE ID=@IDMzdy
SELECT @radaVPr=Rada, @IDKmen=IDTabKmen FROM dbo.TabPrikaz WHERE ID=@IDPrikaz
-- nastav sklad pro odvod podle karty
IF (@sklProOdvod IS NULL)
SELECT @sklProOdvod=VychoziSklad FROM dbo.TabParKmZ WHERE IDKmenZbozi=@IDKmen
-- pripadne zkus podle rady prikazu
SELECT @radaOdvNaSklad=CASE WHEN RadaDokl_OdvedeniPrikazu IS NULL THEN @radaOdvNaSklad ELSE RadaDokl_OdvedeniPrikazu END,
@sklProOdvod=CASE WHEN PrijemVyrDil_SkladProGenHlavDZ IS NULL THEN @sklProOdvod ELSE PrijemVyrDil_SkladProGenHlavDZ END
FROM dbo.TabRadyPrikazu WHERE Rada=@radaVPr
UPDATE #tabOdved SET mnozstvi=CASE WHEN @NekontrolMnozOdvedFinal=0 AND mnozstvi+@mnozstvi>maxMnozstvi THEN maxMnozstvi ELSE mnozstvi+@mnozstvi END WHERE IDPrikaz=@IDPrikaz
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,
CASE WHEN @NekontrolMnozOdvedFinal=0 AND @mnozstvi>P.kusy_zive THEN P.kusy_zive ELSE @mnozstvi END,
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=@IDPrikaz AND
(CASE WHEN @NekontrolMnozOdvedFinal=0 AND @mnozstvi>P.kusy_zive THEN P.kusy_zive ELSE @mnozstvi END)>0
INSERT INTO #TabOdved_IDMzdy (IDPrikaz, IDMzdy) VALUES (@IDPrikaz, @IDMzdy)
UPDATE O SET maxMnozstvi=CASE WHEN RP.NekontrolMnozOdvedFinal=1 THEN NULL ELSE P.kusy_zive END
FROM #tabOdved O
INNER JOIN dbo.TabPrikaz P ON (P.ID=O.IDPrikaz)
INNER JOIN dbo.TabRadyPrikazu RP ON (RP.rada=P.rada)
UPDATE #tabOdved SET mnozstvi=maxMnozstvi WHERE maxMnozstvi IS NOT NULL AND mnozstvi>maxMnozstvi
DELETE #TabVyrCisProGenOdv WHERE IDOdvedeni IN (SELECT O2.ID FROM #tabOdved O2 WHERE O2.Mnozstvi<=0.0)
DELETE #TabPolotovProGenOdv WHERE IDOdvedeni IN (SELECT O2.ID FROM #tabOdved O2 WHERE O2.Mnozstvi<=0.0)
DELETE #tabOdved WHERE Mnozstvi<=0.0
EXEC dbo.hp_PrednabidniTabVyrCisProGenOdv @ProIDPrikaz=NULL
IF (@bezVyrCis=1)
DELETE #TabVyrCisProGenOdv
BEGIN TRY
EXEC @ret=dbo.hp_OdvedeniPrikazu @RadaDokladu=@radaOdvNaSklad, @IDObdobi=NULL, @KonecneOdvedeni=0, @DatPorizeni=NULL, @SekejZakazky=1, @SekejPrikazy=1
END TRY
BEGIN CATCH
SET @errMsg = 'Chyba pri odvadeni: ' + ERROR_MESSAGE()
END CATCH
IF (@realizujPrijem=1)
BEGIN
DECLARE
@idPrij INT
DECLARE prij CURSOR LOCAL FOR
SELECT ID FROM #TabGenPrijem
OPEN prij
WHILE (1=1)
BEGIN
FETCH NEXT FROM prij INTO @idPrij
IF (@@FETCH_STATUS<>0) BREAK
BEGIN TRY
EXEC dbo.hp_Realizuj_Prijem @ID=@idPrij, @DatumRealizace=NULL, @Uzivatel=@idUziv, @BylaChyba=@bChyba OUT, @VypnoutUpozorneniPriZajistovani=1
END TRY
BEGIN CATCH
SET @errMsg = ERROR_MESSAGE()
END CATCH
END
CLOSE prij
DEALLOCATE prij
END
SET @IDDoklad = NULL
IF (1=(SELECT COUNT(*) FROM #TabGenPrijem))
SET @IDDoklad=(SELECT TOP(1) ID FROM #TabGenPrijem)
-- 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 #HDCTabGenOdvodZeMzdyKonfig

View File

@ -0,0 +1,309 @@
-- dbo.ep_Vyroba_GenVydejZeMzdy
CREATE PROCEDURE dbo.ep_Vyroba_GenVydejZeMzdy
@IDMzdy INT,
@IDDoklad INT=NULL OUT,
@errMsg NVARCHAR(500)=N'' OUT,
@extTab NVARCHAR(50)=NULL,
@vydejAll BIT=0,
@realizujVydej BIT=0
AS
-- HD Consulting Strakonice, T. Buzin
-- !! proceduru neupravujte, bude stejne pregenerovana pri Windows sluzby HDCDZApi !!
-- @extTab - tabulka, do ktere budou vraceny pohyby vydejky @extTab (ID INT NOT NULL, IDPohZbo INT NOT NULL)
-- @vydejAll - bude vydano vse, nejen kde jde splnena podminka TabPrKVazby - dbo.hf_GetPrPDokladForPrKV(PrKV.ID)=@PrP_Doklad
-- pokud existuje objekt #HDCTabPrKVazbyGenPredna, jedu vydej podle nej
SET NOCOUNT ON
DECLARE
@bChyba BIT,
@retVal INT=0,
@errID int,
@sql NVARCHAR(1000),
@idUziv INT=0
DECLARE @vydejky TABLE (ID INT NOT NULL)
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)
DELETE FROM @vydejky
IF EXISTS(SELECT 1 FROM dbo.TabPrikazMzdyAZmetky)
BEGIN
SELECT @retVal=MAX(ID) FROM dbo.TabPrikazMzdyAZmetky
DBCC CHECKIDENT(TabPrikazMzdyAZmetky, RESEED, @retVal)
END
ELSE
DBCC CHECKIDENT(TabPrikazMzdyAZmetky, RESEED, 1)
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 NTEXT NULL,
priorita INT NOT NULL DEFAULT 0,
vyssi INT NOT NULL,
nizsi INT NOT NULL,
DavkaTPV NUMERIC(19,6) NOT NULL DEFAULT 1,
pozice NVARCHAR(100) NULL DEFAULT N'',
Operace NCHAR(4) NULL,
FixniMnozstvi NUMERIC(19,6) NOT NULL DEFAULT 0,
mnozstvi NUMERIC(19,6) NOT NULL DEFAULT 1,
ProcZtrat NUMERIC(5,2) NOT NULL DEFAULT 0,
mnozstviSeZtratou NUMERIC(19,6) NOT NULL DEFAULT 0,
Prirez NUMERIC(19,6) NOT NULL DEFAULT 1,
Poznamka NTEXT NULL,
pom_pomer_A NUMERIC(19,6) NULL,
pom_pomer_B NUMERIC(19,6) NULL,
Dodavatel INT NULL,
mnoz_pozadovane AS (CONVERT(numeric(19,6),(CASE WHEN [mnoz_nepotrebne]>[mnoz_zad] THEN 0.0 ELSE [mnoz_zad] - [mnoz_nepotrebne] END))),
PRIMARY KEY (ID)
)
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)
)
DECLARE
@RespektovatExistEvid bit=0,
@IDPrikaz int=NULL,
@dilec INT,
@IDPrPostup INT=NULL,
@mnozstviPomer_A numeric(19,6),
@mnozstviPomer_B numeric(19,6),
@IDPrKV int,
@mnoz_zad numeric(19,6),
@PrKVDoklad int,
@PocetVazeb int,
@PrP_Doklad int,
@skladProVydejKZ NVARCHAR(30)
SELECT @errID=NULL, @errMsg='', @PocetVazeb=0
SELECT @IDPrikaz=MZ.IDPrikaz, @mnozstviPomer_A=(MZ.kusy_odv+MZ.kusy_zmet_opr+MZ.kusy_zmet_neopr), @mnozstviPomer_B=PrP.kusy_zad, @PrP_Doklad=PrP.Doklad,
@IDPrPostup=PrP.ID
FROM dbo.TabPrikazMzdyAZmetky MZ
INNER JOIN dbo.TabPrPostup PrP ON (PrP.IDPrikaz=MZ.IDPrikaz AND PrP.Doklad=MZ.DokladPrPostup AND PrP.Alt=MZ.AltPrPostup AND PrP.IDOdchylkyDo IS NULL)
WHERE MZ.ID=@IDMzdy
UPDATE dbo.TabPrikazMzdyAZmetky SET GenerovanaMatVydejka=1 WHERE ID=@IDMzdy
IF (@@ROWCOUNT=0)
RETURN 0
SELECT @dilec=IDTabKmen FROM dbo.TabPrikaz WHERE ID=@IDPrikaz
IF OBJECT_ID('dbo.TabKmenZbozi_EXT', 'U') IS NOT NULL
IF COL_LENGTH('dbo.TabKmenZbozi_EXT', '_SkladProVydejMat') IS NOT NULL
SET @skladProVydejKZ = (SELECT _SkladProVydejMat FROM dbo.TabKmenZbozi_EXT WHERE ID=@dilec)
SET @skladProVydejKZ = ISNULL(@skladProVydejKZ, N'')
IF OBJECT_ID(N'tempdb..#HDCTabPrKVazbyGenPredna', N'U') IS NULL
BEGIN
IF (@mnozstviPomer_A<=0.0)
RETURN -1
IF (@vydejAll=1)
DECLARE crPom1334 CURSOR FAST_FORWARD LOCAL FOR
SELECT PrKV.ID, PrKV.Mnoz_zad, PrKV.Doklad
FROM dbo.TabPrKVazby PrKV
INNER JOIN dbo.TabPrikaz P ON (P.ID=PrKV.IDPrikaz)
INNER JOIN dbo.TabRadyPrikazu RP ON (RP.rada=P.rada)
INNER JOIN dbo.TabKmenZbozi KZ ON (KZ.ID=PrKV.nizsi AND KZ.sluzba=0)
WHERE P.StavPrikazu IN (30,50) AND (P.kusy_zive>0.0 OR RP.KontrolovatRozpracPriUzav=0) AND PrKV.predzpracovano=0 AND PrKV.uzavreno=0 AND PrKV.RezijniMat=0 AND
PrKV.IDPrikaz=@IDPrikaz AND PrKV.prednastaveno=1 AND PrKV.IDOdchylkyDo IS NULL
ELSE
DECLARE crPom1334 CURSOR FAST_FORWARD LOCAL FOR
SELECT PrKV.ID, PrKV.Mnoz_zad, PrKV.Doklad
FROM dbo.TabPrKVazby PrKV
INNER JOIN dbo.TabPrikaz P ON (P.ID=PrKV.IDPrikaz)
INNER JOIN dbo.TabRadyPrikazu RP ON (RP.rada=P.rada)
INNER JOIN dbo.TabKmenZbozi KZ ON (KZ.ID=PrKV.nizsi AND KZ.sluzba=0)
WHERE P.StavPrikazu IN (30,50) AND (P.kusy_zive>0.0 OR RP.KontrolovatRozpracPriUzav=0) AND PrKV.predzpracovano=0 AND PrKV.uzavreno=0 AND PrKV.RezijniMat=0 AND
PrKV.IDPrikaz=@IDPrikaz AND dbo.hf_GetPrPDokladForPrKV(PrKV.ID)=@PrP_Doklad AND PrKV.prednastaveno=1 AND PrKV.IDOdchylkyDo IS NULL
OPEN crPom1334
FETCH NEXT FROM crPom1334 INTO @IDPrKV, @Mnoz_zad, @PrKVDoklad
WHILE @@fetch_status=0
BEGIN
UPDATE #TabPrKVazbyGen SET MnozstviPoz=@mnoz_zad * (pom_pomer_A+@mnozstviPomer_A)/pom_pomer_B, pom_pomer_A=pom_pomer_A+@mnozstviPomer_A
WHERE IDPrKV=@IDPrKV
IF (@@ROWCOUNT=0)
BEGIN
IF @RespektovatExistEvid=1
SELECT @mnozstviPomer_A=SUM(MZ.kusy_odv+MZ.kusy_zmet_opr+MZ.kusy_zmet_neopr)
FROM dbo.TabPrikazMzdyAZmetky MZ WHERE MZ.IDPrikaz=@IDPrikaz AND MZ.DokladPrPostup=@PrP_Doklad AND MZ.GenerovanaMatVydejka=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 * @mnozstviPomer_A/@mnozstviPomer_B,
@mnozstviPomer_A, @mnozstviPomer_B,
PrKV.Doklad, PrKV.IDPrikaz, PrKV.Prednastaveno, PrKV.Sklad, PrKV.VyrStredisko, PrKV.IDPracoviste, PrKV.mnoz_zad, PrKV.Mnoz_nepotrebne,
PrKV.Mnoz_skut_realizovane, PrKV.Cena_real, PrKV.Mnoz_odv, PrKV.Cena_odv, PrKV.priorita, PrKV.vyssi, PrKV.nizsi, PrKV.DavkaTPV, PrKV.pozice, PrKV.Operace, PrKV.FixniMnozstvi,
PrKV.mnozstvi, PrKV.ProcZtrat, PrKV.mnozstviSeZtratou, PrKV.Prirez, PrKV.Poznamka
FROM dbo.TabPrKVazby PrKV
WHERE PrKV.ID=@IDPrKV
END
INSERT INTO #TabPrKVazbyGen_IDMzdy (IDPrikaz, Doklad, IDMzdy) VALUES (@IDPrikaz, @PrKVDoklad, @IDMzdy)
SET @PocetVazeb=@PocetVazeb + 1
FETCH NEXT FROM crPom1334 INTO @IDPrKV, @Mnoz_zad, @PrKVDoklad
END
CLOSE crPom1334
DEALLOCATE crPom1334
IF (@PocetVazeb<=0)
RETURN -2
END
ELSE
BEGIN -- pokud mam seznam na co vygenerovat vydejku, jedu podle nej
DELETE FROM #TabPrKVazbyGen
INSERT INTO #TabPrKVazbyGen
SELECT Generuj, PoKorekciDat, IDPrKV, Doklad, IDPrikaz, Prednastaveno, Sklad, VyrStredisko, IDPracoviste, mnoz_zad, Mnoz_nepotrebne, Mnoz_skut_realizovane,
Cena_real, Mnoz_odv, Cena_odv, MnozstviMax, PuvodniMnozstviPoz, MnozstviPoz, PomMnozPoz, IDPohZbo, PoznamkaNaDoklad, priorita, vyssi, nizsi, DavkaTPV,
pozice, Operace, FixniMnozstvi, mnozstvi, ProcZtrat, mnozstviSeZtratou, Prirez, Poznamka, pom_pomer_A, pom_pomer_B, Dodavatel
FROM #HDCTabPrKVazbyGenPredna
END
-- preddefinovana mzda pro provazani
IF OBJECT_ID(N'tempdb..#HDCTabPrKVazbyGen_IDMzdyPredna', N'U') IS NOT NULL
BEGIN
DELETE FROM #TabPrKVazbyGen_IDMzdy
INSERT INTO #TabPrKVazbyGen_IDMzdy
SELECT IDPrikaz, Doklad, IDMzdy FROM #HDCTabPrKVazbyGen_IDMzdyPredna
END
-- preddefinvana tabulka vyrobnich cisel
IF OBJECT_ID(N'tempdb..#HDCTabPrKVazbyGenVCPredna', N'U') IS NOT NULL
BEGIN
DELETE FROM #TabPrKVazbyGenVC
INSERT INTO #TabPrKVazbyGenVC
SELECT IDPolozky, VyrCislo, Mnozstvi, Sklad, IDKmenZbozi, IDVyrCP FROM #HDCTabPrKVazbyGenVCPredna
END
-- ext info k dilci, sklad, ze kterho se ma vydavat material
IF (@skladProVydejKZ<>N'')
UPDATE #TabPrKVazbyGen SET Sklad=@skladProVydejKZ
EXEC dbo.hp_AktualizaceTabPrKVazbyGenVC @Vratka=0
UPDATE #TabPrKVazbyGen SET Generuj=1
DROP TABLE IF EXISTS #TabGenRezVyd
CREATE TABLE #TabGenRezVyd (ID int NOT NULL, PRIMARY KEY (ID))
BEGIN TRY
EXEC @retVal=dbo.hp_generujRezVyd @RadaDokladu=NULL, @DruhPohybuZbo=NULL, @IDObdobi=0, @DatPorizeni=NULL, @SekejZakazky=0, @SekejPrikazy=0,
@IDExistDoklad=@IDDoklad, @SekejOperace=0
END TRY
BEGIN CATCH
SET @errMsg = 'Chyba generovani vydeje: ' + ERROR_MESSAGE()
END CATCH
INSERT @vydejky (ID) SELECT ID FROM #TabGenRezVyd
DECLARE
@idVyd INT,
@idKZ INT,
@idPZ INT
IF (@realizujVydej=1)
BEGIN
DECLARE vyd CURSOR LOCAL FOR
SELECT ID FROM #TabGenRezVyd
OPEN vyd
WHILE (1=1)
BEGIN
FETCH NEXT FROM vyd INTO @idVyd
IF (@@FETCH_STATUS<>0) BREAK
BEGIN TRY
EXEC dbo.hp_Realizuj_Vydej @ID=@idVyd, @DatumRealizace=NULL, @Uzivatel=@idUziv, @Hlidat=0, @BylaChyba=@bChyba OUT
END TRY
BEGIN CATCH
SET @errMsg = ERROR_MESSAGE()
END CATCH
END
CLOSE vyd
DEALLOCATE vyd
END
IF (1=(SELECT COUNT(*) FROM @vydejky))
SET @IDDoklad=(SELECT TOP(1) ID FROM @vydejky)
IF (@extTab IS NOT NULL) AND EXISTS(SELECT 1 FROM #TabPrKVazbyGen WHERE IDPohZbo IS NOT NULL)
IF OBJECT_ID(@extTab, N'U') IS NOT NULL
BEGIN
SET @sql = N'DELETE FROM ' + @extTab
EXECUTE sp_executesql @sql
SET @sql = N'INSERT ' + @extTab + N' (ID, IDPohZbo) SELECT ID, IDPohZbo FROM #TabPrKVazbyGen WHERE IDPohZbo IS NOT NULL'
EXECUTE sp_executesql @sql
END
-- uklid
DROP TABLE IF EXISTS #TabPrKVazbyGen
DROP TABLE IF EXISTS #TabGenRezVyd
DROP TABLE IF EXISTS #TabPrKVazbyGen_IDMzdy
DROP TABLE IF EXISTS #TabPrKVazbyGenVC

View File

@ -0,0 +1,75 @@
-- dbo.ep_Vyroba_InsertEvidRozpracOper
CREATE PROCEDURE dbo.ep_Vyroba_InsertEvidRozpracOper
@IDZamestnance INT=NULL,
@IDPracoviste INT=NULL,
@IDStroje INT=NULL,
@CasZahajeni DATETIME=NULL,
@ErrMsg NVARCHAR(500)=N'' OUT
AS
-- !! proceduru neupravujte, bude stejne pregenerovana pri startu Windows sluzby HDCDZApi !!
SET NOCOUNT ON
DECLARE
@tranPred INT
DECLARE
@idEROp INT=NULL
IF EXISTS(SELECT 1 FROM dbo.TabEvidRozpracOper)
BEGIN
SELECT @idEROp=MAX(ID) FROM dbo.TabEvidRozpracOper
DBCC CHECKIDENT(TabEvidRozpracOper, RESEED, @idEROp)
END
ELSE
DBCC CHECKIDENT(TabEvidRozpracOper, RESEED, 1)
SET @idEROp=NULL
IF (@IDPracoviste IS NULL) AND (@IDStroje IS NOT NULL)
SELECT @IDPracoviste=IDPrac FROM dbo.TabCisStroju WHERE ID=@IDStroje
IF (@IDZamestnance IS NULL) OR (@IDPracoviste IS NULL)
BEGIN
SET @ErrMsg = N'Neni zadan zamestnanec nebo pracoviste'
RETURN NULL
END
IF OBJECT_ID(N'tempdb..#TabExtKom', N'U') IS NULL
CREATE TABLE #TabExtKom (Typ TINYINT, Poznamka NVARCHAR(255) NOT NULL DEFAULT N'')
SET @CasZahajeni = ISNULL(@CasZahajeni, GETDATE())
BEGIN TRY
SET @tranPred = @@TRANCOUNT
IF (@tranPred=0) BEGIN TRAN
INSERT dbo.TabEvidRozpracOper (IDZamestnance, CasZahajeni, IDPracoviste, IDStroje)
SELECT @IDZamestnance, @CasZahajeni, @IDPracoviste, @IDStroje
SET @idEROp = SCOPE_IDENTITY()
-- slepice
IF OBJECT_ID(N'dbo.ep_Vyroba_InsertEvidRozpracOper_Po', N'P') IS NOT NULL
EXEC dbo.ep_Vyroba_InsertEvidRozpracOper_Po @idEROp
IF (@tranPred=0) ANd (@@TRANCOUNT>0)
COMMIT TRAN
END TRY
BEGIN CATCH
IF (@tranPred=0) ANd (@@TRANCOUNT>0)
ROLLBACK TRAN
SET @ErrMsg = ERROR_MESSAGE()
INSERT #TabExtKom (Typ, Poznamka) SELECT 3, @ErrMsg
SET @idEROp = NULL
END CATCH
RETURN @idEROp

View File

@ -0,0 +1,67 @@
-- dbo.ep_Vyroba_InsertEvidRozpracOperPol
CREATE PROCEDURE dbo.ep_Vyroba_InsertEvidRozpracOperPol
@IdEvidRozpOper INT,
@IdPrikaz INT,
@doklPrPost INT,
@altPrPost NCHAR(1),
@IdVyrCis INT=NULL,
@mnozOdv NUMERIC(19,6)=0,
@skCas NUMERIC(19,6)=0,
@skCasT TINYINT=1,
@skCasObsl NUMERIC(19,6)=0,
@skCasObslT TINYINT=1,
@errMsg NVARCHAR(500)=N'' OUT
AS
-- !! proceduru neupravujte, bude stejne pregenerovana pri startu Windows sluzby HDCDZApi !!
SET NOCOUNT ON
DECLARE
@tranPred INT,
@idEROpPol INT=NULL
IF OBJECT_ID(N'tempdb..#TabExtKom', N'U') IS NULL
CREATE TABLE #TabExtKom (Typ TINYINT, Poznamka NVARCHAR(255) NOT NULL DEFAULT N'')
-- cisteni identity
IF EXISTS (SELECT 1 FROM dbo.TabEvidRozpracOperR)
BEGIN
SELECT @idEROpPol=MAX(ID) FROM dbo.TabEvidRozpracOperR
DBCC CHECKIDENT (TabEvidRozpracOperR, RESEED, @idEROpPol)
END
ELSE
DBCC CHECKIDENT (TabEvidRozpracOperR, RESEED, 1)
SET @idEROpPol=NULL
BEGIN TRY
SET @tranPred = @@TRANCOUNT
IF (@tranPred=0) BEGIN TRAN
INSERT dbo.TabEvidRozpracOperR (IDEvidRozpracOper, IDPrikaz, DokladPrPostup, AltPrPostup, IDVyrCis, Mnoz_odv, Sk_cas, Sk_cas_T, Sk_cas_Obsluhy, Sk_cas_Obsluhy_T)
SELECT @IdEvidRozpOper, @IdPrikaz, @doklPrPost, @altPrPost, @IdVyrCis, @mnozOdv, @skCas, @skCasT, @skCasObsl, @skCasObslT
SET @idEROpPol = SCOPE_IDENTITY()
IF OBJECT_ID(N'dbo.ep_Vyroba_InsertEvidRozpracOperPol_Po', N'P') IS NOT NULL
EXEC dbo.ep_Vyroba_InsertEvidRozpracOperPol_Po @idEROpPol
IF (@tranPred=0) ANd (@@TRANCOUNT>0)
COMMIT TRAN
END TRY
BEGIN CATCH
IF (@tranPred=0) ANd (@@TRANCOUNT>0)
ROLLBACK TRAN
SET @errMsg = ERROR_MESSAGE()
INSERT #TabExtKom (Typ, Poznamka) SELECT 3, LEFT(@errMsg,255)
SET @idEROpPol = NULL
END CATCH
RETURN @idEROpPol