Prvni verze
This commit is contained in:
223
_custom/INCOSystems/sql/ep_Vyroba_GenOdvodZeMzdy.sql
Normal file
223
_custom/INCOSystems/sql/ep_Vyroba_GenOdvodZeMzdy.sql
Normal file
@ -0,0 +1,223 @@
|
||||
-- dbo.ep_Vyroba_GenOdvodZeMzdy
|
||||
CREATE PROCEDURE dbo.ep_Vyroba_GenOdvodZeMzdy
|
||||
@IDMzdy INT,
|
||||
@bezVyrCis BIT=1,
|
||||
@errMsg NVARCHAR(500)=N'' OUT,
|
||||
@realizujPrijem BIT=0,
|
||||
@IDDoklad INT=NULL OUT
|
||||
AS
|
||||
|
||||
-- HD Consulting Strakonice, T. Buzin
|
||||
-- !! proceduru neupravujte, bude stejne pregenerovana pri startu sluzby HDCAPI !!
|
||||
-- konfiguraci lze ovlivnit pres tabulku #HDCTabGenOdvodZeMzdyKonfig
|
||||
-- pozor, v tom pripade musi byt na rade prikazu sklad pro generovani odvodu roven NULL
|
||||
|
||||
|
||||
SET NOCOUNT ON
|
||||
|
||||
DECLARE
|
||||
@ret integer,
|
||||
@bChyba BIT,
|
||||
@idUziv INT,
|
||||
@idDZ INT,
|
||||
@IDPrikaz INT,
|
||||
@IDKmen INT,
|
||||
@NekontrolMnozOdvedFinal bit=0,
|
||||
@mnozstvi numeric(19,6)=0,
|
||||
@radaOdvNaSklad NVARCHAR(3)=NULL,
|
||||
@sklProOdvod NVARCHAR(30)=NULL,
|
||||
@radaVPr NVARCHAR(10)
|
||||
|
||||
|
||||
|
||||
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)
|
||||
|
||||
|
||||
-- CREATE TABLE #HDCTabGenOdvodZeMzdyKonfig (RadaOdvodNaSklad NVARCHAR(3), SkladProOdvod NVARCHAR(30), BezVyrobnichCisel BIT=0, IDUziv INT)
|
||||
IF OBJECT_ID(N'tempdb..#HDCTabGenOdvodZeMzdyKonfig', N'U') IS NOT NULL
|
||||
SELECT TOP(1) @radaOdvNaSklad=RadaOdvodNaSklad, @sklProOdvod=SkladProOdvod, @bezVyrCis=ISNULL(BezVyrobnichCisel,@bezVyrCis),
|
||||
@idUziv=ISNULL(IDUziv, @idUziv)
|
||||
FROM #HDCTabGenOdvodZeMzdyKonfig
|
||||
|
||||
|
||||
|
||||
|
||||
DROP TABLE IF EXISTS #TabOdved
|
||||
CREATE TABLE #TabOdved (
|
||||
ID INT IDENTITY NOT NULL,
|
||||
IDPrikaz INT NOT NULL,
|
||||
IDDilec INT NOT NULL,
|
||||
IDZakazModif INT NULL,
|
||||
IDZakazka INT NULL,
|
||||
maxMnozstvi NUMERIC(19,6) NULL,
|
||||
mnozstvi NUMERIC(19,6) NOT NULL,
|
||||
EvidJednotka NUMERIC(19,6) NOT NULL,
|
||||
Sklad NVARCHAR(30) NULL,
|
||||
KodUmisteni NVARCHAR(15) NULL,
|
||||
IDPohZbo INT NULL,
|
||||
PomVnoreni INT NULL,
|
||||
StavPrikazu TINYINT NULL,
|
||||
PRIMARY KEY(ID)
|
||||
)
|
||||
|
||||
|
||||
DROP TABLE IF EXISTS #TabOdved_IDMzdy
|
||||
CREATE TABLE #TabOdved_IDMzdy (IDPrikaz int, IDMzdy int)
|
||||
|
||||
|
||||
|
||||
|
||||
DROP TABLE IF EXISTS #TabVyrCisProGenOdv
|
||||
CREATE TABLE #TabVyrCisProGenOdv (
|
||||
ID INT IDENTITY NOT NULL,
|
||||
IDOdvedeni INT NOT NULL,
|
||||
IDPrikaz INT NOT NULL,
|
||||
VyrCislo NVARCHAR(100) NOT NULL,
|
||||
Mnozstvi NUMERIC(19,6) NOT NULL DEFAULT 0,
|
||||
MaxMnozstvi NUMERIC(19,6) NULL,
|
||||
IDVyrCP INT NULL,
|
||||
PRIMARY KEY(ID)
|
||||
)
|
||||
|
||||
|
||||
|
||||
DROP TABLE IF EXISTS #TabPolotovProGenOdv
|
||||
CREATE TABLE #TabPolotovProGenOdv (
|
||||
ID INT IDENTITY NOT NULL,
|
||||
IDOdvedeni INT NOT NULL,
|
||||
IDPrikaz INT NOT NULL,
|
||||
Doklad INT NOT NULL,
|
||||
IDDilec INT NOT NULL,
|
||||
Mnozstvi NUMERIC(19,6) NOT NULL,
|
||||
MaxMnozstvi NUMERIC(19,6) NULL,
|
||||
PRIMARY KEY(ID)
|
||||
)
|
||||
|
||||
|
||||
DROP TABLE IF EXISTS #TabGenPrijem
|
||||
CREATE TABLE #TabGenPrijem (ID INT NOT NULL, PRIMARY KEY(ID))
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
IF EXISTS (SELECT 1 FROM dbo.TabPrikazMzdyAZmetky WHERE GenerovanoOdvadeni=1 AND ID=@IDMzdy)
|
||||
RETURN 0
|
||||
|
||||
|
||||
SELECT @mnozstvi=kusy_odv FROM dbo.TabPrikazMzdyAZmetky WHERE ID=@IDMzdy
|
||||
|
||||
UPDATE dbo.TabPrikazMzdyAZmetky SET GenerovanoOdvadeni=1 WHERE ID=@IDMzdy
|
||||
IF (@@ROWCOUNT=0) RETURN 0
|
||||
IF @mnozstvi<=0.0 RETURN 0
|
||||
|
||||
|
||||
|
||||
SELECT @IDPrikaz=IDPrikaz FROM dbo.TabPrikazMzdyAZmetky WHERE ID=@IDMzdy
|
||||
SELECT @radaVPr=Rada, @IDKmen=IDTabKmen FROM dbo.TabPrikaz WHERE ID=@IDPrikaz
|
||||
|
||||
-- nastav sklad pro odvod podle karty
|
||||
IF (@sklProOdvod IS NULL)
|
||||
SELECT @sklProOdvod=VychoziSklad FROM dbo.TabParKmZ WHERE IDKmenZbozi=@IDKmen
|
||||
|
||||
-- pripadne zkus podle rady prikazu
|
||||
SELECT @radaOdvNaSklad=CASE WHEN RadaDokl_OdvedeniPrikazu IS NULL THEN @radaOdvNaSklad ELSE RadaDokl_OdvedeniPrikazu END,
|
||||
@sklProOdvod=CASE WHEN PrijemVyrDil_SkladProGenHlavDZ IS NULL THEN @sklProOdvod ELSE PrijemVyrDil_SkladProGenHlavDZ END
|
||||
FROM dbo.TabRadyPrikazu WHERE Rada=@radaVPr
|
||||
|
||||
|
||||
|
||||
|
||||
UPDATE #tabOdved SET mnozstvi=CASE WHEN @NekontrolMnozOdvedFinal=0 AND mnozstvi+@mnozstvi>maxMnozstvi THEN maxMnozstvi ELSE mnozstvi+@mnozstvi END WHERE IDPrikaz=@IDPrikaz
|
||||
IF (@@ROWCOUNT=0)
|
||||
INSERT INTO #tabOdved (IDPrikaz, IDDilec, IDZakazModif, IDZakazka, maxMnozstvi, EvidJednotka, mnozstvi, sklad, StavPrikazu)
|
||||
SELECT P.ID,
|
||||
CASE WHEN ISNULL(ParKZ.OdvadetNaZaklVari,0)=0 THEN P.IDTabKmen ELSE KZ.IDKusovnik END,
|
||||
ZMD.IDZakazModif,
|
||||
P.IDZakazka,
|
||||
CASE WHEN @NekontrolMnozOdvedFinal=1 THEN NULL ELSE P.kusy_zive END,
|
||||
P.EvidJednotka,
|
||||
CASE WHEN @NekontrolMnozOdvedFinal=0 AND @mnozstvi>P.kusy_zive THEN P.kusy_zive ELSE @mnozstvi END,
|
||||
P.sklad,
|
||||
P.StavPrikazu
|
||||
FROM dbo.TabPrikaz P
|
||||
INNER JOIN dbo.TabKmenZbozi KZ ON (KZ.ID=P.IDTabKmen)
|
||||
LEFT OUTER JOIN dbo.TabZakazModifDilce ZMD ON (ZMD.IDZakazModif=P.IDZakazModif AND ZMD.IDKmenZbozi=KZ.ID)
|
||||
LEFT OUTER JOIN dbo.TabParKmZ ParKZ ON (ParKZ.IDKmenZbozi=P.IDTabKmen)
|
||||
WHERE P.ID=@IDPrikaz AND
|
||||
(CASE WHEN @NekontrolMnozOdvedFinal=0 AND @mnozstvi>P.kusy_zive THEN P.kusy_zive ELSE @mnozstvi END)>0
|
||||
INSERT INTO #TabOdved_IDMzdy (IDPrikaz, IDMzdy) VALUES (@IDPrikaz, @IDMzdy)
|
||||
|
||||
|
||||
|
||||
UPDATE O SET maxMnozstvi=CASE WHEN RP.NekontrolMnozOdvedFinal=1 THEN NULL ELSE P.kusy_zive END
|
||||
FROM #tabOdved O
|
||||
INNER JOIN dbo.TabPrikaz P ON (P.ID=O.IDPrikaz)
|
||||
INNER JOIN dbo.TabRadyPrikazu RP ON (RP.rada=P.rada)
|
||||
|
||||
UPDATE #tabOdved SET mnozstvi=maxMnozstvi WHERE maxMnozstvi IS NOT NULL AND mnozstvi>maxMnozstvi
|
||||
DELETE #TabVyrCisProGenOdv WHERE IDOdvedeni IN (SELECT O2.ID FROM #tabOdved O2 WHERE O2.Mnozstvi<=0.0)
|
||||
DELETE #TabPolotovProGenOdv WHERE IDOdvedeni IN (SELECT O2.ID FROM #tabOdved O2 WHERE O2.Mnozstvi<=0.0)
|
||||
DELETE #tabOdved WHERE Mnozstvi<=0.0
|
||||
|
||||
|
||||
EXEC dbo.hp_PrednabidniTabVyrCisProGenOdv @ProIDPrikaz=NULL
|
||||
IF (@bezVyrCis=1)
|
||||
DELETE #TabVyrCisProGenOdv
|
||||
|
||||
|
||||
BEGIN TRY
|
||||
EXEC @ret=dbo.hp_OdvedeniPrikazu @RadaDokladu=@radaOdvNaSklad, @IDObdobi=NULL, @KonecneOdvedeni=0, @DatPorizeni=NULL, @SekejZakazky=1, @SekejPrikazy=1
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
SET @errMsg = 'Chyba pri odvadeni: ' + ERROR_MESSAGE()
|
||||
END CATCH
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
IF (@realizujPrijem=1)
|
||||
BEGIN
|
||||
DECLARE
|
||||
@idPrij INT
|
||||
|
||||
DECLARE prij CURSOR LOCAL FOR
|
||||
SELECT ID FROM #TabGenPrijem
|
||||
OPEN prij
|
||||
WHILE (1=1)
|
||||
BEGIN
|
||||
FETCH NEXT FROM prij INTO @idPrij
|
||||
IF (@@FETCH_STATUS<>0) BREAK
|
||||
|
||||
BEGIN TRY
|
||||
EXEC dbo.hp_Realizuj_Prijem @ID=@idPrij, @DatumRealizace=NULL, @Uzivatel=@idUziv, @BylaChyba=@bChyba OUT, @VypnoutUpozorneniPriZajistovani=1
|
||||
END TRY
|
||||
BEGIN CATCH
|
||||
SET @errMsg = ERROR_MESSAGE()
|
||||
END CATCH
|
||||
|
||||
END
|
||||
CLOSE prij
|
||||
DEALLOCATE prij
|
||||
END
|
||||
|
||||
|
||||
|
||||
SET @IDDoklad = NULL
|
||||
IF (1=(SELECT COUNT(*) FROM #TabGenPrijem))
|
||||
SET @IDDoklad=(SELECT TOP(1) ID FROM #TabGenPrijem)
|
||||
|
||||
|
||||
|
||||
-- cisteni
|
||||
DROP TABLE IF EXISTS #TabGenPrijem
|
||||
DROP TABLE IF EXISTS #TabPolotovProGenOdv
|
||||
DROP TABLE IF EXISTS #TabVyrCisProGenOdv
|
||||
DROP TABLE IF EXISTS #TabOdved_IDMzdy
|
||||
DROP TABLE IF EXISTS #TabOdved
|
||||
|
||||
DROP TABLE IF EXISTS #HDCTabGenOdvodZeMzdyKonfig
|
||||
Reference in New Issue
Block a user