129 lines
4.1 KiB
Transact-SQL
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
|