Files
Rootvin-pluginHDCRTN/_sql/ep_V03_HDC1.sql
2025-05-21 21:06:33 +02:00

104 lines
3.7 KiB
Transact-SQL

-- dbo.ep_V03_HDC1
CREATE PROCEDURE dbo.ep_V03_HDC1
@IDDoklad INT
AS
-- HD Consulting Strakonice, T. Buzin
-- !! proceduru neupravujte, bude stejne pregenerovana pri startu pluginu pro pekarnu nebo Windows sluzby HDCDZApi !!
-- doplnek realizace skladových výdeju, vola se na zacatku transakce v prubehu procesu realizace výdeju
-- vstupni parametr @ID INT -- ID hlavicky realizovaneho dokladu; výstup neni
-- Pozadovana funkcnost: napr. doplneni vazby do vyroby a napocet NV.
SET NOCOUNT ON
DECLARE
@errMsg NVARCHAR(500),
@iTemp INT
DECLARE
@dpz TINYINT,
@rada NVARCHAR(3),
@idPZ INT,
@idSklad NVARCHAR(30),
@idSkladPrev NVARCHAR(30),
@radaPrev NVARCHAR(3),
@sklMatHlavni NVARCHAR(30)=N'311',
@sklPekarna NVARCHAR(30)=N'211',
@sklTechnolog NVARCHAR(30),
@paletList NVARCHAR(100),
@sarze NVARCHAR(100)
IF OBJECT_ID(N'tempdb..#TabExtKom', N'U') IS NULL
CREATE TABLE #TabExtKom (Typ TINYINT, Poznamka NVARCHAR(255) )
IF OBJECT_ID(N'tempdb..#HDCTabDefiniceProV03', N'U') IS NOT NULL
SELECT TOP(1) @sklMatHlavni=HlavniSkladMat, @sklPekarna=SkladVyrobaPekarna, @sklTechnolog=TechnologickySklad FROM #HDCTabDefiniceProV03
IF (@sklMatHlavni IS NULL)
SELECT @sklMatHlavni=Cislo FROM dbo.TabStrom WHERE Nazev=N'Hlavní sklad - Materiál'
IF (@sklTechnolog IS NULL)
SELECT @sklTechnolog=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technolog%neúè%' AND CisloStr LIKE N'2%'
IF (@sklPekarna IS NULL)
SELECT @sklPekarna=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Výroba - Pekárna'
DROP TABLE IF EXISTS #HDCTabDefiniceProV03
SELECT @rada=RadaDokladu, @idSklad=IDSklad, @dpz=DruhPohybuZbo, @idSkladPrev=IdSkladPrevodu, @radaPrev=TypPrevodky
FROM dbo.TabDokladyZbozi WHERE ID=@IDDoklad
-- vydejka/prevodka na sklad Pekarna
IF (@rada IN (N'231')) AND (@idSklad=@sklMatHlavni) AND (@idSkladPrev=@sklPekarna) AND (@radaPrev=N'281')
BEGIN
-- zapis VC na externi info
DECLARE p CURSOR LOCAL FOR
SELECT p.ID, vcs.Nazev1, vcp.Nazev
FROM dbo.TabPohybyZbozi p
INNER JOIN dbo.TabStavSkladu s ON (s.ID=p.IDZboSklad)
INNER JOIN dbo.TabKmenZbozi k ON (k.ID=s.IDKmenZbozi)
INNER JOIN dbo.TabVyrCP vcp ON (p.ID=vcp.IDPolozkaDokladu)
INNER JOIN dbo.TabVyrCS vcs ON (vcs.ID=vcp.IDVyrCis)
WHERE p.IDDoklad=@IDDoklad
AND k.Sluzba=0
ORDER BY p.Poradi
OPEN p
WHILE (1=1)
BEGIN
FETCH NEXT FROM p INTO @idPZ, @paletList, @sarze
IF (@@FETCH_STATUS<>0) BREAK
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=ISNULL(_Vyroba_Sarze, IIF(_Vyroba_Sarze IS NOT NULL, N',', N'') + @sarze) WHERE ID=@idPZ
UPDATE dbo.TabPohybyZbozi_EXT SET _Vyroba_PaletList=ISNULL(_Vyroba_PaletList, IIF(_Vyroba_PaletList IS NOT NULL, N',', N'') + @paletList) WHERE ID=@idPZ
END
CLOSE p
DEALLOCATE p
-- zapis do pomocne tabulky
INSERT dbo._hdc_PZ_PuvodniVC (IDPohybZbozi, IDDoklad, IDZboSklad, VyrCis, IDVyrCis, Mnozstvi, Sarze, PaletovyList, IDUmisteni)
SELECT p.ID, p.IDDoklad, p.IDZboSklad, vcp.Nazev, vcp.IDVyrCis, vcp.Mnozstvi, vcp.Nazev, vcs.Nazev1, p.IDUmisteni
FROM dbo.TabPohybyZbozi p
INNER JOIN dbo.TabVyrCP vcp ON (vcp.IDPolozkaDokladu=p.ID)
INNER JOIN dbo.TabVyrCS vcs ON (vcs.ID=vcp.IDVyrCis)
WHERE p.IDDoklad=@IDDoklad
ORDER BY p.Poradi, vcp.ID
-- odstran umisteni, delalo by problem pri vydeji
UPDATE dbo.TabPohybyZbozi SET IDUmisteni=NULL WHERE IDDoklad=@IDDoklad
-- smaz vyrobni cisla, jejich evidenci vede ProHolding
DELETE FROM dbo.TabVyrCP WHERE IDPolozkaDokladu IN (SELECT ID FROM dbo.TabPohybyZbozi WHERE IDDoklad=@IDDoklad)
SET @iTemp = ISNULL( (SELECT MAX(ID) FROM dbo.TabVyrCP), 0)
DBCC CHECKIDENT (TabVyrCP, RESEED, @iTemp)
END