Files
HDCApi/_custom/Rootvin/sql/ep_P01_HDCDZApi1.sql
2025-05-21 21:14:32 +02:00

138 lines
4.7 KiB
Transact-SQL
Raw Blame History

-- dbo.ep_P01_HDCDZApi1
CREATE PROCEDURE dbo.ep_P01_HDCDZApi1
@IDDoklad INT
AS
-- HD Consulting Strakonice, T. Buzin
-- !! proceduru neupravujte, bude stejne pregenerovana pri startu Windows sluzby HDCDZApi !!
-- vola se na konci procesu realizace prijemky (po uskutecneni prijmu ale pred konecnym COMMIT TRAN)
-- nastaveni skladu lze ovlivnit pres #TabDefiniceProP01 (HlavniSkladMat NVARCHAR(30), TechnologickySklad NVARCHAR(30), SkladVyrobaPekarna NVARCHAR(30) )
SET NOCOUNT ON
DECLARE
@tranPred INT,
@cnt INT,
@errMsg NVARCHAR(500),
@bChyba BIT,
@iChyba INT
DECLARE
@sklHlavni NVARCHAR(30),
@sklTechnolog NVARCHAR(30),
@sklPekarna NVARCHAR(30),
@sklPrijem NVARCHAR(30)
DECLARE
@sklDokl NVARCHAR(30),
@radaDokl NVARCHAR(3),
@cOrg INT,
@idDZDst INT,
@dpz TINYINT,
@dzMena NVARCHAR(3),
@dzDatum DATETIME,
@datReal DATETIME,
@vyrCis NVARCHAR(100),
@nazevVyrCis NVARCHAR(100),
@poslVyrCis NVARCHAR(100),
@idVCK INT,
@idVCS INT,
@idVCP INT,
@idPZ INT,
@idZboSklad INT,
@idKZ INT
SELECT @radaDokl=RadaDokladu, @cOrg=CisloOrg, @sklDokl=IDSklad, @dpz=DruhPohybuZbo, @dzMena=Mena, @dzDatum=DatPorizeni
FROM dbo.TabDokladyZbozi WHERE ID=@IDDoklad
-- zapis posledni prevedene sarze
IF (@radaDokl=N'281') AND (@sklDokl=@sklPekarna) // prijemka/prevodka na pekarnu
BEGIN
DECLARE p CURSOR LOCAL FOR
SELECT p.ID, p.IDZboSklad
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=@IDDoklad
AND k.Sluzba=0
ORDER BY p.Poradi
OPEN p
WHILE (1=1)
BEGIN
FETCH NEXT FROM p INTO @idPZ, @idZboSklad
IF (@@FETCH_STATUS<>0) BREAK
SET @poslVyrCis = N''
DECLARE v CURSOR LOCAL FOR
SELECT ID, Nazev
FROM dbo.TabVyrCP
WHERE IDPolozkaDokladu=@idPZ
AND TRIM(ISNULL(Nazev,N''))<>N''
ORDER BY ID
OPEN v
WHILE (1=1)
BEGIN
FETCH NEXT FROM v INTO @idVCP, @vyrCis
IF (@@FETCH_STATUS<>0) BREAK
SET @poslVyrCis = @vyrCis
END
CLOSE v
DEALLOCATE v
IF (@poslVyrCis<>N'')
BEGIN
IF NOT EXISTS(SELECT 1 FROM dbo.TabStavSkladu_EXT WHERE ID=@idZboSklad)
INSERT dbo.TabStavSkladu_EXT (ID) VALUES (@idZboSklad)
UPDATE dbo.TabStavSkladu_EXT SET _Prevod_PosledniSarze=@poslVyrCis WHERE ID=@idZboSklad
END
END
CLOSE p
DEALLOCATE p
END -- @radaDokl 281
-- kopie prevodkove prijemky ze skladu materialu na sklad Vyroba/Pekarna
-- na "zrcadlovy" technologicky sklad (neni uctovany), ktery slouzi jen pro vydejky z Vyrobnich prikazu
-- z tech se denne generuje sumacni na hlavnim sklade
IF OBJECT_ID(N'tempdb..#TabDefiniceProP01', N'U') IS NOT NULL
SELECT TOP(1) @sklHlavni=HlavniSkladMat, @sklPekarna=SkladVyrobaPekarna, @sklTechnolog=TechnologickySklad FROM #TabDefiniceProP01
IF (@sklHlavni IS NULL)
SELECT @sklHlavni=Cislo FROM dbo.TabStrom WHERE Nazev=N'Hlavn<EFBFBD> sklad - Materi<72>l'
IF (@sklTechnolog IS NULL)
SELECT @sklTechnolog=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technolog%NE<4E><45>%'
IF (@sklTechnolog IS NULL)
SELECT @sklTechnolog=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technologick<EFBFBD> sklad%v<>dej%'
IF (@sklPekarna IS NULL)
SELECT @sklPekarna=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'V<EFBFBD>roba - Pek<65>rna'
-- jen prijemka/prevodka na sklad Pekarna (211)
IF (@dpz=0) AND (@radaDokl IN (N'281')) AND (@sklDokl=@sklPekarna) AND (@sklTechnolog IS NOT NULL)
BEGIN
EXEC dbo.hp_InsertHlavickyOZ @ident=@idDZDst OUT, @Sklad=@sklTechnolog, @DruhPohybu=@dpz, @RadaDokladu=@radaDokl,
@Mena=@dzMena, @CisloOrg=@cOrg, @DatumPorizeni=@dzDatum
IF (@idDZDst IS NOT NULL)
BEGIN
SELECT @datReal=DatRealizace FROM dbo.TabDokladyZbozi WHERE ID=@IDDoklad
EXEC dbo.hp_generuj_navazny_doklad @IDDokladDst=@idDZDst, @IDDokladSrc=@IDDoklad, @CisloOrgCil=@cOrg, @MUCil=NULL, @MenaCil=@dzMena,
@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=1
IF EXISTS(SELECT 1 FROM dbo.TabPohybyZbozi WHERE IDDoklad=@idDZDst)
EXEC dbo.hp_Realizuj_Prijem @ID=@idDZDst, @DatumRealizace=@datReal, @Uzivatel=0, @BylaChyba=@bChyba OUT, @VypnoutUpozorneniPriZajistovani=1
END
END -- prijmka radaDokl 281, prijemkovy sklad Vyroba pekarna ci podobny, technologicky sklad vyplneny