diff --git a/PRS/PRS_PAC.SRC b/PRS/PRS_PAC.SRC index 5fd38ba4..4ca39270 100644 --- a/PRS/PRS_PAC.SRC +++ b/PRS/PRS_PAC.SRC @@ -1802,10 +1802,10 @@ AS SELECT prs_afdeling_key INTO v_afdeling_key - FROM prs_afdeling - WHERE UPPER (prs_afdeling_naam) = - UPPER (recPersLid.prs_afdeling_naam) - AND prs_afdeling_verwijder IS NULL; + FROM prs_v_aanwezigafdeling_boom b, prs_afdeling a + WHERE UPPER (a.prs_afdeling_naam) = UPPER (recPersLid.prs_afdeling_naam) + AND a.prs_afdeling_verwijder IS NULL + AND a.prs_afdeling_key = b.prs_afdeling_key; v_space := ''; -- kijk hoe we met partnernamen moeten omgaan: diff --git a/PRS/PRS_VIE.SRC b/PRS/PRS_VIE.SRC index 027b91ff..61bcbf31 100644 --- a/PRS/PRS_VIE.SRC +++ b/PRS/PRS_VIE.SRC @@ -235,6 +235,107 @@ SELECT '5' Niveau, AND a5.prs_afdeling_parentkey=a4.prs_afdeling_key AND a1.prs_afdeling_parentkey IS NULL; +-- De 'aanwezig'-variant van bovenstaande boom, en dat is handiger dan je denkt +-- Een aanwezige afdeling met ergens daarboven een parent die niet aanwezig is, +-- is effectief namelijk eigenlijk niet aanwezig. +-- Kan dus ook gebruikt worden om te checken of een afdeling echt nog aanwezig is +CREATE_VIEW (prs_v_aanwezigafdeling_boom, 0) +( + niveau, + prs_bedrijf_key, + prs_afdeling_key, + prs_afdeling_key1, + prs_afdeling_key2, + prs_afdeling_key3, + prs_afdeling_key4, + prs_afdeling_key5 +) +AS + SELECT '1' niveau, + a1.prs_bedrijf_key, + a1.prs_afdeling_key, + a1.prs_afdeling_key, + TO_NUMBER (NULL), + TO_NUMBER (NULL), + TO_NUMBER (NULL), + TO_NUMBER (NULL) + FROM prs_afdeling a1 + WHERE a1.prs_afdeling_parentkey IS NULL AND a1.prs_afdeling_verwijder IS NULL + UNION + SELECT '2' niveau, + a1.prs_bedrijf_key, + a2.prs_afdeling_key, + a1.prs_afdeling_key, + a2.prs_afdeling_key, + TO_NUMBER (NULL), + TO_NUMBER (NULL), + TO_NUMBER (NULL) + FROM prs_afdeling a1, prs_afdeling a2 + WHERE a2.prs_afdeling_parentkey = a1.prs_afdeling_key + AND a1.prs_afdeling_parentkey IS NULL + AND a1.prs_afdeling_verwijder IS NULL + AND a2.prs_afdeling_verwijder IS NULL + UNION + SELECT '3' niveau, + a1.prs_bedrijf_key, + a3.prs_afdeling_key, + a1.prs_afdeling_key, + a2.prs_afdeling_key, + a3.prs_afdeling_key, + TO_NUMBER (NULL), + TO_NUMBER (NULL) + FROM prs_afdeling a1, prs_afdeling a2, prs_afdeling a3 + WHERE a2.prs_afdeling_parentkey = a1.prs_afdeling_key + AND a3.prs_afdeling_parentkey = a2.prs_afdeling_key + AND a1.prs_afdeling_parentkey IS NULL + AND a1.prs_afdeling_verwijder IS NULL + AND a2.prs_afdeling_verwijder IS NULL + AND a3.prs_afdeling_verwijder IS NULL + UNION + SELECT '4' niveau, + a1.prs_bedrijf_key, + a4.prs_afdeling_key, + a1.prs_afdeling_key, + a2.prs_afdeling_key, + a3.prs_afdeling_key, + a4.prs_afdeling_key, + TO_NUMBER (NULL) + FROM prs_afdeling a1, + prs_afdeling a2, + prs_afdeling a3, + prs_afdeling a4 + WHERE a2.prs_afdeling_parentkey = a1.prs_afdeling_key + AND a3.prs_afdeling_parentkey = a2.prs_afdeling_key + AND a4.prs_afdeling_parentkey = a3.prs_afdeling_key + AND a1.prs_afdeling_parentkey IS NULL + AND a1.prs_afdeling_verwijder IS NULL + AND a2.prs_afdeling_verwijder IS NULL + AND a3.prs_afdeling_verwijder IS NULL + AND a4.prs_afdeling_verwijder IS NULL + UNION + SELECT '5' niveau, + a1.prs_bedrijf_key, + a5.prs_afdeling_key, + a1.prs_afdeling_key, + a2.prs_afdeling_key, + a3.prs_afdeling_key, + a4.prs_afdeling_key, + a5.prs_afdeling_key + FROM prs_afdeling a1, + prs_afdeling a2, + prs_afdeling a3, + prs_afdeling a4, + prs_afdeling a5 + WHERE a2.prs_afdeling_parentkey = a1.prs_afdeling_key + AND a3.prs_afdeling_parentkey = a2.prs_afdeling_key + AND a4.prs_afdeling_parentkey = a3.prs_afdeling_key + AND a5.prs_afdeling_parentkey = a4.prs_afdeling_key + AND a1.prs_afdeling_parentkey IS NULL + AND a1.prs_afdeling_verwijder IS NULL + AND a2.prs_afdeling_verwijder IS NULL + AND a3.prs_afdeling_verwijder IS NULL + AND a4.prs_afdeling_verwijder IS NULL + AND a5.prs_afdeling_verwijder IS NULL; CREATE_VIEW(prs_v_afdeling_fullnames, 0) ( NIVEAU,