138 lines
4.7 KiB
Transact-SQL
138 lines
4.7 KiB
Transact-SQL
-- 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
|