FMHN#71666: Toelichtingskenmerk van verbruiksartikel bij herhalen.

svn path=/Database/trunk/; revision=55705
This commit is contained in:
Maykel Geerdink
2022-04-26 16:10:24 +00:00
parent a7461ba225
commit 90a9fc7789

View File

@@ -395,57 +395,82 @@ AS
-- Verwijder eerst de oude niet-file kenmerken
-- Artikel kenmerken.
DELETE FROM res_kenmerkartikel
WHERE res_rsv_artikel_key IN (SELECT res_rsv_artikel_key FROM res_rsv_artikel WHERE res_rsv_ruimte_key = prsv_ruimte_key_to)
WHERE res_rsv_artikel_key IN (SELECT res_rsv_artikel_key
FROM res_rsv_artikel
WHERE res_rsv_ruimte_key = prsv_ruimte_key_to)
AND res_kenmerk_key IN
(SELECT k.res_kenmerk_key
FROM res_kenmerkartikel w, res_kenmerk k, res_srtkenmerk sk
FROM res_kenmerkartikel w,
res_kenmerk k,
res_srtkenmerk sk
WHERE w.res_kenmerk_key = k.res_kenmerk_key
AND k.res_srtkenmerk_key = sk.res_srtkenmerk_key
AND w.res_rsv_artikel_key IN (SELECT res_rsv_artikel_key FROM res_rsv_artikel WHERE res_rsv_ruimte_key = prsv_ruimte_key_to)
AND w.res_rsv_artikel_key IN (SELECT res_rsv_artikel_key
FROM res_rsv_artikel
WHERE res_rsv_ruimte_key = prsv_ruimte_key_to)
AND sk.res_srtkenmerk_kenmerktype NOT IN ('F', 'M', 'E'));
--
-- Artikel kenmerken.
-- Artikel is al toegevoegd indien catering is aangevinkt.
INSERT INTO res_kenmerkartikel (res_rsv_artikel_key, res_kenmerk_key, res_kenmerkartikel_waarde)
SELECT a.res_rsv_artikel_key,
k.res_kenmerk_key,
waarde_from.res_kenmerkartikel_waarde
FROM res_kenmerk k,
res_srtkenmerk s,
res_rsv_ruimte r,
res_rsv_artikel a,
(SELECT w1.res_kenmerkartikel_waarde,
k1.res_kenmerk_groep,
k1.res_srtkenmerk_key,
k1.res_artikel_key,
k1.res_kenmerk_key
FROM res_kenmerkartikel w1,
res_kenmerk k1,
res_srtkenmerk s1,
res_rsv_ruimte r1,
res_rsv_artikel a1
WHERE w1.res_kenmerk_key = k1.res_kenmerk_key
AND k1.res_srtkenmerk_key = s1.res_srtkenmerk_key
AND k1.res_artikel_key = a1.res_artikel_key
AND k1.res_activiteit_key IS NULL
AND w1.res_rsv_artikel_key = a1.res_rsv_artikel_key
AND a1.res_rsv_ruimte_key = r1.res_rsv_ruimte_key
AND w1.res_kenmerkartikel_verwijder IS NULL
AND s1.res_srtkenmerk_kenmerktype NOT IN ('F', 'M', 'E')
AND r1.res_rsv_ruimte_key = prsv_ruimte_key_from
) waarde_from
WHERE k.res_artikel_key = a.res_artikel_key
AND a.res_rsv_ruimte_key = r.res_rsv_ruimte_key
AND k.res_kenmerk_niveau = 'D'
AND k.res_kenmerk_volgnummer < 900
AND k.res_kenmerk_verwijder IS NULL
AND s.res_srtkenmerk_verwijder IS NULL
AND k.res_srtkenmerk_key = s.res_srtkenmerk_key
AND s.res_srtkenmerk_kenmerktype NOT IN ('F', 'M', 'E')
AND waarde_from.res_srtkenmerk_key = k.res_srtkenmerk_key
AND waarde_from.res_kenmerk_groep = k.res_kenmerk_groep
AND waarde_from.res_artikel_key = a.res_artikel_key
AND r.res_rsv_ruimte_key = prsv_ruimte_key_to;
-- De kenmerken van de oude en nieuwe reserveringen zijn exact hetzelfde met dezelfde kenmerk keys enz.
-- De kenmerken van de oude en nieuwe reservering in dezelfde volgorde zetten en dan de waarden overnemen.
INSERT INTO res_kenmerkartikel (res_rsv_artikel_key,
res_kenmerk_key,
res_kenmerkartikel_waarde)
SELECT newkenmerk.res_rsv_artikel_key,
newkenmerk.res_kenmerk_key,
oldkenmerk.res_kenmerkartikel_waarde
FROM (SELECT ka.res_rsv_artikel_key,
ka.res_kenmerk_key,
ka.res_kenmerkartikel_waarde,
ra.res_artikel_key,
ROW_NUMBER()
OVER(ORDER BY
rra.res_rsv_artikel_key,
k.res_kenmerk_key)
AS RN
FROM res_kenmerkartikel ka,
res_kenmerk k,
res_srtkenmerk sk,
res_rsv_ruimte rr,
res_rsv_artikel rra,
res_artikel ra
WHERE ka.res_kenmerk_key = k.res_kenmerk_key
AND k.res_srtkenmerk_key = sk.res_srtkenmerk_key
AND (k.res_artikel_key = rra.res_artikel_key
OR k.res_discipline_key = ra.res_discipline_key)
AND ra.res_artikel_key = rra.res_artikel_key
AND ka.res_rsv_artikel_key = rra.res_rsv_artikel_key
AND rra.res_rsv_ruimte_key = rr.res_rsv_ruimte_key
--AND k.res_activiteit_key IS NULL -- Niet nodig: Als res_activiteit_key gevuld is dan is res_kenmerk_niveau 'A'.
AND k.res_kenmerk_niveau IN ('C', 'D')
AND k.res_kenmerk_volgnummer < 900
AND k.res_kenmerk_verwijder IS NULL
AND ka.res_kenmerkartikel_verwijder IS NULL
AND sk.res_srtkenmerk_kenmerktype NOT IN ('F', 'M', 'E')
AND rr.res_rsv_ruimte_key = prsv_ruimte_key_from) oldkenmerk,
(SELECT rra.res_rsv_artikel_key,
k.res_kenmerk_key,
ra.res_artikel_key,
ROW_NUMBER()
OVER(ORDER BY
rra.res_rsv_artikel_key,
k.res_kenmerk_key)
AS rn
FROM res_rsv_ruimte rr,
res_rsv_artikel rra,
res_artikel ra,
res_kenmerk k
WHERE rra.res_rsv_ruimte_key = rr.res_rsv_ruimte_key
AND (k.res_artikel_key = rra.res_artikel_key
OR k.res_discipline_key = ra.res_discipline_key)
AND ra.res_artikel_key = rra.res_artikel_key
AND rr.res_rsv_ruimte_key = prsv_ruimte_key_to) newkenmerk
WHERE oldkenmerk.rn = newkenmerk.rn
AND oldkenmerk.res_kenmerk_key = newkenmerk.res_kenmerk_key
AND oldkenmerk.res_artikel_key = newkenmerk.res_artikel_key
ORDER BY newkenmerk.res_rsv_artikel_key,
newkenmerk.res_kenmerk_key;
END IF;
END IF;
-- 512 Bezoekers