Files
Rootvin-pluginHDCRTN/_sql/ep_Vyroba_Doklady_PomocPrijemka.sql
2025-06-10 19:43:13 +02:00

129 lines
4.1 KiB
Transact-SQL

-- dbo.ep_Vyroba_Doklady_PomocPrijemka
CREATE PROCEDURE dbo.ep_Vyroba_Doklady_PomocPrijemka
@idVydej INT=NULL
AS
-- !! proceduru neupravujte, bude stejne pregenerovana pri startu pluginu PluginHDCRTN !!
SET NOCOUNT ON
DECLARE
@tranPred INT,
@cnt INT,
@errMsg NVARCHAR(500),
@bChyba BIT,
@iChyba INT,
@debugXml XML,
@gKV XML,
@kv XML,
@odv XML,
@aktDatum DATETIME=GETDATE(),
@logTyp TINYINT,
@logText NVARCHAR(500),
@logInt INT,
@logStr NVARCHAR(255),
@log4Mail BIT=0
DECLARE
@jsonString NVARCHAR(MAX),
@jsonString2 NVARCHAR(MAX),
@typDokum NVARCHAR(50),
@subtypDokum NVARCHAR(50),
@akce NVARCHAR(50)
DECLARE
@cOrg INT,
@sklTechnicky NVARCHAR(30),
@idKZ INT,
@idSS INT
DECLARE
@retVal INT,
@RespekExistDoklady BIT=0,
@NekontrolMnozOdvedFinal BIT,
@idUziv INT
DECLARE
@idDZPomocPrij INT,
@radaPrijem NVARCHAR(3)='292',
@menaPrij NVARCHAR(3),
@kurzPrij NUMERIC(19,6),
@kurzPrijE NUMERIC(19,6),
@vstCPrij TINYINT,
@jednMPrij INT,
@idPZPomocPrij INT,
@idSSPomocPrij INT,
@mnozSklad NUMERIC(19,6),
@mnozVydej NUMERIC(19,6),
@mnozPrij NUMERIC(19,6)
IF OBJECT_ID(N'dbo.TabUserCfg', N'U') IS NOT NULL
SET @idUziv = (SELECT ID FROM dbo.TabUserCfg WHERE LoginName=SUSER_SNAME())
SET @idUziv = ISNULL(@idUziv, 0)
IF (@sklTechnicky IS NULL)
SET @sklTechnicky=(SELECT TOP(1) Cislo FROM dbo.TabStrom WHERE Nazev LIKE N'Technolog%neúè%' AND CisloStr LIKE N'2%')
IF (@sklTechnicky IS NULL)
SET @sklTechnicky=N'261'
-- begin: pomocna prijemka nedostatecneho materialu (jen materialu !!!)
SET @idDZPomocPrij=NULL
DECLARE pomPrij CURSOR LOCAL FOR
SELECT p.IDZboSklad, p.Mnozstvi
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=@idVydej -- doklad vydejky
-- AND k.Material=1
AND k.Sluzba=0
OPEN pomPrij
WHILE (1=1)
BEGIN
FETCH NEXT FROM pomPrij INTO @idSS, @mnozVydej
IF (@@FETCH_STATUS<>0) BREAK
SELECT @idKZ=IDKmenZbozi FROM dbo.TabStavSkladu WHERE ID=@idSS
SET @idSSPomocPrij=(SELECT ID FROM dbo.TabStavSkladu WHERE IDKmenZbozi=@idKZ AND IDSklad=@sklTechnicky)
IF (@idSSPomocPrij IS NULL)
EXEC dbo.hp_InsertStavSkladu @IDKmen=@idKZ, @IDSklad=@sklTechnicky, @IDZboSklad=@idSSPomocPrij OUT
-- spocitej jestli mam skladem mnozstvi na realizaci vydejky
-- SET @mnozSklad = ISNULL( (SELECT Mnozstvi+MnozstviKPrijmu-MnozstviKVydeji FROM dbo.TabStavSkladu WHERE ID=@idSSPomocPrij), 0)
SET @mnozSklad = ISNULL( (SELECT Mnozstvi FROM dbo.TabStavSkladu WHERE ID=@idSSPomocPrij), 0)
IF (@mnozVydej>@mnozSklad)
BEGIN
SET @mnozPrij = @mnozVydej - @mnozSklad
IF (@idDZPomocPrij IS NULL) -- uz existuje doklad pomocne prijemky na sklade 261 (technologicky) ?
BEGIN
EXEC dbo.hp_InsertHlavickyOZ @ident=@idDZPomocPrij OUT, @Sklad=@sklTechnicky, @DruhPohybu=0, @RadaDokladu=@radaPrijem, @CisloOrg=0
SELECT @menaPrij=Mena, @kurzPrij=Kurz, @kurzPrijE=KurzEuro, @jednMPrij=JednotkaMeny, @vstCPrij=VstupniCena
FROM dbo.TabDokladyZbozi WHERE ID=@idDZPomocPrij
END
IF (@idDZPomocPrij IS NOT NULL)
BEGIN
EXEC dbo.hp_InsertPolozkyOZ @Ident=@idPZPomocPrij OUT, @IDDoklad=@idDZPomocPrij, @DruhPohybu=0, @CisloOrg=0, @IDZboSklad=@idSSPomocPrij,
@Mena=@menaPrij, @Kurz=@kurzPrij, @KurzEuro=@kurzPrijE, @JednotkaMeny=@jednMPrij, @SazbaSD=NULL, @SazbaDPH=NULL,
@ZakazanoDPH=NULL, @VstupniCena=@vstCPrij, @Mnozstvi=@mnozPrij, @PovolitDuplicitu=1
END
END
END
CLOSE pomPrij
DEALLOCATE pomPrij
IF (@idDZPomocPrij IS NOT NULL) -- pokud mam pomocnou prijemku, zkus ji realizovat nez budes realizovat vydejku
BEGIN
BEGIN TRY
EXEC dbo.hp_Realizuj_Prijem @ID=@idDZPomocPrij, @DatumRealizace=NULL, @Uzivatel=@idUziv, @BylaChyba=@bChyba OUT, @VypnoutUpozorneniPriZajistovani=1
END TRY
BEGIN CATCH
SET @errMsg = ERROR_MESSAGE()
END CATCH
END
-- end: pomocna prijemka nedostatecneho materialu