554 lines
20 KiB
Transact-SQL
554 lines
20 KiB
Transact-SQL
-- dbo.ep_Vyroba_GenVydejZeMzdy
|
|
CREATE PROCEDURE dbo.ep_Vyroba_GenVydejZeMzdy
|
|
@IDMzdy INT=NULL,
|
|
@IDDoklad INT=NULL,
|
|
@spotrebaTesto BIT=0,
|
|
@spotreba702 BIT=0,
|
|
@smazVydejTesto BIT=0,
|
|
@errMsg NVARCHAR(500)=N'' OUT,
|
|
@extTab NVARCHAR(50)=NULL,
|
|
@vydejAll BIT=0,
|
|
@realizujVydej BIT=0,
|
|
@denSmena NVARCHAR(15)=NULL,
|
|
@sklVydej NVARCHAR(30)=N'261',
|
|
@radaVydej NVARCHAR(3)=N'223',
|
|
@respExistDokl BIT=1,
|
|
@genPrijemNaNeskladMnoz BIT=0
|
|
AS
|
|
|
|
-- HD Consulting Strakonice, T. Buzin
|
|
-- !! proceduru neupravujte, bude stejne pregenerovana pri startu 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
|
|
@tranCount INT,
|
|
@bChyba BIT,
|
|
@opakReal BIT,
|
|
@retVal INT=0,
|
|
@errID int,
|
|
@sql NVARCHAR(1000),
|
|
@idUziv INT=0,
|
|
@idZam INT,
|
|
@sklTechnolog NVARCHAR(30),
|
|
@sklTechnologPolo NVARCHAR(30),
|
|
@sklMatHlavni NVARCHAR(30),
|
|
@sklPekarna NVARCHAR(30),
|
|
@szDilec NVARCHAR(3)
|
|
DECLARE
|
|
@idDZOut INT,
|
|
@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,
|
|
@idSSPomocPek INT,
|
|
@mnozSklad NUMERIC(19,6),
|
|
@mnozVydej NUMERIC(19,6),
|
|
@mnozPrij NUMERIC(19,6),
|
|
@genDodatecnyPrijem BIT=0
|
|
|
|
|
|
|
|
|
|
|
|
IF OBJECT_ID(N'dbo.TabUserCfg', N'U') IS NOT NULL
|
|
SET @idUziv = (SELECT ID FROM dbo.TabUserCfg WHERE LoginName=SUSER_SNAME())
|
|
SET @idUziv = ISNULL(@idUziv, 0)
|
|
|
|
|
|
SET @denSmena = ISNULL(@denSmena, N'')
|
|
IF (@sklMatHlavni IS NULL)
|
|
SELECT @sklMatHlavni=Cislo FROM dbo.TabStrom WHERE Nazev=N'Hlavní sklad - Materiál' AND CisloStr LIKE N'3%'
|
|
IF (@sklTechnolog IS NULL)
|
|
SELECT @sklTechnolog=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technolog%NEÚÈ%' AND Nazev NOT LIKE N'%polotov%' AND CisloStr LIKE N'2%'
|
|
IF (@sklTechnologPolo IS NULL)
|
|
SELECT @sklTechnologPolo=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technolog%NEÚÈ%pol%' AND CisloStr LIKE N'2%'
|
|
IF (@sklTechnolog IS NULL)
|
|
SELECT @sklTechnolog=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technolog%sklad%výdej%' AND CisloStr LIKE N'2%'
|
|
IF (@sklPekarna IS NULL)
|
|
SELECT @sklPekarna=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Výroba - Pekárna' AND CisloStr LIKE N'2%'
|
|
|
|
|
|
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 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)
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
DECLARE
|
|
@RespektovatExistEvid bit,
|
|
@idDilec INT,
|
|
@IDPrikaz int=NULL,
|
|
@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
|
|
|
|
|
|
SET @RespektovatExistEvid = @respExistDokl
|
|
|
|
|
|
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, @szDilec=k.SkupZbo
|
|
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)
|
|
INNER JOIN dbo.TabPrikaz vp ON (vp.ID=MZ.IDPrikaz)
|
|
INNER JOIN dbo.TabKmenZbozi k ON (k.ID=vp.IDTabKmen)
|
|
WHERE MZ.ID=@IDMzdy
|
|
|
|
UPDATE dbo.TabPrikazMzdyAZmetky SET GenerovanaMatVydejka=1 WHERE ID=@IDMzdy
|
|
-- pokud uz byla generovana vydejka, skonci
|
|
IF (@@ROWCOUNT=0)
|
|
RETURN 0
|
|
|
|
|
|
SELECT @idZam=Zamestnanec FROM dbo.TabPrikazMzdyAZmetky WHERE ID=@IDMzdy
|
|
SELECT @idDilec = IDTabKmen FROM dbo.TabPrikaz WHERE ID=@IDPrikaz
|
|
|
|
|
|
|
|
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 AND PrKV.uzavreno=0
|
|
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
|
|
DROP TABLE #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
|
|
DROP TABLE #HDCTabPrKVazbyGen_IDMzdyPredna
|
|
END
|
|
|
|
|
|
|
|
EXEC dbo.hp_AktualizaceTabPrKVazbyGenVC @Vratka=0
|
|
UPDATE #TabPrKVazbyGen SET Generuj=1, Sklad=@sklVydej
|
|
|
|
|
|
IF (@smazVydejTesto=1)
|
|
BEGIN
|
|
-- vazba je primo na kartu testa
|
|
IF (@szDilec<>N'701') AND EXISTS (SELECT 1 FROM #TabPrKVazbyGen WHERE IDPrikaz=@IDPrikaz AND nizsi IN (SELECT ID FROM dbo.TabKmenZbozi WHERE SkupZbo=N'701'))
|
|
DELETE FROM #TabPrKVazbyGen WHERE IDPrikaz=@IDPrikaz AND nizsi IN (SELECT ID FROM dbo.TabKmenZbozi WHERE SkupZbo=N'701')
|
|
|
|
-- vazba je pres montaz SK702
|
|
IF (@szDilec<>N'701') AND EXISTS (SELECT 1 FROM #TabPrKVazbyGen WHERE IDPrikaz=@IDPrikaz AND nizsi IN (SELECT ID FROM dbo.TabKmenZbozi WHERE SkupZbo=N'702'))
|
|
DELETE FROM #TabPrKVazbyGen WHERE IDPrikaz=@IDPrikaz AND nizsi IN (SELECT ID FROM dbo.TabKmenZbozi WHERE SkupZbo=N'701')
|
|
END
|
|
|
|
|
|
DROP TABLE IF EXISTS #TabGenRezVyd
|
|
CREATE TABLE #TabGenRezVyd (ID int NOT NULL, PRIMARY KEY (ID))
|
|
|
|
|
|
BEGIN TRY
|
|
EXEC @retVal=dbo.hp_generujRezVyd @RadaDokladu=@radaVydej, @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
|
|
|
|
|
|
|
|
|
|
|
|
DECLARE
|
|
@idVyd INT,
|
|
@idKZ INT,
|
|
@idPZ INT,
|
|
@idSS INT,
|
|
@poslSarze NVARCHAR(100),
|
|
@errMsg702 NVARCHAR(500),
|
|
@idKZ702 INT,
|
|
@idPrikaz702 INT,
|
|
@doklKV702 INT,
|
|
@doklOp702 INT,
|
|
@alt702 NCHAR(1),
|
|
@mnoz702 NUMERIC(19,6),
|
|
@idMzda702 INT,
|
|
@aktDat DATETIME,
|
|
@idKZPomoc INT,
|
|
@jc NUMERIC(19,6)
|
|
|
|
SET @aktDat = GETDATE()
|
|
|
|
|
|
-- potrebuju si vyrobit tisicikus ? musim pred realizaci vydejky na vyssi prikaz, udelam odvedenim prikazu na vyssi
|
|
/*
|
|
IF (@spotreba702=1)
|
|
BEGIN
|
|
DECLARE t CURSOR LOCAL FOR
|
|
SELECT k.ID, 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 k.SkupZbo=N'702' AND k.Blokovano=0
|
|
OPEN t
|
|
WHILE (1=1)
|
|
BEGIN
|
|
FETCH NEXT FROM t INTO @idKZ702, @mnoz702
|
|
IF (@@FETCH_STATUS<>0) BREAK
|
|
|
|
SET @idPrikaz702 = (SELECT ID FROM dbo.TabPrikaz WHERE IDPrikazVyssi=@IDPrikaz AND IDTabKmen=@idKZ702 AND StavPrikazu=30)
|
|
IF (@idPrikaz702 IS NOT NULL)
|
|
BEGIN
|
|
-- evidence operace peceni
|
|
SELECT TOP(1) @doklOp702=Doklad, @alt702=Alt FROM dbo.TabPrPostup WHERE IDOdchylkyDo IS NULL AND IDPrikaz=@idPrikaz702
|
|
EXEC @idMzda702=dbo.hp_ZaevidujOperaci @IDPrikaz=@idPrikaz702, @Doklad=@doklOp702, @Alt=@alt702, @Datum=NULL, @Stav=1, @IDZam=@idZam, @Kusy_odv=@mnoz702
|
|
SET @idMzda702 = ISNULL(@idMzda702, 0)
|
|
IF (@idMzda702>0)
|
|
BEGIN
|
|
-- vydejku materialu nedelej, testo bylo uz odepsano svym prevedenim na vyssi
|
|
-- EXEC dbo.ep_Vyroba_GenVydejZeMzdy @IDMzdy=@idMzda702, @spotrebaTesto=1, @realizujVydej=1, @errMsg=@errMsg702 OUT
|
|
|
|
EXEC dbo.ep_Vyroba_GenOdvodZeMzdy @IDMzdy=@idMzda702, @realizujPrijem=1, @errMsg=@errMsg702 OUT
|
|
END
|
|
-- odvedeni na vyssi prikaz
|
|
SELECT TOP(1) @doklKV702=Doklad FROM dbo.TabPrKVazby WHERE IDOdchylkyDo IS NULL AND IDPrikaz=@IDPrikaz AND nizsi=@idKZ702
|
|
EXEC dbo.hp_OdvedeniPrikazuPrevodem @DatPripadu=@aktDat, @KonecneOdvedeniNatvrdo=0, @IDPrikazZdroj=@idPrikaz702, @IDPrikazCil=@IDPrikaz,
|
|
@Doklad=@doklKV702, @IDDilec=@idKZ702, @mnozstvi=@mnoz702, @IDOdvedeniVC=0
|
|
END
|
|
END
|
|
CLOSE t
|
|
DEALLOCATE t
|
|
END
|
|
*/
|
|
|
|
|
|
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
|
|
|
|
IF (@denSmena<>N'')
|
|
BEGIN
|
|
IF NOT EXISTS(SELECT 1 FROM dbo.TabDokladyZbozi_EXT WHERE ID=@idVyd)
|
|
INSERT dbo.TabDokladyZbozi_EXT (ID) VALUES (@idVyd)
|
|
UPDATE dbo.TabDokladyZbozi_EXT SET _Vyroba_DenSmena=@denSmena WHERE ID=@idVyd
|
|
END
|
|
|
|
DECLARE pV 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=@idVyd AND k.Sluzba=0
|
|
OPEN pV
|
|
WHILE (1=1)
|
|
BEGIN
|
|
FETCH NEXT FROM pV INTO @idPZ, @idKZ
|
|
IF (@@FETCH_STATUS<>0) BREAK
|
|
SET @idSS = (SELECT ID FROM dbo.TabStavSkladu WHERE IDKmenZbozi=@idKZ AND IDSklad=@sklPekarna)
|
|
SET @poslSarze = ISNULL( (SELECT _Prevod_PosledniSarze FROM dbo.TabStavSkladu_EXT WHERE ID=@idSS), N'')
|
|
IF (@poslSarze<>N'')
|
|
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 _Vyroba_Sarze=@poslSarze WHERE ID=@idPZ
|
|
END
|
|
END
|
|
CLOSE pV
|
|
DEALLOCATE pV
|
|
|
|
|
|
|
|
|
|
-- begin: prijemka materialu pro vydejku (1:1)
|
|
SET @idDZPomocPrij=NULL
|
|
DECLARE pomPrij CURSOR LOCAL FOR
|
|
SELECT p.IDZboSklad, p.Mnozstvi, s.IDKmenZbozi
|
|
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=@idVyd
|
|
AND k.Material=1 AND k.Sluzba=0
|
|
OPEN pomPrij
|
|
WHILE (1=1) AND (1=0)
|
|
BEGIN
|
|
FETCH NEXT FROM pomPrij INTO @idSSPomocPrij, @mnozVydej, @idKZPomoc
|
|
IF (@@FETCH_STATUS<>0) BREAK
|
|
|
|
IF (@mnozVydej>0)
|
|
BEGIN
|
|
SET @mnozPrij = @mnozVydej
|
|
IF (@idDZPomocPrij IS NULL)
|
|
BEGIN
|
|
EXEC dbo.hp_InsertHlavickyOZ @ident=@idDZPomocPrij OUT, @Sklad=@sklTechnolog, @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
|
|
IF (@idPZPomocPrij IS NOT NULL)
|
|
BEGIN
|
|
SET @jc = 0
|
|
SET @idSSPomocPek = (SELECT ID FROM dbo.TabStavSkladu WHERE IDSklad=@sklPekarna AND IDKmenZbozi=@idKZPomoc)
|
|
IF (@idSSPomocPek IS NULL)
|
|
SET @idSSPomocPek = (SELECT ID FROM dbo.TabStavSkladu WHERE IDSklad=@sklMatHlavni AND IDKmenZbozi=@idKZPomoc)
|
|
IF (@idSSPomocPek IS NOT NULL)
|
|
SET @jc = ISNULL( (SELECT CASE MnozFinReal WHEN 0 THEN 0 ELSE StavSkladuSouvis/MnozFinReal END FROM dbo.TabStavSkladu WHERE ID=@idSSPomocPek), 0)
|
|
UPDATE dbo.TabPohybyZbozi SET JCbezDaniKc=ISNULL(@jc, 1) WHERE Id=@idPZPomocPrij
|
|
END -- @idPZPomocPrij
|
|
END -- @idDZPomocPrij
|
|
END -- @mnozVydej>0
|
|
END
|
|
CLOSE pomPrij
|
|
DEALLOCATE pomPrij
|
|
IF (@idDZPomocPrij IS NOT NULL)
|
|
BEGIN
|
|
BEGIN TRY
|
|
EXEC dbo.hp_VypCenOZPolozek_IDDokladu @IDDoklad=@idDZPomocPrij, @AktualizaceSlev=0
|
|
EXEC dbo.hp_Realizuj_Prijem @ID=@idDZPomocPrij, @DatumRealizace=NULL, @Uzivatel=@idUziv, @BylaChyba=@bChyba OUT, @VypnoutUpozorneniPriZajistovani=1
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @errMsg = ERROR_MESSAGE()
|
|
INSERT dbo._hdc_ph_Log (Typ, LogText, IntValue) SELECT 10, N'Chyba (1) pøíjemky korekce (ID prijemky ' + CONVERT(nvarchar, @idDZPomocPrij) + N') naskladnìní pro výdejku: ' + @errMsg, @idVyd
|
|
END CATCH
|
|
END -- @idDZPomocPrij IS NOT NULL
|
|
-- end: prijemka materialu pro vydejku (1:1)
|
|
|
|
|
|
|
|
|
|
|
|
-- realizace vydejky
|
|
IF (@realizujVydej=1)
|
|
BEGIN
|
|
SET @tranCount=@@TRANCOUNT
|
|
BEGIN TRY
|
|
EXEC dbo.hp_Realizuj_Vydej @ID=@idVyd, @DatumRealizace=NULL, @Uzivatel=@idUziv, @Hlidat=0, @BylaChyba=@bChyba OUT
|
|
END TRY
|
|
BEGIN CATCH
|
|
IF (@tranCount=0) AND (@@TRANCOUNT>0)
|
|
ROLLBACK
|
|
SET @opakReal=0
|
|
SET @errMsg = ERROR_MESSAGE()
|
|
IF (CHARINDEX(N'71553', @errMsg)>0)
|
|
SET @opakReal=1
|
|
IF (@opakReal=0)
|
|
INSERT dbo._hdc_ph_Log (Typ, LogText, IntValue) SELECT 10, N'Chyba realizace výdejky: ' + @errMsg, @idVyd
|
|
END CATCH
|
|
|
|
IF (@opakReal=1)
|
|
BEGIN
|
|
BEGIN TRY
|
|
SET @tranCount=@@TRANCOUNT
|
|
SET @errMsg = N''
|
|
SET @genDodatecnyPrijem=1
|
|
EXEC dbo.ep_Vyroba_DoplnSkladProVydejDleDokladu @IDDoklad=@idVyd, @errMsg=@errMsg OUT, @IDDokladPrijem=@idDZOut OUT
|
|
IF (@errMsg=N'')
|
|
EXEC dbo.hp_Realizuj_Vydej @ID=@idVyd, @DatumRealizace=NULL, @Uzivatel=@idUziv, @Hlidat=0, @BylaChyba=@bChyba OUT
|
|
ELSE
|
|
INSERT dbo._hdc_ph_Log (Typ, LogText, IntValue) SELECT 10, N'Chyba (2) pøíjemky korekce (ID ' + CONVERT(nvarchar, @idDZOut) + N') naskladnìní pro výdejku: ' + @errMsg, @idVyd
|
|
END TRY
|
|
BEGIN CATCH
|
|
IF (@tranCount=0) AND (@@TRANCOUNT>0)
|
|
ROLLBACK TRAN
|
|
SET @errMsg = ERROR_MESSAGE()
|
|
INSERT dbo._hdc_ph_Log (Typ, LogText, IntValue) SELECT 10, N'Chyba (2) opakované realizace výdejky: ' + @errMsg, @idVyd
|
|
END CATCH
|
|
END
|
|
|
|
-- znovu otestuj
|
|
IF EXISTS (SELECT 1 FROM dbo.TabDokladyZbozi WHERE ID=@idVyd AND Realizovano=0) AND (@genDodatecnyPrijem=0)
|
|
BEGIN
|
|
BEGIN TRY
|
|
SET @genDodatecnyPrijem=1
|
|
EXEC dbo.ep_Vyroba_DoplnSkladProVydejDleDokladu @IDDoklad=@idVyd, @errMsg=@errMsg OUT, @IDDokladPrijem=@idDZOut OUT
|
|
IF (@errMsg=N'')
|
|
EXEC dbo.hp_Realizuj_Vydej @ID=@idVyd, @DatumRealizace=NULL, @Uzivatel=@idUziv, @Hlidat=0, @BylaChyba=@bChyba OUT
|
|
ELSE
|
|
INSERT dbo._hdc_ph_Log (Typ, LogText, IntValue) SELECT 10, N'Chyba (3) pøíjemky korekce (ID ' + CONVERT(nvarchar, @idDZOut) + N') naskladnìní pro výdejku: ' + @errMsg, @idVyd
|
|
END TRY
|
|
BEGIN CATCH
|
|
SET @errMsg = ERROR_MESSAGE()
|
|
INSERT dbo._hdc_ph_Log (Typ, LogText, IntValue) SELECT 10, N'Chyba (3) opakované realizace výdejky: ' + @errMsg, @idVyd
|
|
END CATCH
|
|
END
|
|
|
|
END
|
|
|
|
END
|
|
CLOSE vyd
|
|
DEALLOCATE vyd
|
|
|
|
|
|
|
|
|
|
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
|
|
|
|
|