Files
Customer/GOKO/goko.sql
2025-01-16 11:53:42 +00:00

3074 lines
133 KiB
SQL
Raw Blame History

--
-- $Id$
--
-- Script containing customer specific sql statements for the FACILITOR database
DEFINE thisfile = 'goko.SQL'
DEFINE dbuser = 'GOKO'
SET ECHO ON
SET DEFINE ON
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
COLUMN fcltcusttxt NEW_VALUE fcltcusttxt NOPRINT;
WHENEVER SQLERROR CONTINUE;
SELECT adm.getscriptspoolfile('&thisfile') AS fcltlogfile FROM DUAL;
SPOOL &fcltlogfile
WHENEVER SQLERROR EXIT;
SELECT adm.checkscriptcust('&dbuser') AS fcltcusttxt FROM DUAL;
WHENEVER SQLERROR CONTINUE;
---------------------------------------
PROMPT &fcltcusttxt
---------------------------------------
SET DEFINE OFF
------ payload begin ------
CREATE OR REPLACE PACKAGE GOKO
AS
-- PROCEDURE set_werkplek;
-- PROCEDURE annuleer_werkplek;
-- PROCEDURE bes_after_insert (p_bes_bestelling_key IN NUMBER);
FUNCTION get_kenmerk (p_module IN VARCHAR2,
p_kenmerk_key IN NUMBER,
p_link_key IN NUMBER)
RETURN VARCHAR2;
FUNCTION get_kenmerkwaarde (p_kenmerk_type VARCHAR2,
p_kenmerkdomein_key NUMBER,
p_kenmerk_waarde VARCHAR2)
RETURN VARCHAR2;
END;
/
CREATE OR REPLACE PACKAGE BODY GOKO
AS
FUNCTION get_kenmerk (p_module IN VARCHAR2,
p_kenmerk_key IN NUMBER,
p_link_key IN NUMBER)
RETURN VARCHAR2
AS
v_kenmerk_type mld_srtkenmerk.mld_srtkenmerk_kenmerktype%TYPE;
v_kenmerk_waarde mld_kenmerkmelding.mld_kenmerkmelding_waarde%TYPE;
v_kenmerkdomein_key fac_kenmerkdomein.fac_kenmerkdomein_key%TYPE;
v_kenmerk_niveau ins_kenmerk.ins_kenmerk_niveau%TYPE;
BEGIN
CASE p_module
WHEN 'MLD'
THEN
SELECT mld_srtkenmerk_kenmerktype,
sk.fac_kenmerkdomein_key,
km.mld_kenmerkmelding_waarde
INTO v_kenmerk_type, v_kenmerkdomein_key, v_kenmerk_waarde
FROM mld_v_aanwezigkenmerkmelding km,
mld_kenmerk k,
mld_srtkenmerk sk
WHERE km.mld_melding_key = p_link_key
AND km.mld_kenmerk_key = p_kenmerk_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key;
WHEN 'CNT'
THEN
SELECT cnt_srtkenmerk_kenmerktype,
sk.fac_kenmerkdomein_key,
kc.cnt_kenmerkcontract_waarde
INTO v_kenmerk_type, v_kenmerkdomein_key, v_kenmerk_waarde
FROM cnt_kenmerkcontract kc,
cnt_kenmerk k,
cnt_srtkenmerk sk
WHERE kc.cnt_contract_key = p_link_key
AND kc.cnt_kenmerk_key = p_kenmerk_key
AND kc.cnt_kenmerk_key = k.cnt_kenmerk_key
AND k.cnt_srtkenmerk_key = sk.cnt_srtkenmerk_key;
WHEN 'ALG'
THEN
SELECT alg_kenmerk_kenmerktype,
k.fac_kenmerkdomein_key,
aogk.alg_onrgoedkenmerk_waarde
INTO v_kenmerk_type, v_kenmerkdomein_key, v_kenmerk_waarde
FROM alg_onrgoedkenmerk aogk, alg_kenmerk k
WHERE aogk.alg_onrgoed_key = p_link_key
AND aogk.alg_kenmerk_key = p_kenmerk_key
AND aogk.alg_kenmerk_key = k.alg_kenmerk_key;
WHEN 'INS'
THEN
SELECT k.ins_kenmerk_niveau
INTO v_kenmerk_niveau
FROM ins_kenmerk k
WHERE ins_kenmerk_key = p_kenmerk_key;
IF v_kenmerk_niveau = 'C'
THEN
SELECT sk.ins_srtkenmerk_kenmerktype,
sk.fac_kenmerkdomein_key,
ikds.ins_kmdeelsrtcontr_waarde
INTO v_kenmerk_type,
v_kenmerkdomein_key,
v_kenmerk_waarde
FROM ins_kmdeelsrtcontr ikds,
ins_kenmerk k,
ins_srtkenmerk sk
WHERE ikds.ins_kmdeelsrtcontr_key = p_link_key
AND ikds.ins_kmdeelsrtcontr_verwijder IS NULL
AND ikds.ins_kenmerk_key = p_kenmerk_key
AND ikds.ins_kenmerk_key = k.ins_kenmerk_key
AND k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key;
ELSE
SELECT sk.ins_srtkenmerk_kenmerktype,
sk.fac_kenmerkdomein_key,
ikd.ins_kenmerkdeel_waarde
INTO v_kenmerk_type,
v_kenmerkdomein_key,
v_kenmerk_waarde
FROM ins_kenmerkdeel ikd,
ins_kenmerk k,
ins_srtkenmerk sk
WHERE ikd.ins_deel_key = p_link_key
AND ikd.ins_kenmerkdeel_verwijder IS NULL
AND ikd.ins_kenmerk_key = p_kenmerk_key
AND ikd.ins_kenmerk_key = k.ins_kenmerk_key
AND k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key;
END IF;
END CASE;
RETURN goko.get_kenmerkwaarde (v_kenmerk_type,
v_kenmerkdomein_key,
v_kenmerk_waarde);
END;
FUNCTION get_kenmerkwaarde (p_kenmerk_type VARCHAR2,
p_kenmerkdomein_key NUMBER,
p_kenmerk_waarde VARCHAR2)
RETURN VARCHAR2
AS
v_result VARCHAR2 (4000);
BEGIN
IF p_kenmerk_type = 'R' OR p_kenmerk_type = 'S'
THEN
v_result :=
fac.getdomeinwaarde (p_kenmerkdomein_key, p_kenmerk_waarde);
ELSIF p_kenmerk_type = 'D'
THEN
v_result :=
TO_CHAR (fac.safe_to_date (p_kenmerk_waarde, 'dd-mm-yyyy'),
'yyyy-mm-dd');
ELSE
v_result := p_kenmerk_waarde;
END IF;
RETURN v_result;
END;
END;
/
-------------------------------
--- DOMEIN-VIEWS --------------
-------------------------------
-- Voor keuzelijstjes (kenmerk domein)
CREATE OR REPLACE VIEW goko_v_personenlijst
(
PRS_PERSLID_KEY,
NAAM
)
AS
SELECT
p.prs_perslid_key,
CASE
WHEN p.prs_perslid_tussenvoegsel IS NOT NULL
THEN
p.prs_perslid_voornaam || ' ' || p.prs_perslid_tussenvoegsel || ' ' || p.prs_perslid_naam
ELSE
p.prs_perslid_voornaam || ' ' || p.prs_perslid_naam
END naam
FROM
prs_perslid p,
prs_srtperslid sp,
prs_v_afdeling a,
prs_bedrijf b
WHERE
p.prs_afdeling_key = a.prs_afdeling_key
AND a.prs_bedrijf_key = b.prs_bedrijf_key
AND p.prs_srtperslid_key = sp.prs_srtperslid_key
AND b.prs_bedrijf_key = 21 -- bedrijfs_key GO Kinderopvang
AND UPPER(sp.prs_srtperslid_omschrijving) NOT IN ('TEAMACCOUNT','INTERNE AFDELING') -- Geen team-accounts en interne afdeling-accounts
AND p.prs_perslid_verwijder IS NULL
ORDER BY p.prs_perslid_naam
;
CREATE OR REPLACE VIEW goko_v_kostenplaatsen
(
PRS_KOSTENPLAATS_KEY,
NR,
OMSCHRIJVING
)
AS
SELECT
kp.prs_kostenplaats_key,
kp.prs_kostenplaats_nr,
kpg.prs_kostenplaatsgrp_oms || ' - ' || kp.prs_kostenplaats_nr || ' ' || kp.prs_kostenplaats_omschrijving
omschrijving
FROM
prs_kostenplaats kp,
prs_kostenplaatsgrp kpg
WHERE
kp.prs_kostenplaatsgrp_key = kpg.prs_kostenplaatsgrp_key
AND kp.prs_kostenplaats_verwijder IS NULL
AND (kp.prs_kostenplaats_eind IS NULL OR kp.prs_kostenplaats_eind > TRUNC(SYSDATE) )
AND kp.prs_kostenplaats_module = 'PRS'
ORDER BY kpg.prs_kostenplaatsgrp_oms || ' - ' || kp.prs_kostenplaats_nr || ' ' || kp.prs_kostenplaats_omschrijving
;
-- Lijst van Locatieleiders (tbv domeinview)
CREATE OR REPLACE VIEW goko_v_personenlijst_leider
(
PRS_PERSLID_KEY,
NAAM,
PERSONEELSNUMMER,
EMAIL
)
AS
SELECT
p.prs_perslid_key,
CASE WHEN p.prs_perslid_tussenvoegsel IS NULL
THEN p.prs_perslid_voornaam || ' ' || p.prs_perslid_naam || ' (' || sp.prs_srtperslid_omschrijving || ')'
ELSE p.prs_perslid_voornaam || ' ' || p.prs_perslid_tussenvoegsel || ' ' || p.prs_perslid_naam || ' (' || sp.prs_srtperslid_omschrijving || ')'
END
naam,
p.prs_perslid_nr,
p.prs_perslid_email
FROM
prs_perslid p,
prs_srtperslid sp,
prs_v_afdeling a,
prs_bedrijf b
WHERE
p.prs_afdeling_key = a.prs_afdeling_key
AND a.prs_bedrijf_key = b.prs_bedrijf_key
AND b.prs_bedrijf_key = 21 -- bedrijfs_key GOKO
AND p.prs_srtperslid_key = sp.prs_srtperslid_key
AND sp.prs_srtperslid_key IN (122, 3121) --- LOCATIEMANAGER/LEIDER
AND p.prs_perslid_verwijder IS NULL
ORDER BY p.prs_perslid_naam
;
-- Lijst van Waarnemers (tbv domeinview)
CREATE OR REPLACE VIEW goko_v_personenlijst_waarn
(
PRS_PERSLID_KEY,
NAAM,
PERSONEELSNUMMER,
EMAIL
)
AS
SELECT
p.prs_perslid_key,
CASE WHEN p.prs_perslid_tussenvoegsel IS NULL
THEN p.prs_perslid_voornaam || ' ' || p.prs_perslid_naam || ' (Waarnemer - ' || sp.prs_srtperslid_omschrijving || ')'
ELSE p.prs_perslid_voornaam || ' ' || p.prs_perslid_tussenvoegsel || ' ' || p.prs_perslid_naam || ' (Waarnemer - ' || sp.prs_srtperslid_omschrijving || ')'
END
naam,
p.prs_perslid_nr,
p.prs_perslid_email
FROM
prs_perslid p,
prs_srtperslid sp,
prs_v_afdeling a,
prs_bedrijf b,
prs_kenmerklink kl
WHERE
p.prs_afdeling_key = a.prs_afdeling_key
AND a.prs_bedrijf_key = b.prs_bedrijf_key
AND p.prs_srtperslid_key = sp.prs_srtperslid_key
AND p.prs_perslid_key = kl.prs_link_key
AND kl.prs_kenmerk_key = 1009 -- kenmerk waarnemer (vinkbox)
AND kl.prs_kenmerklink_waarde = '1' AND kl.prs_kenmerklink_verwijder IS NULL
AND p.prs_perslid_verwijder IS NULL
ORDER BY p.prs_perslid_naam
;
-- Lijst van Locatieleiders/Waarnemers en de locaties waar men verantwoordelijk voor is (tbv Personen-import)
CREATE OR REPLACE VIEW goko_v_locatiemanagers
(
PRS_PERSLID_KEY,
ALG_LOCATIE_KEY,
LOCATIEMANAGER,
LOCATIE,
WAARNEMER,
PRS_PERSLID_VERWIJDER
)
AS
SELECT p.prs_perslid_key,
l.alg_locatie_key,
p.prs_perslid_naam || ' (' || p.prs_perslid_voornaam || ' ' || p.prs_perslid_tussenvoegsel || ') - ' || sp.prs_srtperslid_omschrijving
locatiemanager,
l.alg_locatie_code || ' - ' || l.alg_locatie_omschrijving
locatie,
CASE WHEN ok.alg_kenmerk_key = 1003 THEN 'ja' ELSE 'nee' END
waarnemer,
p.prs_perslid_verwijder
FROM prs_perslid p, prs_srtperslid sp, alg_onrgoedkenmerk ok, alg_locatie l
WHERE fac.safe_to_number(ok.alg_onrgoedkenmerk_waarde) = p.prs_perslid_key
AND ok.alg_kenmerk_key IN (1002, 1003) -- locatieleider en waarnemer
AND ok.alg_onrgoedkenmerk_verwijder IS NULL
AND ok.alg_onrgoed_niveau = 'L' AND ok.alg_onrgoed_key = l.alg_locatie_key
AND l.alg_locatie_verwijder IS NULL
AND (TRUNC(l.alg_locatie_vervaldatum) > TRUNC(sysdate) OR l.alg_locatie_vervaldatum IS NULL )
AND p.prs_srtperslid_key = sp.prs_srtperslid_key
GROUP BY p.prs_perslid_key, l.alg_locatie_key,
p.prs_perslid_naam || ' (' || p.prs_perslid_voornaam || ' ' || p.prs_perslid_tussenvoegsel || ') - ' || sp.prs_srtperslid_omschrijving,
l.alg_locatie_code || ' - ' || l.alg_locatie_omschrijving,
CASE WHEN ok.alg_kenmerk_key = 1003 THEN 'ja' ELSE 'nee' END,
p.prs_perslid_verwijder ;
-- Lijst van Locatiemanagers + Waarnemers en de Werkplekkoppeling die ze in hun personenkaart hebben (tbv Personen-import)
CREATE OR REPLACE VIEW goko_v_locatiemanagers_wp
(
PRS_PERSLID_KEY,
ALG_LOCATIE_KEY,
NAAM,
LOCATIE_WP,
PRS_WERKPLEK_KEY
)
AS
SELECT wp.prs_perslid_key,
onr.alg_locatie_key,
p.prs_perslid_naam_friendly,
l.alg_locatie_code || ' - ' || l.alg_locatie_omschrijving
locatie,
w.prs_werkplek_key
FROM (
SELECT prs_perslid_key
FROM (SELECT *
FROM goko_v_personenlijst_leider
UNION
SELECT *
FROM goko_v_personenlijst_waarn) x
GROUP BY x.prs_perslid_key
) v,
prs_v_perslid_fullnames p, prs_perslidwerkplek wp, prs_werkplek w, alg_ruimte r, alg_v_onrgoed_boom onr, alg_locatie l
WHERE v.prs_perslid_key = p.prs_perslid_key
AND p.prs_perslid_key = wp.prs_perslid_key
AND wp.prs_werkplek_key = w.prs_werkplek_key
AND w.prs_alg_ruimte_key = r.alg_ruimte_key
AND r.alg_ruimte_key = onr.alg_ruimte_key
AND onr.alg_locatie_key = l.alg_locatie_key
ORDER BY wp.prs_perslid_key
;
-- Lijst van Locaties en de kostenplaaten die daaronder vallen (opvangsoorten die men aanbied)
CREATE OR REPLACE VIEW goko_v_locatie_kp
(
ALG_LOCATIE_KEY,
LOCATIE,
PRS_KOSTENPLAATS_KEY,
PRS_KOSTENPLAATS_NR,
PRS_KOSTENPLAATS_OMSCHRIJVING
)
AS
SELECT l.alg_locatie_key, l.alg_locatie_code || ' - ' || l.alg_locatie_omschrijving locatie, kw.alg_onrgoedkenmerk_waarde prs_kosttenplaats_key, kp.nr, kp.omschrijving
FROM alg_locatie l, alg_onrgoedkenmerk kw, goko_v_kostenplaatsen kp
WHERE l.alg_locatie_key = kw.alg_onrgoed_key
AND kw.alg_onrgoed_niveau = 'L'
AND kw.alg_onrgoedkenmerk_verwijder IS NULL
AND kw.alg_kenmerk_key = 1010 -- kostenplaats KDV
AND l.alg_locatie_verwijder IS NULL
AND (TRUNC(l.alg_locatie_vervaldatum) > TRUNC(sysdate) OR l.alg_locatie_vervaldatum IS NULL )
AND fac.safe_to_number(kw.alg_onrgoedkenmerk_waarde) = kp.prs_kostenplaats_key
UNION
SELECT l.alg_locatie_key, l.alg_locatie_code || ' - ' || l.alg_locatie_omschrijving locatie, kw.alg_onrgoedkenmerk_waarde prs_kosttenplaats_key, kp.nr, kp.omschrijving
FROM alg_locatie l, alg_onrgoedkenmerk kw, goko_v_kostenplaatsen kp
WHERE l.alg_locatie_key = kw.alg_onrgoed_key
AND kw.alg_onrgoed_niveau = 'L'
AND kw.alg_onrgoedkenmerk_verwijder IS NULL
AND kw.alg_kenmerk_key = 1012 -- kostenplaats BSO
AND l.alg_locatie_verwijder IS NULL
AND (TRUNC(l.alg_locatie_vervaldatum) > TRUNC(sysdate) OR l.alg_locatie_vervaldatum IS NULL )
AND fac.safe_to_number(kw.alg_onrgoedkenmerk_waarde) = kp.prs_kostenplaats_key
UNION
SELECT l.alg_locatie_key, l.alg_locatie_code || ' - ' || l.alg_locatie_omschrijving locatie, kw.alg_onrgoedkenmerk_waarde prs_kosttenplaats_key, kp.nr, kp.omschrijving
FROM alg_locatie l, alg_onrgoedkenmerk kw, goko_v_kostenplaatsen kp
WHERE l.alg_locatie_key = kw.alg_onrgoed_key
AND kw.alg_onrgoed_niveau = 'L'
AND kw.alg_onrgoedkenmerk_verwijder IS NULL
AND kw.alg_kenmerk_key = 1014 -- kostenplaats PSZ
AND l.alg_locatie_verwijder IS NULL
AND (TRUNC(l.alg_locatie_vervaldatum) > TRUNC(sysdate) OR l.alg_locatie_vervaldatum IS NULL )
AND fac.safe_to_number(kw.alg_onrgoedkenmerk_waarde) = kp.prs_kostenplaats_key
UNION
SELECT l.alg_locatie_key, l.alg_locatie_code || ' - ' || l.alg_locatie_omschrijving locatie, kw.alg_onrgoedkenmerk_waarde prs_kosttenplaats_key, kp.nr, kp.omschrijving
FROM alg_locatie l, alg_onrgoedkenmerk kw, goko_v_kostenplaatsen kp
WHERE l.alg_locatie_key = kw.alg_onrgoed_key
AND kw.alg_onrgoed_niveau = 'L'
AND kw.alg_onrgoedkenmerk_verwijder IS NULL
AND kw.alg_kenmerk_key = 1017 -- kostenplaats TSO
AND l.alg_locatie_verwijder IS NULL
AND (TRUNC(l.alg_locatie_vervaldatum) > TRUNC(sysdate) OR l.alg_locatie_vervaldatum IS NULL )
AND fac.safe_to_number(kw.alg_onrgoedkenmerk_waarde) = kp.prs_kostenplaats_key
UNION
SELECT l.alg_locatie_key, l.alg_locatie_code || ' - ' || l.alg_locatie_omschrijving locatie, kw.alg_onrgoedkenmerk_waarde prs_kosttenplaats_key, kp.nr, kp.omschrijving
FROM alg_locatie l, alg_onrgoedkenmerk kw, goko_v_kostenplaatsen kp
WHERE l.alg_locatie_key = kw.alg_onrgoed_key
AND kw.alg_onrgoed_niveau = 'L'
AND kw.alg_onrgoedkenmerk_verwijder IS NULL
AND kw.alg_kenmerk_key = 1016 -- 2e kostenplaats PSZ
AND l.alg_locatie_verwijder IS NULL
AND (TRUNC(l.alg_locatie_vervaldatum) > TRUNC(sysdate) OR l.alg_locatie_vervaldatum IS NULL )
AND fac.safe_to_number(kw.alg_onrgoedkenmerk_waarde) = kp.prs_kostenplaats_key
UNION
SELECT l.alg_locatie_key, l.alg_locatie_code || ' - ' || l.alg_locatie_omschrijving locatie, kw.alg_onrgoedkenmerk_waarde prs_kosttenplaats_key, kp.nr, kp.omschrijving
FROM alg_locatie l, alg_onrgoedkenmerk kw, goko_v_kostenplaatsen kp
WHERE l.alg_locatie_key = kw.alg_onrgoed_key
AND kw.alg_onrgoed_niveau = 'L'
AND kw.alg_onrgoedkenmerk_verwijder IS NULL
AND kw.alg_kenmerk_key = 1041 -- kostenplaats Vakantie
AND l.alg_locatie_verwijder IS NULL
AND (TRUNC(l.alg_locatie_vervaldatum) > TRUNC(sysdate) OR l.alg_locatie_vervaldatum IS NULL )
AND fac.safe_to_number(kw.alg_onrgoedkenmerk_waarde) = kp.prs_kostenplaats_key ;
CREATE OR REPLACE PROCEDURE goko_import_perslid (p_import_key IN NUMBER)
AS
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_errormsg VARCHAR2 (400);
v_errorhint VARCHAR2 (400);
v_aantal_in_fclt NUMBER;
-- overige variabelen
v_prs_afdeling_key NUMBER (10);
c_prs_afdeling_key NUMBER (10) := 22; -- Fallback-afdeling 'OVERIG'
c_prs_afdeling_key_leid NUMBER (10) := 21; -- Afdeling OPVANG bestemd voor de Locatieleiders
v_prs_kostenplaats_key NUMBER (10);
v_prs_afdeling_upper VARCHAR2 (10);
v_alg_locatie_key NUMBER (10);
v_alg_locatie_code VARCHAR2 (10);
v_alg_gebouw_key NUMBER (10);
v_alg_gebouw_code VARCHAR2 (12);
v_alg_verdieping_key NUMBER (10);
v_alg_verdieping_volgnr NUMBER (3);
v_alg_ruimte_key NUMBER (10);
v_alg_ruimte_nr VARCHAR2 (20);
-- emailadres facilitor is leading - indien leeg in facilitor en gevuld in beaufort dan nemen we wel beaufort emailadres over
CURSOR c_email
IS
SELECT fac_imp_file_index,
p.prs_perslid_key,
p.prs_perslid_email,
i.prs_kenmerk7,
p.prs_perslid_oslogin,
CASE
WHEN p.prs_perslid_email <>
COALESCE (i.prs_kenmerk7, 'onbekend')
THEN
'facilitor leading: emailadres facilitor ongelijk met beaufort'
WHEN p.prs_perslid_email = i.prs_kenmerk7
THEN
'facilitor leading: emailadres facilitor en beaufort gelijk'
ELSE
'facilitor leading: ??'
END
check_email
FROM fac_imp_perslid i, prs_perslid p
WHERE fac_import_key = p_import_key
AND i.prs_perslid_nr = p.prs_perslid_nr
AND p.prs_perslid_verwijder IS NULL
AND p.prs_perslid_email IS NOT NULL
UNION
SELECT fac_imp_file_index,
p.prs_perslid_key,
p.prs_perslid_email,
i.prs_kenmerk7,
p.prs_perslid_oslogin,
'emailadres facilitor leeg en beaufort gevuld' check_email
FROM fac_imp_perslid i, prs_perslid p
WHERE fac_import_key = p_import_key
AND i.prs_perslid_nr = p.prs_perslid_nr
AND p.prs_perslid_verwijder IS NULL
AND p.prs_perslid_email IS NULL
AND i.prs_kenmerk7 IS NOT NULL
ORDER BY 1;
-- Facilitor is leading qua Functies - Voor alle bestaande werknemers de facilitor-functie overnemen en voor nieuwe medewerkers de functie uit beaufort initieel pakken..
CURSOR c_functie
IS
SELECT fac_imp_file_index,
p.prs_perslid_key,
sp.prs_srtperslid_omschrijving,
sp.prs_srtperslid_key
FROM fac_imp_perslid i, prs_perslid p, prs_srtperslid sp
WHERE fac_import_key = p_import_key
AND i.prs_perslid_nr = p.prs_perslid_nr
AND p.prs_perslid_verwijder IS NULL
AND p.prs_srtperslid_key = sp.prs_srtperslid_key
AND p.prs_srtperslid_key IS NOT NULL
UNION ALL
SELECT fac_imp_file_index,
-1
prs_perslid_key,
COALESCE (i.prs_kenmerk1, 'Onbekend')
prs_srtperslid_omschrijving,
1 prs_srtperslid_key -- key van onbekend
FROM fac_imp_perslid i
WHERE fac_import_key = p_import_key
AND NOT EXISTS
(SELECT 1
FROM prs_perslid p
WHERE p.prs_perslid_nr = i.prs_perslid_nr
AND p.prs_perslid_verwijder IS NULL);
CURSOR c_afd
IS
SELECT fac_imp_file_index,
prs_afdeling_naam,
prs_kenmerk5,
prs_srtperslid_omschrijving,
prs_kenmerk8 -- prs_srtperslid_key
FROM fac_imp_perslid
WHERE fac_import_key = p_import_key
ORDER BY 1;
CURSOR c_login
IS
SELECT fac_imp_file_index, p.prs_perslid_key, p.prs_perslid_oslogin
FROM fac_imp_perslid i, prs_perslid p
WHERE fac_import_key = p_import_key
AND i.prs_perslid_nr = p.prs_perslid_nr
AND p.prs_perslid_verwijder IS NULL
AND p.prs_perslid_oslogin IS NOT NULL
ORDER BY 1;
CURSOR c_loc
IS
SELECT fac_imp_file_index, prs_kenmerk5
FROM fac_imp_perslid
WHERE fac_import_key = p_import_key
ORDER BY 1;
BEGIN
-- Het aangeleverde bestand heeft de gegevens komma gescheiden ipv ;
v_errorhint := 'Delimiter goed zetten';
-- UPDATE fac_imp_file
-- SET fac_imp_file_line = REPLACE (fac_imp_file_line, ',', ';')
-- WHERE fac_import_key = p_import_key;
-- Het aangeleverde bestand heeft aanhalingstekens om de invoervelden..
-- UPDATE fac_imp_file
-- SET fac_imp_file_line = REPLACE (fac_imp_file_line, '"', '')
-- WHERE fac_import_key = p_import_key;
v_errorhint := 'Generieke update';
-- De sequence array staat beschreven in PRS_PAC.SRC bij de prs.import_perslid procedure
-- Voor GOKO geldt: functie in Facilitor gaan we leading maken. bij import-inleesactie vullen met personeelsnr en daarna overschrijven met het de functie uit Facilitor of bij nieuwe medewerker met <onbekend>
---
prs.import_perslid (
p_import_key,
'0;0;0;0;0;0;5;8;7;6;'
|| '0;0;0;0;0;0;0;0;0;5;'
|| '5;0;0;0;0;0;9;1;2;3;'
|| '4;10;11;0;0;0;0;0;0;0;'
|| '0;0;0;0;0;0',
'Regio;Locatie;Inzet werksoort;Kostenplaats loonverd;Persoonsnr;Roepnaam;Voorvoeg;Persoonsnaam;Oms functie;Uitdienst dat;Email werk%');
-- 1 2 3 4 5 6 7 8 9 10 11
-- DEF. BESTAND BIJ GOKO: Regio;Locatie;Inzet werksoort;Kostenplaats loonverd.;Persoonsnr.;Roepnaam;Voorvoeg.;Persoonsnaam;Oms functie;Uitdienst dat.;Email werk
v_errorhint := 'Uit dienst datum goed vullen';
UPDATE fac_imp_perslid
SET prs_kenmerk6 =
DECODE (fac.safe_to_date (prs_kenmerk6, 'dd-mm-yyyy'),
NULL, NULL,
fac.safe_to_date (prs_kenmerk6, 'dd-mm-yyyy'))
WHERE prs_kenmerk6 IS NOT NULL;
v_errorhint := 'De FUNCTIE uit Facilitor is leading';
FOR rec IN c_functie
LOOP
BEGIN
UPDATE fac_imp_perslid
SET prs_srtperslid_omschrijving = rec.prs_srtperslid_omschrijving,
prs_kenmerk8 = rec.prs_srtperslid_key
WHERE fac_imp_file_index = rec.fac_imp_file_index;
END;
END LOOP;
v_errorhint := 'Emailadres Go-Kinderopvang vullen';
-- De prive-adressen die uit Beaufort meekomen verwijderen - alleen de zakelijke emailadressen nemen we over naar kenmerkveld Email (werk)
UPDATE fac_imp_perslid
SET prs_kenmerk7 = NULL
WHERE prs_kenmerk7 IS NOT NULL
AND INSTR (UPPER (prs_kenmerk7), '@GO-KINDEROPVANG.NL') = 0;
v_errorhint := 'Het EMAIL-adres uit Facilitor is leading';
-- Facilitor is leading qua emailadressen.
FOR rec IN c_email
LOOP
BEGIN
IF INSTR (rec.check_email, 'facilitor leading') > 0
THEN
UPDATE fac_imp_perslid
SET prs_perslid_email = rec.prs_perslid_email
WHERE fac_imp_file_index = rec.fac_imp_file_index;
END IF;
IF rec.check_email =
'emailadres facilitor leeg en beaufort gevuld'
THEN
UPDATE fac_imp_perslid
SET prs_perslid_email = rec.prs_kenmerk7
WHERE fac_imp_file_index = rec.fac_imp_file_index;
END IF;
END;
END LOOP;
v_errorhint := 'Afdeling bepalen en vullen';
-- Afdeling bepalen waar persoon onder komt te vallen. LET OP - Deze is voor GOKO niet altijd gevuld!? Oplossen door eerst te vullen met PERSONEELSNR en in Kenmerk5 de kostenplaats/afdeling
--- Voor locatieleiders geldt dat deze altijd op organisatie 'OPVANG' moeten komen (onder dit organisatieonderdeel zitten op niveau 2 de team/afdelingen/kostenplaatsen)
--- Voor kantoorpersoneel geldt dat ze onder organsiatie KCC op hun eigen kantoor-afdeling-2 komen (kostenplaatsnr Beaufort = afdelingscode kantoor)
FOR rec IN c_afd
LOOP
BEGIN
v_errorhint := 'Persoon aan Afdeling koppelen';
-- Als locatieleider dan afdeling altijd OPVANG (c_prs_afdeling_key_leid)
IF rec.prs_kenmerk8 = 122 -- prs_srtperslid_key leider/manager
THEN
UPDATE fac_imp_perslid
SET prs_afdeling_naam =
(SELECT prs_afdeling_upper
FROM prs_afdeling
WHERE prs_afdeling_key = c_prs_afdeling_key_leid)
WHERE fac_imp_file_index = rec.fac_imp_file_index;
ELSE
IF rec.prs_kenmerk5 IS NULL
THEN
v_prs_afdeling_key := NULL;
ELSE
SELECT MIN (prs_afdeling_key)
INTO v_prs_afdeling_key
FROM prs_v_afdeling
WHERE prs_afdeling_upper = UPPER (rec.prs_kenmerk5)
AND prs_bedrijf_key = 21 -- bedrijf GOKO
AND prs_afdeling_verwijder IS NULL;
END IF;
-- Als afdeling uit beaufort (nog) niet bekend is in Facilitor dan op afdeling OVERIG zetten (c_prs_afdeling_key)
IF v_prs_afdeling_key IS NULL
THEN
UPDATE fac_imp_perslid
SET prs_afdeling_naam =
(SELECT prs_afdeling_upper
FROM prs_afdeling
WHERE prs_afdeling_key = c_prs_afdeling_key)
WHERE fac_imp_file_index = rec.fac_imp_file_index;
ELSE
UPDATE fac_imp_perslid
SET prs_afdeling_naam = rec.prs_kenmerk5
WHERE fac_imp_file_index = rec.fac_imp_file_index;
END IF;
END IF;
END;
END LOOP;
FOR rec IN c_login
LOOP
BEGIN
v_errorhint := 'Bestaande OSLOGIN uit Facilitor handhaven';
UPDATE fac_imp_perslid
SET prs_perslid_oslogin = rec.prs_perslid_oslogin
WHERE fac_imp_file_index = rec.fac_imp_file_index;
END;
END LOOP;
v_errorhint := 'Login afleiden van emailadres (voor locatieleiders en kantoorpersoneel) indien nog geen login aanwezig';
-- Voor de locatieleiders en kantoorpersoneel de oslogin vullen in geval nog niet gevuld in Facilitor (vanuit vorige cursor)
UPDATE fac_imp_perslid
SET prs_perslid_oslogin =
UPPER (
(SUBSTR (prs_perslid_email,
0,
INSTR (prs_perslid_email, '@') - 1)))
WHERE UPPER (prs_perslid_email) LIKE '%GO-KINDEROPVANG.NL'
AND prs_perslid_email IS NOT NULL
AND ( prs_kenmerk8 = 122 -- 'LOCATIELEIDER/MANAGER'
OR prs_afdeling_naam IN
(SELECT a.prs_afdeling_upper
FROM prs_v_afdeling_boom ab, prs_afdeling a
WHERE a.prs_afdeling_key = ab.prs_afdeling_key
AND a.prs_afdeling_verwijder IS NULL
AND ab.prs_afdeling_key1 = 281
AND ab.niveau NOT IN ('1') -- Alles onder ORG-1 van KCC
))
AND prs_perslid_oslogin IS NULL
AND LENGTH (
(SUBSTR (prs_perslid_email,
0,
INSTR (prs_perslid_email, '@') - 1))) <=
30;
v_errorhint := 'Locatie bepalen en vullen';
-- Op basis van kostenplaats gaan we kijken of we de locatie en werkplekkoppeling kunnen maken
FOR rec IN c_loc
LOOP
BEGIN
v_errorhint :=
'Persoon aan Locatie-Ruimte koppelen adhv de kostenplaats - '
|| TO_CHAR (rec.fac_imp_file_index);
v_alg_locatie_key := NULL;
v_prs_kostenplaats_key := NULL;
v_prs_afdeling_upper := NULL;
v_alg_gebouw_key := NULL;
v_alg_verdieping_key := NULL;
v_alg_ruimte_key := NULL;
IF rec.prs_kenmerk5 IS NULL
THEN
UPDATE fac_imp_perslid
SET prs_kenmerk20 = 'Geen werkplekkoppeling'
WHERE fac_imp_file_index = rec.fac_imp_file_index;
ELSE
SELECT MAX (l.alg_locatie_key), MAX (kp.prs_kostenplaats_key)
INTO v_alg_locatie_key, v_prs_kostenplaats_key
FROM alg_locatie l,
alg_onrgoedkenmerk kk,
alg_kenmerk k,
prs_kostenplaats kp,
prs_afdeling a
WHERE l.alg_locatie_key = kk.alg_onrgoed_key
AND kk.alg_onrgoed_niveau = 'L'
AND kk.alg_kenmerk_key = k.alg_kenmerk_key
AND k.alg_kenmerk_key IN (1010,
1012,
1014,
1016,
1017) -- kenmerk_keys voor de kostenplaatsen KDV, BSO, PSZ, TSO en PSZ-2e
AND fac.safe_to_number (kk.alg_onrgoedkenmerk_waarde) =
kp.prs_kostenplaats_key
AND kp.prs_kostenplaats_key = a.prs_kostenplaats_key
AND kp.prs_kostenplaats_verwijder IS NULL
AND a.prs_afdeling_verwijder IS NULL
AND kp.prs_kostenplaats_upper =
UPPER (rec.prs_kenmerk5);
END IF;
IF v_alg_locatie_key IS NOT NULL
THEN
-- Locatie_code ophalen
SELECT alg_locatie_code
INTO v_alg_locatie_code
FROM alg_locatie
WHERE alg_locatie_key = v_alg_locatie_key;
-- Gebouw_key ophalen
SELECT MIN (alg_gebouw_key)
INTO v_alg_gebouw_key
FROM alg_gebouw
WHERE alg_locatie_key = v_alg_locatie_key
AND alg_gebouw_verwijder IS NULL
AND ( TRUNC (alg_gebouw_vervaldatum) >
TRUNC (SYSDATE)
OR alg_gebouw_vervaldatum IS NULL);
-- Om bij update dit kenmerkveld weg te kunnen schrijven naar kenmerkveld 'Default standplaats'
UPDATE fac_imp_perslid
SET prs_kenmerk20 =
(SELECT UPPER (alg_locatie_code)
|| ' - '
|| alg_locatie_omschrijving
FROM alg_locatie
WHERE alg_locatie_key = v_alg_locatie_key)
WHERE fac_imp_file_index = rec.fac_imp_file_index;
IF v_alg_gebouw_key IS NOT NULL
THEN
-- Gebouw_code ophalen
SELECT alg_gebouw_code
INTO v_alg_gebouw_code
FROM alg_gebouw
WHERE alg_gebouw_key = v_alg_gebouw_key;
-- Verdiepings_key ophalen
SELECT MIN (alg_verdieping_key)
INTO v_alg_verdieping_key
FROM alg_verdieping
WHERE alg_gebouw_key = v_alg_gebouw_key
AND alg_verdieping_verwijder IS NULL;
END IF;
IF v_alg_verdieping_key IS NOT NULL
THEN
-- Verdieping_volgnr ophalen
SELECT alg_verdieping_volgnr
INTO v_alg_verdieping_volgnr
FROM alg_verdieping
WHERE alg_verdieping_key = v_alg_verdieping_key;
-- Ruimte_key ophalen
SELECT MIN (alg_ruimte_key)
INTO v_alg_ruimte_key
FROM alg_ruimte
WHERE alg_verdieping_key = v_alg_verdieping_key
AND alg_ruimte_verwijder IS NULL;
END IF;
IF v_alg_ruimte_key IS NOT NULL
THEN
-- Ruimte_nr ophalen
SELECT alg_ruimte_nr
INTO v_alg_ruimte_nr
FROM alg_ruimte
WHERE alg_ruimte_key = v_alg_ruimte_key;
-- Vullen vastgoed-keten in import-tabel
UPDATE fac_imp_perslid
SET alg_locatie_code = v_alg_locatie_code,
alg_gebouw_code = v_alg_gebouw_code,
alg_verdieping_volgnr = v_alg_verdieping_volgnr,
alg_ruimte_nr = v_alg_ruimte_nr
WHERE fac_imp_file_index = rec.fac_imp_file_index;
END IF;
ELSE
-- Geen Locatie/Vastgoedketen kunnen vinden
UPDATE fac_imp_perslid
SET prs_kenmerk20 = 'Geen werkplekkoppeling'
WHERE fac_imp_file_index = rec.fac_imp_file_index;
END IF;
END;
END LOOP;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'Error ' || oracle_err_num || '/' || oracle_err_mes;
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_errorhint);
END goko_import_perslid;
/
CREATE OR REPLACE PROCEDURE goko_update_perslid (p_import_key IN NUMBER)
IS
-- Alle personen verwijderen die niet meer in het import bestand voorkomen
-- Personen in de juiste autorisatiegroep zetten.
-- Match bij GO KINDEROPVANG is Personeelsnummer.
-- Geen acties tenzij het aantal records in de importtabel meer dan 100 medewerkers betreft.
CURSOR c_del
IS
SELECT p.prs_perslid_key, p.prs_perslid_naam, p.prs_perslid_email, p.prs_perslid_nr, sp.prs_srtperslid_omschrijving
FROM prs_perslid p, prs_srtperslid sp, prs_v_afdeling_boom a
WHERE p.prs_perslid_verwijder IS NULL
AND p.prs_afdeling_key = a.prs_afdeling_key AND a.prs_bedrijf_key = 21 -- GO Kinderopvang
AND p.prs_srtperslid_key = sp.prs_srtperslid_key AND sp.prs_srtperslid_upper NOT IN ('TEAMACCOUNT','INTERNE AFDELING','UITZENDKRACHT')
AND p.prs_perslid_key NOT IN (SELECT prs_perslid_key FROM goko_v_personenlijst_waarn) -- Tijdelijke waarnemers worden niet door import verwijderd. Regelt men handmatig
AND NOT EXISTS (SELECT 1
FROM fac_imp_perslid
WHERE p.prs_perslid_nr = prs_perslid_nr
)
ORDER BY 1 ;
CURSOR c_flex -- Voor updaten van de algemene flex-kenmerkvelden op actuele medewerkers
IS
SELECT p.prs_perslid_key, i.prs_kenmerk1, i.prs_kenmerk2, i.prs_kenmerk3, i.prs_kenmerk5, i.prs_kenmerk6, i.prs_kenmerk7, i.prs_kenmerk20
FROM prs_v_aanwezigperslid p, fac_imp_perslid i
WHERE p.prs_perslid_key = i.prs_perslid_key
ORDER BY 1;
CURSOR c_kantoor -- Voor updaten van kantoorpersoneel
IS
SELECT p.prs_perslid_key,
p.prs_perslid_naam,
p.prs_perslid_email,
p.prs_perslid_oslogin,
p.prs_perslid_salt,
p.prs_perslid_wachtwoord_hash,
p.prs_perslid_wachtwoord_exp,
DECODE (v.prs_afdeling_key, NULL, 'nee', 'ja')
kantoormedewerker,
(SELECT g.fac_gebruikersgroep_key
FROM fac_gebruikersgroep g
WHERE g.fac_groep_key = 201
AND g.prs_perslid_key = p.prs_perslid_key)
in_kantoorgroep_key
FROM prs_perslid p,
(SELECT a.prs_afdeling_key
FROM prs_v_afdeling_boom ab, prs_afdeling a
WHERE a.prs_afdeling_key = ab.prs_afdeling_key
AND a.prs_afdeling_verwijder IS NULL
AND ab.prs_afdeling_key1 = 281
AND ab.niveau NOT IN ('1') -- Alles onder ORG-1 van KCC
) v
WHERE p.prs_afdeling_key = v.prs_afdeling_key(+)
AND p.prs_perslid_verwijder IS NULL
ORDER BY 1 ;
CURSOR c_loc -- Voor updaten van locatieleiders & Waarnemers (in eigen autorisatiegroep + profiel toevoegen)
IS
SELECT v.prs_perslid_key
FROM goko_v_locatiemanagers v
GROUP BY v.prs_perslid_key ;
CURSOR c_loc_wp -- Voor updaten van locatieleiders (werkplek-koppelingen)
IS
SELECT v.prs_perslid_key, v.alg_locatie_key, v.prs_werkplek_key, v.actie
FROM
(
SELECT man.prs_perslid_key, man.alg_locatie_key, NULL prs_werkplek_key, 'toevoegen' actie
FROM goko_v_locatiemanagers man
WHERE NOT EXISTS
(SELECT *
FROM goko_v_locatiemanagers_wp wp
WHERE wp.alg_locatie_key = man.alg_locatie_key
AND wp.prs_perslid_key = man.prs_perslid_key)
UNION
SELECT wp.prs_perslid_key, wp.alg_locatie_key, wp.prs_werkplek_key, 'verwijderen' actie
FROM goko_v_locatiemanagers_wp wp
WHERE NOT EXISTS
(SELECT *
FROM goko_v_locatiemanagers man
WHERE man.alg_locatie_key = wp.alg_locatie_key
AND man.prs_perslid_key = wp.prs_perslid_key)
UNION
SELECT wp.prs_perslid_key, wp.alg_locatie_key, wp.prs_werkplek_key, 'ok' actie
FROM goko_v_locatiemanagers_wp wp, goko_v_locatiemanagers man
WHERE man.alg_locatie_key = wp.alg_locatie_key
AND man.prs_perslid_key = wp.prs_perslid_key
) v
ORDER BY 1,2,3 ;
CURSOR c_loc_kp -- Voor updaten van locatieleiders (budgethouder kostenplaatsen en mandaten op kostenplaatsen)
IS
SELECT v_prs.prs_perslid_key,
v_prs.alg_locatie_key,
v_kp.prs_kostenplaats_key,
v_prs.waarnemer
FROM goko_v_locatiemanagers v_prs, goko_v_locatie_kp v_kp
WHERE v_prs.alg_locatie_key = v_kp.alg_locatie_key
ORDER BY 1,2,3 ;
CURSOR c_loc_kp_del -- Voor deleten van mandaten die niet meer van toepassing zijn
IS
SELECT pk.prs_perslidkostenplaats_key
FROM prs_perslidkostenplaats pk
WHERE NOT EXISTS (SELECT v_prs.prs_perslid_key, v_kp.prs_kostenplaats_key
FROM goko_v_locatiemanagers v_prs, goko_v_locatie_kp v_kp
WHERE v_prs.alg_locatie_key = v_kp.alg_locatie_key
AND v_prs.prs_perslid_key = pk.prs_perslid_key AND v_kp.prs_kostenplaats_key = pk.prs_kostenplaats_key
GROUP BY v_prs.prs_perslid_key, v_kp.prs_kostenplaats_key
)
AND pk.prs_perslid_key IN (SELECT prs_perslid_key
FROM goko_v_locatiemanagers
GROUP BY prs_perslid_key) ;
v_count NUMBER;
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_errormsg VARCHAR2 (400);
v_errorhint VARCHAR2 (400);
v_fac_gebruikersgroep_key NUMBER(10);
v_alg_ruimte_key NUMBER;
v_prs_werkplek_key NUMBER;
v_waarnemer_overrule VARCHAR2 (12);
v_prs_perslid_key NUMBER(10); -- budgethouder op kp
v_prs_perslidkostenplaats_key NUMBER(10) ;
v_fac_profiel_key NUMBER(10);
BEGIN
v_errorhint := 'Niet genoeg personen in bestand, import afgebroken';
SELECT COUNT ( * ) INTO v_count FROM fac_imp_perslid;
IF v_count >= 100
THEN
v_errorhint := 'Verwerken persoonsgegevens';
-- Geldig importbestand wat betreft aantal personen
COMMIT;
-- generic update
-- 'EMAIL' betekent dat op basis van Email wordt gematched. 'NR' op basis van personeelsnummer.
-- 'NULL' betekent altijd geen werkplekken verwijderen
-- Voor GOKO / Beaufort geldt:
---- Op NR gaan matchen.
---- Werkplekkoppeling <20> WEL/NIET standaard verwijderen <20> HOE/WAT beste in te regelen? UITZOEKEN/TESTEN (denk verwijderen beste is<69>.? OF alleen maar voor die personen die nu andere WERKPLEK_LOCATIE_KEY hebben ?)
prs.update_perslid (p_import_key, 'NR', NULL);
v_errorhint := 'Verwijderen persoonsgegevens';
-- Verwijder personen die niet meer in de import voorkomen.
FOR rec IN c_del
LOOP
BEGIN
prs.delete_perslid (p_import_key, rec.prs_perslid_key);
END;
END LOOP;
FOR rec IN c_flex
LOOP
BEGIN
v_errorhint:='Fout bijwerken kenmerkveld Regio';
PRS.upsertkenmerk (1001, rec.prs_perslid_key, rec.prs_kenmerk2);
v_errorhint:='Fout bijwerken kenmerkveld Locatie';
PRS.upsertkenmerk (1002, rec.prs_perslid_key, rec.prs_kenmerk3);
v_errorhint:='Fout bijwerken kenmerkveld Kostenplaats';
PRS.upsertkenmerk (1004, rec.prs_perslid_key, rec.prs_kenmerk5);
v_errorhint:='Fout bijwerken kenmerkveld Datum uit dienst';
PRS.upsertkenmerk (1005, rec.prs_perslid_key, rec.prs_kenmerk6);
v_errorhint:='Fout bijwerken kenmerkveld Standplaats Facilitor';
PRS.upsertkenmerk (1006, rec.prs_perslid_key, rec.prs_kenmerk20);
v_errorhint:='Fout bijwerken kenmerkveld Email (werk)';
PRS.upsertkenmerk (1007, rec.prs_perslid_key, rec.prs_kenmerk7);
v_errorhint:='Fout bijwerken kenmerkveld Functie Beaufort';
PRS.upsertkenmerk (1040, rec.prs_perslid_key, rec.prs_kenmerk1);
END;
END LOOP;
FOR rec IN c_kantoor
LOOP
BEGIN
-- Alle kantoormedewerkers toevoegen aan autorisatiegroep 'Kantoorpersoneel'
v_errorhint:='Fout toevoegen kantoormedewerkers inclusief ww';
IF rec.prs_perslid_email IS NOT NULL AND rec.prs_perslid_oslogin IS NOT NULL AND rec.kantoormedewerker = 'ja' AND rec.in_kantoorgroep_key IS NULL
THEN
INSERT INTO fac_gebruikersgroep (fac_groep_key,
prs_perslid_key)
VALUES (201, rec.prs_perslid_key);
-- nog wachtwoord toevoegen als het een nieuwe medewerker betreft (voor 1e inlog)
IF rec.prs_perslid_salt IS NULL
THEN
prs.setpassword(rec.prs_perslid_key, 'Welkom@facilitor');
UPDATE prs_perslid
SET prs_perslid_wachtwoord_exp = SYSDATE
WHERE prs_perslid_key = rec.prs_perslid_key ;
END IF;
END IF;
-- Alle medewerkers die geen kantoorpersoneel meer zijn uit de autorisatiegroep 'Kantoorpersoneel' halen
v_errorhint:='Fout verwijderen kantoormedewerkers';
IF rec.kantoormedewerker = 'nee' AND rec.in_kantoorgroep_key IS NOT NULL
THEN
DELETE
FROM fac_gebruikersgroep g
WHERE fac_gebruikersgroep_key = rec.in_kantoorgroep_key ;
END IF;
END;
END LOOP;
FOR rec IN c_loc
LOOP
BEGIN
-- Alle locatieleiders toevoegen aan autorisatiegroep 'Locatieleiders'
v_errorhint:='Fout bijwerken locatieleiders in eigen autorisatiegroep';
BEGIN
SELECT fac_gebruikersgroep_key
INTO v_fac_gebruikersgroep_key
FROM fac_gebruikersgroep
WHERE fac_groep_key = 21 -- Groep 'Locatieleiders en Waarnemers'
AND prs_perslid_key = rec.prs_perslid_key ;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
INSERT INTO fac_gebruikersgroep (fac_groep_key,
prs_perslid_key)
VALUES (21, rec.prs_perslid_key);
END;
-- Alle locatieleiders juiste profiel meegeven
v_errorhint:='Fout bijwerken profiel locatieleiders';
SELECT fac_profiel_key
INTO v_fac_profiel_key
FROM prs_perslid
WHERE prs_perslid_key = rec.prs_perslid_key ;
IF v_fac_profiel_key IS NULL
THEN
UPDATE prs_perslid
SET fac_profiel_key = 1
WHERE prs_perslid_key = rec.prs_perslid_key ;
BEGIN fac.trackaction('PRSUPD', rec.prs_perslid_key, 3, NULL, 'Profiel: (leeg) --> Locatieleider-profiel (<5000)'); END;
END IF;
END;
END LOOP;
FOR rec IN c_loc_wp
LOOP
BEGIN
-- Werkplekkoppelingen op basis van de locaties waar men locatieleider van is
v_errorhint:='Fout bijwerken werkplekkoppelingen locatieleider';
IF rec.actie = 'toevoegen'
THEN
v_errorhint:='Fout bij toevoegen werkplekken voor Locatieleider - perslid_key:' || TO_CHAR(rec.prs_perslid_key) || ' , loc-key: ' || TO_CHAR(rec.alg_locatie_key);
BEGIN
SELECT MIN(r.alg_ruimte_key)
INTO v_alg_ruimte_key
FROM alg_ruimte r, alg_verdieping v, alg_gebouw g
WHERE r.alg_verdieping_key = v.alg_verdieping_key AND v.alg_gebouw_key = g.alg_gebouw_key
AND r.alg_ruimte_verwijder IS NULL AND v.alg_verdieping_verwijder IS NULL AND g.alg_gebouw_verwijder IS NULL
AND g.alg_locatie_key = rec.alg_locatie_key ;
IF v_alg_ruimte_key IS NOT NULL
THEN
-- PROCEDURE movetoruimte (p_prs_key IN NUMBER, p_ruimte_key IN NUMBER, p_alg_type IN VARCHAR2, p_virtual IN NUMBER DEFAULT 0);
BEGIN
PRS.movetoruimte (rec.prs_perslid_key,
v_alg_ruimte_key,
'L',
1);
END;
END IF;
END;
END IF;
IF rec.actie = 'verwijderen'
THEN
v_errorhint:='Fout bij verwijderen werkplekken';
DELETE prs_werkplek WHERE prs_werkplek_key = rec.prs_werkplek_key;
END IF;
END;
END LOOP;
FOR rec IN c_loc_kp
LOOP
BEGIN
-- kostenplaatsen waar men verantwoordelijk voor is - Budgethouder en Mandaten
v_errorhint:='Fout bijwerken kostenplaatsen en mandaten waar men verantwoordelijk voor is';
v_waarnemer_overrule := 'nee' ;
-- Eerst budgethouder op kostenplaatsen updaten waar nodig
---- Indien het geen waarnemer betreft gaan we eerst checken of er een bovenliggende waarnemer op die locatie is. Deze wordt/is dan namelijk de budgethouder voor die kostenplaats
IF rec.waarnemer = 'nee'
THEN
BEGIN
-- Is er op die locatie een waarnemer (die afwijkt van locatieleider) ingevuld?
SELECT waarnemer
INTO v_waarnemer_overrule
FROM goko_v_locatiemanagers
WHERE alg_locatie_key = rec.alg_locatie_key
AND waarnemer = 'ja'
AND prs_perslid_key <> rec.prs_perslid_key ;
EXCEPTION
WHEN NO_DATA_FOUND
THEN v_waarnemer_overrule := 'nee' ;
END;
END IF;
-- Dan kunnen we nu de budgethouder op kostenplaats updaten indien nodig
IF v_waarnemer_overrule = 'nee'
THEN
-- check eers of er nu afwijkende budgethouder op KP zit. Zo ja updaten
SELECT prs_perslid_key
INTO v_prs_perslid_key
FROM prs_kostenplaats
WHERE prs_kostenplaats_key = rec.prs_kostenplaats_key
AND prs_kostenplaats_verwijder IS NULL
AND (prs_kostenplaats_eind IS NULL OR prs_kostenplaats_eind > TRUNC(SYSDATE) )
AND prs_kostenplaats_module = 'PRS' ;
IF v_prs_perslid_key IS NULL OR v_prs_perslid_key <> rec.prs_perslid_key
THEN
UPDATE prs_kostenplaats
SET prs_perslid_key = rec.prs_perslid_key
WHERE prs_kostenplaats_key = rec.prs_kostenplaats_key ;
-- Geen fac_tracking nodig. Mutatie wordt namelijk al via trigger met aud.auditaction weggeschreven
END IF;
END IF;
-- Tot slot alle mandaten goed inregelen
SELECT prs_perslidkostenplaats_key
INTO v_prs_perslidkostenplaats_key
FROM prs_perslidkostenplaats
WHERE prs_perslid_key = rec.prs_perslid_key
AND prs_kostenplaats_key = rec.prs_kostenplaats_key ;
EXCEPTION
WHEN NO_DATA_FOUND
THEN v_prs_perslidkostenplaats_key := NULL;
IF v_prs_perslidkostenplaats_key IS NULL
THEN
INSERT INTO prs_perslidkostenplaats (prs_perslidkostenplaats_boeken,
prs_perslidkostenplaats_inzage,
prs_perslid_key,
prs_kostenplaats_key)
VALUES (1,
1,
rec.prs_perslid_key,
rec.prs_kostenplaats_key) ;
END IF;
END;
END LOOP;
FOR rec IN c_loc_kp_del
LOOP
BEGIN
-- opschonen mandaten die niet meer geldig zijn
v_errorhint:='Fout verwijderen mandaten die niet meer geldig zijn';
DELETE
FROM prs_perslidkostenplaats
WHERE prs_perslidkostenplaats_key = rec.prs_perslidkostenplaats_key ;
END;
END LOOP;
ELSE
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_errorhint);
COMMIT;
END IF;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'Error ' || oracle_err_num || '/' || oracle_err_mes;
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_errorhint);
END goko_update_perslid;
/
-- Hook functie die na het saven (bes_postsave) van een bestelling wordt aangeroepen.
CREATE OR REPLACE PROCEDURE goko_bes_after_insert (p_key IN NUMBER)
AS
v_bes_bestelling_key NUMBER(10) ;
v_korting_percentage NUMBER(10,2) ;
v_inkoopprijs_totaal NUMBER(10,2) ;
v_check VARCHAR2(100) := 'ok' ;
v_ins_discipline_key NUMBER(10) ;
v_bes_kenmerk_key1 NUMBER(10) ; -- kenmerk_key voor totaalbedrag bestelling
v_waarde1 VARCHAR2(100) ; -- oorspronkelijke waarde van totaalbedrag in bestelling
v_bes_kenmerk_key2 NUMBER(10) ; -- kenmerk_key voor totaalbedrag korting
v_waarde2 VARCHAR2(100) ; -- oorspronkelijke waarde van totaalbedrag korting in bestelling
v_korting_totaal NUMBER(10,2) ;
v_gewijzigd NUMBER(1) := 0 ;
v_count NUMBER(10) ;
v_errormsg VARCHAR2 (1000);
v_aanduiding VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
BEGIN
v_errormsg := 'Ophalen bestelgegevens ivm totaalprijs en kortingspercentage';
v_gewijzigd := 0 ;
BEGIN
SELECT b.bes_bestelling_key, COALESCE(fac.safe_to_number(kmb.bes_kenmerkbestell_waarde),0) km_kortingspercentage, v.km_totaalprijs km_totaalprijs
INTO v_bes_bestelling_key, v_korting_percentage, v_inkoopprijs_totaal
FROM bes_bestelling b,
bes_kenmerkbestell kmb,
bes_kenmerk km,
(
SELECT bi.bes_bestelling_key,
SUM (COALESCE (bi.bes_bestelling_item_aantal * fac.safe_to_number(replace(kmi.bes_kenmerkbesteli_waarde,',','.')), 0))
km_totaalprijs
FROM bes_kenmerkbesteli kmi, bes_kenmerk km, bes_bestelling_item bi
WHERE bi.bes_bestelling_item_key = kmi.bes_bestelling_item_key
AND kmi.bes_kenmerk_key = km.bes_kenmerk_key
AND km.bes_srtkenmerk_key = 81 -- Artikelprijs
GROUP BY bi.bes_bestelling_key ) v
WHERE b.bes_bestelling_key = p_key
AND b.bes_bestelling_key = kmb.bes_bestelling_key
AND kmb.bes_kenmerk_key = km.bes_kenmerk_key AND km.bes_srtkenmerk_key = 142 -- Leverancierskorting
AND v.bes_bestelling_key = b.bes_bestelling_key
;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_check := 'stop';
END;
v_errormsg := 'Ophalen kenmerk_key voor totaalprijs';
IF v_check = 'ok'
THEN
-- ophalen kenmerk_key 'totaalbedrag bestelling'
-- ophalen kenmerk_key kortingsbedrag
SELECT d.ins_discipline_key
INTO v_ins_discipline_key
FROM bes_bestelling_item bi,
bes_srtdeel sd,
bes_srtgroep sg,
ins_tab_discipline d
WHERE bi.bes_bestelling_key = p_key
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key
AND sg.ins_discipline_key = d.ins_discipline_key
GROUP BY d.ins_discipline_key ;
SELECT MAX(bes_kenmerk_key)
INTO v_bes_kenmerk_key1
FROM bes_kenmerk km, bes_srtkenmerk skm
WHERE km.bes_srtkenmerk_key = skm.bes_srtkenmerk_key
AND skm.bes_srtkenmerk_key = 44 -- totaalbedrag bestelling
AND km.bes_srtinstallatie_key = v_ins_discipline_key
AND km.bes_kenmerk_niveau = 'D'
AND km.bes_kenmerk_verwijder IS NULL ;
SELECT MAX(bes_kenmerk_key)
INTO v_bes_kenmerk_key2
FROM bes_kenmerk km, bes_srtkenmerk skm
WHERE km.bes_srtkenmerk_key = skm.bes_srtkenmerk_key
AND skm.bes_srtkenmerk_key = 47 -- totaalbedrag korting
AND km.bes_srtinstallatie_key = v_ins_discipline_key
AND km.bes_kenmerk_niveau = 'D'
AND km.bes_kenmerk_verwijder IS NULL ;
-- Vullen kenmerk 'totaalbedrag bestelling'
IF v_bes_kenmerk_key1 IS NOT NULL
THEN
-- Dan gaan we het kenmerk upserten ! ER IS GEEN bes.upsertbestellingkenmerk beschikbaar..
BEGIN
SELECT COUNT ( * ), MIN (bes_kenmerkbestell_waarde)
INTO v_count, v_waarde1
FROM bes_kenmerkbestell
WHERE bes_bestelling_key = p_key
AND bes_kenmerk_key = v_bes_kenmerk_key1
AND bes_kenmerkbestell_verwijder IS NULL;
IF v_count = 1
THEN
IF v_inkoopprijs_totaal IS NULL
THEN
DELETE bes_kenmerkbestell
WHERE bes_bestelling_key = p_key
AND bes_kenmerk_key = v_bes_kenmerk_key1
AND bes_kenmerkbestell_verwijder IS NULL;
v_gewijzigd := 1 ;
ELSE
IF (fac.safe_to_number(v_waarde1) <> v_inkoopprijs_totaal)
THEN
UPDATE bes_kenmerkbestell
SET bes_kenmerkbestell_waarde = v_inkoopprijs_totaal
WHERE bes_bestelling_key = p_key
AND bes_kenmerk_key = v_bes_kenmerk_key1
AND bes_kenmerkbestell_verwijder IS NULL;
v_gewijzigd := 1 ;
END IF;
END IF;
ELSE
IF v_bes_kenmerk_key1 IS NOT NULL AND v_inkoopprijs_totaal IS NOT NULL
THEN
INSERT INTO bes_kenmerkbestell (bes_kenmerk_key,
bes_bestelling_key,
bes_kenmerkbestell_waarde)
VALUES (v_bes_kenmerk_key1, p_key, v_inkoopprijs_totaal);
v_gewijzigd := 1 ;
END IF;
END IF;
END;
END IF;
-- Vullen kenmerk 'totaalbedrag korting'
IF v_bes_kenmerk_key2 IS NOT NULL
THEN
-- Dan gaan we het kenmerk upserten ! ER IS GEEN bes.upsertbestellingkenmerk beschikbaar..
BEGIN
v_korting_totaal := COALESCE(v_korting_percentage, 0)/100 * COALESCE(v_inkoopprijs_totaal, 0) ;
SELECT COUNT ( * ), MIN (bes_kenmerkbestell_waarde)
INTO v_count, v_waarde2
FROM bes_kenmerkbestell
WHERE bes_bestelling_key = p_key
AND bes_kenmerk_key = v_bes_kenmerk_key2
AND bes_kenmerkbestell_verwijder IS NULL;
IF v_count = 1
THEN
IF v_korting_percentage IS NULL OR v_korting_percentage = 0
THEN
DELETE bes_kenmerkbestell
WHERE bes_bestelling_key = p_key
AND bes_kenmerk_key = v_bes_kenmerk_key2
AND bes_kenmerkbestell_verwijder IS NULL;
v_gewijzigd := 1 ;
ELSE
IF (fac.safe_to_number(v_waarde2) <> v_korting_totaal)
THEN
UPDATE bes_kenmerkbestell
SET bes_kenmerkbestell_waarde = v_korting_totaal
WHERE bes_bestelling_key = p_key
AND bes_kenmerk_key = v_bes_kenmerk_key2
AND bes_kenmerkbestell_verwijder IS NULL;
v_gewijzigd := 1 ;
END IF;
END IF;
ELSE
IF v_bes_kenmerk_key2 IS NOT NULL AND v_korting_totaal > 0
THEN
INSERT INTO bes_kenmerkbestell (bes_kenmerk_key,
bes_bestelling_key,
bes_kenmerkbestell_waarde)
VALUES (v_bes_kenmerk_key2, p_key, v_korting_totaal);
v_gewijzigd := 1 ;
END IF;
END IF;
END;
END IF;
-- fac_tracking - ACTIE - bedrag is + bedrag was
IF v_gewijzigd = 1
THEN
BEGIN fac.trackaction('BESUPD', v_bes_bestelling_key, 3, NULL, 'Prijswijziging doorgevoerd in bestelling - totaalprijs was/is ' || TO_CHAR(v_waarde1) || '/' || TO_CHAR(v_inkoopprijs_totaal) || ' - korting was/is ' || TO_CHAR(v_waarde2) || '/' || TO_CHAR(v_korting_totaal)); END;
END IF;
END IF;
END goko_bes_after_insert;
/
-------------------------------
--- RAPPORTAGES ---------------
-------------------------------
-- Nieuwe rapportage tav Opdrachtbewaking (intern/extern) - Zie ook ticket 86460
CREATE OR REPLACE VIEW goko_v_rap_opdrachten
(
INTERN,
TYPE,
MLD_OPDR_KEY,
MLD_UITVOERENDE_KEY,
OPDRACHTNR,
STATUS,
MELDING,
BEHANDELAAR,
LOCATIE_PLAATS,
LOCATIE_OMSCHRIJVING,
LOCATIE_DIVERSEN,
OPDRACHT_AANMAAKDATUM,
GEPLANDE_AANVANG,
GEPLANDE_AANVANG_B, -- berekend voor kalenderweergave
GEPLANDE_EINDDATUM,
GEPLANDE_EINDDATUM_B, -- berekend voor kalenderweergave
OPDRACHT_EINDDATUM,
MELDING_EINDDATUM,
OMSCHRIJVING,
INTERN_UREN_GEPLAND,
INTERN_UREN_BESTEED,
PRS_PERSLID_KEY,
NAAM_UITVOERDER,
AFMELD_DATUM,
OPDRACHT_TYPE,
TD_NAAM,
PRIORITEIT,
MLD_MELDING_KEY, -- t.b.v. doorklik voor teamaccounts
FCLT_3D_LOCATIE_KEY, -- t.b.v. scoping
STATUS_KALENDER -- t.b.v. kalenderweergave
)
AS
SELECT mu.intern,
CASE
WHEN mu.TYPE = 'B' AND mu.intern = 1 THEN 'Poule-opdracht'
WHEN mu.TYPE = 'P' AND mu.intern = 1 THEN 'Klus-opdracht'
WHEN mu.intern = 0 THEN 'Externe opdracht'
ELSE '<?>'
END
TYPE,
o.mld_opdr_key,
CASE
WHEN mu.TYPE = 'B' AND mu.intern = 1 THEN mu.mld_uitvoerende_key
WHEN mu.TYPE = 'P' AND mu.intern = 1 THEN o.prs_perslid_key
WHEN mu.intern = 0 THEN mu.mld_uitvoerende_key
ELSE NULL
END
mld_uitvoerende_key,
TO_CHAR (o.mld_melding_key)
|| '/'
|| o.mld_opdr_bedrijfopdr_volgnr
opdrachtnummer,
DECODE (
os.mld_statusopdr_key,
8, DECODE (o.mld_opdr_halted,
1, 'Onderbroken',
os.mld_statusopdr_omschrijving),
os.mld_statusopdr_omschrijving)
status,
std.mld_stdmelding_omschrijving,
COALESCE (p.prs_perslid_naam_full, '<nog geen behandelaar>')
behandelaar,
l.alg_locatie_plaats || ' - ' || l.alg_locatie_omschrijving
alg_locatie_plaats,
l.alg_locatie_omschrijving,
(SELECT km.mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding km, mld_kenmerk k, mld_srtkenmerk sk
WHERE km.mld_melding_key = m.mld_melding_key AND km.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
AND sk.mld_srtkenmerk_key = 363) -- kenmerk Diverse locaties - gespecificeerd
locatie_diversen,
o.mld_opdr_datumbegin,
o.mld_opdr_plandatum
geplande_aanvang,
CASE WHEN o.mld_opdr_plandatum IS NOT NULL THEN o.mld_opdr_plandatum ELSE o.mld_opdr_datumbegin END
geplande_aanvang_b,
o.mld_opdr_plandatum2
geplande_einddatum,
CASE WHEN o.mld_opdr_plandatum2 IS NOT NULL AND o.mld_opdr_plandatum IS NOT NULL THEN o.mld_opdr_plandatum2
WHEN o.mld_opdr_plandatum2 IS NULL AND o.mld_opdr_plandatum IS NOT NULL THEN o.mld_opdr_plandatum + 2/24
ELSE o.mld_opdr_datumbegin + 2/24
END
geplande_einddatum_b,
o.mld_opdr_einddatum,
m.mld_melding_einddatum,
TRIM (
REGEXP_REPLACE (
REGEXP_SUBSTR (o.mld_opdr_omschrijving,
'(([^ ]*)( |$)*){10}'),
'[[:space:]]',
' '))
|| '...'
omschrijving,
(SELECT ko.mld_kenmerkopdr_waarde
FROM mld_kenmerkopdr ko
WHERE ko.mld_opdr_key = o.mld_opdr_key
AND ko.mld_kenmerk_key = 1942)
intern_uren_gepland,
(SELECT ko.mld_kenmerkopdr_waarde
FROM mld_kenmerkopdr ko
WHERE ko.mld_opdr_key = o.mld_opdr_key
AND ko.mld_kenmerk_key = 5)
intern_uren_besteed,
p.prs_perslid_key,
mu.naam
naam_uitvoerder,
(SELECT MAX (ft.fac_tracking_datum)
FROM fac_tracking ft
WHERE ft.fac_tracking_refkey = o.mld_opdr_key
AND ft.fac_srtnotificatie_key = 78) -- ORDAFM
afmeld_datum,
ot.mld_typeopdr_omschrijving,
CASE
WHEN mu.TYPE = 'B' AND mu.intern = 1 THEN COALESCE (p.prs_perslid_naam_full, '<nog geen behandelaar>')
WHEN mu.TYPE = 'P' AND mu.intern = 1 THEN mu.naam
ELSE ''
END td_naam,
COALESCE(v.prioriteit,'3 - NORMAAL')
prioriteit,
m.mld_melding_key,
l.alg_locatie_key,
CASE
WHEN os.mld_statusopdr_omschrijving = 'Afgemeld' THEN 'Afgemeld'
WHEN os.mld_statusopdr_omschrijving = 'Afgewezen' THEN 'Afgewezen'
WHEN mu.intern = 1 AND os.mld_statusopdr_omschrijving = 'Toegekend' AND o.mld_opdr_plandatum IS NULL THEN 'Nog inplannen'
WHEN mu.intern = 1 AND os.mld_statusopdr_omschrijving = 'Toegekend' AND o.mld_opdr_plandatum IS NOT NULL THEN 'Ingepland'
WHEN mu.intern = 0 AND os.mld_statusopdr_omschrijving = 'Toegekend' AND o.mld_opdr_plandatum IS NULL THEN 'Nog niet bevestigd'
WHEN mu.intern = 0 AND os.mld_statusopdr_omschrijving = 'Toegekend' AND o.mld_opdr_plandatum IS NOT NULL THEN 'Bevestigd'
ELSE ''
END status_kalender
FROM mld_opdr o,
mld_melding m,
mld_typeopdr ot,
prs_v_perslid_fullnames p,
ins_tab_discipline d,
mld_stdmelding std,
alg_locatie l,
alg_district d,
mld_v_uitvoerende mu,
mld_statusopdr os,
(
SELECT ko.mld_opdr_key, ud.fac_usrdata_code || ' - ' || ud.fac_usrdata_omschr prioriteit
FROM mld_kenmerkopdr ko, fac_usrdata ud
WHERE fac.safe_to_number(ko.mld_kenmerkopdr_waarde) = ud.fac_usrdata_key
AND fac_usrtab_key = 201 -- keuzelijst eigen tabel Prioriteit
AND ko.mld_kenmerk_key IN (1941) -- kenmerk Prioriteit
) v
WHERE o.mld_melding_key = m.mld_melding_key
AND o.prs_perslid_key = p.prs_perslid_key(+)
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
AND ot.mld_typeopdr_isofferte = 0 -- Alleen werkopdrachten
AND m.mld_stdmelding_key = std.mld_stdmelding_key(+)
AND std.mld_ins_discipline_key = d.ins_discipline_key(+)
AND m.mld_alg_locatie_key = l.alg_locatie_key -- alle std-meldingen hebben verplicht-niveau locatie
AND l.alg_district_key = d.alg_district_key
AND o.mld_uitvoerende_keys = mu.mld_uitvoerende_key
AND os.mld_statusopdr_key = o.mld_statusopdr_key
AND o.fac_activiteit_key IS NULL -- uitsluiten opdrachten die via geplande_acties worden aangemaakt
AND o.mld_opdr_key = v.mld_opdr_key(+) ;
-- tbv calenderview
CREATE OR REPLACE VIEW goko_v_cal_opdrachten
(
USER_KEY,
TITLE,
VAN,
TOT,
ITEM_KEY,
COLOR,
TEXTCOLOR,
NAAM_UITVOERDER,
LOCATIE_PLAATS,
STATUS_KALENDER,
INTERN,
OPDRACHT_TYPE,
MLD_MELDING_KEY, -- t.b.v. doorklik voor teamaccounts
FCLT_3D_LOCATIE_KEY
)
AS
SELECT mld_uitvoerende_key,
' - ' || opdrachtnr || DECODE(prioriteit, '3 - NORMAAL', '', ' (prio' || SUBSTR(prioriteit, 4) || ')' ) || CHR(10)
|| naam_uitvoerder || CHR(10)
|| CASE
WHEN locatie_diversen IS NOT NULL THEN locatie_plaats || CHR(10)
ELSE 'Diverse locaties: ' || locatie_diversen || CHR(10) END
|| 'Status: ' || status_kalender || CHR(10)
|| CASE
WHEN intern = 1 THEN 'Uren (indicatief): ' || DECODE (intern_uren_gepland, NULL, '<onbekend>', TO_CHAR(intern_uren_gepland)) || CHR(10)
ELSE NULL END
|| CASE
WHEN geplande_aanvang IS NOT NULL AND geplande_einddatum IS NOT NULL THEN 'Bevestigd van ' || TO_CHAR(geplande_aanvang_b) || ' tot ' || TO_CHAR(geplande_einddatum_b)
WHEN geplande_aanvang IS NOT NULL AND geplande_einddatum IS NULL THEN 'Bevestigde aanvang: ' || TO_CHAR(geplande_aanvang_b)
WHEN geplande_aanvang IS NULL AND geplande_einddatum IS NOT NULL THEN 'Bevestigde einddatum: ' || TO_CHAR(geplande_einddatum_b)
ELSE '<nog te plannen>' END
title,
geplande_aanvang_b
van,
geplande_einddatum_b
tot,
mld_opdr_key,
DECODE (intern, 1,
DECODE (status_kalender,
'Afgewezen', '#C0C0C0', -- grijs
'Afgemeld', '#C0C0C0', -- grijs
'Nog inplannen', '#f58a20', -- oranje
'Ingepland', '#20b2f5', -- lichtblauw
'#0000FF'),
0,
DECODE (status_kalender,
'Afgewezen', '#C0C0C0', -- grijs
'Afgemeld', '#C0C0C0', -- grijs
'Nog niet bevestigd', '#F5ED5D', -- lichtgeel
'Bevestigd', '#DED304', -- donkergeel
'#0000FF'),
'#0000FF'
) color, --
DECODE (intern, 1,
DECODE (status_kalender,
'Afgewezen', '#bf0b3b', -- rood
'Afgemeld', '#000000', -- zwart
'Nog inplannen', '#FFFFFF', -- wit,
'Ingepland',
DECODE (LOWER(prioriteit),
'3 - normaal', '#FFFFFF', -- wit
'4 - laag', '#FFFFFF', -- wit
'2 - hoog', '#f58a20', -- oranje
'1 - kritiek', '#bf0b3b', -- rood
'#000000'),
'#000000'),
0,
DECODE (status_kalender,
'Afgewezen', '#bf0b3b', -- rood
'Afgemeld', '#000000', -- zwart
'Nog niet bevestigd', '#000000', -- zwart
'Bevestigd', '#000000', -- zwart
'Toegekend', '#FFFFFF', -- wit,
'#0000FF'),
'#000000'
) textcolor,
naam_uitvoerder,
locatie_plaats,
status_kalender,
intern,
opdracht_type,
mld_melding_key,
fclt_3d_locatie_key
FROM goko_v_rap_opdrachten
ORDER BY geplande_aanvang_b ;
-- view om QR codes voor een deel te genereren.
CREATE OR REPLACE VIEW goko_v_rap_qr_deel
AS
SELECT fac_bookmark_naam,
fac_bookmark_id,
ins_discipline_omschrijving,
ins_srtgroep_omschrijving,
ins_srtdeel_omschrijving,
ins_deel_omschrijving,
CASE
WHEN d.ins_discipline_key = 83 -- IT
THEN
(SELECT k.ins_kenmerkdeel_waarde
FROM ins_kenmerkdeel k
WHERE k.ins_deel_key = d.ins_deel_key
AND k.ins_kenmerk_key = 8)
ELSE
NULL
END
serienummer,
CASE WHEN alg_locatie_key IS NOT NULL THEN 'Locatiegebonden'
WHEN d.prs_perslid_key IS NOT NULL THEN 'Persoonsgebonden'
ELSE 'Overig'
END soort,
alg_locatie_key,
alg_gebouw_omschrijving,
d.prs_perslid_key,
prs_perslid_volnaam,
ins_deel_aanmaak,
ins_deel_key
FROM fac_bookmark b, ins_v_deel_gegevens d
WHERE fac_bookmark_expire IS NULL
AND fac_bookmark_id = 'wiBUpSjNzahvJ9R5';
-- Rapportage Gebouwbeheer
CREATE OR REPLACE VIEW goko_v_alg_onroerendgoed
(
DISTRICT,
LOCATIE,
LOCATIE_CODE,
LOCATIE_KEY,
GEBOUW,
-- gegevens uit locatiekaart
LOCATIEMANAGER,
WAARNEMER,
EIGENDOMSINDICATIE,
WIFI_DOOR,
INBRAAKBEV_DOOR,
TELEFONIE_DOOR,
-- Opvangsoorten en kp's
OPVANGSOORT_KDV,
KOSTENPLAATS_KDV,
TELEFOON_KDV,
OPVANGSOORT_BSO,
KOSTENPLAATS_BSO,
TELEFOON_BSO,
OPVANGSOORT_PSZ,
KOSTENPLAATS_PSZ,
KOSTENPLAATS_PSZ_2,
TELEFOON_PSZ,
OPVANGSOORT_TO,
KOSTENPLAATS_TO,
TELEFOON_TO,
OPVANGSOORT_VAKANTIE,
KOSTENPLAATS_VAKANTIE,
--
VERDIEPING,
RUIMTENR,
RUIMTE_OMSCHRIJVING,
RUIMTEFUNCTIE,
BVO_M2
)
AS
SELECT d.alg_district_omschrijving,
l.alg_locatie_omschrijving,
l.alg_locatie_code,
l.alg_locatie_key,
v.alg_gebouw_code || ' - ' || v.alg_gebouw_naam
gebouw,
km.locatiemanager,
km.waarnemer,
km.eigendomsinidcatie,
km.wifi_door,
km.inbraakbev_door,
km.telefonie_door,
km.opvangsoort_kdv,
km.kp_kdv,
km.tel_kdv,
km.opvangsoort_bso,
km.kp_bso,
km.tel_bso,
km.opvangsoort_psz,
km.kp_psz,
km.kp_psz_2,
km.tel_psz,
km.opvangsoort_to,
km.kp_to,
km.tel_to,
km.opvangsoort_vak,
km.kp_vak,
v.alg_verdieping_omschrijving || ' - ' || v.alg_verdieping_code
verdieping,
v.alg_ruimte_nr,
v.alg_ruimte_omschrijving,
sr.alg_srtruimte_omschrijving,
r.alg_ruimte_bruto_vloeropp
FROM alg_v_onroerendgoed_gegevens v,
alg_locatie l,
alg_district d,
(SELECT l.alg_locatie_key,
-- 1006 - kdv
flx.getflex('ALG', 1006, l.alg_locatie_key, 'L') opvangsoort_kdv,
flx.getdomeinwaarde(1,flx.getflex('ALG', 1010, l.alg_locatie_key, 'L')) kp_kdv,
flx.getflex('ALG', 1011, l.alg_locatie_key, 'L') tel_kdv,
-- 1007 - bso
flx.getflex('ALG', 1007, l.alg_locatie_key, 'L') opvangsoort_bso,
flx.getdomeinwaarde(1,flx.getflex('ALG', 1012, l.alg_locatie_key, 'L')) kp_bso,
flx.getflex('ALG', 1013, l.alg_locatie_key, 'L') tel_bso,
-- 1008 - psz
flx.getflex('ALG', 1008, l.alg_locatie_key, 'L') opvangsoort_psz,
flx.getdomeinwaarde(1,flx.getflex('ALG', 1014, l.alg_locatie_key, 'L')) kp_psz,
flx.getdomeinwaarde(1,flx.getflex('ALG', 1016, l.alg_locatie_key, 'L')) kp_psz_2,
flx.getflex('ALG', 1015, l.alg_locatie_key, 'L') tel_psz,
-- 1009 - to
flx.getflex('ALG', 1009, l.alg_locatie_key, 'L') opvangsoort_to,
flx.getdomeinwaarde(1,flx.getflex('ALG', 1017, l.alg_locatie_key, 'L')) kp_to,
flx.getflex('ALG', 1018, l.alg_locatie_key, 'L') tel_to,
-- 1040 - vakantie
flx.getflex('ALG', 1040, l.alg_locatie_key, 'L') opvangsoort_vak,
flx.getdomeinwaarde(1,flx.getflex('ALG', 1041, l.alg_locatie_key, 'L')) kp_vak,
-- locatieverantwoordelijke
flx.getdomeinwaarde(2,flx.getflex('ALG', 1002, l.alg_locatie_key, 'L')) locatiemanager,
flx.getdomeinwaarde(4,flx.getflex('ALG', 1003, l.alg_locatie_key, 'L')) waarnemer,
-- diensten en eigendom
flx.getdomeinwaarde(3,flx.getflex('ALG', 1020, l.alg_locatie_key, 'L')) eigendomsinidcatie,
flx.getflex('ALG', 1022, l.alg_locatie_key, 'L') wifi_door,
flx.getflex('ALG', 1023, l.alg_locatie_key, 'L') inbraakbev_door,
flx.getflex('ALG', 1024, l.alg_locatie_key, 'L') telefonie_door
FROM alg_locatie l ) km,
alg_ruimte r,
alg_srtruimte sr
WHERE v.alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = d.alg_district_key
AND v.alg_type IN ('R')
AND v.alg_locatie_key = km.alg_locatie_key
AND v.alg_ruimte_key = r.alg_ruimte_key AND r.alg_ruimte_verwijder IS NULL
AND r.alg_srtruimte_key = sr.alg_srtruimte_key (+)
ORDER BY d.alg_district_omschrijving, l.alg_locatie_code, v.alg_gebouw_code, v.alg_ruimte_nr ;
-- Bronview - koppeling met Elvy
CREATE OR REPLACE VIEW goko_v_verplichtingen_elvy
(
LEVERANCIER_NAAM,
LEVERANCIER_NR,
FACTUUR_MATCHING,
FACILITOR_BRON, -- soort verplichting: opdracht, bestelopdracht, contract
FACILITOR_SOORT, -- specifiek goko: opdracht (werk-order, key 5), inkoopopdracht (key 181), bestelopdracht_standaard_facilitor (vrije aanmaak, statische en punchout-catalogi), bestelopdracht_nietstandaard_goko (specifiek aangemaakt 'vrij artikel' op catalgoi.., contract_vast, contract_variabel
FACILITOR_REFERENTIE,
LEVERANCIER_REFERENTIE,
STATUS,
ATTENTIE,
DATUM,
DATUM_EINDDATUM, -- gepland - gewenst gereed
DATUM_AFGEMELD, -- OPDR = afmelddatum, BESTELOPDR = Laatste goederenontvangst CONTRACT = termijn
TEKST_AFGEMELD, -- Interne tekst bij afmelding verplichting
BEDRAG_VERPLICHTING_TOTAAL, -- Totaalbedrag van de verplichting
BEDRAG_KORTING_TOT,
BEDRAG_REEDS_BETAALD,
BEDRAG_OPENSTAAND,
-- REGELS VERPLICHTING
REGEL_NR,
REGEL_ARTIKELCODE, --
REGEL_OMSCHRIJVING,
KOSTEN_VERDELING, --
KOSTEN_WERKSOORT,
KOSTENSOORT, -- Nog niet gevuld in Faciitor...wel meerwaarde?
AANTAL_BESTELD,
AANTAL_ONTVANGEN,
BEDRAG_STUKSPRIJS,
BEDRAG_TOTAAL_REGEL,
BTW_PERCENTAGE,
REGEL_OPMERKING
)
AS
-- Opdracht
SELECT bedr.prs_bedrijf_naam
leverancier_naam,
bedr.prs_leverancier_nr
leverancier_nr,
'nog vullen' -- Via leveranciers_kaart op kenmerkveld doen ???
factuur_matching,
'opdracht'
facilitor_bron,
ot.mld_typeopdr_omschrijving
facilitor_soort,
sd.ins_srtdiscipline_prefix
|| TO_CHAR (o.mld_melding_key)
|| '/'
|| TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr)
facilitor_referentie,
flx.getflex ('OPD', 544, o.mld_opdr_key) -- voor inkoopopdr is key 547
leverancier_referentie,
os.mld_statusopdr_omschrijving
status,
NULL
attentie,
o.mld_opdr_datumbegin
datum,
COALESCE (o.mld_opdr_plandatum, o.mld_opdr_einddatum)
datum_einddatum,
COALESCE (mld.getopdrachtstatusdate (o.mld_opdr_key, 6),
mld.getopdrachtstatusdate (o.mld_opdr_key, 1))
datum_afgemeld,
o.mld_opdr_opmerking
tekst_afgemeld,
o.mld_opdr_kosten
bedrag_verplichting_totaal,
NULL
bedrag_korting_tot,
COALESCE (f.bedrag_reedsbetaald, 0)
bedrag_reedsbetaald,
COALESCE (o.mld_opdr_kosten, 0) - COALESCE (f.bedrag_reedsbetaald, 0)
bedrag_openstaand,
1 -- werkopdracht heeft geen subregels..
regel_nr,
NULL
regel_artikelcode,
o.mld_opdr_omschrijving
regel_omschrijving,
COALESCE (kost_o.kosten_voor, kost_m.kosten_voor, 'onbekend')
kosten_verdeling,
CASE
WHEN COALESCE (kost_o.kosten_voor, kost_m.kosten_voor, 'onbekend') =
'Anders'
THEN
COALESCE (kost_o.kosten_voor_anders,
kost_m.kosten_voor_anders,
'onbekend')
WHEN COALESCE (kost_o.kosten_voor, kost_m.kosten_voor, 'onbekend') =
'Gelijk aan kostenplaats'
THEN
COALESCE (
kp.prs_kostenplaats_nr
|| '-'
|| kp.prs_kostenplaats_omschrijving,
'onbekend')
WHEN COALESCE (kost_o.kosten_voor, kost_m.kosten_voor, 'onbekend') =
'Alle werksoorten van gekozen adres/locatie'
THEN
(SELECT DECODE (
v.opvangsoort_kdv,
'1', v.kostenplaats_kdv || CHR (13) || CHR (10))
|| DECODE (
v.opvangsoort_bso,
'1', v.kostenplaats_bso || CHR (13) || CHR (10))
|| DECODE (
v.opvangsoort_to,
'1', v.kostenplaats_to || CHR (13) || CHR (10))
|| DECODE (
v.opvangsoort_psz,
'1', v.kostenplaats_psz
|| CHR (13)
|| CHR (10)
|| v.kostenplaats_psz_2)
FROM (SELECT locatie_key, opvangsoort_kdv, kostenplaats_kdv, opvangsoort_bso, kostenplaats_bso, opvangsoort_to, kostenplaats_to, opvangsoort_psz, kostenplaats_psz, kostenplaats_psz_2
FROM goko_v_alg_onroerendgoed
GROUP BY locatie_key, opvangsoort_kdv, kostenplaats_kdv, opvangsoort_bso, kostenplaats_bso, opvangsoort_to, kostenplaats_to, opvangsoort_psz, kostenplaats_psz, kostenplaats_psz_2) v
WHERE v.locatie_key = m.mld_alg_locatie_key)
ELSE
'onbekend'
END
kosten_werksoort,
'nog vullen - ???'
kostensoort,
1
aantal_besteld,
NULL
aantal_ontvangen,
o.mld_opdr_kosten
bedrag_stuksprijs,
o.mld_opdr_kosten
bedrag_totaal_regel,
NULL
btw_percentage,
NULL
regel_opmerking
FROM mld_opdr o,
prs_kostenplaats kp,
mld_melding m,
mld_typeopdr ot,
ins_tab_discipline d,
ins_srtdiscipline sd,
mld_stdmelding std,
alg_locatie l,
alg_v_onroerendgoed_gegevens onr,
mld_v_uitvoerende mu,
prs_bedrijf bedr,
mld_statusopdr os,
(SELECT mld_opdr_key,
ud.fac_usrdata_omschr
kosten_voor,
CASE
WHEN ko.mld_kenmerkopdr_waarde = '101'
THEN
(SELECT mld_kenmerkopdr_waarde
FROM mld_kenmerkopdr
WHERE mld_opdr_key = ko.mld_opdr_key
AND mld_kenmerk_key = 862) -- kenmerk 'kosten voor - anders'
ELSE
NULL
END
kosten_voor_anders
FROM mld_kenmerkopdr ko, mld_kenmerk k, fac_usrdata ud
WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 2 -- kosten voor
AND fac.safe_to_number (ko.mld_kenmerkopdr_waarde) =
ud.fac_usrdata_key
AND ud.fac_usrtab_key = 2) kost_o, -- kosten_voor bij opdracht
(SELECT mld_melding_key,
ud.fac_usrdata_omschr
kosten_voor,
CASE
WHEN km.mld_kenmerkmelding_waarde = '101'
THEN
(SELECT mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding kw, mld_kenmerk k
WHERE kw.mld_melding_key = km.mld_melding_key
AND kw.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 61) -- srtkenmerk_key 'kosten voor - anders'
ELSE
NULL
END
kosten_voor_anders
FROM mld_kenmerkmelding km, mld_kenmerk k, fac_usrdata ud
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 2 -- kosten voor
AND fac.safe_to_number (km.mld_kenmerkmelding_waarde) =
ud.fac_usrdata_key
AND ud.fac_usrtab_key = 2) kost_m, -- kosten_voor bij melding
( SELECT f.mld_opdr_key,
SUM (f.fin_factuur_totaal) bedrag_reedsbetaald,
SUM (f.fin_factuur_totaal_btw) bedrag_reedsbetaald_btw
FROM fin_factuur f
WHERE f.mld_opdr_key IS NOT NULL AND f.fin_factuur_verwijder IS NULL
GROUP BY f.mld_opdr_key) f
WHERE o.mld_melding_key = m.mld_melding_key
AND o.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
AND ot.mld_typeopdr_isofferte = 0 -- geen offertes
AND ot.mld_typeopdr_key = 5 -- Opdracht (werk-order)
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND m.mld_alg_locatie_key = l.alg_locatie_key -- alle std-meldingen hebben verplicht-niveau locatie
AND o.mld_uitvoerende_keys = mu.mld_uitvoerende_key
AND mu.mld_uitvoerende_key = bedr.prs_bedrijf_key
AND os.mld_statusopdr_key = o.mld_statusopdr_key
AND m.mld_alg_onroerendgoed_keys = onr.alg_onroerendgoed_keys(+)
AND mu.intern = 0
AND o.mld_opdr_key = kost_o.mld_opdr_key(+)
AND o.mld_melding_key = kost_m.mld_melding_key(+)
AND o.mld_opdr_key = f.mld_opdr_key(+)
UNION
-- Inkoopopdracht
SELECT bedr.prs_bedrijf_naam
leverancier_naam,
bedr.prs_leverancier_nr
leverancier_nr,
'nog vullen' -- Via leveranciers_kaart op kenmerkveld doen ???
factuur_matching,
'opdracht'
facilitor_bron,
ot.mld_typeopdr_omschrijving
facilitor_soort,
sd.ins_srtdiscipline_prefix
|| TO_CHAR (o.mld_melding_key)
|| '/'
|| TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr)
facilitor_referentie,
flx.getflex ('OPD', 544, o.mld_opdr_key) -- voor inkoopopdr is key 547
leverancier_referentie,
os.mld_statusopdr_omschrijving
status,
NULL
attentie,
o.mld_opdr_datumbegin
datum,
COALESCE (o.mld_opdr_plandatum, o.mld_opdr_einddatum)
datum_einddatum,
COALESCE (mld.getopdrachtstatusdate (o.mld_opdr_key, 6),
mld.getopdrachtstatusdate (o.mld_opdr_key, 1))
datum_afgemeld,
o.mld_opdr_opmerking
tekst_afgemeld,
fac.safe_to_number(od.totaal_bedrag_bestelling)
bedrag_verplichting_totaal,
NULL
bedrag_korting_tot,
COALESCE (f.bedrag_reedsbetaald, 0)
bedrag_reedsbetaald,
COALESCE (fac.safe_to_number (od.totaal_bedrag_bestelling), 0)
- COALESCE (f.bedrag_reedsbetaald, 0)
bedrag_openstaand,
od.volgnr -- inkoopopdracht heeft subregels..
regel_nr,
od.artikelnr
regel_artikelcode,
od.artikel_omschrijving
regel_omschrijving,
COALESCE (kost_o.kosten_voor, kost_m.kosten_voor, 'onbekend')
kosten_verdeling,
CASE
WHEN COALESCE (kost_o.kosten_voor, kost_m.kosten_voor, 'onbekend') =
'Anders'
THEN
COALESCE (kost_o.kosten_voor_anders,
kost_m.kosten_voor_anders,
'onbekend')
WHEN COALESCE (kost_o.kosten_voor, kost_m.kosten_voor, 'onbekend') =
'Gelijk aan kostenplaats'
THEN
COALESCE (
kp.prs_kostenplaats_nr
|| '-'
|| kp.prs_kostenplaats_omschrijving,
'onbekend')
WHEN COALESCE (kost_o.kosten_voor, kost_m.kosten_voor, 'onbekend') =
'Alle werksoorten van gekozen adres/locatie'
THEN
(SELECT DECODE (
v.opvangsoort_kdv,
'1', v.kostenplaats_kdv || CHR (13) || CHR (10))
|| DECODE (
v.opvangsoort_bso,
'1', v.kostenplaats_bso || CHR (13) || CHR (10))
|| DECODE (
v.opvangsoort_to,
'1', v.kostenplaats_to || CHR (13) || CHR (10))
|| DECODE (
v.opvangsoort_psz,
'1', v.kostenplaats_psz
|| CHR (13)
|| CHR (10)
|| v.kostenplaats_psz_2)
FROM (SELECT locatie_key, opvangsoort_kdv, kostenplaats_kdv, opvangsoort_bso, kostenplaats_bso, opvangsoort_to, kostenplaats_to, opvangsoort_psz, kostenplaats_psz, kostenplaats_psz_2
FROM goko_v_alg_onroerendgoed
GROUP BY locatie_key, opvangsoort_kdv, kostenplaats_kdv, opvangsoort_bso, kostenplaats_bso, opvangsoort_to, kostenplaats_to, opvangsoort_psz, kostenplaats_psz, kostenplaats_psz_2) v
WHERE v.locatie_key = m.mld_alg_locatie_key)
ELSE
'onbekend'
END
kosten_werksoort,
'nog vullen - ???'
kostensoort,
fac.safe_to_number(od.aantal)
aantal_besteld,
NULL
aantal_ontvangen,
fac.safe_to_number(od.artikelprijs)
bedrag_stuksprijs,
COALESCE (fac.safe_to_number (od.artikelprijs), 0)
* COALESCE (fac.safe_to_number (od.aantal), 0)
bedrag_totaal_regel,
NULL
btw_percentage,
NULL
regel_opmerking
FROM mld_opdr o,
prs_kostenplaats kp,
mld_melding m,
mld_typeopdr ot,
ins_tab_discipline d,
ins_srtdiscipline sd,
mld_stdmelding std,
alg_locatie l,
alg_v_onroerendgoed_gegevens onr,
mld_v_uitvoerende mu,
prs_bedrijf bedr,
mld_statusopdr os,
(SELECT mld_opdr_key,
ud.fac_usrdata_omschr
kosten_voor,
CASE
WHEN ko.mld_kenmerkopdr_waarde = '101'
THEN
(SELECT mld_kenmerkopdr_waarde
FROM mld_kenmerkopdr
WHERE mld_opdr_key = ko.mld_opdr_key
AND mld_kenmerk_key = 862) -- kenmerk 'kosten voor - anders'
ELSE
NULL
END
kosten_voor_anders
FROM mld_kenmerkopdr ko, mld_kenmerk k, fac_usrdata ud
WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 2 -- kosten voor
AND fac.safe_to_number (ko.mld_kenmerkopdr_waarde) =
ud.fac_usrdata_key
AND ud.fac_usrtab_key = 2) kost_o, -- kosten_voor bij opdracht
(SELECT mld_melding_key,
ud.fac_usrdata_omschr
kosten_voor,
CASE
WHEN km.mld_kenmerkmelding_waarde = '101'
THEN
(SELECT mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding kw, mld_kenmerk k
WHERE kw.mld_melding_key = km.mld_melding_key
AND kw.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 61) -- srtkenmerk_key 'kosten voor - anders'
ELSE
NULL
END
kosten_voor_anders
FROM mld_kenmerkmelding km, mld_kenmerk k, fac_usrdata ud
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 2 -- kosten voor
AND fac.safe_to_number (km.mld_kenmerkmelding_waarde) =
ud.fac_usrdata_key
AND ud.fac_usrtab_key = 2) kost_m, -- kosten_voor bij melding
( SELECT f.mld_opdr_key,
SUM (f.fin_factuur_totaal) bedrag_reedsbetaald,
SUM (f.fin_factuur_totaal_btw) bedrag_reedsbetaald_btw
FROM fin_factuur f
WHERE f.mld_opdr_key IS NOT NULL AND f.fin_factuur_verwijder IS NULL
GROUP BY f.mld_opdr_key) f,
(SELECT ko.mld_opdr_key,
(SELECT mld_kenmerkopdr_waarde
FROM mld_kenmerkopdr
WHERE mld_opdr_key = ko.mld_opdr_key
AND mld_kenmerk_key = 604)
totaal_bedrag_bestelling,
1
volgnr,
ko.mld_kenmerkopdr_waarde
artikel_omschrijving,
(SELECT mld_kenmerkopdr_waarde
FROM mld_kenmerkopdr
WHERE mld_opdr_key = ko.mld_opdr_key
AND mld_kenmerk_key = 550)
artikelnr,
(SELECT mld_kenmerkopdr_waarde
FROM mld_kenmerkopdr
WHERE mld_opdr_key = ko.mld_opdr_key
AND mld_kenmerk_key = 551)
aantal,
(SELECT mld_kenmerkopdr_waarde
FROM mld_kenmerkopdr
WHERE mld_opdr_key = ko.mld_opdr_key
AND mld_kenmerk_key = 553)
artikelprijs
FROM mld_kenmerkopdr ko
WHERE ko.mld_kenmerk_key = 552 -- 1. Artikel te bestellen
UNION
SELECT ko.mld_opdr_key,
(SELECT mld_kenmerkopdr_waarde
FROM mld_kenmerkopdr
WHERE mld_opdr_key = ko.mld_opdr_key
AND mld_kenmerk_key = 604)
totaal_bedrag_bestelling,
2
volgnr,
ko.mld_kenmerkopdr_waarde
artikel_omschrijving,
(SELECT mld_kenmerkopdr_waarde
FROM mld_kenmerkopdr
WHERE mld_opdr_key = ko.mld_opdr_key
AND mld_kenmerk_key = 555)
artikelnr,
(SELECT mld_kenmerkopdr_waarde
FROM mld_kenmerkopdr
WHERE mld_opdr_key = ko.mld_opdr_key
AND mld_kenmerk_key = 556)
aantal,
(SELECT mld_kenmerkopdr_waarde
FROM mld_kenmerkopdr
WHERE mld_opdr_key = ko.mld_opdr_key
AND mld_kenmerk_key = 558)
artikelprijs
FROM mld_kenmerkopdr ko
WHERE ko.mld_kenmerk_key = 557 -- 2. Artikel te bestellen
UNION
SELECT ko.mld_opdr_key,
(SELECT mld_kenmerkopdr_waarde
FROM mld_kenmerkopdr
WHERE mld_opdr_key = ko.mld_opdr_key
AND mld_kenmerk_key = 604)
totaal_bedrag_bestelling,
3
volgnr,
ko.mld_kenmerkopdr_waarde
artikel_omschrijving,
(SELECT mld_kenmerkopdr_waarde
FROM mld_kenmerkopdr
WHERE mld_opdr_key = ko.mld_opdr_key
AND mld_kenmerk_key = 562)
artikelnr,
(SELECT mld_kenmerkopdr_waarde
FROM mld_kenmerkopdr
WHERE mld_opdr_key = ko.mld_opdr_key
AND mld_kenmerk_key = 563)
aantal,
(SELECT mld_kenmerkopdr_waarde
FROM mld_kenmerkopdr
WHERE mld_opdr_key = ko.mld_opdr_key
AND mld_kenmerk_key = 565)
artikelprijs
FROM mld_kenmerkopdr ko
WHERE ko.mld_kenmerk_key = 564 -- 3. Artikel te bestellen
UNION
SELECT ko.mld_opdr_key,
(SELECT mld_kenmerkopdr_waarde
FROM mld_kenmerkopdr
WHERE mld_opdr_key = ko.mld_opdr_key
AND mld_kenmerk_key = 604)
totaal_bedrag_bestelling,
4
volgnr,
ko.mld_kenmerkopdr_waarde
artikel_omschrijving,
(SELECT mld_kenmerkopdr_waarde
FROM mld_kenmerkopdr
WHERE mld_opdr_key = ko.mld_opdr_key
AND mld_kenmerk_key = 567)
artikelnr,
(SELECT mld_kenmerkopdr_waarde
FROM mld_kenmerkopdr
WHERE mld_opdr_key = ko.mld_opdr_key
AND mld_kenmerk_key = 568)
aantal,
(SELECT mld_kenmerkopdr_waarde
FROM mld_kenmerkopdr
WHERE mld_opdr_key = ko.mld_opdr_key
AND mld_kenmerk_key = 570)
artikelprijs
FROM mld_kenmerkopdr ko
WHERE ko.mld_kenmerk_key = 569 -- 4. Artikel te bestellen
UNION
SELECT ko.mld_opdr_key,
(SELECT mld_kenmerkopdr_waarde
FROM mld_kenmerkopdr
WHERE mld_opdr_key = ko.mld_opdr_key
AND mld_kenmerk_key = 604)
totaal_bedrag_bestelling,
5
volgnr,
ko.mld_kenmerkopdr_waarde
artikel_omschrijving,
(SELECT mld_kenmerkopdr_waarde
FROM mld_kenmerkopdr
WHERE mld_opdr_key = ko.mld_opdr_key
AND mld_kenmerk_key = 573)
artikelnr,
(SELECT mld_kenmerkopdr_waarde
FROM mld_kenmerkopdr
WHERE mld_opdr_key = ko.mld_opdr_key
AND mld_kenmerk_key = 574)
aantal,
(SELECT mld_kenmerkopdr_waarde
FROM mld_kenmerkopdr
WHERE mld_opdr_key = ko.mld_opdr_key
AND mld_kenmerk_key = 576)
artikelprijs
FROM mld_kenmerkopdr ko
WHERE ko.mld_kenmerk_key = 575 -- 5. Artikel te bestellen
UNION
SELECT ko.mld_opdr_key,
(SELECT mld_kenmerkopdr_waarde
FROM mld_kenmerkopdr
WHERE mld_opdr_key = ko.mld_opdr_key
AND mld_kenmerk_key = 604)
totaal_bedrag_bestelling,
6
volgnr,
ko.mld_kenmerkopdr_waarde
artikel_omschrijving,
(SELECT mld_kenmerkopdr_waarde
FROM mld_kenmerkopdr
WHERE mld_opdr_key = ko.mld_opdr_key
AND mld_kenmerk_key = 578)
artikelnr,
(SELECT mld_kenmerkopdr_waarde
FROM mld_kenmerkopdr
WHERE mld_opdr_key = ko.mld_opdr_key
AND mld_kenmerk_key = 579)
aantal,
(SELECT mld_kenmerkopdr_waarde
FROM mld_kenmerkopdr
WHERE mld_opdr_key = ko.mld_opdr_key
AND mld_kenmerk_key = 581)
artikelprijs
FROM mld_kenmerkopdr ko
WHERE ko.mld_kenmerk_key = 580 -- 6. Artikel te bestellen
UNION
SELECT ko.mld_opdr_key,
(SELECT mld_kenmerkopdr_waarde
FROM mld_kenmerkopdr
WHERE mld_opdr_key = ko.mld_opdr_key
AND mld_kenmerk_key = 604)
totaal_bedrag_bestelling,
7
volgnr,
ko.mld_kenmerkopdr_waarde
artikel_omschrijving,
(SELECT mld_kenmerkopdr_waarde
FROM mld_kenmerkopdr
WHERE mld_opdr_key = ko.mld_opdr_key
AND mld_kenmerk_key = 584)
artikelnr,
(SELECT mld_kenmerkopdr_waarde
FROM mld_kenmerkopdr
WHERE mld_opdr_key = ko.mld_opdr_key
AND mld_kenmerk_key = 585)
aantal,
(SELECT mld_kenmerkopdr_waarde
FROM mld_kenmerkopdr
WHERE mld_opdr_key = ko.mld_opdr_key
AND mld_kenmerk_key = 587)
artikelprijs
FROM mld_kenmerkopdr ko
WHERE ko.mld_kenmerk_key = 586) od -- 7. Artikel te bestellen
WHERE o.mld_melding_key = m.mld_melding_key
AND o.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
AND ot.mld_typeopdr_isofferte = 0 -- geen offertes
AND ot.mld_typeopdr_key = 181 -- Inkoopopdracht
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND m.mld_alg_locatie_key = l.alg_locatie_key -- alle std-meldingen hebben verplicht-niveau locatie
AND o.mld_uitvoerende_keys = mu.mld_uitvoerende_key
AND mu.mld_uitvoerende_key = bedr.prs_bedrijf_key
AND os.mld_statusopdr_key = o.mld_statusopdr_key
AND m.mld_alg_onroerendgoed_keys = onr.alg_onroerendgoed_keys(+)
AND mu.intern = 0
AND o.mld_opdr_key = kost_o.mld_opdr_key(+)
AND o.mld_melding_key = kost_m.mld_melding_key(+)
AND o.mld_opdr_key = f.mld_opdr_key(+)
AND o.mld_opdr_key = od.mld_opdr_key
UNION
-- Bestelopdracht standaard Facilitor
SELECT bedr.prs_bedrijf_naam
leverancier_naam,
bedr.prs_leverancier_nr
leverancier_nr,
TO_CHAR (dp.bes_disc_params_factmatchmode) || '-weg'
factuur_matching,
'bestelopdracht'
facilitor_bron,
'bestelopdracht_standaard_facilitor' -- standaard facilitor (vrije aanmaak, statische en punchout-catalogi)
facilitor_soort,
'B' || bo.bes_bestelopdr_id
facilitor_referentie,
(SELECT kw.bes_kenmerkbestell_waarde
FROM bes_kenmerkbestell kw, bes_kenmerk k
WHERE kw.bes_kenmerk_key = k.bes_kenmerk_key
AND kw.bes_bestelling_key = b.bes_bestelling_key
AND k.bes_srtkenmerk_key = 4)
leverancier_referentie,
bs.bes_bestelopdrstatuses_omschr
status,
( SELECT CASE
WHEN COUNT (*) > 0
THEN
'let op! loopt nog schaduwbestelling'
ELSE
''
END
FROM bes_bestelling
WHERE bes_bestelling_parentkey = b.bes_bestelling_key
GROUP BY bes_bestelling_parentkey)
attentie,
bo.bes_bestelopdr_datum
datum,
b.bes_bestelling_leverdatum
datum_einddatum,
fac.gettrackingdate ('BESOTV', b.bes_bestelling_key) -- compleet geleverd
datum_afgemeld, -- goederenontvangst - compleet geleverd
bo.bes_bestelopdr_delivery_opmerk
tekst_afgemeld,
( SELECT SUM (bes_bestelopdr_item_prijs * bes_bestelopdr_item_aantal)
FROM bes_bestelopdr_item
WHERE bes_bestelopdr_key = bo.bes_bestelopdr_key
GROUP BY bes_bestelopdr_key)
bedrag_verplichting_totaal,
NULL
bedrag_korting_tot,
COALESCE (f.bedrag_reedsbetaald, 0)
bedrag_reedsbetaald,
( NVL (
bes.getsrtdeelinkprijs (sd.bes_srtdeel_key,
bes_bestelling_datum),
bi.bes_bestelling_item_prijs)
* bi.bes_bestelling_item_aantal)
- COALESCE (f.bedrag_reedsbetaald, 0)
bedrag_openstaand,
boi.bes_bestelopdr_item_posnr
regel_nr,
sd.bes_srtdeel_nr
regel_artikelcode,
CASE
WHEN bestelregel_kenmerk_oms IS NOT NULL
THEN
sd.bes_srtdeel_omschrijving
|| CHR (10)
|| CHR (13)
|| r_tekst.bestelregel_kenmerk_oms
ELSE
sd.bes_srtdeel_omschrijving
END
regel_omschrijving,
COALESCE (kost_b.kosten_voor, 'onbekend')
kosten_verdeling,
CASE
WHEN COALESCE (kost_b.kosten_voor, 'onbekend') = 'Anders'
THEN
COALESCE (kost_b.kosten_voor_anders, 'onbekend')
WHEN COALESCE (kost_b.kosten_voor, 'onbekend') =
'Gelijk aan kostenplaats'
THEN
COALESCE (
kp.prs_kostenplaats_nr
|| '-'
|| kp.prs_kostenplaats_omschrijving,
'onbekend')
WHEN COALESCE (kost_b.kosten_voor, 'onbekend') =
'Alle werksoorten van gekozen adres/locatie'
AND ma.alg_locatie_key IS NOT NULL
THEN
(SELECT DECODE (
v.opvangsoort_kdv,
'1', v.kostenplaats_kdv || CHR (13) || CHR (10))
|| DECODE (
v.opvangsoort_bso,
'1', v.kostenplaats_bso || CHR (13) || CHR (10))
|| DECODE (
v.opvangsoort_to,
'1', v.kostenplaats_to || CHR (13) || CHR (10))
|| DECODE (
v.opvangsoort_psz,
'1', v.kostenplaats_psz
|| CHR (13)
|| CHR (10)
|| v.kostenplaats_psz_2)
FROM (SELECT locatie_key, opvangsoort_kdv, kostenplaats_kdv, opvangsoort_bso, kostenplaats_bso, opvangsoort_to, kostenplaats_to, opvangsoort_psz, kostenplaats_psz, kostenplaats_psz_2
FROM goko_v_alg_onroerendgoed
GROUP BY locatie_key, opvangsoort_kdv, kostenplaats_kdv, opvangsoort_bso, kostenplaats_bso, opvangsoort_to, kostenplaats_to, opvangsoort_psz, kostenplaats_psz, kostenplaats_psz_2) v
WHERE v.locatie_key = ma.alg_locatie_key)
ELSE
'onbekend'
END
kosten_werksoort,
'nog vullen - ???'
kostensoort,
boi.bes_bestelopdr_item_aantal
aantal_besteld,
boi.bes_bestelopdr_item_aantalontv
aantal_ontvangen,
NVL (
bes.getsrtdeelinkprijs (sd.bes_srtdeel_key, bes_bestelling_datum),
bi.bes_bestelling_item_prijs)
bedrag_stuksprijs,
NVL (
bes.getsrtdeelinkprijs (sd.bes_srtdeel_key,
bes_bestelling_datum),
bi.bes_bestelling_item_prijs)
* bi.bes_bestelling_item_aantal
bedrag_totaal_regel,
sd.bes_srtdeel_btw
btw_percentage,
boi.bes_bestelopdr_item_opmerking
regel_opmerking
FROM bes_bestelling b,
prs_perslid p,
prs_kostenplaats kp,
prs_afdeling a,
mld_adres ma,
bes_bestelling_item bi,
bes_bestelopdr_item boi,
bes_bestelopdr bo,
bes_bestelopdrstatuses bs,
prs_bedrijf bedr,
bes_srtdeel sd,
bes_srtgroep sg,
ins_tab_discipline d,
bes_disc_params dp,
( SELECT boi.bes_bestelopdr_key,
MAX (boi.bes_bestelopdr_item_posnr) aantal,
MAX (v.aantal_vrij) aantal_vrij,
MAX (nv.aantal_nietvrij) aantal_nietvrij
FROM bes_bestelopdr_item boi,
( SELECT bes_bestelopdr_key, COUNT (*) aantal_vrij
FROM bes_bestelopdr_item
WHERE bes_bestelopdr_item_omschrijv = 'vrij artikel'
GROUP BY bes_bestelopdr_key) v,
( SELECT bes_bestelopdr_key, COUNT (*) aantal_nietvrij
FROM bes_bestelopdr_item
WHERE bes_bestelopdr_item_omschrijv <> 'vrij artikel'
GROUP BY bes_bestelopdr_key) nv
WHERE boi.bes_bestelopdr_key = v.bes_bestelopdr_key(+)
AND boi.bes_bestelopdr_key = nv.bes_bestelopdr_key(+)
GROUP BY boi.bes_bestelopdr_key) w,
(SELECT kb.bes_bestelling_key,
ud.fac_usrdata_omschr
kosten_voor,
CASE
WHEN kb.bes_kenmerkbestell_waarde = '101'
THEN
(SELECT kb2.bes_kenmerkbestell_waarde
FROM bes_kenmerkbestell kb2, bes_kenmerk k
WHERE kb2.bes_bestelling_key =
kb.bes_bestelling_key
AND kb2.bes_kenmerk_key = k.bes_kenmerk_key
AND k.bes_srtkenmerk_key = 102) -- srtkenmerk_key 'kosten voor - anders'
ELSE
NULL
END
kosten_voor_anders
FROM bes_kenmerkbestell kb, bes_kenmerk k, fac_usrdata ud
WHERE kb.bes_kenmerk_key = k.bes_kenmerk_key
AND k.bes_srtkenmerk_key = 1 -- kosten voor
AND fac.safe_to_number (kb.bes_kenmerkbestell_waarde) =
ud.fac_usrdata_key
AND ud.fac_usrtab_key = 2) kost_b, -- kosten_voor bij bestelling
( SELECT bi.bes_bestelopdr_item_key,
LISTAGG (
UPPER (sk.bes_srtkenmerk_omschrijving)
|| ': '
|| kwi.bes_kenmerkbesteli_waarde,
CHR (10) || CHR (13))
WITHIN GROUP (ORDER BY kwi.bes_kenmerkbesteli_key)
bestelregel_kenmerk_oms
FROM bes_bestelling_item bi,
bes_bestelopdr_item boi,
bes_kenmerkbesteli kwi,
bes_kenmerk k,
bes_srtkenmerk sk
WHERE bi.bes_bestelling_item_key = kwi.bes_bestelling_item_key
AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
AND kwi.bes_kenmerk_key = k.bes_kenmerk_key
AND k.bes_srtkenmerk_key = sk.bes_srtkenmerk_key
AND kwi.bes_kenmerkbesteli_verwijder IS NULL
GROUP BY bi.bes_bestelopdr_item_key) r_tekst,
( SELECT f.bes_bestelopdr_key,
SUM (f.fin_factuur_totaal) bedrag_reedsbetaald,
SUM (f.fin_factuur_totaal_btw) bedrag_reedsbetaald_btw
FROM fin_factuur f
WHERE f.bes_bestelopdr_key IS NOT NULL
AND f.fin_factuur_verwijder IS NULL
GROUP BY f.bes_bestelopdr_key) f
WHERE b.prs_perslid_key = p.prs_perslid_key
AND b.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
AND p.prs_afdeling_key = a.prs_afdeling_key
AND b.mld_adres_key_lev = ma.mld_adres_key
AND b.bes_bestelling_key = bi.bes_bestelling_key
AND b.bes_bestelling_key = kost_b.bes_bestelling_key(+)
AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
AND boi.bes_bestelopdr_key = bo.bes_bestelopdr_key
AND bi.bes_bestelopdr_item_key = r_tekst.bes_bestelopdr_item_key(+)
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key
AND sg.ins_discipline_key = d.ins_discipline_key
AND bo.prs_bedrijf_key = bedr.prs_bedrijf_key
AND bo.bes_bestelopdr_status = bs.bes_bestelopdrstatuses_key
AND d.ins_discipline_key = dp.bes_ins_discipline_key
AND bo.bes_bestelopdr_key = w.bes_bestelopdr_key
AND bo.bes_bestelopdr_key = f.bes_bestelopdr_key(+)
AND b.bes_bestelling_parentkey IS NULL -- uitsluiten bestellingen met schaduwbestellingen
-- Type Bestellingen
-- AND dp.bes_disc_params_bestelmode IN (0,2) -- artikelcat en bestellijst
AND w.aantal_vrij IS NULL -- Er zijn in de bestelling GEEN zogenaamde 'vrije artikel' opgenomen
UNION
-- Bestelopdracht_vrij_goko = De tijdelijke besteloplossing via 'vrij artikel en kenmerkvelden te vullen'
SELECT bedr.prs_bedrijf_naam
leverancier_naam,
bedr.prs_leverancier_nr
leverancier_nr,
TO_CHAR (dp.bes_disc_params_factmatchmode) || '-weg'
factuur_matching,
'bestelopdracht'
facilitor_bron,
'bestelopdracht_nietstandaard_goko' -- bestelopdrachten met 'vrij artikel'
facilitor_soort,
'B' || bo.bes_bestelopdr_id
facilitor_referentie,
(SELECT kw.bes_kenmerkbestell_waarde
FROM bes_kenmerkbestell kw, bes_kenmerk k
WHERE kw.bes_kenmerk_key = k.bes_kenmerk_key
AND kw.bes_bestelling_key = b.bes_bestelling_key
AND k.bes_srtkenmerk_key = 4)
leverancier_referentie,
bs.bes_bestelopdrstatuses_omschr
status,
( SELECT CASE
WHEN COUNT (*) > 0
THEN
'let op! loopt nog schaduwbestelling'
ELSE
''
END
FROM bes_bestelling
WHERE bes_bestelling_parentkey = b.bes_bestelling_key
GROUP BY bes_bestelling_parentkey)
attentie,
bo.bes_bestelopdr_datum
datum,
b.bes_bestelling_leverdatum
datum_einddatum,
fac.gettrackingdate ('BESOTV', b.bes_bestelling_key) -- compleet geleverd
datum_afgemeld, -- goederenontvangst - compleet geleverd
bo.bes_bestelopdr_delivery_opmerk
tekst_afgemeld,
COALESCE (bt.totaalbedrag_bestelling, 0)
bedrag_verplichting_totaal,
NULL
bedrag_korting_tot,
COALESCE (f.bedrag_reedsbetaald, 0)
bedrag_reedsbetaald,
COALESCE (bt.totaalbedrag_bestelling, 0)
- COALESCE (f.bedrag_reedsbetaald, 0)
bedrag_openstaand,
boi.bes_bestelopdr_item_posnr
regel_nr,
(SELECT kwi.bes_kenmerkbesteli_waarde
FROM bes_kenmerkbesteli kwi, bes_kenmerk k
WHERE kwi.bes_bestelling_item_key = bi.bes_bestelling_item_key
AND kwi.bes_kenmerk_key = k.bes_kenmerk_key
AND k.bes_srtkenmerk_key = 61) -- artikelnummer
regel_artikelcode,
CASE
WHEN bestelregel_kenmerk_oms IS NOT NULL
THEN
sd.bes_srtdeel_omschrijving
|| CHR (10)
|| CHR (13)
|| r_tekst.bestelregel_kenmerk_oms
ELSE
sd.bes_srtdeel_omschrijving
END
regel_omschrijving,
COALESCE (kost_b.kosten_voor, 'onbekend')
kosten_verdeling,
CASE
WHEN COALESCE (kost_b.kosten_voor, 'onbekend') = 'Anders'
THEN
COALESCE (kost_b.kosten_voor_anders, 'onbekend')
WHEN COALESCE (kost_b.kosten_voor, 'onbekend') =
'Gelijk aan kostenplaats'
THEN
COALESCE (
kp.prs_kostenplaats_nr
|| '-'
|| kp.prs_kostenplaats_omschrijving,
'onbekend')
WHEN COALESCE (kost_b.kosten_voor, 'onbekend') =
'Alle werksoorten van gekozen adres/locatie'
AND ma.alg_locatie_key IS NOT NULL
THEN
(SELECT DECODE (
v.opvangsoort_kdv,
'1', v.kostenplaats_kdv || CHR (13) || CHR (10))
|| DECODE (
v.opvangsoort_bso,
'1', v.kostenplaats_bso || CHR (13) || CHR (10))
|| DECODE (
v.opvangsoort_to,
'1', v.kostenplaats_to || CHR (13) || CHR (10))
|| DECODE (
v.opvangsoort_psz,
'1', v.kostenplaats_psz
|| CHR (13)
|| CHR (10)
|| v.kostenplaats_psz_2)
FROM (SELECT locatie_key, opvangsoort_kdv, kostenplaats_kdv, opvangsoort_bso, kostenplaats_bso, opvangsoort_to, kostenplaats_to, opvangsoort_psz, kostenplaats_psz, kostenplaats_psz_2
FROM goko_v_alg_onroerendgoed
GROUP BY locatie_key, opvangsoort_kdv, kostenplaats_kdv, opvangsoort_bso, kostenplaats_bso, opvangsoort_to, kostenplaats_to, opvangsoort_psz, kostenplaats_psz, kostenplaats_psz_2) v
WHERE v.locatie_key = ma.alg_locatie_key)
ELSE
'onbekend'
END
kosten_werksoort,
'nog vullen - ???'
kostensoort,
boi.bes_bestelopdr_item_aantal
aantal_besteld,
boi.bes_bestelopdr_item_aantalontv
aantal_ontvangen,
COALESCE (ap.bedrag_stuksprijs, 0)
bedrag_stuksprijs,
COALESCE (ap.bedrag_stuksprijs, 0) * boi.bes_bestelopdr_item_aantal
bedrag_totaal_regel,
sd.bes_srtdeel_btw
btw_percentage,
boi.bes_bestelopdr_item_opmerking
regel_opmerking
FROM bes_bestelling b,
prs_perslid p,
prs_kostenplaats kp,
prs_afdeling a,
mld_adres ma,
bes_bestelling_item bi,
bes_bestelopdr_item boi,
bes_bestelopdr bo,
bes_bestelopdrstatuses bs,
prs_bedrijf bedr,
bes_srtdeel sd,
bes_srtgroep sg,
ins_tab_discipline d,
bes_disc_params dp,
( SELECT boi.bes_bestelopdr_key,
MAX (boi.bes_bestelopdr_item_posnr) aantal,
MAX (v.aantal_vrij) aantal_vrij,
MAX (nv.aantal_nietvrij) aantal_nietvrij
FROM bes_bestelopdr_item boi,
( SELECT bes_bestelopdr_key, COUNT (*) aantal_vrij
FROM bes_bestelopdr_item
WHERE bes_bestelopdr_item_omschrijv = 'vrij artikel'
GROUP BY bes_bestelopdr_key) v,
( SELECT bes_bestelopdr_key, COUNT (*) aantal_nietvrij
FROM bes_bestelopdr_item
WHERE bes_bestelopdr_item_omschrijv <> 'vrij artikel'
GROUP BY bes_bestelopdr_key) nv
WHERE boi.bes_bestelopdr_key = v.bes_bestelopdr_key(+)
AND boi.bes_bestelopdr_key = nv.bes_bestelopdr_key(+)
GROUP BY boi.bes_bestelopdr_key) w,
(SELECT kb.bes_bestelling_key,
ud.fac_usrdata_omschr
kosten_voor,
CASE
WHEN kb.bes_kenmerkbestell_waarde = '101'
THEN
(SELECT kb2.bes_kenmerkbestell_waarde
FROM bes_kenmerkbestell kb2, bes_kenmerk k
WHERE kb2.bes_bestelling_key =
kb.bes_bestelling_key
AND kb2.bes_kenmerk_key = k.bes_kenmerk_key
AND k.bes_srtkenmerk_key = 102) -- srtkenmerk_key 'kosten voor - anders'
ELSE
NULL
END
kosten_voor_anders
FROM bes_kenmerkbestell kb, bes_kenmerk k, fac_usrdata ud
WHERE kb.bes_kenmerk_key = k.bes_kenmerk_key
AND k.bes_srtkenmerk_key = 1 -- kosten voor
AND fac.safe_to_number (kb.bes_kenmerkbestell_waarde) =
ud.fac_usrdata_key
AND ud.fac_usrtab_key = 2) kost_b, -- kosten_voor bij bestelling
( SELECT bi.bes_bestelopdr_item_key,
LISTAGG (
UPPER (sk.bes_srtkenmerk_omschrijving)
|| ': '
|| kwi.bes_kenmerkbesteli_waarde,
CHR (10) || CHR (13))
WITHIN GROUP (ORDER BY kwi.bes_kenmerkbesteli_key)
bestelregel_kenmerk_oms
FROM bes_bestelopdr_item boi,
bes_bestelling_item bi,
bes_kenmerkbesteli kwi,
bes_kenmerk k,
bes_srtkenmerk sk
WHERE bi.bes_bestelling_item_key = kwi.bes_bestelling_item_key
AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
AND kwi.bes_kenmerk_key = k.bes_kenmerk_key
AND k.bes_srtkenmerk_key = sk.bes_srtkenmerk_key
AND kwi.bes_kenmerkbesteli_verwijder IS NULL
AND sk.bes_srtkenmerk_key = 45 -- artikel te bestellen
GROUP BY bi.bes_bestelopdr_item_key) r_tekst,
(SELECT kwi.bes_bestelling_item_key,
fac.safe_to_number (
REPLACE (kwi.bes_kenmerkbesteli_waarde, ',', '.'))
bedrag_stuksprijs
FROM bes_kenmerkbesteli kwi, bes_kenmerk k
WHERE kwi.bes_kenmerk_key = k.bes_kenmerk_key
AND k.bes_srtkenmerk_key = 81) ap, -- artikelprijs
( SELECT f.bes_bestelopdr_key,
SUM (f.fin_factuur_totaal) bedrag_reedsbetaald,
SUM (f.fin_factuur_totaal_btw) bedrag_reedsbetaald_btw
FROM fin_factuur f
WHERE f.bes_bestelopdr_key IS NOT NULL
AND f.fin_factuur_verwijder IS NULL
GROUP BY f.bes_bestelopdr_key) f,
(SELECT kw.bes_bestelling_key,
fac.safe_to_number (kw.bes_kenmerkbestell_waarde)
totaalbedrag_bestelling
FROM bes_kenmerkbestell kw, bes_kenmerk k
WHERE kw.bes_kenmerk_key = k.bes_kenmerk_key
AND k.bes_srtkenmerk_key = 44) bt -- Totaalbedrag bestelling
WHERE b.prs_perslid_key = p.prs_perslid_key
AND b.prs_kostenplaats_key = kp.prs_kostenplaats_key(+)
AND p.prs_afdeling_key = a.prs_afdeling_key
AND b.mld_adres_key_lev = ma.mld_adres_key
AND b.bes_bestelling_key = bi.bes_bestelling_key
AND b.bes_bestelling_key = kost_b.bes_bestelling_key(+)
AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
AND boi.bes_bestelopdr_key = bo.bes_bestelopdr_key
AND bi.bes_bestelopdr_item_key = r_tekst.bes_bestelopdr_item_key
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key
AND sg.ins_discipline_key = d.ins_discipline_key
AND bo.prs_bedrijf_key = bedr.prs_bedrijf_key
AND bo.bes_bestelopdr_status = bs.bes_bestelopdrstatuses_key
AND d.ins_discipline_key = dp.bes_ins_discipline_key
AND bo.bes_bestelopdr_key = w.bes_bestelopdr_key
AND bo.bes_bestelopdr_key = f.bes_bestelopdr_key(+)
AND b.bes_bestelling_key = bt.bes_bestelling_key(+)
AND bi.bes_bestelling_item_key = ap.bes_bestelling_item_key(+)
AND w.aantal_vrij IS NOT NULL -- in de bestelling is (minimaal 1) goko-leveranciers-artikel 'vrij artikel'
UNION
-- Contracten
SELECT bedr.prs_bedrijf_naam
leverancier_naam,
bedr.prs_leverancier_nr
leverancier_nr,
'2-weg'
factuur_matching,
'contract'
facilitor_bron,
sc.ins_discipline_omschrijving
facilitor_soort,
'C'
|| c.cnt_contract_key
|| '.'
|| COALESCE (TO_CHAR (c.cnt_contract_versie), '0')
facilitor_referentie,
c.cnt_contract_nummer
leverancier_referentie,
'nog vullen'
status,
NULL
attentie,
c.cnt_contract_looptijd_van
datum,
c.cnt_contract_looptijd_tot
datum_einddatum,
NULL
datum_afgemeld, -- goederenontvangst - compleet geleverd
NULL
tekst_afgemeld,
c.cnt_contract_kosten
bedrag_verplichting_totaal,
NULL
bedrag_korting_tot,
COALESCE (f.bedrag_reedsbetaald, 0)
bedrag_reedsbetaald,
COALESCE (c.cnt_contract_kosten, 0)
- COALESCE (f.bedrag_reedsbetaald, 0)
bedrag_openstaand,
1
regel_nr,
NULL
regel_artikelcode,
c.cnt_contract_omschrijving
regel_omschrijving,
'nog vullen'
kosten_verdeling,
'nog vullen'
kosten_werksoort,
'nog vullen - ???'
kostensoort,
1
aantal_besteld,
NULL
aantal_ontvangen,
NULL
bedrag_stuksprijs,
NULL
bedrag_totaal_regel,
NULL
btw_percentage,
c.cnt_contract_omschrijving
regel_opmerking
FROM cnt_contract c,
prs_kostenplaats k,
ins_tab_discipline sc,
--prs_afdeling a,
prs_bedrijf bedr,
( SELECT f.cnt_contract_key,
SUM (f.fin_factuur_totaal) bedrag_reedsbetaald,
SUM (f.fin_factuur_totaal_btw) bedrag_reedsbetaald_btw
FROM fin_factuur f
WHERE f.cnt_contract_key IS NOT NULL
AND f.fin_factuur_verwijder IS NULL
GROUP BY f.cnt_contract_key) f
WHERE c.cnt_prs_bedrijf_key = bedr.prs_bedrijf_key
AND c.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
AND c.ins_discipline_key = sc.ins_discipline_key
AND sc.ins_discipline_module = 'CNT'
AND c.cnt_contract_key = f.cnt_contract_key(+) ;
------ payload end ------
SET DEFINE OFF
BEGIN adm.systrackscriptId ('$Id$', 0); END;
/
COMMIT;
SET ECHO OFF
SPOOL OFF
SET DEFINE ON
PROMPT Logfile of this upgrade is: &fcltlogfile