-- 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