This commit is contained in:
skidoodle 2024-03-13 00:33:46 +01:00
commit e124a47765
19374 changed files with 9806149 additions and 0 deletions

View file

@ -0,0 +1,28 @@
DECLARE @tanevId int,
@intezmenyId int
DECLARE TanevIntezmeny CURSOR FOR
SELECT tt.ID, tt.C_INTEZMENYID
FROM dbo.T_TANEV tt
INNER JOIN T_INTEZMENY i ON i.ID = tt.C_INTEZMENYID
WHERE tt.C_NEV='2017/2018' AND tt.TOROLT = 'F' AND i.TOROLT = 'F'
OPEN TanevIntezmeny
FETCH NEXT FROM TanevIntezmeny INTO @tanevId,@intezmenyId
WHILE @@FETCH_STATUS=0
BEGIN
IF((SELECT COUNT(nh.ID)
FROM T_TANEV t
INNER JOIN T_INTEZMENY i ON i.ID = t.C_INTEZMENYID
LEFT JOIN T_NAPTARIHET nh ON nh.C_TANEVID = t.ID
WHERE t.Id = @tanevId AND i.ID = @intezmenyId) = 0)
BEGIN
EXEC [sp_GenerateNaptariHetek] @intezmenyId,@tanevId
END
EXEC [sp_GenerateNaptariNapok] @intezmenyId,@tanevId,DEFAULT
FETCH NEXT FROM TanevIntezmeny INTO @tanevId,@intezmenyId
END
CLOSE TanevIntezmeny
DEALLOCATE TanevIntezmeny

View file

@ -0,0 +1,66 @@
--felülírt ALAP- oszlopok visszaírása a helyes értékre
SET DATEFIRST 1;
DECLARE @tanevRendje TABLE (
C_DATUM datetime PRIMARY KEY
,C_HETNAPJA int
,C_NAPTIPUSA int
,C_ORARENDINAP char(1)
)
INSERT @tanevRendje
([C_DATUM], [C_HETNAPJA], [C_NAPTIPUSA], [C_ORARENDINAP])
VALUES
('20170901', dbo.fnGetHetNapja('20170901'), 1394, N'F'),
('20171023', dbo.fnGetHetNapja('20171023'), 1386, N'F'),
('20171030', dbo.fnGetHetNapja('20171030'), 1399, N'F'),
('20171031', dbo.fnGetHetNapja('20171031'), 1399, N'F'),
('20171101', dbo.fnGetHetNapja('20171101'), 1386, N'F'),
('20171102', dbo.fnGetHetNapja('20171102'), 1399, N'F'),
('20171103', dbo.fnGetHetNapja('20171103'), 1399, N'F'),
('20171225', dbo.fnGetHetNapja('20171225'), 1386, N'F'),
('20171226', dbo.fnGetHetNapja('20171226'), 1386, N'F'),
('20171227', dbo.fnGetHetNapja('20171227'), 1397, N'F'),
('20171228', dbo.fnGetHetNapja('20171228'), 1397, N'F'),
('20171229', dbo.fnGetHetNapja('20171229'), 1397, N'F'),
('20180101', dbo.fnGetHetNapja('20180101'), 1386, N'F'),
('20180102', dbo.fnGetHetNapja('20180102'), 1397, N'F'),
('20180126', dbo.fnGetHetNapja('20180126'), 1400, N'T'),
('20180310', dbo.fnGetHetNapja('20180310'), 1385, N'F'),
('20180315', dbo.fnGetHetNapja('20180315'), 1386, N'F'),
('20180316', dbo.fnGetHetNapja('20180316'), 6833, N'F'),
('20180329', dbo.fnGetHetNapja('20180329'), 1398, N'F'),
('20180330', dbo.fnGetHetNapja('20180330'), 1386, N'F'),
('20180402', dbo.fnGetHetNapja('20180402'), 1386, N'F'),
('20180403', dbo.fnGetHetNapja('20180403'), 1398, N'F'),
('20180421', dbo.fnGetHetNapja('20180421'), 1385, N'F'),
('20180430', dbo.fnGetHetNapja('20180430'), 6833, N'F'),
('20180501', dbo.fnGetHetNapja('20180501'), 1386, N'F'),
('20180503', dbo.fnGetHetNapja('20180503'), 1402, N'T'),
('20180521', dbo.fnGetHetNapja('20180521'), 1386, N'F'),
('20180615', dbo.fnGetHetNapja('20180615'), 1395, N'T')
UPDATE nn
SET
nn.C_ALAPHETNAPJA = ISNULL(tr.C_HETNAPJA, dbo.fnGetHetNapja(C_NAPDATUMA))
,nn.C_ALAPNAPTIPUSA = ISNULL(tr.C_NAPTIPUSA,
CASE
WHEN DATEPART(dw, nn.C_NAPDATUMA) IN (6, 7)
THEN 1386 -- 'Munkaszüneti nap'
WHEN nn.C_NAPDATUMA > te.C_UTOLSONAP
THEN 1392
ELSE 1385 -- 'Tanítási nap'
END)
,nn.C_ALAPORARENDINAP = ISNULL(tr.C_ORARENDINAP,
CASE
WHEN DATEPART(dw, nn.C_NAPDATUMA) IN (6, 7)
THEN 'F' -- 'Munkaszüneti nap'
WHEN nn.C_NAPDATUMA > te.C_UTOLSONAP
THEN 'F'
ELSE 'T' -- 'Tanítási nap'
END)
FROM T_NAPTARINAP nn
LEFT JOIN @tanevRendje tr ON nn.C_NAPDATUMA = tr.C_DATUM
INNER JOIN T_TANEV te ON te.ID = nn.C_TANEVID
WHERE te.C_NEV = '2017/2018'
AND te.TOROLT = 'F'

View file

@ -0,0 +1,102 @@
-- ==========================================================================================
-- Author: Telek Ákos
-- Create date: 2016.06.08.
-- Description: Naptári hetek generálása TANEVRENDJE alapján
-- ==========================================================================================
IF OBJECT_ID('sp_GenerateNaptariHetek') IS NOT NULL BEGIN
DROP PROCEDURE sp_GenerateNaptariHetek
END
GO
CREATE PROCEDURE sp_GenerateNaptariHetek
@intezmenyId int,
@tanevId int
AS
BEGIN
SET DATEFIRST 1; -- Sets the first day of the week to a number from 1 (Monday) through 7 (Sunday).
DECLARE @startDate datetime,
@endDate datetime,
@cnt int;
DELETE FROM T_NAPTARIHET_OSSZES
WHERE C_INTEZMENYID = @intezmenyId
AND C_TANEVID = @tanevId
/* megnézzük, hány nem 1554-es hetirend van */
SELECT @cnt = COUNT(1)
FROM T_HETIRENDTIPUS_OSSZES
WHERE ID <> 1554 AND C_ALTANEVID = @tanevId
AND TOROLT='F'
/* első tanítási nap */
SELECT @startDate = C_DATUM
FROM T_TANEVRENDJE_OSSZES
WHERE C_NAPTIPUSA = 1394
AND C_TANEVID = @tanevId
AND TOROLT='F'
/* utolsó tanítási nap */
SELECT @endDate = C_UTOLSONAP
FROM T_TANEV_OSSZES
WHERE ID = @tanevId AND TOROLT='F';
IF @startDate IS NULL BEGIN
SELECT @startDate = ISNULL(C_ELSOTANITASINAP, C_KEZDONAP)
FROM T_TANEV_OSSZES
WHERE ID = @tanevId
END
/* CTE a napok legenerálásához */
;WITH ctedaterange AS (
SELECT [Dates] = @startDate, week = 1
UNION ALL
SELECT [dates] + 1, week + IIF(DATEPART(dw, dates + 1) = 1, 1, 0)
FROM ctedaterange
WHERE [dates] + 1 <= @endDate
)
/* Maga az inzert */
INSERT INTO T_NAPTARIHET_OSSZES (
C_HETIREND
,C_HETKEZDONAPJA
,C_HETSORSZAMA
,C_HETUTOLSONAPJA
,C_INTEZMENYID
,C_TANEVID
,TOROLT
,SERIAL
,LASTCHANGED
,CREATED
,MODIFIER
,CREATOR
) SELECT
ISNULL(x.ID, 1554) AS C_HETIREND -- C_HETIREND - int
,mindate AS C_HETKEZDONAPJA -- C_HETKEZDONAPJA - datetime
,week AS C_HETSORSZAMA -- C_HETSORSZAMA - int
,maxdate AS C_HETUTOLSONAPJA -- C_HETUTOLSONAPJA - datetime
,@intezmenyId AS C_INTEZMENYID -- C_INTEZMENYID - int
,@tanevId AS C_TANEVID -- C_TANEVID - int
,'F' AS TOROLT -- TOROLT - char(1)
,0 AS SERIAL -- SERIAL - int
,GETDATE() AS LASTCHANGED -- LASTCHANGED - datetime
,GETDATE() AS CREATED -- CREATED - datetime
,NULL AS MODIFIER -- MODIFIER - int
,NULL AS CREATOR -- CREATOR - int
FROM (
SELECT
MIN(dates) AS mindate -- C_HETKEZDONAPJA - datetime
,week AS week -- C_HETSORSZAMA - int
,MAX(dates) AS maxdate -- C_HETUTOLSONAPJA - datetime
FROM ctedaterange
GROUP BY week
) c
LEFT JOIN (
SELECT ROW_NUMBER() OVER (ORDER BY C_VALUE) AS RN, ID
FROM T_DICTIONARYITEMBASE_OSSZES d
WHERE C_TYPE = 'HetiRendTipus' AND ID <> 1554
AND C_INTEZMENYID = @intezmenyId AND C_TANEVID = @tanevId AND TOROLT='F'
) x ON x.RN % NULLIF(@cnt, 0) = c.week % NULLIF(@cnt, 0)
OPTION (maxrecursion 0)
END
GO