141 lines
5.4 KiB
Transact-SQL
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
|