Files
HDCApi/_custom/Rootvin/sql/ep_Vyroba_GenDenniVydejka.sql
2026-03-03 16:18:27 +01:00

141 lines
5.4 KiB
Transact-SQL

-- dbo.ep_Vyroba_GenDenniVydejka
CREATE PROCEDURE dbo.ep_Vyroba_GenDenniVydejka
@proDen DATETIME=NULL
AS
DECLARE
@errMsg NVARCHAR(500),
@cnt INT
DECLARE
@sklPekarna NVARCHAR(30),
@sklTechnolog NVARCHAR(30),
@sklTechnologHV NVARCHAR(30),
@radaDoklVydej NVARCHAR(3),
@radaStorno NVARCHAR(3),
@idDZVydej INT,
@idPZOld INT,
@idZboSkladOld INT,
@idZboSkladNew INT,
@idKmen INT,
@idPZNew INT,
@idVCK INT,
@idVCS INT,
@paletList NVARCHAR(50),
@sarze NVARCHAR(50),
@mnoz NUMERIC(19,6)
DECLARE
@dzMena NVARCHAR(3),
@dzKurz NUMERIC(19,6),
@dzKurzE NUMERIC(19,6),
@vstC TINYINT,
@jednM INT
IF (@sklPekarna IS NULL)
SELECT TOP(1) @sklPekarna=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Výroba - Pekárna' AND CisloStr LIKE N'2%'
IF (@sklTechnolog IS NULL)
SELECT @sklTechnolog=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technolog%NE%' AND Nazev NOT LIKE N'%polotov%' AND Nazev NOT LIKE N'%HV%' AND CisloStr LIKE N'2%'
IF (@sklTechnolog IS NULL)
SET @sklTechnolog = N'261'
IF (@sklTechnologHV IS NULL)
SELECT @sklTechnologHV=Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technolog%NE%' AND Nazev LIKE N'%HV%' AND CisloStr LIKE N'2%'
IF (@sklTechnologHV IS NULL)
SET @sklTechnologHV = N'262'
SET @radaDoklVydej=N'223'
SET @radaStorno = N'229'
IF (@proDen IS NULL)
SET @proDen=GETDATE()
SET @proDen = dbo.hf_TruncDate(@proDen)
SET @proDen = DATEADD(second, -1, @proDen)
-- ma vubec smysl to delat ?
IF NOT EXISTS (SELECT 1 FROM dbo.TabPohybyZbozi p WITH(NOLOCK) JOIN dbo.TabDokladyZbozi d WITH(NOLOCK) ON (d.ID=p.IDDoklad)
WHERE d.IDSklad IN (@sklTechnolog) AND d.RadaDokladu IN (@radaDoklVydej, @radaStorno) AND d.Realizovano=1
AND dbo.hf_TruncDate(d.DatPorizeni)=dbo.hf_TruncDate(@proDen) AND d.CisloOrg=0
)
RETURN
SET @cnt=ISNULL( (SELECT COUNT(ID) FROM dbo.TabDokladyZbozi WHERE IDSklad=@sklPekarna AND RadaDokladu=@radaDoklVydej AND DruhPohybuZbo=4
AND dbo.hf_TruncDate(DatPorizeni)=dbo.hf_TruncDate(@proDen) AND CisloOrg=0 AND Realizovano=0), 0)
IF (@cnt=0)
EXEC dbo.hp_InsertHlavickyOZ @ident=@idDZVydej OUT, @Sklad=@sklPekarna, @DruhPohybu=4, @RadaDokladu=@radaDoklVydej, @CisloOrg=0, @DatumPorizeni=@proDen
ELSE
IF (@cnt=1)
SET @idDZVydej=(SELECT ID FROM dbo.TabDokladyZbozi WHERE IDSklad=@sklPekarna AND RadaDokladu=@radaDoklVydej AND DruhPohybuZbo=4
AND dbo.hf_TruncDate(DatPorizeni)=dbo.hf_TruncDate(@proDen) AND CisloOrg=0 AND Realizovano=0)
ELSE
SET @idDZVydej=(SELECT TOP(1) ID FROM dbo.TabDokladyZbozi WHERE IDSklad=@sklPekarna AND RadaDokladu=@radaDoklVydej AND DruhPohybuZbo=4
AND dbo.hf_TruncDate(DatPorizeni)=dbo.hf_TruncDate(@proDen) AND CisloOrg=0 AND Realizovano=0 ORDER BY DatPorizeni DESC)
IF (@idDZVydej IS NOT NULL)
BEGIN
SELECT @dzMena=Mena, @dzKurz=Kurz, @dzKurzE=KurzEuro, @jednM=JednotkaMeny, @vstC=VstupniCena FROM dbo.TabDokladyZbozi WHERE ID=@idDZVydej
-- begin: polozky materialu, tj. ze skladu 261
DECLARE p CURSOR LOCAL FOR
SELECT -1.0*SUM(p.MnozstviDruhove), p.IDZboSklad
FROM dbo.TabPohybyZbozi p WITH(NOLOCK)
JOIN dbo.TabDokladyZbozi d WITH(NOLOCK) ON (d.ID=p.IDDoklad)
JOIN dbo.TabStavSkladu s WITH(NOLOCK) ON (s.ID=p.IDZboSklad)
JOIN dbo.TabKmenZbozi k WITH(NOLOCK) ON (k.ID=s.IDKmenZbozi)
WHERE d.IDSklad=@sklTechnolog
AND d.RadaDokladu IN (@radaDoklVydej, @radaStorno)
AND d.DruhPohybuZbo IN (3,4)
AND d.Realizovano=1
AND p.Mnozstvi>0
AND k.Sluzba=0
AND dbo.hf_TruncDate(d.DatPorizeni)=dbo.hf_TruncDate(@proDen)
GROUP BY p.IDZboSklad, k.Nazev1
ORDER BY k.Nazev1
OPEN p
WHILE (1=1)
BEGIN
FETCH NEXT FROM p INTO @mnoz, @idZboSkladOld
IF (@@FETCH_STATUS<>0) BREAK
SELECT @idKmen=IDKmenZbozi FROM dbo.TabStavSkladu WHERE ID=@idZboSkladOld
SELECT @idZboSkladNew=ID FROM dbo.TabStavSkladu WHERE IDKmenZbozi=@idKmen AND IDSklad=@sklPekarna
SET @idPZNew=(SELECT ID FROM dbo.TabPohybyZbozi WHERE IDDoklad=@idDZVydej AND IDZboSklad=@idZboSkladNew)
IF (@idPZNew IS NULL)
EXEC dbo.hp_InsertPolozkyOZ @ident=@idPZNew OUT, @IDDoklad=@idDZVydej, @DruhPohybu=4, @CisloOrg=0, @IDZboSklad=@idZboSkladNew, @Mena=@dzMena,
@Kurz=@dzKurz, @KurzEuro=@dzKurzE, @JednotkaMeny=@jednM, @SazbaSD=NULL, @SazbaDPH=NULL, @ZakazanoDPH=0,
@VstupniCena=@vstC, @PovolitDuplicitu=0, @PovolitBlokovane=1, @Mnozstvi=@mnoz
IF (@idPZNew IS NOT NULL)
INSERT dbo._TabVyroba_VydejMatSarze (IDPohybZbozi, IDPohybZboziNew, PaletovyList, Sarze, IDKmenZbozi, Mnozstvi)
SELECT p.ID, @idPZNew, ISNULL(pe._Vyroba_PaletList, N''), ISNULL(_Vyroba_Sarze, N''), s.IDKmenZbozi, -1.0*p.Mnozstvi
FROM dbo.TabPohybyZbozi p WITH(NOLOCK)
LEFT JOIN dbo.TabPohybyZbozi_EXT pe WITH(NOLOCK) ON (pe.ID=p.ID)
JOIN dbo.TabDokladyZbozi d WITH(NOLOCK) ON (d.ID=p.IDDoklad)
JOIN dbo.TabStavSkladu s WITH(NOLOCK) ON (s.ID=p.IDZboSklad)
JOIN dbo.TabKmenZbozi k WITH(NOLOCK) ON (k.ID=s.IDKmenZbozi)
WHERE d.IDSklad=@sklTechnolog
AND d.RadaDokladu IN (@radaDoklVydej, @radaStorno)
AND d.DruhPohybuZbo IN (3,4)
AND d.Realizovano=1
AND p.Mnozstvi>0
AND k.Sluzba=0
AND p.IDZboSklad=@idZboSkladOld
AND dbo.hf_TruncDate(d.DatPorizeni)=dbo.hf_TruncDate(@proDen)
ORDER BY k.Nazev1
END
CLOSE p
DEALLOCATE p
-- end: polozky materialu, tj. ze skladu 261
END