Files
Customer/YKPN/ykpn.sql
Norbert Wassink 74db82fae6 YKPN#84338 -- Evenementmanagement - Mail to Melding
svn path=/Customer/trunk/; revision=70947
2025-11-14 15:18:03 +00:00

18840 lines
814 KiB
MySQL
Raw Blame History

--
-- $Id$
--
-- Script containing customer specific configuration sql statements for aads: Arcadis Aqumen Facility Management
DEFINE thisfile = 'YKPN.SQL'
DEFINE dbuser = '^YKPN'
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 YKPN
AS
PROCEDURE mail_evenementaanvraag(pfrom IN VARCHAR2,
pto IN VARCHAR2,
psubject IN VARCHAR2,
pbody IN VARCHAR2,
psessionid IN VARCHAR2,
pemailkey IN NUMBER);
PROCEDURE set_bez_pincode (p_bezoekers_key IN NUMBER);
PROCEDURE update_bezoeker (p_bezoekers_key IN NUMBER);
PROCEDURE set_kenmerk(p_module IN VARCHAR2,
p_kenmerk_key IN NUMBER,
p_link_key IN NUMBER,
p_kenmerk_waarde IN VARCHAR2,
p_history IN NUMBER);
FUNCTION get_kenmerk(p_module IN VARCHAR2,
p_kenmerk_key IN NUMBER,
p_link_key IN NUMBER)
RETURN VARCHAR2;
PROCEDURE mld_after_insert (p_melding_key IN NUMBER);
PROCEDURE opdracht_after_save (p_opdr_key IN NUMBER);
FUNCTION res_presave (p_user_key IN NUMBER,
p_rsv_ruimte_key IN NUMBER,
p_activiteit_key IN NUMBER,
p_res_deel_key IN NUMBER,
p_datum_van IN DATE,
p_datum_tot IN DATE,
p_volgnr IN NUMBER)
RETURN VARCHAR2;
FUNCTION bes_checkrfo (p_user_key IN NUMBER,
p_urole in VARCHAR2,
p_srtdeel_keys in VARCHAR2)
RETURN VARCHAR2;
PROCEDURE res_after_insert (p_rsv_ruimte_key IN NUMBER);
PROCEDURE set_nedap_status(p_bezoekers_key IN NUMBER,
p_type IN VARCHAR2,
p_nedap_id IN VARCHAR2);
PROCEDURE fin_set_approver (p_factuur_key IN NUMBER);
PROCEDURE add_xml_row (p_bestand IN VARCHAR2,
p_regel IN VARCHAR2);
PROCEDURE add_xml_element (p_bestand IN VARCHAR2,
p_tag IN VARCHAR2,
p_value IN VARCHAR2);
PROCEDURE refreshscore(pUserKey IN NUMBER);
FUNCTION get_flex_value (pmodule IN VARCHAR2,
p_kenmerk_key IN NUMBER,
p_ref_key IN NUMBER,
p_kenmerkdomein_key IN NUMBER,
p_niveau IN VARCHAR2 DEFAULT NULL)
RETURN VARCHAR2;
PROCEDURE update_ruimte_contract (p_ruimte_key IN NUMBER,
p_afdeling_key IN NUMBER);
PROCEDURE cleanup_room_dep_contracts;
PROCEDURE mail_werkplekinrichting(pfrom IN VARCHAR2,
pto IN VARCHAR2,
psubject IN VARCHAR2,
pbody IN VARCHAR2,
psessionid IN VARCHAR2,
pemailkey IN NUMBER);
PROCEDURE mail_werkpleklocatie (pfrom IN VARCHAR2,
pto IN VARCHAR2,
psubject IN VARCHAR2,
pbody IN VARCHAR2,
psessionid IN VARCHAR2,
pemailkey IN NUMBER);
PROCEDURE autoorder;
PROCEDURE tsk_bevr_contract(p_applname IN VARCHAR2,
p_applrun IN VARCHAR2);
PROCEDURE tsk_mail_locman(p_applname IN VARCHAR2,
p_applrun IN VARCHAR2);
PROCEDURE tsk_bez_buitmld(p_applname IN VARCHAR2,
p_applrun IN VARCHAR2);
PROCEDURE tsk_bez_cleanup(p_applname IN VARCHAR2,
p_applrun IN VARCHAR2);
PROCEDURE tsk_cnt_index (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2);
PROCEDURE tsk_mld_keuring (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2);
PROCEDURE tsk_bes_geleverd(p_applname IN VARCHAR2,
p_applrun IN VARCHAR2);
PROCEDURE tsk_mld_thuiswerkwinkel(p_applname IN VARCHAR2,
p_applrun IN VARCHAR2);
PROCEDURE tsk_mldbes_approve (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2);
END;
/
CREATE OR REPLACE PACKAGE BODY YKPN
AS
PROCEDURE mail_evenementaanvraag(pfrom IN VARCHAR2,
pto IN VARCHAR2,
psubject IN VARCHAR2,
pbody IN VARCHAR2,
psessionid IN VARCHAR2,
pemailkey IN NUMBER)
AS
CURSOR sel (p_table IN VARCHAR2)
is
SELECT fud.fac_usrdata_omschr Tekstlabel,
fud.fac_usrdata_omschr2 controle,
(SELECT mld_stdmelding_key
FROM mld_stdmelding sm
WHERE sm.mld_stdmelding_key = fud.FAC_USRDATA_PRIJS
AND sm.mld_stdmelding_verwijder IS NULL
AND ( sm.mld_stdmelding_vervaldatum IS NULL
OR sm.mld_stdmelding_vervaldatum > SYSDATE)) stdmelding_key
FROM fac_usrdata fud, fac_usrtab fut
WHERE UPPER (fut.fac_usrtab_naam) = UPPER ('EvenementAanvraa')
AND fud.fac_usrtab_key = fut.fac_usrtab_key
-- AND UPPER (fud.fac_usrdata_code) LIKE UPPER ('Formulier%')
AND fud.FAC_USRDATA_VERWIJDER IS NULL
AND ( fud.FAC_USRDATA_VERVALDATUM IS NULL
OR fud.FAC_USRDATA_VERVALDATUM > SYSDATE);
v_errormsg VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_error NUMBER;
v_eigentabel VARCHAR2(20);
v_value VARCHAR2(4000);
v_kenmerk_key NUMBER;
v_reserveringnr_label VARCHAR2 (1000);
v_omschrijving_label VARCHAR2 (1000);
v_aanvrager_label VARCHAR2 (1000);
v_onderwerp_label VARCHAR2 (1000);
v_datum_label VARCHAR2 (1000);
v_starttijd_label VARCHAR2 (1000);
v_eindtijd_label VARCHAR2 (1000);
v_genodigden_label VARCHAR2 (1000);
v_locatie_label VARCHAR2 (1000);
v_catering_label VARCHAR2 (1000);
v_bhv_label VARCHAR2 (1000);
v_stdmelding_key NUMBER;
v_melding_key NUMBER;
v_onrgoed_key NUMBER;
v_locatie_key NUMBER;
v_perslid_key NUMBER;
v_rrr_key NUMBER;
v_reservering_key NUMBER;
v_message VARCHAR2(250);
v_reservering_nr VARCHAR2(200);
v_aanvrager_email prs_perslid.prs_perslid_email%TYPE;
v_aanvrager VARCHAR2(100);
v_onderwerp mld_melding.mld_melding_onderwerp%type;
v_omschrijving VARCHAR2(4000);
v_alg_gebouw_key alg_gebouw.alg_gebouw_key%TYPE;
v_datum VARCHAR2(4000);
v_starttijd VARCHAR2(4000);
v_eindtijd VARCHAR2(4000);
v_genodigden VARCHAR2(4000);
v_locatie VARCHAR2(4000);
v_catering VARCHAR2(4000);
v_cateraar_email VARCHAR2(200);
v_bhv VARCHAR2(4000);
v_stdmelding_uvt mld_stdmelding.mld_stdmelding_t_uitvoertijd%TYPE
:= MLD_T_UITVOERTIJD (NULL, NULL); -- constructor initialisatie
FUNCTION findstr (p_body IN VARCHAR2, p_begin IN VARCHAR2, p_eind IN VARCHAR2)
RETURN VARCHAR2
AS
BEGIN
RETURN SUBSTR (
p_body,
INSTR (p_body, p_begin) + LENGTH (p_begin),
INSTR (p_body, p_eind, INSTR (p_body, p_begin) + LENGTH (p_begin))
- (INSTR (p_body, p_begin) + LENGTH (p_begin)));
END;
FUNCTION getKenmerkKey (p_kenmerk_label IN VARCHAR2, p_stmelding_key IN NUMBER)
RETURN NUMBER
AS
v_kenmerk_key NUMBER;
BEGIN
v_kenmerk_key:=-1;
SELECT mld_kenmerk_key
INTO v_kenmerk_key
FROM mld_kenmerk k
WHERE UPPER(k.mld_kenmerk_omschrijving) = UPPER(p_kenmerk_label)
AND k.mld_kenmerk_verwijder IS NULL
AND k.MLD_STDMELDING_KEY=p_stmelding_key;
RETURN v_kenmerk_key;
END;
BEGIN
v_eigentabel:='EvenementAanvraa';
v_errorhint:='Ophalen eigen tabel met instellingen';
v_stdmelding_key:=3801; -- Ondersteuning evenementen
v_errormsg:='Ophalen standaardmelding mislukt';
-- SELECT mld_stdmelding_key
-- INTO v_stdmelding_key
-- from fac_usrdata fud, fac_usrtab fut, mld_stdmelding sm
-- WHERE UPPER(fut.FAC_USRTAB_NAAM)=UPPER(v_eigentabel)
-- AND fud.fac_usrtab_key = fut.fac_usrtab_key
-- AND UPPER(fud.fac_usrdata_code)='STDMELDING'
-- AND sm.mld_stdmelding_key=fac.safe_to_number(fud.fac_usrdata_omschr);
v_error:=0;
v_reserveringnr_label:='Reserveringsnummer:';
v_omschrijving_label:='Geef een omschrijving van het evenement:';
v_aanvrager_label:='Wie is de opdrachtgever?';
v_onderwerp_label:='Wat is de naam van het evenement?';
v_datum_label:='Wanneer vindt het evenement plaats?';
v_starttijd_label:='Wat is de beoogde aanvangstijd?';
v_eindtijd_label:='Wat is de beoogde eindtijd?';
v_locatie_label := 'Om welke KPN locatie gaat het?';
v_catering_label:='Heb je catering nodig bij jouw evenement?';
DELETE imp_log WHERE imp_log_applicatie = 'MAIL_EVENEMENTAANVRAAG'; -- AND imp_log_datum < SYSDATE - 14;
-- De bais velden inlezen
v_errorhint := 'Opzoeken velden in de mail';
v_reservering_nr := findstr(pbody, v_reserveringnr_label,CHR(10));
v_aanvrager_email := findstr(pbody, v_aanvrager_label|| CHR(10),CHR(10));
v_onderwerp := findstr(pbody, v_onderwerp_label|| CHR(10),CHR(10));
v_omschrijving := findstr(pbody, v_omschrijving_label|| CHR(10),CHR(10));
v_locatie := findstr(pbody, v_locatie_label|| CHR(10),CHR(10));
v_catering := findstr(pbody, v_catering_label|| CHR(10),CHR(10));
v_datum := findstr(pbody, v_datum_label|| CHR(10),CHR(10));
v_starttijd :=findstr(pbody, v_starttijd_label|| CHR(10),CHR(10));
v_eindtijd := findstr(pbody, v_eindtijd_label|| CHR(10),CHR(10));
--fac.writelog('MAIL_EVENEMENTAANVRAAG', 'I', 'v_reservering_nr='||v_reservering_nr ,'');
-- fac.writelog('MAIL_EVENEMENTAANVRAAG', 'I', 'v_aanvrager_email='||v_aanvrager_email, '');
-- fac.writelog('MAIL_EVENEMENTAANVRAAG', 'I', 'v_onderwerp='||v_onderwerp ,'');
-- fac.writelog('MAIL_EVENEMENTAANVRAAG', 'I', 'v_omschrijving='||v_omschrijving, '');
-- fac.writelog('MAIL_EVENEMENTAANVRAAG', 'I', 'v_locatie_key='||v_locatie_key ,'');
-- fac.writelog('MAIL_EVENEMENTAANVRAAG', 'I', 'v_onrgoed_key='||v_onrgoed_key ,'');
-- fac.writelog('MAIL_EVENEMENTAANVRAAG', 'I', 'v_rrr_key='||v_rrr_key ,'');
-- fac.writelog('MAIL_EVENEMENTAANVRAAG', 'I', 'catering ='||v_catering ,'');
v_errormsg:='Ophalen aanvrager mislukt';
BEGIN
SELECT prs_perslid_key ,prs_perslid_voornaam||' '||prs_perslid_naam
INTO v_perslid_key , v_aanvrager
FROM prs_perslid
WHERE UPPER(prs_perslid_email) = UPPER(v_aanvrager_email)
AND prs_perslid_verwijder IS NULL
AND (prs_perslid_inactief IS NULL OR prs_perslid_inactief > SYSDATE);
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_perslid_key:=3;
v_aanvrager:=NULL;
END;
fac.writelog('MAIL_EVENEMENTAANVRAAG', 'I', 'v_perslid_key='||v_perslid_key ,'');
v_errormsg:='Ophalen reservering mislukt';
IF LENGTH(v_reservering_nr)>1
THEN
BEGIN
SELECT DECODE(m.alg_onrgoed_niveau,
'L', a.alg_locatie_key,
'G', a.alg_gebouw_key,
'V', a.alg_verdieping_key,
'R', a.alg_ruimte_key,
'H', NULL,
NULL) v_onrgoed_key,
a.alg_locatie_key,
rrr.res_rsv_ruimte_key,
rrr.res_reservering_key
INTO v_onrgoed_key,
v_locatie_key,
v_rrr_key,
v_reservering_key
FROM mld_stdmelding m,
res_rsv_ruimte rrr,
res_ruimte_opstelling rro,
res_ruimte rr,
res_alg_ruimte rar,
alg_v_allonrgoed_gegevens a
WHERE rrr.res_reservering_key = fac.safe_to_number(v_reservering_nr)
AND rro.res_ruimte_opstel_key = rrr.res_ruimte_opstel_key
AND rr.res_ruimte_key = rro.res_ruimte_key
AND rar.res_ruimte_key = rr.res_ruimte_key
AND a.alg_ruimte_key = rar.alg_ruimte_key
AND m.mld_stdmelding_key=v_stdmelding_key;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_errormsg:='De reservering Nr is niet gevonden';
v_onrgoed_key:=-1;
v_locatie_key:=-1;
v_reservering_key:=-1;
v_rrr_key:=NULL;
v_error:=1;
END;
ELSE
v_onrgoed_key:=-1;
v_locatie_key:=-1;
END IF;
IF (v_onrgoed_key<0 AND v_locatie<0)
THEN
v_errormsg:='De gebouw omschrijving niet gevonden';
BEGIN
SELECT MIN (alg_onrgoed_key) alg_gebouw_key,
alg_locatie_key
INTO v_onrgoed_key,
v_locatie_key
FROM ALG_ONRGOEDKENMERK aok, alg_kenmerk ak,
ALG_V_ONROERENDGOED_GEGEVENS a
WHERE ak.ALG_KENMERK_CODE = 'GEBOUW_CODE_EVENTS'
AND aok.ALG_KENMERK_KEY = ak.ALG_KENMERK_KEY
AND aok.ALG_ONRGOED_NIVEAU = 'G'
AND UPPER (aok.ALG_ONRGOEDKENMERK_WAARDE) =
UPPER (v_locatie)
AND aok.ALG_ONRGOEDKENMERK_VERWIJDER IS NULL
AND a.ALG_GEBOUW_KEY=alg_onrgoed_key
GROUP BY a.alg_locatie_key;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_onrgoed_key:=30721; -- default naar gebou landelijk
v_locatie_key:=841; -- default locatie landelijk
END;
END IF;
IF v_error=0 THEN
v_errormsg:='Toevoegen melding mislukt';
INSERT INTO mld_melding (mld_melding_module,
mld_meldbron_key,
mld_alg_locatie_key,
mld_alg_onroerendgoed_keys,
mld_melding_datum,
mld_melding_onderwerp,
mld_melding_omschrijving,
mld_melding_status,
mld_melding_t_uitvoertijd,
mld_stdmelding_key,
prs_perslid_key,
prs_perslid_key_voor,
prs_kostenplaats_key,
mld_melding_spoed,
mld_melding_kto,
res_rsv_ruimte_key)
VALUES ('MLD',
4, -- email
v_locatie_key,
v_onrgoed_key,
SYSDATE,
v_onderwerp,
v_omschrijving,
2,
v_stdmelding_uvt,
v_stdmelding_key,
v_perslid_key,
v_perslid_key,
NULL,
3, -- prio normaal
0,
DECODE(v_rrr_key,-1,NULL,v_rrr_key))
RETURNING mld_melding_key
INTO v_melding_key;
fac.writelog('MAIL_EVENEMENTAANVRAAG', 'I', 'v_melding_key='||v_melding_key ,'');
-- Gaan we de reservereing updaten met de melding_key
v_errormsg := 'Fout bij updte reservering';
IF v_reservering_key>0
THEN
UPDATE res_reservering set mld_melding_key=v_melding_key WHERE res_reservering_key=v_reservering_key;
END IF;
-- Mail in de notitie
v_errormsg := 'Fout bij toevoegen melding notitie';
INSERT INTO mld_melding_note(mld_melding_key,
mld_melding_note_aanmaak,
prs_perslid_key,
mld_melding_note_flag,
mld_melding_note_omschrijving)
VALUES(v_melding_key,
SYSDATE,
3,
0,
pbody);
-- update we nu de kenmerken
v_errormsg := 'Fout bij toevoegen toevoegen kenmerk';
FOR rec IN sel(v_eigentabel)
LOOP
v_errormsg := 'Fout bij opzoeken van label '||rec.Tekstlabel;
v_value:=findstr(pbody, rec.Tekstlabel|| CHR(10),CHR(10));
v_errormsg := 'Fout bij toevoegen toevoegen kenmerk '||rec.Tekstlabel;
v_kenmerk_key := getKenmerkKey(rec.Tekstlabel, v_stdmelding_key);
IF LENGTH(v_value)>0 AND v_kenmerk_key>0 THEN
fac.writelog('MAIL_EVENEMENTAANVRAAG', 'I', rec.Tekstlabel||'-'||v_value||'('||v_kenmerk_key||')', '');
mld.upsertmeldingkenmerk(v_kenmerk_key, v_melding_key, v_value);
END IF;
END LOOP;
v_errormsg := 'Fout bij toevoegen notificatie';
IF INSTR(UPPER(v_catering),'JA')>0
THEN
BEGIN
-- Notificatie naar de cateraar versturen
SELECT aok.alg_onrgoedkenmerk_waarde
INTO v_cateraar_email
FROM alg_onrgoedkenmerk aok, alg_kenmerk ak
WHERE ak.alg_kenmerk_code = 'CIRFOODEVENT_EMAIL' -- Email adres cateraar
AND aok.alg_kenmerk_key = ak.alg_kenmerk_key
AND aok.alg_onrgoed_niveau = 'G'
AND aok.alg_onrgoed_key =v_locatie_key
AND aok.alg_onrgoedkenmerk_verwijder IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_cateraar_email:='kpnrotterdam883.nl@cirfood.com';
END;
FAC.trackaction ('CUST26', v_melding_key, NULL, NULL, '#Mail naar cateraar gestuurd naar: ' || v_cateraar_email);
v_message:='Op '||v_datum||' heeft aanvrager '||v_aanvrager||' een event van '||v_starttijd||' tot '||v_eindtijd||'. Hiervoor heeft aanvrager catering nodig. Graag contact opnemen met '||v_aanvrager_email;
INSERT INTO fac_notificatie (fac_srtnotificatie_key,
fac_notificatie_status,
fac_notificatie_receiver_email,
prs_perslid_key_receiver,
fac_notificatie_oms,
fac_notificatie_refkey,
fac_notificatie_extrakey,
fac_notificatie_prioriteit)
VALUES (901, -- CUST26
2, -- mail
v_cateraar_email, -- email
null,
v_message,
v_melding_key,
NULL,
2);
fac.writelog('MAIL_EVENEMENTAANVRAAG', 'I', 'Notificatie naar cateraar'|| v_cateraar_email, '');
END IF;
-- De email body wegschrijvinen in een kenmerk
v_errormsg := 'Fout bij toevoegen kenmerk';
mld.upsertmeldingkenmerk(9961, v_melding_key, SUBSTR(pbody,1,4000)); -- D=9921, A=9961
-- Starten we nu de workflow
MLD.mld_nextworkflowstep (v_melding_key, -1);
fac.writelog('MAIL_EVENEMENTAANVRAAG', 'I', 'Workflow gestart', '');
COMMIT;
ELSE
fac.writelog('MAIL_EVENEMENTAANVRAAG', 'E', 'Melding niet aangemaakt ', '');
fac.writelog('MAIL_EVENEMENTAANVRAAG', 'E', 'Reden : '||v_errormsg, '');
END IF;
EXCEPTION
WHEN OTHERS
THEN
fac.writelog (
'MAIL_EVENEMENTAANVRAAG',
'W',
'Mail kon niet verwerkt worden afzender: '
|| pfrom
|| '['
|| v_errormsg
|| ']',
'OTHERS (error '
|| SQLCODE
|| '/'
|| SUBSTR (SQLERRM, 1, 100)
|| ')');
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (psessionid,
'errormsg',
'Database fout - Neem contact op met uw systeembeheerder');
END;
PROCEDURE set_bez_pincode (p_bezoekers_key IN NUMBER)
AS
v_count NUMBER;
v_found NUMBER;
v_code VARCHAR2 (5);
v_exists NUMBER;
v_date DATE;
v_aanmaak DATE;
v_kenmerkwaarde_key NUMBER;
v_actie_key NUMBER;
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_errormsg VARCHAR2 (200);
v_aanduiding VARCHAR2 (100);
BEGIN
v_count := 0;
v_found := 0;
v_aanduiding := 'Bezoeker_key: ' || p_bezoekers_key;
SELECT TRUNC (bez_afspraak_datum), kw.bez_kenmerkwaarde_aanmaak, kw.bez_kenmerkwaarde_waarde, a.bez_actie_key
INTO v_date, v_aanmaak, v_code, v_actie_key
FROM bez_afspraak a,
bez_bezoekers b,
res_rsv_deel rrd,
res_deel rd,
ins_v_deel_gegevens d,
(SELECT bez_kenmerkwaarde_waarde, bez_kenmerkwaarde_aanmaak, bez_kenmerkwaarde_key, bez_bezoekers_key
FROM bez_kenmerkwaarde kw
WHERE bez_kenmerk_key = 1020) kw
WHERE a.bez_afspraak_key = b.bez_afspraak_key
AND b.bez_bezoekers_key = p_bezoekers_key
AND b.bez_bezoekers_key = kw.bez_bezoekers_key(+)
AND b.bez_bezoekers_key = rrd.bez_bezoekers_key
AND rrd.res_deel_key = rd.res_deel_key
AND rd.res_ins_deel_key = d.ins_deel_key;
WHILE v_found = 0 AND v_count < 1000
LOOP
--DBMS_OUTPUT.put_line (COALESCE (v_code, '-1'));
SELECT COUNT ( * )
INTO v_exists
FROM bez_bezoekers b, bez_kenmerkwaarde kw, bez_afspraak a
WHERE a.bez_afspraak_key = b.bez_afspraak_key
AND kw.bez_bezoekers_key = b.bez_bezoekers_key
AND b.bez_bezoekers_key <> p_bezoekers_key
AND kw.bez_kenmerk_key = 1020 -- Pincode
AND kw.bez_kenmerkwaarde_waarde = COALESCE (v_code, '-1')
AND bez_afspraak_datum BETWEEN v_date -1 AND v_date + 2;
IF v_exists > 0 OR v_code IS NULL
THEN
v_code := TRUNC (DBMS_RANDOM.VALUE (9999, 100000));
--DBMS_OUTPUT.put_line ('Nieuwe code:' || v_code);
ELSE
v_found := 1;
ykpn.set_kenmerk('BEZ', 1020, p_bezoekers_key, v_code, 0);
END IF;
v_count := v_count + 1;
END LOOP;
COMMIT;
EXCEPTION WHEN NO_DATA_FOUND
THEN
-- Verwijder de pincode
ykpn.set_kenmerk('BEZ', 1020, p_bezoekers_key, NULL, 0);
-- Bezoeker heeft geen parkeerplaats
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'OTHERS (error '||oracle_err_num||'/'||oracle_err_mes||')';
fac.writelog ('YKPN.set_bez_pincode',
'E',
v_aanduiding || ': ' || v_errormsg,
'');
END;
-- Deze procedure wordt aangeroepen via de hook functie.
PROCEDURE update_bezoeker (p_bezoekers_key IN NUMBER)
AS
v_count NUMBER;
v_found NUMBER;
v_code VARCHAR2 (5);
v_exists NUMBER;
v_date DATE;
v_aanmaak DATE;
v_kenmerkwaarde_key NUMBER;
v_actie_key NUMBER;
v_afspraak_key BEZ_AFSPRAAK.BEZ_AFSPRAAK_KEY%TYPE;
v_locatie_omschrijving ALG_LOCATIE.ALG_LOCATIE_OMSCHRIJVING%TYPE;
v_autorisator_key NUMBER;
v_perslid_email PRS_PERSLID.PRS_PERSLID_EMAIL%TYPE;
v_count_pp NUMBER;
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_errormsg VARCHAR2 (200);
v_aanduiding VARCHAR2 (100);
BEGIN
v_count := 0;
v_found := 0;
SELECT count(*)
INTO v_count
FROM bez_bezoekers
WHERE bez_bezoekers_key = p_bezoekers_key;
IF v_count = 1 THEN
-- Als gebouw kenmerk procuartie heeft dan moet de aanvraag eerst geoedgekeurd worden.
SELECT COUNT(*) INTO v_count FROM bez_bezoekers bez, bez_afspraak af, alg_onrgoedkenmerk ken
WHERE bez.bez_bezoekers_key = p_bezoekers_key
AND af.bez_afspraak_key=bez.bez_afspraak_key
AND ken.alg_onrgoed_key = af.alg_onrgoed_keys
AND ken.alg_kenmerk_key = 2120 -- checkbox kenmerk : bepaald of gebouw parkpl autorizatie heeft. 2060 = ACC, 2120= PROD
AND ken.alg_onrgoedkenmerk_waarde = '1';
IF v_count=1 THEN
v_aanduiding := 'Bezoekers_key: ' || p_bezoekers_key;
SELECT a.bez_afspraak_key, bez_afspraak_datum, kw.bez_kenmerkwaarde_aanmaak, a.bez_actie_key, kp.bez_kenmerkwaarde_waarde, l.alg_locatie_omschrijving, FAC.SAFE_TO_NUMBER(ka.prs_perslid_key), ka.prs_perslid_email
INTO v_afspraak_key, v_date, v_aanmaak, v_actie_key, v_code, v_locatie_omschrijving, v_autorisator_key, v_perslid_email
FROM bez_afspraak a,
bez_bezoekers b,
alg_locatie l,
(SELECT bez_kenmerkwaarde_waarde, bez_kenmerkwaarde_aanmaak, bez_kenmerkwaarde_key, bez_bezoekers_key
FROM bez_kenmerkwaarde kw
WHERE bez_kenmerk_key = 1002) kw, -- Aanmaak, kenmerk wordt door hook functie bij iedere bezoeker gezet
(SELECT bez_kenmerkwaarde_waarde, bez_kenmerkwaarde_aanmaak, bez_kenmerkwaarde_key, bez_bezoekers_key
FROM bez_kenmerkwaarde kw
WHERE bez_kenmerk_key = 1020) kp, -- Pincode
(SELECT p.prs_perslid_naam, prs_perslid_email, prs_perslid_key, bez_kenmerkwaarde_aanmaak, bez_kenmerkwaarde_key, bez_bezoekers_key
FROM bez_kenmerkwaarde kw, prs_perslid p
WHERE bez_kenmerk_key = 1003
AND FAC.SAFE_TO_NUMBER(bez_kenmerkwaarde_waarde) = p.prs_perslid_key) ka -- Autorisator
WHERE a.bez_afspraak_key = b.bez_afspraak_key
AND a.alg_locatie_key = l.alg_locatie_key
AND b.bez_bezoekers_key = p_bezoekers_key
AND b.bez_bezoekers_key = kw.bez_bezoekers_key(+)
AND b.bez_bezoekers_key = kp.bez_bezoekers_key(+)
AND b.bez_bezoekers_key = ka.bez_bezoekers_key(+);
--DBMS_OUTPUT.put_line ('Bestaande code:' || v_code);
v_aanduiding := 'Zet initiele kenmerken, Bezoekers_key: ' || p_bezoekers_key;
IF v_aanmaak IS NULL
THEN
ykpn.set_kenmerk('BEZ', 1002, p_bezoekers_key, TO_CHAR(SYSDATE, 'YYYYMMDDHH24MI'), 0); -- Aanmaak
ELSIF v_aanmaak > sysdate - 5/(24*60*60) -- kenmerk is de afgelopen 5 seconden aangemaakt. Het betreft dan een herhaal actie.
THEN
ykpn.set_kenmerk('BEZ', 1002, p_bezoekers_key, TO_CHAR(SYSDATE, 'YYYYMMDDHH24MI'), 0); -- Aanmaak
ykpn.set_kenmerk('BEZ', 1004, p_bezoekers_key, NULL, 0); -- Reden afwijzing
ykpn.set_kenmerk('BEZ', 1020, p_bezoekers_key, NULL, 0); -- Pincode
ykpn.set_kenmerk('BEZ', 1120, p_bezoekers_key, NULL, 0); -- Geldig ID
ykpn.set_kenmerk('BEZ', 1060, p_bezoekers_key, NULL, 0); -- Nedap ID
ykpn.set_kenmerk('BEZ', 1042, p_bezoekers_key, NULL, 0); -- Nedap Verzonden
ykpn.set_kenmerk('BEZ', 1160, p_bezoekers_key, NULL, 0); -- Kenteken respons
ykpn.set_kenmerk('BEZ', 1161, p_bezoekers_key, NULL, 0); -- Kenteken Verzonden
ykpn.set_kenmerk('BEZ', 1043, p_bezoekers_key, NULL, 0); -- SMS Verzonden
v_code := NULL;
END IF;
v_aanduiding := 'Bewaar locatie omschrijving, Bezoekers_key: ' || p_bezoekers_key;
ykpn.set_kenmerk('BEZ', 1200, p_bezoekers_key, v_locatie_omschrijving, 0); -- Locatie omschrijving voor bezoekersnotificatie
-- Als de parkeerplaats goedgekeurd was gaan we de pincode nog even checken
-- Deze kan aangepast moeten worden als de afspraak in tijd verplaatst wordt en
-- er een andere afspraak staat met dezelfde pincode
-- Voor de historie kijken we ook naar records die al een pincode hebben.
SELECT count(*)
INTO v_count
FROM fac_tracking t, fac_srtnotificatie sn
WHERE fac_tracking_refkey = p_bezoekers_key
AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'CUST04';
IF v_count > 1 OR v_code IS NOT NULL THEN
set_bez_pincode (p_bezoekers_key);
END IF;
IF v_actie_key = 1 THEN
ykpn.set_kenmerk('BEZ', 1140, p_bezoekers_key, 'Let op: Een parkeerplaats op eigen standplaats reserveren is niet toegestaan, dit i.v.m. het tekort aan bezoekersparkeerplaatsen wat dan ontstaat.', 0);
END IF;
-- Controleer of de autorisator ingevuld is.
SELECT COUNT(*)
INTO v_count_pp
FROM res_rsv_deel
WHERE bez_bezoekers_key = p_bezoekers_key;
-- Hebben we al een notificatie van ongeldige aanvraag gestuurd?
SELECT count(*)
INTO v_count
FROM fac_tracking t, fac_srtnotificatie sn
WHERE fac_tracking_refkey = p_bezoekers_key
AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'CUST06';
-- parkeerplaatsaanvraag zonder autorisator en nog geen notificatie gestuurd
IF v_count_pp = 1 AND v_autorisator_key IS NULL AND v_count = 0
THEN
FAC.trackaction ('CUST06', v_afspraak_key, NULL, NULL, 'Ongeldige parkeerplaatsaanvraag: Geen autorisator ingevuld!');
END IF;
-- parkeerplaatsaanvraag met autorisator en nog geen notificatie naar goedkeurder gestuurd.
IF v_count_pp = 1 AND v_autorisator_key IS NOT NULL
THEN
-- Hebben we al een notificatie naar de goedkeurder gestuurd?
SELECT count(*)
INTO v_count
FROM fac_tracking t, fac_srtnotificatie sn
WHERE fac_tracking_refkey = v_afspraak_key
AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'CUST07';
IF v_count = 0
THEN
FAC.trackaction ('CUST07', v_afspraak_key, NULL, NULL, '#Mail naar autorisator gestuurd naar: ' || v_perslid_email);
INSERT INTO fac_notificatie (fac_srtnotificatie_key,
fac_notificatie_status,
fac_notificatie_receiver_email,
prs_perslid_key_receiver,
fac_notificatie_oms,
fac_notificatie_refkey,
fac_notificatie_extrakey,
fac_notificatie_prioriteit)
VALUES (281, -- CUST07
2, -- mail
v_perslid_email, -- email
v_autorisator_key,
'Goedkeuring verzocht voor parkeerplaatsaanvraag',
v_afspraak_key,
NULL,
2);
END IF;
END IF;
ELSE
-- Het betreft een bestaande bezoeker. Ook bij het verwijderen wordt de functie aangeroepen.
v_aanduiding := 'Bezoekers_key: ' || p_bezoekers_key;
SELECT a.bez_afspraak_key, bez_afspraak_datum, kw.bez_kenmerkwaarde_aanmaak, a.bez_actie_key, kp.bez_kenmerkwaarde_waarde, l.alg_locatie_omschrijving
INTO v_afspraak_key, v_date, v_aanmaak, v_actie_key, v_code, v_locatie_omschrijving
FROM bez_afspraak a,
bez_bezoekers b,
alg_locatie l,
(SELECT bez_kenmerkwaarde_waarde, bez_kenmerkwaarde_aanmaak, bez_kenmerkwaarde_key, bez_bezoekers_key
FROM bez_kenmerkwaarde kw
WHERE bez_kenmerk_key = 1002) kw, -- Aanmaak, kenmerk wordt door hook functie bij iedere bezoeker gezet
(SELECT bez_kenmerkwaarde_waarde, bez_kenmerkwaarde_aanmaak, bez_kenmerkwaarde_key, bez_bezoekers_key
FROM bez_kenmerkwaarde kw
WHERE bez_kenmerk_key = 1020) kp -- Pincode
WHERE a.bez_afspraak_key = b.bez_afspraak_key
AND a.alg_locatie_key = l.alg_locatie_key
AND b.bez_bezoekers_key = p_bezoekers_key
AND b.bez_bezoekers_key = kw.bez_bezoekers_key(+)
AND b.bez_bezoekers_key = kp.bez_bezoekers_key(+);
--DBMS_OUTPUT.put_line ('Bestaande code:' || v_code);
v_aanduiding := 'Zet initiele kenmerken, Bezoekers_key: ' || p_bezoekers_key;
IF v_aanmaak IS NULL
THEN
ykpn.set_kenmerk('BEZ', 1002, p_bezoekers_key, TO_CHAR(SYSDATE, 'YYYYMMDDHH24MI'), 0); -- Aanmaak
ELSIF v_aanmaak > sysdate - 5/(24*60*60) -- kenmerk is de afgelopen 5 seconden aangemaakt. Het betreft dan een herhaal actie.
THEN
ykpn.set_kenmerk('BEZ', 1002, p_bezoekers_key, TO_CHAR(SYSDATE, 'YYYYMMDDHH24MI'), 0); -- Aanmaak
ykpn.set_kenmerk('BEZ', 1020, p_bezoekers_key, NULL, 0); -- Pincode
ykpn.set_kenmerk('BEZ', 1120, p_bezoekers_key, NULL, 0); -- Geldig ID
ykpn.set_kenmerk('BEZ', 1060, p_bezoekers_key, NULL, 0); -- Nedap ID
ykpn.set_kenmerk('BEZ', 1042, p_bezoekers_key, NULL, 0); -- Nedap Verzonden
ykpn.set_kenmerk('BEZ', 1160, p_bezoekers_key, NULL, 0); -- Kenteken respons
ykpn.set_kenmerk('BEZ', 1161, p_bezoekers_key, NULL, 0); -- Kenteken Verzonden
ykpn.set_kenmerk('BEZ', 1043, p_bezoekers_key, NULL, 0); -- SMS Verzonden
v_code := NULL;
END IF;
v_aanduiding := 'Bewaar locatie omschrijving, Bezoekers_key: ' || p_bezoekers_key;
ykpn.set_kenmerk('BEZ', 1200, p_bezoekers_key, v_locatie_omschrijving, 0); -- Locatie omschrijving voor bezoekersnotificatie
-- Heb ik wel een parkeerplaats bij de bezoekaanvraag geboekt?
SELECT COUNT(*)
INTO v_count
FROM res_rsv_deel
WHERE bez_bezoekers_key = p_bezoekers_key;
IF v_count = 1
THEN
-- We doen geen procuratie meer op parkeerplaatsen. Dus we mogen direct de pincode invullen
set_bez_pincode (p_bezoekers_key);
END IF;
END IF;
END IF;
COMMIT;
EXCEPTION WHEN NO_DATA_FOUND
THEN
-- Verwijder de pincode
ykpn.set_kenmerk('BEZ', 1020, p_bezoekers_key, NULL, 0);
-- Bezoeker heeft geen parkeerplaats
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'OTHERS (error '||oracle_err_num||'/'||oracle_err_mes||')';
fac.writelog ('YKPN.update_bezoeker',
'E',
v_aanduiding || ': ' || v_errormsg,
'');
END;
PROCEDURE set_kenmerk(p_module IN VARCHAR2,
p_kenmerk_key IN NUMBER,
p_link_key IN NUMBER,
p_kenmerk_waarde IN VARCHAR2,
p_history IN NUMBER)
AS
v_count NUMBER;
v_niveau VARCHAR2 (1);
BEGIN
CASE p_module
WHEN 'PRS'
THEN
-- niveau van prs_kenmerk ophalen, omdat deze ook in prs_kenmerklink wordt
-- opgeslagen (da's dus redundant..?)
SELECT prs_kenmerk_niveau
INTO v_niveau
FROM prs_kenmerk
WHERE prs_kenmerk_key = p_kenmerk_key;
SELECT COUNT ( * )
INTO v_count
FROM prs_kenmerklink
WHERE prs_link_key = p_link_key
AND prs_kenmerk_key = p_kenmerk_key
AND prs_kenmerklink_verwijder IS NULL;
IF v_count = 1
THEN
IF p_kenmerk_waarde IS NULL
THEN
DELETE prs_kenmerklink
WHERE prs_link_key = p_link_key
AND prs_kenmerk_key = p_kenmerk_key
AND prs_kenmerklink_verwijder IS NULL;
ELSE
UPDATE prs_kenmerklink
SET prs_kenmerklink_waarde = p_kenmerk_waarde
WHERE prs_link_key = p_link_key
AND prs_kenmerk_key = p_kenmerk_key
AND prs_kenmerklink_verwijder IS NULL;
END IF;
ELSE
IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL
THEN
INSERT INTO prs_kenmerklink (prs_kenmerk_key,
prs_link_key,
prs_kenmerklink_niveau,
prs_kenmerklink_waarde)
VALUES (p_kenmerk_key,
p_link_key,
v_niveau,
p_kenmerk_waarde);
END IF;
END IF;
WHEN 'ALG'
THEN
-- niveau van prs_kenmerk ophalen, omdat deze ook in prs_kenmerklink wordt
-- opgeslagen (da's dus redundant..?)
SELECT alg_kenmerk_niveau
INTO v_niveau
FROM alg_kenmerk
WHERE alg_kenmerk_key = p_kenmerk_key;
SELECT COUNT ( * )
INTO v_count
FROM alg_onrgoedkenmerk
WHERE alg_onrgoed_key = p_link_key
AND alg_kenmerk_key = p_kenmerk_key
AND alg_onrgoedkenmerk_verwijder IS NULL;
IF v_count = 1
THEN
IF p_kenmerk_waarde IS NULL
THEN
DELETE alg_onrgoedkenmerk
WHERE alg_onrgoed_key = p_link_key
AND alg_kenmerk_key = p_kenmerk_key
AND alg_onrgoedkenmerk_verwijder IS NULL;
ELSE
UPDATE alg_onrgoedkenmerk
SET alg_onrgoedkenmerk_waarde = p_kenmerk_waarde
WHERE alg_onrgoed_key = p_link_key
AND alg_kenmerk_key = p_kenmerk_key
AND alg_onrgoedkenmerk_verwijder IS NULL;
END IF;
ELSE
IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL
THEN
INSERT INTO alg_onrgoedkenmerk (alg_kenmerk_key,
alg_onrgoed_key,
alg_onrgoed_niveau,
alg_onrgoedkenmerk_waarde)
VALUES (p_kenmerk_key,
p_link_key,
v_niveau,
p_kenmerk_waarde);
END IF;
END IF;
WHEN 'BEZ'
THEN
SELECT COUNT ( * )
INTO v_count
FROM bez_kenmerkwaarde
WHERE bez_bezoekers_key = p_link_key
AND bez_kenmerk_key = p_kenmerk_key
AND bez_kenmerkwaarde_verwijder IS NULL;
IF v_count = 1
THEN
IF p_kenmerk_waarde IS NULL
THEN
DELETE bez_kenmerkwaarde
WHERE bez_bezoekers_key = p_link_key
AND bez_kenmerk_key = p_kenmerk_key
AND bez_kenmerkwaarde_verwijder IS NULL;
ELSE
UPDATE bez_kenmerkwaarde
SET bez_kenmerkwaarde_waarde = p_kenmerk_waarde
WHERE bez_bezoekers_key = p_link_key
AND bez_kenmerk_key = p_kenmerk_key
AND bez_kenmerkwaarde_verwijder IS NULL;
END IF;
ELSE
IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL
THEN
INSERT INTO bez_kenmerkwaarde (bez_kenmerk_key,
bez_bezoekers_key,
bez_kenmerkwaarde_waarde)
VALUES (p_kenmerk_key,
p_link_key,
p_kenmerk_waarde);
END IF;
END IF;
WHEN 'MLD'
THEN
-- melding- of opdrachtkenmerk?
SELECT mld_kenmerk_niveau
INTO v_niveau
FROM mld_kenmerk
WHERE mld_kenmerk_key = p_kenmerk_key;
CASE v_niveau
WHEN 'O'
THEN
SELECT COUNT ( * )
INTO v_count
FROM mld_kenmerkopdr
WHERE mld_opdr_key = p_link_key
AND mld_kenmerk_key = p_kenmerk_key
AND mld_kenmerkopdr_verwijder IS NULL;
IF v_count = 1
THEN
IF p_kenmerk_waarde IS NULL
THEN
DELETE mld_kenmerkopdr
WHERE mld_opdr_key = p_link_key
AND mld_kenmerk_key = p_kenmerk_key
AND mld_kenmerkopdr_verwijder IS NULL;
ELSE
UPDATE mld_kenmerkopdr
SET mld_kenmerkopdr_waarde = p_kenmerk_waarde
WHERE mld_opdr_key = p_link_key
AND mld_kenmerk_key = p_kenmerk_key
AND mld_kenmerkopdr_verwijder IS NULL;
END IF;
ELSE
IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL
THEN
INSERT INTO mld_kenmerkopdr (mld_kenmerk_key,
mld_opdr_key,
mld_kenmerkopdr_waarde)
VALUES (p_kenmerk_key,
p_link_key,
p_kenmerk_waarde);
END IF;
END IF;
WHEN 'S'
THEN
SELECT COUNT ( * )
INTO v_count
FROM mld_kenmerkmelding
WHERE mld_melding_key = p_link_key
AND mld_kenmerk_key = p_kenmerk_key
AND mld_kenmerkmelding_verwijder IS NULL;
IF v_count = 1
THEN
IF p_kenmerk_waarde IS NULL
THEN
DELETE mld_kenmerkmelding
WHERE mld_melding_key = p_link_key
AND mld_kenmerk_key = p_kenmerk_key
AND mld_kenmerkmelding_verwijder IS NULL;
ELSE
UPDATE mld_kenmerkmelding
SET mld_kenmerkmelding_waarde = p_kenmerk_waarde
WHERE mld_melding_key = p_link_key
AND mld_kenmerk_key = p_kenmerk_key
AND mld_kenmerkmelding_verwijder IS NULL;
END IF;
ELSE
IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL
THEN
INSERT INTO mld_kenmerkmelding (mld_kenmerk_key,
mld_melding_key,
mld_kenmerkmelding_waarde)
VALUES (p_kenmerk_key,
p_link_key,
p_kenmerk_waarde);
END IF;
END IF;
END CASE;
WHEN 'FIN'
THEN
-- niveau van prs_kenmerk ophalen, omdat deze ook in prs_kenmerklink wordt
-- opgeslagen (da's dus redundant..?)
SELECT fin_kenmerk_type
INTO v_niveau
FROM fin_kenmerk
WHERE fin_kenmerk_key = p_kenmerk_key;
IF v_niveau = 'F'
THEN
SELECT COUNT ( * )
INTO v_count
FROM fin_kenmerkfactuur
WHERE fin_factuur_key = p_link_key
AND fin_kenmerk_key = p_kenmerk_key
AND fin_kenmerkfactuur_verwijder IS NULL;
IF v_count = 1
THEN
IF p_kenmerk_waarde IS NULL
THEN
DELETE fin_kenmerkfactuur
WHERE fin_factuur_key = p_link_key
AND fin_kenmerk_key = p_kenmerk_key
AND fin_kenmerkfactuur_verwijder IS NULL;
ELSE
UPDATE fin_kenmerkfactuur
SET fin_kenmerkfactuur_waarde = p_kenmerk_waarde
WHERE fin_factuur_key = p_link_key
AND fin_kenmerk_key = p_kenmerk_key
AND fin_kenmerkfactuur_verwijder IS NULL;
END IF;
ELSE
IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL
THEN
INSERT INTO fin_kenmerkfactuur (fin_kenmerk_key,
fin_factuur_key,
fin_kenmerkfactuur_waarde)
VALUES (p_kenmerk_key,
p_link_key,
p_kenmerk_waarde);
END IF;
END IF;
ELSE
-- Kenmerk bij factuurregel
SELECT COUNT ( * )
INTO v_count
FROM fin_kenmerkfactregel
WHERE fin_factuurregel_key = p_link_key
AND fin_kenmerk_key = p_kenmerk_key
AND fin_kenmerkfactregel_verwijder IS NULL;
IF v_count = 1
THEN
IF p_kenmerk_waarde IS NULL
THEN
DELETE fin_kenmerkfactregel
WHERE fin_factuurregel_key = p_link_key
AND fin_kenmerk_key = p_kenmerk_key
AND fin_kenmerkfactregel_verwijder IS NULL;
ELSE
UPDATE fin_kenmerkfactregel
SET fin_kenmerkfactregel_waarde = p_kenmerk_waarde
WHERE fin_factuurregel_key = p_link_key
AND fin_kenmerk_key = p_kenmerk_key
AND fin_kenmerkfactregel_verwijder IS NULL;
END IF;
ELSE
IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL
THEN
INSERT INTO fin_kenmerkfactregel (fin_kenmerk_key,
fin_factuurregel_key,
fin_kenmerkfactregel_waarde)
VALUES (p_kenmerk_key,
p_link_key,
p_kenmerk_waarde);
END IF;
END IF;
END IF;
WHEN 'RES'
THEN
-- res_rsv_ruimte kenmerk
SELECT COUNT ( * )
INTO v_count
FROM res_kenmerkwaarde
WHERE res_rsv_ruimte_key = p_link_key
AND res_kenmerk_key = p_kenmerk_key
AND res_kenmerkwaarde_verwijder IS NULL;
IF v_count = 1
THEN
IF p_kenmerk_waarde IS NULL
THEN
DELETE res_kenmerkwaarde
WHERE res_rsv_ruimte_key = p_link_key
AND res_kenmerk_key = p_kenmerk_key
AND res_kenmerkwaarde_verwijder IS NULL;
ELSE
UPDATE res_kenmerkwaarde
SET res_kenmerkreservering_waarde = p_kenmerk_waarde
WHERE res_rsv_ruimte_key = p_link_key
AND res_kenmerk_key = p_kenmerk_key
AND res_kenmerkwaarde_verwijder IS NULL;
END IF;
ELSE
IF p_kenmerk_key IS NOT NULL AND p_kenmerk_waarde IS NOT NULL
THEN
INSERT INTO res_kenmerkwaarde (res_kenmerk_key,
res_rsv_ruimte_key,
res_kenmerkreservering_waarde)
VALUES (p_kenmerk_key,
p_link_key,
p_kenmerk_waarde);
END IF;
END IF;
END CASE;
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;
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_deelsrtcontrole_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 ykpn.get_kenmerkwaarde (v_kenmerk_type,
v_kenmerkdomein_key,
v_kenmerk_waarde);
END;
PROCEDURE mld_after_insert (p_melding_key IN NUMBER)
AS
CURSOR c
IS
SELECT mk.mld_kenmerk_key, ogk.alg_onrgoedkenmerk_waarde
FROM mld_melding m,
alg_v_onroerendgoed og,
alg_onrgoedkenmerk ogk,
alg_kenmerk ak,
mld_kenmerk mk,
mld_srtkenmerk msk
WHERE mld_melding_key = p_melding_key
AND m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys
AND mk.mld_srtkenmerk_key = msk.mld_srtkenmerk_key
AND mk.mld_stdmelding_key = m.mld_stdmelding_key
AND ak.alg_kenmerk_omschrijving = msk.mld_srtkenmerk_omschrijving
AND mk.mld_kenmerk_groep = 1
AND ak.alg_kenmerk_kenmerktype <> 'L'
AND ak.alg_kenmerk_key = ogk.alg_kenmerk_key
AND ogk.alg_onrgoed_key = og.alg_gebouw_key;
CURSOR c_pk
IS
SELECT prs_kenmerk_key, prs_kenmerk_hint
FROM prs_kenmerk pk
WHERE prs_kenmerk_kenmerktype = 'V'
AND (LENGTH (prs_kenmerk_hint) = 5 OR prs_kenmerk_hint = 'TP')
AND prs_kenmerk_verwijder IS NULL
ORDER BY prs_kenmerk_omschrijving;
v_count NUMBER;
v_stdmelding_key NUMBER;
v_stdmeldinggroep_key NUMBER;
v_melding_status NUMBER;
v_perslid_key NUMBER;
v_oms VARCHAR2 (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_errormsg VARCHAR2 (200);
v_errorhint VARCHAR2 (200);
BEGIN
SELECT m.mld_stdmelding_key, std.mld_stdmeldinggroep_key
INTO v_stdmelding_key, v_stdmeldinggroep_key
FROM mld_melding m, mld_stdmelding std
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key(+)
AND m.mld_melding_key = p_melding_key;
IF v_stdmelding_key = 481 -- Parkeerplaattelling
THEN
v_errorhint := 'Fout bij invoer parkeerplaatstelling';
-- Zijn er al kenmerken gevuld door de after_insert?
-- Deze kenmerken zitten allemaal in groep 1 en worden door deze procedure bevroren vanuit het gebouw
SELECT count(*)
INTO v_count
FROM mld_melding m, mld_kenmerkmelding km, mld_kenmerk k
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
AND km.mld_melding_key = m.mld_melding_key
AND k.mld_stdmelding_key = m.mld_stdmelding_key
AND m.mld_melding_key = p_melding_key
AND k.mld_kenmerk_groep = 1;
IF v_count = 0
THEN
FOR rec IN c LOOP
v_errorhint := 'Fout bij invoer parkeerplaatstelling (loop)';
YKPN.set_kenmerk('MLD', rec.mld_kenmerk_key, p_melding_key, rec.alg_onrgoedkenmerk_waarde, 0);
END LOOP;
END IF;
END IF;
IF v_stdmelding_key = 2361 -- Pandbrief
THEN
v_errorhint := 'Fout bij invoer pandbriefvoorkeur';
SELECT prs_perslid_key
INTO v_perslid_key
FROM mld_melding m
WHERE m.mld_melding_key = p_melding_key;
FOR rec IN c_pk LOOP
v_errorhint := 'Fout bij invoer pandbriefvoorkeur (loop)';
SELECT COUNT(*)
INTO v_count
FROM mld_kenmerkmelding km, mld_kenmerk k, mld_srtkenmerk sk
WHERE rec.prs_kenmerk_hint = sk.mld_srtkenmerk_code
AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND km.mld_melding_key = p_melding_key;
-- We gaan geen kenmerken aanmaken voor alle locaties die niet geselecteerd zijn.
IF v_count <> 1
THEN
v_count := NULL;
END IF;
ykpn.set_kenmerk('PRS', rec.prs_kenmerk_key, v_perslid_key, v_count, 0);
END LOOP;
END IF;
IF v_stdmelding_key IN (2801, 3141) -- Office Depot buiten catalogus / navraag bestelling
THEN
IF v_stdmelding_key = 2801 THEN v_oms := 'Bestelling buiten catalogus'; END IF;
IF v_stdmelding_key = 3141 THEN v_oms := 'Navraag bestelling'; END IF;
v_errorhint := v_oms;
SELECT mld_melding_status
INTO v_melding_status
FROM mld_melding m
WHERE m.mld_melding_key = p_melding_key;
IF v_melding_status = 2 -- Nieuw
THEN
FAC.trackaction ('CUST12',
p_melding_key,
3,
NULL,
'#' || v_oms || ' naar Viking verzonden');
INSERT INTO fac_notificatie (fac_srtnotificatie_key,
fac_notificatie_status,
fac_notificatie_receiver_email,
prs_perslid_key_receiver,
fac_notificatie_oms,
fac_notificatie_refkey,
fac_notificatie_extrakey,
fac_notificatie_prioriteit)
VALUES (441, -- CUST12
2, -- mail
'hans.vandijk@vikingoffice.eu', -- email
NULL,
v_oms || ' B' || p_melding_key,
p_melding_key,
NULL,
2);
v_errormsg := 'Fout bij statuswijziging naar geaccepteerd door Facilitor';
mld.setmeldingstatus (p_melding_key, 4, 3);
v_errormsg := 'Fout bij statuswijziging naar afgemeld door Facilitor';
mld.setmeldingstatus (p_melding_key, 5, 3);
END IF;
END IF;
IF v_stdmeldinggroep_key = 21 -- prioriteit
THEN
FLX.setflex ('MLD',
9021, -- kenmerk_prio
p_melding_key,
'SLA');
ELSE
FLX.deleteflex ('MLD',
9021, -- kenmerk_prio
p_melding_key,
NULL, -- niveau
NULL);
END IF;
EXCEPTION WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog ('YKPN.mld_after_insert', 'E', v_errormsg, v_errorhint);
END;
-- Vul het mandaatbedrag in een readonly kenmerk zodat de leverancier
-- deze niet kan aanpassen.
PROCEDURE opdracht_after_save (p_opdr_key IN NUMBER)
AS
v_mandaat VARCHAR2(100);
v_kenmerk_key NUMBER;
BEGIN
SELECT mld_kenmerkopdr_waarde, mld_kenmerk_key
INTO v_mandaat, v_kenmerk_key
FROM mld_kenmerkopdr
WHERE mld_opdr_key = p_opdr_key
AND mld_kenmerk_key IN (5021, 5041);
-- Mandaatopdr. met contract
IF v_kenmerk_key = 5021
THEN
MLD.upsertopdrachtkenmerk (6201, p_opdr_key, v_mandaat);
END IF;
-- Mandaatopdr. zonder contract
IF v_kenmerk_key = 5041
THEN
MLD.upsertopdrachtkenmerk (6241, p_opdr_key, v_mandaat);
END IF;
EXCEPTION WHEN NO_DATA_FOUND
THEN
-- Deze opdracht bevatte geen mandaat bedrag als kenmerk
NULL;
END;
-- Controleer of er eerder bestellingen van artikelen uit catalogus werkplek zijn gedaan en of er uit groep brureaus niet meerder artikelen zijn besteld
FUNCTION bes_checkrfo (p_user_key IN NUMBER,
p_urole in VARCHAR2,
p_srtdeel_keys in VARCHAR2)
RETURN VARCHAR2
AS
v_catalog CONSTANT NUMBER:= 2981; -- key voor catalogus Thuiswerkplek acc 2981 TEST 3061
v_groep CONSTANT NUMBER:= 287; -- key voor artikelgoep bureaus acc 287 Test 321
CURSOR besteld
IS
SELECT item.bes_srtdeel_key key, srt.bes_srtgroep_key groep, count(item.bes_bestelling_item_aantal) aantal
FROM bes_bestelling bes,
bes_bestelling_item item,
bes_srtdeel srt,
bes_srtgroep grp
WHERE bes.prs_perslid_key = p_user_key -- alle bestelingen voor deze user
AND item.bes_bestelling_key=bes.bes_bestelling_key -- alle items bij de vreschllende bstelligen
AND srt.bes_srtdeel_key = item.bes_srtdeel_key
AND grp.bes_srtgroep_key = srt.bes_srtgroep_key
AND grp.ins_discipline_key=v_catalog
GROUP BY (item.bes_srtdeel_key, srt.bes_srtgroep_key);
v_result VARCHAR2(300);
v_count NUMBER;
v_srtdeel_key NUMBER;
v_bureauCount NUMBER;
v_amount NUMBER;
v_counter NUMBER;
v_currentgroep NUMBER:=0;
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_errormsg VARCHAR2 (200);
BEGIN
v_result :='OK';
IF UPPER(p_urole) = 'FE'
THEN
v_bureauCount:=0;
v_counter:=0;
FOR rec IN besteld LOOP
IF rec.groep = v_groep AND rec.aantal>0
THEN
v_bureauCount:=v_bureauCount+1;
END IF;
v_counter:=1;
LOOP
FAC.imp_getField_nr(p_srtdeel_keys,',',v_counter,v_srtdeel_key);
IF rec.key = v_srtdeel_key
THEN
v_result:='Artikel is al eerder besteld';
END IF;
v_counter:=v_counter+1;
EXIT WHEN v_srtdeel_key IS NULL OR v_counter>20;
END LOOP;
END LOOP;
-- COntrole of er nu meerdere bureau besteld worden
SELECT count(*)
INTO v_count
FROM bes_srtdeel srt
WHERE srt.bes_srtgroep_key = v_groep
AND srt.bes_srtdeel_key IN (
SELECT regexp_substr(p_srtdeel_keys,'[^,]+', 1, level)
FROM DUAL
CONNECT BY regexp_substr(p_srtdeel_keys, '[^,]+', 1, level) IS NOT NULL);
IF (v_count+v_bureauCount>1)
THEN
v_result:='Er is al een artikel uit de groep bureau besteld.';
END IF;
END IF;
RETURN v_result;
END;
FUNCTION res_presave (p_user_key IN NUMBER,
p_rsv_ruimte_key IN NUMBER,
p_activiteit_key IN NUMBER,
p_res_deel_key IN NUMBER,
p_datum_van IN DATE,
p_datum_tot IN DATE,
p_volgnr IN NUMBER)
RETURN VARCHAR2
AS
v_result VARCHAR2 (300);
v_date DATE;
v_count NUMBER;
v_discipline_key NUMBER;
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_errormsg VARCHAR2 (200);
v_errorhint VARCHAR2 (200);
BEGIN
v_result := 'OK';
v_errorhint := 'Controleer activiteit: ' || p_activiteit_key;
-- Flexplek reservereing beperking er af gehaald, op 24-6-2021
-- Laten staan mocht het nog weer aangeschakeld moeten worden
--IF p_activiteit_key = 110 -- Flexplek
--THEN
-- v_errorhint := 'Zit ik in de Corona werkplekken groep';
-- SELECT COUNT (*)
-- INTO v_count
-- FROM fac_gebruikersgroep
-- WHERE fac_groep_key = 2201 -- 2201 Corona werkplekken
-- AND prs_perslid_key = p_user_key;
-- BEGIN
-- v_errorhint := 'Zoek de catalogus res_deel_key: ' || p_res_deel_key;
-- SELECT res_discipline_key
-- INTO v_discipline_key
-- FROM res_deel
-- WHERE res_deel_key = p_res_deel_key;
-- EXCEPTION WHEN NO_DATA_FOUND
-- THEN v_discipline_key := 2421; END;
-- Als ik in de groep 2201 Corona werkplekken zit dan mag ik altijd boeken
-- Beperking op aantal geld alleen voor de catalogus Flexplekken KPN
-- En de beperking geldt niet op vrijdag
-- IF v_count = 0 AND v_discipline_key = 2421 AND TO_CHAR(p_datum_tot, 'D') <> 6
-- THEN
-- v_errorhint := 'Kijk of ik al een reservering heb';
-- SELECT count(*)
-- INTO v_count
-- FROM res_rsv_ruimte rrr
-- WHERE rrr.res_rsv_ruimte_verwijder IS NULL
-- AND rrr.res_activiteit_key = 110 -- 110 Flexplek
-- AND rrr.res_rsv_ruimte_host_key = p_user_key
-- AND rrr.res_rsv_ruimte_key <> p_rsv_ruimte_key
-- AND TRUNC(res_rsv_ruimte_van, 'MM') = TRUNC (p_datum_tot, 'MM')
-- AND TO_CHAR(res_rsv_ruimte_van, 'D') IN (2,3,4,5);
-- IF v_count > 3
-- THEN
-- v_result := 'Beste collega,' || CHR(10) ||
-- 'We hebben deze maand al vier reserveringen van je gevonden. Je maximaal aantal te reserveren werkplekken per maand is dus bereikt.' || CHR(10) ||
-- 'Hartelijke groet, KPN Facilities';
-- END IF;
-- END IF;
-- END IF;
IF p_activiteit_key = 150 -- Team area's
THEN
-- Team area
IF v_discipline_key = 2581 -- Team area (ruimte)
THEN
v_errorhint := 'Kijk of ik al een reservering heb';
SELECT count(*)
INTO v_count
FROM res_rsv_ruimte rrr
WHERE rrr.res_rsv_ruimte_verwijder IS NULL
AND rrr.res_activiteit_key = 150 -- 150 Team area
AND rrr.res_rsv_ruimte_host_key = p_user_key
AND rrr.res_rsv_ruimte_key <> p_rsv_ruimte_key
-- AND TRUNC(res_rsv_ruimte_van) BETWEEN TRUNC (p_datum_tot) -14 AND TRUNC (p_datum_tot) + 14;
AND TRUNC(res_rsv_ruimte_van, 'MM') = TRUNC(p_datum_tot, 'MM');
IF v_count > 1
THEN
v_result := 'Beste collega,' || CHR(10) ||
'Team areas mogen maar twee keer per maand geboekt worden.' || CHR(10) ||
'Hartelijke groet, KPN Facilities';
END IF;
END IF;
END IF;
RETURN v_result;
EXCEPTION WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
RETURN v_result;
END;
PROCEDURE res_after_insert (p_rsv_ruimte_key IN NUMBER)
AS
CURSOR c IS
SELECT rrr.res_rsv_ruimte_key
FROM res_rsv_ruimte rrrn, res_rsv_ruimte rrr
WHERE rrrn.res_rsv_ruimte_host_key = rrr.res_rsv_ruimte_host_key
AND rrrn.res_activiteit_key = rrr.res_activiteit_key
AND rrrn.res_activiteit_key = 110
AND rrrn.res_rsv_ruimte_van = rrr.res_rsv_ruimte_van
AND rrrn.res_rsv_ruimte_tot = rrr.res_rsv_ruimte_tot
AND rrrn.res_rsv_ruimte_key = p_rsv_ruimte_key
AND rrrn.res_rsv_ruimte_key <> rrr.res_rsv_ruimte_key
AND rrr.res_rsv_ruimte_verwijder IS NULL;
v_activiteit_key NUMBER(10);
v_host_key NUMBER(10);
BEGIN
-- Functionaliteit wordt voorlopig niet gebruikt en is in de core opgelost.
RETURN;
FOR rec in c LOOP
UPDATE res_rsv_ruimte SET res_rsv_ruimte_verwijder = SYSDATE
WHERE res_rsv_ruimte_key = rec.res_rsv_ruimte_key;
END LOOP;
COMMIT;
END;
PROCEDURE set_nedap_status(p_bezoekers_key IN NUMBER,
p_type IN VARCHAR2,
p_nedap_id IN VARCHAR2)
AS
v_kenmerkwaarde_key NUMBER;
BEGIN
IF p_type = 'PINCODE'
THEN
ykpn.set_kenmerk('BEZ', 1060, p_bezoekers_key, p_nedap_id, 0); -- Nedap ID PINCODE
ELSIF p_type = 'KENTEKEN'
THEN
ykpn.set_kenmerk('BEZ', 1160, p_bezoekers_key, p_nedap_id, 0); -- Nedap ID KENTEKEN
END IF;
COMMIT;
END;
PROCEDURE fin_set_approver (p_factuur_key IN NUMBER)
AS
v_count NUMBER;
v_perslid_key_beh mld_opdr.prs_perslid_key%TYPE;
v_perslid_key_goedkeur fin_factuur.prs_perslid_key_goedkeur%TYPE;
v_factuur_statuses_key fin_factuur.fin_factuur_statuses_key%TYPE;
v_factuur_totaal fin_factuur.fin_factuur_totaal%TYPE;
v_perslid_naam_goedkeur VARCHAR2 (100);
v_opdr_key mld_opdr.mld_opdr_key%TYPE;
v_contract_key cnt_contract.cnt_contract_key%TYPE;
v_bestelopdr_key bes_bestelopdr.bes_bestelopdr_key%TYPE;
v_eerste_fiatteur prs_perslid.prs_perslid_key%TYPE;
v_tweede_fiatteur prs_perslid.prs_perslid_key%TYPE;
v_derde_fiatteur prs_perslid.prs_perslid_key%TYPE;
v_count_cnt NUMBER;
v_count_intern NUMBER;
v_errormsg VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
BEGIN
-- Nieuwe situatie na 1 mei
v_eerste_fiatteur := 127574; -- Jesse Arts/Ralph Vermin >15K <=50K
v_tweede_fiatteur := 135671; -- Rob Grevenstette >50K <=150K (Oude key 93969)
v_derde_fiatteur := 92323; -- Walter van der Wilt >150K
v_errorhint := 'Bepaal type factuur';
-- Laten we eens eerst kijken of we het over een contract of een opdracht hebben
SELECT mld_opdr_key, cnt_contract_key, bes_bestelopdr_key, fin_factuur_statuses_key, fin_factuur_totaal
INTO v_opdr_key, v_contract_key, v_bestelopdr_key, v_factuur_statuses_key, v_factuur_totaal
FROM fin_factuur
WHERE fin_factuur_key = p_factuur_key;
-- We kennen op dit moment nog geen functionaliteit voor bestelopdrachten
IF v_opdr_key IS NOT NULL OR v_contract_key IS NOT NULL
THEN
IF v_factuur_statuses_key = 2 -- ingevoerd
THEN
-- We gaan eerst twee zaken uitoeken
-- betreft het een opdracht met een contract type vast, var of suppletie en geen vinkje uitsluiten voor rev billing
-- Dan Annemiek als goedkeurder
SELECT COUNT(*)
INTO v_count_cnt
FROM cnt_contract c, mld_opdr o, mld_kenmerkopdr mo,mld_kenmerk mk
WHERE o.mld_opdr_key=v_opdr_key
AND c.cnt_contract_key=o.cnt_contract_key
AND c.ins_discipline_key IN (421,461,2221)
AND c.cnt_contract_key not in (SELECT ckw.cnt_contract_key
FROM cnt_kenmerkcontract ckw, cnt_kenmerk ck , cnt_srtkenmerk csk
WHERE ckw.cnt_contract_key = c.cnt_contract_key
AND ckw.cnt_kenmerk_key = ck.cnt_kenmerk_key
AND csk.CNT_SRTKENMERK_KEY = ck.CNT_SRTKENMERK_KEY
AND csk.cnt_srtkenmerk_omschrijving='Uitsluiten voor reverse billing')
AND mo.mld_opdr_key = o.mld_opdr_key
AND mk.mld_kenmerk_key = mo.mld_kenmerk_key
AND mk.mld_kenmerk_omschrijving='Gereed voor facturatie'
AND mo.mld_kenmerkopdr_waarde='1';
-- Betreft het een opdarcht van Uitvoeren Uren intern (381) dan ook aan Annemiek toewijzen
SELECT COUNT(*)
INTO v_count_intern
FROM mld_opdr o
WHERE mld_opdr_key=v_opdr_key
AND o.mld_typeopdr_key = 381;
IF v_count_cnt>0 OR v_count_intern>0 THEN
-- het gaat dus om opdrachet die voor de persoon vermeld in eigen tabel VFS GOEDK. INTER staat
-- Fall back is naar Ralp Vermin
BEGIN
SELECT p.prs_perslid_key,
p.prs_perslid_naam_friendly
INTO v_perslid_key_beh,
v_perslid_naam_goedkeur
FROM fac_usrdata fud, fac_usrtab fut, prs_v_perslid_fullnames p
WHERE UPPER(fut.fac_usrtab_naam) = 'VFS GOEDK. INTER'
AND fut.fac_usrtab_key = fud.fac_usrtab_key
AND fut.fac_usrtab_verwijder IS NULL
AND fac.safe_to_number (fud.fac_usrdata_code) = p.prs_perslid_key;
EXCEPTION
WHEN NO_DATA_FOUND THEN
v_perslid_key_beh:=103062; -- Ralph Vermin
v_perslid_key_goedkeur:=NULL;
v_perslid_naam_goedkeur:='Ralph Vermin';
END;
ELSE
-- controleer of de behandelaar van de opdracht rechten heeft om de factuur
-- te mogen goedkeuren
v_errorhint := 'Controleer rechten opdracht';
SELECT o.prs_perslid_key,
prs_perslid_key_goedkeur,
pf.prs_perslid_naam_friendly
INTO v_perslid_key_beh,
v_perslid_key_goedkeur,
v_perslid_naam_goedkeur
FROM mld_opdr o, fin_factuur f, prs_v_perslid_fullnames_all pf
WHERE o.mld_opdr_key = f.mld_opdr_key
AND f.fin_factuur_key = p_factuur_key
AND o.prs_perslid_key = pf.prs_perslid_key;
END IF;
-- kijk of de behandelaar FINGOE rechten heeft
v_errorhint := 'Kijk of de behandelaar FINGOE rechten heeft';
SELECT COUNT (*)
INTO v_count
FROM fac_v_webgebruiker wg, fac_functie f
WHERE wg.fac_functie_key = f.fac_functie_key
AND f.fac_functie_code = 'WEB_FINGOE'
AND wg.prs_perslid_key = v_perslid_key_beh;
-- Behandelaar heeft rechten en goedkeurder was nog niet gezet.
IF v_count > 0 AND v_perslid_key_goedkeur IS NULL
THEN
-- Als status van de factuur nog ingevoerd is dan zetten we de status naar Ter goedkeuring (5)
v_errorhint := 'Zet de status naar Ter Goedkeuring';
fac.trackaction (
'FINFOK',
p_factuur_key,
3,
NULL,
'Expliciete goedkeuring door aangewezen goedkeurder: '
|| v_perslid_naam_goedkeur);
UPDATE fin_factuur
SET fin_factuur_statuses_key = 5
WHERE fin_factuur_key = p_factuur_key;
UPDATE fin_factuur
SET prs_perslid_key_goedkeur = v_perslid_key_beh
WHERE fin_factuur_key = p_factuur_key;
END IF;
ELSIF v_factuur_statuses_key = 5 -- ter goedkeuring
THEN
NULL;
ELSIF v_factuur_statuses_key = 6 -- akkoord
THEN
v_perslid_key_goedkeur := NULL;
IF v_factuur_totaal <= 15000
THEN
-- geen goedkeuring nodig
NULL;
ELSE
-- Heeft de eerste fiatteur de factuur al goedgekeurd?
v_errorhint := 'Heeft de eerste fiatteur de factuur al goedgekeurd?';
SELECT COUNT (*)
INTO v_count
FROM fac_tracking t, fac_srtnotificatie sn
WHERE t.fac_srtnotificatie_key =
sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'FINGOE'
AND t.prs_perslid_key = v_eerste_fiatteur
AND t.fac_tracking_refkey = p_factuur_key;
IF v_count = 0
THEN
-- bedrag is groter dan 15000 en Ralph heeft nog niet goedgekeurd
v_perslid_key_goedkeur := v_eerste_fiatteur;
ELSIF v_factuur_totaal > 50000 -- AND v_factuur_totaal <= 150000
THEN
-- De eerste fiatteur heeft goedgekeurd maar het bedrag is hoger dan 50000, dus de tweede fiatteur moet ook goedkeuren
-- Heeft de tweede fiatteur de factuur al goedgekeurd?
v_errorhint := 'Bedrag is hoger dan 50000';
SELECT COUNT (*)
INTO v_count
FROM fac_tracking t, fac_srtnotificatie sn
WHERE t.fac_srtnotificatie_key =
sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'FINGOE'
AND t.prs_perslid_key = v_tweede_fiatteur
AND t.fac_tracking_refkey = p_factuur_key;
IF v_count = 0
THEN
-- Rob heeft nog niet goedgekeurd
v_perslid_key_goedkeur := v_tweede_fiatteur;
ELSIF v_factuur_totaal > 150000
THEN
-- De eerste en tweede fiatteur heeft goedgekeurd maar het bedrag is hoger dan 150000, dus de derde fiatteur moet ook goedkeuren
-- Heeft de derde fiatteur de factuur al goedgekeurd?
v_errorhint := 'Bedrag is hoger dan 50000';
SELECT COUNT (*)
INTO v_count
FROM fac_tracking t, fac_srtnotificatie sn
WHERE t.fac_srtnotificatie_key =
sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'FINGOE'
AND t.prs_perslid_key = v_derde_fiatteur
AND t.fac_tracking_refkey = p_factuur_key;
IF v_count = 0
THEN
-- Walter heeft nog niet goedgekeurd
v_perslid_key_goedkeur := v_derde_fiatteur;
END IF;
END IF;
END IF;
END IF;
v_errorhint := 'Set status en goedkeurder';
IF v_perslid_key_goedkeur IS NOT NULL
THEN
UPDATE fin_factuur
SET fin_factuur_statuses_key = 5
WHERE fin_factuur_key = p_factuur_key;
UPDATE fin_factuur
SET prs_perslid_key_goedkeur = v_perslid_key_goedkeur
WHERE fin_factuur_key = p_factuur_key;
-- We sturen een notificatie naar de persoon die de factuur moet goedkeuren.
BEGIN
fac.putnotificationsrtprio(NULL, v_perslid_key_goedkeur, 'FIN2GO', p_factuur_key,
'Uw goedkeuring is vereist voor factuur '|| p_factuur_key,
NULL, NULL, NULL, NULL, 2, NULL);
END;
END IF;
END IF;
END IF;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog ('YKPN.fin_set_approver', 'E', v_errormsg || ' (' || p_factuur_key || ')' , v_errorhint);
END;
PROCEDURE add_xml_row (
p_bestand IN VARCHAR2,
p_regel IN VARCHAR2)
AS
v_index NUMBER;
BEGIN
SELECT COALESCE( MAX(fac_rapport_volgnr), 0) + 1
INTO v_index
FROM fac_rapport
WHERE fac_rapport_node = p_bestand;
INSERT INTO fac_rapport (
fac_rapport_node,
fac_rapport_volgnr,
fac_rapport_regel)
VALUES (p_bestand,
v_index,
p_regel);
END;
PROCEDURE add_xml_element (
p_bestand IN VARCHAR2,
p_tag IN VARCHAR2,
p_value IN VARCHAR2)
AS
BEGIN
ykpn.add_xml_row(p_bestand,
'<' || p_tag || '>'
|| xml.char_to_html(p_value)
|| '</' || p_tag || '>');
END;
PROCEDURE refreshscore(pUserKey IN NUMBER)
AS
BEGIN
-- Waarden van de huidige periode(s) verwijderen.
-- TODO: tricky met KPI's op basis van storingsmeldingen, klachten etc; daar kan voor een
-- periode maar zo een extra melding afgemeld worden, waardoor de score opnieuw berekend wordt
DELETE FROM kpi_score;
-- Opnieuw genereren van KPI scores
INSERT INTO kpi_score (
kpi_definitie_key,
kpi_score_datum,
alg_locatie_key,
kpi_score_xmlnode,
kpi_score_refkey,
kpi_score_score,
kpi_score_norm_score,
kpi_score_drempels)
SELECT * FROM ykpn_v_kpi_all;
COMMIT;
END;
FUNCTION get_flex_value (pmodule IN VARCHAR2,
p_kenmerk_key IN NUMBER,
p_ref_key IN NUMBER,
p_kenmerkdomein_key IN NUMBER,
p_niveau IN VARCHAR2 DEFAULT NULL)
RETURN VARCHAR2
AS
v_value VARCHAR2 (4000);
v_kenmerkdomein_key NUMBER (10);
BEGIN
v_value :=
flx.getflex (pmodule,
p_kenmerk_key,
p_ref_key,
p_niveau);
IF p_kenmerkdomein_key IS NOT NULL
THEN
v_value := flx.getdomeinwaarde (p_kenmerkdomein_key, v_value);
END IF;
RETURN v_value;
END;
-- Procedure om bij het koppelen van een afdeling aan een ruimte via Graphics voor iedere
-- combinatie van afdeling en gebouw een contract aan te maken. Hier kunnen dan specifieke zaken
-- vastgelegd worden. Het opruimten van deze contracten wordt gedaan in de daily task.
PROCEDURE update_ruimte_contract (
p_ruimte_key IN NUMBER,
p_afdeling_key IN NUMBER)
AS
v_contract_key NUMBER;
v_gebouw_key NUMBER;
v_gebouw_code ALG_GEBOUW.ALG_GEBOUW_CODE%TYPE;
v_afdeling_oms PRS_AFDELING.PRS_AFDELING_OMSCHRIJVING%TYPE;
BEGIN
IF p_afdeling_key > 0
THEN
SELECT alg_gebouw_key, alg_gebouw_upper
INTO v_gebouw_key, v_gebouw_code
FROM alg_v_ruimte_gegevens
WHERE alg_ruimte_key = p_ruimte_key;
SELECT prs_afdeling_omschrijving
INTO v_afdeling_oms
FROM prs_afdeling
WHERE prs_afdeling_key = p_afdeling_key;
BEGIN
SELECT DISTINCT (c.cnt_contract_key)
INTO v_contract_key
FROM cnt_contract c,
cnt_contract_plaats cp,
alg_v_ruimte_gegevens rg
WHERE c.cnt_contract_key = cp.cnt_contract_key
AND rg.alg_gebouw_key = cp.cnt_alg_plaats_key
AND rg.alg_ruimte_key = p_ruimte_key
AND cp.cnt_alg_plaats_code = 'G'
AND c.prs_afdeling_key_eig = p_afdeling_key
AND c.ins_discipline_key = 2201
AND c.cnt_contract_status = 0
AND c.cnt_contract_verwijder IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
INSERT INTO cnt_contract (ins_discipline_key,
prs_perslid_key_beh,
prs_afdeling_key_eig,
cnt_prs_bedrijf_key,
cnt_contract_status,
cnt_contract_looptijd_van,
cnt_contract_looptijd_tot,
cnt_contract_opzegtermijn,
cnt_contract_rappeltermijn,
cnt_contract_omschrijving)
VALUES (2201,
89881, -- Contractbeheer.
p_afdeling_key,
21,
0,
SYSDATE,
TO_DATE ('20500101', 'yyyymmdd'),
1,
1,
SUBSTR(v_gebouw_code || ' - ' || v_afdeling_oms, 1, 50))
RETURNING cnt_contract_key
INTO v_contract_key;
INSERT INTO cnt_contract_plaats (cnt_contract_key,
cnt_alg_plaats_code,
cnt_alg_plaats_key)
VALUES (v_contract_key, 'G', v_gebouw_key);
END;
END IF;
END;
-- Verwijder ruimte afdeling contracten die contactgegevens weergeven van de huuurder (afdeling)
-- in dat gebouw.
PROCEDURE cleanup_room_dep_contracts
AS
BEGIN
UPDATE cnt_contract c
SET cnt_contract_verwijder = SYSDATE
WHERE ins_discipline_key = 2201 -- Ruimte bezetting contracten
AND NOT EXISTS
(SELECT cp.cnt_contract_plaats_key
FROM cnt_contract_plaats cp,
alg_v_ruimte_gegevens rg,
prs_ruimteafdeling ra
WHERE cp.cnt_contract_key = c.cnt_contract_key
AND cp.cnt_alg_plaats_key = rg.alg_gebouw_key
AND rg.alg_ruimte_key = ra.alg_ruimte_key
AND ra.prs_afdeling_key = c.prs_afdeling_key_eig
AND ra.prs_ruimteafdeling_verwijder IS NULL);
END;
-- Ontvangen mailbericht voor goedkeuring werkplek inrichting bestellingen.
-- De mail wordt verstuurd als de medewerker de voorlichting gevolgd heeft.
-- Daarna mag deze een werkplek reserveren.
PROCEDURE mail_werkplekinrichting (pfrom IN VARCHAR2,
pto IN VARCHAR2,
psubject IN VARCHAR2,
pbody IN VARCHAR2,
psessionid IN VARCHAR2,
pemailkey IN NUMBER)
AS
v_errormsg VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_ruisnaam VARCHAR2 (200);
v_email VARCHAR2 (200);
v_voornaam VARCHAR2 (200);
v_achternaam VARCHAR2 (200);
v_besteller_key NUMBER;
BEGIN
DELETE imp_log WHERE imp_log_applicatie = 'MAIL_WERKPLEKINRICHTING' AND imp_log_datum < SYSDATE - 14;
v_errorhint := 'Opzoeken velden in de mail';
v_ruisnaam := SUBSTR(pbody, INSTR(pbody, 'Ruisnaam:')+ 9, INSTR(pbody, CHR (10), INSTR(pbody, 'Ruisnaam:'))-(INSTR(pbody, 'Ruisnaam:')+ 9));
v_email := SUBSTR(pbody, INSTR(pbody, 'Email:')+ 6, INSTR(pbody, CHR (10), INSTR(pbody, 'Email:'))-(INSTR(pbody, 'Email:')+ 6));
v_voornaam := SUBSTR(pbody, INSTR(pbody, 'Voornaam:')+ 9, INSTR(pbody, CHR (10), INSTR(pbody, 'Voornaam:'))-(INSTR(pbody, 'Voornaam:')+ 9));
v_achternaam := SUBSTR(pbody, INSTR(pbody, 'Achternaam:')+ 11, INSTR(pbody, CHR (10), INSTR(pbody, 'Achternaam:'))-(INSTR(pbody, 'Achternaam:')+ 11));
fac.writelog ('MAIL_WERKPLEKINRICHTING', 'I', 'v_ruisnaam:' || v_ruisnaam, '');
fac.writelog ('MAIL_WERKPLEKINRICHTING', 'I', 'v_email:' || v_email, '');
fac.writelog ('MAIL_WERKPLEKINRICHTING', 'I', 'v_voornaam:' || v_voornaam, '');
fac.writelog ('MAIL_WERKPLEKINRICHTING', 'I', 'v_achternaam:' || v_achternaam, '');
v_errorhint := 'Zoek de persoon op adhv de ruisnaam: ' || v_ruisnaam;
SELECT prs_perslid_key
INTO v_besteller_key
FROM prs_v_aanwezigperslid
WHERE prs_perslid_oslogin = UPPER(v_ruisnaam);
v_errorhint := 'Voeg de persoon toe aan de autorisatiegroep: ' || v_ruisnaam || '-' || v_besteller_key;
INSERT INTO fac_gebruikersgroep (fac_groep_key, prs_perslid_key)
SELECT 2741, v_besteller_key
FROM DUAL
WHERE NOT EXISTS (SELECT 1
FROM fac_gebruikersgroep
WHERE fac_groep_key = 2741
AND prs_perslid_key = v_besteller_key);
v_errorhint := 'Toevoegen resultaat';
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (psessionid,
'maillog',
'Rechten voor werkplekinrichting toegekend aan: ' || v_ruisnaam);
EXCEPTION WHEN NO_DATA_FOUND
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog ('MAIL_WERKPLEKINRICHTING', 'E', v_errormsg, v_errorhint);
DELETE fac_rapport WHERE fac_rapport_node = 'WERKPLEKINR' AND fac_rapport_volgnr < TO_CHAR(SYSDATE-100, 'YYMMDDHH24MI');
INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_volgnr, fac_rapport_regel)
VALUES ('WERKPLEKINR', TO_CHAR(SYSDATE, 'YYMMDDHH24MI'), 'Onbekende besteller:'||v_ruisnaam || '-' || v_email || '-' || v_voornaam || '-' || v_achternaam);
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (psessionid,
'errormsg',
'Fout bij inlezen mail werkplekinrichting: ' || v_ruisnaam);
END;
-- Update procdure van de werkplek objecten naar de juiste ruimteNr
-- Er wordt op basis van QR code een email body gemaakt met
-- Key van de ruimte en daarop volgend de key van de objecten die in deze ruimte staan
-- https://ykpn.facilitor.nl/?u=Pu3JoBgoXxydA5Jv&ruimte_key=16653
-- https://ykpn.facilitor.nl/?u=123489289832&ins_deel_key=9366
-- https://ykpn.facilitor.nl/?u=123489289832&ins_deel_key=9367
-- https://ykpn.facilitor.nl/?u=Pu3JoBgoXxydA5Jv&ruimte_key=16634
-- https://ykpn.facilitor.nl/?u=123489289832&ins_deel_key=9368
-- https://ykpn.facilitor.nl/?u=123489289832&ins_deel_key=9369
PROCEDURE mail_werkpleklocatie (pfrom IN VARCHAR2,
pto IN VARCHAR2,
psubject IN VARCHAR2,
pbody IN VARCHAR2,
psessionid IN VARCHAR2,
pemailkey IN NUMBER)
AS
v_errormsg VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_body VARCHAR2(4000);
v_line VARCHAR2(1000);
v_param VARCHAR2(100);
v_ruimtestr VARCHAR2(50);
v_ruimteid VARCHAR2(50);
v_objectstr VARCHAR2(50);
v_objectid VARCHAR2(50);
v_rmtcount NUMBER;
v_objcount NUMBER;
BEGIN
v_errorhint:='Fout bij verwerken email';
v_body :=REPLACE (pbody, CHR(13));
WHILE LENGTH(v_body)>2
LOOP
fac.imp_getfield(v_body, CHR(10), v_line);
IF v_line IS NOT NULL
THEN
v_param := SUBSTR(v_line,INSTR(v_line,'?')+1,LENGTH(v_line));
IF INSTR(v_param,'ruimte_key')>0
THEN
v_errorhint:='Fout bij controle ruimte';
v_rmtcount:=0;
v_ruimtestr := SUBSTR(v_param,INSTR(v_param,'&')+1,LENGTH(v_param));
v_ruimteid := SUBSTR(v_ruimtestr,INSTR(v_ruimtestr,'=')+1,LENGTH(v_ruimtestr));
SELECT COUNT(*)
INTO v_rmtcount
FROM alg_ruimte r
WHERE r.alg_ruimte_key=v_ruimteid
AND r.alg_ruimte_verwijder IS NULL;
--dbms_output.put_line ('Ruimte ' || v_ruimteid|| ' aanwezig :'||v_rmtcount);
ELSE
v_errorhint:='Fout bij controle Werkplek';
v_objcount:=0;
v_objectstr := SUBSTR(v_param,INSTR(v_param,'&')+1,LENGTH(v_param));
v_objectid := SUBSTR(v_objectstr,INSTR(v_objectstr,'=')+1,LENGTH(v_objectstr));
SELECT COUNT(*)
INTO v_objcount
FROM ins_deel i
WHERE i.ins_deel_key=v_objectid
AND i.ins_deel_verwijder IS NULL;
--dbms_output.put_line ('WP ' || v_objectid || ' aanwezig :'||v_objcount);
END IF;
IF v_rmtcount=1 AND v_objcount=1
THEN
v_errorhint:='Fout bij update werkplek';
UPDATE ins_deel i
SET i.ins_alg_ruimte_key=v_ruimteid
WHERE i.ins_deel_key=v_objectid
AND i.ins_deel_verwijder IS NULL;
v_objcount:=0;
END IF;
END IF;
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog ('mail_werkpleklocatie',
'E',
'Fout verwerken email!: ' || v_errormsg,
v_errorhint);
COMMIT;
END;
PROCEDURE autoorder
AS
CURSOR c IS
SELECT m.mld_melding_key,
m.prs_kostenplaats_key,
TO_CHAR(m.mld_melding_omschrijving) mld_melding_omschrijving,
MAX (bdl.prs_bedrijf_key) prs_bedrijf_key,
std.mld_typeopdr_key,
m.mld_melding_einddatum,
m.mld_melding_status
FROM mld_melding m,
mld_stdmelding std,
prs_bedrijfdienstlocatie bdl
WHERE m.mld_melding_status IN (2, 3, 4) -- Ingevoerd, Ingezien, Geaccepteerd
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_stdmelding_autoorder = 1
AND std.prs_dienst_key = bdl.prs_dienst_key
AND mld_melding_datum > SYSDATE - 1 -- voorkom dat oude meldingen ineens verstuurd gaan worden
AND mld_melding_datum < SYSDATE - (1 / 96) -- voorkom dat meldingen die nog bezig zijn met aanmaken al aangepast worden.
AND std.mld_typeopdr_key IS NOT NULL
AND m.mld_alg_locatie_key = bdl.alg_locatie_key
AND NOT EXISTS
(SELECT mld_melding_key
FROM mld_opdr o
WHERE mld_melding_key = m.mld_melding_key)
GROUP BY mld_melding_key,
m.prs_kostenplaats_key,
TO_CHAR(m.mld_melding_omschrijving),
mld_typeopdr_key,
mld_melding_einddatum,
mld_melding_status;
CURSOR c_flex (c_melding_key NUMBER)
IS
SELECT sk.mld_srtkenmerk_kenmerktype,
sk.mld_srtkenmerk_omschrijving,
DECODE (
sk.mld_srtkenmerk_kenmerktype,
'S', fac.getdomeinwaarde (sk.fac_kenmerkdomein_key,
mld_kenmerkmelding_waarde),
'R', fac.getdomeinwaarde (sk.fac_kenmerkdomein_key,
mld_kenmerkmelding_waarde),
mld_kenmerkmelding_waarde) waarde
FROM mld_kenmerkmelding km, mld_kenmerk k, mld_srtkenmerk sk
WHERE mld_melding_key = c_melding_key
AND km.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = sk.mld_srtkenmerk_key
ORDER BY k.mld_kenmerk_volgnummer;
v_opdr_key NUMBER;
v_notificatie_code VARCHAR2 (20);
v_mld_opdr_bedrijfopdr_volgnr NUMBER;
v_melding_omschrijving VARCHAR2 (4000);
BEGIN
FOR rec IN c
LOOP
BEGIN
-- eerst even de status naar geaccepteerd zetten.
IF rec.mld_melding_status <> 4
THEN
MLD.setmeldingstatus (rec.mld_melding_key, 4, 3); -- Geaccepteerd, Facilitor
END IF;
v_melding_omschrijving := NULL;
FOR rec_flex IN c_flex (rec.mld_melding_key)
LOOP
BEGIN
v_melding_omschrijving :=
v_melding_omschrijving
|| rec_flex.mld_srtkenmerk_omschrijving
|| ': '
|| rec_flex.waarde
|| CHR (10);
END;
END LOOP;
v_mld_opdr_bedrijfopdr_volgnr :=
mld.BepaalOpdrMeldingVolgnr (rec.mld_melding_key);
INSERT INTO mld_opdr (mld_melding_key,
prs_kostenplaats_key,
mld_typeopdr_key,
prs_perslid_key,
mld_uitvoerende_keys,
mld_opdr_datumbegin,
mld_opdr_einddatum,
mld_opdr_module,
mld_opdr_omschrijving,
mld_opdr_bedrijfopdr_volgnr,
mld_opdr_teverzenden)
VALUES (
rec.mld_melding_key,
rec.prs_kostenplaats_key,
rec.mld_typeopdr_key,
3 -- facilitor
,
rec.prs_bedrijf_key,
SYSDATE,
rec.mld_melding_einddatum,
'MLD',
v_melding_omschrijving || rec.mld_melding_omschrijving,
v_mld_opdr_bedrijfopdr_volgnr,
1)
RETURNING mld_opdr_key
INTO v_opdr_key;
MLD.setopdrachtstatus (v_opdr_key, 5, 3); -- uitgegeven, Facilitor
SELECT DECODE (u.TYPE, 'P', 'ORDMLI', 'ORDMLE')
INTO v_notificatie_code
FROM mld_v_uitvoerende u
WHERE u.mld_uitvoerende_key = rec.prs_bedrijf_key;
FAC.trackaction (v_notificatie_code,
v_opdr_key,
3,
NULL,
NULL);
-- update melding status
MLD.updatemeldingstatus (rec.mld_melding_key, 0, 3); -- facilitor
EXCEPTION
WHEN OTHERS
THEN
fac.writelog (
'AutoOrder',
'E',
'OTHERS (error '
|| SQLCODE
|| '/'
|| SUBSTR (SQLERRM, 1, 100)
|| ')',
'Fout bij aanmaken opdracht: ' || rec.mld_melding_key);
END;
END LOOP;
END;
PROCEDURE tsk_bevr_contract(p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
v_errorhint VARCHAR2 (1000);
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
BEGIN
-- bevriezen van contractgegevens
v_errorhint := 'Bevriezen contractgegevens';
IF TO_CHAR (SYSDATE, 'DD') = '01'
THEN
INSERT INTO ykpn_freeze_contract (freezedate,
boekmaand,
cnt_contract_key,
cnt_contract_nummer,
cnt_contract_versie,
cnt_contract_nummer_intern,
cnt_contract_omschrijving,
cnt_contract_opmerking,
cnt_contract_kosten,
cnt_contract_termijnkosten,
cnt_contract_termijntermijn,
cnt_prs_bedrijf_key,
ins_discipline_key,
prs_kostenplaats_key,
cnt_contract_status,
cnt_contract_plaats_key,
cnt_alg_plaats_key,
cnt_alg_plaats_code,
cnt_contract_plaats_gewicht,
cnt_contract_plaats_aanmaak,
cnt_contract_plaats_verwijder)
(SELECT SYSDATE,
TO_CHAR (SYSDATE - 1, 'yyyy-mm'),
c.cnt_contract_key,
cnt_contract_nummer,
cnt_contract_versie,
cnt_contract_nummer_intern,
cnt_contract_omschrijving,
cnt_contract_opmerking,
cnt_contract_kosten,
cnt_contract_termijnkosten,
cnt_contract_termijntermijn,
cnt_prs_bedrijf_key,
ins_discipline_key,
prs_kostenplaats_key,
cnt_contract_status,
cnt_contract_plaats_key,
cnt_alg_plaats_key,
cnt_alg_plaats_code,
cnt_contract_plaats_gewicht,
cnt_contract_plaats_aanmaak,
cnt_contract_plaats_verwijder
FROM cnt_contract c, cnt_contract_plaats cp
WHERE c.cnt_contract_key = cp.cnt_contract_key
AND cnt_contract_plaats_verwijder IS NULL);
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog (p_applname,
'E',
'Daily task afgebroken!: ' || v_errormsg,
v_errorhint);
COMMIT;
END;
PROCEDURE tsk_mail_locman(p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
CURSOR c(p_not_key NUMBER) IS
SELECT a.bez_afspraak_key,
prs_perslid_email,
p.prs_perslid_key,
aantal,
bez_afspraak_datum,
alg_locatie_omschrijving
FROM ( SELECT af.bez_afspraak_key,
af.alg_locatie_key,
af.bez_afspraak_datum,
COUNT (af.bez_afspraak_key) aantal
FROM bez_afspraak af, bez_bezoekers b, res_rsv_deel rrd
WHERE af.bez_afspraak_key = b.bez_afspraak_key
AND b.BEZ_BEZOEKERS_KEY = rrd.BEZ_BEZOEKERS_KEY
GROUP BY af.bez_afspraak_key,
af.alg_locatie_key,
af.bez_afspraak_datum) a,
prs_v_perslidwerkplek_gegevens pwpg,
alg_locatie l,
prs_perslid p,
fac_gebruikersgroep gg
WHERE gg.fac_groep_key = 1741 -- was eerst locatiemanagement (28) u YASK FM (1741)
AND gg.prs_perslid_key = pwpg.prs_perslid_key
AND a.alg_locatie_key = pwpg.alg_locatie_key
AND pwpg.prs_perslid_key = p.prs_perslid_key
AND a.alg_locatie_key = l.alg_locatie_key
AND a.aantal > 5
AND a.bez_afspraak_datum > SYSDATE
AND NOT EXISTS
(SELECT fac_tracking_key
FROM fac_tracking t
WHERE t.fac_srtnotificatie_key = p_not_key -- cust11
AND t.fac_tracking_refkey = a.bez_afspraak_key);
v_oms VARCHAR2 (200);
v_not_key FAC_SRTNOTIFICATIE.FAC_SRTNOTIFICATIE_KEY%TYPE;
v_not_mode FAC_SRTNOTIFICATIE.FAC_SRTNOTIFICATIE_MODE%TYPE;
v_tracking_key NUMBER (10);
v_errorhint VARCHAR2 (1000);
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
BEGIN
-- Stuur locatiemanagement een mail als grote groepen komen parkeren.
v_errorhint := 'Mail locatiemanagement bij grote groepen';
SELECT fac_srtnotificatie_key, fac_srtnotificatie_mode
INTO v_not_key, v_not_mode
FROM fac_srtnotificatie
WHERE fac_srtnotificatie_code = 'CUST11';
FOR rec IN c(v_not_key)
LOOP
-- Controleer of de tracking al gezet is. Er kunnen namelijk meer mensen genotificeerd worden per afspraak
BEGIN
SELECT fac_tracking_key
INTO v_tracking_key
FROM fac_tracking t
WHERE t.fac_srtnotificatie_key = v_not_key -- CUST11
AND t.fac_tracking_refkey = rec.bez_afspraak_key;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
FAC.trackaction (
'CUST11',
rec.bez_afspraak_key,
3,
NULL,
'#Notificatie grote groep parkeren uitgestuurd');
END;
v_oms :=
'Grote groep ('
|| rec.aantal
|| ') parkeerplaatsen geboekt nr:'
|| rec.bez_afspraak_key
|| ' op '
|| TO_CHAR (rec.bez_afspraak_datum, 'dd-mm-yyyy hh24:mi')
|| ', locatie: '
|| rec.alg_locatie_omschrijving;
INSERT INTO fac_notificatie (fac_srtnotificatie_key,
fac_notificatie_status,
fac_notificatie_receiver_email,
prs_perslid_key_receiver,
fac_notificatie_oms,
fac_notificatie_refkey,
fac_notificatie_extrakey,
fac_notificatie_prioriteit)
VALUES (v_not_key, -- CUST11
v_not_mode, -- mail
rec.prs_perslid_email, -- email
rec.prs_perslid_key,
v_oms,
rec.bez_afspraak_key,
NULL,
2);
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog (p_applname,
'E',
'Daily task afgebroken!: ' || v_errormsg,
v_errorhint);
COMMIT;
END;
PROCEDURE tsk_bez_buitmld(p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
CURSOR ykpn_bez_out_c IS
SELECT b.bez_bezoekers_key, b.bez_afspraak_key, b.bez_bezoekers_done
FROM BEZ_AFSPRAAK ba, BEZ_BEZOEKERS b
WHERE ba.bez_afspraak_key = b.bez_afspraak_key
AND b.bez_bezoekers_done IS NOT NULL
AND b.bez_bezoekers_out IS NULL
AND TRUNC (ba.bez_afspraak_datum) = TRUNC (SYSDATE);
v_errorhint VARCHAR2 (1000);
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
BEGIN
-- Automatisch buitenmelden bezoekers (moet gepland tussen 22:00 en 0:00 uur). Ticket 56012.
v_errorhint := 'Automatisch bezoek buitenmelden';
FOR rec IN ykpn_bez_out_c
LOOP
BEGIN
UPDATE bez_bezoekers
SET bez_bezoekers_out = SYSDATE
WHERE bez_bezoekers_key = rec.bez_bezoekers_key;
fac.trackaction ('BEZOUT',
rec.bez_bezoekers_key,
NULL,
NULL,
NULL);
END;
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog (p_applname,
'E',
'Daily task afgebroken!: ' || v_errormsg,
v_errorhint);
COMMIT;
END;
PROCEDURE tsk_bez_cleanup(p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
v_errorhint VARCHAR2 (1000);
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
BEGIN
-- Van bezoekers die langer dan een maand geleden een afspraak hadden gaan we een aantal
-- niet belangrijke kenmerken verwijderden.
v_errorhint := 'Opschonen oude bezoekers';
DELETE bez_kenmerkwaarde
WHERE bez_kenmerkwaarde_key IN
(SELECT bez_kenmerkwaarde_key
FROM bez_bezoekers b, bez_kenmerkwaarde kw, bez_afspraak a
WHERE b.bez_bezoekers_key = kw.bez_bezoekers_key
AND b.bez_afspraak_key = a.bez_afspraak_key
AND kw.bez_kenmerk_key IN (1002, -- Aanmaak
1020, -- Pincode
1042, -- Nedap verzonden
1043, -- SMS verzonden
1060, -- Nedap id
1140, -- Uitleg parkeerbeleid
1160, -- Kenteken response id
1200) -- Gebouwomschrijving
AND bez_afspraak_datum < SYSDATE - 30);
-- Email, Kenteken en Telefoon worden nu bij bezoekr opgeslagen en moeten daar opgeschoond worden ipv kenmerken
UPDATE bez_bezoekers bz
SET bz.bez_bezoekers_telefoon = NULL,
bz.bez_bezoekers_email = NULL,
bz.bez_bezoekers_kenteken =NULL
WHERE bz.bez_afspraak_key IN (SELECT a.bez_afspraak_key
FROM bez_afspraak a
WHERE a.bez_afspraak_datum < SYSDATE-30);
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog (p_applname,
'E',
'Daily task afgebroken!: ' || v_errormsg,
v_errorhint);
COMMIT;
END;
PROCEDURE tsk_cnt_index (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
CURSOR cnt_indexatie IS
SELECT c.cnt_contract_key,
kci.cnt_kenmerkcontract_waarde indexatie,
kcd.cnt_kenmerkcontract_key datum_key,
kci.cnt_kenmerkcontract_key index_key
FROM cnt_contract c,
cnt_kenmerkcontract kci,
cnt_kenmerk ki,
cnt_kenmerkcontract kcd,
cnt_kenmerk kd
WHERE c.cnt_contract_key = kcd.cnt_contract_key
AND kcd.cnt_kenmerk_key = kd.cnt_kenmerk_key
AND kd.cnt_srtkenmerk_key = 81
AND kcd.cnt_kenmerkcontract_waarde =
TO_CHAR (SYSDATE, 'dd-mm-yyyy')
AND c.cnt_contract_key = kci.cnt_contract_key
AND kci.cnt_kenmerk_key = ki.cnt_kenmerk_key
AND ki.cnt_srtkenmerk_key = 82;
v_errorhint VARCHAR2 (1000);
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
BEGIN
-- Contractindexatie
v_errorhint := 'Contract indexatie';
FOR rec IN cnt_indexatie
LOOP
UPDATE cnt_contract_plaats
SET cnt_contract_plaats_gewicht =
cnt_contract_plaats_gewicht * (1 + (rec.indexatie /100))
WHERE cnt_contract_key = rec.cnt_contract_key;
UPDATE cnt_contract c
SET c.cnt_contract_termijnkosten = c.cnt_contract_kosten /12
WHERE c.cnt_contract_key = rec.cnt_contract_key;
UPDATE cnt_contract c
SET c.cnt_contract_kosten =
(SELECT SUM (cnt_contract_plaats_gewicht)
FROM cnt_contract_plaats cp
WHERE cp.cnt_contract_key = rec.cnt_contract_key)
WHERE c.cnt_contract_key = rec.cnt_contract_key;
fac.trackaction (
'CNTUPD',
rec.cnt_contract_key,
3,
SYSDATE,
'Contract ge<67>ndexeerd met ' || rec.indexatie || '%');
-- Verwijder de kenmerken voor de indexatie
DELETE cnt_kenmerkcontract
WHERE cnt_kenmerkcontract_key = rec.datum_key;
DELETE cnt_kenmerkcontract
WHERE cnt_kenmerkcontract_key = rec.index_key;
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog (p_applname,
'E',
'Daily task afgebroken!: ' || v_errormsg,
v_errorhint);
COMMIT;
END;
PROCEDURE tsk_mld_keuring (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
CURSOR c_keuring IS
SELECT kd.ins_kenmerkdeel_waarde,
dg.ins_deel_key,
dg.alg_locatie_key,
dg.alg_gebouw_key,
dg.ins_deel_omschrijving,
dg.alg_plaatsaanduiding
FROM ins_v_deel_gegevens dg, ins_kenmerkdeel kd
WHERE ins_discipline_key = 1501
AND dg.ins_deel_key = kd.ins_deel_key
AND kd.ins_kenmerk_key = 47 --Volgende keuring
AND TO_DATE (ins_kenmerkdeel_waarde, 'dd-mm-yyyy') =
TRUNC(SYSDATE) + 60
ORDER BY dg.alg_gebouw_key;
v_errorhint VARCHAR2 (1000);
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_old_gebouw_key NUMBER;
v_stdmelding_key NUMBER;
v_melding_key NUMBER;
v_perslid_key NUMBER;
v_stdmelding_uvt mld_stdmelding.mld_stdmelding_t_uitvoertijd%TYPE
:= MLD_T_UITVOERTIJD (NULL, NULL); -- constructor initialisatie
BEGIN
-- Aanmaken melding voor periodieke keuring van objecten. We maken een melding per gebouw aan.
v_errorhint := 'Aanmaken melding voor Keuringsmiddelen keuren';
v_old_gebouw_key := -1;
v_stdmelding_key := 2961; -- Keuringsmiddelen keuren
v_perslid_key := 3; -- Facilitor
SELECT mld_stdmelding_t_uitvoertijd
INTO v_stdmelding_uvt
FROM mld_stdmelding
WHERE mld_stdmelding_key = v_stdmelding_key;
FOR rec IN c_keuring
LOOP
BEGIN
IF rec.alg_gebouw_key <> v_old_gebouw_key
THEN
INSERT INTO mld_melding (mld_melding_module,
mld_meldbron_key,
mld_alg_locatie_key,
mld_alg_onroerendgoed_keys,
mld_melding_datum,
mld_melding_onderwerp,
mld_melding_omschrijving,
mld_melding_status,
mld_melding_t_uitvoertijd,
mld_stdmelding_key,
mld_ins_discipline_key, -- behandelteam
prs_perslid_key,
prs_perslid_key_voor,
prs_kostenplaats_key,
mld_melding_spoed)
VALUES (
'MLD',
6, -- system
rec.alg_locatie_key,
rec.alg_gebouw_key,
SYSDATE,
'Keuringsmiddelen keuren',
'Keuring noodzakelijk voor de bijgevoegde keuringsmiddelen',
NULL,
v_stdmelding_uvt,
v_stdmelding_key,
1721, -- Yask locatiemanagement
v_perslid_key,
v_perslid_key,
NULL,
3) -- prio normaal
RETURNING mld_melding_key
INTO v_melding_key;
v_errormsg := 'Fout bij statuswijziging';
mld.setmeldingstatus (v_melding_key, 2, v_perslid_key);
v_old_gebouw_key := rec.alg_gebouw_key;
END IF;
INSERT INTO mld_melding_object (mld_melding_key, ins_deel_key)
VALUES (v_melding_key, rec.ins_deel_key);
END;
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog (p_applname,
'E',
'Daily task afgebroken!: ' || v_errormsg,
v_errorhint);
COMMIT;
END;
PROCEDURE tsk_bes_geleverd(p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
CURSOR c_bes IS
SELECT distinct b.bes_bestelling_key, bo.bes_bestelopdr_key
FROM bes_bestelling b,
bes_bestelopdr bo,
bes_bestelling_Item bsi,
bes_bestelopdr_item boi,
bes_srtdeel bsd,
bes_srtgroep bsg,
bes_discipline bd
WHERE TRUNC(b.bes_bestelling_datum) < TRUNC(SYSDATE-14)
AND b.bes_bestelling_status=5
AND bsi.bes_bestelling_key = b.bes_bestelling_key
AND boi.bes_bestelopdr_item_key = bsi.bes_bestelopdr_item_key
AND bo.bes_bestelopdr_key = boi.bes_bestelopdr_key
AND bsi.bes_srtdeel_key = bsd.bes_srtdeel_key
AND bsg.bes_srtgroep_key = bsd.bes_srtgroep_key
AND bd.ins_discipline_key = bsg.ins_discipline_key
AND bd.ins_discipline_key=1741; -- Office depot catalogus
CURSOR c_bes_item(p_bes_bestelling_key NUMBER)
IS
SELECT bsi.bes_bestelopdr_item_key
FROM bes_bestelling_Item bsi,
bes_bestelopdr_item boi
WHERE bsi.bes_bestelling_key = p_bes_bestelling_key
AND boi.bes_bestelopdr_item_key = bsi.bes_bestelopdr_item_key;
v_errorhint VARCHAR2 (1000);
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
BEGIN
v_errorhint :='Alle Viking bestelling op geleverd zetten';
FOR rec in c_bes
LOOP
FOR rec_o IN c_bes_item(rec.bes_bestelling_key)
LOOP
UPDATE bes_bestelopdr_item boi
SET boi.bes_bestelopdr_item_status=6, -- Geleverd
boi.bes_bestelopdr_item_aantalontv= boi.bes_bestelopdr_item_aantal -- alles is ontvangen
WHERE boi.bes_bestelopdr_item_key = rec_o.bes_bestelopdr_item_key;
UPDATE bes_bestelling_item bbi
SET bbi.bes_bestelling_item_status=6,
bbi.bes_bestelling_item_aantalontv = bbi.bes_bestelling_item_aantal
wHERE bbi.bes_bestelopdr_item_key = rec_o.bes_bestelopdr_item_key;
END LOOP;
UPDATE bes_bestelopdr bo
SET bo.BES_BESTELOPDR_STATUS=6
WHERE bo.BES_BESTELOPDR_KEY = rec.bes_bestelopdr_key;
fac.trackaction (
'BES2AF',
rec.bes_bestelopdr_key,
3,
SYSDATE,
'Bestelopdracht is geleverd (vanuit Daily)');
UPDATE bes_bestelling b
SET b.bes_bestelling_status=6
WHERE b.bes_bestelling_key= rec.bes_bestelling_key;
fac.trackaction (
'BESOTV',
rec.bes_bestelling_key,
3,
SYSDATE,
'Bestelling is geleverd (vanuit Daily)');
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog (p_applname,
'E',
'Daily task afgebroken!: ' || v_errormsg,
v_errorhint);
COMMIT;
END;
PROCEDURE tsk_mld_thuiswerkwinkel(p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
CURSOR sel
IS
SELECT m.mld_melding_key,
o.mld_opdr_key
FROM mld_melding m,
mld_stdmelding ms,
mld_discipline md,
mld_opdr o
WHERE m.mld_stdmelding_key = ms.mld_stdmelding_key
AND md.ins_discipline_key = ms.mld_ins_discipline_key
AND ms.mld_ins_discipline_key = 3481 -- 14 Vragen Thuiswerkwinkel
AND o.mld_melding_key = m.mld_melding_key
AND o.mld_statusopdr_key = 5 -- Toegekend
AND m.mld_melding_status = 7; -- Uitgegeven;
v_errorhint VARCHAR2 (1000);
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
BEGIN
v_errorhint :='Alle uitgegeven thuiswerkwinkel meldingen op geleverd zetten';
FOR rec IN sel
LOOP
-- update we de status van de opdracht nara afgemeld
UPDATE mld_opdr o
SET o.mld_statusopdr_key=6,
o.mld_opdr_opmerking='Dank voor je melding! We nemen contact met je op vanuit de Thuiswerkwinkel mailbox en zullen daarom deze opdracht sluiten.'
WHERE o.mld_opdr_key= rec.mld_opdr_key;
fac.trackaction ('ORDAFM',
rec.mld_opdr_key,
3,
SYSDATE,
'Opdracht is afgemeld vanuit daily.');
-- update we de status van de melding naar afgemeld
UPDATE mld_melding m
SET m.mld_melding_status = 5,
m.mld_melding_opmerking='Dank voor je melding! We nemen contact met je op vanuit de Thuiswerkwinkel mailbox en zullen daarom deze melding sluiten.'
WHERE m.mld_melding_key= rec.mld_melding_key;
fac.trackaction ('MLDAFM',
rec.mld_melding_key,
3,
SYSDATE,
'Melding is afgemeld vanuit daily.');
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog (p_applname,
'E',
'Daily task afgebroken!: ' || v_errormsg,
v_errorhint);
COMMIT;
END;
PROCEDURE tsk_mldbes_approve (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
CURSOR sel
IS
SELECT MAX(M.MLD_MELDING_KEY) mld_melding_key,
m.prs_perslid_key,
SUBSTR(sm.mld_stdmelding_code,INSTR(sm.mld_stdmelding_code,'_')+1) aut_groep_key
FROM mld_melding m,
mld_stdmelding sm
WHERE sm.mld_stdmelding_code like 'BESTOEGANG%'
AND m.mld_stdmelding_key=sm.mld_stdmelding_key
AND m.mld_melding_status=2
GROUP BY m.prs_perslid_key,SUBSTR(sm.mld_stdmelding_code,INSTR(sm.mld_stdmelding_code,'_')+1);
v_errorhint VARCHAR2 (1000);
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count NUMBER;
BEGIN
v_errorhint :='Alle bestecatalogus toegangs meldingen op verwerkt zetten';
FOR rec IN sel
LOOP
IF LENGTH(rec.aut_groep_key)>1
THEN
v_errorhint:='Ophalen autorisatiegroep gaat fout';
SELECT count(*)
INTO v_count
from fac_gebruikersgroep fgg, fac_groep fg
WHERE fg.fac_groep_key=rec.aut_groep_key
AND fgg.fac_groep_key=fg.fac_groep_key
AND fgg.prs_perslid_key=rec.prs_perslid_key;
IF v_count=0
THEN
INSERT INTO fac_gebruikersgroep (fac_groep_key, prs_perslid_key)
VALUES(rec.aut_groep_key, rec.prs_perslid_key);
END IF;
UPDATE mld_melding
SET mld_melding_status=5,
mld_melding_opmerking='Dank voor je melding! Je aanvraag is goedgekeurd en verwerkt. '
WHERE mld_melding_key=rec.mld_melding_key;
fac.trackaction ('MLDAFM',
rec.mld_melding_key,
3,
SYSDATE,
'Melding is afgemeld vanuit daily.');
END IF;
END LOOP;
END;
END;
/
-- EINDE BODY
-- BASISVIEW voor procedure CONTRACTSCOPE (ticket 60365)
CREATE OR REPLACE VIEW YKPN_V_RAP_CNT_EXPORT
(
CONTRACT_TYPE,
CONTRACT_NR,
CONTRACT_OMSCHR,
CONTRACT_PARTIJ,
SCOPE_PLAATS,
SCOPE_CODE,
SCOPE_OMSCHR,
SCOPE_BEDRAG,
CONTRACT_KEY
)
AS
SELECT
d.ins_discipline_omschrijving,
c.cnt_contract_nummer_intern || '.' || COALESCE(c.cnt_contract_versie, '0'),
c.cnt_contract_omschrijving,
b.prs_bedrijf_naam,
sc.plaats,
sc.code,
sc.omschrijving,
sc.cnt_contract_plaats_gewicht,
c.cnt_contract_key
FROM cnt_contract c,
prs_bedrijf b,
ins_tab_discipline d,
(SELECT p.cnt_contract_key,
l.alg_locatie_code AS Code,
l.alg_locatie_omschrijving AS Omschrijving,
p.cnt_contract_plaats_gewicht,
'L' Plaats
FROM cnt_contract_plaats p, alg_locatie l
WHERE p.cnt_alg_plaats_code = 'L'
AND p.cnt_alg_plaats_key = l.alg_locatie_key
AND cnt_contract_plaats_verwijder IS NULL
AND l.alg_locatie_verwijder IS NULL
UNION ALL
SELECT p.cnt_contract_key,
g.alg_gebouw_code AS Code,
g.alg_gebouw_omschrijving AS Omschrijving,
p.cnt_contract_plaats_gewicht,
'G' Plaats
FROM cnt_contract_plaats p, alg_gebouw g
WHERE p.cnt_alg_plaats_code = 'G'
AND p.cnt_alg_plaats_key = g.alg_gebouw_key
AND cnt_contract_plaats_verwijder IS NULL
AND g.alg_gebouw_verwijder IS NULL
) sc
WHERE c.ins_discipline_key = d.ins_discipline_key
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
AND d.ins_discipline_module = 'CNT'
AND d.ins_discipline_verwijder IS NULL
AND c.cnt_contract_status = 0
AND c.cnt_contract_looptijd_tot >= trunc(sysdate)
AND c.cnt_contract_key = sc.cnt_contract_key
ORDER BY c.cnt_contract_nummer_intern,sc.code;
CREATE OR REPLACE PROCEDURE ykpn_pre_putorders
AS
-- Bepalen welke opdrachten een notitie hebben
CURSOR sel_servicenow
IS
SELECT DISTINCT o.mld_opdr_key
FROM mld_opdr o ,
mld_melding m,
mld_opdr_note ono,
prs_bedrijf b
WHERE o.mld_opdr_externnr LIKE 'INC#%'
AND o.mld_uitvoerende_keys = b.prs_bedrijf_key
AND b.prs_bedrijf_naam_upper = 'SERVICE NOW API'
AND o.mld_melding_key = m.mld_melding_key
AND o.mld_statusopdr_key IN (5, 8)
AND o.mld_opdr_teverzenden=0
AND ono.mld_opdr_key = o.mld_opdr_key
AND ono.prs_perslid_key=m.prs_perslid_key
AND ono.mld_opdr_note_aanmaak > o.mld_opdr_externsyncdate;
BEGIN
NULL;
-- Weke opdrachten naar servicenow moeten we opneiwue versturen
--FOR rec IN sel_servicenow
--LOOP
-- UPDATE mld_opdr o
-- SET o.mld_opdr_teverzenden=2, o.mld_opdr_verzonden=NULL
-- WHERE o.mld_opdr_key=rec.mld_opdr_key;
--END LOOP;
END;
/
CREATE OR REPLACE PROCEDURE ykpn_import_contractscope (p_import_key IN NUMBER)
AS
c_fielddelimitor VARCHAR2 (1) := ';';
v_newline VARCHAR2 (1000); -- Input line
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
header_is_valid NUMBER;
v_count NUMBER;
v_ongeldig NUMBER (1);
v_mode NUMBER (1);
v_aanduiding VARCHAR2 (200);
-- v_all_null BOOLEAN;
v_count_error NUMBER (10);
v_count_tot NUMBER (10);
v_count_import NUMBER (10);
-- De importvelden:
v_cnt_nr VARCHAR2 (100);
v_cnt_omschrijving VARCHAR2 (100);
v_cnt_partij VARCHAR2 (100);
v_cnt_plaats VARCHAR2 (100);
v_cnt_scopecode VARCHAR2 (100);
v_cnt_scopeomschr VARCHAR2 (100);
v_cnt_scopebedrag VARCHAR2 (100);
v_cnt_contract_key NUMBER (10);
v_cnt_alg_plaats_key NUMBER (10);
v_check_aantal_gebouwcode NUMBER (10);
CURSOR c IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
BEGIN
-- Vorige inlees eerst verwijderen
DELETE FROM ykpn_imp_contractscope;
COMMIT;
header_is_valid := 0;
v_ongeldig := 0;
v_count_error := 0;
header_is_valid := 0;
v_count_tot := 0;
v_count_import := 0;
FOR rec IN c
LOOP
BEGIN
v_newline := rec.fac_imp_file_line;
v_errormsg := 'Fout opvragen te importeren rij';
v_aanduiding := '';
-- Lees alle veldwaarden: contractnummer;contract omschrijving;contract partij;plaats;code;scope omschrijving;bedrag
v_errormsg := 'Fout opvragen te importeren rij (contractnummer)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_cnt_nr);
v_errormsg := 'Fout opvragen te importeren rij (contract omschrijving)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_cnt_omschrijving);
v_errormsg := 'Fout opvragen te importeren rij (contract partij)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_cnt_partij);
v_errormsg := 'Fout opvragen te importeren rij (plaats)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_cnt_plaats);
v_errormsg := 'Fout opvragen te importeren rij (code)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_cnt_scopecode);
v_errormsg := 'Fout opvragen te importeren rij (scope omschrijving)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_cnt_scopeomschr);
v_errormsg := 'Fout opvragen te importeren rij (bedrag)';
fac.imp_getfield (v_newline, c_fielddelimitor, v_cnt_scopebedrag);
v_aanduiding :=
v_cnt_nr
|| '|'
|| v_cnt_scopecode
|| '|'
|| v_cnt_scopeomschr;
v_count_tot := v_count_tot + 1;
-- Skip until the header is found
IF header_is_valid = 0
THEN
IF v_cnt_nr = 'contractnummer'
AND v_cnt_omschrijving = 'contract omschrijving'
AND v_cnt_partij = 'contract partij'
AND v_cnt_plaats = 'plaats'
AND v_cnt_scopecode = 'code'
AND v_cnt_scopeomschr = 'scope omschrijving'
AND v_cnt_scopebedrag = 'bedrag'
THEN
header_is_valid := 1;
END IF;
ELSE -- Header OK. Vanaf hier in de LOOP de variabele vullen (v_cnt_contract_key , v_cnt_alg_plaats_key, v_check_aantal_gebouwcode )
---- Aanvullen = Contract_key + Dubbele of geen gebouwcode + Gebouwkey
---- Check = Contract_key gevuld + Gebouwkey gevuld - Zo niet dan v_ongeldig = 1 zetten
-- 1. Contract-key erbij zoeken
BEGIN
v_errormsg :=
'Intern contractnummer matchen met contract_key ';
v_cnt_contract_key := 0;
SELECT DISTINCT c.cnt_contract_key
INTO v_cnt_contract_key
FROM cnt_contract c
WHERE c.cnt_contract_nummer_intern
|| '.'
|| COALESCE (c.cnt_contract_versie, '0') =
v_cnt_nr;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
fac.imp_writelog (
p_import_key,
'E',
'Geen contract_key gevonden',
rec.fac_imp_file_index || ' - ' || v_aanduiding);
v_ongeldig := 1;
END;
-- 2. Aantal gebouwcodes vullen - Check of er 1 gevonden wordt
-- We lopen de kans dat Excel de voorloopnullen van het gebouw verwijderd. Daarom maar even weer toevoegen
v_cnt_scopecode := TO_CHAR (v_cnt_scopecode, 'FM00000');
BEGIN
v_errormsg :=
'Aantal gebouwcodes ophalen - check moet 1 zijn ';
SELECT alg_gebouw_key
INTO v_cnt_alg_plaats_key
FROM alg_gebouw
WHERE v_cnt_scopecode = alg_gebouw_code
AND v_cnt_plaats = 'G';
EXCEPTION
WHEN OTHERS
THEN
fac.imp_writelog (
p_import_key,
'E',
'Gebouwcode kan niet unieke gevonden worden',
rec.fac_imp_file_index || ' - ' || v_aanduiding);
v_ongeldig := 1;
END;
INSERT INTO ykpn_imp_contractscope (cnt_nr,
cnt_omschrijving,
cnt_partij,
scope_plaats,
scope_gebouwcode,
scope_omschrijving,
scope_bedrag,
cnt_contract_key,
cnt_alg_plaats_key,
check_aantal_gebouwcode)
VALUES (
v_cnt_nr,
v_cnt_omschrijving,
v_cnt_partij,
v_cnt_plaats,
v_cnt_scopecode,
v_cnt_scopeomschr,
REPLACE (
REPLACE (COALESCE (v_cnt_scopebedrag, '0'),
',',
'.'),
' ',
''),
v_cnt_contract_key,
v_cnt_alg_plaats_key,
0);
END IF;
END;
END LOOP;
IF header_is_valid = 0
THEN
fac.imp_writelog (p_import_key,
'E',
'Ongeldig importbestand',
'Geen header of header niet volgens specificatie!');
ELSE
-- Afsluiting: Rollback/Delete tabel als er fouten in csv zitten...
IF v_ongeldig > 0
THEN
DELETE FROM ykpn_imp_contractscope;
fac.imp_writelog (
p_import_key,
'E',
'Niet ingelezen. Staan aantal ongeldige regels in csv-bestand. Zie bovenstaande ERRORS. Pas deze eerst aan!',
'');
ELSE
fac.imp_writelog (
p_import_key,
'S',
'Aantal ingelezen regels: ' || TO_CHAR (v_count_import),
'');
END IF;
END IF;
EXCEPTION
WHEN OTHERS
THEN
ROLLBACK;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes;
fac.imp_writelog (
p_import_key,
'E',
v_errormsg
|| ' - Check scopebedrag - Op lege spaties OF ipv van komma een punt gebruikt OF ..): '
|| v_aanduiding,
'');
END ykpn_import_contractscope;
/
CREATE OR REPLACE PROCEDURE ykpn_update_contractscope (
p_import_key IN NUMBER)
AS
v_errormsg VARCHAR (200);
v_errorhint VARCHAR (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (150);
currentversion fac_module.fac_module_version%TYPE;
v_aanduiding VARCHAR (100);
v_count NUMBER;
v_totaalbedrag_scope NUMBER (10);
v_totaalbedrag_cnt NUMBER (10);
-- Cursor met alle contract_keys DISTINCT - Voor de uiteindelijke recount van totaalbedrag op basis nieuwe scope-waarden
CURSOR c IS
SELECT DISTINCT cnt_contract_key, cnt_nr
FROM ykpn_imp_contractscope;
-- Cursor met alle plaats_keys te verwijderen - als bedrag =0
CURSOR c_del IS
SELECT i.cnt_contract_key,
i.cnt_nr,
i.cnt_alg_plaats_key,
i.scope_gebouwcode
FROM ykpn_imp_contractscope i, cnt_contract_plaats cp
WHERE i.scope_bedrag = 0
AND i.cnt_contract_key = cp.cnt_contract_key
AND i.cnt_alg_plaats_key = cp.cnt_alg_plaats_key;
-- Cursor met alle plaats_keys updaten - Reeds bestaand in huidige contract en afwijkende scope-bedrag
CURSOR c_update IS
SELECT i.cnt_contract_key,
i.cnt_nr,
i.cnt_alg_plaats_key,
i.scope_gebouwcode,
i.scope_bedrag,
cp.cnt_contract_plaats_gewicht
FROM ykpn_imp_contractscope i, cnt_contract_plaats cp
WHERE i.scope_bedrag <> 0
AND i.cnt_contract_key = cp.cnt_contract_key
AND i.cnt_alg_plaats_key = cp.cnt_alg_plaats_key
AND i.scope_bedrag <> cp.cnt_contract_plaats_gewicht;
-- Cursor met alle plaats_keys toevoegen - Scope nog niet in contract bekend
CURSOR c_toev IS
SELECT i.cnt_contract_key,
i.cnt_nr,
i.cnt_alg_plaats_key,
i.scope_gebouwcode,
i.scope_bedrag scope_bedrag
FROM ykpn_imp_contractscope i
WHERE i.scope_bedrag <> 0
AND i.cnt_alg_plaats_key IS NOT NULL
AND i.cnt_alg_plaats_key NOT IN
(SELECT cp.cnt_alg_plaats_key
FROM cnt_contract_plaats cp
WHERE cp.cnt_contract_key = i.cnt_contract_key
AND cp.cnt_alg_plaats_code = 'G');
BEGIN
FOR rec IN c_del
LOOP
v_aanduiding :=
'Contract gewijzigd ' || CHR(10)
|| 'Gebouw verwijderd: '
|| rec.scope_gebouwcode;
v_errorhint := 'gebouwcode verwijderen uit contract_scope';
DELETE FROM cnt_contract_plaats
WHERE cnt_contract_key = rec.cnt_contract_key
AND cnt_alg_plaats_key = rec.cnt_alg_plaats_key
AND cnt_alg_plaats_code = 'G';
fac.trackaction (
'CNTUPD',
rec.cnt_contract_key,
3,
SYSDATE,
v_aanduiding);
END LOOP;
FOR rec IN c_update
LOOP
v_aanduiding :=
'Contract gewijzigd ' || CHR(10)
|| 'Scopebedrag op gebouw '
|| rec.scope_gebouwcode
|| ': ' || rec.cnt_contract_plaats_gewicht || ' --> ' || rec.scope_bedrag;
v_errorhint := 'scopebedrag aanpassen';
UPDATE cnt_contract_plaats
SET cnt_contract_plaats_gewicht = rec.scope_bedrag
WHERE cnt_contract_key = rec.cnt_contract_key
AND cnt_alg_plaats_key = rec.cnt_alg_plaats_key
AND cnt_alg_plaats_code = 'G';
fac.trackaction (
'CNTUPD',
rec.cnt_contract_key,
3,
SYSDATE,
v_aanduiding);
END LOOP;
FOR rec IN c_toev
LOOP
v_aanduiding :=
'Contract gewijzigd ' || CHR(10)
|| 'Gebouw toegevoegd: '
|| rec.scope_gebouwcode
|| ' met bedrag '
|| rec.scope_bedrag;
v_errorhint := 'gebouw toevoegen';
INSERT INTO cnt_contract_plaats (cnt_contract_key,
cnt_alg_plaats_code,
cnt_alg_plaats_key,
cnt_contract_plaats_gewicht)
VALUES (rec.cnt_contract_key,
'G',
rec.cnt_alg_plaats_key,
rec.scope_bedrag);
fac.trackaction (
'CNTUPD',
rec.cnt_contract_key,
3,
SYSDATE,
v_aanduiding);
END LOOP;
FOR rec IN c
LOOP
v_totaalbedrag_scope := 0;
v_totaalbedrag_cnt := 0;
v_aanduiding := 'Contract gewijzigd ' || CHR(10)
|| 'Op contract ' || rec.cnt_nr || ' is totaalbedrag aangepast';
v_errorhint := 'Totaalbedrag aanpassen';
BEGIN
SELECT SUM (cnt_contract_plaats_gewicht)
INTO v_totaalbedrag_scope
FROM cnt_contract_plaats cp
WHERE cp.cnt_contract_key = rec.cnt_contract_key
AND cp.cnt_contract_plaats_verwijder IS NULL;
SELECT c.cnt_contract_kosten
INTO v_totaalbedrag_cnt
FROM cnt_contract c
WHERE c.cnt_contract_key = rec.cnt_contract_key;
IF v_totaalbedrag_cnt <> v_totaalbedrag_scope
THEN
UPDATE cnt_contract c
SET c.cnt_contract_kosten = v_totaalbedrag_scope,
c.cnt_contract_termijnkosten = v_totaalbedrag_scope /12
WHERE c.cnt_contract_key = rec.cnt_contract_key;
v_aanduiding := 'Contract gewijzigd ' || CHR(10)
|| 'Contractbedrag: ' || v_totaalbedrag_cnt || ' --> ' || v_totaalbedrag_scope;
fac.trackaction (
'CNTUPD',
rec.cnt_contract_key,
3,
SYSDATE,
v_aanduiding);
END IF;
END;
END LOOP;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes;
fac.imp_writelog (p_import_key,
'E',
v_errormsg || v_aanduiding,
v_errorhint);
END ykpn_update_contractscope;
/
CREATE OR REPLACE PROCEDURE ykpn_select_daily_task (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
v_errorhint VARCHAR2 (1000);
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
BEGIN
v_errorhint := 'Starten daily task';
YKPN.tsk_bevr_contract(p_applname, p_applrun);
YKPN.tsk_mail_locman(p_applname, p_applrun);
YKPN.tsk_bez_buitmld(p_applname, p_applrun);
YKPN.tsk_bez_cleanup(p_applname, p_applrun);
YKPN.tsk_cnt_index(p_applname, p_applrun);
YKPN.tsk_mld_keuring(p_applname, p_applrun);
YKPN.cleanup_room_dep_contracts;
-- maak opdrachten aan die volgens autoorder aangemaakt hadden moeten worden
-- onder workflowmeldingen.
-- YKPN.autoorder;
-- YKPN.tsk_mail_retail(p_applname, p_applrun); Rapportages worden nu door PowerBI via API request opgehaald.
YKPN.tsk_bes_geleverd(p_applname, p_applrun);
YKPN.tsk_mld_thuiswerkwinkel(p_applname, p_applrun);
YKPN.tsk_mldbes_approve(p_applname, p_applrun);
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog (p_applname,
'E',
'Daily task afgebroken!: ' || v_errormsg,
v_errorhint);
COMMIT;
END;
/
CREATE OR REPLACE VIEW ykpn_v_rap_cnt_indexatie
AS
SELECT fac_tracking_datum,
cnt_contract_nummer_intern,
cnt_contract_omschrijving,
prs_bedrijf_naam,
fac_tracking_oms
FROM fac_tracking t,
fac_srtnotificatie sn,
cnt_contract c,
prs_bedrijf b
WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_xmlnode = 'contract'
AND fac_tracking_oms LIKE 'Contract ge<67>ndexeerd met%'
AND t.fac_tracking_refkey = c.cnt_contract_key
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key;
CREATE OR REPLACE PROCEDURE YKPN_IMPORT_AFDELING_COSTCENTRE(p_import_key IN NUMBER)
AS
BEGIN
NULL;
END;
/
CREATE OR REPLACE PROCEDURE YKPN_UPDATE_AFDELING_COSTCENTRE(p_import_key IN NUMBER)
AS
CURSOR sel
IS
SELECT fac_imp_csv_col01 prs_afdeling_key,
fac_imp_csv_col02 prs_afdeling_naam,
fac_imp_csv_col03 prs_afdeling_omschrijving,
fac_imp_csv_col04 prs_kostenplaats_nr
from fac_imp_csv
where fac_import_key=p_import_key
ORDER by fac_imp_csv_index;
v_errormsg VARCHAR (200);
v_errorhint VARCHAR (200);
oracle_err_mes VARCHAR2 (150);
oracle_err_num NUMBER;
v_aanduiding VARCHAR (100);
v_message VARCHAR2 (100);
v_afdeling_key NUMBER;
v_new_kostenplaats_key NUMBER;
v_org_kostenplaats_key NUMBER;
BEGIN
FOR rec IN sel
LOOP
IF (rec.prs_afdeling_key ='PRS_AFDELING_KEY' AND
rec.prs_afdeling_naam = 'PRS_AFDELING_NAAM' AND
rec.prs_afdeling_omschrijving ='PRS_AFDELING_OMSCHRIJVING' AND
rec.prs_kostenplaats_nr = 'PRS_KOSTENPLAATS_NR')
THEN
fac.imp_writelog (p_import_key,
'W',
'Skipping header',
'');
ELSE
v_afdeling_key:=0;
v_new_kostenplaats_key:=0;
v_org_kostenplaats_key:=0;
IF rec.prs_kostenplaats_nr IS NOT NULL
THEN
v_aanduiding:='Afdeling: '||rec.prs_afdeling_naam||' niet gevonden of verwijderde afdeling.';
BEGIN
IF rec.prs_afdeling_key IS NOT NULL OR LENGTH(rec.prs_afdeling_key)<1
THEN
SELECT prs_afdeling_key, prs_kostenplaats_key
INTO v_afdeling_key, v_org_kostenplaats_key
from prs_afdeling
where prs_afdeling_key=rec.prs_afdeling_key
and prs_afdeling_verwijder IS NULL;
ELSE
SELECT prs_afdeling_key, prs_kostenplaats_key
INTO v_afdeling_key, v_org_kostenplaats_key
from prs_afdeling
where prs_afdeling_naam=rec.prs_afdeling_naam
and prs_afdeling_verwijder IS NULL;
END IF;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
fac.imp_writelog (p_import_key,
'E',
v_aanduiding,
'');
END;
BEGIN
v_aanduiding:=' Fout bij ophalen kostenplaats :' ||rec.prs_kostenplaats_nr;
SELECT prs_kostenplaats_key
INTO v_new_kostenplaats_key
FROM prs_kostenplaats
WHERE prs_kostenplaats_nr=rec.prs_kostenplaats_nr
AND prs_kostenplaats_verwijder IS NULL;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
fac.imp_writelog (p_import_key,
'E',
v_aanduiding,
'');
END;
IF v_afdeling_key>0 AND v_new_kostenplaats_key>0
THEN
UPDATE prs_afdeling set prs_kostenplaats_key=v_new_kostenplaats_key
WHERE prs_afdeling_key=v_afdeling_key;
fac.imp_writelog (p_import_key,
'I',
'Afdeling '||rec.prs_afdeling_omschrijving||' is geupdate naar kostenplaats '|| rec.prs_kostenplaats_nr,
'');
END IF;
ELSE
fac.imp_writelog (p_import_key,
'W',
'Kostenplaats veld in afdeling '||rec.prs_afdeling_naam||' is leeg dus slaan we deze over',
'');
END IF;
END IF;
END LOOP;
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,
'');
END;
/
CREATE OR REPLACE PROCEDURE ykpn_import_organisatie (p_import_key IN NUMBER)
AS
c_fielddelimitor VARCHAR2 (1) := ';';
v_newline VARCHAR2 (1000); -- Input line
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
header_is_valid NUMBER;
v_count NUMBER;
v_ongeldig NUMBER (1);
v_mode NUMBER (1);
v_aanduiding VARCHAR2 (200);
v_all_null BOOLEAN;
v_count_error NUMBER (10);
v_count_tot NUMBER (10);
v_count_import NUMBER (10);
-- De importvelden:
v_dpt_name VARCHAR2 (100);
v_dpt_parent_dep_id VARCHAR2 (100);
v_dpt_id VARCHAR2 (100);
v_dpt_tree VARCHAR2 (100);
v_dpt_name_long VARCHAR2 (100);
v_dpt_code VARCHAR2 (100);
v_budgethouder VARCHAR2 (100);
CURSOR c
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
BEGIN
COMMIT;
v_count_error := 0;
header_is_valid := 0;
v_count_tot := 0;
v_count_import := 0;
FOR rec IN c
LOOP
BEGIN
v_errormsg := 'Fout FETCH te importeren rij';
v_newline := rec.fac_imp_file_line;
v_errormsg := 'Fout opvragen te importeren rij';
v_aanduiding := '';
-- Lees alle veldwaarden
fac.imp_getfield (v_newline, c_fielddelimitor, v_dpt_name);
fac.imp_getfield (v_newline, c_fielddelimitor, v_dpt_parent_dep_id);
fac.imp_getfield (v_newline, c_fielddelimitor, v_dpt_id);
fac.imp_getfield (v_newline, c_fielddelimitor, v_dpt_tree);
fac.imp_getfield (v_newline, c_fielddelimitor, v_dpt_name_long);
fac.imp_getfield (v_newline, c_fielddelimitor, v_dpt_code);
fac.imp_getfield (v_newline, c_fielddelimitor, v_budgethouder);
v_aanduiding := v_dpt_id || '|' || v_dpt_name_long || '|' || v_dpt_code || '| ';
v_count_tot := v_count_tot + 1;
-- Insert geformatteerde import record
IF header_is_valid = 0
THEN
IF v_dpt_name = 'dpt_name'
AND v_dpt_name_long = 'dpt_name_long'
AND v_dpt_code = 'dpt_code'
THEN
header_is_valid := 1;
DELETE FROM ykpn_imp_organisatie;
ELSE
IF rec.fac_imp_file_index = 1
THEN
fac.imp_writelog (p_import_key,
'E',
'Geen geldige header aangetroffen',
v_dpt_name || '-' || v_dpt_name_long || '-' || v_dpt_code);
END IF;
END IF;
ELSE
v_errormsg :=
'Fout bij toevoegen te impoteren bedrijf/afdeling [' || v_aanduiding || ']';
INSERT INTO ykpn_imp_organisatie (prs_bedrijf_naam,
prs_afdeling_naam,
prs_afdeling_naam_parent,
prs_afdeling_omschrijving,
prs_kostenplaats_nr,
prs_budgethouder,
fac_imp_file_index)
VALUES ('KPN',
v_dpt_id,
v_dpt_parent_dep_id,
v_dpt_name_long,
v_dpt_code,
v_budgethouder,
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,
'');
END ykpn_import_organisatie;
/
CREATE OR REPLACE PROCEDURE ykpn_update_organisatie (p_import_key IN NUMBER)
AS
BEGIN
NULL;
-- update wordt door scheduled taak uitgevoerd.
END;
/
CREATE OR REPLACE PROCEDURE ykpn_import_organisatie_sched (p_import_key IN NUMBER)
AS
BEGIN
NULL;
END;
/
CREATE OR REPLACE PROCEDURE ykpn_update_organisatie_sched (p_import_key IN NUMBER)
AS
CURSOR c
IS
SELECT *
FROM ykpn_imp_organisatie i
ORDER BY fac_imp_file_index;
--SELECT i.*, a.prs_afdeling_key
--FROM ykpn_imp_organisatie i, prs_afdeling a, prs_kostenplaats k
--WHERE i.prs_afdeling_naam = a.prs_afdeling_naam(+)
--WHERE i.prs_afdeling_naam = k.prs_kostenplaats_nr(+)
--AND a.prs_kostenplaats_key(+)= k.prs_kostenplaats_key
--ORDER BY fac_imp_file_index;
CURSOR c_del
IS
SELECT a.prs_afdeling_key, a.prs_afdeling_naam, a.prs_afdeling_omschrijving, k.prs_kostenplaats_key, k.prs_kostenplaats_nr
FROM prs_afdeling a, prs_kostenplaats k
WHERE a.prs_afdeling_verwijder IS NULL
AND a.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
AND a.prs_afdeling_key <> 1 -- afdeling onbekend
AND SUBSTR(a.prs_afdeling_naam,1,1) <> '_'
AND a.prs_afdeling_naam NOT IN
(SELECT prs_afdeling_naam FROM ykpn_imp_organisatie);
v_errormsg VARCHAR (200);
v_errorhint VARCHAR (200);
oracle_err_mes VARCHAR2 (150);
oracle_err_num NUMBER;
v_maxvariation NUMBER;
currentversion fac_module.fac_module_version%TYPE;
v_aanduiding VARCHAR (100);
v_message VARCHAR2 (100);
v_prs_bedrijf_key NUMBER;
v_prs_afd_parent_key NUMBER;
v_prs_kostenplaats_key NUMBER;
v_prs_afdeling_key NUMBER;
v_prs_afd_niveau_parent NUMBER;
v_budgethouder_key NUMBER;
v_count NUMBER;
v_newcount NUMBER;
v_oldcount NUMBER;
v_impcount NUMBER;
BEGIN
-- de topelementen mogen geen parent hebben.
UPDATE ykpn_imp_organisatie
SET prs_afdeling_naam_parent = NULL
WHERE prs_afdeling_naam_parent = 62206;
FOR rec IN c
LOOP
v_aanduiding := rec.prs_afdeling_naam;
v_errorhint := 'Kijk of bedrijf al bestaat';
-- Bestaat het bedrijf al?
BEGIN
SELECT prs_bedrijf_key
INTO v_prs_bedrijf_key
FROM prs_bedrijf
WHERE UPPER (prs_bedrijf_naam) = UPPER (rec.prs_bedrijf_naam)
AND prs_bedrijf_verwijder IS NULL;
BEGIN
IF rec.prs_budgethouder IS NOT NULL
THEN
v_errorhint := 'Zoek de budgethouder van de kostenplaats op: ' || rec.prs_budgethouder;
SELECT prs_perslid_key
INTO v_budgethouder_key
FROM prs_v_aanwezigperslid
WHERE prs_perslid_nr = rec.prs_budgethouder;
ELSE
v_budgethouder_key := NULL;
END IF;
EXCEPTION WHEN NO_DATA_FOUND 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, 'W', v_errormsg, v_errorhint || '-' || v_aanduiding);
v_budgethouder_key := NULL;
END;
v_errorhint := 'Kijk of kostenplaats al bestaat';
IF rec.prs_kostenplaats_nr IS NOT NULL
THEN
BEGIN
SELECT prs_kostenplaats_key
INTO v_prs_kostenplaats_key
FROM prs_kostenplaats
WHERE prs_kostenplaats_verwijder IS NULL
AND prs_kostenplaats_nr = rec.prs_kostenplaats_nr;
UPDATE prs_kostenplaats
SET prs_kostenplaats_omschrijving = rec.prs_afdeling_omschrijving,
prs_perslid_key = v_budgethouder_key,
prs_kostenplaats_eind = NULL
WHERE prs_kostenplaats_key = v_prs_kostenplaats_key;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
v_errorhint := 'Nieuwe kostenplaats toevoegen';
INSERT INTO prs_kostenplaats
(
prs_kostenplaats_nr,
prs_kostenplaats_omschrijving,
prs_kostenplaats_module,
prs_perslid_key
)
VALUES (
rec.prs_kostenplaats_nr,
rec.prs_afdeling_omschrijving,
'PRS',
v_budgethouder_key
)
RETURNING prs_kostenplaats_key INTO v_prs_kostenplaats_key;
END;
ELSE
v_prs_kostenplaats_key := NULL;
END IF;
v_errorhint := 'Kijk of parent bestaat';
IF rec.prs_afdeling_naam_parent IS NOT NULL
THEN
SELECT prs_afdeling_key
INTO v_prs_afd_parent_key
FROM prs_afdeling
WHERE prs_afdeling_verwijder IS NULL
AND prs_afdeling_naam = rec.prs_afdeling_naam_parent;
ELSE
v_prs_afd_parent_key := NULL;
END IF;
v_errorhint := 'Zoek het niveau van de parent';
IF v_prs_afd_parent_key IS NOT NULL
THEN
SELECT prs_kenmerklink_waarde
INTO v_prs_afd_niveau_parent
FROM prs_kenmerklink
WHERE prs_kenmerk_key = 2 -- afdelingsniveau
AND prs_link_key = v_prs_afd_parent_key;
ELSE
v_prs_afd_niveau_parent := 0;
END IF;
v_prs_afd_niveau_parent := v_prs_afd_niveau_parent +1;
v_prs_afdeling_key:=-1;
-- We gaan eerst de afdeling op zowel kostenplaats als naam opzoeken,
SELECT COALESCE(MAX(prs_afdeling_key),-1)
INTO v_prs_afdeling_key
FROM prs_afdeling a, prs_kostenplaats k
WHERE (k.prs_kostenplaats_nr=rec.prs_kostenplaats_nr
AND a.prs_kostenplaats_key=k.prs_kostenplaats_key
AND a.prs_afdeling_naam = rec.prs_kostenplaats_nr
AND a.prs_afdeling_verwijder IS NULL);
-- ALs niet gevonden gaan we hem op basis van de kostenplaats opzoeken
IF v_prs_afdeling_key=-1 THEN
SELECT COALESCE(MAX(prs_afdeling_key),-1)
INTO v_prs_afdeling_key
FROM prs_afdeling a, prs_kostenplaats k
WHERE (k.prs_kostenplaats_nr=rec.prs_kostenplaats_nr
AND a.prs_kostenplaats_key=k.prs_kostenplaats_key
AND a.prs_afdeling_verwijder IS NULL);
END IF;
-- Indien nog steeds niet gevonden gaan we hem op basis van de afdelingnaam opzoeken (dit is vaak de oude code die IAM niet meer heeft)
IF v_prs_afdeling_key=-1 THEN
SELECT COALESCE(MAX(prs_afdeling_key),-1)
INTO v_prs_afdeling_key
FROM prs_afdeling a
WHERE a.prs_afdeling_naam = rec.prs_kostenplaats_nr
AND a.prs_afdeling_verwijder IS NULL;
END IF;
IF v_prs_afdeling_key = -1
THEN
-- toevoegen afdeling
v_errorhint := 'Toevoegen afdeling'||rec.prs_afdeling_naam;
INSERT INTO prs_afdeling
(
prs_bedrijf_key,
prs_afdeling_parentkey,
prs_afdeling_naam,
prs_afdeling_omschrijving,
prs_kostenplaats_key
)
VALUES (
v_prs_bedrijf_key,
NULL,
rec.prs_afdeling_naam,
rec.prs_afdeling_omschrijving,
v_prs_kostenplaats_key
)
RETURNING prs_afdeling_key INTO v_prs_afdeling_key;
ELSE
-- aanpassen afdeling
v_errorhint := 'Aanpassen afdeling';
UPDATE prs_afdeling
SET prs_bedrijf_key = v_prs_bedrijf_key,
prs_afdeling_parentkey = NULL,
prs_afdeling_naam = rec.prs_afdeling_naam,
prs_afdeling_omschrijving = rec.prs_afdeling_omschrijving,
prs_kostenplaats_key = v_prs_kostenplaats_key
WHERE prs_afdeling_key = v_prs_afdeling_key;
-- v_prs_afdeling_key := rec.prs_afdeling_key;
END IF;
ykpn.set_kenmerk('PRS', 1, v_prs_afdeling_key, v_prs_afd_parent_key, 0);
ykpn.set_kenmerk('PRS', 2, v_prs_afdeling_key, v_prs_afd_niveau_parent, 0);
EXCEPTION
WHEN OTHERS
THEN
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'error ' || SQLCODE || '/' || oracle_err_mes;
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
v_errorhint || '-' || v_aanduiding
);
END;
END LOOP;
-- Legenda's bijwerken voor de thema's
/* INSERT INTO cad_legendawaarde (cad_legenda_key,
cad_legendawaarde_value,
cad_legendawaarde_rgb,
cad_legendawaarde_omschr)
SELECT DISTINCT
61, -- huurder niveau 4
waarde,
TO_CHAR (DBMS_UTILITY.get_hash_value (WAARDE, 0, POWER (2, 24)),
'0XXXXX'),
waarde
FROM ykpn_v_thema_huurder thv
WHERE waarde IS NOT NULL
AND NOT EXISTS
(SELECT cl.cad_legendawaarde_value
FROM cad_legendawaarde cl
WHERE cl.cad_legendawaarde_value = thv.waarde
AND cl.cad_legenda_key = 61);
INSERT INTO cad_legendawaarde (cad_legenda_key,
cad_legendawaarde_value,
cad_legendawaarde_rgb,
cad_legendawaarde_omschr)
SELECT DISTINCT
141, -- huurder niveau 3
waarde,
TO_CHAR (DBMS_UTILITY.get_hash_value (WAARDE, 0, POWER (2, 24)),
'0XXXXX'),
waarde
FROM ykpn_v_thema_huurder3 thv
WHERE waarde IS NOT NULL
AND NOT EXISTS
(SELECT cl.cad_legendawaarde_value
FROM cad_legendawaarde cl
WHERE cl.cad_legendawaarde_value = thv.waarde
AND cl.cad_legenda_key = 141);
INSERT INTO cad_legendawaarde (cad_legenda_key,
cad_legendawaarde_value,
cad_legendawaarde_rgb,
cad_legendawaarde_omschr)
SELECT DISTINCT
181, -- huurder niveau 2
waarde,
TO_CHAR (DBMS_UTILITY.get_hash_value (WAARDE, 0, POWER (2, 24)),
'0XXXXX'),
waarde
FROM ykpn_v_thema_huurder2 thv
WHERE waarde IS NOT NULL
AND NOT EXISTS
(SELECT cl.cad_legendawaarde_value
FROM cad_legendawaarde cl
WHERE cl.cad_legendawaarde_value = thv.waarde
AND cl.cad_legenda_key = 181); */
-- afdelingen verwijderen;
FOR rec IN c_del
LOOP
BEGIN
-- Verwijder ruimte afdelingen
SELECT COUNT(*)
INTO v_count
FROM prs_ruimteafdeling ra
WHERE ra.prs_afdeling_key = rec.prs_afdeling_key;
IF v_count > 0
THEN
fac.imp_writelog (p_import_key, 'I', 'Ruimteafdeling bezetting wordt verwijderd (' || v_count || '): ' || rec.prs_afdeling_naam || '-'
|| rec.prs_afdeling_omschrijving, '');
DELETE prs_ruimteafdeling WHERE prs_afdeling_key = rec.prs_afdeling_key;
END IF;
SELECT MAX (fac_message_code)
INTO v_message
FROM prs_v_afd_verplichting v
WHERE v.PRS_AFDELING_KEY = rec.prs_afdeling_key;
IF v_message IS NOT NULL
THEN
fac.imp_writelog (p_import_key, 'E', 'Afdeling kan niet verwijder worden: ' || rec.prs_afdeling_naam || '-'
|| rec.prs_afdeling_omschrijving || ' ## ' || v_message, '');
ELSE
UPDATE prs_afdeling a
SET prs_afdeling_verwijder = SYSDATE
WHERE a.prs_afdeling_key = rec.prs_afdeling_key;
BEGIN
-- kijk of de bijbehorende kostenplaats nog voorkomt in de import.
SELECT count(*)
INTO v_count
FROM ykpn_imp_organisatie
WHERE prs_kostenplaats_nr = rec.prs_kostenplaats_nr;
IF v_count = 0
THEN
UPDATE prs_kostenplaats
SET prs_kostenplaats_eind = SYSDATE
WHERE prs_kostenplaats_key = rec.prs_kostenplaats_key;
END IF;
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, 'W', 'Kostenplaats kan niet komen te vervallen: ' || rec.prs_kostenplaats_nr || '-'
|| rec.prs_afdeling_omschrijving || ' ## ' || v_errormsg, '');
END;
fac.imp_writelog (p_import_key, 'I', 'Afdeling is verwijderd: ' || rec.prs_afdeling_naam || '-' || rec.prs_afdeling_omschrijving, '');
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'error ' || oracle_err_num || '/' || oracle_err_mes;
IF INSTR (oracle_err_mes, 'm015') > 0
THEN
fac.imp_writelog (p_import_key, 'E', 'Afdeling kan niet verwijder worden:: ' || rec.prs_afdeling_naam || '-'
|| rec.prs_afdeling_omschrijving || ' ## ' || 'Afdeling bevat personen', '');
ELSIF INSTR (oracle_err_mes, 'PRS_RUIMTEAFDELING-records') >
0
THEN
fac.imp_writelog (p_import_key, 'E', 'Afdeling kan niet verwijder worden:: ' || rec.prs_afdeling_naam || '-'
|| rec.prs_afdeling_omschrijving || ' ## ' || 'Afdeling is gekoppeld aan ruimte', '');
ELSE
fac.imp_writelog (p_import_key, 'E', 'Afdeling kan niet verwijder worden:: ' || rec.prs_afdeling_naam || '-'
|| rec.prs_afdeling_omschrijving || ' @@ ' || v_errormsg, '');
END IF;
END;
END LOOP;
END ykpn_update_organisatie_sched;
/
-- Handmatig import die ter vervanging is van de door IAM aangeroepen import aangezien IAM niet meer over de juiste data beschikt (zie YKPN#85953).
CREATE OR REPLACE PROCEDURE ykpn_import_organisatie_man (p_import_key IN NUMBER)
AS
BEGIN
ykpn_import_organisatie(p_import_key);
END;
/
CREATE OR REPLACE PROCEDURE ykpn_update_organisatie_man (p_import_key IN NUMBER)
AS
BEGIN
ykpn_update_organisatie_sched(p_import_key);
END;
/
CREATE OR REPLACE PROCEDURE ykpn_import_perslid (p_import_key IN NUMBER)
AS
CURSOR c
IS
SELECT (SELECT prs_perslid_nr
FROM prs_perslid p
WHERE prs_perslid_verwijder IS NULL
AND p.prs_perslid_oslogin = UPPER (i.prs_perslid_oslogin))
prs_perslid_nr,
prs_perslid_oslogin,
COUNT ( * )
FROM fac_imp_perslid i
GROUP BY prs_perslid_oslogin
HAVING COUNT (prs_perslid_oslogin) > 1;
CURSOR org
IS
SELECT DISTINCT prs_kenmerk8 prs_kostenplaats_nr,
prs_kenmerk7 prs_afdeling_omschrijving,
prs_kenmerk5 prs_budgethouder
FROM fac_imp_perslid
WHERE fac_import_key=p_import_key;
v_seq_of_columns VARCHAR(255);
v_count NUMBER;
BEGIN
v_count:=0;
-- we plaaten de functie in kenmerkx
-- de functie wordt tijdelijk gevuld met de key van het record. Puur om een waarde
-- erin te hebben staan.
UPDATE fac_imp_file SET fac_imp_file_line = REPLACE(fac_imp_file_line, 'NULL') WHERE fac_import_key = p_import_key;
v_seq_of_columns := '14;14;0;0;0;0;8;6;5;24;4;17;16;20;0;11;0;9;0;2;1;3;0;0;0;0;1;8;23;24;25;26;21;8;14;0;0;0;0;0;0;0;0;0;0;0';
prs.import_perslid(p_import_key, v_seq_of_columns, 'emp_cbl_number;emp_number;emp_ruis_id;prs_name_initials;prs_name_prefix;prs_name_last;emp_sup_name;emp_dep_code;emp_email;emp_active;emp_phone;emp_mobile;emp_sms_authentication;emp_loc_code;emp_date_termination;prs_name_partner_prefix;prs_name_partner_last;prs_umra_name_prefix;prs_umra_name_last;prs_name_last_pref;emp_dep_name;emp_fnc_code;emp_fnc_name;prs_name_call%');
-- eerst maar opschonen
DELETE FROM ykpn_imp_organisatie;
-- Gaan we nu de orgnistie structuur opbouwen zonder de relatie tussen de afdelingen, dat zijn we nu dus kwijt.
FOR rec_org IN org
LOOP
v_count:=v_count+1;
INSERT INTO ykpn_imp_organisatie (prs_bedrijf_naam,
prs_afdeling_naam,
prs_afdeling_naam_parent,
prs_afdeling_omschrijving,
prs_kostenplaats_nr,
prs_budgethouder,
fac_imp_file_index)
VALUES ('KPN',
rec_org.prs_kostenplaats_nr,
NULL,
rec_org.prs_afdeling_omschrijving,
rec_org.prs_kostenplaats_nr,
rec_org.prs_budgethouder,
v_count);
END LOOP;
-- Maak standaard verdieping aan voor de werkplek
INSERT INTO alg_verdieping (alg_gebouw_key, alg_verdieping_code, alg_verdieping_volgnr, alg_verdieping_omschrijving)
SELECT alg_gebouw_key, '_', 99, 'Dummy'
FROM alg_gebouw g
WHERE alg_gebouw_verwijder IS NULL
AND NOT EXISTS (SELECT v.alg_gebouw_key
FROM alg_verdieping v
WHERE v.alg_gebouw_key = g.alg_gebouw_key
AND v.alg_verdieping_code = '_');
-- Maak standaard ruimte aan voor de werkplek
INSERT INTO alg_ruimte (alg_verdieping_key, alg_ruimte_nr, alg_srtruimte_key)
SELECT v.alg_verdieping_key, '_', 1
FROM alg_verdieping v
WHERE alg_verdieping_verwijder IS NULL
AND NOT EXISTS (SELECT r.alg_verdieping_key
FROM alg_ruimte r
WHERE r.alg_verdieping_key = v.alg_verdieping_key
AND r.alg_ruimte_nr = '_');
UPDATE fac_imp_perslid SET alg_verdieping_volgnr = '99',
alg_ruimte_nr = '_'
WHERE alg_locatie_code IS NOT NULL;
UPDATE fac_imp_perslid i
SET alg_locatie_code = ( SELECT alg_locatie_code
FROM alg_v_aanweziglocatie l, alg_v_aanweziggebouw g
WHERE l.alg_locatie_key = g.alg_locatie_key
AND g.alg_gebouw_code = i.alg_gebouw_code);
UPDATE fac_imp_perslid
SET prs_perslid_nr = TO_CHAR (prs_perslid_nr, 'fm000000')
WHERE fac.safe_to_number (prs_perslid_nr) IS NOT NULL;
UPDATE fac_imp_perslid
SET prs_srtperslid_omschrijving = COALESCE(prs_kenmerk3, 'Extern');
-- Verwijder dubbele records (personen met <20><>n login en meerdere personeelsnummers
-- Anders krijgen we allemaal onnodige logging
FOR rec IN c
LOOP
DELETE fac_imp_perslid
WHERE prs_perslid_oslogin = rec.prs_perslid_oslogin AND prs_perslid_nr <> rec.prs_perslid_nr;
END LOOP;
-- Mensen zonder werkplek zetten we onder een standaard locatie zodat hierop gezocht kan worden.
UPDATE fac_imp_perslid
SET alg_locatie_code = '00000',
alg_gebouw_code = '00000',
alg_verdieping_volgnr = '99',
alg_ruimte_nr = '_'
WHERE alg_locatie_code IS NULL;
-- De afdelingscode uit het persoonsbestand komt overeen met de kostenplaats. Dus zoeken we a.d.h.v.
-- de kostenplaats de juiste afdelingscode op.
-- YKPN#58764: Er kunnen natuurlijk >1 afdelingen zijn met dezelfde kostenplaats en dan ketst(e)
-- deze import met een "Enkele-rij subselect retourneert meer dan <20><>n rij". Dit opgelost
-- door voortaan de MIN (= alfabetisch 1e) te pakken en geen verwijderde entries meer
-- te beschouwen.
-- NB. En als >1 afdelingen dezelfde prs_afdeling_naam hebben (wat ook kan), dan lost de
-- standaard prs.update_perslid () dit maar op (door een fout te loggen)?
/*UPDATE fac_imp_perslid i
SET prs_kenmerk2 = prs_afdeling_naam,
prs_afdeling_naam =prs_afdeling_naam;
(SELECT MIN(k.prs_kostenplaats_nr) --MIN (a.prs_afdeling_naam)
FROM prs_afdeling a, prs_v_aanwezigkostenplaats k
WHERE a.prs_afdeling_verwijder IS NULL
AND a.prs_kostenplaats_key = k.prs_kostenplaats_key
AND k.prs_kostenplaats_nr = i.prs_afdeling_naam); */
-- KPN gebruikt een andere codering voor het gebruik van de partnernaam daarom gaan we deze even omzetten
-- KPN code 1 eigennaam wordt 0
-- KPN code 2 partnernaam wordt 2
-- KPN code 3 partner - eigen naam wordt 1
-- KPN code 4 eigen - partner naam wordt 3
UPDATE fac_imp_perslid i
SET prs_perslid_naamgebruik_code = DECODE(prs_perslid_naamgebruik_code,1,0,2,2,3,1,4,3,0);
--
-- KPN retail (winkels) aanpassingen
--
-- Pas de werkplek van de winkel accounts aan naar de locatie waar de winkel staat.
-- Voor PMF accounts en KPN accounts geldt dat de code op positie 4 t/m 6 in de login voor winkelaccounts overeenkomt met de locatiecode
UPDATE fac_imp_perslid
SET alg_locatie_code = SUBSTR(prs_perslid_oslogin, 4,3),
alg_gebouw_code = '_',
alg_verdieping_volgnr = '99',
alg_ruimte_nr = '_'
WHERE UPPER(prs_perslid_oslogin) LIKE 'PMF%' OR UPPER(prs_perslid_oslogin) LIKE 'KPN%';
-- Voor andere locaies is bij de locatie een kenmerk 'Ruisnaamprefix' (key 1260) aangemaakt. Deze string bevat de prefix van de ruisnamen
-- die aan deze locatie gekoppeld moeten worden.
UPDATE fac_imp_perslid i
SET alg_locatie_code = (SELECT l.alg_locatie_code
FROM alg_locatie l, alg_onrgoedkenmerk aogk
WHERE aogk.alg_kenmerk_key = 1260
AND aogk.alg_onrgoed_key = l.alg_locatie_key
AND UPPER(i.prs_perslid_oslogin) LIKE UPPER(aogk.alg_onrgoedkenmerk_waarde) || '%'),
alg_gebouw_code = '_',
alg_verdieping_volgnr = '99',
alg_ruimte_nr = '_'
WHERE EXISTS ( SELECT ok.alg_onrgoedkenmerk_key
FROM alg_onrgoedkenmerk ok
WHERE ok.alg_kenmerk_key = 1260
AND UPPER(i.prs_perslid_oslogin) LIKE UPPER(ok.alg_onrgoedkenmerk_waarde) || '%');
-- Zet voor de winkels de voornaam gelijk aan de ruisnaam en de achternaam op de omschrijving van de locatie
UPDATE fac_imp_perslid i
SET prs_perslid_naam = COALESCE( (SELECT l.alg_locatie_omschrijving
FROM alg_locatie l
WHERE i.alg_locatie_code = l.alg_locatie_code
AND l.alg_locatie_verwijder IS NULL), prs_perslid_naam),
prs_perslid_voornaam = LOWER(prs_perslid_oslogin)
WHERE EXISTS ( SELECT l.alg_locatie_code
FROM alg_v_locatie_gegevens l
WHERE i.alg_locatie_code = l.alg_locatie_code
AND l.alg_regio_upper = 'RETAIL');
-- Voeg voor alle retaillocaties een afleveradres toe.
INSERT INTO mld_adres (mld_adres_naam, alg_locatie_key, mld_adres_afleveradres)
SELECT alg_locatie_omschrijving, alg_locatie_key, 1
FROM alg_v_locatie_gegevens lg
WHERE alg_regio_key IN (3,21)
AND NOT EXISTS
(SELECT mld_adres_key
FROM mld_adres m
WHERE m.alg_locatie_key = lg.alg_locatie_key);
UPDATE mld_adres m
SET (mld_adres_naam, mld_adres_bezoek_adres, mld_adres_bezoek_postcode, mld_adres_bezoek_plaats) =
(SELECT alg_locatie_omschrijving, alg_locatie_adres, alg_locatie_postcode, alg_locatie_plaats
FROM alg_locatie l
WHERE l.alg_locatie_key = m.alg_locatie_key)
WHERE m.mld_adres_afleveradres = 1 AND m.alg_locatie_key IS NOT NULL;
END ykpn_import_perslid;
/
CREATE OR REPLACE PROCEDURE ykpn_update_perslid (p_import_key IN NUMBER)
AS
v_seq_of_columns VARCHAR(255);
BEGIN
NULL;
-- de daadwerkelijke update wordt door een scheduled task (ykpn_update_perslid_sched) in de nacht uitgevoerd.
END ykpn_update_perslid;
/
CREATE OR REPLACE PROCEDURE ykpn_import_perslid_sched (p_import_key IN NUMBER)
AS
BEGIN
NULL;
END;
/
CREATE OR REPLACE PROCEDURE ykpn_update_perslid_sched (p_import_key IN NUMBER)
AS
CURSOR c_kenmerk IS
SELECT p.prs_perslid_key, i.prs_kenmerk5 leidingg, i.prs_kenmerk6 bhv
FROM prs_v_aanwezigperslid p, fac_imp_perslid i
WHERE p.prs_perslid_nr = i.prs_perslid_nr;
CURSOR c_del IS
SELECT p.prs_perslid_key, p.prs_perslid_nr, pf.prs_perslid_naam_full, p.prs_perslid_oslogin
FROM fac_imp_perslid i, prs_perslid p, prs_v_perslid_fullnames_all pf
WHERE p.prs_perslid_nr = i.prs_perslid_nr(+)
AND pf.prs_perslid_key = p.prs_perslid_key
AND p.prs_perslid_nr IS NOT NULL
AND i.prs_perslid_nr IS NULL
AND p.prs_perslid_verwijder IS NULL;
-- cursor om het mobiele telefoonnummer van de clustermanager toe te voegen aan de locatie.
CURSOR c_upd_retail_mob_clusterm IS
SELECT (SELECT prs_perslid_mobiel
FROM prs_perslid
WHERE prs_perslid_key =
fac.safe_to_number (alg_onrgoedkenmerk_waarde)) mob,
aog.alg_onrgoed_key
FROM alg_onrgoedkenmerk aog
WHERE alg_kenmerk_key = 1360;
v_perslid_nr PRS_PERSLID.PRS_PERSLID_NR%TYPE;
v_leidingg_key NUMBER;
v_bhv NUMBER;
v_errormsg VARCHAR2 (1000);
v_hint VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count NUMBER;
BEGIN
-- gn we eerst de organisatie bijwerken aange\ien de update_oragnisat_ssched niet meer wordt aangeroepen doro IAM.
-- Controleer of er wel genoeg mensen in de database staan
-- Veilige check is 10000 medewerkers
SELECT COUNT(*)
INTO v_count
FROM fac_imp_perslid;
IF v_count > 10000
THEN
-- Voordat we gaan importeren gaan we op zoek of we nog mensen moeten verwijderen die niet in de import voorkomen.
-- Nu komt het ook regelmatig voor dat mensen een ander personeelsnummer krijgen terwijl ze de login behouden. Deze
-- mensen proberen we om te hangen en het personeelsnummer aan te passen.
FOR rec IN c_del LOOP
BEGIN
v_hint := 'Zoek naar bestaande logincode: ' || rec.prs_perslid_nr || '-' || rec.prs_perslid_oslogin;
SELECT MIN(prs_perslid_nr)
INTO v_perslid_nr
FROM fac_imp_perslid i
WHERE UPPER(i.prs_perslid_oslogin) = rec.prs_perslid_oslogin
AND NOT EXISTS (SELECT prs_perslid_key FROM prs_perslid p WHERE p.prs_perslid_nr = i.prs_perslid_nr);
IF v_perslid_nr IS NOT NULL
THEN
v_hint := 'Pas login van te verwijderen persoon aan: ' || rec.prs_perslid_nr || '->' || v_perslid_nr || '-' || rec.prs_perslid_oslogin;
fac.imp_writelog (p_import_key, 'I', 'Te verwijderen persoon op login gevonden: ' || rec.prs_perslid_nr || '->' || v_perslid_nr || '-' || rec.prs_perslid_oslogin, '');
UPDATE prs_perslid p SET prs_perslid_nr = v_perslid_nr WHERE p.prs_perslid_key = rec.prs_perslid_key;
ELSE
prs.delete_perslid (p_import_key, rec.prs_perslid_key);
END IF;
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_hint);
END;
END LOOP;
prs.update_perslid (p_import_key, 'NR', 'A');
-- Vul de kenmerken bhv en leidinggevende
FOR rec IN c_kenmerk
LOOP
BEGIN
v_hint := 'Bepaal de leidinggevende: ' || rec.leidingg;
SELECT prs_perslid_key
INTO v_leidingg_key
FROM prs_v_aanwezigperslid
WHERE prs_perslid_nr = rec.leidingg;
v_hint := 'Vul het kenmerk leidinggevende: ' || rec.prs_perslid_key || '-' || v_leidingg_key;
-- Er is een veld voor de verntw bij de persoon die gaan we ook zetten
UPDATE prs_perslid
SET prs_perslid_key_verantw=v_leidingg_key
WHERE prs_perslid_key=rec.prs_perslid_key
AND prs_perslid_verwijder IS NULL;
ykpn.set_kenmerk('PRS', 1160, rec.prs_perslid_key, v_leidingg_key, 0);
v_hint := 'Vul het kenmerk BHV: ' || rec.prs_perslid_key || '-' || rec.bhv;
v_bhv := 0;
IF rec.bhv = 'BHV'
THEN
v_bhv := 1;
END IF;
ykpn.set_kenmerk('PRS', 1161, rec.prs_perslid_key, v_bhv, 0);
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, 'W', v_errormsg, v_hint); -- Omgezet van Error naar Waarschuwing ivm met groet hoeveelheden notificaties
END;
END LOOP;
-- Iedereen mag op elke kostenplaats boeken.
INSERT INTO prs_perslidkostenplaats (prs_perslid_key, prs_perslidkostenplaats_boeken)
SELECT prs_perslid_key, 1
FROM prs_perslid p
WHERE prs_perslid_verwijder IS NULL
AND NOT EXISTS (SELECT prs_perslidkostenplaats_key
FROM prs_perslidkostenplaats pk
WHERE pk.prs_perslid_key = p.prs_perslid_key);
-- Vul het mobiele nummer in als mensen een telefoonnummer hebben dat begint met +316
UPDATE prs_perslid
SET prs_perslid_mobiel = prs_perslid_telefoonnr
WHERE prs_perslid_telefoonnr LIKE '+316%';
ELSE
fac.imp_writelog (p_import_key, 'E', 'Te weinig personen in de database om te verwijderen: ' || v_count, '');
END IF;
--
-- KPN Retail (winkels) aanpassingen
--
BEGIN
-- Verwijdere KPN Retail winkels uit de _Default groep
v_hint := 'Verwijder KPN retail uit _Default groep ';
DELETE fac_gebruikersgroep
WHERE prs_perslid_key IN (SELECT prs_perslid_key
FROM prs_v_perslidwerkplek_gegevens wpg, alg_locatie l, alg_district d
WHERE wpg.alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = d.alg_district_key
AND d.alg_regio_key = 21 -- KPN Retail
AND wpg.prs_werkplek_virtueel = 0)
AND fac_groep_key = 1;
-- Verwijder de externe retail gebruikers uit de _Default groep
v_hint := 'Verwijder externe retail uit _default groep ';
DELETE fac_gebruikersgroep
WHERE prs_perslid_key IN
(SELECT prs_perslid_key
FROM prs_perslid
WHERE REGEXP_SUBSTR (
prs_perslid_oslogin,
'[[:alpha:]]{2}[[:digit:]]{3}V[[:digit:]]{2}')
IS NOT NULL)
AND fac_groep_key = 1;
-- Voeg KPN retail medewerkers toe aan de autorisatiegroep: KPN Retail Winkel (Key = 301)
v_hint := 'Voeg Retail toe aan aut. groep (301)';
INSERT INTO fac_gebruikersgroep (prs_perslid_key, fac_groep_key)
SELECT prs_perslid_key, 301
FROM prs_perslid p
WHERE p.prs_perslid_key IN (SELECT prs_perslid_key
FROM prs_v_perslidwerkplek_gegevens wpg, alg_locatie l, alg_district d
WHERE wpg.alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = d.alg_district_key
AND d.alg_regio_key = 21 -- KPN Retail
AND wpg.prs_werkplek_virtueel = 0)
AND NOT EXISTS
(SELECT fac_gebruikersgroep_key
FROM fac_gebruikersgroep gg
WHERE gg.prs_perslid_key = p.prs_perslid_key
AND fac_groep_key = 301);
-- Vervolgens gaan we de winkels koppelen aan een extra groep voor de verschillende winkels.
-- Hierbij maken we onderscheid tussen:
-- XL winkels - Deze hebben kenmerk 3 (Formule) die gelinkt is aan eigen tabel met key 241. De key 682 is dan een XL winkel
-- 1.0 winkels - Deze hebben kenmerk 4 (Formule aanduiding) die gelinkt is aan eigen tabel met key 242. De key 684 is 1.0
-- 2.0 winkels - Deze hebben kenmerk 4 (Formule aanduiding) die gelinkt is aan eigen tabel met key 242. De key 685 is 2.0 en key 1221 is 2.1 en key 2981 is 2Go
-- Autorisatiegroep voor 1.0 is 2041
-- Autorisatiegroep voor 2.0 is 2042
-- Autorisatiegroep voor XL is 2043
-- Autorisatiegroep voor 2Go is 2801
v_hint := 'Koppel winkels aan extra groep';
INSERT INTO fac_gebruikersgroep (prs_perslid_key, fac_groep_key)
SELECT prs_perslid_key, fac_groep_key
FROM (SELECT prs_perslid_key,
DECODE (
ykpn.get_kenmerk ('ALG', 3, l.alg_locatie_key),
'kpn XL winkel', 2043,
DECODE (
ykpn.get_kenmerk ('ALG', 4, l.alg_locatie_key),
-- '1.0', 2041,
'2.0', 2042,
'2.1', 2042,
'2 Go', 2801)) fac_groep_key
FROM prs_v_perslidwerkplek_gegevens wpg,
alg_locatie l,
alg_district d
WHERE wpg.alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = d.alg_district_key
AND d.alg_regio_key = 21 -- KPN Retail
AND wpg.prs_perslid_key IS NOT NULL
AND wpg.prs_werkplek_virtueel = 0) p
WHERE fac_groep_key IS NOT NULL
AND NOT EXISTS
(SELECT fac_gebruikersgroep_key
FROM fac_gebruikersgroep gg
WHERE gg.prs_perslid_key = p.prs_perslid_key
AND fac_groep_key IN (2042, 2043, 2801));
-- Maak voor iedere winkel een autorisatiegroep aan zodat alle accounts per winkel vervangers van elkaar zijn.
v_hint := 'Maak auto. groep per winkel';
INSERT INTO fac_groep (fac_groep_omschrijving,
fac_groep_collega,
fac_groep_opmerking)
SELECT DISTINCT
'_Retail_' || alg_locatie_code,
1,
'Retail vervangers voor de winkel '
|| alg_locatie_code
FROM alg_locatie l, alg_district d
WHERE l.alg_district_key = d.alg_district_key
AND d.alg_regio_key = 21 -- KPN Retail
AND NOT EXISTS
(SELECT fac_groep_key
FROM fac_groep
WHERE fac_groep_omschrijving =
'_Retail_' || alg_locatie_code);
-- Koppel vervolgens de medewerkers aan deze vervangers groep
v_hint := 'Koppel medew. aan winkel auto. groep';
INSERT INTO fac_gebruikersgroep (prs_perslid_key, fac_groep_key)
SELECT wpg.prs_perslid_key,
(SELECT fac_groep_key
FROM fac_groep g
WHERE fac_groep_omschrijving =
'_Retail_' || l.alg_locatie_code)
FROM prs_v_perslidwerkplek_gegevens wpg, alg_locatie l, alg_district d
WHERE wpg.alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = d.alg_district_key
AND d.alg_regio_key = 21 -- KPN Retail
AND wpg.prs_werkplek_virtueel = 0
AND wpg.prs_perslid_key IS NOT NULL
AND NOT EXISTS
(SELECT fac_gebruikersgroep_key
FROM fac_gebruikersgroep gg, fac_groep g
WHERE g.fac_groep_key = gg.fac_groep_key
AND gg.prs_perslid_key = wpg.prs_perslid_key
AND fac_groep_omschrijving =
'_Retail_'
|| l.alg_locatie_code);
-- Voeg de clustermanagers toe aan de autorisatiegroep KPN Retail Cluster Manager (key 1561)
v_hint := 'Voeg clusterm. toe auto. groep (1561)';
INSERT INTO fac_gebruikersgroep (prs_perslid_key, fac_groep_key)
SELECT DISTINCT FAC.safe_to_number(alg_onrgoedkenmerk_waarde),
1561
FROM alg_onrgoedkenmerk aog
WHERE aog.alg_kenmerk_key = 1360 -- Cluster manager
AND NOT EXISTS
(SELECT fac_gebruikersgroep_key
FROM fac_gebruikersgroep gg
WHERE gg.prs_perslid_key = FAC.safe_to_number(alg_onrgoedkenmerk_waarde)
AND gg.fac_groep_key = 1561);
v_hint := 'Verwijder uit auto. groep 1561';
DELETE fac_gebruikersgroep gg
WHERE gg.fac_groep_key = 1561
AND NOT EXISTS (SELECT aog.alg_onrgoedkenmerk_key
FROM alg_onrgoedkenmerk aog
WHERE aog.alg_kenmerk_key = 1360 -- Cluster manager
AND gg.prs_perslid_key = FAC.safe_to_number(alg_onrgoedkenmerk_waarde));
-- De gebruikers uit de winkels willen graag MLDUPD notificaties ontvangen via de mail
-- De KPN Res (_default) gebruikers willen dat niet.
-- MLDUPD is dus te overrullen en hier wordt de juiste instelling bij de personen gemaakt.
v_hint := 'Update notificatie voor KPN Res';
UPDATE prs_perslid p
SET prs_perslid_srtnoti_mode = 1 -- noti in portal
WHERE EXISTS
(SELECT prs_perslid_key
FROM fac_gebruikersgroep gg
WHERE fac_groep_key = 1 -- default
AND gg.prs_perslid_key = p.prs_perslid_key);
v_hint := 'Update notificatie voor KPN Retail';
UPDATE prs_perslid p
SET prs_perslid_srtnoti_mode = 3 -- noti in portal + mail
WHERE EXISTS
(SELECT prs_perslid_key
FROM fac_gebruikersgroep gg
WHERE fac_groep_key = 301 -- KPN Retail winkel
AND gg.prs_perslid_key = p.prs_perslid_key);
-- Voeg KPN retail backoffice medewerkers toe aan de autorisatiegroep: KPN Retail Winkel Backoffice (Key = 1461)
-- Dit zijn medewerkers die op de backoffice PC achterin de winkel inloggen.
v_hint := 'Voeg KPN Retail BO toe auto. groep (1461)';
INSERT INTO fac_gebruikersgroep (prs_perslid_key, fac_groep_key)
SELECT prs_perslid_key, 1461
FROM prs_perslid p
WHERE
-- De lengte van de digits in de loginnaam = 3
LENGTH(REGEXP_SUBSTR (prs_perslid_oslogin, '[[:digit:]]{3}.*')) = 3
-- En de prefix van de loginnaam is KPN of PMF, in dat geval zijn de drie digits account de bo medewerker
-- Of de login eindigt op '600', dit wordt soms voor de XL winkels gebruikt.
AND (SUBSTR(prs_perslid_oslogin,1,3) IN ('KPN', 'PMF')
OR REGEXP_SUBSTR (prs_perslid_oslogin, '[[:digit:]]{3}.*') = '600')
-- We hebben een werkplek onder een Retail regio.
AND p.prs_perslid_key IN (SELECT prs_perslid_key
FROM prs_v_perslidwerkplek_gegevens wpg, alg_locatie l, alg_district d
WHERE wpg.alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = d.alg_district_key
AND d.alg_regio_key = 21 -- KPN Retail
AND wpg.prs_werkplek_virtueel = 0)
AND NOT EXISTS
(SELECT fac_gebruikersgroep_key
FROM fac_gebruikersgroep gg
WHERE gg.prs_perslid_key = p.prs_perslid_key
AND fac_groep_key = 1461);
FOR rec_mob IN c_upd_retail_mob_clusterm
LOOP
ALG.upsertkenmerk (1440, rec_mob.alg_onrgoed_key, rec_mob.mob); -- mobiel nummer clustermanager
END LOOP;
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_hint);
END;
END ykpn_update_perslid_sched;
/
CREATE OR REPLACE PROCEDURE ykpn_import_onrgoed2 (p_import_key IN NUMBER)
AS
CURSOR c
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
header_found BOOLEAN;
v_newline VARCHAR2 (2000);
v_aanduiding VARCHAR2 (1000); -- Import line
v_field VARCHAR2 (1000); -- Import field
v_fielddelimitor VARCHAR2 (1); -- Field seperator
v_errormsg VARCHAR (200);
v_errorhint VARCHAR (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_gebouw_code alg_gebouw.alg_gebouw_code%TYPE;
v_locatie_code alg_locatie.alg_locatie_code%TYPE;
v_verdieping_volgnr alg_verdieping.alg_verdieping_volgnr%TYPE;
v_ruimte_nr alg_ruimte.alg_ruimte_nr%TYPE;
v_srtruimte_omschrijving alg_srtruimte.alg_srtruimte_omschrijving%TYPE;
v_ruimte_omschrijving alg_ruimte.alg_ruimte_omschrijving%TYPE;
v_k1940_doorb VARCHAR2 (100);
v_k1941_afd VARCHAR2 (100);
v_k1942_nvo VARCHAR2 (100);
v_k1943_incl VARCHAR2 (100);
v_k1044_vvo VARCHAR2 (100);
v_dummy VARCHAR2 (100);
BEGIN
-- Init
header_found := FALSE;
v_fielddelimitor := ';';
-- Clear my previous imported rows
DELETE FROM fac_imp_onrgoed2;
FOR rec IN c
LOOP
BEGIN
v_newline := rec.fac_imp_file_line;
v_aanduiding := v_newline;
IF SUBSTR (v_newline, 1, 3) = '?'
THEN
-- EF BB BF aangetroffen
fac.imp_writelog (p_import_key,
'W',
'Byte Order Mark aangetroffen',
'Bestand heeft onbehandeld UTF-8 formaat.');
v_newline := SUBSTR (v_newline, 4);
END IF;
-- Skip until a valid header is found
IF UPPER (rec.fac_imp_file_line) LIKE
'OBJECTNUMMER;ADRES;VERDIEPING;BOUWDEEL;RUIMTENUMMER;RUIMTE OMSCHRIJVING;RUIMTE TOEPASSING;RUIMTESOORT;AFDELINGSCODE;AFDELINGSNAAM;TYPE LEEGSTAND;NVO;VVO;VVO INCL. TOESLAG ALGEMENE RUIMTEN;VERHUURD #;LEEGSTAND #;GEEN BEHEER/LEEGSTAND #%'
THEN
-- Sla de kopregel over.
header_found := TRUE;
ELSIF (header_found AND SUBSTR(v_newline, 1, 1) <> ';')
THEN
v_errorhint := 'Inlezen velden';
fac.imp_getfield (v_newline, v_fielddelimitor, v_gebouw_code);
fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy);
fac.imp_getfield (v_newline, v_fielddelimitor, v_verdieping_volgnr);
fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy);
fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy);
v_ruimte_nr := SUBSTR(v_dummy, 1, 10);
fac.imp_getfield (v_newline, v_fielddelimitor, v_srtruimte_omschrijving);
fac.imp_getfield (v_newline, v_fielddelimitor, v_ruimte_omschrijving);
fac.imp_getfield (v_newline, v_fielddelimitor, v_k1940_doorb);
fac.imp_getfield (v_newline, v_fielddelimitor, v_k1941_afd);
fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy);
fac.imp_getfield (v_newline, v_fielddelimitor, v_dummy);
fac.imp_getfield (v_newline, v_fielddelimitor, v_k1942_nvo);
fac.imp_getfield (v_newline, v_fielddelimitor, v_k1044_vvo);
fac.imp_getfield (v_newline, v_fielddelimitor, v_k1943_incl);
v_errorhint := 'Aanpassen gebouwcode';
v_gebouw_code := TO_CHAR(v_gebouw_code, 'FM00000');
v_errorhint := 'Opzoeken locatiecode';
SELECT alg_locatie_code
INTO v_locatie_code
FROM alg_locatie l, alg_v_aanweziggebouw g
WHERE l.alg_locatie_key = g.alg_locatie_key
AND g.alg_gebouw_code = v_gebouw_code;
INSERT INTO fac_imp_onrgoed2 (alg_locatie_code,
alg_gebouw_code,
alg_verdieping_volgnr,
alg_srtruimte_omschrijving,
alg_ruimte_nr,
alg_ruimte_omschrijving,
alg_kenmerkwaarde1,
alg_kenmerkwaarde2,
alg_kenmerkwaarde3,
alg_kenmerkwaarde4,
alg_kenmerkwaarde5)
VALUES (v_locatie_code,
v_gebouw_code,
v_verdieping_volgnr,
v_srtruimte_omschrijving,
v_ruimte_nr,
v_ruimte_omschrijving,
'1940=' || v_k1940_doorb,
'1941=' || v_k1941_afd,
'1942=' || REPLACE(REPLACE(v_k1942_nvo, '.'), ',', '.'),
'1044=' || REPLACE(REPLACE(v_k1044_vvo, '.'), ',', '.'),
'1943=' || REPLACE(REPLACE(v_k1943_incl, '.'), ',', '.'));
END IF;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'OTHERS (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
SUBSTR (v_errormsg, 1, 1000),
v_errorhint || ' - ' || v_aanduiding);
END;
END LOOP;
IF NOT header_found
THEN
fac.imp_writelog (p_import_key,
'E',
'Geen geldige header aangetroffen',
'Bestand is geen geldig toegang importbestand.');
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'OTHERS (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
SUBSTR (v_errormsg, 1, 1000),
v_aanduiding);
END;
/
CREATE OR REPLACE PROCEDURE ykpn_update_onrgoed2 (p_import_key IN NUMBER)
AS
CURSOR c
IS
SELECT alg_key,
kenmerk_key,
newvalue
FROM (
SELECT alg.alg_ruimte_key alg_key,
alg.ALG_RUIMTE_NR,
1943 kenmerk_key, -- 1943 = VV0 Incl kenmerk key
to_number(knminc.alg_onrgoedkenmerk_waarde,'9999.99') oldValue,
fctr.factor,
DECODE(INSTR(io.alg_kenmerkwaarde1,'=D'),0,NULL,ROUND((to_number(knm.alg_onrgoedkenmerk_waarde,'9999.99')*fctr.factor),2)) newValue
FROM alg_ruimte alg, FAC_IMP_ONRGOED2 io,
(SELECT alg_onrgoed_key, alg_onrgoedkenmerk_waarde FROM alg_onrgoedkenmerk kenm where
kenm.alg_kenmerk_key=1044) knm, -- 1044 = VVO kenmerk key
(SELECT alg_onrgoed_key, alg_onrgoedkenmerk_waarde FROM alg_onrgoedkenmerk kenm where
kenm.alg_kenmerk_key=1943) knminc, -- 1943 = VVO incl kenmerk key
(SELECT alg_gebouw_code, (1+(oppTotaal/DECODE(oppKantoor,0,1,oppKantoor))) factor FROM
(SELECT i.alg_gebouw_code ,
(SELECT COALESCE(SUM(TO_NUMBER(SUBSTR(alg_kenmerkwaarde4,6,LENGTH(alg_kenmerkwaarde4)-1),'9999.99')),0)
FROM fac_imp_onrgoed2 io1
WHERE alg_kenmerkwaarde1 LIKE ('%=D') AND i.alg_gebouw_code= io1.alg_gebouw_code) oppKantoor,
(SELECT COALESCE(SUM(TO_NUMBER(SUBSTR(alg_kenmerkwaarde4,6,LENGTH(alg_kenmerkwaarde4)-1),'9999.99')),0)
FROM fac_imp_onrgoed2 io2
WHERE alg_kenmerkwaarde1 NOT LIKE ('%=D') AND i.alg_gebouw_code=io2.alg_gebouw_code) oppTotaal
FROM fac_imp_onrgoed2 i GROUP BY i.alg_gebouw_code)) fctr
WHERE alg.alg_ruimte_key=io.res_ruimte_nr AND
alg.alg_ruimte_key=knm.alg_onrgoed_key(+) AND
alg.alg_ruimte_key=knminc.alg_onrgoed_key(+) AND
fctr.alg_gebouw_code=io.alg_gebouw_code
) rslt
WHERE COALESCE(rslt.oldValue,0) <> rslt.newValue;
BEGIN
fac_update_onrgoed2 (p_import_key);
-- voor de verdere afhandeling is het handig als we de key van de gekoppelde ruimte hebben
-- daarom slaan we deze op in het veld res_ruimte_nr
UPDATE fac_imp_onrgoed2 i
SET res_ruimte_nr =
(SELECT alg_ruimte_key
FROM alg_v_ruimte_gegevens rg
WHERE i.alg_gebouw_code = rg.alg_gebouw_upper
AND i.alg_verdieping_volgnr = rg.alg_verdieping_volgnr
AND i.alg_ruimte_nr = rg.alg_ruimte_nr);
UPDATE alg_ruimte r
SET alg_ruimte_omschrijving =
COALESCE ((SELECT alg_ruimte_omschrijving
FROM fac_imp_onrgoed2 i
WHERE i.res_ruimte_nr = r.alg_ruimte_key),
r.alg_ruimte_omschrijving),
alg_srtruimte_key =
COALESCE (
(SELECT alg_srtruimte_key
FROM alg_srtruimte sr, fac_imp_onrgoed2 i
WHERE UPPER (i.alg_srtruimte_omschrijving) =
UPPER (sr.alg_srtruimte_omschrijving)
AND sr.alg_srtruimte_verwijder IS NULL
AND i.res_ruimte_nr = r.alg_ruimte_key),
r.alg_srtruimte_key)
WHERE alg_ruimte_key IN (SELECT io.res_ruimte_nr -- Optimalisatie query zodat API request geen timeout geeft
FROM FAC_IMP_ONRGOED2 io);
FOR rec IN c
LOOP
BEGIN
ALG.upsertkenmerk(rec.kenmerk_key, rec.alg_key, rec.newValue);
END;
END LOOP;
END;
/
-- Rapport om aan te geven welke ruimten met de afgelopen import zijn toegevoegd,
-- welke riumten verwijder mogen worden en welke ruimten onveranderd zijn.
CREATE OR REPLACE VIEW ykpn_v_rap_leegstand
AS
SELECT 'Toegevoegd' status, rg.*
FROM alg_ruimte r, alg_v_ruimte_gegevens rg
WHERE rg.alg_ruimte_key = r.alg_ruimte_key
AND alg_ruimte_aanmaak > (SELECT MAX (fac_import_datum_gelezen)
FROM fac_import
WHERE fac_import_app_key = 61) -- Leegstandsimport
UNION ALL
SELECT 'Te verwijderen', rg.*
FROM alg_v_ruimte_gegevens rg
WHERE NOT EXISTS
(SELECT 1
FROM fac_imp_onrgoed2 i
WHERE i.alg_gebouw_code = rg.alg_gebouw_upper
AND i.alg_verdieping_volgnr =
rg.alg_verdieping_volgnr
AND i.alg_ruimte_nr = rg.alg_ruimte_nr)
AND EXISTS
(SELECT 1
FROM fac_imp_onrgoed2 i
WHERE i.alg_gebouw_code = rg.alg_gebouw_upper)
AND alg_ruimte_nr <> '_'
UNION ALL
SELECT 'Niet aangepast', rg.*
FROM alg_v_ruimte_gegevens rg, alg_ruimte r, fac_imp_onrgoed2 i
WHERE r.alg_ruimte_key = rg.alg_ruimte_key
AND i.alg_gebouw_code = rg.alg_gebouw_upper
AND i.alg_verdieping_volgnr = rg.alg_verdieping_volgnr
AND i.alg_ruimte_nr = rg.alg_ruimte_nr
AND alg_ruimte_aanmaak < (SELECT MAX (fac_import_datum_gelezen)
FROM fac_import
WHERE fac_import_app_key = 61);
CREATE OR REPLACE PROCEDURE ykpn_import_fac_gebruikersgrp (
p_import_key IN NUMBER)
IS
v_errormsg VARCHAR (1000);
oracle_err_mes VARCHAR2 (200);
v_afdeling_key NUMBER;
v_count NUMBER;
v_niveau NUMBER;
CURSOR c IS
SELECT *
FROM fac_imp_fac_gebruikersgroep
WHERE email IS NOT NULL;
BEGIN
fac_import_fac_gebruikersgroep (p_import_key);
FOR rec IN c
LOOP
BEGIN
SELECT prs_afdeling_key
INTO v_afdeling_key
FROM prs_afdeling
WHERE UPPER (prs_afdeling_omschrijving) = UPPER (rec.email)
AND prs_afdeling_verwijder IS NULL;
SELECT niveau
INTO v_niveau
FROM ykpn_v_afdeling_boom
WHERE prs_afdeling_key = v_afdeling_key;
INSERT INTO fac_imp_fac_gebruikersgroep (groep, login)
SELECT rec.groep, prs_perslid_oslogin
FROM prs_perslid p, ykpn_v_afdeling_boom ab
WHERE prs_perslid_verwijder IS NULL
AND ( (v_niveau = 1 AND ab.prs_afdeling_key1 = v_afdeling_key)
OR (v_niveau = 2 AND ab.prs_afdeling_key2 = v_afdeling_key)
OR (v_niveau = 3 AND ab.prs_afdeling_key3 = v_afdeling_key)
OR (v_niveau = 4 AND ab.prs_afdeling_key4 = v_afdeling_key)
OR (v_niveau = 5 AND ab.prs_afdeling_key5 = v_afdeling_key)
OR (v_niveau = 6 AND ab.prs_afdeling_key6 = v_afdeling_key)
OR (v_niveau = 7 AND ab.prs_afdeling_key7 = v_afdeling_key)
OR (v_niveau = 8 AND ab.prs_afdeling_key8 = v_afdeling_key)
OR (v_niveau = 9 AND ab.prs_afdeling_key9 = v_afdeling_key)
)
AND p.prs_afdeling_key = ab.prs_afdeling_key
AND NOT EXISTS
(SELECT login
FROM fac_imp_fac_gebruikersgroep gg
WHERE UPPER (gg.login) =
p.prs_perslid_oslogin
AND UPPER (gg.groep) =
UPPER (rec.groep));
EXCEPTION
WHEN NO_DATA_FOUND
THEN
fac.imp_writelog (
p_import_key,
'E',
rec.email,
'Fout bij toevoegen afdeling aan importtabel FAC_IMP_GEBRUIKERSGROEP. '
|| v_errormsg);
END;
END LOOP;
DELETE fac_imp_fac_gebruikersgroep
WHERE email IS NOT NULL;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'OTHERS (error ' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
'Inleesproces gebruikersgroepen afgebroken!');
END;
/
CREATE OR REPLACE PROCEDURE ykpn_update_fac_gebruikersgrp (p_import_key IN NUMBER)
AS
CURSOR c IS
SELECT DISTINCT groep FROM fac_imp_fac_gebruikersgroep;
v_errormsg VARCHAR (1000);
oracle_err_mes VARCHAR2 (200);
v_groep_key NUMBER;
BEGIN
fac_update_fac_gebruikersgroep (p_import_key);
-- TODO verwijderen van personen
FOR rec IN c
LOOP
SELECT fac_groep_key
INTO v_groep_key
FROM fac_groep
WHERE UPPER(fac_groep_omschrijving) = UPPER(rec.groep);
DELETE fac_gebruikersgroep gg
WHERE gg.fac_groep_key = v_groep_key
AND NOT EXISTS (SELECT login
FROM fac_imp_fac_gebruikersgroep igg, prs_perslid p
WHERE UPPER(igg.groep) = UPPER(rec.groep)
AND UPPER(igg.login) = p.prs_perslid_oslogin
AND gg.prs_perslid_key = p.prs_perslid_key);
END LOOP;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'OTHERS (error ' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'E', v_errormsg, 'Verwerkproces gebruikersgroepen afgebroken!');
END;
/
CREATE OR REPLACE PROCEDURE ykpn_export_bezoekers_com (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2)
AS
CURSOR c
IS
SELECT DECODE (pp.res_rsv_deel_key,
NULL, 'De afspraak is geregistreerd',
'De parkeerplaats is geregistreerd')
text,
'CUST02' code,
(SELECT fac_srtnotificatie_key
FROM fac_srtnotificatie
WHERE fac_srtnotificatie_code = 'CUST02')
fac_srtnotificatie_key,
b.bez_afspraak_key,
b.bez_bezoekers_key,
a.bez_afspraak_datum,
pp.res_deel_key,
b.bez_bezoekers_email xemail,
COALESCE (d.alg_gebouw_key,
(SELECT alg_onrgoed_key
FROM alg_onrgoedkenmerk aogk
WHERE aogk.alg_onrgoedkenmerk_key = g.alg_onrgoedkenmerk_key))
alg_gebouw_key,
COALESCE (d.alg_gebouw_key,
(SELECT alg_onrgoed_key
FROM alg_onrgoedkenmerk aogk
WHERE aogk.alg_onrgoedkenmerk_key = pg.alg_onrgoedkenmerk_key))
alg_gebouw_key_pg,
COALESCE (
(SELECT alg_onrgoedkenmerk_waarde
FROM alg_onrgoedkenmerk aogk
WHERE aogk.alg_onrgoed_key = d.alg_gebouw_key AND alg_kenmerk_key = 1040),
(SELECT alg_onrgoedkenmerk_waarde
FROM alg_onrgoedkenmerk aogk
WHERE aogk.alg_onrgoedkenmerk_key = g.alg_onrgoedkenmerk_key))
bijlage,
COALESCE (
(SELECT alg_onrgoedkenmerk_waarde
FROM alg_onrgoedkenmerk aogk
WHERE aogk.alg_onrgoed_key = d.alg_gebouw_key AND alg_kenmerk_key = 2040),
(SELECT alg_onrgoedkenmerk_waarde
FROM alg_onrgoedkenmerk aogk
WHERE aogk.alg_onrgoedkenmerk_key = pg.alg_onrgoedkenmerk_key))
bijlage_pg
FROM bez_afspraak a,
bez_bezoekers b,
bez_kenmerkwaarde kwp,
res_rsv_deel pp,
(SELECT rd.res_deel_key, v.alg_gebouw_key
FROM res_deel rd,
ins_deel id,
alg_ruimte r,
alg_verdieping v
WHERE rd.res_ins_deel_key = id.ins_deel_key
AND id.ins_alg_ruimte_key = r.alg_ruimte_key
AND r.alg_verdieping_key = v.alg_verdieping_key) d,
( SELECT g.alg_locatie_key, MAX (alg_onrgoedkenmerk_key) alg_onrgoedkenmerk_key
FROM alg_gebouw g, alg_onrgoedkenmerk aogk
WHERE alg_kenmerk_key = 1040
AND aogk.alg_onrgoed_key = g.alg_gebouw_key
AND aogk.alg_onrgoedkenmerk_verwijder IS NULL
GROUP BY alg_locatie_key) g, -- bijlage met routebeschrijving
( SELECT g.alg_locatie_key, MAX (alg_onrgoedkenmerk_key) alg_onrgoedkenmerk_key
FROM alg_gebouw g, alg_onrgoedkenmerk aogk
WHERE alg_kenmerk_key = 2040
AND aogk.alg_onrgoed_key = g.alg_gebouw_key
AND aogk.alg_onrgoedkenmerk_verwijder IS NULL
GROUP BY alg_locatie_key) pg -- bijlage met plattegrond
WHERE COALESCE (
(SELECT bez_kenmerkwaarde_waarde
FROM bez_kenmerkwaarde kwlog
WHERE bez_kenmerk_key = 1042 AND kwlog.bez_bezoekers_key = b.bez_bezoekers_key),
'QueQueleQue') <>
TO_CHAR (bez_afspraak_datum, 'yyyy-mm-dd hh24:mi:ss')
|| ';'
|| COALESCE (pp.res_deel_key, -1)
|| ';'
|| b.bez_bezoekers_email
AND b.bez_afspraak_key = a.bez_afspraak_key
AND b.bez_bezoekers_key = pp.bez_bezoekers_key
AND pp.res_deel_key = d.res_deel_key(+)
AND b.bez_bezoekers_key = kwp.bez_bezoekers_key
AND kwp.bez_kenmerk_key = 1020 -- pincode
-- AND pp.res_deel_key IS NOT NULL
-- voorlopig alleen parkeerplaatsen. Anders ook outer join bij pp.bez_bezoekerskey toevoegen.
AND a.alg_locatie_key = g.alg_locatie_key
AND a.alg_locatie_key = pg.alg_locatie_key
AND a.bez_afspraak_datum > SYSDATE + 2 / 24;
CURSOR cs
IS
SELECT a.bez_afspraak_key,
b.bez_bezoekers_key,
b.bez_bezoekers_telefoon mobiel,
sn.fac_srtnotificatie_code,
sn.fac_srtnotificatie_key,
'Uw parkeerplaatscode op ' || TO_CHAR (a.bez_afspraak_datum, 'dd-mm-yyyy hh24:mi') || '-' || TO_CHAR(a.bez_afspraak_eind, 'hh24:mi') || ' is ' ||
kwp.bez_kenmerkwaarde_waarde || '#, ' || COALESCE(afw.afw_adres, g.alg_gebouw_naam) || '. Legitimatie verplicht. Afz. KPN RES' text
-- EVT extra TRANSLATE om de speciale karakters om te zetten naar standaard karakter
-- translate('my ,string@<40>with <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> .special chars','<27><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>', 'aaaaeeeeiiiioooouuuuAAAAEEEEIIIIOOOOUUUU')
FROM bez_afspraak a,
bez_bezoekers b,
bez_kenmerkwaarde kwp, -- pincode 1020
fac_srtnotificatie sn,
res_rsv_deel rd,
res_v_ins_deel d,
alg_gebouw g,
(SELECT alg_onrgoedkenmerk_waarde afw_adres, alg_onrgoed_key alg_gebouw_key
FROM alg_onrgoedkenmerk afw
WHERE alg_kenmerk_key = 1180) afw -- afwijkend parkeeradres
WHERE sn.fac_srtnotificatie_code = 'CUST03'
AND b.bez_afspraak_key = a.bez_afspraak_key
AND kwp.bez_bezoekers_key = b.bez_bezoekers_key
AND kwp.bez_kenmerk_key = 1020
AND b.bez_bezoekers_key = rd.bez_bezoekers_key
AND rd.res_deel_key = d.res_deel_key
AND d.alg_gebouw_key = g.alg_gebouw_key
AND g.alg_gebouw_key = afw.alg_gebouw_key(+)
AND a.bez_afspraak_datum < SYSDATE + 2/24
AND a.bez_afspraak_datum > SYSDATE
AND b.bez_bezoekers_telefoon IS NOT NULL -- alleen voor die bezoekers die ook een telefoonnr hebben (YKPN#68883)
AND NOT EXISTS (SELECT bez_kenmerkwaarde_waarde
FROM bez_kenmerkwaarde kws
WHERE bez_kenmerk_key = 1043 -- sms verzonden
AND kws.bez_bezoekers_key = b.bez_bezoekers_key);
-- Verwijder kenmerken die gekopieerd zijn met de herhaal functie
CURSOR ckd
IS
SELECT kw.bez_kenmerkwaarde_key, b.bez_bezoekers_key
FROM bez_kenmerkwaarde kw, bez_bezoekers b, bez_afspraak a
WHERE TRUNC (bez_kenmerkwaarde_aanmaak) <> TRUNC (a.bez_afspraak_datum)
AND bez_kenmerk_key = 1043 -- SMS verzonden op yyyy-mm-dd hh-mi-ss
AND kw.bez_bezoekers_key = b.bez_bezoekers_key
AND b.bez_afspraak_key = a.bez_afspraak_key
AND a.bez_afspraak_datum > SYSDATE;
v_bijlagen VARCHAR2(4000);
BEGIN
FOR rec IN c
LOOP
-- hebben we meerdere wijzigingen dan is alleen de laatste interessant.
DELETE fac_notificatie WHERE fac_srtnotificatie_key = rec.fac_srtnotificatie_key
AND fac_notificatie_extrakey = rec.bez_bezoekers_key;
v_bijlagen := NULL;
IF rec.bijlage IS NOT NULL
THEN
v_bijlagen := '/ALG/A'
|| SUBSTR (TO_CHAR (rec.alg_gebouw_key, 'fm0000000'), 1, 4)
|| '___'
|| '/A'
|| rec.alg_gebouw_key
|| '/1040/'
|| rec.bijlage;
IF rec.bijlage_pg IS NOT NULL
THEN
v_bijlagen := v_bijlagen || ',';
END IF;
END IF;
IF rec.bijlage_pg IS NOT NULL
THEN
v_bijlagen := v_bijlagen || '/ALG/A'
|| SUBSTR (TO_CHAR (rec.alg_gebouw_key_pg, 'fm0000000'), 1, 4)
|| '___'
|| '/A'
|| rec.alg_gebouw_key_pg
|| '/2040/'
|| rec.bijlage_pg;
END IF;
INSERT INTO fac_notificatie (fac_srtnotificatie_key,
fac_notificatie_status,
fac_notificatie_receiver_email,
fac_notificatie_oms,
fac_notificatie_refkey,
fac_notificatie_extrakey,
fac_notificatie_prioriteit,
fac_notificatie_attachments)
VALUES (rec.fac_srtnotificatie_key,
2, -- mail
rec.xemail, -- email
rec.text,
rec.bez_afspraak_key,
rec.bez_bezoekers_key,
2,
v_bijlagen);
YKPN.set_kenmerk('BEZ', 1042, rec.bez_bezoekers_key, TO_CHAR (rec.bez_afspraak_datum, 'yyyy-mm-dd hh24:mi:ss')
|| ';' || COALESCE (rec.res_deel_key, -1) || ';' || rec.xemail, 0);
END LOOP;
-- Door bezoekers/afspraken te herhalen worden ook kenmerken gekopieerd. Dit heeft als gevolg dat er dan geen
-- SMS meer verzonden wordt. Onderstaande verwijdert gekopieerde kenmerken met daarin het tijdstip dat de SMS verzonden
-- is voor kenmerken waarvan de datum niet gelijk is aan de afspraakdatum.
FOR rec IN ckd
LOOP
ykpn.set_kenmerk('BEZ', 1120, rec.bez_bezoekers_key, NULL, 0); -- Geldig ID
ykpn.set_kenmerk('BEZ', 1060, rec.bez_bezoekers_key, NULL, 0); -- Nedap ID
ykpn.set_kenmerk('BEZ', 1042, rec.bez_bezoekers_key, NULL, 0); -- Nedap Verzonden
ykpn.set_kenmerk('BEZ', 1160, rec.bez_bezoekers_key, NULL, 0); -- Kenteken respons
ykpn.set_kenmerk('BEZ', 1161, rec.bez_bezoekers_key, NULL, 0); -- Kenteken Verzonden
ykpn.set_kenmerk('BEZ', 1043, rec.bez_bezoekers_key, NULL, 0); -- SMS Verzonden
END LOOP;
-- en nu de SMS berichten versturen
FOR rec IN cs
LOOP
INSERT INTO fac_notificatie (fac_srtnotificatie_key,
fac_notificatie_status,
fac_notificatie_receiver_phone,
fac_notificatie_oms,
fac_notificatie_refkey,
fac_notificatie_extrakey,
fac_notificatie_prioriteit)
VALUES (rec.fac_srtnotificatie_key,
4, -- sms
rec.mobiel, -- email
rec.text, -- text
rec.bez_afspraak_key,
rec.bez_bezoekers_key,
2);
YKPN.set_kenmerk('BEZ', 1043, rec.bez_bezoekers_key, TO_CHAR (SYSDATE, 'yyyy-mm-dd hh24:mi:ss'),0);
END LOOP;
END;
/
-- view om zoekresultaten in kaart te brengen YKPN#58692
CREATE OR REPLACE VIEW ykpn_v_rap_searchresult
(
fclt_f_datum,
fclt_f_persoon,
fclt_f_zoekterm,
resultaat,
fclt_f_keuze_type,
keuze_url,
keuze_omschrijving
)
AS
SELECT fac_gui_counter_date datum,
prs_perslid_naam_full persoon,
fgc.fac_gui_counter_info zoekterm,
COALESCE (result.result, 'Geen') resultaat,
COALESCE (choice.TYPE, 'Geen') keuze_type,
choice.url keuze_url,
choice.oms keuze_omschrijving
FROM fac_gui_counter fgc,
prs_v_perslid_fullnames pf,
(SELECT fac_gui_counter_refkey,
fac_gui_counter_info url,
'Reserveerbaar artikel' TYPE,
res_artikel_omschrijving oms
FROM fac_gui_counter fgc, res_artikel ra
WHERE fac_gui_counter_info IS NOT NULL
AND fac_gui_counter_group = 'searchchoice'
AND fac_gui_counter_info LIKE '%res_artikel%'
AND ra.res_artikel_key(+) =
fac.safe_to_number(SUBSTR (
fac_gui_counter_info,
(INSTR (fac_gui_counter_info,
'key=')
+ 4)
))
UNION
SELECT fac_gui_counter_refkey,
fac_gui_counter_info,
'Reserveerbaar object',
res_deel_omschrijving
FROM fac_gui_counter fgc, res_deel rd
WHERE fac_gui_counter_info IS NOT NULL
AND fac_gui_counter_group = 'searchchoice'
AND fac_gui_counter_info LIKE '%res_deel%'
AND rd.res_deel_key(+) =
fac.safe_to_number(SUBSTR (
fac_gui_counter_info,
(INSTR (fac_gui_counter_info,
'key=')
+ 4)
))
UNION
SELECT fac_gui_counter_refkey,
fac_gui_counter_info,
'Melding',
std.mld_stdmelding_omschrijving oms
FROM fac_gui_counter fgc, mld_stdmelding std
WHERE fac_gui_counter_info IS NOT NULL
AND fac_gui_counter_group = 'searchchoice'
AND fac_gui_counter_info LIKE '%stdm%'
AND std.mld_stdmelding_key(+) =
fac.safe_to_number(SUBSTR (
fac_gui_counter_info,
(INSTR (fac_gui_counter_info, '=')
+ 1)
))
UNION
SELECT fac_gui_counter_refkey,
fac_gui_counter_info,
'Kennisbank',
fac_faq_question oms
FROM fac_gui_counter fgc, fac_faq faq
WHERE fac_gui_counter_info IS NOT NULL
AND fac_gui_counter_group = 'searchchoice'
AND fac_gui_counter_info LIKE '%faq%'
AND fac_faq_key(+) =
fac.safe_to_number(SUBSTR (
fac_gui_counter_info,
(INSTR (fac_gui_counter_info, '=')
+ 1)
))
UNION
SELECT fac_gui_counter_refkey,
fac_gui_counter_info,
'Reserveerbare ruimte',
res_ruimte_nr oms
FROM fac_gui_counter fgc, res_ruimte
WHERE fac_gui_counter_info IS NOT NULL
AND fac_gui_counter_group = 'searchchoice'
AND fac_gui_counter_info LIKE '%res_ruimte%'
AND res_ruimte_key(+) =
fac.safe_to_number(SUBSTR (
fac_gui_counter_info,
(INSTR (fac_gui_counter_info, '=')
+ 1)
))
UNION
SELECT fac_gui_counter_refkey,
fac_gui_counter_info,
'Bestelling',
ins_discipline_omschrijving
FROM fac_gui_counter fgc, bes_discipline
WHERE fac_gui_counter_info IS NOT NULL
AND fac_gui_counter_group = 'searchchoice'
AND fac_gui_counter_info LIKE '%bes%'
AND ins_discipline_key(+) =
fac.safe_to_number(SUBSTR (
fac_gui_counter_info,
(INSTR (fac_gui_counter_info,
'dis_key=')
+ 8)
))
UNION
SELECT fac_gui_counter_refkey,
fac_gui_counter_info,
'Telefoonboek',
prs_perslid_naam_full
FROM fac_gui_counter fgc, prs_v_perslid_fullnames pf
WHERE fac_gui_counter_info IS NOT NULL
AND fac_gui_counter_group = 'searchchoice'
AND fac_gui_counter_info LIKE '%phone%'
AND pf.prs_perslid_key(+) =
fac.safe_to_number(SUBSTR (
fac_gui_counter_info,
(INSTR (fac_gui_counter_info, '=')
+ 1)
))) choice,
(SELECT fac_gui_counter_refkey,
REPLACE (REPLACE (fac_gui_counter_info, '{', ''), '}', '')
result
FROM fac_gui_counter fgc
WHERE fac_gui_counter_info IS NOT NULL
AND fac_gui_counter_group = 'searchresult') result
WHERE fac_gui_counter_group = 'search'
AND fgc.fac_gui_counter_info IS NOT NULL
AND fgc.prs_perslid_key = pf.prs_perslid_key
AND choice.fac_gui_counter_refkey(+) = fgc.fac_gui_counter_key
AND result.fac_gui_counter_refkey(+) = fgc.fac_gui_counter_key;
-- meldt de parkeerplaats twee uur van te voren aan bij Nedap
CREATE OR REPLACE VIEW ykpn_v_parkeerplaats_nedap
(
naam,
pincode,
v_van,
v_tot,
template,
countergroup,
bez_bezoekers_key
)
AS
SELECT xml.char_to_html (bez_afspraak_naam),
pincode,
d_van,
v_tot,
template,
countergroup,
bez_bezoekers_key
FROM (SELECT b.bez_afspraak_naam,
kw_p.bez_kenmerkwaarde_waarde pincode,
TO_CHAR (a.bez_afspraak_datum, 'yyyy-mm-dd hh:mi:ss') d_van,
TO_CHAR (a.bez_afspraak_eind, 'yyyy-mm-dd hh:mi:ss') v_tot,
(SELECT alg_onrgoedkenmerk_waarde
FROM alg_onrgoedkenmerk aogk
WHERE alg_kenmerk_key = 1041 AND aogk.alg_onrgoed_key = d.alg_gebouw_key)
template,
(SELECT alg_onrgoedkenmerk_waarde
FROM alg_onrgoedkenmerk aogk
WHERE alg_kenmerk_key = 1042 AND aogk.alg_onrgoed_key = d.alg_gebouw_key)
countergroup,
b.bez_bezoekers_key
FROM bez_bezoekers b,
bez_afspraak a,
bez_kenmerkwaarde kw_p,
res_rsv_deel rrd,
res_deel rd,
ins_v_deel_gegevens d
WHERE b.bez_afspraak_key = a.bez_afspraak_key
AND b.bez_bezoekers_key = kw_p.bez_bezoekers_key
AND kw_p.bez_kenmerk_key = 1020 -- pincode
AND b.bez_bezoekers_key = rrd.bez_bezoekers_key
AND rrd.res_deel_key = rd.res_deel_key
AND rd.res_ins_deel_key = d.ins_deel_key
AND NOT EXISTS
(SELECT bez_kenmerkwaarde_key
FROM bez_kenmerkwaarde kw
WHERE kw.bez_kenmerk_key = 1060 -- Nedap id
AND kw.bez_bezoekers_key = b.bez_bezoekers_key)
AND bez_afspraak_datum BETWEEN SYSDATE AND SYSDATE + (2 / 24))
WHERE template IS NOT NULL;
-- En vul de gegevens bij nedap aan met kenteken info
CREATE OR REPLACE VIEW ykpn_v_kenteken_nedap
(
kenteken,
pincode,
bez_bezoekers_key
)
AS
SELECT REGEXP_REPLACE (UPPER (b.bez_bezoekers_kenteken),
'[^A-Z0-9<>-<2D>]+',
'')
kenteken,
(SELECT kp.bez_kenmerkwaarde_waarde
FROM bez_kenmerkwaarde kp
WHERE b.bez_bezoekers_key = kp.bez_bezoekers_key
AND kp.bez_kenmerk_key = 1020), -- Pincode
b.bez_bezoekers_key
FROM bez_bezoekers b,
bez_afspraak a,
res_rsv_deel rrd,
res_deel rd,
ins_v_deel_gegevens d,
alg_onrgoedkenmerk aogkk
WHERE b.bez_afspraak_key = a.bez_afspraak_key
AND aogkk.alg_kenmerk_key = 1160 -- kentekenherkenning aanwezig
AND aogkk.alg_onrgoed_key = d.alg_gebouw_key
AND aogkk.alg_onrgoedkenmerk_waarde = '1'
AND b.bez_bezoekers_key = rrd.bez_bezoekers_key
AND rrd.res_deel_key = rd.res_deel_key
AND rd.res_ins_deel_key = d.ins_deel_key
-- We hebben nog geen kenteken gegevens verstuurd
AND NOT EXISTS
(SELECT bez_kenmerkwaarde_key
FROM bez_kenmerkwaarde kw
WHERE kw.bez_kenmerk_key = 1160 -- Kenteken response
AND kw.bez_bezoekers_key = b.bez_bezoekers_key)
-- We hebben al wel een pincode id gestuurd zodat we nu een update met kenteken info kunnen doen.
AND EXISTS
(SELECT bez_kenmerkwaarde_key
FROM bez_kenmerkwaarde kw
WHERE kw.bez_kenmerk_key = 1060 -- Pincode response
AND kw.bez_bezoekers_key = b.bez_bezoekers_key)
-- we sturen de pincode en kenteken informatie 2 uur van te voren.
AND bez_afspraak_datum BETWEEN SYSDATE AND SYSDATE + (2 / 24);
-- Videoconferencing
CREATE OR REPLACE VIEW ykpn_v_vc_gegevens
(
res_reservering_key,
res_rsv_ruimte_key,
res_rsv_ruimte_volgnr,
t_van,
t_tot,
omschrijving,
ruimte,
contact_naam,
contact_telefoon,
contact_email,
idnummertnf,
aantal,
vertrouwelijk,
vc_id,
externe_locatie,
sip_ip,
ipadres,
last_upd,
last_sync
)
AS
SELECT rrr.res_reservering_key,
rrr.res_rsv_ruimte_key,
rrr.res_rsv_ruimte_volgnr,
TO_CHAR (rrr.res_rsv_ruimte_van, 'yyyy-mm-dd')
|| 'T'
|| TO_CHAR (rrr.res_rsv_ruimte_van, 'hh24:mi:ss')
t_van,
TO_CHAR (rrr.res_rsv_ruimte_tot, 'yyyy-mm-dd')
|| 'T'
|| TO_CHAR (rrr.res_rsv_ruimte_tot, 'hh24:mi:ss')
t_tot,
xml.char_to_html (res_rsv_ruimte_omschrijving) omschrijving,
rr.res_ruimte_nr ruimte,
pf.prs_perslid_naam_friendly contact_naam,
p.prs_perslid_telefoonnr contact_telefoon,
p.prs_perslid_email contact_email,
(SELECT alg_onrgoedkenmerk_waarde
FROM alg_onrgoedkenmerk
WHERE alg_onrgoedkenmerk_verwijder IS NULL
AND alg_onrgoed_key = rar.alg_ruimte_key
AND alg_kenmerk_key = 1003)
idnummertnf,
(SELECT COUNT ( * )
FROM res_rsv_ruimte rrr2
WHERE rrr.res_reservering_key = rrr2.res_reservering_key
AND rrr2.res_rsv_ruimte_verwijder IS NULL
AND rrr2.res_activiteit_key = 30) -- VC
+
(SELECT count(*)
FROM res_kenmerkwaarde rk, res_kenmerk k, res_rsv_ruimte rrrk
WHERE rk.res_kenmerk_key = k.res_kenmerk_key AND k.res_srtkenmerk_key = 5
AND rk.res_rsv_ruimte_key = rrrk.res_rsv_ruimte_key
AND rrr.res_reservering_key = rrrk.res_reservering_key
AND rrrk.res_rsv_ruimte_verwijder IS NULL)
aantal,
COALESCE (
(SELECT fac.safe_to_number (res_kenmerkreservering_waarde)
FROM res_kenmerkwaarde
WHERE res_kenmerk_key = 31 -- vertrouwelijk
AND res_kenmerkwaarde_verwijder IS NULL
AND res_rsv_ruimte_key = rrr.res_rsv_ruimte_key),
0)
vertrouwelijk,
COALESCE (
(SELECT fac.safe_to_number (res_kenmerkreservering_waarde)
FROM res_kenmerkwaarde
WHERE res_kenmerk_key = 2 -- vc id
AND res_kenmerkwaarde_verwijder IS NULL
AND res_rsv_ruimte_key = rrr.res_rsv_ruimte_key),
0)
vc_id,
NULL externe_locatie,
NULL sip_ip,
NULL ipadres,
COALESCE (
(SELECT MAX (fac_tracking_datum)
FROM fac_tracking t, fac_srtnotificatie sn
WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_xmlnode = 'reservering'
AND fac_tracking_refkey = rrr.res_rsv_ruimte_key
AND fac_srtnotificatie_code <> 'CUST01'),
SYSDATE - 100)
last_upd,
COALESCE (
(SELECT MAX (fac_tracking_datum)
FROM fac_tracking t, fac_srtnotificatie sn
WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_xmlnode = 'reservering'
AND fac_tracking_refkey = rrr.res_rsv_ruimte_key
AND fac_srtnotificatie_code = 'CUST01'),
SYSDATE - 100)
last_sync
FROM res_rsv_ruimte rrr,
res_ruimte_opstelling ro,
res_ruimte rr,
prs_perslid p,
( SELECT res_ruimte_key, MIN (alg_ruimte_key) alg_ruimte_key
FROM res_alg_ruimte
WHERE res_alg_ruimte_verwijder IS NULL
GROUP BY res_ruimte_key) rar,
prs_v_perslid_fullnames pf
WHERE rrr.res_rsv_ruimte_host_key = p.prs_perslid_key
AND p.prs_perslid_key = pf.prs_perslid_key
AND rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
AND ro.res_ruimte_key = rr.res_ruimte_key
AND rr.res_discipline_key = 73
AND rrr.res_activiteit_key = 30
AND rrr.res_rsv_ruimte_verwijder IS NULL
AND rar.res_ruimte_key = rr.res_ruimte_key
AND rrr.res_rsv_ruimte_van > SYSDATE
UNION ALL
SELECT rrr.res_reservering_key,
rrr.res_rsv_ruimte_key,
rrr.res_rsv_ruimte_volgnr,
TO_CHAR (rrr.res_rsv_ruimte_van, 'yyyy-mm-dd')
|| 'T'
|| TO_CHAR (rrr.res_rsv_ruimte_van, 'hh24:mi:ss')
t_van,
TO_CHAR (rrr.res_rsv_ruimte_tot, 'yyyy-mm-dd')
|| 'T'
|| TO_CHAR (rrr.res_rsv_ruimte_tot, 'hh24:mi:ss')
t_tot,
xml.char_to_html (res_rsv_ruimte_omschrijving) omschrijving,
rr.res_ruimte_nr ruimte,
pf.prs_perslid_naam_friendly contact_naam,
p.prs_perslid_telefoonnr contact_telefoon,
p.prs_perslid_email contact_email,
(SELECT alg_onrgoedkenmerk_waarde
FROM alg_onrgoedkenmerk
WHERE alg_onrgoedkenmerk_verwijder IS NULL
AND alg_onrgoed_key = rar.alg_ruimte_key
AND alg_kenmerk_key = 1003)
idnummertnf,
(SELECT COUNT ( * )
FROM res_rsv_ruimte rrr2
WHERE rrr.res_reservering_key = rrr2.res_reservering_key
AND rrr2.res_rsv_ruimte_verwijder IS NULL
AND rrr2.res_activiteit_key = 30) -- VC
+
(SELECT count(*)
FROM res_kenmerkwaarde rk, res_kenmerk k, res_rsv_ruimte rrrk
WHERE rk.res_kenmerk_key = k.res_kenmerk_key AND k.res_srtkenmerk_key = 5
AND rk.res_rsv_ruimte_key = rrrk.res_rsv_ruimte_key
AND rrr.res_reservering_key = rrrk.res_reservering_key
AND rrrk.res_rsv_ruimte_verwijder IS NULL)
aantal,
0,
COALESCE (
(SELECT fac.safe_to_number (res_kenmerkreservering_waarde)
FROM res_kenmerkwaarde
WHERE res_kenmerk_key = 2 -- vc id
AND res_kenmerkwaarde_verwijder IS NULL
AND res_rsv_ruimte_key = rrr.res_rsv_ruimte_key),
0)
vc_id,
locatie externe_locatie,
sip_ip,
ipadres,
NULL,
NULL
FROM res_rsv_ruimte rrr,
res_ruimte_opstelling ro,
res_ruimte rr,
prs_perslid p,
( SELECT res_ruimte_key, MIN (alg_ruimte_key) alg_ruimte_key
FROM res_alg_ruimte
WHERE res_alg_ruimte_verwijder IS NULL
GROUP BY res_ruimte_key) rar,
prs_v_perslid_fullnames pf,
(SELECT locatie,
sip_ip,
ipadres,
kl.res_rsv_ruimte_key
FROM (SELECT res_kenmerkreservering_waarde locatie,
res_rsv_ruimte_key,
res_kenmerk_groep groep
FROM res_kenmerkwaarde rk, res_kenmerk k
WHERE rk.res_kenmerk_key = k.res_kenmerk_key AND res_srtkenmerk_key = 6) kl,
(SELECT DECODE (res_kenmerkreservering_waarde, 81, 'IP', 82, 'SIP', NULL) sip_ip,
res_rsv_ruimte_key,
res_kenmerk_groep groep
FROM res_kenmerkwaarde rk, res_kenmerk k
WHERE rk.res_kenmerk_key = k.res_kenmerk_key AND res_srtkenmerk_key = 4) ks,
(SELECT res_kenmerkreservering_waarde ipadres,
res_rsv_ruimte_key,
res_kenmerk_groep groep
FROM res_kenmerkwaarde rk, res_kenmerk k
WHERE rk.res_kenmerk_key = k.res_kenmerk_key AND k.res_srtkenmerk_key = 5) ki
WHERE kl.res_rsv_ruimte_key = ks.res_rsv_ruimte_key
AND ks.res_rsv_ruimte_key = ki.res_rsv_ruimte_key
AND kl.groep = ks.groep
AND ks.groep = ki.groep) ext
WHERE rrr.res_rsv_ruimte_host_key = p.prs_perslid_key
AND p.prs_perslid_key = pf.prs_perslid_key
AND rrr.res_ruimte_opstel_key = ro.res_ruimte_opstel_key
AND ro.res_ruimte_key = rr.res_ruimte_key
AND rr.res_discipline_key = 73
AND rrr.res_activiteit_key = 30
AND rrr.res_rsv_ruimte_verwijder IS NULL
AND rar.res_ruimte_key = rr.res_ruimte_key
AND rrr.res_rsv_ruimte_key = ext.res_rsv_ruimte_key
AND rrr.res_rsv_ruimte_van > SYSDATE;
-- Verwijderde video conferenties.
CREATE OR REPLACE VIEW ykpn_v_cancel_vc
(
res_reservering_key,
vc_id
)
AS
SELECT r.res_reservering_key, res_kenmerkreservering_waarde
FROM res_reservering r, res_rsv_ruimte rrr, res_kenmerkwaarde kw
WHERE res_reservering_verwijder IS NOT NULL
AND r.res_reservering_key = rrr.res_reservering_key
AND rrr.res_activiteit_key = 30 -- video conferentie
AND kw.res_kenmerk_key = 2 -- vc_id
AND kw.res_rsv_ruimte_key = rrr.res_rsv_ruimte_key
AND res_rsv_ruimte_van > SYSDATE
GROUP BY r.res_reservering_key, res_kenmerkreservering_waarde;
-- HUUR / Doorbelasting
CREATE OR REPLACE VIEW ykpn_v_ruimtegebruik
(
fac_usrdata_omschr,
fac_usrdata_key,
fac_usrdata_vervaldatum
)
AS
SELECT fac_usrdata_code || ' (' || fac_usrdata_omschr || ')',
fac_usrdata_key,
COALESCE (fac_usrdata_verwijder, fac_usrdata_vervaldatum)
FROM fac_usrdata
WHERE fac_usrtab_key = 21;
CREATE OR REPLACE VIEW ykpn_v_huur_gegevens
(
alg_gebouw_upper,
alg_gebouw_omschrijving,
alg_verdieping_code,
alg_ruimte_nr,
alg_ruimte_omschrijving,
alg_srtruimte_omschrijving,
alg_ruimte_bruto_vloeropp,
huurder,
vvo,
factor
)
AS
SELECT alg_gebouw_upper,
alg_gebouw_omschrijving,
alg_verdieping_code,
alg_ruimte_nr,
alg_ruimte_omschrijving,
alg_srtruimte_omschrijving,
alg_ruimte_bruto_vloeropp,
(SELECT alg_onrgoedkenmerk_waarde
FROM alg_onrgoedkenmerk
WHERE alg_onrgoed_key = r.alg_ruimte_key AND alg_kenmerk_key = 1047)
huurder,
(SELECT fac.safe_to_number (alg_onrgoedkenmerk_waarde)
FROM alg_onrgoedkenmerk
WHERE alg_onrgoed_key = r.alg_ruimte_key AND alg_kenmerk_key = 1044)
vvo,
(SELECT fac.safe_to_number (alg_onrgoedkenmerk_waarde)
FROM alg_onrgoedkenmerk
WHERE alg_onrgoed_key = r.alg_ruimte_key AND alg_kenmerk_key = 1045)
factor
FROM alg_v_ruimte_gegevens r;
CREATE OR REPLACE VIEW ykpn_v_afd_gegevens
(
alg_gebouw_upper,
alg_gebouw_omschrijving,
alg_verdieping_code,
alg_ruimte_nr,
alg_ruimte_omschrijving,
alg_srtruimte_omschrijving,
alg_ruimte_bruto_vloeropp,
huurder,
vvo,
factor,
afdeling
)
AS
SELECT alg_gebouw_upper,
alg_gebouw_omschrijving,
alg_verdieping_code,
alg_ruimte_nr,
alg_ruimte_omschrijving,
alg_srtruimte_omschrijving,
alg_ruimte_bruto_vloeropp,
(SELECT alg_onrgoedkenmerk_waarde
FROM alg_onrgoedkenmerk
WHERE alg_onrgoed_key = r.alg_ruimte_key AND alg_kenmerk_key = 1047)
huurder,
(SELECT fac.safe_to_number (alg_onrgoedkenmerk_waarde)
FROM alg_onrgoedkenmerk
WHERE alg_onrgoed_key = r.alg_ruimte_key AND alg_kenmerk_key = 1044)
vvo,
(SELECT fac.safe_to_number (alg_onrgoedkenmerk_waarde)
FROM alg_onrgoedkenmerk
WHERE alg_onrgoed_key = r.alg_ruimte_key AND alg_kenmerk_key = 1045)
factor,
(SELECT d.prs_afdeling_omschrijving
FROM prs_v_afdeling d
WHERE d.prs_afdeling_key = ra.prs_afdeling_key) afdeling
FROM alg_v_ruimte_gegevens r, prs_ruimteafdeling ra
WHERE ra.alg_ruimte_key(+) = r.alg_ruimte_key;
CREATE OR REPLACE VIEW ykpn_v_huurder
(
prs_afdeling_key4,
prs_afdeling_oms4,
prs_afdeling_key3,
prs_afdeling_oms3,
prs_afdeling_key2,
prs_afdeling_oms2
)
AS
SELECT a4.prs_afdeling_key,
a4.prs_afdeling_omschrijving,
a3.prs_afdeling_key,
a3.prs_afdeling_omschrijving,
a2.prs_afdeling_key,
a2.prs_afdeling_omschrijving
FROM prs_afdeling a4,
prs_afdeling a3,
prs_afdeling a2,
(SELECT COALESCE (a4.prs_afdeling_key,
a3.prs_afdeling_key,
a2.prs_afdeling_key)
afd4,
COALESCE (a3.prs_afdeling_key, a2.prs_afdeling_key)
afd3,
a2.prs_afdeling_key
afd2
FROM ykpn_v_afdeling a1,
ykpn_v_afdeling a2,
ykpn_v_afdeling a3,
ykpn_v_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) ab
WHERE a4.prs_afdeling_key = afd4
AND a3.prs_afdeling_key = afd3
AND a2.prs_afdeling_key = afd2;
-- Thema op afdelingsniveau 2
CREATE OR REPLACE VIEW ykpn_v_thema_huurder2
(
alg_ruimte_key,
waarde
)
AS
SELECT r.alg_ruimte_key,
DECODE(do.aantal,
1, DECODE (COALESCE(rac.aantal,0), 1, h.prs_afdeling_oms2,
0, DECODE(le.aantal, 1, '_[Leegstand]',
'_[Niet bekend]'),
'_[Meerdere]'),
'_[Niet doorbelasten]')
FROM prs_ruimteafdeling ra, ykpn_v_huurder h, alg_ruimte r,
(SELECT alg_ruimte_key, count(distinct prs_afdeling_oms2) aantal FROM prs_ruimteafdeling ra2, ykpn_v_huurder h2
WHERE ra2.prs_afdeling_key = h2.prs_afdeling_key4
GROUP BY alg_ruimte_key) rac,
(SELECT alg_onrgoed_key alg_ruimte_key, count(*) aantal
FROM alg_onrgoedkenmerk aogk
WHERE alg_kenmerk_key = 1941 -- Leegstand
AND alg_onrgoedkenmerk_verwijder IS NULL
AND alg_onrgoedkenmerk_waarde = '001'
GROUP BY alg_onrgoed_key) le,
(SELECT alg_onrgoed_key alg_ruimte_key, count(*) aantal
FROM alg_onrgoedkenmerk aogk
WHERE alg_kenmerk_key = 1940 -- Doorbelasten
AND alg_onrgoedkenmerk_verwijder IS NULL
AND alg_onrgoedkenmerk_waarde = 'D'
GROUP BY alg_onrgoed_key) do
WHERE ra.prs_afdeling_key = h.prs_afdeling_key4(+)
AND r.alg_ruimte_key = ra.alg_ruimte_key(+)
AND r.alg_ruimte_key = rac.alg_ruimte_key(+)
AND r.alg_ruimte_key = le.alg_ruimte_key(+)
AND r.alg_ruimte_key = do.alg_ruimte_key(+)
UNION ALL
SELECT DISTINCT NULL,
h.prs_afdeling_oms2
FROM ykpn_v_huurder h
WHERE NOT EXISTS
(SELECT 1
FROM prs_ruimteafdeling ra
WHERE ra.prs_afdeling_key = h.prs_afdeling_key4);
-- Thema op afdelingsniveau 3
CREATE OR REPLACE VIEW ykpn_v_thema_huurder3
(
alg_ruimte_key,
waarde
)
AS
SELECT r.alg_ruimte_key,
DECODE(do.aantal,
1, DECODE (COALESCE(rac.aantal,0), 1, h.prs_afdeling_oms3,
0, DECODE(le.aantal, 1, '_[Leegstand]',
'_[Niet bekend]'),
'_[Meerdere]'),
'_[Niet doorbelasten]')
FROM prs_ruimteafdeling ra, ykpn_v_huurder h, alg_ruimte r,
(SELECT alg_ruimte_key, count(distinct prs_afdeling_oms3) aantal FROM prs_ruimteafdeling ra2, ykpn_v_huurder h2
WHERE ra2.prs_afdeling_key = h2.prs_afdeling_key4
GROUP BY alg_ruimte_key) rac,
(SELECT alg_onrgoed_key alg_ruimte_key, count(*) aantal
FROM alg_onrgoedkenmerk aogk
WHERE alg_kenmerk_key = 1941 -- Leegstand
AND alg_onrgoedkenmerk_verwijder IS NULL
AND alg_onrgoedkenmerk_waarde = '001'
GROUP BY alg_onrgoed_key) le,
(SELECT alg_onrgoed_key alg_ruimte_key, count(*) aantal
FROM alg_onrgoedkenmerk aogk
WHERE alg_kenmerk_key = 1940 -- Doorbelasten
AND alg_onrgoedkenmerk_verwijder IS NULL
AND alg_onrgoedkenmerk_waarde = 'D'
GROUP BY alg_onrgoed_key) do
WHERE ra.prs_afdeling_key = h.prs_afdeling_key4(+)
AND r.alg_ruimte_key = ra.alg_ruimte_key(+)
AND r.alg_ruimte_key = rac.alg_ruimte_key(+)
AND r.alg_ruimte_key = le.alg_ruimte_key(+)
AND r.alg_ruimte_key = do.alg_ruimte_key(+)
UNION ALL
SELECT DISTINCT NULL,
h.prs_afdeling_oms3
FROM ykpn_v_huurder h
WHERE NOT EXISTS
(SELECT 1
FROM prs_ruimteafdeling ra
WHERE ra.prs_afdeling_key = h.prs_afdeling_key4);
-- Keys van speciale ruimte types
-- 0 Niet bekend (in feite een ongeldige situatie, alle niet leegstandsruimten moeten toegekend zijn aan een afdeling)
-- -1 Leegstand
-- -2 Niet doorbelasten
-- -3 Meerder huurders
CREATE OR REPLACE VIEW ykpn_v_thema_huurder
(
alg_ruimte_key,
waarde,
waarde_key
)
AS
SELECT r.alg_ruimte_key,
DECODE(do.aantal,
1, DECODE (COALESCE(rac.aantal,0), 1, a.prs_afdeling_omschrijving,
0, DECODE(le.aantal, 1, '_[Leegstand]',
'_[Niet bekend]'),
'_[Meerdere]'),
'_[Niet doorbelasten]'),
DECODE(do.aantal,
1, DECODE (COALESCE(rac.aantal,0), 1, a.prs_afdeling_key,
0, DECODE(le.aantal, 1, -1,
0),
-3),
-2)
FROM prs_ruimteafdeling ra, prs_afdeling a, alg_ruimte r,
(SELECT alg_ruimte_key, count(*) aantal FROM prs_ruimteafdeling
GROUP BY alg_ruimte_key) rac,
(SELECT alg_onrgoed_key alg_ruimte_key, count(*) aantal
FROM alg_onrgoedkenmerk aogk
WHERE alg_kenmerk_key = 1941 -- Leegstand
AND alg_onrgoedkenmerk_verwijder IS NULL
AND alg_onrgoedkenmerk_waarde = '001'
GROUP BY alg_onrgoed_key) le,
(SELECT alg_onrgoed_key alg_ruimte_key, count(*) aantal
FROM alg_onrgoedkenmerk aogk
WHERE alg_kenmerk_key = 1940 -- Doorbelasten
AND alg_onrgoedkenmerk_verwijder IS NULL
AND alg_onrgoedkenmerk_waarde = 'D'
GROUP BY alg_onrgoed_key) do
WHERE ra.prs_afdeling_key = a.prs_afdeling_key(+)
AND r.alg_ruimte_key = ra.alg_ruimte_key(+)
AND r.alg_ruimte_key = rac.alg_ruimte_key(+)
AND r.alg_ruimte_key = le.alg_ruimte_key(+)
AND r.alg_ruimte_key = do.alg_ruimte_key(+)
UNION ALL
SELECT NULL, h.prs_afdeling_oms4, h.prs_afdeling_key4
FROM ykpn_v_huurder h
WHERE NOT EXISTS
(SELECT 1 -- Huurders die al gekoppeld zijn willen we niet in het lijstje zien
-- Uitzondering voor huurders die met meerder huurders een ruimte bezetten
-- Die staan namelijk hierboven onder het thema _Meerdere
FROM prs_ruimteafdeling ra2,
( SELECT alg_ruimte_key,
COUNT (prs_afdeling_key) aantal
FROM prs_ruimteafdeling ra
GROUP BY alg_ruimte_key) ra3
WHERE ra3.aantal = 1
AND ra3.alg_ruimte_key = ra2.alg_ruimte_key
AND ra2.prs_afdeling_key = h.prs_afdeling_key4);
CREATE OR REPLACE TRIGGER ykpn_v_thema_huurder_i_iu
INSTEAD OF INSERT OR UPDATE
ON ykpn_v_thema_huurder
BEGIN
IF UPDATING -- oude hard weggooien; dus DELETE (lekker opruimen)!
THEN
IF :new.waarde_key > -1
THEN
DELETE FROM prs_ruimteafdeling ra
WHERE ra.alg_ruimte_key = :new.alg_ruimte_key
AND ra.prs_afdeling_key <> :new.waarde_key;
END IF;
END IF;
DECLARE
v_doorbelasting VARCHAR2(100);
v_leegstand VARCHAR2(100);
BEGIN
SELECT kd.alg_onrgoedkenmerk_waarde doorbelasting,
kl.alg_onrgoedkenmerk_waarde leegstand
INTO v_doorbelasting,
v_leegstand
FROM alg_ruimte r,
(SELECT alg_onrgoed_key, alg_onrgoedkenmerk_waarde
FROM alg_onrgoedkenmerk
WHERE alg_kenmerk_key = 1940) kd,
(SELECT alg_onrgoed_key, alg_onrgoedkenmerk_waarde
FROM alg_onrgoedkenmerk
WHERE alg_kenmerk_key = 1941) kl
WHERE r.alg_ruimte_key = kd.alg_onrgoed_key(+)
AND r.alg_ruimte_key = kl.alg_onrgoed_key(+)
AND r.alg_ruimte_key = :new.alg_ruimte_key;
IF :new.waarde_key > 0 AND v_leegstand <> '001' AND v_doorbelasting = 'D'
THEN
INSERT INTO prs_ruimteafdeling (alg_ruimte_key,
prs_afdeling_key,
prs_ruimteafdeling_bezetting)
VALUES (:new.alg_ruimte_key,
:new.waarde_key,
100);
END IF;
ykpn.update_ruimte_contract(:new.alg_ruimte_key, :new.waarde_key);
EXCEPTION
WHEN DUP_VAL_ON_INDEX -- was al aanwezig
THEN
NULL;
END;
END;
/
CREATE OR REPLACE VIEW ykpn_v_thema_leegstand
(
alg_ruimte_key,
waarde
)
AS
SELECT r.alg_ruimte_key,
DECODE(alg_onrgoedkenmerk_waarde, '001', 'Leegstand', 'Bezet')
FROM alg_ruimte r,
(SELECT alg_onrgoed_key, alg_onrgoedkenmerk_waarde
FROM alg_onrgoedkenmerk
WHERE alg_kenmerk_key = 1941) kl
WHERE r.alg_ruimte_key = kl.alg_onrgoed_key(+);
CREATE OR REPLACE VIEW ykpn_v_thema_doorbelast
(
alg_ruimte_key,
waarde
)
AS
SELECT r.alg_ruimte_key,
alg_onrgoedkenmerk_waarde
FROM alg_ruimte r,
(SELECT alg_onrgoed_key, alg_onrgoedkenmerk_waarde
FROM alg_onrgoedkenmerk
WHERE alg_kenmerk_key = 1940) kd
WHERE r.alg_ruimte_key = kd.alg_onrgoed_key(+);
-- Rapportage om inzicht te krijgen welke ruimten bezet zijn door vervallen afdelingen.
CREATE OR REPLACE VIEW ykpn_v_rap_afd_bezetting_fout
AS
SELECT prs_afdeling_naam,
prs_afdeling_omschrijving,
alg_ruimte_aanduiding,
alg_locatie_omschrijving,
alg_locatie_key
FROM prs_ruimteafdeling ra, prs_afdeling a, alg_v_ruimte_gegevens rg
WHERE a.prs_afdeling_key IN
(SELECT prs_afdeling_key
FROM prs_afdeling a2
WHERE a2.prs_afdeling_verwijder IS NULL
AND NOT EXISTS
(SELECT prs_afdeling_naam
FROM ykpn_imp_organisatie i
WHERE i.prs_afdeling_naam = a2.prs_afdeling_naam))
AND ra.prs_afdeling_key = a.prs_afdeling_key
AND ra.alg_ruimte_key = rg.alg_ruimte_key;
-- rapport om QR code per ruimte(soort) te printen.
CREATE OR REPLACE VIEW ykpn_v_rap_ruimte_qr
AS
SELECT user omgeving,
alg_locatie_omschrijving,
ud.fac_usrdata_omschr,
alg_ruimte_nr,
b.fac_bookmark_id,
b.fac_bookmark_path,
fac_bookmark_query,
r.alg_ruimte_key
FROM fac_bookmark b, alg_v_ruimte_gegevens r, alg_onrgoedkenmerk aogk, fac_usrdata ud
WHERE r.alg_ruimte_key = aogk.alg_onrgoed_key
AND aogk.alg_kenmerk_key = 1064 -- Ruimtegebruik
AND fac.safe_to_number(aogk.alg_onrgoedkenmerk_waarde) = ud.fac_usrdata_key
AND ud.fac_usrdata_code = b.fac_bookmark_id;
CREATE OR REPLACE VIEW ykpn_v_thema_ruimtegebruik
(
alg_ruimte_key,
waarde,
waarde_key
)
AS
SELECT r.alg_ruimte_key, fac_usrdata_omschr, fac_usrdata_key
FROM alg_ruimte r,
(SELECT alg_onrgoed_key, fac_usrdata_omschr, fac_usrdata_key
FROM alg_onrgoedkenmerk, fac_usrdata
WHERE alg_kenmerk_key = 1064
AND alg_onrgoedkenmerk_verwijder IS NULL
AND FAC.safe_to_number(alg_onrgoedkenmerk_waarde) = fac_usrdata_key) aogk -- Ruimtegebruik
WHERE r.alg_ruimte_key = aogk.alg_onrgoed_key(+)
UNION ALL
SELECT NULL, fac_usrdata_omschr, fac_usrdata_key
FROM fac_usrdata
WHERE fac_usrtab_key = 21
AND fac_usrdata_verwijder IS NULL
AND NOT EXISTS (SELECT 1 FROM alg_onrgoedkenmerk aogk
WHERE aogk.alg_kenmerk_key = 1064
AND aogk.alg_onrgoedkenmerk_verwijder IS NULL
AND FAC.safe_to_number(alg_onrgoedkenmerk_waarde) = fac_usrdata_key);
CREATE OR REPLACE TRIGGER ykpn_v_thema_ruimtegebr_i_iu
INSTEAD OF INSERT OR UPDATE
ON ykpn_v_thema_ruimtegebruik
BEGIN
IF UPDATING -- oude hard weggooien; dus DELETE (lekker opruimen)!
THEN
IF :new.waarde_key > -1
THEN
DELETE FROM alg_onrgoedkenmerk aogk
WHERE aogk.alg_onrgoed_key = :new.alg_ruimte_key
AND aogk.alg_kenmerk_key = 1064;
END IF;
END IF;
BEGIN
ALG.upsertkenmerk (1064, :new.alg_ruimte_key, :new.waarde_key);
EXCEPTION
WHEN DUP_VAL_ON_INDEX -- was al aanwezig
THEN
NULL;
END;
END;
/
-- afdelingsboom views. KPN heeft te veel afdelingsniveaus. Daarom maar een platte structuur met een
-- view om de boom op te stellen.
CREATE OR REPLACE VIEW ykpn_v_afdeling
(
prs_bedrijf_key,
prs_afdeling_key,
prs_afdeling_parentkey
)
AS
SELECT a.prs_bedrijf_key, a.prs_afdeling_key, kl.prs_afdeling_parentkey
FROM prs_afdeling a,
(SELECT prs_link_key prs_afdeling_key,
prs_kenmerklink_waarde prs_afdeling_parentkey
FROM prs_kenmerklink
WHERE prs_kenmerk_key = 1) kl
WHERE a.prs_afdeling_key = kl.prs_afdeling_key(+);
CREATE OR REPLACE VIEW ykpn_v_afdeling_boom
(
niveau,
prs_bedrijf_key,
prs_afdeling_key,
prs_afdeling_key1,
prs_afdeling_key2,
prs_afdeling_key3,
prs_afdeling_key4,
prs_afdeling_key5,
prs_afdeling_key6,
prs_afdeling_key7,
prs_afdeling_key8,
prs_afdeling_key9,
prs_afdeling_key10,
prs_afdeling_key11
)
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),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL)
FROM ykpn_v_afdeling a1
WHERE a1.prs_afdeling_parentkey 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),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL)
FROM ykpn_v_afdeling a1, ykpn_v_afdeling a2
WHERE a2.prs_afdeling_parentkey = a1.prs_afdeling_key
AND a1.prs_afdeling_parentkey 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),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL)
FROM ykpn_v_afdeling a1, ykpn_v_afdeling a2, ykpn_v_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
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),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL)
FROM ykpn_v_afdeling a1,
ykpn_v_afdeling a2,
ykpn_v_afdeling a3,
ykpn_v_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
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,
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL)
FROM ykpn_v_afdeling a1,
ykpn_v_afdeling a2,
ykpn_v_afdeling a3,
ykpn_v_afdeling a4,
ykpn_v_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
UNION
SELECT '6' niveau,
a1.prs_bedrijf_key,
a6.prs_afdeling_key,
a1.prs_afdeling_key,
a2.prs_afdeling_key,
a3.prs_afdeling_key,
a4.prs_afdeling_key,
a5.prs_afdeling_key,
a6.prs_afdeling_key,
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL)
FROM ykpn_v_afdeling a1,
ykpn_v_afdeling a2,
ykpn_v_afdeling a3,
ykpn_v_afdeling a4,
ykpn_v_afdeling a5,
ykpn_v_afdeling a6
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 a6.prs_afdeling_parentkey = a5.prs_afdeling_key
AND a1.prs_afdeling_parentkey IS NULL
UNION
SELECT '7' niveau,
a1.prs_bedrijf_key,
a7.prs_afdeling_key,
a1.prs_afdeling_key,
a2.prs_afdeling_key,
a3.prs_afdeling_key,
a4.prs_afdeling_key,
a5.prs_afdeling_key,
a6.prs_afdeling_key,
a7.prs_afdeling_key,
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL)
FROM ykpn_v_afdeling a1,
ykpn_v_afdeling a2,
ykpn_v_afdeling a3,
ykpn_v_afdeling a4,
ykpn_v_afdeling a5,
ykpn_v_afdeling a6,
ykpn_v_afdeling a7
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 a6.prs_afdeling_parentkey = a5.prs_afdeling_key
AND a7.prs_afdeling_parentkey = a6.prs_afdeling_key
AND a1.prs_afdeling_parentkey IS NULL
UNION
SELECT '8' niveau,
a1.prs_bedrijf_key,
a8.prs_afdeling_key,
a1.prs_afdeling_key,
a2.prs_afdeling_key,
a3.prs_afdeling_key,
a4.prs_afdeling_key,
a5.prs_afdeling_key,
a6.prs_afdeling_key,
a7.prs_afdeling_key,
a8.prs_afdeling_key,
TO_NUMBER (NULL),
TO_NUMBER (NULL),
TO_NUMBER (NULL)
FROM ykpn_v_afdeling a1,
ykpn_v_afdeling a2,
ykpn_v_afdeling a3,
ykpn_v_afdeling a4,
ykpn_v_afdeling a5,
ykpn_v_afdeling a6,
ykpn_v_afdeling a7,
ykpn_v_afdeling a8
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 a6.prs_afdeling_parentkey = a5.prs_afdeling_key
AND a7.prs_afdeling_parentkey = a6.prs_afdeling_key
AND a8.prs_afdeling_parentkey = a7.prs_afdeling_key
AND a1.prs_afdeling_parentkey IS NULL
UNION
SELECT '9' niveau,
a1.prs_bedrijf_key,
a9.prs_afdeling_key,
a1.prs_afdeling_key,
a2.prs_afdeling_key,
a3.prs_afdeling_key,
a4.prs_afdeling_key,
a5.prs_afdeling_key,
a6.prs_afdeling_key,
a7.prs_afdeling_key,
a8.prs_afdeling_key,
a9.prs_afdeling_key,
TO_NUMBER (NULL),
TO_NUMBER (NULL)
FROM ykpn_v_afdeling a1,
ykpn_v_afdeling a2,
ykpn_v_afdeling a3,
ykpn_v_afdeling a4,
ykpn_v_afdeling a5,
ykpn_v_afdeling a6,
ykpn_v_afdeling a7,
ykpn_v_afdeling a8,
ykpn_v_afdeling a9
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 a6.prs_afdeling_parentkey = a5.prs_afdeling_key
AND a7.prs_afdeling_parentkey = a6.prs_afdeling_key
AND a8.prs_afdeling_parentkey = a7.prs_afdeling_key
AND a9.prs_afdeling_parentkey = a8.prs_afdeling_key
AND a1.prs_afdeling_parentkey IS NULL
UNION
SELECT '10' niveau,
a1.prs_bedrijf_key,
a10.prs_afdeling_key,
a1.prs_afdeling_key,
a2.prs_afdeling_key,
a3.prs_afdeling_key,
a4.prs_afdeling_key,
a5.prs_afdeling_key,
a6.prs_afdeling_key,
a7.prs_afdeling_key,
a8.prs_afdeling_key,
a9.prs_afdeling_key,
a10.prs_afdeling_key,
TO_NUMBER (NULL)
FROM ykpn_v_afdeling a1,
ykpn_v_afdeling a2,
ykpn_v_afdeling a3,
ykpn_v_afdeling a4,
ykpn_v_afdeling a5,
ykpn_v_afdeling a6,
ykpn_v_afdeling a7,
ykpn_v_afdeling a8,
ykpn_v_afdeling a9,
ykpn_v_afdeling a10
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 a6.prs_afdeling_parentkey = a5.prs_afdeling_key
AND a7.prs_afdeling_parentkey = a6.prs_afdeling_key
AND a8.prs_afdeling_parentkey = a7.prs_afdeling_key
AND a9.prs_afdeling_parentkey = a8.prs_afdeling_key
AND a10.prs_afdeling_parentkey = a9.prs_afdeling_key
AND a1.prs_afdeling_parentkey IS NULL
UNION
SELECT '11' niveau,
a1.prs_bedrijf_key,
a10.prs_afdeling_key,
a1.prs_afdeling_key,
a2.prs_afdeling_key,
a3.prs_afdeling_key,
a4.prs_afdeling_key,
a5.prs_afdeling_key,
a6.prs_afdeling_key,
a7.prs_afdeling_key,
a8.prs_afdeling_key,
a9.prs_afdeling_key,
a10.prs_afdeling_key,
a11.prs_afdeling_key
FROM ykpn_v_afdeling a1,
ykpn_v_afdeling a2,
ykpn_v_afdeling a3,
ykpn_v_afdeling a4,
ykpn_v_afdeling a5,
ykpn_v_afdeling a6,
ykpn_v_afdeling a7,
ykpn_v_afdeling a8,
ykpn_v_afdeling a9,
ykpn_v_afdeling a10,
ykpn_v_afdeling a11
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 a6.prs_afdeling_parentkey = a5.prs_afdeling_key
AND a7.prs_afdeling_parentkey = a6.prs_afdeling_key
AND a8.prs_afdeling_parentkey = a7.prs_afdeling_key
AND a9.prs_afdeling_parentkey = a8.prs_afdeling_key
AND a10.prs_afdeling_parentkey = a9.prs_afdeling_key
AND a11.prs_afdeling_parentkey = a10.prs_afdeling_key
AND a1.prs_afdeling_parentkey IS NULL;
-- rapport om communicatie met Nedap opgeslagen in kenmerken inzichtelijk te maken.
CREATE OR REPLACE VIEW ykpn_v_rap_bez_kenmerk
(
bez_afspraak_key,
bez_afspraak_naam,
bez_kenmerkwaarde_waarde,
bez_kenmerkwaarde_aanmaak,
bez_kenmerk_omschrijving
)
AS
SELECT bez_afspraak_key,
bez_afspraak_naam,
bez_kenmerkwaarde_waarde,
bez_kenmerkwaarde_aanmaak,
bez_kenmerk_omschrijving
FROM bez_kenmerkwaarde kw, bez_kenmerk k, bez_bezoekers b
WHERE k.bez_kenmerk_key = kw.bez_kenmerk_key
AND kw.bez_bezoekers_key = b.bez_bezoekers_key;
CREATE OR REPLACE VIEW ykpn_v_rap_park_nedap_status
AS
SELECT alg_locatie_omschrijving,
bez_afspraak_datum,
l.alg_locatie_key,
bez_afspraak_gastheer,
bez_afspraak_naam,
bez_afspraak_bedrijf,
(SELECT bez_kenmerkwaarde_waarde
FROM bez_kenmerkwaarde kw
WHERE kw.bez_bezoekers_key = b.bez_bezoekers_key
AND bez_kenmerk_key = 1220) lastseen,
(SELECT bez_kenmerkwaarde_waarde
FROM bez_kenmerkwaarde kw
WHERE kw.bez_bezoekers_key = b.bez_bezoekers_key
AND bez_kenmerk_key = 1080) kenteken_oud,
b.bez_bezoekers_kenteken kenteken_nieuw
FROM bez_bezoekers b,
bez_afspraak a,
alg_locatie l,
res_rsv_deel rrd
WHERE a.alg_locatie_key = l.alg_locatie_key
AND b.bez_afspraak_key = a.bez_afspraak_key
AND b.bez_bezoekers_key = rrd.bez_bezoekers_key;
-- fiatteringsoverzicht inclusief afdeling.
CREATE OR REPLACE VIEW ykpn_v_fiat_huisvesting
(
mld_opdr_key,
vervanger_key,
aanvraagnummer,
datum,
prs_perslid_naam_full,
afdeling,
afdeling2,
kostenplaats_nr,
kostenplaats_oms,
bedrag,
module,
TYPE,
fiatstatus,
request_key,
statuskey,
categorie,
fiatteur,
locatie,
actie
)
AS
SELECT op.mld_opdr_key,
c.vervanger,
sd.ins_srtdiscipline_prefix
|| op.mld_melding_key
|| '/'
|| op.mld_opdr_bedrijfopdr_volgnr
aanvraagnummer,
mld_opdr_datumbegin datum,
pf.prs_perslid_naam_full,
a.prs_afdeling_omschrijving,
a2.prs_afdeling_omschrijving prs_afdeling_omschrijving2,
km.prs_kostenplaats_nr,
km.prs_kostenplaats_omschrijving,
mld_opdr_kosten bedrag,
'MLD' module,
mld_typeopdr_omschrijving TYPE,
'open' fiatstatus,
op.mld_opdr_key request_key,
op.mld_statusopdr_key statuskey,
td.ins_discipline_omschrijving categorie,
p2.prs_perslid_naam_full fiatteur,
CASE
WHEN l.alg_locatie_key IS NULL THEN NULL
ELSE l.alg_locatie_omschrijving || ' (' || l.alg_locatie_code || ')'
END
locatie,
(SELECT SUBSTR (
on1.mld_opdr_note_omschrijving,
2,
DECODE (INSTR (on1.mld_opdr_note_omschrijving, ' '),
0, 15,
INSTR (on1.mld_opdr_note_omschrijving, ' ') - 2))
FROM mld_opdr_note on1
WHERE SUBSTR (mld_opdr_note_omschrijving, 1, 1) = '#'
AND on1.mld_opdr_key = op.mld_opdr_key
AND NOT EXISTS
(SELECT mld_opdr_note_key
FROM mld_opdr_note on2
WHERE on1.mld_opdr_key = on2.mld_opdr_key
AND SUBSTR (on2.mld_opdr_note_omschrijving, 1, 1) = '#'
AND on2.mld_opdr_note_key > on1.mld_opdr_note_key))
actie
FROM mld_melding m,
mld_stdmelding sm,
mld_opdr op,
mld_typeopdr ot,
prs_v_perslid_fullnames_all pf,
ykpn_v_afdeling_boom b,
prs_afdeling a,
prs_afdeling a2,
prs_perslid p,
prs_kostenplaats km,
prs_kostenplaats k,
ins_tab_discipline td,
ins_srtdiscipline sd,
fac_tracking ft,
fac_srtnotificatie fno,
( SELECT kg.prs_perslid_key, k2.prs_kostenplaats_key
FROM prs_kostenplaats k2, prs_kostenplaatsgrp kg
WHERE kg.prs_kostenplaatsgrp_key = k2.prs_kostenplaatsgrp_key
AND kg.prs_perslid_key IN (3)
GROUP BY kg.prs_perslid_key, k2.prs_kostenplaats_key) ver,
prs_v_perslid_fullnames_all p2,
alg_locatie l,
(SELECT prs_perslid_key fiatteur, prs_perslid_key vervanger FROM prs_perslid
UNION ALL
SELECT prs_perslid_key, prs_perslid_key_alt FROM prs_collega) c
WHERE op.mld_melding_key = m.mld_melding_key
AND m.prs_kostenplaats_key = km.prs_kostenplaats_key(+)
AND op.mld_typeopdr_key = ot.mld_typeopdr_key
AND COALESCE (op.prs_kostenplaats_key, m.prs_kostenplaats_key) = k.prs_kostenplaats_key
AND k.prs_kostenplaats_key = ver.prs_kostenplaats_key(+)
AND pf.prs_perslid_key = m.prs_perslid_key
AND ft.fac_tracking_refkey = op.mld_opdr_key
AND ft.fac_srtnotificatie_key = fno.fac_srtnotificatie_key
AND op.mld_melding_key = m.mld_melding_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = td.ins_discipline_key
AND sd.ins_srtdiscipline_key = td.ins_srtdiscipline_key
AND m.mld_alg_locatie_key = l.alg_locatie_key(+)
AND fno.fac_srtnotificatie_code = 'ORDFIA'
AND op.mld_statusopdr_key = 3
AND c.fiatteur = p2.prs_perslid_key
AND p2.prs_perslid_key = p.prs_perslid_key
AND p.prs_afdeling_key = b.prs_afdeling_key
AND b.prs_afdeling_key = a.prs_afdeling_key
AND b.prs_afdeling_key2 = a2.prs_afdeling_key
AND p2.prs_perslid_key =
CASE
WHEN NOT EXISTS
(SELECT prs_perslid_key
FROM fac_tracking t, fac_srtnotificatie st
WHERE t.fac_srtnotificatie_key = st.fac_srtnotificatie_key
AND st.fac_srtnotificatie_code = 'ORDFOK'
AND fac_tracking_refkey = op.mld_opdr_key)
THEN
prs.getkpverantwoordelijke (op.prs_kostenplaats_key, 1, -1)
ELSE
ver.prs_perslid_key
END;
-- Opdrachten op naam van intern bedrijf KPN boordeling Res (42702) worden goedgekeurd
-- door ASA (Anita, Ada en Suzanne)
CREATE OR REPLACE VIEW ykpn_v_beoord_huisvesting
(
mld_opdr_key,
aanvraagnummer,
datum,
prs_perslid_naam_full,
afdeling,
afdeling2,
kostenplaats_nr,
kostenplaats_oms,
bedrag,
TYPE,
status,
categorie,
locatie,
actie
)
AS
SELECT op.mld_opdr_key,
sd.ins_srtdiscipline_prefix
|| op.mld_melding_key
|| '/'
|| op.mld_opdr_bedrijfopdr_volgnr
aanvraagnummer,
mld_opdr_datumbegin datum,
pf.prs_perslid_naam_full,
a.prs_afdeling_omschrijving,
a2.prs_afdeling_omschrijving prs_afdeling_omschrijving2,
k.prs_kostenplaats_nr,
k.prs_kostenplaats_omschrijving,
mld_opdr_kosten bedrag,
mld_typeopdr_omschrijving TYPE,
so.mld_statusopdr_omschrijving,
td.ins_discipline_omschrijving categorie,
CASE
WHEN l.alg_locatie_key IS NULL THEN NULL
ELSE l.alg_locatie_omschrijving || ' (' || l.alg_locatie_code || ')'
END
locatie,
(SELECT SUBSTR (
on1.mld_opdr_note_omschrijving,
2,
DECODE (INSTR (on1.mld_opdr_note_omschrijving, ' '),
0, 15,
INSTR (on1.mld_opdr_note_omschrijving, ' ') - 2))
FROM mld_opdr_note on1
WHERE SUBSTR (mld_opdr_note_omschrijving, 1, 1) = '#'
AND on1.mld_opdr_key = op.mld_opdr_key
AND NOT EXISTS
(SELECT mld_opdr_note_key
FROM mld_opdr_note on2
WHERE on1.mld_opdr_key = on2.mld_opdr_key
AND SUBSTR (on2.mld_opdr_note_omschrijving, 1, 1) = '#'
AND on2.mld_opdr_note_key > on1.mld_opdr_note_key))
actie
FROM mld_melding m,
mld_stdmelding sm,
mld_opdr op,
mld_typeopdr ot,
prs_v_perslid_fullnames_all pf,
ykpn_v_afdeling_boom b,
prs_perslid p,
prs_afdeling a,
prs_afdeling a2,
prs_kostenplaats k,
ins_tab_discipline td,
ins_srtdiscipline sd,
alg_locatie l,
mld_statusopdr so
WHERE op.mld_melding_key = m.mld_melding_key
AND op.mld_typeopdr_key = ot.mld_typeopdr_key
AND m.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
AND pf.prs_perslid_key = m.prs_perslid_key
AND p.prs_perslid_key = m.prs_perslid_key
AND op.mld_melding_key = m.mld_melding_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = td.ins_discipline_key
AND sd.ins_srtdiscipline_key = td.ins_srtdiscipline_key
AND m.mld_alg_locatie_key = l.alg_locatie_key(+)
AND op.mld_statusopdr_key IN (5, 8)
AND b.prs_afdeling_key = a.prs_afdeling_key
AND b.prs_afdeling_key2 = a2.prs_afdeling_key
AND p.prs_afdeling_key = b.prs_afdeling_key
AND op.mld_statusopdr_key = so.mld_statusopdr_key
AND op.mld_uitvoerende_keys = 42702;
CREATE OR REPLACE VIEW ykpn_v_gebouw_parkeer_info
AS
SELECT alg_gebouw_code,
alg_gebouw_naam,
alg_gebouw_key,
(SELECT alg_onrgoedkenmerk_waarde
FROM alg_onrgoedkenmerk aogk
WHERE aogk.alg_kenmerk_key = 1140
AND aogk.alg_onrgoed_key = g.alg_gebouw_key)
betaald,
(SELECT alg_onrgoedkenmerk_waarde
FROM alg_onrgoedkenmerk aogk
WHERE aogk.alg_kenmerk_key = 1141
AND aogk.alg_onrgoed_key = g.alg_gebouw_key)
gratis,
(SELECT alg_onrgoedkenmerk_waarde
FROM alg_onrgoedkenmerk aogk
WHERE aogk.alg_kenmerk_key = 1142
AND aogk.alg_onrgoed_key = g.alg_gebouw_key)
opmerking
FROM alg_gebouw g
WHERE alg_gebouw_verwijder IS NULL
AND EXISTS
(SELECT alg_onrgoedkenmerk_key
FROM alg_onrgoedkenmerk aogk
WHERE aogk.alg_kenmerk_key IN (1140, 1141, 1142)
AND aogk.alg_onrgoed_key = g.alg_gebouw_key
AND aogk.alg_onrgoedkenmerk_verwijder IS NULL);
-- Rapport om misbruik van parkeerplaatsen op eigen locatie te rapporteren.
CREATE OR REPLACE VIEW ykpn_v_rap_pp_eigen_gebruik
(
gebouw,
actie,
aangemeld_door,
bezoeker,
bedrijf,
email_bezoeker,
afspraak_datum
)
AS
SELECT d.alg_gebouw_upper,
ba.bez_actie_omschrijving,
pf.prs_perslid_naam_full,
bez_afspraak_naam,
bez_afspraak_bedrijf,
LOWER (prs_perslid_email),
bez_afspraak_datum
FROM bez_afspraak a,
bez_actie ba,
bez_bezoekers b,
res_rsv_deel rrd,
res_v_aanwezigdeel rd,
ins_v_deel_gegevens d,
prs_perslid p,
prs_v_perslid_fullnames pf,
prs_v_werkplekperslid_gegevens pwp
WHERE a.bez_afspraak_key = b.bez_afspraak_key
AND a.bez_actie_key = ba.bez_actie_key
AND b.bez_bezoekers_key = rrd.bez_bezoekers_key
AND rrd.res_deel_key = rd.res_deel_key
AND rd.res_ins_deel_key = d.ins_deel_key
AND UPPER (b.bez_bezoekers_email) = UPPER (p.prs_perslid_email)
AND p.prs_perslid_key = pwp.prs_perslid_key
AND pwp.alg_locatie_key = d.alg_locatie_key
AND TRUNC (bez_afspraak_datum, 'mm') = ADD_MONTHS (TRUNC (SYSDATE, 'mm'), -1)
AND p.prs_perslid_key = pf.prs_perslid_key;
CREATE OR REPLACE VIEW ykpn_v_rap_parkeerpl_telling
AS
SELECT pg.*,
ROUND((medewerkers / g_medewerkers) * 100) p_medewerkers,
ROUND((bezoek / g_bezoek) * 100) p_bezoek,
ROUND((miva / g_miva) * 100) p_miva,
ROUND((leverancier / g_leverancier) * 100) p_leverancier,
ROUND((oplaadpunt / g_oplaadpunt) * 100) p_oplaadpunt,
ROUND((rvb / g_rvb) * 100) p_rvb,
ROUND((slagboom / g_slagboom) * 100) p_slagboom,
ROUND((rondom / g_rondom) * 100) p_rondom,
ROUND((illegaal / g_illegaal) * 100) p_illegaal,
ROUND((loods / g_loods) * 100) p_loods
FROM ( SELECT mld_melding_key,
og.alg_gebouw_code,
og.alg_gebouw_naam,
FAC.safe_to_date((SELECT km.mld_kenmerkmelding_waarde
FROM mld_kenmerkmelding km, mld_kenmerk k
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_kenmerk_groep = 0
AND mld_srtkenmerk_key = 581
AND km.mld_melding_key = m.mld_melding_key), 'dd-mm-yyyy')
datum,
(SELECT ud.fac_usrdata_omschr
FROM mld_kenmerkmelding km, mld_kenmerk k, fac_usrdata ud
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_kenmerk_groep = 0
AND mld_srtkenmerk_key = 601
AND km.mld_melding_key = m.mld_melding_key
AND fac.safe_to_number (mld_kenmerkmelding_waarde) =
ud.fac_usrdata_key)
tijdstip,
FAC.safe_to_number((SELECT DECODE(km.mld_kenmerkmelding_waarde, 0, NULL, km.mld_kenmerkmelding_waarde)
FROM mld_kenmerkmelding km, mld_kenmerk k
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_kenmerk_groep = 0
AND mld_srtkenmerk_key = 621
AND km.mld_melding_key = m.mld_melding_key))
medewerkers,
FAC.safe_to_number((SELECT DECODE(km.mld_kenmerkmelding_waarde, 0, NULL, km.mld_kenmerkmelding_waarde)
FROM mld_kenmerkmelding km, mld_kenmerk k
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_kenmerk_groep = 0
AND mld_srtkenmerk_key = 622
AND km.mld_melding_key = m.mld_melding_key))
bezoek,
FAC.safe_to_number((SELECT DECODE(km.mld_kenmerkmelding_waarde, 0, NULL, km.mld_kenmerkmelding_waarde)
FROM mld_kenmerkmelding km, mld_kenmerk k
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_kenmerk_groep = 0
AND mld_srtkenmerk_key = 623
AND km.mld_melding_key = m.mld_melding_key))
miva,
FAC.safe_to_number((SELECT DECODE(km.mld_kenmerkmelding_waarde, 0, NULL, km.mld_kenmerkmelding_waarde)
FROM mld_kenmerkmelding km, mld_kenmerk k
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_kenmerk_groep = 0
AND mld_srtkenmerk_key = 624
AND km.mld_melding_key = m.mld_melding_key))
leverancier,
FAC.safe_to_number((SELECT DECODE(km.mld_kenmerkmelding_waarde, 0, NULL, km.mld_kenmerkmelding_waarde)
FROM mld_kenmerkmelding km, mld_kenmerk k
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_kenmerk_groep = 0
AND mld_srtkenmerk_key = 626
AND km.mld_melding_key = m.mld_melding_key))
oplaadpunt,
FAC.safe_to_number((SELECT DECODE(km.mld_kenmerkmelding_waarde, 0, NULL, km.mld_kenmerkmelding_waarde)
FROM mld_kenmerkmelding km, mld_kenmerk k
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_kenmerk_groep = 0
AND mld_srtkenmerk_key = 630
AND km.mld_melding_key = m.mld_melding_key))
rvb,
FAC.safe_to_number((SELECT DECODE(km.mld_kenmerkmelding_waarde, 0, NULL, km.mld_kenmerkmelding_waarde)
FROM mld_kenmerkmelding km, mld_kenmerk k
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_kenmerk_groep = 0
AND mld_srtkenmerk_key = 627
AND km.mld_melding_key = m.mld_melding_key))
slagboom,
FAC.safe_to_number((SELECT DECODE(km.mld_kenmerkmelding_waarde, 0, NULL, km.mld_kenmerkmelding_waarde)
FROM mld_kenmerkmelding km, mld_kenmerk k
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_kenmerk_groep = 0
AND mld_srtkenmerk_key = 628
AND km.mld_melding_key = m.mld_melding_key))
rondom,
FAC.safe_to_number((SELECT DECODE(km.mld_kenmerkmelding_waarde, 0, NULL, km.mld_kenmerkmelding_waarde)
FROM mld_kenmerkmelding km, mld_kenmerk k
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_kenmerk_groep = 0
AND mld_srtkenmerk_key = 629
AND km.mld_melding_key = m.mld_melding_key))
illegaal,
FAC.safe_to_number((SELECT DECODE(km.mld_kenmerkmelding_waarde, 0, NULL, km.mld_kenmerkmelding_waarde)
FROM mld_kenmerkmelding km, mld_kenmerk k
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_kenmerk_groep = 0
AND mld_srtkenmerk_key = 625
AND km.mld_melding_key = m.mld_melding_key))
loods,
FAC.safe_to_number((SELECT DECODE(km.mld_kenmerkmelding_waarde, 0, NULL, km.mld_kenmerkmelding_waarde)
FROM mld_kenmerkmelding km, mld_kenmerk k
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_kenmerk_groep = 1
AND mld_srtkenmerk_key = 621
AND km.mld_melding_key = m.mld_melding_key))
g_medewerkers,
FAC.safe_to_number((SELECT DECODE(km.mld_kenmerkmelding_waarde, 0, NULL, km.mld_kenmerkmelding_waarde)
FROM mld_kenmerkmelding km, mld_kenmerk k
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_kenmerk_groep = 1
AND mld_srtkenmerk_key = 622
AND km.mld_melding_key = m.mld_melding_key))
g_bezoek,
FAC.safe_to_number((SELECT DECODE(km.mld_kenmerkmelding_waarde, 0, NULL, km.mld_kenmerkmelding_waarde)
FROM mld_kenmerkmelding km, mld_kenmerk k
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_kenmerk_groep = 1
AND mld_srtkenmerk_key = 623
AND km.mld_melding_key = m.mld_melding_key))
g_miva,
FAC.safe_to_number((SELECT DECODE(km.mld_kenmerkmelding_waarde, 0, NULL, km.mld_kenmerkmelding_waarde)
FROM mld_kenmerkmelding km, mld_kenmerk k
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_kenmerk_groep = 1
AND mld_srtkenmerk_key = 624
AND km.mld_melding_key = m.mld_melding_key))
g_leverancier,
FAC.safe_to_number((SELECT DECODE(km.mld_kenmerkmelding_waarde, 0, NULL, km.mld_kenmerkmelding_waarde)
FROM mld_kenmerkmelding km, mld_kenmerk k
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_kenmerk_groep = 1
AND mld_srtkenmerk_key = 626
AND km.mld_melding_key = m.mld_melding_key))
g_oplaadpunt,
FAC.safe_to_number((SELECT DECODE(km.mld_kenmerkmelding_waarde, 0, NULL, km.mld_kenmerkmelding_waarde)
FROM mld_kenmerkmelding km, mld_kenmerk k
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_kenmerk_groep = 1
AND mld_srtkenmerk_key = 630
AND km.mld_melding_key = m.mld_melding_key))
g_rvb,
FAC.safe_to_number((SELECT DECODE(km.mld_kenmerkmelding_waarde, 0, NULL, km.mld_kenmerkmelding_waarde)
FROM mld_kenmerkmelding km, mld_kenmerk k
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_kenmerk_groep = 1
AND mld_srtkenmerk_key = 627
AND km.mld_melding_key = m.mld_melding_key))
g_slagboom,
FAC.safe_to_number((SELECT DECODE(km.mld_kenmerkmelding_waarde, 0, NULL, km.mld_kenmerkmelding_waarde)
FROM mld_kenmerkmelding km, mld_kenmerk k
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_kenmerk_groep = 1
AND mld_srtkenmerk_key = 628
AND km.mld_melding_key = m.mld_melding_key))
g_rondom,
FAC.safe_to_number((SELECT DECODE(km.mld_kenmerkmelding_waarde, 0, NULL, km.mld_kenmerkmelding_waarde)
FROM mld_kenmerkmelding km, mld_kenmerk k
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_kenmerk_groep = 1
AND mld_srtkenmerk_key = 629
AND km.mld_melding_key = m.mld_melding_key))
g_illegaal,
FAC.safe_to_number((SELECT DECODE(km.mld_kenmerkmelding_waarde, 0, NULL, km.mld_kenmerkmelding_waarde)
FROM mld_kenmerkmelding km, mld_kenmerk k
WHERE km.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_kenmerk_groep = 1
AND mld_srtkenmerk_key = 625
AND km.mld_melding_key = m.mld_melding_key))
g_loods
FROM mld_melding m, alg_v_onroerendgoed_gegevens og
WHERE mld_stdmelding_key = 481 -- parkeerplaatstellingen
AND mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys) pg;
-- Management info bezoekers
CREATE OR REPLACE VIEW ykpn_v_mi_bezoekers
AS
SELECT a.bez_afspraak_datum,
l.alg_locatie_omschrijving,
ac.bez_actie_omschrijving,
DECODE (b.prs_perslid_key, NULL, 'Extern', 'Intern') InternExtern,
DECODE (bez_bezoekers_done, NULL, 0,1) checkIn,
DECODE (TO_CHAR (a.bez_afspraak_datum, 'HH24'), 7, 1, 0) u7,
DECODE (TO_CHAR (a.bez_afspraak_datum, 'HH24'), 8, 1, 0) u8,
DECODE (TO_CHAR (a.bez_afspraak_datum, 'HH24'), 9, 1, 0) u9,
DECODE (TO_CHAR (a.bez_afspraak_datum, 'HH24'), 10, 1, 0) u10,
DECODE (TO_CHAR (a.bez_afspraak_datum, 'HH24'), 11, 1, 0) u11,
DECODE (TO_CHAR (a.bez_afspraak_datum, 'HH24'), 12, 1, 0) u12,
DECODE (TO_CHAR (a.bez_afspraak_datum, 'HH24'), 13, 1, 0) u13,
DECODE (TO_CHAR (a.bez_afspraak_datum, 'HH24'), 14, 1, 0) u14,
DECODE (TO_CHAR (a.bez_afspraak_datum, 'HH24'), 15, 1, 0) u15,
DECODE (TO_CHAR (a.bez_afspraak_datum, 'HH24'), 16, 1, 0) u16,
DECODE (TO_CHAR (a.bez_afspraak_datum, 'HH24'), 17, 1, 0) u17,
DECODE (TO_CHAR (a.bez_afspraak_datum, 'HH24'), 18, 1, 0) u18
FROM bez_bezoekers b,
bez_afspraak a,
bez_actie ac,
alg_locatie l
WHERE a.bez_afspraak_key = b.bez_afspraak_key
AND a.bez_actie_key = ac.bez_actie_key
AND a.alg_locatie_key = l.alg_locatie_key;
-- Taak om goedgekeuurde aanvragen die toegewezen zijn aan Arnoud Pleij en bedrijf KPN RES services
-- na acceptatie af te melden.
-- OBSOLETE? Scheduling gestopt met FCLT#58274. Mss tzt ook maar de procedure opruimen
CREATE OR REPLACE PROCEDURE ykpn_import_afmelden_opdracht (
p_import_key IN NUMBER)
AS
CURSOR c
IS
SELECT *
FROM mld_opdr
-- Arnoud Pleij en bedrijf KPN RES services
WHERE mld_uitvoerende_keys IN (7676, 42702)
-- status geaccepteerd
AND mld_statusopdr_key = 8;
BEGIN
FOR rec IN c
LOOP
mld.setopdrachtstatus (rec.mld_opdr_key, 6, 3); -- afgemeld door Facilitor
mld.updatemeldingstatusav (rec.mld_melding_key, 0, NULL, 0);
END LOOP;
END;
/
-----------------------------------------
-- Pandbrieven
-----------------------------------------
-- view om bij de melding pandbrief de default uit de persoonskenmerken te halen
CREATE OR REPLACE VIEW ykpn_v_prs_perslid_pandbrief
(
prs_perslid_key,
alg_locatie_code,
waarde
)
AS
SELECT prs_link_key, prs_kenmerk_hint, prs_kenmerklink_waarde
FROM prs_kenmerklink kl, prs_kenmerk k
WHERE kl.prs_kenmerk_key = k.prs_kenmerk_key
AND prs_kenmerk_kenmerktype = 'V'
AND (LENGTH(prs_kenmerk_hint) = 5 OR prs_kenmerk_hint = 'TP');
-- rapportage om distributielijst met pandbrieven uit te draaien
-- Uitzondering voor Rob grevenstette (135671) en Walter van der Wilt (92323)
CREATE OR REPLACE VIEW ykpn_v_rap_distr_pandbrief
AS
SELECT alg_locatie_code, alg_locatie_omschrijving, prs_perslid_email
FROM prs_perslid p, prs_v_perslidwerkplek_gegevens wpg, alg_locatie l
WHERE p.prs_perslid_key = wpg.prs_perslid_key
AND wpg.alg_locatie_key = l.alg_locatie_key
AND p.prs_perslid_email IS NOT NULL
AND alg_locatie_code IN (SELECT prs_kenmerk_hint FROM prs_kenmerk WHERE prs_kenmerk_verwijder IS NULL)
AND p.prs_perslid_key NOT IN (135671,92323)
AND p.prs_perslid_verwijder IS NULL
AND p.prs_perslid_inactief IS NULL
UNION
SELECT k.prs_kenmerk_hint, l.alg_locatie_omschrijving, p.prs_perslid_email
FROM prs_kenmerklink kl, prs_perslid p, prs_kenmerk k, alg_locatie l
WHERE kl.prs_link_key = p.prs_perslid_key
AND kl.prs_kenmerk_key = k.prs_kenmerk_key
AND (LENGTH (k.prs_kenmerk_hint) = 5 OR k.prs_kenmerk_hint = 'TP')
AND p.prs_perslid_email IS NOT NULL
AND k.prs_kenmerk_hint = l.alg_locatie_code
AND p.prs_perslid_verwijder IS NULL
AND p.prs_perslid_inactief IS NULL
AND p.prs_perslid_key NOT IN (135671,92323);
-- View om voorbeeld pandbrief op te vragen via rapportages
CREATE OR REPLACE VIEW ykpn_v_rap_pandbrief
AS
SELECT m.mld_melding_key,
mld_melding_onderwerp,
mld_melding_omschrijving mld_melding_omschrijving,
alg_locatie_omschrijving,
alg_locatie_key,
alg_locatie_key extra_key,
kmb.bijlage,
kmo.volgorde
FROM mld_melding m,
alg_locatie l,
(SELECT mld_melding_key, mld_kenmerkmelding_waarde bijlage
FROM mld_kenmerkmelding
WHERE mld_kenmerk_key = 5161) kmb, -- bijlage
(SELECT mld_melding_key, mld_kenmerkmelding_waarde verzending
FROM mld_kenmerkmelding
WHERE mld_kenmerk_key = 5163) kmv, -- klaar voor verzending
(SELECT mld_melding_key, mld_kenmerkmelding_waarde alle
FROM mld_kenmerkmelding
WHERE mld_kenmerk_key = 5162) kma, -- alle locaties
(SELECT mld_melding_key, mld_kenmerkmelding_waarde volgorde
FROM mld_kenmerkmelding
WHERE mld_kenmerk_key = 5181) kmo -- alle locaties
WHERE mld_stdmelding_key = 2461
AND m.mld_melding_status = 4 -- geaccepteerd
AND ( m.mld_alg_locatie_key = l.alg_locatie_key
OR ( kma.alle = '1'
AND l.alg_locatie_code IN
(SELECT prs_kenmerk_hint FROM prs_kenmerk)))
AND m.mld_melding_key = kmb.mld_melding_key(+)
AND m.mld_melding_key = kmv.mld_melding_key(+)
AND m.mld_melding_key = kma.mld_melding_key(+)
AND m.mld_melding_key = kmo.mld_melding_key(+);
-- Gebouwpaspoort
CREATE OR REPLACE VIEW ykpn_v_rap_gebouw_info
AS
SELECT g.alg_gebouw_image bld_img,
-- ykpn.get_kenmerk ('ALG', 1680, alg_gebouw_key) bld_img,
ykpn.get_kenmerk ('ALG', 1641, alg_gebouw_key) openingst,
ykpn.get_kenmerk ('ALG', 2260, alg_gebouw_key) openingst_pand,
ykpn.get_kenmerk ('ALG', 1640, alg_gebouw_key) tel_bev,
ykpn.get_kenmerk ('ALG', 1620, alg_gebouw_key) tel_rec,
ykpn.get_kenmerk ('ALG', 1403, alg_gebouw_key) naam_fm,
ykpn.get_kenmerk ('ALG', 1483, alg_gebouw_key) email_fm,
ykpn.get_kenmerk ('ALG', 1401, alg_gebouw_key) tel_fm,
ykpn.get_kenmerk ('ALG', 1980, alg_gebouw_key) img_fm,
ykpn.get_kenmerk ('ALG', 2001, alg_gebouw_key) naam_fm1,
ykpn.get_kenmerk ('ALG', 2000, alg_gebouw_key) img_fm1,
ykpn.get_kenmerk ('ALG', 2003, alg_gebouw_key) naam_fm2,
ykpn.get_kenmerk ('ALG', 2002, alg_gebouw_key) img_fm2,
ykpn.get_kenmerk ('ALG', 2005, alg_gebouw_key) naam_fm3,
ykpn.get_kenmerk ('ALG', 2004, alg_gebouw_key) img_fm3,
ykpn.get_kenmerk ('ALG', 1404, alg_gebouw_key) naam_fc,
ykpn.get_kenmerk ('ALG', 1484, alg_gebouw_key) email_fc,
ykpn.get_kenmerk ('ALG', 1402, alg_gebouw_key) tel_fc,
ykpn.get_kenmerk ('ALG', 1960, alg_gebouw_key) img_fc,
ykpn.get_kenmerk ('ALG', 2080, alg_gebouw_key) naam_fc2,
ykpn.get_kenmerk ('ALG', 2083, alg_gebouw_key) email_fc2,
ykpn.get_kenmerk ('ALG', 2082, alg_gebouw_key) tel_fc2,
ykpn.get_kenmerk ('ALG', 2081, alg_gebouw_key) img_fc2,
ykpn.get_kenmerk ('ALG', 2320, alg_gebouw_key) naam_fc3,
ykpn.get_kenmerk ('ALG', 2321, alg_gebouw_key) email_fc3,
ykpn.get_kenmerk ('ALG', 2322, alg_gebouw_key) tel_fc3,
ykpn.get_kenmerk ('ALG', 2323, alg_gebouw_key) img_fc3,
ykpn.get_kenmerk ('ALG', 2023, alg_gebouw_key) naam_sm,
ykpn.get_kenmerk ('ALG', 2022, alg_gebouw_key) email_sm,
ykpn.get_kenmerk ('ALG', 2021, alg_gebouw_key) tel_sm,
ykpn.get_kenmerk ('ALG', 2020, alg_gebouw_key) img_sm,
ykpn.get_kenmerk ('ALG', 1740, alg_gebouw_key) naam_em,
ykpn.get_kenmerk ('ALG', 1760, alg_gebouw_key) email_em,
ykpn.get_kenmerk ('ALG', 1742, alg_gebouw_key) tel_em,
ykpn.get_kenmerk ('ALG', 1981, alg_gebouw_key) img_em,
ykpn.get_kenmerk ('ALG', 1420, alg_gebouw_key) not_pbo,
ykpn.get_kenmerk ('ALG', 1140, alg_gebouw_key) bet_park,
ykpn.get_kenmerk ('ALG', 1141, alg_gebouw_key) grat_park,
ykpn.get_kenmerk ('ALG', 1142, alg_gebouw_key) opm_park,
ykpn.get_kenmerk ('ALG', 1040, alg_gebouw_key) route,
ykpn.get_kenmerk ('ALG', 2040, alg_gebouw_key) plattegrond,
ykpn.get_kenmerk ('ALG', 1485, alg_gebouw_key) ebike,
ykpn.get_kenmerk ('ALG', 1481, alg_gebouw_key) leenf,
ykpn.get_kenmerk ('ALG', 1320, alg_gebouw_key) parkp_medw,
ykpn.get_kenmerk ('ALG', 1321, alg_gebouw_key) parkp_bez,
ykpn.get_kenmerk ('ALG', 1322, alg_gebouw_key) parkp_miva,
ykpn.get_kenmerk ('ALG', 1323, alg_gebouw_key) parkp_lev,
ykpn.get_kenmerk ('ALG', 1325, alg_gebouw_key) oplaadpnt_auto,
ykpn.get_kenmerk ('ALG', 1326, alg_gebouw_key) parkp_ingslagbm,
ykpn.get_kenmerk ('ALG', 1327, alg_gebouw_key) parkp_rondompp,
ykpn.get_kenmerk ('ALG', 1328, alg_gebouw_key) parkp_illegaal,
ykpn.get_kenmerk ('ALG', 1324, alg_gebouw_key) parloods,
ykpn.get_kenmerk ('ALG', 1487, alg_gebouw_key) koffie,
ykpn.get_kenmerk ('ALG', 2100, alg_gebouw_key) rookv,
ykpn.get_kenmerk ('ALG', 2140, alg_gebouw_key) opmerking,
( SELECT MAX(alg_ruimte_key)
FROM alg_v_ruimte_gegevens rg, cad_imp_contour c, cad_tekening t
WHERE rg.alg_gebouw_key = g.alg_gebouw_key
AND rg.alg_ruimte_nr = c.cad_imp_contour_nr
AND c.cad_imp_contour_concept = 0
AND rg.alg_verdieping_key = t.alg_verdieping_key
AND t.cad_tekening_key = c.cad_tekening_key
AND alg_ruimte_nr = ykpn.get_kenmerk ('ALG', 1487, alg_gebouw_key)) koffie_key,
ykpn.get_kenmerk ('ALG', 1900, alg_gebouw_key) paragon,
( SELECT MAX(alg_ruimte_key)
FROM alg_v_ruimte_gegevens rg, cad_imp_contour c, cad_tekening t
WHERE rg.alg_gebouw_key = g.alg_gebouw_key
AND rg.alg_ruimte_nr = c.cad_imp_contour_nr
AND c.cad_imp_contour_concept = 0
AND rg.alg_verdieping_key = t.alg_verdieping_key
AND t.cad_tekening_key = c.cad_tekening_key
AND alg_ruimte_nr = ykpn.get_kenmerk ('ALG', 1900, alg_gebouw_key)) paragon_key,
ykpn.get_kenmerk ('ALG', 1880, alg_gebouw_key) yask,
( SELECT MAX(alg_ruimte_key)
FROM alg_v_ruimte_gegevens rg, cad_imp_contour c, cad_tekening t
WHERE rg.alg_gebouw_key = g.alg_gebouw_key
AND rg.alg_ruimte_nr = c.cad_imp_contour_nr
AND c.cad_imp_contour_concept = 0
AND rg.alg_verdieping_key = t.alg_verdieping_key
AND t.cad_tekening_key = c.cad_tekening_key
AND alg_ruimte_nr = ykpn.get_kenmerk ('ALG', 1880, alg_gebouw_key)) yask_key,
ykpn.get_kenmerk ('ALG', 1488, alg_gebouw_key) walk,
( SELECT MAX(alg_ruimte_key)
FROM alg_v_ruimte_gegevens rg, cad_imp_contour c, cad_tekening t
WHERE rg.alg_gebouw_key = g.alg_gebouw_key
AND rg.alg_ruimte_nr = c.cad_imp_contour_nr
AND c.cad_imp_contour_concept = 0
AND rg.alg_verdieping_key = t.alg_verdieping_key
AND t.cad_tekening_key = c.cad_tekening_key
AND alg_ruimte_nr = ykpn.get_kenmerk ('ALG', 1488, alg_gebouw_key)) walk_key,
ykpn.get_kenmerk ('ALG', 1500, alg_gebouw_key) kolfruimte,
( SELECT MAX(alg_ruimte_key)
FROM alg_v_ruimte_gegevens rg, cad_imp_contour c, cad_tekening t
WHERE rg.alg_gebouw_key = g.alg_gebouw_key
AND rg.alg_ruimte_nr = c.cad_imp_contour_nr
AND c.cad_imp_contour_concept = 0
AND rg.alg_verdieping_key = t.alg_verdieping_key
AND t.cad_tekening_key = c.cad_tekening_key
AND alg_ruimte_nr = ykpn.get_kenmerk ('ALG', 1500, alg_gebouw_key)) kolf_key,
ykpn.get_kenmerk ('ALG', 1489, alg_gebouw_key) douches,
( SELECT MAX(alg_ruimte_key)
FROM alg_v_ruimte_gegevens rg, cad_imp_contour c, cad_tekening t
WHERE rg.alg_gebouw_key = g.alg_gebouw_key
AND rg.alg_ruimte_nr = c.cad_imp_contour_nr
AND c.cad_imp_contour_concept = 0
AND rg.alg_verdieping_key = t.alg_verdieping_key
AND t.cad_tekening_key = c.cad_tekening_key
AND alg_ruimte_nr = ykpn.get_kenmerk ('ALG', 1489, alg_gebouw_key)) douches_key,
ykpn.get_kenmerk ('ALG', 1501, alg_gebouw_key) it_serv,
( SELECT LISTAGG (xml.char_to_html(b.fac_bijlagen_filename), ',')
WITHIN GROUP (ORDER BY fac_bijlagen_key DESC)
AS bijlagen
FROM fac_bijlagen b
WHERE fac_bijlagen_refkey = g.alg_gebouw_key
AND b.fac_bijlagen_kenmerk_key = 1720
AND b.fac_bijlagen_module = 'ALG'
AND b.fac_bijlagen_verwijder IS NULL
GROUP BY fac_bijlagen_refkey) it_serv_plat,
( SELECT MAX(alg_ruimte_key)
FROM alg_v_ruimte_gegevens rg, cad_imp_contour c, cad_tekening t
WHERE rg.alg_gebouw_key = g.alg_gebouw_key
AND rg.alg_ruimte_nr = c.cad_imp_contour_nr
AND c.cad_imp_contour_concept = 0
AND rg.alg_verdieping_key = t.alg_verdieping_key
AND t.cad_tekening_key = c.cad_tekening_key
AND alg_ruimte_nr = ykpn.get_kenmerk ('ALG', 1501, alg_gebouw_key)) it_serv_key,
ykpn.get_kenmerk ('ALG', 1486, alg_gebouw_key) loc_rest,
ykpn.get_kenmerk ('ALG', 2240, alg_gebouw_key) loc_gebedsr,
( SELECT MAX(alg_ruimte_key)
FROM alg_v_ruimte_gegevens rg, cad_imp_contour c, cad_tekening t
WHERE rg.alg_gebouw_key = g.alg_gebouw_key
AND rg.alg_ruimte_nr = c.cad_imp_contour_nr
AND c.cad_imp_contour_concept = 0
AND rg.alg_verdieping_key = t.alg_verdieping_key
AND t.cad_tekening_key = c.cad_tekening_key
AND alg_ruimte_nr = ykpn.get_kenmerk ('ALG', 2240, alg_gebouw_key)) loc_gebedsr_key,
ykpn.get_kenmerk ('ALG', 2220, alg_gebouw_key) openingstijd_rest,
(SELECT fud.fac_usrdata_omschr
FROM alg_v_aanwezigonrgoedkenmerk ak, fac_usrdata fud
WHERE ak.alg_onrgoed_key= g.alg_gebouw_key
AND ak.alg_onrgoed_niveau='G'
AND ak.alg_kenmerk_key=2221
AND fud.Fac_Usrdata_Key=ak.alg_onrgoedkenmerk_waarde) coffeecorner,
ykpn.get_kenmerk ('ALG', 2222, alg_gebouw_key) openingstijd_coffeec,
ykpn.get_kenmerk ('ALG', 1061, alg_gebouw_key) cat_manager,
( SELECT MAX(alg_ruimte_key)
FROM alg_v_ruimte_gegevens rg, cad_imp_contour c, cad_tekening t
WHERE rg.alg_gebouw_key = g.alg_gebouw_key
AND rg.alg_ruimte_nr = c.cad_imp_contour_nr
AND c.cad_imp_contour_concept = 0
AND rg.alg_verdieping_key = t.alg_verdieping_key
AND t.cad_tekening_key = c.cad_tekening_key
AND alg_ruimte_nr = ykpn.get_kenmerk ('ALG', 1486, alg_gebouw_key)) loc_rest_key,
xml.char_to_html(ykpn.get_kenmerk ('ALG', 1700, alg_gebouw_key)) banq_map,
( SELECT LISTAGG (xml.char_to_html(b.fac_bijlagen_filename), ',')
WITHIN GROUP (ORDER BY fac_bijlagen_key DESC)
AS bijlagen
FROM fac_bijlagen b
WHERE fac_bijlagen_refkey = g.alg_gebouw_key
AND b.fac_bijlagen_kenmerk_key = 1920
AND b.fac_bijlagen_module = 'ALG'
AND b.fac_bijlagen_verwijder IS NULL
GROUP BY fac_bijlagen_refkey) banq_map_file,
ykpn.get_kenmerk ('ALG', 1063, alg_gebouw_key) email_cat,
(SELECT alg_kenmerk_hint from alg_kenmerk where alg_kenmerk_key=1063) email_hint,
ykpn.get_kenmerk ('ALG', 1062, alg_gebouw_key) tel_cat,
ykpn.get_kenmerk ('ALG', 1580, alg_gebouw_key) email_paragon,
ykpn.get_kenmerk ('ALG', 1540, alg_gebouw_key) tel_paragon,
ykpn.get_kenmerk ('ALG', 1600, alg_gebouw_key) centr_repro,
ykpn.get_kenmerk ('ALG', 2160, alg_gebouw_key) beveiliging,
ykpn.get_kenmerk ('ALG', 2180, alg_gebouw_key) bev_openingtd,
( SELECT LISTAGG (xml.char_to_html(b.fac_bijlagen_filename), ',')
WITHIN GROUP (ORDER BY fac_bijlagen_key DESC)
AS bijlagen
FROM fac_bijlagen b
WHERE fac_bijlagen_refkey = g.alg_gebouw_key
AND b.fac_bijlagen_kenmerk_key = 1420
AND b.fac_bijlagen_module = 'ALG'
AND b.fac_bijlagen_verwijder IS NULL
GROUP BY fac_bijlagen_refkey) bew_ovl,
( SELECT LISTAGG (xml.char_to_html(b.fac_bijlagen_filename), ',')
WITHIN GROUP (ORDER BY fac_bijlagen_key DESC)
AS bijlagen
FROM fac_bijlagen b
WHERE fac_bijlagen_refkey = g.alg_gebouw_key
AND b.fac_bijlagen_kenmerk_key = 1780
AND b.fac_bijlagen_module = 'ALG'
AND b.fac_bijlagen_verwijder IS NULL
GROUP BY fac_bijlagen_refkey) pandbr,
( SELECT LISTAGG (xml.char_to_html(b.fac_bijlagen_filename), ',')
WITHIN GROUP (ORDER BY fac_bijlagen_key DESC)
AS bijlagen
FROM fac_bijlagen b
WHERE fac_bijlagen_refkey = g.alg_gebouw_key
AND b.fac_bijlagen_kenmerk_key = 1820
AND b.fac_bijlagen_module = 'ALG'
AND b.fac_bijlagen_verwijder IS NULL
GROUP BY fac_bijlagen_refkey) bes_form,
( SELECT LISTAGG (xml.char_to_html(b.fac_bijlagen_filename), ',')
WITHIN GROUP (ORDER BY fac_bijlagen_key DESC)
AS bijlagen
FROM fac_bijlagen b
WHERE fac_bijlagen_refkey = g.alg_gebouw_key
AND b.fac_bijlagen_kenmerk_key = 1840
AND b.fac_bijlagen_module = 'ALG'
AND b.fac_bijlagen_verwijder IS NULL
GROUP BY fac_bijlagen_refkey) rie,
l.alg_locatie_adres,
l.alg_locatie_postcode,
l.alg_locatie_plaats,
xml.char_to_html(alg_gebouw_omschrijving) geb_oms,
g.*
FROM alg_gebouw g, alg_locatie l
WHERE alg_gebouw_verwijder IS NULL
AND ( alg_gebouw_vervaldatum IS NULL
OR TRUNC(alg_gebouw_vervaldatum) > TRUNC(SYSDATE))
AND g.alg_locatie_key = l.alg_locatie_key
AND ykpn.get_kenmerk ('ALG', 1641, alg_gebouw_key) IS NOT NULL;
-- CAD VIEWS
CREATE OR REPLACE VIEW ykpn_v_thema_resruimtesensor
(
ALG_RUIMTE_KEY,
WAARDE
)
AS
-- en dan de ruimten zonder sensor
SELECT r.alg_ruimte_key,
DECODE (rr.res_ruimte_key, -- is dit een vergaderruimte?
NULL, '*',
DECODE (r2a.res_reservering_key, NULL, 'Vrij', 'Bezet')) -- 0 uit / 1 noshow / 2 aan
FROM alg_v_aanwezigruimte r,
alg_srtruimte sr,
(SELECT rr2a.res_reservering_key, rr2a.alg_ruimte_key
FROM res_v_rsv_ruimte_2_alg_ruimte rr2a
WHERE res_rsv_ruimte_dirtlevel = 0
AND rr2a.res_alg_ruimte_verwijder IS NULL
AND rr2a.res_rsv_ruimte_van BETWEEN TRUNC (SYSDATE)
AND SYSDATE
AND rr2a.res_rsv_ruimte_tot BETWEEN SYSDATE
AND TRUNC (SYSDATE + 1))
r2a,
( SELECT alg_ruimte_key, MAX (res_ruimte_key) res_ruimte_key
FROM res_alg_ruimte
WHERE res_alg_ruimte_verwijder IS NULL
GROUP BY alg_ruimte_key) rr
WHERE r.alg_srtruimte_key = sr.alg_srtruimte_key(+)
AND r.alg_ruimte_key = r2a.alg_ruimte_key(+)
AND r.alg_ruimte_key = rr.alg_ruimte_key(+)
AND NOT EXISTS
(SELECT r.alg_ruimte_key
FROM ins_deel d, ins_srtdeel sd
WHERE d.ins_deel_verwijder IS NULL
AND d.ins_alg_ruimte_type = 'R'
AND d.ins_alg_ruimte_key = r.alg_ruimte_key
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
AND sd.ins_srtgroep_key =
fac.getSetting (
'ins_occupationsensors_srtgroep_key')
AND d.ins_deel_state IS NOT NULL);
-- Thema voor werkplekbezetting. Beschikbaar geeft andere kleur bij andere catalogus
-- waarde1: Voor hele dagen: Vrij(0) of Bezet (3)
-- waarde: Voor halve dagen: Vrij(0), Ochtendbezet(1), MiddagBezet(2), Helemaalbezet(3)
-- waarde3: Voor tellen: Het aantal reservering op de dag, met 0 is dus Vrij
CREATE OR REPLACE VIEW ykpn_v_thema_deel_res_datum
AS
WITH
datums
AS
( SELECT TRUNC (SYSDATE) + LEVEL - 1 datum
FROM DUAL
CONNECT BY LEVEL <= 42)
SELECT datum
fclt_f_datum,
ins_deel_key,
MIN (res_rsv_deel_van)
min_van,
MAX (res_rsv_deel_tot)
max_tot,
CASE WHEN MAX (res_rsv_deel_tot) IS NULL
THEN DECODE (res_discipline_key, 2341, 4, 2421, 0, 5) -- 2341 flex cn, 2421 flex KPN
ELSE 3 -- Bezet
END waarde1,
CASE
WHEN MAX (res_rsv_deel_tot) IS NULL THEN DECODE (res_discipline_key, 2341, 4, 2421, 0, 3661, 6, 5) -- 2341 flex cn, 2421 flex KPN 3661 buroblokken
WHEN TO_CHAR (MAX (res_rsv_deel_tot), 'HH24') <= 18 AND res_discipline_key = 2341 THEN 1 -- dag bezet (flex cn)
WHEN TO_CHAR (MIN (res_rsv_deel_van), 'HH24') >= 16 AND res_discipline_key = 2341 THEN 2 -- avond bezet (flex cn)
WHEN res_discipline_key = 2961 AND count(*) = 1 THEN 1 -- <20><>n blok bezet, catalogus proef Zo werken wij CS
WHEN res_discipline_key = 2961 AND count(*) = 2 THEN 2 -- twee blokken bezet, catalogus proef Zo werken wij CS
ELSE 3 -- hele dag bezet
END
waarde,
COUNT (res_rsv_deel_tot) -- aantal reservering deze dag
waarde3
FROM (SELECT datums.datum,
res_ins_deel_key ins_deel_key,
res_rsv_deel_van,
res_rsv_deel_tot,
res_discipline_key
FROM res_v_aanwezigdeel r,
ins_deel d,
datums,
(SELECT datum,
res_deel_key,
res_rsv_deel_van,
res_rsv_deel_tot
FROM datums, res_v_aanwezigrsv_deel rrd
WHERE datum+1 >= res_rsv_deel_van
AND datum < res_rsv_deel_tot)
blokkerend -- vandaag en nog niet afgelopen
WHERE r.res_deel_key = blokkerend.res_deel_key(+)
AND datums.datum = blokkerend.datum(+)
AND ( r.res_deel_vervaldatum IS NULL
OR r.res_deel_vervaldatum > datums.datum)
AND d.ins_deel_key = r.res_ins_deel_key)
GROUP BY datum, ins_deel_key, res_discipline_key
ORDER BY datum, ins_deel_key;
-- Thema voor buroblokken. Beschikbaar geeft andere kleur bij andere catalogus
-- waarde1: Voor hele dagen: Vrij(0) of Bezet (3)
-- waarde: Voor halve dagen: Vrij(0), Ochtendbezet(1), MiddagBezet(2), Helemaalbezet(3)
-- waarde3: Voor tellen: Het aantal reservering op de dag, met 0 is dus Vrij
CREATE OR REPLACE VIEW ykpn_v_thema_buroblk_res_datum
AS
WITH
datums
AS
( SELECT TRUNC (SYSDATE) + LEVEL - 1 datum
FROM DUAL
CONNECT BY LEVEL <= 28) -- 4 weken voorruit
SELECT datum
fclt_f_datum,
ins_deel_key,
MIN (res_rsv_deel_van)
min_van,
MAX (res_rsv_deel_tot)
max_tot,
CASE WHEN MAX (res_rsv_deel_tot) IS NULL
THEN 0 -- vrij
ELSE 3 -- Bezet
END waarde1,
CASE
WHEN MAX (res_rsv_deel_tot) IS NULL THEN 0 -- Vij
WHEN TO_CHAR (MIN (res_rsv_deel_van), 'HH24') < 10 AND TO_CHAR (MAX (res_rsv_deel_tot), 'HH24') > 15 THEN 3
WHEN TO_CHAR (MAX (res_rsv_deel_tot), 'HH24') < 13 THEN 1 -- ochtend bezet
WHEN TO_CHAR (MAX (res_rsv_deel_van), 'HH24') >= 13 THEN 2 -- middag bezet
ELSE 3 -- hele dag bezet
END
waarde,
COUNT (res_rsv_deel_tot) -- aantal reservering deze dag
waarde3
FROM (SELECT datums.datum,
res_ins_deel_key ins_deel_key,
res_rsv_deel_van,
res_rsv_deel_tot,
res_discipline_key
FROM res_v_aanwezigdeel r,
ins_deel d,
datums,
(SELECT datum,
res_deel_key,
res_rsv_deel_van,
res_rsv_deel_tot
FROM datums, res_v_aanwezigrsv_deel rrd
WHERE datum+1 >=res_rsv_deel_van
AND datum < res_rsv_deel_tot)
blokkerend -- vandaag en nog niet afgelopen
WHERE r.res_deel_key = blokkerend.res_deel_key(+)
AND datums.datum = blokkerend.datum(+)
AND ( r.res_deel_vervaldatum IS NULL
OR r.res_deel_vervaldatum > datums.datum)
AND d.ins_deel_key = r.res_ins_deel_key
AND r.res_discipline_key in (3661,4021)) -- Teamarea werkplekblok 3661 en catalogus tijdelijk houten 4021
GROUP BY datum, ins_deel_key, res_discipline_key
ORDER BY datum, ins_deel_key;
-- Thema voor vergaderruimte bezetting. Beschikbaar geeft andere kleur bij andere catalogus
-- waarde1: Voor hele dagen: Vrij(0) of Bezet (3)
-- waarde: Voor halve dagen: Vrij(0), Ochtendbezet(1), MiddagBezet(2), Helemaalbezet(3)
-- waarde3: Voor tellen: Het aantal reservering op de dag, met 0 is dus Vrij
CREATE OR REPLACE VIEW ykpn_v_thema_vergad_res_datum
AS
WITH
datums
AS
( SELECT TRUNC (SYSDATE) + LEVEL - 1 datum
FROM DUAL
CONNECT BY LEVEL <= 42)
SELECT datum
fclt_f_datum,
alg_ruimte_key,
MIN (res_rsv_ruimte_van)
min_van,
MAX (res_rsv_ruimte_tot)
max_tot,
CASE WHEN MAX (res_rsv_ruimte_tot) IS NULL
THEN res_ruimte_nr
ELSE
CASE WHEN res_status_fo_key=3 -- geblokkeerd
THEN
'geblokkeerd'
ELSE
'bezet'
END -- Bezet
END waarde1,
CASE WHEN MAX (res_rsv_ruimte_tot) IS NULL
THEN res_ruimte_nr
ELSE
CASE WHEN res_status_fo_key=3 -- geblokkeerd
THEN
'geblokkeerd'
ELSE
'bezet'
END -- Bezet
END waarde,
COUNT (res_rsv_ruimte_tot) -- aantal reservering deze dag
waarde3
FROM
(SELECT datums.datum,
rar.alg_ruimte_key alg_ruimte_key,
res_ruimte_nr,
res_rsv_ruimte_van,
res_rsv_ruimte_tot,
res_discipline_key,
blokkerend.res_status_fo_key
FROM res_v_aanwezigruimte rr,
res_alg_ruimte rar,
datums,
(SELECT datum,
res_ruimte_key,
res_rsv_ruimte_van,
res_rsv_ruimte_tot,
res_status_fo_key
FROM datums, res_rsv_ruimte rrd,
res_ruimte_opstelling ro
WHERE datum+1 >= res_rsv_ruimte_van
AND rrd.res_rsv_ruimte_verwijder IS NULL
AND ro.res_ruimte_opstel_key = rrd.res_ruimte_opstel_key
AND datum < res_rsv_ruimte_tot)
blokkerend
WHERE rr.res_ruimte_key = blokkerend.res_ruimte_key(+)
AND rr.res_ruimte_key = rar.res_ruimte_key
AND rar.res_alg_ruimte_verwijder is null
AND datums.datum = blokkerend.datum(+)
AND res_discipline_key = 72 --Vergader zalen
AND (rr.res_ruimte_vervaldatum IS NULL
OR rr.res_ruimte_vervaldatum > datums.datum))
GROUP BY datum, alg_ruimte_key, res_ruimte_nr, res_discipline_key, res_status_fo_key
ORDER BY datum, alg_ruimte_key;
-- Thema voor vergaderruimte bezetting. Beschikbaar geeft andere kleur bij andere catalogus
-- waarde: Voor bloktijden: Vrij(0), ochtend (bezet), Middag(bezet) of Gehele dag Bezet (3)
-- waarde1: Voor halve dagen: Vrij(0), Ochtendbezet(1), MiddagBezet(2), Helemaalbezet(3)
-- waarde3: Voor tellen: Het aantal reservering op de dag, met 0 is dus Vrij
CREATE OR REPLACE VIEW ykpn_v_thema_vrgd_blktd_res
AS
WITH
datums
AS
( SELECT TRUNC (SYSDATE) + LEVEL - 1 datum
FROM DUAL
CONNECT BY LEVEL <= 42)
SELECT datum
fclt_f_datum,
alg_ruimte_key,
MIN (res_rsv_ruimte_van)
min_van,
MAX (res_rsv_ruimte_tot)
max_tot,
CASE WHEN MAX (res_rsv_ruimte_tot) IS NULL
THEN res_ruimte_nr
ELSE
CASE
WHEN TO_CHAR (MAX (res_rsv_ruimte_tot), 'HH24') < 13 THEN 'ochtend' -- ochtend bezet
WHEN TO_CHAR (MAX (res_rsv_ruimte_van), 'HH24') >= 13 THEN 'middag' -- middag bezet
ELSE
'gehele dag' -- gehele dag bezet
END
END waarde,
CASE WHEN MAX (res_rsv_ruimte_tot) IS NULL
THEN res_ruimte_nr
ELSE
CASE WHEN res_status_fo_key=3 -- geblokkeerd
THEN
'geblokkeerd'
ELSE
'bezet'
END -- Bezet
END waarde1,
COUNT (res_rsv_ruimte_tot) -- aantal reservering deze dag
waarde3
FROM
(SELECT datums.datum,
rar.alg_ruimte_key alg_ruimte_key,
res_ruimte_nr,
res_rsv_ruimte_van,
res_rsv_ruimte_tot,
res_discipline_key,
blokkerend.res_status_fo_key
FROM res_v_aanwezigruimte rr,
res_alg_ruimte rar,
datums,
(SELECT datum,
res_ruimte_key,
res_rsv_ruimte_van,
res_rsv_ruimte_tot,
res_status_fo_key
FROM datums, res_rsv_ruimte rrd,
res_ruimte_opstelling ro
WHERE datum+1 >= res_rsv_ruimte_van
AND rrd.res_rsv_ruimte_verwijder IS NULL
AND ro.res_ruimte_opstel_key = rrd.res_ruimte_opstel_key
AND datum < res_rsv_ruimte_tot)
blokkerend
WHERE rr.res_ruimte_key = blokkerend.res_ruimte_key(+)
AND rr.res_ruimte_key = rar.res_ruimte_key
AND rar.res_alg_ruimte_verwijder is null
AND datums.datum = blokkerend.datum(+)
AND res_discipline_key = 72 --Vergader zalen
AND (rr.res_ruimte_vervaldatum IS NULL
OR rr.res_ruimte_vervaldatum > datums.datum))
GROUP BY datum, alg_ruimte_key, res_ruimte_nr, res_discipline_key, res_status_fo_key
ORDER BY datum, alg_ruimte_key;
CREATE OR REPLACE VIEW ykpn_v_thema_wp_noshow
AS
SELECT TRUNC(SYSDATE) datum,
rd.res_deel_key ins_deel_key,
rrr.res_rsv_ruimte_key,
'bezet' waarde
FROM res_rsv_ruimte rrr,res_rsv_deel rrd, res_deel rd, res_activiteit ra
WHERE TRUNC(rrr.res_rsv_ruimte_van)=TRUNC(SYSDATE)
AND rrr.res_rsv_ruimte_verwijder IS NULL
AND rrr.res_activiteit_key=ra.res_activiteit_key
AND ra.res_activiteit_key=110
AND rrd.res_rsv_ruimte_key= rrr.res_rsv_ruimte_key
AND rd.res_deel_key=rrd.res_deel_key;
CREATE OR REPLACE VIEW ykpn_v_thema_inventarisatie
(
alg_ruimte_key,
waarde
)
AS
SELECT alg.alg_ruimte_key alg_ruimte_key,
CASE
WHEN rui.alg_srtruimte_key NOT IN ( 83, -- Videoconferentieruimte
39, -- COMMERCIEEL_RMT
24, -- KANTOORRUIMTE
82, -- Vergaderruimte
162)-- STILTERUIMTE
THEN
3
WHEN TO_CHAR(done.DATUM,'YYYYMMDD')>TO_CHAR(TRUNC(SYSDATE)-30,'YYYYMMDD') -- we kijken 30 dagen terug
THEN
1
ELSE
0
END waarde
FROM ALG_V_ALLONRGOED_GEGEVENS alg, ALG_V_RUIMTE_GEGEVENS rui,
(SELECT mld.mld_alg_onroerendgoed_keys alg_ruimte_key, mld.mld_melding_datum datum
FROM mld_melding mld
WHERE mld.mld_stdmelding_key=3401
) done
WHERE alg.alg_ruimte_key IS NOT NULL --IN (20982,26221)
AND alg.alg_ruimte_key = done.alg_ruimte_key(+)
AND rui.alg_ruimte_key = alg.alg_ruimte_key;
CREATE OR REPLACE VIEW ykpn_v_thema_iot
(
ins_deel_key,
waarde
)
AS
SELECT ins.ins_deel_key ins_deel_key, kn.ins_kenmerkdeel_waarde waarde
FROM ins_deel ins, ins_kenmerkdeel kn
WHERE ins.ins_discipline_key=3142 -- Discipline IoT DEV=3101 ACC=3142, PROD=3282
AND kn.ins_deel_key = ins.ins_deel_key
AND kn.ins_kenmerk_key= 461 -- Kenmerk Waarde DEV=241, ACC=461, PROD=
AND ins.ins_deel_verwijder IS NULL
and kn.ins_kenmerkdeel_verwijder IS NULL;
CREATE OR REPLACE VIEW ykpn_v_thema_kpniot
(
ins_deel_key,
waarde
)
AS
SELECT ins.ins_deel_key ins_deel_key, kn.ins_kenmerkdeel_waarde waarde
FROM ins_deel ins, ins_kenmerkdeel kn
WHERE ins.ins_discipline_key=3141 -- Discipline IoT_KPN DEV=3123, ACC=3141, prod=3281
AND kn.ins_deel_key = ins.ins_deel_key
AND kn.ins_kenmerk_key= 481 -- Kenmerk Waarde DEV=301, ACC=481, PROD=
AND ins.ins_deel_verwijder IS NULL
and kn.ins_kenmerkdeel_verwijder IS NULL;
CREATE OR REPLACE VIEW ykpn_v_thema_ruimte_res_datum
(
fclt_f_datum,
alg_ruimte_key,
res_ruimte_key,
min_van,
max_tot,
waarde1,
waarde,
waarde3
)
AS
WITH
datums
AS
( SELECT TRUNC (SYSDATE) + LEVEL - 1 datum
FROM DUAL
CONNECT BY LEVEL <= 21)
SELECT datum fclt_f_datum,
alg_ruimte_key,
res_ruimte_key,
MIN (res_rsv_ruimte_van) min_van,
MAX (res_rsv_ruimte_tot) max_tot,
CASE
WHEN MAX (res_rsv_ruimte_tot) IS NULL
THEN
res_ruimte_nr
ELSE
CASE WHEN res_status_fo_key=3 -- geblokkeerd
THEN
'geblokkeerd'
ELSE
'bezet'
END
END waarde1,
CASE
WHEN MAX (res_rsv_ruimte_tot) IS NULL
THEN
res_ruimte_nr
ELSE
CASE WHEN res_status_fo_key=3 -- geblokkeerd
THEN
'geblokkeerd'
ELSE
'bezet'
END
END waarde,
COUNT (res_rsv_ruimte_tot) -- aantal reservering deze dag
waarde3
FROM (SELECT datums.datum,
rr.res_ruimte_key,
rar.alg_ruimte_key alg_ruimte_key,
res_ruimte_nr,
res_rsv_ruimte_van,
res_rsv_ruimte_tot,
blokkerend.res_status_fo_key
FROM res_v_aanwezigruimte rr,
res_alg_ruimte rar,
datums,
(SELECT datum,
res_ruimte_key,
res_rsv_ruimte_van,
res_rsv_ruimte_tot,
res_status_fo_key
FROM datums,
res_rsv_ruimte rrr,
res_ruimte_opstelling rro
WHERE res_rsv_ruimte_van > TRUNC (SYSDATE) - 1 -- negeer alle irrelevante historie sowieso
AND rrr.res_rsv_ruimte_verwijder IS NULL
AND rrr.res_ruimte_opstel_key =
rro.res_ruimte_opstel_key
--AND datum >= TRUNC (res_rsv_ruimte_van)
--AND datum < TRUNC (res_rsv_ruimte_tot) + 1)
AND datum+1 >= res_rsv_ruimte_van
AND datum < res_rsv_ruimte_tot)
blokkerend -- vandaag en nog niet afgelopen
WHERE rr.res_ruimte_key = blokkerend.res_ruimte_key(+)
AND rr.res_ruimte_key = rar.res_ruimte_key
AND rar.res_alg_ruimte_verwijder is null
AND datums.datum = blokkerend.datum(+)
AND res_discipline_key IN (2581,3541) -- Team areas
AND ( rr.res_ruimte_vervaldatum IS NULL
OR rr.res_ruimte_vervaldatum > datums.datum))
GROUP BY datum,
alg_ruimte_key,
res_ruimte_key,
res_ruimte_nr,
res_status_fo_key;
-- Thema voor team area's kleur op de achtergrond van werkplekblokken
CREATE OR REPLACE VIEW ykpn_v_thema_teamarea_kleur
AS
SELECT rar.alg_ruimte_key, ra.res_ruimte_nr waarde, ra.res_ruimte_key waarde_key
FROM res_v_aanwezigruimte ra, res_alg_ruimte rar
WHERE ra.res_discipline_key IN (2581)
AND rar.res_ruimte_key = ra.res_ruimte_key
AND rar.res_alg_ruimte_verwijder IS NULL;
-- Specifiek them voor team area rotterdam
CREATE OR REPLACE VIEW ykpn_v_thema_afdspc_res_datum
(
fclt_f_datum,
alg_ruimte_key,
res_ruimte_key,
min_van,
max_tot,
waarde1,
waarde,
waarde3
)
AS
WITH
datums
AS
( SELECT TRUNC (SYSDATE) + LEVEL - 1 datum
FROM DUAL
CONNECT BY LEVEL <= 42)
SELECT datum fclt_f_datum,
alg_ruimte_key,
res_ruimte_key,
MIN (res_rsv_ruimte_van) min_van,
MAX (res_rsv_ruimte_tot) max_tot,
CASE
WHEN MAX (res_rsv_ruimte_tot) IS NULL
THEN
res_ruimte_nr
ELSE
CASE WHEN res_status_fo_key=3 -- geblokkeerd
THEN
'geblokkeerd'
ELSE
'bezet'
END
END waarde1,
CASE
WHEN MAX (res_rsv_ruimte_tot) IS NULL
THEN
res_ruimte_nr
ELSE
CASE WHEN res_status_fo_key=3 -- geblokkeerd
THEN
'geblokkeerd'
ELSE
'bezet'
END
END waarde,
COUNT (res_rsv_ruimte_tot) -- aantal reservering deze dag
waarde3
FROM (SELECT datums.datum,
rr.res_ruimte_key,
rar.alg_ruimte_key alg_ruimte_key,
res_ruimte_nr,
res_rsv_ruimte_van,
res_rsv_ruimte_tot,
blokkerend.res_status_fo_key
FROM res_v_aanwezigruimte rr,
res_alg_ruimte rar,
datums,
(SELECT datum,
res_ruimte_key,
res_rsv_ruimte_van,
res_rsv_ruimte_tot,
res_status_fo_key
FROM datums,
res_rsv_ruimte rrr,
res_ruimte_opstelling rro
WHERE res_rsv_ruimte_van > TRUNC (SYSDATE) - 1 -- negeer alle irrelevante historie sowieso
AND rrr.res_rsv_ruimte_verwijder IS NULL
AND rrr.res_ruimte_opstel_key =
rro.res_ruimte_opstel_key
--AND datum >= TRUNC (res_rsv_ruimte_van)
--AND datum < TRUNC (res_rsv_ruimte_tot) + 1)
AND datum+1 >= res_rsv_ruimte_van
AND datum < res_rsv_ruimte_tot)
blokkerend -- vandaag en nog niet afgelopen
WHERE rr.res_ruimte_key = blokkerend.res_ruimte_key(+)
AND rr.res_ruimte_key = rar.res_ruimte_key
AND rar.res_alg_ruimte_verwijder is null
AND datums.datum = blokkerend.datum(+)
AND res_discipline_key = 3581 -- Team areas
AND ( rr.res_ruimte_vervaldatum IS NULL
OR rr.res_ruimte_vervaldatum > datums.datum))
GROUP BY datum,
alg_ruimte_key,
res_ruimte_key,
res_ruimte_nr,
res_status_fo_key;
-- View om inzicht in het aantal omruil acties incl kenmerken
CREATE OR REPLACE VIEW ykpn_v_rap_omruilactie
AS
SELECT res_rsv_ruimte_key,
nummer,
datum,
gastheer,
prs_perslid_email,
locatie_omschrijving,
verdieping,
ruimte,
voorziening_product,
voorziening_van,
voorziening_tot,
DECODE(TB_laptopst,'1','Ja','Nee') tb_laptopstd,
DECODE(tb_stoel,'1','Ja','Nee') tb_stoel,
DECODE(tb_monitor,'1','Ja','Nee') tb_monitor,
TB_thw,
DECODE(ah_laptopst,'1','Ja','Nee') ah_laptopstd,
DECODE(ah_stoel,'1','Ja','Nee') ah_stoel,
DECODE(ah_monitor,'1','Ja','Nee') ah_monitor,
ah_thw
FROM (
SELECT vw.res_rsv_ruimte_key,
vw.nummer,
vw.datum,
vw.gastheer,
vw.prs_perslid_email,
vw.locatie_omschrijving,
vw.verdieping,
vw.ruimte,
vw.voorziening_product,
vw.voorziening_van,
vw.voorziening_tot,
(SELECT knw.res_kenmerkreservering_waarde
FROM res_kenmerkwaarde knw
WHERE knw.res_kenmerk_key=303 AND res_rsv_ruimte_key=vw.res_rsv_ruimte_key) TB_laptopst,
(SELECT knw.res_kenmerkreservering_waarde
FROM res_kenmerkwaarde knw
WHERE knw.res_kenmerk_key=305 AND res_rsv_ruimte_key=vw.res_rsv_ruimte_key) TB_stoel,
(SELECT knw.res_kenmerkreservering_waarde
FROM res_kenmerkwaarde knw
WHERE knw.res_kenmerk_key=321 AND res_rsv_ruimte_key=vw.res_rsv_ruimte_key) TB_monitor,
(SELECT knw.res_kenmerkreservering_waarde
FROM res_kenmerkwaarde knw
WHERE knw.res_kenmerk_key=306 AND res_rsv_ruimte_key=vw.res_rsv_ruimte_key) TB_thw,
(SELECT knw.res_kenmerkreservering_waarde
FROM res_kenmerkwaarde knw
WHERE knw.res_kenmerk_key=308 AND res_rsv_ruimte_key=vw.res_rsv_ruimte_key) AH_laptopst,
(SELECT knw.res_kenmerkreservering_waarde
FROM res_kenmerkwaarde knw
WHERE knw.res_kenmerk_key=309 AND res_rsv_ruimte_key=vw.res_rsv_ruimte_key) AH_stoel,
(SELECT knw.res_kenmerkreservering_waarde
FROM res_kenmerkwaarde knw
WHERE knw.res_kenmerk_key=341 AND res_rsv_ruimte_key=vw.res_rsv_ruimte_key) AH_monitor,
(SELECT knw.res_kenmerkreservering_waarde
FROM res_kenmerkwaarde knw
WHERE knw.res_kenmerk_key=310 AND res_rsv_ruimte_key=vw.res_rsv_ruimte_key) AH_thw
FROM ykpn_v_rap_corona_bez vw
WHERE vw.voorziening_catalogus='Omruilactie');
-- View om inzicht in het aantal bezoeker bij teameareas te krijgen.
-- Teamarea's UNION met Flexplekken
CREATE OR REPLACE VIEW ykpn_v_rap_corona_bez
AS
SELECT rrr.res_rsv_ruimte_key,
rrr.res_reservering_key || '/' || res_rsv_ruimte_volgnr nummer,
res_rsv_ruimte_van datum,
hk.prs_perslid_naam_full gastheer,
p.prs_perslid_email,
alg_locatie_omschrijving locatie_omschrijving,
alg_verdieping_volgnr verdieping,
MAX(alg_ruimte_nr) ruimte,
res_activiteit_omschrijving activiteit,
rd.ins_discipline_omschrijving voorziening_catalogus,
rr.res_ruimte_nr voorziening_product,
rrr.res_rsv_ruimte_van voorziening_van,
rrr.res_rsv_ruimte_tot voorziening_tot,
b.bez_afspraak_naam bezoeker,
b.bez_afspraak_bedrijf bedrijf,
b.bez_bezoekers_email bezoeker_email,
DECODE(rrr.res_rsv_ruimte_dirtlevel, 0, '', 'Ongeldig') status,
DECODE(bhv.prs_kenmerklink_waarde, 1, 1, NULL) bhv,
DECODE(COALESCE(rrd.res_deel_key,0), 0,0,1) aantal_park,
DECODE(COALESCE(b.bez_bezoekers_key,0), 0,0,1) aantal_bez
FROM res_rsv_ruimte rrr,
res_ruimte_opstelling rro,
res_alg_ruimte rar,
res_ruimte rr,
res_rsv_deel rrd,
prs_v_perslid_fullnames hk,
prs_perslid p,
res_activiteit a,
alg_v_ruimte_gegevens rg,
bez_afspraak af,
bez_bezoekers b,
res_discipline rd,
(SELECT prs_link_key, prs_kenmerklink_waarde
FROM prs_kenmerklink kl
WHERE kl.prs_kenmerk_key = 1161) bhv
WHERE rrr.res_rsv_ruimte_host_key = hk.prs_perslid_key
AND rrr.res_rsv_ruimte_host_key = p.prs_perslid_key
AND rrr.res_rsv_ruimte_host_key = bhv.prs_link_key(+)
AND rrr.res_activiteit_key = a.res_activiteit_key
AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key
AND rro.res_ruimte_key = rr.res_ruimte_key
AND rro.res_ruimte_key = rar.res_ruimte_key
AND rr.res_discipline_key = rd.ins_discipline_key
AND rar.alg_ruimte_key = rg.alg_ruimte_key
AND rar.res_alg_ruimte_verwijder IS NULL
AND rrr.res_rsv_ruimte_verwijder IS NULL
-- AND rrr.res_activiteit_key = 150
AND rrr.res_rsv_ruimte_key = af.res_rsv_ruimte_key(+)
AND af.bez_afspraak_key = b.bez_afspraak_key(+)
AND rrr.alg_ruimte_key IS NULL
AND rrd.bez_bezoekers_key(+)=b.bez_bezoekers_key
GROUP BY rrr.res_rsv_ruimte_key,
rrr.res_reservering_key,
res_rsv_ruimte_volgnr,
res_rsv_ruimte_van,
hk.prs_perslid_naam_full,
p.prs_perslid_email,
alg_locatie_omschrijving,
alg_verdieping_volgnr,
res_activiteit_omschrijving,
DECODE(rrr.res_rsv_ruimte_dirtlevel, 0, '', 'Ongeldig'),
rr.res_ruimte_nr,
rrr.res_rsv_ruimte_van,
rrr.res_rsv_ruimte_tot,
b.bez_afspraak_naam,
b.bez_afspraak_bedrijf,
b.bez_bezoekers_email,
prs_kenmerklink_waarde,
rd.ins_discipline_omschrijving,
rrd.res_deel_key,
b.bez_bezoekers_key
UNION ALL
SELECT rrr.res_rsv_ruimte_key,
rrr.res_reservering_key || '/' || res_rsv_ruimte_volgnr nummer,
res_rsv_ruimte_van datum,
hk.prs_perslid_naam_full gastheer,
p.prs_perslid_email,
alg_locatie_omschrijving locatie_omschrijving,
alg_verdieping_volgnr verdieping,
alg_ruimte_nr ruimte,
res_activiteit_omschrijving activiteit,
d.ins_discipline_omschrijving voorziening_catalogus,
rd.res_deel_omschrijving voorziening_product,
rrd.res_rsv_deel_van voorziening_van,
rrd.res_rsv_deel_tot voorziening_tot,
b.bez_afspraak_naam bezoeker,
b.bez_afspraak_bedrijf bedrijf,
b.bez_bezoekers_email bezoeker_email,
NULL status,
DECODE(bhv.prs_kenmerklink_waarde, 1, 1, NULL) bhv,
DECODE(COALESCE(rrp.res_deel_key,0), 0,0,1) aantal_park,
DECODE(COALESCE(b.bez_bezoekers_key,0), 0,0,1) aantal_bez
FROM res_rsv_ruimte rrr,
res_rsv_deel rrd,
res_rsv_deel rrp,
res_deel rd,
res_discipline d,
prs_v_perslid_fullnames hk,
prs_perslid p,
res_activiteit a,
alg_v_ruimte_gegevens rg,
bez_afspraak af,
bez_bezoekers b,
( SELECT prs_link_key, prs_kenmerklink_waarde
FROM prs_kenmerklink kl
WHERE kl.prs_kenmerk_key = 1161) bhv
WHERE rrr.res_rsv_ruimte_key = rrd.res_rsv_ruimte_key
AND rrd.res_deel_key = rd.res_deel_key
AND rd.res_discipline_key = d.ins_discipline_key
AND rrr.res_rsv_ruimte_host_key = hk.prs_perslid_key
AND rrr.res_rsv_ruimte_host_key = p.prs_perslid_key
AND rrr.res_rsv_ruimte_host_key = bhv.prs_link_key(+)
AND rrr.res_activiteit_key = a.res_activiteit_key
AND rrr.alg_ruimte_key = rg.alg_ruimte_key
AND rrr.res_rsv_ruimte_verwijder IS NULL
AND rrr.res_rsv_ruimte_key = af.res_rsv_ruimte_key(+)
AND af.bez_afspraak_key = b.bez_afspraak_key(+)
AND rrp.bez_bezoekers_key(+)=b.bez_bezoekers_key
UNION -- was eerst een UNION ALL
SELECT a.bez_afspraak_key,
null,
a.bez_afspraak_datum datum,
hk.prs_perslid_naam_full gastheer,
p.prs_perslid_email,
lg.alg_locatie_omschrijving locatie_omschrijving,
NULL verdieping,
NULL ruimte,
NULL activiteit,
NULL voorziening_catalogus,
NULL voorziening_product,
a.bez_afspraak_datum voorziening_van,
a.bez_afspraak_eind voorziening_tot,
b.bez_afspraak_naam bezoeker,
b.bez_afspraak_bedrijf bedrijf,
b.bez_bezoekers_email bezoeker_email,
NULL status,
DECODE(bhv.prs_kenmerklink_waarde, 1, 1, NULL) bhv,
DECODE(COALESCE(rrp.res_deel_key,0), 0,0,1) aantal_park,
DECODE(COALESCE(b.bez_bezoekers_key,0), 0,0,1) aantal_bez
FROM bez_afspraak a,
bez_bezoekers b,
prs_v_perslid_fullnames hk,
prs_perslid p,
alg_v_locatie_gegevens lg,
res_rsv_deel rrp,
(SELECT prs_link_key, prs_kenmerklink_waarde
FROM prs_kenmerklink kl
WHERE kl.prs_kenmerk_key = 1161) bhv
WHERE a.res_rsv_ruimte_key IS NULL
AND a.bez_afspraak_key = b.bez_afspraak_key(+)
AND a.bez_afspraak_host_key= hk.PRS_PERSLID_KEY
AND a.bez_afspraak_host_key=p.prs_perslid_key
AND a.bez_afspraak_host_key = bhv.prs_link_key(+)
AND a.alg_locatie_key = lg.alg_locatie_key
AND rrp.bez_bezoekers_key(+)=b.bez_bezoekers_key;
-- View om een herinnering voor werkplek reserveringen te sturen.
CREATE OR REPLACE VIEW ykpn_v_noti_flex_wp_reminder
AS
SELECT 'CUST15' code
, NULL sender
, rrr.res_rsv_ruimte_contact_key receiver
, 'Reminder reservering werkplek op ' || TO_CHAR (rrr.res_rsv_ruimte_van, 'DD-MM') || ' in ons kantoor ' || l.alg_locatie_omschrijving text
, rrr.res_reservering_key key
, rrr.res_rsv_ruimte_key xkey
FROM res_rsv_ruimte rrr,
alg_v_ruimte_gegevens rg,
alg_locatie l
WHERE res_activiteit_key IN (110) -- werkplek reserveringen
AND rrr.res_rsv_ruimte_verwijder IS NULL
AND rrr.alg_ruimte_key = rg.alg_ruimte_key
AND rg.alg_locatie_key = l.alg_locatie_key
AND FAC.count_Work_Days (SYSDATE, res_rsv_ruimte_van) = 1
AND FAC.count_Work_Days (rrr.res_rsv_ruimte_aanmaak, SYSDATE) > 2 -- als kort van te voren (2 dagen) aangemaakt dan sturen we geen noti
AND TO_CHAR (SYSDATE, 'D') NOT IN (1, 7) -- niet op zaterdag en zondag of op een feestdag een bericht sturen.
AND NOT EXISTS
(SELECT 1
FROM mld_vrije_dagen v
WHERE v.mld_vrije_dagen_datum = TRUNC (SYSDATE));
-- View om een herinnering voor werkplek reserveringen te sturen.
CREATE OR REPLACE VIEW ykpn_v_noti_flex_wpblok_rmndr
AS
SELECT 'CUST21' code
, NULL sender
, rrr.res_rsv_ruimte_contact_key receiver
, 'Reminder reservering werkplekblok op ' || TO_CHAR (rrr.res_rsv_ruimte_van, 'DD-MM') || ' in ons kantoor ' || l.alg_locatie_omschrijving text
, rrr.res_reservering_key key
, rrr.res_rsv_ruimte_key xkey
FROM res_rsv_ruimte rrr,
alg_v_ruimte_gegevens rg,
alg_locatie l
WHERE res_activiteit_key IN (250) -- werkplekblok reserveringen
AND rrr.res_rsv_ruimte_verwijder IS NULL
AND rrr.alg_ruimte_key = rg.alg_ruimte_key
AND rg.alg_locatie_key = l.alg_locatie_key
AND FAC.count_Work_Days (SYSDATE, res_rsv_ruimte_van) = 1
AND FAC.count_Work_Days (rrr.res_rsv_ruimte_aanmaak, SYSDATE) > 2 -- als kort van te voren (2 dagen) aangemaakt dan sturen we geen noti
AND TO_CHAR (SYSDATE, 'D') NOT IN (1, 7) -- niet op zaterdag en zondag of op een feestdag een bericht sturen.
AND NOT EXISTS
(SELECT 1
FROM mld_vrije_dagen v
WHERE v.mld_vrije_dagen_datum = TRUNC (SYSDATE));
-- View om een herinnering voor vergader reserveringen te sturen.
CREATE OR REPLACE VIEW ykpn_v_noti_vergader_reminder
AS
SELECT 'CUST19' code
, NULL sender
, rrr.res_rsv_ruimte_contact_key receiver
, 'Reminder reservering vergaderzaal op ' || TO_CHAR (rrr.res_rsv_ruimte_van, 'DD-MM') || ' in ons kantoor ' || l.alg_locatie_omschrijving text
, rrr.res_reservering_key key
, rrr.res_rsv_ruimte_key xkey
, rrr.res_rsv_ruimte_van
FROM res_rsv_ruimte rrr,
res_ruimte_opstelling rro,
res_ruimte rr,
res_alg_ruimte rar,
alg_v_ruimte_gegevens rg,
alg_locatie l
WHERE res_activiteit_key IN (10) -- vergadzerzaal
AND rrr.res_rsv_ruimte_verwijder IS NULL
AND rro.res_ruimte_opstel_key = rrr.res_ruimte_opstel_key
AND rr.res_ruimte_key = rro.res_ruimte_key
AND rar.res_ruimte_key = rr.res_ruimte_key
AND rg.alg_ruimte_key = rar.alg_ruimte_key
AND rg.alg_locatie_key = l.alg_locatie_key
AND FAC.count_Work_Days (SYSDATE, rrr.res_rsv_ruimte_van) = 2
AND FAC.count_Work_Days (rrr.res_rsv_ruimte_aanmaak, SYSDATE) >= 2 -- als kort van te voren (2 dagen) aangemaakt dan sturen we geen noti
AND TO_CHAR (SYSDATE, 'D') NOT IN (1, 7) -- niet op zaterdag en zondag of op een feestdag een bericht sturen.
AND NOT EXISTS
(SELECT 1
FROM mld_vrije_dagen v
WHERE v.mld_vrije_dagen_datum = TRUNC (SYSDATE));
-- View om een herinnering voor teamarea reserveringen te sturen.
CREATE OR REPLACE VIEW ykpn_v_noti_teama_reminder
AS
SELECT 'CUST19' code
, NULL sender
, rrr.res_rsv_ruimte_contact_key receiver
, 'Reminder reservering teamarea op ' || TO_CHAR (rrr.res_rsv_ruimte_van, 'DD-MM') || ' in ons kantoor ' || rr.RES_RUIMTE_NR ||' ('||l.ALG_LOCATIE_OMSCHRIJVING||')' text
, rrr.res_reservering_key key
, rrr.res_rsv_ruimte_key xkey
, rrr.res_rsv_ruimte_van
FROM res_rsv_ruimte rrr,
res_ruimte_opstelling rro,
res_ruimte rr,
alg_v_ruimte_gegevens rg,
alg_locatie l
WHERE res_activiteit_key IN (150) -- vergadzerzaal of teamarea
AND rrr.res_rsv_ruimte_verwijder IS NULL
AND rro.res_ruimte_opstel_key = rrr.res_ruimte_opstel_key
AND rr.res_ruimte_key = rro.res_ruimte_key
AND rg.alg_ruimte_key = (SELECT MIN(rar.alg_ruimte_key) FROM res_alg_ruimte rar WHERE rar.res_ruimte_key = rr.res_ruimte_key)
AND rg.alg_locatie_key = l.alg_locatie_key
AND FAC.count_Work_Days (SYSDATE, rrr.res_rsv_ruimte_van) = 1
AND FAC.count_Work_Days (rrr.res_rsv_ruimte_aanmaak, SYSDATE) >= 0 -- als kort van te voren (2 dagen) aangemaakt dan sturen we geen noti
AND TO_CHAR (SYSDATE, 'D') NOT IN (1, 7) -- niet op zaterdag en zondag of op een feestdag een bericht sturen.
AND NOT EXISTS
(SELECT 1
FROM mld_vrije_dagen v
WHERE v.mld_vrije_dagen_datum = TRUNC (SYSDATE));
CREATE OR REPLACE VIEW ykpn_v_noti_vbgo_schoonmaak
AS
SELECT o.mld_opdr_key key,
'CUST24' code,
NULL sender,
NULL receiver,
'Opdracht '|| m.mld_melding_key||'/'||o.MLD_OPDR_BEDRIJFOPDR_VOLGNR||' is uitgegegeven aan vebego Cleaning Service' text,
(SELECT LISTAGG(cp.prs_contactpersoon_email,';')
from prs_contactpersoon cp, prs_contactpersoon_locatie cpl
where cp.prs_bedrijf_key= b.prs_bedrijf_key
AND cpl.prs_contactpersoon_key = cp.prs_contactpersoon_key
AND cpl.alg_locatie_key = m.mld_alg_locatie_key
AND cp.prs_contactpersoon_verwijder IS NULL) xemail,
NULL xmobile
FROM mld_opdr o,
mld_melding m,
mld_statusopdr so,
mld_typeopdr ot,
prs_bedrijf b,
fac_tracking ft,
fac_notificatie_job nj
WHERE o.mld_statusopdr_key = so.mld_statusopdr_key
AND so.mld_statusopdr_omschrijving = 'Toegekend'
AND m.mld_melding_key = o.mld_melding_key
AND ot.mld_typeopdr_key = o.mld_typeopdr_key
AND ( UPPER(ot.mld_typeopdr_omschrijving)='CONTRACTOPDR. LEVERANCIERS'
OR UPPER(ot.mld_typeopdr_omschrijving)='CONTRACTOPDR. FS')
AND b.prs_bedrijf_key = o.mld_uitvoerende_keys
AND b.prs_leverancier_nr='836034'
AND ft.fac_tracking_refkey=o.mld_opdr_key
AND ft.FAC_SRTNOTIFICATIE_KEY=61 -- ORDNEW
AND ft.FAC_TRACKING_DATUM > nj.FAC_NOTIFICATIE_JOB_LASTRUN
AND nj.FAC_NOTIFICATIE_JOB_OMS='Notificatie Vebego cleaningservices';
-- Laat koffieautomaten op de plattegrond zien. Als er een openstaande melding is wordt deze rood.
CREATE OR REPLACE VIEW ykpn_v_thema_vending
(
ins_deel_key,
alg_ruimte_key,
waarde
)
AS
SELECT ins_deel_key,
ins_alg_ruimte_key,
DECODE ((SELECT COUNT (*)
FROM mld_melding m, mld_melding_object mo
WHERE m.mld_melding_key = mo.mld_melding_key
AND mo.ins_deel_key = d.ins_deel_key
AND mld_melding_status IN (0,
2,
3,
4,
7,
99)),
0, 'Normaal',
'Defect') ins_status
FROM ins_deel d
WHERE ins_discipline_key = 101;
-- Label thema met alleen ruimtenummer.
CREATE OR REPLACE VIEW ykpn_v_label_ruimte_nr
(
alg_ruimte_key,
waarde
)
AS
SELECT alg_ruimte_key, alg_ruimte_nr FROM alg_ruimte;
-----------------------------------------
-- Koppeling met Strukton
-----------------------------------------
CREATE OR REPLACE PROCEDURE ykpn_import_opdrstat_strukton (
p_import_key IN NUMBER)
AS
c_delim VARCHAR2 (1) := ';';
v_newline VARCHAR2 (4000); -- Input line
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (4000);
v_dummy VARCHAR2 (200);
header_is_valid NUMBER := 0;
v_count NUMBER;
v_count_tot NUMBER (10) := 0;
v_count_import NUMBER (10) := 0;
v_ongeldig NUMBER (1) := 0; -- 0= Goed, 1= Error, 2=Waarschuwing
-- De importvelden
v_mld_opdr_opmerking VARCHAR2 (4000);
v_mld_opdr_key NUMBER (10);
v_mld_opdr_key_tekst VARCHAR2 (100);
v_extern_nummer VARCHAR2 (100);
v_status NUMBER (10);
v_status_tekst VARCHAR2 (100);
v_status_code VARCHAR2 (100);
v_datumtijd DATE;
v_datumtijd_tekst VARCHAR2 (100);
v_opmerking VARCHAR2 (4000);
v_totaal NUMBER (8,2);
v_totaal_str VARCHAR2 (100);
-- Overige velden:
CURSOR c1
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
BEGIN
-- Eerst opruiming
DELETE FROM ykpn_imp_opdrstat_strukton;
COMMIT;
FOR rec1 IN c1
LOOP
BEGIN
v_newline := rec1.fac_imp_file_line;
v_errormsg := 'Fout opvragen te importeren rij';
v_aanduiding := '';
v_ongeldig := 0;
fac.imp_getfield (v_newline, c_delim, v_mld_opdr_key_tekst);
fac.imp_getfield (v_newline, c_delim, v_extern_nummer);
fac.imp_getfield (v_newline, c_delim, v_status_code); -- typeID
fac.imp_getfield (v_newline, c_delim, v_datumtijd_tekst);
fac.imp_getfield (v_newline, c_delim, v_status_tekst);
fac.imp_getfield (v_newline, c_delim, v_opmerking);
fac.imp_getfield (v_newline, c_delim, v_totaal_str);
v_totaal := fac.safe_to_number(v_totaal_str);
fac.imp_writelog (p_import_key, 'I', 'v_totaal_str:' || v_totaal_str || ' v_totaal:' || v_totaal || ' fac.safe_to_number(v_totaal_str):' || fac.safe_to_number(v_totaal_str),'');
--v_opmerking := substr(v_opmerking, 1, 1000);
-- verwijder de markering voor cr/lf die we zelf in de stylesheet toegevoegd hebben.
v_opmerking := replace(v_opmerking, '@@',CHR (13) || CHR (10));
v_aanduiding :=
'['
|| v_extern_nummer
|| '|'
|| v_mld_opdr_key_tekst
|| '|'
|| v_status_tekst
|| '|'
|| SUBSTR(v_opmerking,1,300)
|| '] ';
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen
-- de juiste kolomkop. Ik controleer daarbij ALLE kolommen!
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
IF (header_is_valid = 0)
THEN
IF UPPER (TRIM (v_mld_opdr_key_tekst)) = 'REFERENCEID'
AND UPPER (TRIM (v_extern_nummer)) = 'SERVICEREQUESTID'
AND UPPER (TRIM (v_status_code)) = 'TYPEID'
AND UPPER (TRIM (v_datumtijd_tekst)) = 'DATETIME'
AND UPPER (TRIM (v_opmerking)) = 'REMARKS'
AND UPPER (TRIM (v_totaal_str)) = 'TOTAL'
THEN
header_is_valid := 1;
END IF;
ELSE
v_count_tot := v_count_tot + 1;
-- Controleer alle veldwaarden
v_errormsg := 'Fout inlezen mld_opdr_key [' || v_aanduiding || ']';
v_mld_opdr_key := TRIM (v_mld_opdr_key);
BEGIN
SELECT o.mld_opdr_key, o.mld_opdr_opmerking
INTO v_mld_opdr_key, v_mld_opdr_opmerking
FROM mld_opdr o, mld_melding m, ins_tab_discipline d, ins_srtdiscipline sd, mld_stdmelding std
WHERE o.mld_melding_key = m.mld_melding_key
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 sd.ins_srtdiscipline_prefix || m.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr = v_mld_opdr_key_tekst;
EXCEPTION WHEN NO_DATA_FOUND THEN
BEGIN
fac.imp_writelog (p_import_key, 'W', 'Opdracht kan niet gevonden worden. [' || v_aanduiding || ']', '');
-- kijk nu of de opdracht gevonden kan worden a.d.h.v het Struktonnummer
SELECT o.mld_opdr_key, o.mld_opdr_opmerking
INTO v_mld_opdr_key, v_mld_opdr_opmerking
FROM mld_opdr o, mld_kenmerkopdr ko, mld_kenmerk k
WHERE o.mld_opdr_key = ko.mld_opdr_key
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 35
AND ko.mld_kenmerkopdr_waarde = v_extern_nummer;
EXCEPTION WHEN OTHERS THEN
v_ongeldig := 1;
v_errormsg := 'Opdracht kan niet gevonden worden (intern/externnr). [' || v_aanduiding || ']';
v_mld_opdr_key := NULL;
END;
END;
IF v_ongeldig = 0
THEN
v_errormsg :=
'Fout bij bepalen status [' || v_aanduiding || ']';
CASE
WHEN v_status_code = '5'
THEN
v_status := 5; -- uitgegeven
WHEN v_status_code = '10'
THEN
v_status := 8; -- geaccepteerd
WHEN v_status_code = '20' -- monteur gereed
THEN
v_status := 6; -- afgemeld
WHEN v_status_code = '25' -- specialist gereed
THEN
v_status := 6; -- afgemeld
WHEN v_status_code = '30' -- technisch gereed
THEN
v_status := 6; -- afgemeld
-- YKPN#32991
WHEN v_status_code = '40' -- uitgeprijst
THEN
v_status := NULL; -- afgerond
v_ongeldig := 2; -- status niet bekend dus geven waarschuwing ipv error
WHEN v_status_code = '70'
THEN
v_status := 1; -- geannuleerd
WHEN v_status_code = '80'
THEN
v_status := 1; -- afgewezen
WHEN v_status_code = '200' -- onderbroken
THEN
--TODO: Notitie toevoegen (incl. reden?)
v_status := NULL; -- ongewijzigd
WHEN v_status_code = '210' -- herpland
THEN
--TODO: Notitie toevoegen
v_status := NULL; -- ongewijzigd
ELSE
v_status := NULL;
v_ongeldig := 1; -- nog te bezien.
END CASE;
END IF;
-- Lees alle veldwaarden
IF v_ongeldig = 0
THEN
v_errormsg :=
'Fout bij converteren datumtijd [' || v_aanduiding || ']';
v_datumtijd :=
fac.safe_to_date (
REPLACE (
SUBSTR (v_datumtijd_tekst,
1,
INSTR (v_datumtijd_tekst, '.') - 1),
'T',
' '),
'yyyy-mm-dd hh24:mi:ss');
IF v_datumtijd = NULL
THEN
v_ongeldig := 0;
END IF;
END IF;
IF v_ongeldig = 0
THEN
v_errormsg :=
'Fout bij aanvullen opmerking [' || v_aanduiding || ']';
-- controleer of de opmerking niet leeg is en of dezelfde opmerking al bij een eerdere statusovergang
-- gemeld is.
IF v_opmerking IS NOT NULL AND INSTR(COALESCE(v_mld_opdr_opmerking, 'QueQuLeQue'), v_opmerking) = 0
THEN
v_opmerking := SUBSTR(
'['
|| v_datumtijd_tekst
|| '] - '
|| v_status_tekst
|| CHR (13)
|| CHR (10)
|| v_opmerking, 1, 3900);
ELSE
v_opmerking :=
'[' || v_datumtijd_tekst || '] - ' || v_status_tekst;
END IF;
END IF;
-- Insert geformatteerde import record
IF (v_ongeldig = 0)
THEN
BEGIN
v_errormsg :=
'Fout toevoegen opdracht status ['
|| v_aanduiding
|| ']';
INSERT INTO ykpn_imp_opdrstat_strukton (mld_opdr_key,
extern_nummer,
status,
datumtijd,
opmerking,
totaal)
VALUES (v_mld_opdr_key,
v_extern_nummer,
v_status,
v_datumtijd,
v_opmerking,
v_totaal);
v_count_import := v_count_import + 1;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
v_errormsg
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (
p_import_key,
'E',
v_aanduiding || v_errormsg,
'Fout bij toevoegen regel aan importtabel ykpn_imp_opdr_status_strukton.');
END;
ELSE
IF (v_ongeldig = 2)
THEN
fac.imp_writelog (p_import_key,
'W',
v_errormsg,
'');
ELSE
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
'');
END IF;
END IF;
END IF;
END;
END LOOP;
IF (header_is_valid = 0)
THEN
fac.imp_writelog (p_import_key,
'E',
'Ongeldig importbestand',
'Geen header of header niet volgens specificatie!');
END IF;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
v_errormsg
|| 'ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
SUBSTR(v_aanduiding || v_errormsg, 1, 1000),
'Inleesproces opdrachtstatusberichten afgebroken!');
END;
/
CREATE OR REPLACE PROCEDURE ykpn_update_opdrstat_strukton (
p_import_key IN NUMBER)
AS
-- Cursor loopt - in volgorde! - over alle ingelezen opdrachtstatusberichten.
CURSOR c1
IS
SELECT mld_opdr_key,
extern_nummer,
datumtijd,
status,
opmerking,
totaal
FROM ykpn_imp_opdrstat_strukton
ORDER BY 1, 3;
CURSOR cp (
c_opdr_key IN NUMBER)
IS
SELECT pf.prs_perslid_key
FROM fac_tracking tr,
fac_srtnotificatie str,
prs_v_perslid_fullnames_all pf
WHERE tr.fac_srtnotificatie_key = str.fac_srtnotificatie_key
AND tr.prs_perslid_key = pf.prs_perslid_key(+)
AND (str.fac_srtnotificatie_code = 'ORDFOK'
AND tr.fac_tracking_refkey = c_opdr_key
AND str.fac_srtnotificatie_xmlnode IN ('opdracht'))
ORDER BY fac_tracking_datum DESC, fac_tracking_key DESC;
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (200);
v_count_tot NUMBER (10);
v_count NUMBER (10);
v_mld_key NUMBER (10) := 0;
v_opdr_key NUMBER (10) := 0;
v_opdr_status NUMBER (10) := 0;
v_user_key NUMBER (10) := 0;
v_opdr_approved mld_opdr.mld_opdr_approved%TYPE;
v_approver_key prs_perslid.prs_perslid_key%TYPE;
v_mld_typeopdr_key mld_typeopdr.mld_typeopdr_key%TYPE;
v_mld_kenmerk_key mld_kenmerk.mld_kenmerk_key%TYPE;
v_mld_kenmerkopdr_key mld_kenmerkopdr.mld_kenmerkopdr_key%TYPE;
v_mld_srtkenmerk_key mld_srtkenmerk.mld_srtkenmerk_key%TYPE;
v_perslid_key prs_perslid.prs_perslid_key%TYPE;
v_opdr_kosten mld_opdr.mld_opdr_kosten%TYPE;
v_typeopdr_gvs mld_typeopdr.mld_typeopdr_gvs%TYPE;
v_mld_kk mld_melding.mld_kosten_klant%TYPE;
v_mld_kostenpl_key mld_melding.prs_kostenplaats_key%TYPE;
v_opdr_kostenpl_key mld_opdr.prs_kostenplaats_key%TYPE;
v_mld_perslid_key mld_melding.prs_perslid_key%TYPE;
v_mld_disc_key ins_tab_discipline.ins_discipline_key%TYPE;
v_refiat NUMBER (1);
v_reapprove NUMBER (1);
BEGIN
-- Loop door alle geimporteerde opdrachtstatusberichten en verwerk deze.
v_count_tot := 0;
-- Stel de key in van het srtkenmerk 'Ref. Nr. Leverancier'. Hier wordt
-- het nummer dat Strukton aan de call gegeven heeft geregistreerd.
v_mld_srtkenmerk_key := 18;
v_user_key := 32652; -- Strukton user
FOR rec IN c1
LOOP
BEGIN
v_aanduiding :=
'['
|| rec.mld_opdr_key
|| '|'
|| SUBSTR (rec.opmerking, 1, 100)
|| '] ';
v_count_tot := v_count_tot + 1;
v_count := 0;
-- Key van melding/opdracht bepalen en externnr bij opdracht opslaan.
IF (rec.mld_opdr_key IS NOT NULL)
THEN
v_errormsg := 'Fout bij bepalen opdracht.';
SELECT mld_melding_key,
mld_opdr_key,
mld_statusopdr_key,
mld_typeopdr_key
INTO v_mld_key,
v_opdr_key,
v_opdr_status,
v_mld_typeopdr_key
FROM mld_opdr
WHERE mld_opdr_key = rec.mld_opdr_key;
v_errormsg := 'Fout bij bepalen kenmerk extern nummer.';
SELECT k.mld_kenmerk_key
INTO v_mld_kenmerk_key
FROM mld_kenmerk k
WHERE k.mld_srtkenmerk_key = v_mld_srtkenmerk_key
AND k.mld_typeopdr_key = v_mld_typeopdr_key;
v_errormsg := 'Fout bij bepalen kenmerkopdracht extern nummer.';
SELECT MAX (ko.mld_kenmerkopdr_key)
INTO v_mld_kenmerkopdr_key
FROM mld_kenmerkopdr ko
WHERE ko.mld_opdr_key = v_opdr_key
AND v_mld_kenmerk_key = ko.mld_kenmerk_key;
v_errormsg := 'Fout bij aanpassen extern nummer.';
IF v_mld_kenmerkopdr_key IS NULL
THEN
-- kenmerk toevoegen
INSERT INTO mld_kenmerkopdr (mld_kenmerk_key,
mld_opdr_key,
mld_kenmerkopdr_waarde)
VALUES (v_mld_kenmerk_key, v_opdr_key, rec.extern_nummer);
ELSE
-- kenmerk aanpassen
UPDATE mld_kenmerkopdr
SET mld_kenmerkopdr_waarde = rec.extern_nummer
WHERE mld_kenmerkopdr_key = v_mld_kenmerkopdr_key;
END IF;
IF rec.status IS NOT NULL
THEN
v_errormsg := 'Fout bij bijwerken opdracht-opmerking.';
v_count := LENGTH (rec.opmerking) + 5; -- Beetje speling qua lengte!
UPDATE mld_opdr
SET mld_opdr_opmerking =
DECODE (
mld_opdr_opmerking,
NULL,
rec.opmerking,
rec.opmerking
|| CHR (13)
|| CHR (10)
|| SUBSTR (mld_opdr_opmerking, 1, (4000 - v_count)))
WHERE mld_opdr_key = v_opdr_key;
IF v_opdr_status <> rec.status -- Voegt niets toe, want hieronder alleen wat gedaan als v_opdr_status <> rec.status!
THEN
IF rec.status = 8 AND v_opdr_status = 5
THEN
-- Accepteer opdracht als de opdracht uitgegeven was
mld.setopdrachtstatus (v_opdr_key, 8, v_user_key); -- Facilitor
ELSIF rec.status = 6 AND v_opdr_status = 5
THEN
-- Meld de opdracht af als deze uitgegeven was
mld.setopdrachtstatus (v_opdr_key, 8, v_user_key); -- Facilitor, eerst accepteren
mld.setopdrachtstatus (v_opdr_key, 6, v_user_key); -- Facilitor
ELSIF rec.status = 6 AND v_opdr_status = 8
THEN
-- Meld de opdracht af als deze geaccepteerd was
mld.setopdrachtstatus (v_opdr_key, 6, v_user_key); -- Facilitor
ELSIF rec.status = 1 AND v_opdr_status = 5
THEN
-- Opdracht is afgewezen op het moment dat de opdracht nog niet geaccepteerd is.
mld.setopdrachtstatus (v_opdr_key, 1, v_user_key); -- Facilitor
mld.updatemeldingstatusav (v_mld_key,
0,
v_user_key,
0);
ELSIF rec.status = 1 AND v_opdr_status = 8
THEN
-- Opdracht is afgewezen op het moment dat de opdracht al geaccepteerd is.
mld.setopdrachtstatus (v_opdr_key, 6, v_user_key); -- Facilitor
--MLD.updatemeldingstatusAV (v_mld_key, 0, v_user_key, 0);
ELSIF rec.status = 9 AND v_opdr_status = 6
THEN
-- Opdracht is afgerond en opdrachtstatus was afgemeld.
mld.setopdrachtstatus (v_opdr_key, 9, v_user_key); -- Facilitor
END IF;
IF rec.status = 6 AND v_opdr_status <> 6
THEN
-- Sinds AADO#30922 wordt de melding niet meer automatisch afgemeld.
MLD.updatemeldingstatusAV (v_mld_key, 0, v_user_key, 0);
ELSE
IF rec.status = 9 AND v_opdr_status <> 9
THEN
-- Oorspronkelijke gegevens opdracht ophalen.
-- var opdr_info = mld.mld_opdr_info(opdr_key);
SELECT mld_opdr_kosten,
mld_typeopdr_gvs,
mld_kosten_klant,
m.prs_kostenplaats_key,
o.prs_kostenplaats_key,
m.prs_perslid_key,
std.mld_ins_discipline_key
INTO v_opdr_kosten,
v_typeopdr_gvs,
v_mld_kk,
v_mld_kostenpl_key,
v_opdr_kostenpl_key,
v_mld_perslid_key,
v_mld_disc_key
FROM mld_opdr o,
mld_melding m,
mld_typeopdr t,
mld_stdmelding std
WHERE o.mld_melding_key = m.mld_melding_key
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND o.mld_typeopdr_key = t.mld_typeopdr_key
AND o.mld_opdr_key = v_opdr_key;
-- Hergoedkeuring (Ter goedkeuring) wordt (pas) vereist als het opdrachtbedrag hoger is dan al is goedgekeurd en boven de GVS-grens uitkomt.
-- Herfiattering (Ter fiattering) wordt (pas) vereist indien het bedrag boven het mandaat van de oorspronkelijke (laatste) fiatteur uitkomt
-- en boven de GVS-grens uitkomt.
-- Hergoedkeuring en herfiattering kan alleen als het totaalbedrag van de opdracht is verhoogd en alleen in de statussen 5, 8, 6 en 9 (de uitvoeringsfase en de afhandelingsfase).
-- Hergoedkeuring en herfiattering kan leiden tot een tijdelijke terugkeer naar de voorfase status 3 of 10.
IF rec.totaal > v_opdr_kosten
THEN
fac.imp_writelog (p_import_key, 'I', 'rec.totaal > v_opdr_kosten: ' || rec.totaal || ' - ' || v_opdr_kosten, '');
-- Hergoedkeuring (Ter goedkeuring) wordt (pas) vereist als het opdrachtbedrag hoger is dan al is goedgekeurd en boven de GVS-grens uitkomt.
IF rec.totaal > COALESCE (v_opdr_approved, 0) AND rec.totaal > v_typeopdr_gvs
THEN
v_reapprove := 1;
ELSE
v_reapprove := 0;
END IF;
fac.imp_writelog (p_import_key, 'I', 'hergoedkeuring: ' || v_reapprove || ' - ' || v_opdr_approved || ' - ' || v_typeopdr_gvs, '');
-- Herfiattering (Ter fiattering) wordt (pas) vereist indien het bedrag boven het mandaat van de oorspronkelijke (laatste) fiatteur uitkomt
-- en boven de GVS-grens uitkomt.
-- Bepaal het mandaat van de oorspronkelijke (laatste) fiatteur.
-- Ook als er de vorige keer geen kosten waren dan moet pas worden geherfiatteerd als (tot_kosten > mandaat),
-- waarbij de mandaat van de Melder/aanvrager van melding of de user is.
v_perslid_key := NULL;
IF rec.totaal > v_opdr_kosten AND rec.totaal > 0 AND rec.totaal > v_typeopdr_gvs
THEN
fac.imp_writelog (p_import_key, 'I', 'F - rec.totaal > v_opdr_kosten: ' || rec.totaal || ' - ' || v_opdr_kosten || ' - ' || v_typeopdr_gvs, '');
-- De totale kosten zijn verhoogd en het bedrag zit boven de GVS-grens.
-- Bepaling oorspronkelijke (laatste) fiatteur, als die er was.
v_perslid_key := NULL;
FOR rec2 IN cp (v_opdr_key)
LOOP
BEGIN
v_perslid_key := rec2.prs_perslid_key;
END;
END LOOP;
fac.imp_writelog (p_import_key, 'I', 'F - laatste fiatteur: ' || v_perslid_key, '');
IF v_perslid_key IS NULL
THEN
-- Dan waren de opdracht kosten onder het mandaat van mijzelf of de BO-medewerker.
-- Als de kostenplaats bij de opdracht overruled is dan wordt altijd tegen het profiel van de BO-medewerker getest.
IF v_mld_kk = 1
AND v_mld_kostenpl_key = v_opdr_kostenpl_key
THEN
v_perslid_key := v_mld_perslid_key; -- Melder/aanvrager van melding
END IF;
END IF;
fac.imp_writelog (p_import_key, 'I', 'F - indien onbekend terugvallen op melder: ' || v_perslid_key, '');
IF fac.getsetting ('mld_use_order_approval') = 1
AND (rec.totaal >
fac.getsetting ('can_selfapprove')
OR rec.totaal >
prs.getprofiellimiet (v_perslid_key, v_mld_disc_key))
THEN
-- Er moet (opnieuw) gefiatteerd worden. Is er wel iemand met voldoende mandaat? Indien er niemand gevonden kan worden mag de wijziging niet doorgaan.
-- Het mandaat is al te hoog voor de melder/aanvrager van de melding of mijzelf.
v_approver_key :=
prs.getkpverantwoordelijke (
v_opdr_kostenpl_key,
fac.getsetting ('prs_approvemethod'),
v_user_key);
v_refiat := 1;
-- er moet (her)fiattering plaatsvinden
fac.imp_writelog (p_import_key, 'I', 'F - (her)fiatteur: ' || v_approver_key, '');
END IF;
END IF;
END IF;
IF v_reapprove = 1 OR v_refiat = 1
THEN
-- Zet de refiat waarden. Het hergoedkeurings- en/of herfiatteringstraject wordt opnieuw ingegaan. // Tracking hiervan is niet nodig.
IF v_opdr_kosten > 0
THEN
UPDATE mld_opdr
SET mld_opdr_materiaal_refiat = mld_opdr_materiaal,
mld_opdr_kosten_refiat = mld_opdr_kosten
WHERE mld_opdr_key = v_opdr_key;
END IF;
-- Ook voor status 5 wordt refiatstatus gezet zodat bekend is dat het om een herfiattering gaat. De fiatteringsvoorwaarde is dan iets anders.
UPDATE mld_opdr
SET mld_statusopdr_key_refiat = mld_statusopdr_key
WHERE mld_opdr_key = v_opdr_key;
-- Goedkeuring opnieuw ingaan kan alleen als het approved bedrag leeg is.
UPDATE mld_opdr
SET mld_opdr_approved_refiat = mld_opdr_approved
WHERE mld_opdr_key = v_opdr_key;
UPDATE mld_opdr
SET mld_opdr_approved = NULL,
mld_opdr_materiaal = rec.totaal,
mld_opdr_kosten = rec.totaal
WHERE mld_opdr_key = v_opdr_key;
ELSE
UPDATE mld_opdr
SET mld_opdr_materiaal = rec.totaal,
mld_opdr_kosten = rec.totaal
WHERE mld_opdr_key = v_opdr_key;
END IF;
-- geef in de tracking aan dat de kosten via de interface aangepast zijn.
IF v_opdr_kosten <> rec.totaal
THEN
fac.trackaction ('ORDUPD', v_opdr_key, v_user_key, SYSDATE,
'Gewijzigd' || CHR (13) || CHR (10)
|| 'Materiaal: ' || v_opdr_kosten || ' --> ' || rec.totaal || CHR (13) || CHR (10)
|| 'Totaal: ' || v_opdr_kosten || ' --> ' || rec.totaal);
END IF;
IF v_reapprove = 1
THEN
-- Zetten van de status van de gewijzigde opdracht op "Ter goedkeuring" en afhandelen van de tracking (status + uitvoerende tracking) en daarmee notificatie.
-- status = 10; Ter goedkeuring.
mld.setopdrachtstatus (v_opdr_key, 10, v_user_key);
ELSE
IF v_refiat = 1
THEN
-- Zetten van de status van de gewijzigde opdracht op "Ter fiattering" en afhandelen van de tracking (status + uitvoerende tracking) en daarmee notificatie.
-- status = 3; // Ter fiattering.
mld.setopdrachtstatus (v_opdr_key, 3, v_user_key);
END IF;
END IF;
END IF;
END IF;
END IF;
ELSE -- rec.status IS NULL (= Onderbroken/Herpland), dan toevoegen Notitie!
-- YAXX#59749: Toevoegen Notitie!
v_errormsg := 'Fout toevoegen Notitie (opdracht).';
INSERT INTO mld_opdr_note (mld_opdr_key, mld_opdr_note_omschrijving, prs_perslid_key)
VALUES (v_opdr_key, rec.opmerking, v_user_key);
END IF;
END IF;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
v_errormsg
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
'Fout bij verwerken opdrachtstatusbericht.');
END;
END LOOP;
COMMIT;
END;
/
-- Importeren KPN Retail winkels
CREATE OR REPLACE PROCEDURE ykpn_import_loc_retail (p_import_key IN NUMBER)
AS
c_fielddelimitor VARCHAR2 (1) := ';';
v_newline VARCHAR2 (1000); -- Input line
v_errormsg VARCHAR2 (1000);
v_error_hint VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
header_is_valid NUMBER;
v_count NUMBER;
v_index NUMBER;
v_key NUMBER;
v_dummy VARCHAR2 (100);
v_ongeldig NUMBER (1);
v_aanduiding VARCHAR2 (200);
v_all_null BOOLEAN;
v_count_error NUMBER (10);
v_count_tot NUMBER (10);
v_count_import NUMBER (10);
-- De importvelden:
v_locatie_code VARCHAR2 (100);
v_formule VARCHAR2 (100);
v_formule_aanduiding VARCHAR2 (100);
v_locatie_omschrijving VARCHAR2 (100);
v_locatie_adres VARCHAR2 (100);
v_locatie_postcode VARCHAR2 (100);
v_locatie_plaats VARCHAR2 (100);
v_email VARCHAR2 (100);
v_manager_naam VARCHAR2 (100);
v_manager_mobiel VARCHAR2 (100);
v_regio VARCHAR2 (100);
v_regio_manager VARCHAR2 (100);
v_regio_manager_naam VARCHAR2 (100);
v_cluster VARCHAR2 (100);
v_cluster_manager VARCHAR2 (100);
v_centercode VARCHAR2 (100);
v_res_nummer VARCHAR2 (100);
v_x_coord VARCHAR2 (100);
v_y_coord VARCHAR2 (100);
CURSOR c
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
PROCEDURE imp_getfield_str (p_parseline IN VARCHAR2,
p_fielddelimitor IN VARCHAR2,
p_colname IN VARCHAR2,
p_field OUT VARCHAR2)
AS
v_colnr NUMBER;
BEGIN
SELECT fac_rapport_volgnr
INTO v_colnr
FROM fac_rapport
WHERE fac_rapport_node = 'IMPORT'
AND UPPER(fac_rapport_regel) = UPPER(p_colname);
fac.imp_getfield_nr (p_parseline,
p_fielddelimitor,
v_colnr,
p_field);
RETURN;
END;
BEGIN
COMMIT;
v_count_error := 0;
header_is_valid := 0;
v_count_tot := 0;
v_count_import := 0;
FOR rec IN c
LOOP
BEGIN
v_error_hint := 'Fout FETCH te importeren rij';
v_ongeldig := 0;
v_newline := rec.fac_imp_file_line;
v_aanduiding := '';
IF rec.fac_imp_file_index = 1
THEN
-- We zijn nu bij de header. Deze gaan we opslaan in fac_rapport. We kunnen dan geindexeerd
-- de data opvragen
v_error_hint := 'Niet alle kolommen bestaan in dit bestand';
v_index := 0;
v_dummy := 'QueQeLeQue';
DELETE fac_rapport WHERE fac_rapport_node = 'IMPORT';
WHILE v_dummy IS NOT NULL AND v_index < 100
LOOP
fac.imp_getfield (v_newline, c_fielddelimitor, v_dummy);
v_index := v_index + 1;
INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_volgnr, fac_rapport_regel)
VALUES ('IMPORT', v_index, v_dummy);
END LOOP;
DELETE FROM ykpn_imp_loc_retail;
ELSE
-- Lees alle veldwaarden
v_error_hint := 'Fout opvragen te importeren rij';
imp_getfield_str (v_newline,
c_fielddelimitor,
'Winkelnummer',
v_locatie_code);
imp_getfield_str (v_newline,
c_fielddelimitor,
'Formulenaam',
v_formule);
imp_getfield_str (v_newline,
c_fielddelimitor,
'Formuleaanduiding',
v_formule_aanduiding);
imp_getfield_str (v_newline,
c_fielddelimitor,
'Locatie',
v_locatie_omschrijving);
imp_getfield_str (v_newline,
c_fielddelimitor,
'Straat',
v_locatie_adres);
imp_getfield_str (v_newline,
c_fielddelimitor,
'Huisnummer',
v_dummy); -- Huisnummer
v_locatie_adres := v_locatie_adres || ' ' || TRIM (v_dummy);
imp_getfield_str (v_newline,
c_fielddelimitor,
'Toev.',
v_dummy); -- Toevoeging
IF v_dummy IS NOT NULL
THEN
IF fac.safe_to_number (v_dummy) IS NULL
THEN
v_locatie_adres := v_locatie_adres || v_dummy;
ELSE
v_locatie_adres := v_locatie_adres || '-' || v_dummy;
END IF;
END IF;
imp_getfield_str (v_newline,
c_fielddelimitor,
'Postcode',
v_locatie_postcode);
imp_getfield_str (v_newline,
c_fielddelimitor,
'Plaats',
v_locatie_plaats);
imp_getfield_str (v_newline,
c_fielddelimitor,
'E-mailadres',
v_email);
imp_getfield_str (v_newline,
c_fielddelimitor,
'Supervisor voornaam',
v_manager_naam);
imp_getfield_str (v_newline,
c_fielddelimitor,
'Supervisor tuss.',
v_dummy); -- tussenvoegsels
IF v_dummy IS NOT NULL
THEN
v_manager_naam := v_manager_naam || ' ' || v_dummy;
END IF;
imp_getfield_str (v_newline,
c_fielddelimitor,
'Supervisor achternaam',
v_dummy); -- achternaam
v_manager_naam := v_manager_naam || ' ' || v_dummy;
imp_getfield_str (v_newline,
c_fielddelimitor,
'Supervisor mobiel nummer',
v_manager_mobiel);
imp_getfield_str (v_newline,
c_fielddelimitor,
'Cluster-manager email',
v_cluster_manager);
imp_getfield_str (v_newline,
c_fielddelimitor,
'Cluster',
v_cluster);
imp_getfield_str (v_newline,
c_fielddelimitor,
'Regio afkorting',
v_regio);
imp_getfield_str (v_newline,
c_fielddelimitor,
'Regio-manager',
v_regio_manager_naam);
imp_getfield_str (v_newline,
c_fielddelimitor,
'Centercode',
v_centercode);
imp_getfield_str (v_newline,
c_fielddelimitor,
'Latitude',
v_x_coord);
imp_getfield_str (v_newline,
c_fielddelimitor,
'Longitude',
v_y_coord);
v_aanduiding :=
v_locatie_code
|| '|'
|| v_locatie_omschrijving
|| '|'
|| v_locatie_plaats
|| '| ';
v_count_tot := v_count_tot + 1;
v_error_hint := 'Fout bij zoeken naar formule';
BEGIN
SELECT fac_usrdata_key
INTO v_key
FROM fac_usrdata ud
WHERE UPPER (v_formule) =
UPPER (ud.fac_usrdata_omschr)
AND ud.fac_usrtab_key = 241;
v_formule := v_key;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
fac.imp_writelog (
p_import_key,
'E',
'Formule niet gevonden:' || v_formule,
v_aanduiding);
v_ongeldig := 1;
END;
v_error_hint := 'Fout bij zoeken naar formule aanduiding';
IF v_formule_aanduiding IS NOT NULL
THEN
BEGIN
SELECT fac_usrdata_key
INTO v_key
FROM fac_usrdata ud
WHERE UPPER (v_formule_aanduiding) =
UPPER (ud.fac_usrdata_omschr)
AND ud.fac_usrtab_key = 242;
v_formule_aanduiding := v_key;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
fac.imp_writelog (
p_import_key,
'E',
'Formule aanduiding niet gevonden:'
|| v_formule_aanduiding,
v_aanduiding);
v_ongeldig := 1;
END;
END IF;
v_error_hint := 'Fout bij zoeken naar regio';
IF v_regio IS NOT NULL
THEN
BEGIN
SELECT alg_district_key
INTO v_key
FROM alg_district
WHERE UPPER (v_regio) =
UPPER (alg_district_omschrijving)
AND alg_regio_key = 21; -- Retail
v_regio := v_key;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
fac.imp_writelog (
p_import_key,
'E',
'Regio aanduiding niet gevonden:'
|| v_regio,
v_aanduiding);
v_ongeldig := 1;
END;
END IF;
v_error_hint := 'Fout bij zoeken naar cluster manager';
BEGIN
-- We zoeken naar het gedeelte voor het @ teken. Managers hebben nog wel eens een @telfort of @kpn domein.
SELECT prs_perslid_key
INTO v_key
FROM prs_perslid
WHERE UPPER (SUBSTR(prs_perslid_email, 1, INSTR(prs_perslid_email, '@'))) =
UPPER (SUBSTR(v_cluster_manager, 1, INSTR(v_cluster_manager, '@')))
AND prs_perslid_verwijder IS NULL;
v_cluster_manager := v_key;
EXCEPTION
WHEN NO_DATA_FOUND
THEN
fac.imp_writelog (
p_import_key,
'W',
'Cluster manager niet gevonden:' || v_cluster_manager,
v_aanduiding);
END;
IF v_ongeldig = 0
THEN
v_error_hint := 'Fout bij toevoegen te impoteren locatie';
INSERT INTO ykpn_imp_loc_retail (
alg_locatie_code,
formule,
formule_aanduiding,
alg_locatie_omschrijving,
alg_locatie_adres,
alg_locatie_postcode,
alg_locatie_plaats,
email,
manager_naam,
manager_mobiel,
cluster_oms,
cluster_manager,
regio,
regio_manager_naam,
centercode,
x_coord,
y_coord)
VALUES (
SUBSTR (v_locatie_code, 1, 10),
FAC.safe_to_number (v_formule),
FAC.safe_to_number (
v_formule_aanduiding),
SUBSTR (v_locatie_omschrijving,
1,
60),
SUBSTR (v_locatie_adres, 1, 50),
SUBSTR (v_locatie_postcode, 1, 12),
SUBSTR (v_locatie_plaats, 1, 30),
SUBSTR (v_email, 1, 100),
SUBSTR (v_manager_naam, 1, 30),
SUBSTR (v_manager_mobiel, 1, 15),
SUBSTR (v_cluster, 1, 20),
FAC.safe_to_number (v_cluster_manager),
FAC.safe_to_number (v_regio),
SUBSTR (v_regio_manager_naam, 1, 100),
SUBSTR (v_centercode, 1, 5),
FAC.safe_to_number (
REPLACE (v_x_coord, ',', '.')),
FAC.safe_to_number (
REPLACE (v_y_coord, ',', '.')));
END IF;
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_error_hint || ' ' || v_aanduiding);
END ykpn_import_loc_retail;
/
CREATE OR REPLACE PROCEDURE ykpn_update_loc_retail (p_import_key IN NUMBER)
AS
CURSOR c
IS
SELECT * FROM ykpn_imp_loc_retail;
CURSOR c_del
IS
SELECT l.*
FROM alg_locatie l, alg_district d
WHERE l.alg_district_key = d.alg_district_key
AND d.alg_regio_key = 21 -- RETAIL
AND l.alg_locatie_verwijder IS NULL
AND l.alg_locatie_code <> '999'
AND NOT EXISTS
(SELECT alg_locatie_code
FROM ykpn_imp_loc_retail i
WHERE FAC.safe_to_number (i.alg_locatie_code) =
FAC.safe_to_number (l.alg_locatie_code));
CURSOR c_cm
IS
SELECT cluster_manager, alg_ruimte_key
FROM ykpn_imp_loc_retail i, alg_v_ruimte_gegevens rg
WHERE fac.safe_to_number (i.alg_locatie_code) =
fac.safe_to_number (rg.alg_locatie_code)
AND LENGTH (rg.alg_locatie_code) = 3
AND NOT EXISTS
(SELECT prs_perslidwerkplek_key
FROM prs_v_perslidwerkplek_gegevens pwpg
WHERE pwpg.prs_perslid_key = i.cluster_manager
AND pwpg.alg_ruimte_key = rg.alg_ruimte_key);
CURSOR c_cm_del
IS
SELECT prs_werkplek_key
FROM prs_v_perslidwerkplek_gegevens pwpg, alg_locatie l
WHERE pwpg.alg_locatie_key = l.alg_locatie_key
AND LENGTH (alg_locatie_code) = 3
AND prs_werkplek_virtueel = 1
AND prs_perslidwerkplek_bezetting = 99
AND NOT EXISTS
(SELECT cluster_manager
FROM ykpn_imp_loc_retail i
WHERE fac.safe_to_number (i.alg_locatie_code) =
fac.safe_to_number (l.alg_locatie_code)
AND i.cluster_manager = pwpg.prs_perslid_key);
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count_error NUMBER (10);
v_count NUMBER (10);
v_count_tot NUMBER (10);
v_count_import NUMBER (10);
v_aanduiding VARCHAR2 (200);
v_errorhint VARCHAR2 (1000);
v_locatie_key NUMBER (10);
v_locatie_omschrijving VARCHAR2 (60);
v_formule VARCHAR2 (100);
v_formule_aanduiding VARCHAR2 (100);
BEGIN
FOR rec IN c
LOOP
v_errorhint := 'Opzoeken formule';
BEGIN
SELECT fac_usrdata_omschr
INTO v_formule
FROM fac_usrdata
WHERE fac_usrdata_key = rec.formule;
v_locatie_omschrijving := rec.alg_locatie_omschrijving || ' ' || v_formule;
EXCEPTION WHEN NO_DATA_FOUND
THEN
v_formule := NULL;
END;
v_errorhint := 'Opzoeken formule aanduiding';
BEGIN
SELECT fac_usrdata_omschr
INTO v_formule_aanduiding
FROM fac_usrdata
WHERE fac_usrdata_key = rec.formule_aanduiding;
v_locatie_omschrijving := v_locatie_omschrijving || ' ' || v_formule_aanduiding;
EXCEPTION WHEN NO_DATA_FOUND
THEN
v_formule_aanduiding := NULL;
END;
v_errorhint := 'Opzoeken locatie';
v_aanduiding := rec.alg_locatie_code || '-' || rec.alg_locatie_omschrijving;
BEGIN
SELECT alg_locatie_key
INTO v_locatie_key
FROM alg_locatie l
WHERE FAC.safe_to_number(rec.alg_locatie_code) = FAC.safe_to_number(l.alg_locatie_code)
AND alg_locatie_verwijder IS NULL
AND LENGTH(alg_locatie_code) = 3;
UPDATE alg_locatie SET alg_district_key = rec.regio,
alg_locatie_omschrijving = v_locatie_omschrijving,
alg_locatie_adres = rec.alg_locatie_adres,
alg_locatie_postcode = rec.alg_locatie_postcode,
alg_locatie_plaats = rec.alg_locatie_plaats,
alg_locatie_verantw = rec.manager_naam,
alg_locatie_verantw_tel = rec.manager_mobiel,
alg_locatie_x = rec.x_coord,
alg_locatie_y = rec.y_coord,
mld_dienstniveau_key = 119
WHERE alg_locatie_key = v_locatie_key;
EXCEPTION WHEN NO_DATA_FOUND
THEN
v_errorhint := 'Toevoegen locatie';
INSERT INTO alg_locatie (alg_district_key,
alg_locatie_code,
alg_locatie_omschrijving,
alg_locatie_adres,
alg_locatie_postcode,
alg_locatie_plaats,
alg_locatie_verantw,
alg_locatie_verantw_tel,
alg_locatie_x,
alg_locatie_y,
mld_dienstniveau_key)
VALUES ( rec.regio,
TO_CHAR(rec.alg_locatie_code, 'FM009'),
v_locatie_omschrijving,
rec.alg_locatie_adres,
rec.alg_locatie_postcode,
rec.alg_locatie_plaats,
rec.manager_naam,
rec.manager_mobiel,
rec.x_coord,
rec.y_coord,
119)
RETURNING alg_locatie_key INTO v_locatie_key;
fac.imp_writelog (p_import_key, 'I', 'Locatie toegevoegd: ' || v_aanduiding, '');
END;
v_errorhint := 'Aanpassen locatie kenmerken';
ALG.upsertkenmerk (1, v_locatie_key, rec.centercode);
ALG.upsertkenmerk (3, v_locatie_key, rec.formule);
ALG.upsertkenmerk (4, v_locatie_key, rec.formule_aanduiding);
ALG.upsertkenmerk (5, v_locatie_key, rec.email);
ALG.upsertkenmerk (1340, v_locatie_key, rec.cluster_oms);
ALG.upsertkenmerk (1360, v_locatie_key, rec.cluster_manager);
v_errorhint := 'Aanpassen district kenmerken';
ALG.upsertkenmerk (1380, rec.regio, rec.regio_manager_naam);
END LOOP;
FOR rec IN c_del
LOOP
fac.imp_writelog (p_import_key, 'W', 'Locatie komt niet voor in import: ' || rec.alg_locatie_code || ' ' || rec.alg_locatie_omschrijving, '');
END LOOP;
-- De cluster manager krijgt een virtuele werkplek in de winkel. Deze markeren we met een bezetting van 99 zodat we straks deze mensen weer kunnen verwijderen.
FOR rec IN c_cm
LOOP
v_errorhint := 'Koppelen cluster manager ' || rec.cluster_manager;
PRS.movetoruimte (rec.cluster_manager,
rec.alg_ruimte_key,
'L',
1);
UPDATE prs_perslidwerkplek
SET prs_perslidwerkplek_bezetting = 99
WHERE prs_perslid_key = rec.cluster_manager
AND prs_werkplek_key IN (SELECT prs_werkplek_key
FROM prs_werkplek
WHERE prs_alg_ruimte_key = rec.alg_ruimte_key);
END LOOP;
FOR rec IN c_cm_del
LOOP
v_errorhint := 'Verwijderen werkplek cluster manager ' || rec.prs_werkplek_key;
DELETE prs_werkplek WHERE prs_werkplek_key = rec.prs_werkplek_key;
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 || ' ' || v_aanduiding);
END;
/
-- Nu de KPI import voor KPN
CREATE OR REPLACE PROCEDURE ykpn_import_kpi_definitie (p_import_key IN NUMBER)
IS
c_delim VARCHAR2 (1) := ';';
v_newline VARCHAR2 (1000); -- Input line
v_errormsg VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
header_is_valid NUMBER;
v_count_tot NUMBER (10);
v_count_import NUMBER (10);
v_ongeldig NUMBER (1);
v_aanduiding VARCHAR2 (200);
-- De importvelden
v_kpi_definitie_code VARCHAR2(255); --15 BYTE),
v_kpi_definitie_omschrijving VARCHAR2(255); --60 BYTE),
v_kpi_definitie_info VARCHAR2(4000); -- 4000 BYTE),
v_kpi_definitie_categorie1 VARCHAR2(255); -- 50 BYTE),
v_kpi_definitie_categorie2 VARCHAR2(255); -- 50 BYTE),
v_kpi_definitie_categorie3 VARCHAR2(255); -- 50 BYTE),
v_kpi_definitie_drempels_0 VARCHAR2(255); -- 20 BYTE),
v_kpi_definitie_drempels_70 VARCHAR2(255); -- 20 BYTE),
v_kpi_definitie_drempels_90 VARCHAR2(255); -- 20 BYTE),
v_kpi_definitie_drempels_100 VARCHAR2(255); -- 20 BYTE)
v_kpi_definitie_drempels_tot VARCHAR2(255); -- 20 BYTE),
-- Overige velden:
CURSOR c1
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
BEGIN
-- Eerst opruiming
DELETE FROM YKPN_IMP_KPI_DEFINITIE;
v_count_tot := 0;
v_count_import := 0;
header_is_valid := 0;
COMMIT;
FOR rec1 IN c1
LOOP
BEGIN
v_newline := rec1.fac_imp_file_line;
v_errormsg := 'Fout opvragen te importeren rij';
v_aanduiding := '';
v_ongeldig := 0;
-- Lees alle veldwaarden
fac.imp_getfield (v_newline, c_delim, v_kpi_definitie_categorie1);
fac.imp_getfield (v_newline, c_delim, v_kpi_definitie_categorie2);
fac.imp_getfield (v_newline, c_delim, v_kpi_definitie_code);
fac.imp_getfield (v_newline, c_delim, v_kpi_definitie_omschrijving);
fac.imp_getfield (v_newline, c_delim, v_kpi_definitie_info);
fac.imp_getfield (v_newline, c_delim, v_kpi_definitie_drempels_0);
fac.imp_getfield (v_newline, c_delim, v_kpi_definitie_drempels_70);
fac.imp_getfield (v_newline, c_delim, v_kpi_definitie_drempels_90);
fac.imp_getfield (v_newline, c_delim, v_kpi_definitie_drempels_100);
v_aanduiding :=
'|'
|| v_kpi_definitie_categorie1
|| '|'
|| v_kpi_definitie_categorie2
|| '|'
|| v_kpi_definitie_code
|| '| ';
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen
-- de juiste kolomkop. Ik controleer daarbij ALLE kolommen!
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
IF (header_is_valid = 0)
THEN
IF UPPER (v_kpi_definitie_categorie1) = 'KPI CATEGORIE 1'
AND UPPER (v_kpi_definitie_categorie2) = 'KPI CATEGORIE 2'
AND UPPER (v_kpi_definitie_code) = 'KPI CODE'
AND UPPER (v_kpi_definitie_omschrijving) = 'KPI OMSCHRIJVING'
AND UPPER (v_kpi_definitie_info) = 'KPI INFORMATIE'
AND UPPER (v_kpi_definitie_drempels_0) = 'KPI DREMPEL 0'
AND UPPER (v_kpi_definitie_drempels_70) = 'KPI DREMPEL 70'
AND UPPER (v_kpi_definitie_drempels_90) = 'KPI DREMPEL 90'
AND UPPER (v_kpi_definitie_drempels_100) = 'KPI DREMPEL 100'
THEN
header_is_valid := 1;
END IF;
ELSE
v_count_tot := v_count_tot + 1;
-- Controleer alle veldwaarden
IF v_kpi_definitie_categorie1 IS NOT NULL
THEN
v_kpi_definitie_categorie1 := TRIM (v_kpi_definitie_categorie1);
IF LENGTH (v_kpi_definitie_categorie1) > 50
THEN
v_kpi_definitie_categorie1 :=
SUBSTR (TRIM (v_kpi_definitie_categorie1), 1, 50);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
'Categorie 1 wordt afgebroken tot ['
|| v_kpi_definitie_categorie1
|| ']');
END IF;
ELSE
v_ongeldig := 1;
fac.imp_writelog (p_import_key, 'W', v_aanduiding, 'Categorie 1 mag NIET leeg zijn: deze regel wordt overgeslagen');
END IF;
IF v_kpi_definitie_categorie2 IS NOT NULL
THEN
v_kpi_definitie_categorie2 := TRIM (v_kpi_definitie_categorie2);
IF LENGTH (v_kpi_definitie_categorie2) > 50
THEN
v_kpi_definitie_categorie2 :=
SUBSTR (TRIM (v_kpi_definitie_categorie2), 1, 50);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
'Categorie 2 wordt afgebroken tot ['
|| v_kpi_definitie_categorie2
|| ']');
END IF;
ELSE
v_ongeldig := 1;
fac.imp_writelog (p_import_key, 'W', v_aanduiding, 'Categorie 2 mag NIET leeg zijn: deze regel wordt overgeslagen');
END IF;
IF v_kpi_definitie_code IS NOT NULL
THEN
v_kpi_definitie_code := TRIM (v_kpi_definitie_code);
IF LENGTH (v_kpi_definitie_code) > 15
THEN
v_kpi_definitie_code :=
SUBSTR (TRIM (v_kpi_definitie_code), 1, 15);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
'Code wordt afgebroken tot ['
|| v_kpi_definitie_code
|| ']');
END IF;
ELSE
v_ongeldig := 1;
fac.imp_writelog (p_import_key, 'W', v_aanduiding, 'Code mag NIET leeg zijn: deze regel wordt overgeslagen');
END IF;
IF v_kpi_definitie_omschrijving IS NOT NULL
THEN
v_kpi_definitie_omschrijving := TRIM (v_kpi_definitie_omschrijving);
IF LENGTH (v_kpi_definitie_omschrijving) > 60
THEN
v_kpi_definitie_omschrijving :=
SUBSTR (TRIM (v_kpi_definitie_omschrijving), 1, 60);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
'Omschrijving wordt afgebroken tot ['
|| v_kpi_definitie_omschrijving
|| ']');
END IF;
ELSE
v_ongeldig := 1;
fac.imp_writelog (p_import_key, 'W', v_aanduiding, 'Omschrijving mag NIET leeg zijn: deze regel wordt overgeslagen');
END IF;
v_kpi_definitie_info := TRIM (v_kpi_definitie_info);
IF LENGTH (v_kpi_definitie_info) > 4000
THEN
v_kpi_definitie_info :=
SUBSTR (TRIM (v_kpi_definitie_info), 1, 4000);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
'Informatie wordt afgebroken tot ['
|| v_kpi_definitie_info
|| ']');
END IF;
IF v_kpi_definitie_drempels_0 IS NOT NULL AND v_kpi_definitie_drempels_70 IS NOT NULL AND v_kpi_definitie_drempels_90 IS NOT NULL AND v_kpi_definitie_drempels_100 IS NOT NULL
THEN
v_kpi_definitie_drempels_tot := TRIM (v_kpi_definitie_drempels_0 || '|' || v_kpi_definitie_drempels_70 || '|' || v_kpi_definitie_drempels_90 || '|' || v_kpi_definitie_drempels_100);
IF LENGTH (v_kpi_definitie_drempels_tot) > 20
THEN
v_kpi_definitie_drempels_tot :=
SUBSTR (TRIM (v_kpi_definitie_drempels_tot), 1, 20);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding,
'Dermpels wordt afgebroken tot ['
|| v_kpi_definitie_drempels_tot
|| ']');
END IF;
ELSE
v_ongeldig := 1;
fac.imp_writelog (p_import_key, 'W', v_aanduiding, 'Alle drempeles MOETEN gevuld zijn: deze regel wordt overgeslagen');
END IF;
-- Insert geformatteerde import record
IF v_ongeldig = 0
THEN
BEGIN
INSERT INTO YKPN_IMP_KPI_DEFINITIE (
KPI_DEFINITIE_CODE,
KPI_DEFINITIE_OMSCHRIJVING,
KPI_DEFINITIE_INFO,
KPI_DEFINITIE_CATEGORIE1,
KPI_DEFINITIE_CATEGORIE2,
KPI_DEFINITIE_DREMPELS)
VALUES (v_kpi_definitie_code,
v_kpi_definitie_omschrijving,
v_kpi_definitie_info,
v_kpi_definitie_categorie1,
v_kpi_definitie_categorie2,
v_kpi_definitie_drempels_tot);
v_count_import := v_count_import + 1;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (
p_import_key,
'E',
v_aanduiding || v_errormsg,
'Fout bij toevoegen regel aan importtabel YKPN_IMP_KPI_DEFINITIE.');
END;
END IF;
END IF;
END;
END LOOP;
IF (header_is_valid = 0)
THEN
fac.imp_writelog (p_import_key,
'E',
'Ongeldig importbestand',
'Geen header of header niet volgens specificatie!');
ELSE
fac.imp_writelog (
p_import_key,
'S',
'KPI Definitie: aantal ingelezen importregels: ' || TO_CHAR (v_count_tot),
'');
fac.imp_writelog (
p_import_key,
'S',
'KPI Definitie: aantal ongeldige niet ingelezen importregels: '
|| TO_CHAR (v_count_tot - v_count_import),
'');
END IF;
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key,
'E',
v_errormsg,
'Inleesproces KPI Definitie afgebroken!');
END YKPN_IMPORT_KPI_DEFINITIE;
/
CREATE OR REPLACE PROCEDURE ykpn_update_kpi_definitie (p_import_key IN NUMBER)
AS
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
header_is_valid NUMBER;
v_count_error NUMBER (10);
v_count NUMBER (10);
v_count_tot NUMBER (10);
v_count_import NUMBER (10);
v_ongeldig NUMBER (1);
v_aanduiding VARCHAR2 (200);
v_errorhint VARCHAR2 (1000);
CURSOR c_kpi_defs
IS
SELECT * FROM YKPN_IMP_KPI_DEFINITIE;
-- MAIN
BEGIN
FOR rec_ins IN c_kpi_defs
LOOP
BEGIN
v_count_tot := v_count_tot + 1;
v_aanduiding :=
rec_ins.kpi_definitie_code
|| ' - '
|| rec_ins.kpi_definitie_categorie1
|| '-'
|| rec_ins.kpi_definitie_categorie2;
v_errorhint := 'Fout bij insert van kpi definitie';
IF rec_ins.kpi_definitie_code IS NOT NULL
AND rec_ins.kpi_definitie_categorie1 IS NOT NULL
AND rec_ins.kpi_definitie_categorie2 IS NOT NULL
AND rec_ins.kpi_definitie_omschrijving IS NOT NULL
AND rec_ins.kpi_definitie_drempels IS NOT NULL
THEN
INSERT INTO kpi_definitie ( KPI_DEFINITIE_CODE,
KPI_DEFINITIE_OMSCHRIJVING,
KPI_DEFINITIE_INFO,
KPI_DEFINITIE_CATEGORIE1,
KPI_DEFINITIE_CATEGORIE2,
KPI_DEFINITIE_DREMPELS)
VALUES (rec_ins.kpi_definitie_code,
rec_ins.kpi_definitie_omschrijving,
rec_ins.kpi_definitie_info,
rec_ins.kpi_definitie_categorie1,
rec_ins.kpi_definitie_categorie2,
rec_ins.kpi_definitie_drempels
);
ELSE
fac.imp_writelog (
p_import_key,
'E',
v_aanduiding,
'Code, Omschrijving, Categorie1 en 2 en drempels mogen niet leeg zijn');
END IF;
EXCEPTION
WHEN OTHERS
THEN
v_count_error := v_count_error + 1;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key,
'E',
v_aanduiding || v_errormsg,
v_errorhint);
COMMIT;
END;
END LOOP;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 150);
v_errormsg :=
v_errormsg || 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key,
'E',
'Importproces KPI Definitie afgebroken!',
v_errormsg);
END YKPN_UPDATE_KPI_DEFINITIE;
/
-- Hieronder alle KPI views
-- KPI Kwaliteit: Jaarplan
CREATE OR REPLACE VIEW ykpn_v_kpi1
AS
WITH normen AS
(SELECT kpi_definitie_key,
kpi_definitie_code kpi_code,
kpi_definitie_categorie1 kpi_cat1,
kpi_definitie_categorie2 kpi_cat2,
kpi_definitie_drempels normscores,
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 1)) n000,
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 2)) n070,
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 3)) n090,
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 4)) n100
FROM kpi_definitie
WHERE kpi_definitie_code = 'BK1'),
scores_kpn AS
(SELECT m.mld_melding_key,
dloc.alg_locatie_key,
TRUNC(m.mld_melding_einddatum, 'MM') periode,
COALESCE(fac.safe_to_number(BK_1.mld_kenmerkmelding_waarde),0) BK1_score
FROM mld_melding m,
(SELECT * FROM mld_kenmerkmelding
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 3424) BK_1,
alg_locatie dloc
WHERE m.mld_stdmelding_key = 1841
AND m.mld_melding_status NOT IN (1)
AND dloc.alg_locatie_key = m.mld_alg_locatie_key
AND BK_1.mld_melding_key(+) = m.mld_melding_key
)
SELECT kpi_definitie_key, periode kpi_score_datum, alg_locatie_key,
'melding' kpi_score_xmlnode, mld_melding_key kpi_score_refkey,
n000, n070, n090, n100,
kpi.getNormScore(score, n000, n070, n090, n100) kpi_score_score,
normscores kpi_score_norm_score,
SUBSTR( TO_CHAR(score), 1, 20) kpi_score_drempels
FROM (
SELECT n.kpi_definitie_key, n.normscores,
k.mld_melding_key,
k.alg_locatie_key,
k.periode,
n.kpi_cat1 proces,
n.kpi_cat2 onderdeel,
BK1_score score,
n.n000, n.n070, n.n090, n.n100
FROM normen n, scores_kpn k) m;
-- KPI Kwaliteit: Jaarplan
CREATE OR REPLACE VIEW ykpn_v_kpi2
AS
WITH normen AS
(SELECT kpi_definitie_key,
kpi_definitie_code kpi_code,
kpi_definitie_categorie1 kpi_cat1,
kpi_definitie_categorie2 kpi_cat2,
kpi_definitie_drempels normscores,
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 1)) n000,
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 2)) n070,
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 3)) n090,
fac.safe_to_number(REGEXP_SUBSTR(kpi_definitie_drempels, '[^|]+', 1, 4)) n100
FROM kpi_definitie
WHERE kpi_definitie_code = 'JP'),
scores_kpn AS
(SELECT m.mld_melding_key,
dloc.alg_locatie_key,
TRUNC(m.mld_melding_einddatum, 'MM') periode,
DECODE (COALESCE(fac.safe_to_number(JP_1.mld_kenmerkmelding_waarde),0), 1601, 1, 1602, 2, 1603, 3, 0) JP_score
FROM mld_melding m,
(SELECT * FROM mld_kenmerkmelding
WHERE mld_kenmerkmelding_verwijder IS NULL AND mld_kenmerk_key = 3447) JP_1,
alg_locatie dloc
WHERE m.mld_stdmelding_key = 1841
AND m.mld_melding_status NOT IN (1)
AND dloc.alg_locatie_key = m.mld_alg_locatie_key
AND JP_1.mld_melding_key(+) = m.mld_melding_key
)
SELECT kpi_definitie_key, periode kpi_score_datum, alg_locatie_key,
'melding' kpi_score_xmlnode, mld_melding_key kpi_score_refkey,
n000, n070, n090, n100,
kpi.getNormScore(score, n000, n070, n090, n100) kpi_score_score,
normscores kpi_score_norm_score,
SUBSTR( TO_CHAR(score), 1, 20) kpi_score_drempels
FROM (
SELECT n.kpi_definitie_key, n.normscores,
k.mld_melding_key,
k.alg_locatie_key,
k.periode,
n.kpi_cat1 proces,
n.kpi_cat2 onderdeel,
JP_score score,
n.n000, n.n070, n.n090, n.n100
FROM normen n, scores_kpn k) m;
-- KPI Kwaliteit: samengevoegd
CREATE OR REPLACE VIEW ykpn_v_kpi_kwaliteit
(
kpi_definitie_key,
kpi_score_datum,
alg_locatie_key,
kpi_score_xmlnode,
kpi_score_refkey,
kpi_score_score,
kpi_score_norm_score,
kpi_score_drempels
)
AS
SELECT kpi_definitie_key,
kpi_score_datum,
alg_locatie_key,
'melding' kpi_score_xmlnode,
NULL kpi_score_refkey,
kpi.getNormScore (SUM (kpi_score_drempels),
n000,
n070,
n090,
n100),
MIN (KPI_SCORE_NORM_SCORE),
SUM (kpi_score_drempels)
FROM ( SELECT * FROM ykpn_v_kpi1
UNION
SELECT * FROM ykpn_v_kpi2)
GROUP BY kpi_definitie_key,
kpi_score_datum,
alg_locatie_key,
n000,
n070,
n090,
n100;
-- Verzamel alle KPI scores
CREATE OR REPLACE VIEW ykpn_v_kpi_all
AS
SELECT * FROM ykpn_v_kpi_kwaliteit
--UNION ALL
-- SELECT * FROM ykpn_v_kpi_etc
;
-- EINDE KPI
-- Rapport voor alle attributen voor de kunstobjecten
CREATE OR REPLACE VIEW ykpn_v_rap_kunst
AS
SELECT ins_deel_omschrijving id,
d.ins_deel_key,
d.alg_gebouw_omschrijving gebouw,
(SELECT ins_kenmerkdeel_waarde
FROM ins_kenmerkdeel ikd
WHERE ins_kenmerk_key = 102 AND d.ins_deel_key = ikd.ins_deel_key)
titel,
(SELECT ins_kenmerkdeel_waarde
FROM ins_kenmerkdeel ikd
WHERE ins_kenmerk_key = 61 AND d.ins_deel_key = ikd.ins_deel_key)
n_advies,
(SELECT ins_kenmerkdeel_waarde
FROM ins_kenmerkdeel ikd
WHERE ins_kenmerk_key = 62 AND d.ins_deel_key = ikd.ins_deel_key)
n_uit,
(SELECT ins_kenmerkdeel_waarde
FROM ins_kenmerkdeel ikd
WHERE ins_kenmerk_key = 63 AND d.ins_deel_key = ikd.ins_deel_key)
n_top,
(SELECT ins_kenmerkdeel_waarde
FROM ins_kenmerkdeel ikd
WHERE ins_kenmerk_key = 64 AND d.ins_deel_key = ikd.ins_deel_key)
n_rate,
(SELECT ins_kenmerkdeel_waarde
FROM ins_kenmerkdeel ikd
WHERE ins_kenmerk_key = 65 AND d.ins_deel_key = ikd.ins_deel_key)
n_collectie,
(SELECT ins_kenmerkdeel_waarde
FROM ins_kenmerkdeel ikd
WHERE ins_kenmerk_key = 81 AND d.ins_deel_key = ikd.ins_deel_key)
afmeting,
(SELECT ins_kenmerkdeel_waarde
FROM ins_kenmerkdeel ikd
WHERE ins_kenmerk_key = 82 AND d.ins_deel_key = ikd.ins_deel_key)
galerie,
(SELECT ins_kenmerkdeel_waarde
FROM ins_kenmerkdeel ikd
WHERE ins_kenmerk_key = 85 AND d.ins_deel_key = ikd.ins_deel_key)
ruimte_hiskia,
(SELECT ins_kenmerkdeel_waarde
FROM ins_kenmerkdeel ikd
WHERE ins_kenmerk_key = 86 AND d.ins_deel_key = ikd.ins_deel_key)
aankoop_bedrag,
(SELECT ins_kenmerkdeel_waarde
FROM ins_kenmerkdeel ikd
WHERE ins_kenmerk_key = 87 AND d.ins_deel_key = ikd.ins_deel_key)
aankoopdatum,
(SELECT ins_kenmerkdeel_waarde
FROM ins_kenmerkdeel ikd
WHERE ins_kenmerk_key = 88 AND d.ins_deel_key = ikd.ins_deel_key)
categorie,
(SELECT ins_kenmerkdeel_waarde
FROM ins_kenmerkdeel ikd
WHERE ins_kenmerk_key = 89 AND d.ins_deel_key = ikd.ins_deel_key)
geschatte_waarde,
(SELECT ins_kenmerkdeel_waarde
FROM ins_kenmerkdeel ikd
WHERE ins_kenmerk_key = 90 AND d.ins_deel_key = ikd.ins_deel_key)
geschatte_waarde_yask,
(SELECT ins_kenmerkdeel_waarde
FROM ins_kenmerkdeel ikd
WHERE ins_kenmerk_key = 91 AND d.ins_deel_key = ikd.ins_deel_key)
oplage,
(SELECT ins_kenmerkdeel_waarde
FROM ins_kenmerkdeel ikd
WHERE ins_kenmerk_key = 92 AND d.ins_deel_key = ikd.ins_deel_key)
status,
(SELECT ins_kenmerkdeel_waarde
FROM ins_kenmerkdeel ikd
WHERE ins_kenmerk_key = 101
AND d.ins_deel_key = ikd.ins_deel_key)
vakgebied,
(SELECT ins_kenmerkdeel_waarde
FROM ins_kenmerkdeel ikd
WHERE ins_kenmerk_key = 103
AND d.ins_deel_key = ikd.ins_deel_key)
kunstenaar,
(SELECT ins_kenmerkdeel_waarde
FROM ins_kenmerkdeel ikd
WHERE ins_kenmerk_key = 104
AND d.ins_deel_key = ikd.ins_deel_key)
materiaal,
(SELECT ins_kenmerkdeel_waarde
FROM ins_kenmerkdeel ikd
WHERE ins_kenmerk_key = 121
AND d.ins_deel_key = ikd.ins_deel_key)
jaar,
(SELECT ins_kenmerkdeel_waarde
FROM ins_kenmerkdeel ikd
WHERE ins_kenmerk_key = 281
AND d.ins_deel_key = ikd.ins_deel_key)
yask_verant
FROM ins_v_deel_gegevens d
WHERE ins_discipline_key = 1521
ORDER BY 4, 1;
-- YKPN#55423 Rapport voor verwijderde afspraken
CREATE OR REPLACE VIEW ykpn_v_rap_bezdel
AS
SELECT t.fac_tracking_key,
t.fac_tracking_datum,
t.fac_srtnotificatie_key,
t.fac_tracking_refkey,
t.fac_tracking_oms,
t.prs_perslid_key,
sn.fac_srtnotificatie_code,
p.prs_perslid_naam_full as prs_perslid_naam
FROM fac_tracking t, fac_srtnotificatie sn, prs_v_perslid_fullnames_all p
WHERE p.prs_perslid_key = t.prs_perslid_key
AND sn.fac_srtnotificatie_key = t.fac_srtnotificatie_key
AND SUBSTR (sn.fac_srtnotificatie_code, 1, 3) = 'BEZ'
AND SUBSTR (UPPER (t.fac_tracking_oms), 1, 22) =
'AFSPRAAK IS VERWIJDERD'
ORDER BY
t.fac_tracking_refkey,
t.fac_tracking_datum DESC;
CREATE OR REPLACE VIEW ykpn_v_graph_servicedesk
(
discipline,
aantal
)
AS
SELECT d.ins_discipline_omschrijving, COUNT ( * )
FROM mld_melding m, mld_stdmelding std, ins_tab_discipline d
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
AND TRUNC (mld_melding_datum, 'MM') = ADD_MONTHS (TRUNC (SYSDATE, 'MM'), -1)
AND std.mld_ins_discipline_key IN (34, 48, 38) -- compliment
AND std.mld_ins_discipline_key = d.ins_discipline_key
GROUP BY ins_discipline_omschrijving
UNION ALL
SELECT 'Melding', COUNT ( * )
FROM mld_melding m, mld_stdmelding std, ins_tab_discipline d
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
AND TRUNC (mld_melding_datum, 'MM') = ADD_MONTHS (TRUNC (SYSDATE, 'MM'), -1)
AND std.mld_ins_discipline_key NOT IN (34, 48, 38) -- compliment
AND std.mld_ins_discipline_key = d.ins_discipline_key
UNION ALL
SELECT 'Reservering', COUNT ( * )
FROM res_rsv_ruimte
WHERE TRUNC (res_rsv_ruimte_van, 'MM') = ADD_MONTHS (TRUNC (SYSDATE, 'MM'), -1)
AND res_rsv_ruimte_verwijder IS NULL;
CREATE OR REPLACE VIEW ykpn_v_graph_meldingen
(
discipline,
aantal
)
AS
SELECT d.ins_discipline_omschrijving, COUNT ( * )
FROM mld_melding m, mld_stdmelding std, ins_tab_discipline d
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
AND TRUNC (mld_melding_datum, 'MM') = ADD_MONTHS (TRUNC (SYSDATE, 'MM'), -1)
AND std.mld_ins_discipline_key NOT IN (34, 48, 38) -- compliment
AND std.mld_ins_discipline_key = d.ins_discipline_key
GROUP BY ins_discipline_omschrijving;
CREATE OR REPLACE VIEW ykpn_v_graph_bezoekers
(
locatie,
aantal
)
AS
SELECT alg_locatie_omschrijving, COUNT ( * )
FROM bez_bezoekers b, bez_afspraak a, alg_locatie l
WHERE b.bez_afspraak_key = a.bez_afspraak_key
AND a.alg_locatie_key = l.alg_locatie_key
AND TRUNC (bez_afspraak_datum, 'MM') = ADD_MONTHS (TRUNC (SYSDATE, 'MM'), -1)
GROUP BY alg_locatie_omschrijving;
CREATE OR REPLACE VIEW ykpn_v_graph_parkeerplaats
(
locatie,
aantal
)
AS
SELECT alg_locatie_omschrijving, COUNT ( * )
FROM bez_bezoekers b,
bez_afspraak a,
alg_locatie l,
res_rsv_deel rrd
WHERE b.bez_afspraak_key = a.bez_afspraak_key
AND a.alg_locatie_key = l.alg_locatie_key
AND b.bez_bezoekers_key = rrd.bez_bezoekers_key
AND TRUNC (bez_afspraak_datum, 'MM') = ADD_MONTHS (TRUNC (SYSDATE, 'MM'), -1)
GROUP BY alg_locatie_omschrijving;
CREATE OR REPLACE VIEW ykpn_v_rap_facturatie
AS
SELECT m.mld_melding_key,
o.mld_opdr_bedrijfopdr_volgnr,
ot.mld_typeopdr_omschrijving,
m.mld_melding_datum,
o.mld_opdr_datumbegin,
d.alg_district_omschrijving,
l.alg_locatie_code,
l.alg_locatie_omschrijving,
aog.alg_gebouw_code,
aog.alg_gebouw_naam,
ins_discipline_omschrijving,
mld_stdmelding_omschrijving,
TO_CHAR(SUBSTR(mld_melding_omschrijving,1,4000)) mld_melding_omschrijving,
ok.prs_kostenplaats_nr,
op.prs_perslid_naam_full,
uit.naam,
mld_statuses_omschrijving,
mld_statusopdr_omschrijving,
m.mld_melding_einddatum,
mld.getmeldingstatusdate(m.mld_melding_key, 5) mld_melding_afgemeld,
o.mld_opdr_omschrijving,
mld.getopdrachtstatusdate(o.mld_opdr_key, 6) mld_opdr_afgemeld,
DECODE (o.mld_typeopdr_key, 101, mld_opdr_kosten, -- procuratie opdracht
2481, mld_opdr_kosten, -- procuratie zonder goedkeuring
2482, mld_opdr_kosten -- procuratie evenementen
) procuratiebedrag,
mld_opdr_materiaal opdrachtbedrag,
(SELECT mld_kenmerkopdr_aanmaak FROM mld_kenmerkopdr ko, mld_kenmerk k where ko.mld_opdr_key = o.mld_opdr_key AND ko.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = 221) factuuraanmaak,
(SELECT fac.safe_to_number(mld_kenmerkopdr_waarde) FROM mld_kenmerkopdr ko, mld_kenmerk k where ko.mld_opdr_key = o.mld_opdr_key AND ko.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = 221) factuurbedrag,
(SELECT fac.safe_to_number(mld_kenmerkopdr_waarde) FROM mld_kenmerkopdr ko, mld_kenmerk k where ko.mld_opdr_key = o.mld_opdr_key AND ko.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = 381) po_nummer,
(SELECT fac.safe_to_number(mld_kenmerkopdr_waarde) FROM mld_kenmerkopdr ko, mld_kenmerk k where ko.mld_opdr_key = o.mld_opdr_key AND ko.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = 401) afdeling
FROM mld_melding m, mld_opdr o, mld_typeopdr ot, alg_locatie l, alg_district d, mld_stdmelding std, ins_tab_discipline di, prs_kostenplaats ok, prs_v_perslid_fullnames op, mld_v_uitvoerende uit, alg_v_allonrgoed_gegevens aog,
mld_statuses ms, mld_statusopdr os
WHERE m.mld_melding_key = o.mld_melding_key
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
AND m.mld_alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = d.alg_district_key
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = di.ins_discipline_key
AND o.prs_kostenplaats_key = ok.prs_kostenplaats_key(+)
AND o.prs_perslid_key = op.prs_perslid_key(+)
AND o.mld_uitvoerende_keys = uit.mld_uitvoerende_key(+)
AND m.mld_melding_status = ms.mld_statuses_key
AND o.mld_statusopdr_key = os.mld_statusopdr_key(+)
AND m.mld_alg_onroerendgoed_keys = aog.alg_onroerendgoed_keys
AND NOT EXISTS (SELECT mld_kenmerkopdr_key FROM mld_kenmerkopdr ko WHERE ko.mld_opdr_key = o.mld_opdr_key AND ko.mld_kenmerk_key = 301 AND fac.safe_to_number(mld_kenmerkopdr_waarde) = 1)
UNION ALL
SELECT m.mld_melding_key,
0 mld_opdr_bedrijfopdr_volgnr,
NULL mld_typeopdr_omschrijving,
m.mld_melding_datum,
NULL mld_opdr_datumbegin,
d.alg_district_omschrijving,
l.alg_locatie_code,
l.alg_locatie_omschrijving,
aog.alg_gebouw_code,
aog.alg_gebouw_naam,
ins_discipline_omschrijving,
mld_stdmelding_omschrijving,
TO_CHAR(SUBSTR(mld_melding_omschrijving,1,4000)) mld_melding_omschrijving,
NULL prs_kostenplaats_nr,
NULL prs_perslid_naam_full,
NULL naam,
mld_statuses_omschrijving,
NULL procuratiebedrag,
m.mld_melding_einddatum,
mld.getmeldingstatusdate(m.mld_melding_key, 5) mld_melding_afgemeld,
NULL mld_opdr_omschrijving,
NULL mld_opdr_afgemeld,
NULL procuratiebedrag,
NULL opdrachtbedrag,
(SELECT mld_kenmerkmelding_aanmaak FROM mld_kenmerkmelding km, mld_kenmerk k WHERE km.mld_melding_key = m.mld_melding_key AND km.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = 221) factuuraanmaak,
(SELECT fac.safe_to_number(mld_kenmerkmelding_waarde) FROM mld_kenmerkmelding km, mld_kenmerk k WHERE km.mld_melding_key = m.mld_melding_key AND km.mld_kenmerk_key = k.mld_kenmerk_key AND k.mld_srtkenmerk_key = 221) factuurbedrag,
NULL po_nummer,
NULL afdeling
FROM mld_melding m, alg_locatie l, alg_district d, mld_stdmelding std, ins_tab_discipline di, alg_v_allonrgoed_gegevens aog,
mld_statuses ms
WHERE m.mld_alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = d.alg_district_key
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = di.ins_discipline_key
AND m.mld_melding_status = ms.mld_statuses_key
AND m.mld_alg_onroerendgoed_keys = aog.alg_onroerendgoed_keys;
-- Rapportage 1:
-- Alle hoofdmeldingen of onderliggende opdrachten waar het veld 'bedrag gefactureerd' staat ingevuld.
-- Alle procuraties die zijn doorlopen (ongeacht de status open / afgemeld / etc)
CREATE OR REPLACE VIEW ykpn_v_rap_facturatie1
AS
SELECT *
FROM YKPN_V_RAP_FACTURATIE
WHERE factuurbedrag IS NOT NULL OR procuratiebedrag IS NOT NULL
UNION
SELECT *
FROM YKPN_V_RAP_FACTURATIE
WHERE mld_opdr_bedrijfopdr_volgnr = 0
AND mld_melding_key IN
(SELECT mld_melding_key
FROM YKPN_V_RAP_FACTURATIE
WHERE factuurbedrag IS NOT NULL
OR procuratiebedrag IS NOT NULL);
-- Rapportage 2:
-- Alle opdrachten met opdrachttypes 'uitvoer opdracht' en 'bestelling' waar het veld 'bedrag gefactureerd' niet is ingevuld
CREATE OR REPLACE VIEW ykpn_v_rap_facturatie2
AS
SELECT *
FROM YKPN_V_RAP_FACTURATIE
WHERE mld_typeopdr_omschrijving = 'Uitvoering opdracht'
OR mld_typeopdr_omschrijving = 'Bestelling'
UNION
SELECT *
FROM YKPN_V_RAP_FACTURATIE
WHERE mld_opdr_bedrijfopdr_volgnr = 0
AND mld_melding_key IN
(SELECT mld_melding_key
FROM YKPN_V_RAP_FACTURATIE
WHERE mld_typeopdr_omschrijving =
'Uitvoering opdracht'
OR mld_typeopdr_omschrijving = 'Bestelling');
-- Gewijzigde financiele rapportage gebasseerd op afgeronde procuraties.
CREATE OR REPLACE VIEW ykpn_v_rap_fin_facturatie_p
AS
-- YKPN#89422: Kolom 'totaal_kosten' toegevoegd; 'Opdracht_kosten' veranderd naar 'materiaal_kosten'; kolom 'Correctie' toegevoegd; en 3 kolommen betreft fee percentage
SELECT m.mld_melding_key,
o.mld_opdr_bedrijfopdr_volgnr,
ot.mld_typeopdr_omschrijving,
m.mld_melding_datum,
o.mld_opdr_datumbegin,
d.alg_district_omschrijving,
l.alg_locatie_code,
l.alg_locatie_omschrijving,
aog.alg_gebouw_code,
aog.alg_gebouw_naam,
ins_discipline_omschrijving,
mld_stdmelding_omschrijving,
mld_melding_omschrijving,
ok.prs_kostenplaats_nr,
op.prs_perslid_naam_full behandelaar,
(SElECT prs_perslid_email
FROM prs_perslid
WHERE prs_perslid_key=o.prs_perslid_key) email_behandelaar,
uit.naam,
mld_statuses_omschrijving,
mld_statusopdr_omschrijving,
m.mld_melding_einddatum,
mld.getmeldingstatusdate (m.mld_melding_key, 5)
mld_melding_afgemeld,
o.mld_opdr_omschrijving,
mld.getopdrachtstatusdate (o.mld_opdr_key, 6)
mld_opdr_afgemeld,
(SELECT SUM(ROUND(mom.MLD_OPDR_MATERIAAL_AANTAL*mom.MLD_OPDR_MATERIAAL_PRIJS,2))
from mld_opdr_materiaal mom,
fac_usrdata fud
where mom.mld_opdr_key=o.mld_opdr_key
AND mom.FAC_USRDATA_KEY=fud.FAC_USRDATA_KEY
AND fud.FAC_USRDATA_OMSCHR LIKE 'VFS 3%'
AND fud.FAC_USRDATA_VERWIJDER IS NULL) vfs_3p_fee, -- fee 3p
(SELECT SUM(ROUND(mom.MLD_OPDR_MATERIAAL_AANTAL*mom.MLD_OPDR_MATERIAAL_PRIJS,2))
from mld_opdr_materiaal mom,
fac_usrdata fud
where mom.mld_opdr_key=o.mld_opdr_key
AND mom.FAC_USRDATA_KEY=fud.FAC_USRDATA_KEY
AND fud.FAC_USRDATA_OMSCHR LIKE 'VFS 4%'
AND fud.FAC_USRDATA_VERWIJDER IS NULL) vfs_4p_fee, -- fee 4p
(SELECT SUM(ROUND(mom.MLD_OPDR_MATERIAAL_AANTAL*mom.MLD_OPDR_MATERIAAL_PRIJS,2))
from mld_opdr_materiaal mom,
fac_usrdata fud
where mom.mld_opdr_key=o.mld_opdr_key
AND mom.FAC_USRDATA_KEY=fud.FAC_USRDATA_KEY
AND fud.FAC_USRDATA_OMSCHR LIKE 'VFS afwijkende%'
AND fud.FAC_USRDATA_VERWIJDER IS NULL) vfs_afw_fee, -- afwijkende fee
mld_opdr_materiaal
materiaal_bedrag, -- materiaal kosten
mld_opdr_kosten - mld_opdr_materiaal
correctie, -- totale kosten minus materiaal kosten
mld_opdr_kosten
totaal_kosten, -- totale kosten
NULL
datum_goedkeuring, -- fingoe
fg.totaal,
(SELECT fac.safe_to_number (mld_kenmerkopdr_waarde)
FROM mld_kenmerkopdr ko, mld_kenmerk k
WHERE ko.mld_opdr_key = o.mld_opdr_key
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 381) -- PO Nummer
po_nummer,
(SELECT fac.safe_to_number (mld_kenmerkopdr_waarde)
FROM mld_kenmerkopdr ko, mld_kenmerk k
WHERE ko.mld_opdr_key = o.mld_opdr_key
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 401) -- Bedrag wordt gefinancieerd door andere afdeling
afdeling,
(SELECT ud.fac_usrdata_omschr
FROM mld_kenmerkopdr ko, mld_kenmerk k, fac_usrdata ud
WHERE ko.mld_opdr_key = o.mld_opdr_key
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 5001
AND ud.fac_usrdata_key=ko.mld_kenmerkopdr_waarde) -- Capex/Opex
capex_opex,
(SELECT mld_kenmerkopdr_waarde
FROM mld_kenmerkopdr ko, mld_kenmerk k
WHERE ko.mld_opdr_key = o.mld_opdr_key
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 1821) -- startdatum
startDatum,
(SELECT mld_kenmerkopdr_waarde
FROM mld_kenmerkopdr ko, mld_kenmerk k
WHERE ko.mld_opdr_key = o.mld_opdr_key
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 1822) -- verwachte oplosdatum
oplosdatum
FROM mld_melding m,
mld_opdr o,
mld_typeopdr ot,
alg_locatie l,
alg_district d,
mld_stdmelding std,
ins_tab_discipline di,
prs_kostenplaats ok,
prs_v_perslid_fullnames op,
mld_v_uitvoerende uit,
alg_v_allonrgoed_gegevens aog,
mld_statuses ms,
mld_statusopdr os,
( SELECT o2.mld_melding_key,
SUM (fin_factuurregel_totaal) totaal
FROM fin_factuur f, fin_factuurregel fr, mld_opdr o2
WHERE f.fin_factuur_key = fr.fin_factuur_key
AND f.fin_factuur_verwijder IS NULL
AND f.mld_opdr_key = o2.mld_opdr_key
GROUP BY o2.mld_melding_key) fg
WHERE m.mld_melding_key = o.mld_melding_key
AND m.mld_melding_key = fg.mld_melding_key(+)
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
AND m.mld_alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = d.alg_district_key
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = di.ins_discipline_key
AND o.prs_kostenplaats_key = ok.prs_kostenplaats_key(+)
AND o.prs_perslid_key = op.prs_perslid_key(+)
AND o.mld_uitvoerende_keys = uit.mld_uitvoerende_key(+)
AND m.mld_melding_status = ms.mld_statuses_key
AND o.mld_statusopdr_key = os.mld_statusopdr_key(+)
AND m.mld_alg_onroerendgoed_keys = aog.alg_onroerendgoed_keys
AND ot.mld_typeopdr_key IN (101, 2481, 2482) -- procuratie, procuratie zonder goedkeuring, procuratie evenementen
AND NOT EXISTS
(SELECT mld_kenmerkopdr_key
FROM mld_kenmerkopdr ko, mld_kenmerk k
WHERE ko.mld_opdr_key = o.mld_opdr_key
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 181 -- ongeldige procuratie
AND fac.safe_to_number(mld_kenmerkopdr_waarde) = 1);
-- Gewijzigde financiele rapportage gebasseerd op ingelegde facturen.
-- Depricated YKPN#59688
CREATE OR REPLACE VIEW ykpn_v_rap_fin_facturatie
AS
SELECT m.mld_melding_key,
o.mld_opdr_bedrijfopdr_volgnr,
ot.mld_typeopdr_omschrijving,
m.mld_melding_datum,
o.mld_opdr_datumbegin,
d.alg_district_omschrijving,
l.alg_locatie_code,
l.alg_locatie_omschrijving,
aog.alg_gebouw_code,
aog.alg_gebouw_naam,
ins_discipline_omschrijving,
mld_stdmelding_omschrijving,
mld_melding_omschrijving,
ok.prs_kostenplaats_nr,
op.prs_perslid_naam_full,
uit.naam,
mld_statuses_omschrijving,
mld_statusopdr_omschrijving,
m.mld_melding_einddatum,
mld.getmeldingstatusdate (m.mld_melding_key, 5)
mld_melding_afgemeld,
o.mld_opdr_omschrijving,
mld.getopdrachtstatusdate (o.mld_opdr_key, 6)
mld_opdr_afgemeld,
mld_opdr_materiaal
opdrachtbedrag,
DECODE (fin_factuur_statuses_key,
6, COALESCE (datum_goedkeuring, datum_fiattering),
7, COALESCE (datum_goedkeuring, datum_fiattering))
datum_goedkeuring, -- fingoe
fg.totaal,
(SELECT fac.safe_to_number (mld_kenmerkopdr_waarde)
FROM mld_kenmerkopdr ko, mld_kenmerk k
WHERE ko.mld_opdr_key = o.mld_opdr_key
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 381)
po_nummer,
(SELECT fac.safe_to_number (mld_kenmerkopdr_waarde)
FROM mld_kenmerkopdr ko, mld_kenmerk k
WHERE ko.mld_opdr_key = o.mld_opdr_key
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 401)
afdeling
FROM mld_melding m,
mld_opdr o,
mld_typeopdr ot,
alg_locatie l,
alg_district d,
mld_stdmelding std,
ins_tab_discipline di,
prs_kostenplaats ok,
prs_v_perslid_fullnames op,
mld_v_uitvoerende uit,
alg_v_allonrgoed_gegevens aog,
mld_statuses ms,
mld_statusopdr os,
(SELECT mld_opdr_key,
fin_factuur_key,
totaal,
fin_factuur_statuses_key,
(SELECT MIN (fac_tracking_datum)
FROM fac_tracking t
WHERE t.fac_tracking_refkey = fgg.fin_factuur_key
AND t.fac_srtnotificatie_key = 132)
datum_goedkeuring, -- fingoe
(SELECT MIN (fac_tracking_datum)
FROM fac_tracking t
WHERE t.fac_tracking_refkey = fgg.fin_factuur_key
AND t.fac_srtnotificatie_key = 131)
datum_fiattering -- finfia
FROM ( SELECT f.mld_opdr_key,
f.fin_factuur_key,
SUM (fin_factuurregel_totaal) totaal,
fin_factuur_statuses_key
FROM fin_factuur f, fin_factuurregel fr
WHERE f.fin_factuur_key = fr.fin_factuur_key
AND f.fin_factuur_verwijder IS NULL
GROUP BY mld_opdr_key,
f.fin_factuur_key,
fin_factuur_statuses_key) fgg) fg
WHERE m.mld_melding_key = o.mld_melding_key
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
AND m.mld_alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = d.alg_district_key
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = di.ins_discipline_key
AND o.prs_kostenplaats_key = ok.prs_kostenplaats_key(+)
AND o.prs_perslid_key = op.prs_perslid_key(+)
AND o.mld_uitvoerende_keys = uit.mld_uitvoerende_key(+)
AND m.mld_melding_status = ms.mld_statuses_key
AND o.mld_statusopdr_key = os.mld_statusopdr_key(+)
AND m.mld_alg_onroerendgoed_keys = aog.alg_onroerendgoed_keys
AND o.mld_opdr_key = fg.mld_opdr_key
AND NOT EXISTS
(SELECT o2.mld_opdr_key
FROM mld_opdr o2
WHERE o2.mld_typeopdr_key IN (101, 2481, 2482) -- procuratie, procuratie zonder goedkeuring, procuratie evenementen
AND o2.mld_melding_key = o.mld_melding_key
AND o2.mld_statusopdr_key = 6 -- afgemeld
AND NOT EXISTS
(SELECT mld_kenmerkopdr_key
FROM mld_kenmerkopdr ko, mld_kenmerk k
WHERE ko.mld_opdr_key = o2.mld_opdr_key
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 181 -- ongeldige procuratie
AND fac.safe_to_number(mld_kenmerkopdr_waarde) = 1));
CREATE OR REPLACE VIEW ykpn_v_rap_fin_facturatie_f
AS
SELECT m.mld_melding_key,
o.mld_opdr_bedrijfopdr_volgnr,
ot.mld_typeopdr_omschrijving,
m.mld_melding_datum,
o.mld_opdr_datumbegin,
d.alg_district_omschrijving,
l.alg_locatie_code,
l.alg_locatie_omschrijving,
aog.alg_gebouw_code,
aog.alg_gebouw_naam,
ins_discipline_omschrijving,
mld_stdmelding_omschrijving,
mld_melding_omschrijving,
ok.prs_kostenplaats_nr,
op.prs_perslid_naam_full,
(SELECT p.prs_perslid_email FROM prs_perslid p WHERE p.prs_perslid_key=o.prs_perslid_key) prs_perslid_email,
uit.naam,
mld_statuses_omschrijving,
mld_statusopdr_omschrijving,
m.mld_melding_einddatum,
mld.getmeldingstatusdate (m.mld_melding_key, 5)
mld_melding_afgemeld,
o.mld_opdr_omschrijving,
mld.getopdrachtstatusdate (o.mld_opdr_key, 6)
mld_opdr_afgemeld,
mld_opdr_materiaal
opdrachtbedrag,
mld_opdr_kosten
opdrachttotaal,
DECODE (fin_factuur_statuses_key, 6, 'Akkoord', 7, 'Akkoord')
factuur_akkoord,
DECODE (fin_factuur_statuses_key,
6, COALESCE (datum_goedkeuring, datum_fiattering),
7, COALESCE (datum_goedkeuring, datum_fiattering))
datum_goedkeuring, -- fingoe
fg.totaal,
(SELECT fac.safe_to_number (mld_kenmerkopdr_waarde)
FROM mld_kenmerkopdr ko, mld_kenmerk k
WHERE ko.mld_opdr_key = o.mld_opdr_key
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 381)
po_nummer,
(SELECT fac.safe_to_number (mld_kenmerkopdr_waarde)
FROM mld_kenmerkopdr ko, mld_kenmerk k
WHERE ko.mld_opdr_key = o.mld_opdr_key
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 401)
afdeling,
pr.mld_statusopdr_key,
pr.po_nummer
po_nummer_mld,
DECODE (pr.mld_statusopdr_key, 6, 'OK', 'NOK')
procuratie_status,
DECODE (pr.mld_statusopdr_key,
6, DECODE (pr.po_nummer, NULL, 'NOK', 'OK'),
'NOK')
procuratie_PO_status,
ma.mandaat
FROM mld_melding m,
mld_opdr o,
mld_typeopdr ot,
alg_locatie l,
alg_district d,
mld_stdmelding std,
ins_tab_discipline di,
prs_kostenplaats ok,
prs_v_perslid_fullnames op,
mld_v_uitvoerende uit,
alg_v_allonrgoed_gegevens aog,
mld_statuses ms,
mld_statusopdr os,
(SELECT mld_opdr_key,
fin_factuur_key,
totaal,
fin_factuur_statuses_key,
(SELECT MAX (fac_tracking_datum)
FROM fac_tracking t
WHERE t.fac_tracking_refkey = fgg.fin_factuur_key
AND t.fac_srtnotificatie_key = 132)
datum_goedkeuring, -- fingoe
(SELECT MIN (fac_tracking_datum)
FROM fac_tracking t
WHERE t.fac_tracking_refkey = fgg.fin_factuur_key
AND t.fac_srtnotificatie_key = 131)
datum_fiattering -- finfia
FROM ( SELECT f.mld_opdr_key,
f.fin_factuur_key,
SUM (fin_factuurregel_totaal) totaal,
fin_factuur_statuses_key
FROM fin_factuur f, fin_factuurregel fr
WHERE f.fin_factuur_key = fr.fin_factuur_key
AND f.fin_factuur_verwijder IS NULL
GROUP BY mld_opdr_key,
f.fin_factuur_key,
fin_factuur_statuses_key) fgg) fg,
( SELECT o2.mld_melding_key,
MAX (o2.mld_statusopdr_key) mld_statusopdr_key,
MAX (po_nummer) po_nummer
FROM mld_opdr o2,
(SELECT kop.mld_opdr_key, mld_kenmerkopdr_waarde po_nummer
FROM mld_kenmerkopdr kop, mld_kenmerk kp
WHERE kop.mld_kenmerk_key = kp.mld_kenmerk_key
AND kp.mld_srtkenmerk_key = 381 -- PO Nummer
) po
WHERE o2.mld_typeopdr_key IN (101, 2481, 2482) -- procuratie, procuratie zonder goedkeuring, procuratie evenementen
AND o2.mld_opdr_key = po.mld_opdr_key(+)
AND NOT EXISTS
(SELECT mld_kenmerkopdr_key
FROM mld_kenmerkopdr ko, mld_kenmerk k
WHERE ko.mld_opdr_key = o2.mld_opdr_key
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 181 -- ongeldige procuratie
AND fac.safe_to_number (
ko.mld_kenmerkopdr_waarde) =
1)
GROUP BY o2.mld_melding_key) pr,
( SELECT ko.mld_opdr_key, FAC.safe_to_number(ko.mld_kenmerkopdr_waarde) mandaat
FROM mld_kenmerkopdr ko, mld_kenmerk k
WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 3521 -- mandaatbedrag
AND ko.mld_kenmerkopdr_verwijder IS NULL) ma
WHERE m.mld_melding_key = o.mld_melding_key
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
AND m.mld_alg_locatie_key = l.alg_locatie_key
AND l.alg_district_key = d.alg_district_key
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = di.ins_discipline_key
AND o.prs_kostenplaats_key = ok.prs_kostenplaats_key(+)
AND o.prs_perslid_key = op.prs_perslid_key(+)
AND o.mld_uitvoerende_keys = uit.mld_uitvoerende_key(+)
AND m.mld_melding_status = ms.mld_statuses_key
AND o.mld_statusopdr_key = os.mld_statusopdr_key(+)
AND m.mld_alg_onroerendgoed_keys = aog.alg_onroerendgoed_keys
AND o.mld_opdr_key = fg.mld_opdr_key(+)
AND o.mld_opdr_key = ma.mld_opdr_key(+)
AND o.mld_melding_key = pr.mld_melding_key(+)
AND TRUNC(o.mld_opdr_datumbegin)>=TO_DATE('01-01-2020','DD-MM-YYYY');
-- Facturatie tabblad F
--CREATE OR REPLACE VIEW ykpn_v_rap_fin_facturatie_f
--AS
-- SELECT *
-- FROM ykpn_v_rap_fin_facturatie f;
-- Overzicht van opdrachten zonder factuur.
CREATE OR REPLACE VIEW ykpn_v_opdr_zonder_factuur
AS
SELECT m.mld_melding_key,
mld_opdr_key,
m.mld_melding_key || '/' || mld_opdr_bedrijfopdr_volgnr mld_opdr_id,
mld_melding_datum,
mld_opdr_datumbegin,
d.ins_discipline_omschrijving,
mld_stdmelding_omschrijving,
mld_melding_onderwerp,
b.prs_bedrijf_naam,
mld_opdr_kosten,
alg_locatie_code,
alg_locatie_omschrijving,
mld_statusopdr_omschrijving,
mld_typeopdr_omschrijving
FROM mld_opdr o,
mld_melding m,
alg_locatie l,
mld_stdmelding std,
ins_tab_discipline d,
prs_bedrijf b,
mld_statusopdr so,
mld_typeopdr t
WHERE o.mld_melding_key = m.mld_melding_key
AND m.mld_alg_locatie_key = l.alg_locatie_key
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND o.mld_uitvoerende_keys = b.prs_bedrijf_key
AND o.mld_statusopdr_key = so.mld_statusopdr_key
AND o.mld_typeopdr_key = t.mld_typeopdr_key
AND o.mld_typeopdr_key IN (42, -- Uitvoering_opdracht
5, -- Uitvoering melding
143, -- Uitvoering offerte
142, -- Bestelling
381 -- Uitvoering uren intern
)
AND NOT EXISTS
(SELECT fin_factuur_key
FROM fin_factuur f
WHERE f.mld_opdr_key = o.mld_opdr_key);
-- Overzicht ontvangen facturen t.o.v. contractafspraken
CREATE OR REPLACE VIEW ykpn_v_cntfinalg_kosten
AS
SELECT c.boekmaand,
g.alg_gebouw_naam
gebouw,
cnt_contract_nummer_intern
contractnummer,
cnt_contract_omschrijving
omschrijving,
COALESCE((SELECT SUM (fin_factuurregel_totaal)
FROM fin_factuur f,
fin_factuurregel fr,
fin_kenmerkfactregel kfr
WHERE f.fin_factuur_key = fr.fin_factuur_key
AND f.cnt_contract_key = c.cnt_contract_key
AND fr.fin_factuurregel_key = kfr.fin_factuurregel_key
AND fac.safe_to_number (kfr.fin_kenmerkfactregel_waarde) =
g.alg_gebouw_key
AND f.fin_factuur_boekmaand = c.boekmaand),0)
bedrag,
COALESCE (ROUND ((cnt_contract_plaats_gewicht) / 12, 2), 0)
contractwaarde,
COALESCE (ROUND ((cnt_contract_plaats_gewicht) / 12, 2), 0)
- COALESCE((SELECT SUM (fin_factuurregel_totaal)
FROM fin_factuur f,
fin_factuurregel fr,
fin_kenmerkfactregel kfr
WHERE f.fin_factuur_key = fr.fin_factuur_key
AND f.cnt_contract_key = c.cnt_contract_key
AND fr.fin_factuurregel_key = kfr.fin_factuurregel_key
AND fac.safe_to_number (kfr.fin_kenmerkfactregel_waarde) =
g.alg_gebouw_key
AND f.fin_factuur_boekmaand = c.boekmaand),0)
delta
FROM ykpn_freeze_contract c,
alg_gebouw g
WHERE c.cnt_alg_plaats_key = g.alg_gebouw_key
AND ins_discipline_key IN (421,2221) -- key voor contractsoorten 421=Vast(a), 2221=Suppletie(a)
AND c.freezedate > SYSDATE - 365;
-- En nu een variant die we vergelijken met de verkoop contracten (lees de contractafspraken met KPN)
CREATE OR REPLACE VIEW ykpn_v_cntfinalg_verk_kosten
AS
SELECT c.boekmaand,
g.alg_gebouw_naam
gebouw,
cnt_contract_nummer_intern
contractnummer,
cnt_contract_omschrijving
omschrijving,
COALESCE((SELECT SUM (fin_factuurregel_totaal)
FROM fin_factuur f,
fin_factuurregel fr,
fin_kenmerkfactregel kfr,
ykpn_freeze_contract c_in
WHERE f.fin_factuur_key = fr.fin_factuur_key
AND f.cnt_contract_key = c_in.cnt_contract_key
AND fr.fin_factuurregel_key = kfr.fin_factuurregel_key
AND fac.safe_to_number (kfr.fin_kenmerkfactregel_waarde) =
g.alg_gebouw_key
AND c_in.cnt_contract_nummer_intern LIKE REPLACE(c.cnt_contract_nummer_intern, 'V', '%')
AND c_in.ins_discipline_key IN (421, 2221) -- vast A(421) en suppletie contract a(2221)
AND c_in.cnt_alg_plaats_key = c.cnt_alg_plaats_key
AND f.fin_factuur_boekmaand = c.boekmaand),0)
bedrag,
COALESCE (ROUND ((cnt_contract_plaats_gewicht) / 12, 2), 0)
contractwaarde,
COALESCE (ROUND ((cnt_contract_plaats_gewicht) / 12, 2), 0)
- COALESCE((SELECT SUM (fin_factuurregel_totaal)
FROM fin_factuur f,
fin_factuurregel fr,
fin_kenmerkfactregel kfr,
ykpn_freeze_contract c_in
WHERE f.fin_factuur_key = fr.fin_factuur_key
AND f.cnt_contract_key = c_in.cnt_contract_key
AND fr.fin_factuurregel_key = kfr.fin_factuurregel_key
AND fac.safe_to_number (kfr.fin_kenmerkfactregel_waarde) =
g.alg_gebouw_key
AND c_in.cnt_contract_nummer_intern LIKE REPLACE(c.cnt_contract_nummer_intern, 'V', '%')
AND c_in.ins_discipline_key IN (421, 2221) -- vast A(421) en suppletie contract a(2221)
AND c_in.cnt_alg_plaats_key = c.cnt_alg_plaats_key
AND f.fin_factuur_boekmaand = c.boekmaand),0)
delta
FROM ykpn_freeze_contract c,
alg_gebouw g
WHERE c.cnt_alg_plaats_key = g.alg_gebouw_key
AND ins_discipline_key = 902 -- vast a verkoop
AND c.freezedate > SYSDATE - 365;
-- Het rapport bevat trackingsregels van procuratieopdrachten waarbij de aanpassing aan de kosten van de procuratieopdracht
-- later gemaakt is dan de datum waarop de procuratieopdracht is afgemeld. We kijken maximaal 1 jaar terug. Om de aanpassing
-- in kosten te kunnen vinden in de tracking wordt gezocht op de tekst 'Totaal' in de tracking.
CREATE OR REPLACE VIEW ykpn_v_rap_procuratie_wijz
AS
SELECT fac_tracking_datum, fac_tracking_oms, pf.prs_perslid_naam_full
FROM mld_opdr o,
fac_tracking t,
fac_srtnotificatie sn,
prs_v_perslid_fullnames_all pf
WHERE mld_typeopdr_key = 101 -- procuratieopdracht
AND mld.getopdrachtstatusdate (o.mld_opdr_key, 6) < t.fac_tracking_datum
AND t.fac_tracking_refkey = o.mld_opdr_key
AND t.prs_perslid_key = pf.prs_perslid_key
AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_xmlnode = 'opdracht'
AND fac_tracking_oms LIKE '%Totaal%';
-- Notificatie naar de behandelaar als een procuratieopdracht afgemeld is.
CREATE OR REPLACE VIEW ykpn_v_noti_procuratie_afm
(
CODE,
SENDER,
RECEIVER,
TEXT,
KEY,
XKEY
)
AS
SELECT DISTINCT
'CUST08',
NULL,
o.prs_perslid_key,
'Procuratieopdracht is afgemeld '
|| o.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr,
o.mld_opdr_key,
NULL
FROM mld_opdr o, fac_tracking t
WHERE mld_typeopdr_key IN (101, 2481, 2482) -- procuratie, procuratie zonder goedkeuring, procuratie evenementen
AND t.fac_tracking_refkey = o.mld_opdr_key
AND t.fac_srtnotificatie_key = 60 -- ORDAFM
AND t.fac_tracking_datum BETWEEN (SELECT fac_notificatie_job_nextrun
- fac_notificatie_job_interval
/ 24
FROM fac_notificatie_job
WHERE fac_notificatie_job_view =
'YKPN_V_NOTI_PROCURATIE_AFM')
AND (SELECT fac_notificatie_job_nextrun
FROM fac_notificatie_job
WHERE fac_notificatie_job_view =
'YKPN_V_NOTI_PROCURATIE_AFM');
-- Notificatie naar de behandelaar als een notitie is toegevoegd aan een procuratieopdracht of beoordeling RES.
CREATE OR REPLACE VIEW ykpn_v_noti_procuratie_note
(
CODE,
SENDER,
RECEIVER,
TEXT,
KEY,
XKEY
)
AS
SELECT DISTINCT
'CUST08',
NULL,
o.prs_perslid_key,
'Notitie aan procuratie/beoording toegevoegd '
|| o.mld_melding_key
|| '/'
|| o.mld_opdr_bedrijfopdr_volgnr,
o.mld_opdr_key,
NULL
FROM mld_opdr_note n, mld_opdr o
WHERE n.mld_opdr_key = o.mld_opdr_key
AND o.mld_typeopdr_key IN (101, 2481, 2482, 141) -- procuratie, procuratie zonder goedkeuring, procuratie evenement, beoordeling RES
AND n.prs_perslid_key <> o.prs_perslid_key -- we gaan geen notificatie sturen als je als behandelaar zelf iets noteert.
AND COALESCE (n.mld_opdr_note_wijzigdatum, n.mld_opdr_note_aanmaak) BETWEEN (SELECT fac_notificatie_job_nextrun
- fac_notificatie_job_interval
/ 24
FROM fac_notificatie_job
WHERE fac_notificatie_job_view =
'YKPN_V_NOTI_PROCURATIE_NOTE')
AND (SELECT fac_notificatie_job_nextrun
FROM fac_notificatie_job
WHERE fac_notificatie_job_view =
'YKPN_V_NOTI_PROCURATIE_NOTE');
-- Notificatie die per mail naar de behandelaar van een melding wordt gestuurd indien de hoofdmelding wordt afgemeld,
-- maar er onder de hoofdmelding een of meerdere procuraties hangen waar een het veld 'PO nummer' wel is voorzien van cijfers,
-- maar waar geen vinkje is gezet bij het veld 'PO bedrag doorbelasten?'. (YKPN#55218)
CREATE OR REPLACE VIEW ykpn_v_noti_procuratie_afm_po
(
code,
sender,
receiver,
text,
key,
xkey
)
AS
SELECT DISTINCT
'CUST09',
NULL,
o.prs_perslid_key,
'Melding '
|| m.mld_melding_key
|| ' is recent afgemeld. Bij de procuratie is nog niet aangevinkt of het PO bedrag doorbelast moet worden.',
m.mld_melding_key,
NULL
FROM mld_melding m,
fac_tracking t,
fac_srtnotificatie sn,
mld_opdr o,
mld_kenmerkopdr koPO,
mld_kenmerk kPO
WHERE t.fac_tracking_refkey = m.mld_melding_key
AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'MLDAFM'
AND m.mld_melding_key = o.mld_melding_key
AND ( o.mld_typeopdr_key = 101 -- procuratie
OR o.mld_typeopdr_key = 2481 -- procuratie zonder goedkeuring
OR o.mld_typeopdr_key = 2482) -- procuratie evenementen
AND o.mld_opdr_key = koPO.mld_opdr_key
AND koPO.mld_kenmerk_key = kPO.mld_kenmerk_key
AND kPO.mld_srtkenmerk_key = 381 -- PO Nummer
AND fac.safe_to_number (koPO.mld_kenmerkopdr_waarde) IS NOT NULL
AND NOT EXISTS
(SELECT koBD.mld_kenmerkopdr_key
FROM mld_kenmerkopdr koBD
WHERE koBD.mld_kenmerk_key IN (3701, 5408, 5448) -- PO BEDRAG DOORBELASTEN?
AND koBD.mld_opdr_key = o.mld_opdr_key
AND koBD.mld_kenmerkopdr_waarde = '1')
AND t.fac_tracking_datum BETWEEN (SELECT fac_notificatie_job_nextrun
- fac_notificatie_job_interval
/ 24
FROM fac_notificatie_job
WHERE fac_notificatie_job_view =
'YKPN_V_NOTI_PROCURATIE_AFM_PO')
AND (SELECT fac_notificatie_job_nextrun
FROM fac_notificatie_job
WHERE fac_notificatie_job_view =
'YKPN_V_NOTI_PROCURATIE_AFM_PO');
-- YKPN#52215:
CREATE OR REPLACE view ykpn_v_standplts_aanvr_res
AS
SELECT p.prs_perslid_naam_full AS aanvrager,
pp.prs_perslid_email as email,
wp.alg_locatie_code AS standplaats,
a.bez_afspraak_key AS afspraaknr,
a.bez_afspraak_datum AS afspraakdatum,
a.bez_afspraak_gastheer AS gastheer,
b.bez_afspraak_naam AS bezoeker,
b.bez_afspraak_bedrijf AS bedrijf,
ak.bez_actie_omschrijving AS actie,
bkw.bez_kenmerkwaarde_waarde AS pincode,
l.alg_locatie_code AS afspraakloc,
l.alg_locatie_omschrijving AS afspraaklocatie,
b.bez_bezoekers_done AS aangemeld,
b.bez_bezoekers_out AS afgemeld
FROM bez_bezoekers b,
bez_kenmerkwaarde bkw,
bez_afspraak a,
bez_actie ak,
prs_v_perslid_fullnames p,
prs_perslid pp,
alg_locatie l,
prs_v_werkplek_gegevens wp,
prs_v_werkplekperslid_gegevens wpp
WHERE a.prs_perslid_key = p.prs_perslid_key
AND a.alg_locatie_key = l.alg_locatie_key
AND ak.bez_actie_key = a.bez_actie_key
AND b.bez_afspraak_key = a.bez_afspraak_key
AND bkw.bez_bezoekers_key = b.bez_bezoekers_key
AND wpp.prs_werkplek_key = wp.prs_werkplek_key
AND p.prs_perslid_key = wpp.prs_perslid_key
AND p.prs_perslid_key = pp.prs_perslid_key
AND bkw.bez_kenmerk_key = '1020'
AND wp.alg_locatie_code = l.alg_locatie_code
AND l.alg_locatie_code = wp.alg_locatie_code
--AND a.bez_afspraak_datum >= TO_DATE ('01-01-2018', 'DD-MM-YYYY')
;
-- De uren bij opdrachten worden geboekt door medewerkers van YASK. Bij de
-- opdracht vullen zij met een kenmerk in welke werkzaamheden zij verrichten.
-- Per gebouw is een projectcode (kenmerk bij gebouw) ingericht die match-d met
-- de werkzaamheden bij de opdracht.
CREATE OR REPLACE VIEW ykpn_v_opdrachturen
AS
SELECT m.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr opdrid,
o.mld_opdr_key,
ou.mld_opdr_uren_key,
g.alg_gebouw_omschrijving,
g.alg_gebouw_upper,
d.ins_discipline_omschrijving,
std.mld_stdmelding_omschrijving,
std.mld_stdmelding_key,
so.mld_statusopdr_omschrijving,
o.mld_opdr_datumbegin,
fac.gettrackingdate ('ORDAFM', o.mld_opdr_key) afgemeld,
ou.mld_opdr_uren_datum,
ou.mld_opdr_uren_besteed,
o.mld_opdr_uurloon,
ou.mld_opdr_uren_besteed * o.mld_opdr_uurloon totaal,
ud.fac_usrdata_omschr soortwerk,
pf.prs_perslid_naam_full,
pf.prs_perslid_key,
COALESCE ((SELECT aogk.alg_onrgoedkenmerk_waarde
FROM alg_kenmerk ak, alg_onrgoedkenmerk aogk
WHERE alg_kenmerk_hint = ud.fac_usrdata_omschr
AND ak.alg_kenmerk_key = aogk.alg_kenmerk_key
AND aogk.alg_onrgoed_key = aog.alg_gebouw_key) ,
DECODE(ud.fac_usrdata_omschr, 'Projectmanager extra werk', 'P800995.012',
'Eventmanager extra werk', 'P800995.010',
'Applicatiebeheer extra werk', 'P800995.023')) projectcode,
ou.mld_opdr_uren_status
FROM mld_opdr_uren ou,
mld_opdr o,
mld_statusopdr so,
prs_v_perslid_fullnames_all pf,
mld_melding m,
mld_stdmelding std,
ins_tab_discipline d,
alg_v_onroerendgoed aog,
alg_gebouw g,
fac_usrdata ud,
(SELECT ko.mld_opdr_key, fac.safe_to_number(ko.mld_kenmerkopdr_waarde) waarde
FROM mld_kenmerkopdr ko
WHERE ko.mld_kenmerk_key = 5301 -- soort werkzaamheden
) sw
WHERE ou.mld_opdr_key = o.mld_opdr_key
AND ou.prs_perslid_key = pf.prs_perslid_key
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND o.mld_opdr_key = sw.mld_opdr_key(+)
AND sw.waarde = ud.fac_usrdata_key(+)
AND o.mld_statusopdr_key = so.mld_statusopdr_key
AND m.mld_alg_onroerendgoed_keys = aog.alg_onroerendgoed_keys
AND aog.alg_gebouw_key = g.alg_gebouw_key;
CREATE OR REPLACE VIEW ykpn_v_export_uren_yask
(result, result_order)
AS
SELECT ou.soortwerk || ';' || ou.projectcode || ';' || to_char (ou.mld_opdr_uren_datum, 'dd-mm-yyyy') || ';' || ou.mld_opdr_uren_besteed,
to_char (ou.mld_opdr_uren_datum, 'yyyymmdd')
FROM ykpn_v_opdrachturen ou, mld_opdr_uren u
WHERE ou.mld_opdr_uren_key = u.mld_opdr_uren_key
AND u.mld_opdr_uren_status <> 4
AND TRUNC(ou.mld_opdr_uren_datum, 'mm') = TRUNC(ADD_MONTHS (SYSDATE, -1), 'mm');
-- Bevriezen van de opdracht uren
CREATE OR REPLACE PROCEDURE ykpn_export_uren_yask
( p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
v_verkoopfactuurkop_key NUMBER;
BEGIN
-- bevries de uren in de opdracht uren tabel
-- Goedgekeurde uren op verwerkt zetten.
-- Status 3 = Goedgekeurd
-- Status 4 = Verwerkt
INSERT INTO fin_verkoopfactuurkop (fin_verkoopfactuurkop_id)
VALUES ('Uren ' || TO_CHAR (SYSDATE, 'yyyy-mm-dd'))
RETURNING fin_verkoopfactuurkop_key
INTO v_verkoopfactuurkop_key;
INSERT INTO fin_verkoopfactuur (fin_verkoopfactuurkop_key,
fin_verkoopfactuur_id,
fin_verkoopfactuur_datum,
fin_verkoopfactuur_omschr,
fin_verkoopfactuur_xmlnode,
fin_verkoopfactuur_refkey,
fin_verkoopfactuur_bedrag,
fin_verkoopfactuur_n1, -- uurloon
fin_verkoopfactuur_n2, -- uren
fin_verkoopfactuur_n3, -- stdmelding_key
fin_verkoopfactuur_n4, -- opdr_uren_key
fin_verkoopfactuur_c1, -- soortwerk
fin_verkoopfactuur_c2, -- projectcode
fin_verkoopfactuur_d1, -- opdr_uren_datum
fin_verkoopfactuur_c3) -- opdr_uren_maand
SELECT v_verkoopfactuurkop_key,
opdrid || '-' || prs_perslid_nr || '-' || TO_CHAR (mld_opdr_uren_datum, 'yyyymmdd'),
SYSDATE,
opdrid || '-' || ins_discipline_omschrijving || '/' || mld_stdmelding_omschrijving || '-' || prs_perslid_naam_full || '-' || TO_CHAR (mld_opdr_uren_datum, 'yyyymmdd'),
'opdracht',
mld_opdr_key,
totaal,
mld_opdr_uurloon,
mld_opdr_uren_besteed,
mld_stdmelding_key,
mld_opdr_uren_key,
soortwerk,
projectcode,
mld_opdr_uren_datum,
TO_CHAR (ADD_MONTHS (SYSDATE, -1), 'yyyy-mm')
FROM ykpn_v_opdrachturen ou, prs_perslid p
WHERE ou.mld_opdr_uren_status <> 4 AND ou.prs_perslid_key = p.prs_perslid_key
AND TRUNC(mld_opdr_uren_datum, 'mm') = TRUNC(ADD_MONTHS (SYSDATE, -1), 'mm');
UPDATE mld_opdr_uren
SET mld_opdr_uren_status = 4
WHERE mld_opdr_uren_status <> 4
AND mld_opdr_uren_key IN
(SELECT mld_opdr_uren_key
FROM ykpn_v_opdrachturen
WHERE TRUNC(mld_opdr_uren_datum, 'MM') = TRUNC(ADD_MONTHS (SYSDATE, -1), 'mm'));
COMMIT;
END;
/
-- Overzicht van bevroren uren
CREATE OR REPLACE VIEW ykpn_v_opdrachturen_hist
AS
SELECT ou.opdrid,
ou.mld_opdr_key,
ou.mld_opdr_uren_key,
ou.alg_gebouw_omschrijving,
ou.alg_gebouw_upper,
ou.ins_discipline_omschrijving,
ou.mld_stdmelding_omschrijving,
ou.mld_stdmelding_key,
ou.mld_statusopdr_omschrijving,
ou.mld_opdr_datumbegin,
ou.afgemeld,
ou.mld_opdr_uren_datum,
ou.mld_opdr_uren_besteed,
vf.fin_verkoopfactuur_n1 mld_opdr_uurloon,
vf.fin_verkoopfactuur_bedrag totaal,
vf.fin_verkoopfactuur_c1 soortwerk,
ou.prs_perslid_naam_full,
ou.prs_perslid_key,
vf.fin_verkoopfactuur_c2 projectcode,
vf.fin_verkoopfactuur_c3 maand
FROM ykpn_v_opdrachturen ou, fin_verkoopfactuur vf
WHERE ou.mld_opdr_uren_key = vf.fin_verkoopfactuur_n4;
CREATE OR REPLACE VIEW ykpn_v_rap_fact_imp_uren
AS
SELECT null leveranciersnr,
'<invullen>' factuurnr,
'<invullen>' factuurdatum,
'M' || opdrid ordernr,
alg_gebouw_upper locatie,
null afleverdatum,
'Uren ' || maand omschrijving,
null aantal,
totaal kostprijs,
null btwbedrag,
'0' btw,
null docid,
'<invullen>' debiteurnr,
null opmerking,
'Ja' BTW_verlegd,
null kenmerk1,
null kenmerk2,
null kenmerk3,
null kenmerk4,
null kenmerk5,
maand boekmaand,
projectcode,
maand
FROM ykpn_v_opdrachturen_hist
WHERE TRUNC(mld_opdr_uren_datum, 'mm') BETWEEN TRUNC(ADD_MONTHS (SYSDATE, -3), 'mm') AND TRUNC(ADD_MONTHS (SYSDATE, -1), 'mm');
-- Overzicht besteding projecturen door projectmanagers
CREATE OR REPLACE VIEW ykpn_v_besteding_proj_uren
AS
SELECT o.mld_melding_key,
o.mld_opdr_key,
o.mld_melding_key || '/' || o.mld_opdr_bedrijfopdr_volgnr opdracht_id,
(SELECT top.mld_typeopdr_omschrijving FROM mld_typeopdr top WHERE top.mld_typeopdr_key=o.mld_typeopdr_key) opdracht_type,
o.mld_opdr_uren,
so.mld_statusopdr_omschrijving,
ms.mld_statuses_omschrijving,
o.mld_opdr_datumbegin,
o.mld_opdr_einddatum,
m.mld_melding_datum mld_startdatum,
m.mld_melding_einddatum mld_einddatum,
fac.count_work_days (o.mld_opdr_datumbegin,o.mld_opdr_einddatum) doorlooptijd,
SUBSTR (o.mld_opdr_omschrijving, 1, 60) omschrijving,
o.mld_uitvoerende_keys,
p.prs_perslid_naam_full uitvoerende,
(select prs_perslid_naam_full from prs_v_perslid_fullnames where prs_perslid_key=m.mld_melding_behandelaar2_key) huidige_behandelaar,
(SELECT i.ins_discipline_omschrijving from INS_TAB_DISCIPLINE i WHERE i.ins_discipline_module ='MLD' AND i.ins_discipline_key=m.mld_ins_discipline_key) behandel_team,
(SELECT SUM (u.mld_opdr_uren_besteed)
FROM mld_opdr_uren u
WHERE u.mld_opdr_key = o.mld_opdr_key) besteed,
(SELECT ok.mld_kenmerkopdr_waarde
FROM mld_kenmerkopdr ok
WHERE ok.mld_opdr_key= o.mld_opdr_key
AND ok.mld_kenmerk_key in (8263, 8264,8302)) verwacht_oplosdatum,
(SELECT ok.mld_kenmerkopdr_waarde
FROM mld_kenmerkopdr ok
WHERE ok.mld_opdr_key= o.mld_opdr_key
AND ok.mld_kenmerk_key in (8262, 8261,8301)) verwacht_startdatum,
(SELECT fud.fac_usrdata_omschr
FROM fac_usrdata fud, mld_kenmerkmelding mkm, mld_kenmerk mk, mld_srtkenmerk msk
WHERE fud.fac_usrdata_key= mkm.mld_kenmerkmelding_waarde
AND mkm.mld_melding_key=m.mld_melding_key
AND UPPER(msk.mld_srtkenmerk_omschrijving)='PROJECTSTATUS'
AND mk.mld_srtkenmerk_key=msk.mld_srtkenmerk_key
AND mkm.mld_kenmerk_key = mk.mld_kenmerk_key) projectstatus,
(SELECT a.alg_gebouw_code||'-'||a.alg_gebouw_naam
FROM alg_v_allonrgoed_gegevens a
WHERE a.alg_onroerendgoed_keys=m.mld_alg_onroerendgoed_keys) gebouw
FROM mld_melding m, mld_opdr o, prs_v_perslid_fullnames p,mld_statusopdr so, mld_statuses ms
WHERE m.mld_melding_key=o.mld_melding_key
AND m.mld_ins_discipline_key=1781 -- Alleen behandelteam project Management
AND o.mld_uitvoerende_keys=p.prs_perslid_key(+)
AND o.mld_statusopdr_key = so.mld_statusopdr_key
AND m.mld_melding_status= ms.mld_statuses_key;
-- Reverse billing zoals bij Schiphol
CREATE OR REPLACE VIEW ykpn_v_rap_actual_cost_tot
(
fclt_3d_afdeling_key, -- Kunnen beperken per leverancier!
maand,
broc_flag,
fclt_f_leverancier,
contractnr,
beschrijving,
inkoopordernr,
aantal,
kosten
)
AS -- Vaste contractkosten over de ACTUAL termijn
SELECT c.prs_afdeling_key,
TO_CHAR (SYSDATE, 'yyyy-mm') maand, -- Deze maand volgende maand factureren (achteraf)
'C' broc_flag,
c.prs_bedrijf_naam bedrijf,
c.cnt_contract_nummer_intern, -- Uit deze maand lopend contract, anders geen vaste kosten
c.cnt_contract_omschrijving,
c.cnt_contract_nummer,
0 aantal,
ROUND (
DECODE (COALESCE (c.cnt_contract_termijnkosten, 0),
0, c.cnt_contract_kosten / 12,
c.cnt_contract_termijnkosten),
2)
+ fac.safe_to_number (COALESCE (ce.cnt_kenmerkcontract_waarde, '0'))
+ fac.safe_to_number (COALESCE (bm.cnt_kenmerkcontract_waarde, '0'))
kosten -- Wat als looptijd < jaar?
FROM (SELECT b.prs_bedrijf_key,
b.prs_bedrijf_naam,
pcp.prs_afdeling_key,
pcp.prs_perslid_key,
DECODE (pcp.prs_perslid_geslacht, 0, 'Mevr. ', 1, 'Dhr. ', '')
cp_aanhef,
DECODE (
COALESCE (pcp.prs_perslid_voorletters,
SUBSTR (pcp.prs_perslid_voornaam, 1, 1)),
NULL, NULL,
COALESCE (
pcp.prs_perslid_voorletters,
SUBSTR (pcp.prs_perslid_voornaam, 1, 1) || '.')
|| ' ')
|| DECODE (pcp.prs_perslid_tussenvoegsel,
NULL, NULL,
pcp.prs_perslid_tussenvoegsel || ' ')
|| pcp.prs_perslid_naam
cp_naam,
pcp.prs_perslid_email cp_email,
c.cnt_contract_key,
c.cnt_contract_nummer_intern,
c.cnt_contract_omschrijving,
c.cnt_contract_nummer,
c.cnt_contract_kosten,
c.cnt_contract_termijnkosten
FROM cnt_v_aanwezigcontract c,
prs_bedrijf b,
cnt_contract mc,
prs_contactpersoon cp,
prs_perslid pcp
WHERE c.ins_discipline_key IN (421, 2221) -- vast A(421) en suppletie contract a (2221)
--AND c.cnt_contract_status = 0 -- NIET Gesloten
AND TRUNC (c.cnt_contract_looptijd_van) < TRUNC (LAST_DAY (SYSDATE))
AND c.cnt_contract_looptijd_tot >= TRUNC (LAST_DAY (SYSDATE))
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
AND c.cnt_contract_mantel_key = mc.cnt_contract_key(+)
AND mc.prs_contactpersoon_key = cp.prs_contactpersoon_key(+)
AND cp.prs_perslid_key = pcp.prs_perslid_key(+)
AND NOT EXISTS (SELECT cnt_kenmerkcontract_key
FROM cnt_kenmerk k, cnt_kenmerkcontract kc
WHERE kc.cnt_contract_key = c.cnt_contract_key
AND kc.cnt_kenmerk_key = k.cnt_kenmerk_key
AND k.cnt_srtkenmerk_key = 121)) c -- Uitsluiten voor rev. billing
LEFT JOIN cnt_kenmerkcontract ce
ON ce.cnt_kenmerk_key = -1 -- Credit/extra kosten TODO
AND c.cnt_contract_key = ce.cnt_contract_key
LEFT JOIN cnt_kenmerkcontract bm
ON bm.cnt_kenmerk_key = -1 -- Bonus/malus TODO
AND c.cnt_contract_key = bm.cnt_contract_key
UNION ALL -- Variabele kosten uit ACTUAL opdrachten op variabele contracten
SELECT pcp.prs_afdeling_key,
TO_CHAR (SYSDATE, 'yyyy-mm') maand, -- Deze maand ORDAFR, volgende maand factureren (achteraf)
'O' broc_flag,
b.prs_bedrijf_naam,
c.cnt_contract_nummer_intern,
c.cnt_contract_omschrijving,
c.cnt_contract_nummer,
COUNT ( * ) aantal,
SUM (o.mld_opdr_kosten) kosten -- Netto bedrag, want alle bedragen excl. BTW, toch?
FROM mld_opdr o,
--fac_tracking t,
cnt_contract c,
cnt_contract mc,
prs_bedrijf b,
prs_contactpersoon cp,
prs_perslid pcp
WHERE o.mld_statusopdr_key = 9
--AND o.mld_opdr_key = t.fac_tracking_refkey
--AND t.fac_srtnotificatie_key = 76 -- ORDAFR
--AND t.fac_tracking_datum > TRUNC (SYSDATE, 'mm') -- Actual = deze maand Afgerond (en nog niet Verwerkt)
AND fac.gettrackingdate ('ORDAFR', o.mld_opdr_key) > TRUNC (SYSDATE, 'mm') -- Actual = Deze maand Afgerond (en nog niet Verwerkt)
-- AND NOT EXISTS -- Niet gemarkeerd als dispuut!
-- (SELECT 1
-- FROM mld_v_aanwezigkenmerkopdr ko, mld_kenmerk k
-- WHERE ko.mld_opdr_key = o.mld_opdr_key
-- AND ko.mld_kenmerk_key = k.mld_kenmerk_key
-- AND k.mld_srtkenmerk_key = 3881 -- Dispuut
-- AND ko.mld_kenmerkopdr_waarde = '1') -- Aangevinkt
AND EXISTS -- gemarkeerd als facturabel!
(SELECT 1
FROM mld_v_aanwezigkenmerkopdr ko, mld_kenmerk k
WHERE ko.mld_opdr_key = o.mld_opdr_key
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 5521 -- Facturabel
AND ko.mld_kenmerkopdr_waarde = '1') -- Aangevinkt
AND o.cnt_contract_key = c.cnt_contract_key
AND c.ins_discipline_key IN (461, 903) -- Variabele contracten
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
AND c.cnt_contract_mantel_key = mc.cnt_contract_key(+)
AND mc.prs_contactpersoon_key = cp.prs_contactpersoon_key(+)
AND cp.prs_perslid_key = pcp.prs_perslid_key(+)
GROUP BY pcp.prs_afdeling_key,
TO_CHAR (SYSDATE, 'yyyy-mm'),
'O',
b.prs_bedrijf_naam,
c.cnt_contract_nummer_intern,
c.cnt_contract_omschrijving,
c.cnt_contract_nummer;
-- Actual regels en basis voor oa. te exporteren/bevriezen regels op de 10e van
-- de maand; voor de output geldt:
-- Dat deze de actual vaste contractkosten toont (over afgelopen maand).
-- Dat deze de actual variabele opdrachtkosten toont (voor 1e ORDAFR).
-- Dat deze tot de 10e van de huidige maand alleen nog door Yask wijzigbaar is.
CREATE OR REPLACE VIEW ykpn_v_actual_fact -- Tbv. FACT_EXPORT!
(
prs_afdeling_key,
maand,
prs_bedrijf_key,
prs_bedrijf_naam,
cp_perslid_key,
cp_aanhef,
cp_naam,
cp_email,
cnt_contract_key,
contractnr,
beschrijving,
inkoopordernr,
cm_aanhef,
cm_naam,
bes_bestelopdr_key,
res_rsv_ruimte_key,
mld_opdr_key,
bro_id,
aantal,
kosten,
ins_discipline_key
)
AS
SELECT c.prs_afdeling_key, -- Vaste contractkosten over de ACTUAL termijn
TO_CHAR (TRUNC (SYSDATE, 'mm') - 1, 'yyyy-mm') maand, -- Afgelopen maand deze maand factureren (achteraf)
c.prs_bedrijf_key,
c.prs_bedrijf_naam,
c.prs_perslid_key,
c.cp_aanhef,
c.cp_naam,
c.cp_email,
c.cnt_contract_key,
c.cnt_contract_nummer_intern,
c.cnt_contract_omschrijving,
c.cnt_contract_nummer, -- Uit afgelopen maand lopend contract, anders geen vaste kosten
c.cm_aanhef,
c.cm_naam,
NULL bes_bestelopdr_key,
NULL res_rsv_ruimte_key,
NULL mld_opdr_key,
NULL bro_id,
0 aantal,
ROUND (
DECODE (COALESCE (c.cnt_contract_termijnkosten, 0),
0, c.cnt_contract_kosten / 12,
c.cnt_contract_termijnkosten),
2)
+ fac.safe_to_number (COALESCE (ce.cnt_kenmerkcontract_waarde, '0'))
+ fac.safe_to_number (COALESCE (bm.cnt_kenmerkcontract_waarde, '0'))
kosten, -- Wat als looptijd < jaar?
ins_discipline_key
FROM (SELECT b.prs_bedrijf_key,
b.prs_bedrijf_naam,
pcp.prs_afdeling_key,
pcp.prs_perslid_key,
DECODE (pcp.prs_perslid_geslacht,
0, 'Mevr. ',
1, 'Dhr. ',
'')
cp_aanhef,
DECODE (
COALESCE (pcp.prs_perslid_voorletters,
SUBSTR (pcp.prs_perslid_voornaam, 1, 1)),
NULL, NULL,
COALESCE (
pcp.prs_perslid_voorletters,
SUBSTR (pcp.prs_perslid_voornaam, 1, 1) || '.')
|| ' ')
|| DECODE (pcp.prs_perslid_tussenvoegsel,
NULL, NULL,
pcp.prs_perslid_tussenvoegsel || ' ')
|| pcp.prs_perslid_naam
cp_naam,
pcp.prs_perslid_email cp_email,
c.cnt_contract_key,
c.cnt_contract_nummer_intern,
c.cnt_contract_omschrijving,
c.cnt_contract_nummer,
c.cnt_contract_kosten,
c.cnt_contract_termijnkosten,
DECODE (pcm.prs_perslid_geslacht,
0, 'Mevr. ',
1, 'Dhr. ',
'')
cm_aanhef,
DECODE (
COALESCE (pcm.prs_perslid_voorletters,
SUBSTR (pcm.prs_perslid_voornaam, 1, 1)),
NULL, NULL,
COALESCE (
pcm.prs_perslid_voorletters,
SUBSTR (pcm.prs_perslid_voornaam, 1, 1) || '.')
|| ' ')
|| DECODE (pcm.prs_perslid_tussenvoegsel,
NULL, NULL,
pcm.prs_perslid_tussenvoegsel || ' ')
|| pcm.prs_perslid_naam
cm_naam,
c.ins_discipline_key
FROM cnt_v_aanwezigcontract c,
prs_bedrijf b,
cnt_contract mc,
prs_contactpersoon cp,
prs_perslid pcp,
prs_perslid pcm
WHERE c.ins_discipline_key IN (421, 2221, 902) -- Vaste contracten a(421) en supppletie contract a(2221) en verkoopcontracten (902)
--AND c.cnt_contract_status = 0 -- NIET Gesloten
AND TRUNC (c.cnt_contract_looptijd_van) < TRUNC (SYSDATE, 'mm') - 1
AND c.cnt_contract_looptijd_tot >= TRUNC (SYSDATE, 'mm') - 1
AND NOT EXISTS -- Nog geen entry in eigen tabel
(SELECT 1
FROM fin_verkoopfactuur
WHERE fin_verkoopfactuur_xmlnode = 'contract'
AND fin_verkoopfactuur_refkey = c.cnt_contract_key
AND fin_verkoopfactuur_c3 = TO_CHAR (TRUNC (SYSDATE, 'mm') - 1, 'yyyy-mm'))
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
AND c.cnt_contract_mantel_key = mc.cnt_contract_key(+)
AND mc.prs_contactpersoon_key = cp.prs_contactpersoon_key(+)
AND cp.prs_perslid_key = pcp.prs_perslid_key(+)
AND c.prs_perslid_key_beh = pcm.prs_perslid_key
AND NOT EXISTS (SELECT cnt_kenmerkcontract_key
FROM cnt_kenmerk k, cnt_kenmerkcontract kc
WHERE kc.cnt_contract_key = c.cnt_contract_key
AND kc.cnt_kenmerk_key = k.cnt_kenmerk_key
AND k.cnt_srtkenmerk_key = 121)) c
LEFT JOIN cnt_kenmerkcontract ce
ON ce.cnt_kenmerk_key = -1 -- Credit/extra kosten TODO
AND c.cnt_contract_key = ce.cnt_contract_key
LEFT JOIN cnt_kenmerkcontract bm
ON bm.cnt_kenmerk_key = -1 -- Bonus/malus TODO
AND c.cnt_contract_key = bm.cnt_contract_key
UNION ALL -- Variabele kosten uit ACTUAL opdrachten op variabele contracten
SELECT pcp.prs_afdeling_key,
TO_CHAR (TRUNC (SYSDATE, 'mm') - 1, 'yyyy-mm') maand, -- Voor 1e ORDAFR, deze maand factureren (achteraf)
b.prs_bedrijf_key,
b.prs_bedrijf_naam,
pcp.prs_perslid_key,
DECODE (pcp.prs_perslid_geslacht, 0, 'Mevr. ', 1, 'Dhr. ', '')
cp_aanhef,
DECODE (
COALESCE (pcp.prs_perslid_voorletters,
SUBSTR (pcp.prs_perslid_voornaam, 1, 1)),
NULL, NULL,
COALESCE (pcp.prs_perslid_voorletters,
SUBSTR (pcp.prs_perslid_voornaam, 1, 1) || '.')
|| ' ')
|| DECODE (pcp.prs_perslid_tussenvoegsel,
NULL, NULL,
pcp.prs_perslid_tussenvoegsel || ' ')
|| pcp.prs_perslid_naam
cp_naam,
pcp.prs_perslid_email cp_email,
c.cnt_contract_key,
c.cnt_contract_nummer_intern,
c.cnt_contract_omschrijving,
c.cnt_contract_nummer,
DECODE (pcm.prs_perslid_geslacht, 0, 'Mevr. ', 1, 'Dhr. ', '')
cm_aanhef,
DECODE (
COALESCE (pcm.prs_perslid_voorletters,
SUBSTR (pcm.prs_perslid_voornaam, 1, 1)),
NULL, NULL,
COALESCE (pcm.prs_perslid_voorletters,
SUBSTR (pcm.prs_perslid_voornaam, 1, 1) || '.')
|| ' ')
|| DECODE (pcm.prs_perslid_tussenvoegsel,
NULL, NULL,
pcm.prs_perslid_tussenvoegsel || ' ')
|| pcm.prs_perslid_naam
cm_naam,
NULL bes_bestelopdr_key,
NULL res_rsv_ruimte_key,
o.mld_opdr_key,
TO_CHAR (o.mld_melding_key) || '/' || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr) bro_id,
1 aantal,
o.mld_opdr_kosten kosten, -- Netto bedrag, want alle bedragen excl. BTW, toch?
c.ins_discipline_key -- maar even gekozen om de discipline van het contract te gebruiken
FROM mld_opdr o,
--fac_tracking t,
cnt_contract c,
prs_bedrijf b,
cnt_contract mc,
prs_contactpersoon cp,
prs_perslid pcp,
prs_perslid pcm
WHERE o.mld_statusopdr_key = 9
--AND o.mld_opdr_key = t.fac_tracking_refkey
--AND t.fac_srtnotificatie_key = 76 -- ORDAFR
--AND t.fac_tracking_datum > TO_DATE ('20190101', 'yyyymmdd')
--AND t.fac_tracking_datum < TRUNC (SYSDATE, 'mm')
AND fac.gettrackingdate ('ORDAFR', o.mld_opdr_key) BETWEEN TO_DATE ('20190101', 'yyyymmdd') AND TRUNC (SYSDATE, 'mm') -- Actual = Deze maand Afgerond (en nog niet Verwerkt)
-- AND NOT EXISTS -- Niet gemarkeerd als dispuut!
-- (SELECT 1
-- FROM mld_v_aanwezigkenmerkopdr ko, mld_kenmerk k
-- WHERE ko.mld_opdr_key = o.mld_opdr_key
-- AND ko.mld_kenmerk_key = k.mld_kenmerk_key
-- AND k.mld_srtkenmerk_key = 3881 -- Dispuut
-- AND ko.mld_kenmerkopdr_waarde = '1') -- Aangevinkt
AND EXISTS -- gemarkeerd als facturabel!
(SELECT 1
FROM mld_v_aanwezigkenmerkopdr ko, mld_kenmerk k
WHERE ko.mld_opdr_key = o.mld_opdr_key
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 5521 -- Facturabel
AND ko.mld_kenmerkopdr_waarde = '1') -- Aangevinkt
AND o.cnt_contract_key = c.cnt_contract_key
AND c.ins_discipline_key IN (461,903) -- Variabele contracten
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
AND c.cnt_contract_mantel_key = mc.cnt_contract_key(+)
AND mc.prs_contactpersoon_key = cp.prs_contactpersoon_key(+)
AND cp.prs_perslid_key = pcp.prs_perslid_key(+)
AND c.prs_perslid_key_beh = pcm.prs_perslid_key
UNION ALL -- Variabele kosten uit ACTUAL opdrachten op variabele contracten-DISPUUT
SELECT pcp.prs_afdeling_key,
TO_CHAR (TRUNC (SYSDATE, 'mm') - 1, 'yyyy-mm') maand, -- Voor 1e ORDAFR, deze maand factureren (achteraf)
b.prs_bedrijf_key,
b.prs_bedrijf_naam,
pcp.prs_perslid_key,
DECODE (pcp.prs_perslid_geslacht, 0, 'Mevr. ', 1, 'Dhr. ', '')
cp_aanhef,
DECODE (
COALESCE (pcp.prs_perslid_voorletters,
SUBSTR (pcp.prs_perslid_voornaam, 1, 1)),
NULL, NULL,
COALESCE (pcp.prs_perslid_voorletters,
SUBSTR (pcp.prs_perslid_voornaam, 1, 1) || '.')
|| ' ')
|| DECODE (pcp.prs_perslid_tussenvoegsel,
NULL, NULL,
pcp.prs_perslid_tussenvoegsel || ' ')
|| pcp.prs_perslid_naam
cp_naam,
pcp.prs_perslid_email cp_email,
c.cnt_contract_key,
COALESCE (c.cnt_contract_nummer_intern, '') || '/DISPUUT' cnt_contract_nummer_intern,
c.cnt_contract_omschrijving,
c.cnt_contract_nummer,
DECODE (pcm.prs_perslid_geslacht, 0, 'Mevr. ', 1, 'Dhr. ', '')
cm_aanhef,
DECODE (
COALESCE (pcm.prs_perslid_voorletters,
SUBSTR (pcm.prs_perslid_voornaam, 1, 1)),
NULL, NULL,
COALESCE (pcm.prs_perslid_voorletters,
SUBSTR (pcm.prs_perslid_voornaam, 1, 1) || '.')
|| ' ')
|| DECODE (pcm.prs_perslid_tussenvoegsel,
NULL, NULL,
pcm.prs_perslid_tussenvoegsel || ' ')
|| pcm.prs_perslid_naam
cm_naam,
NULL bes_bestelopdr_key,
NULL res_rsv_ruimte_key,
o.mld_opdr_key,
TO_CHAR (o.mld_melding_key) || '/' || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr) bro_id,
1 aantal,
o.mld_opdr_kosten kosten, -- Netto bedrag, want alle bedragen excl. BTW, toch?
c.ins_discipline_key
FROM mld_opdr o,
cnt_contract c,
prs_bedrijf b,
cnt_contract mc,
prs_contactpersoon cp,
prs_perslid pcp,
prs_perslid pcm
WHERE o.mld_statusopdr_key = 9
AND fac.gettrackingdate ('ORDAFR', o.mld_opdr_key) BETWEEN TO_DATE ('20190101', 'yyyymmdd') AND TRUNC (SYSDATE, 'mm') -- Actual = Deze maand Afgerond (en nog niet Verwerkt)
-- AND EXISTS -- Gemarkeerd als dispuut!
-- (SELECT 1
-- FROM mld_v_aanwezigkenmerkopdr ko, mld_kenmerk k
-- WHERE ko.mld_opdr_key = o.mld_opdr_key
-- AND ko.mld_kenmerk_key = k.mld_kenmerk_key
-- AND k.mld_srtkenmerk_key = 3881 -- Dispuut
-- AND ko.mld_kenmerkopdr_waarde = '1') -- Aangevinkt
AND NOT EXISTS -- gemarkeerd als facturabel!
(SELECT 1
FROM mld_v_aanwezigkenmerkopdr ko, mld_kenmerk k
WHERE ko.mld_opdr_key = o.mld_opdr_key
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 5521 -- Facturabel
AND ko.mld_kenmerkopdr_waarde = '1') -- Aangevinkt
AND o.cnt_contract_key = c.cnt_contract_key
AND c.ins_discipline_key IN (461,903) -- Variabele contracten
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
AND c.cnt_contract_mantel_key = mc.cnt_contract_key(+)
AND mc.prs_contactpersoon_key = cp.prs_contactpersoon_key(+)
AND cp.prs_perslid_key = pcp.prs_perslid_key(+)
AND c.prs_perslid_key_beh = pcm.prs_perslid_key;
-- Te exporteren/bevriezen totalen over voorgaande maand (vast en variabel).
CREATE OR REPLACE VIEW ykpn_v_rap_actual_fact_tot
(
fclt_3d_afdeling_key, -- Kunnen beperken per leverancier!
maand,
broc_flag,
--hide_f_bedrijf_key,
fclt_f_leverancier,
--hide_f_contract_key,
contractnr,
beschrijving,
inkoopordernr,
aantal,
kosten
)
AS
SELECT prs_afdeling_key,
maand,
DECODE (bes_bestelopdr_key, NULL, DECODE (res_rsv_ruimte_key, NULL, DECODE (mld_opdr_key, NULL, 'C', 'O'), 'R'), 'B') broc_flag,
--prs_bedrijf_key,
prs_bedrijf_naam,
--cnt_contract_key,
contractnr,
beschrijving,
inkoopordernr,
SUM (aantal),
SUM (kosten)
FROM ykpn_v_actual_fact
WHERE coalesce(ins_discipline_key, -1) <> 902 -- verkoopcontracten uitsluiten
GROUP BY prs_afdeling_key,
maand,
DECODE (bes_bestelopdr_key, NULL, DECODE (res_rsv_ruimte_key, NULL, DECODE (mld_opdr_key, NULL, 'C', 'O'), 'R'), 'B'),
--prs_bedrijf_key,
prs_bedrijf_naam,
--cnt_contract_key,
contractnr,
beschrijving,
inkoopordernr;
-- Te exporteren/bevriezen variabele opdrachtkosten over voorgaande maand (details).
CREATE OR REPLACE VIEW ykpn_v_rap_actual_fact_mld
(
fclt_3d_afdeling_key, -- Kunnen beperken per leverancier!
fclt_3d_locatie_key,
maand,
prio,
mld_melding_key,
mld_opdr_key,
opdr_id,
plaats, -- Gebouw
ruimte,
mld_stdmelding_oms,
opdrachttype,
omschrijving,
begindatum,
einddatum,
afronddatum,
meldingstatus,
opdrachtstatus,
afhandeling,
fclt_f_leverancier,
materiaal,
kosten,
mandaat,
dispuut,
facturabel,
fclt_f_contractnr,
fclt_f_inkoopordernr,
fclt_x_district,
behandelaar
)
AS
SELECT v.prs_afdeling_key,
l.alg_locatie_key,
v.maand,
TO_CHAR (m.mld_melding_spoed),
m.mld_melding_key,
o.mld_opdr_key,
COALESCE (sd.ins_srtdiscipline_prefix, '') || v.bro_id opdr_id,
og.alg_gebouw_naam || ' (' || og.alg_gebouw_code || ')' plaats,
DECODE (og.alg_type, 'R', og.alg_plaatsaanduiding, NULL) ruimte,
sm.mld_stdmelding_omschrijving,
ot.mld_typeopdr_omschrijving,
o.mld_opdr_omschrijving,
o.mld_opdr_datumbegin begindatum,
--TO_CHAR (o.mld_opdr_einddatum, 'dd-mm-yyyy') einddatum,
fac.gettrackingdate ('ORDAFM', o.mld_opdr_key) einddatum,
fac.gettrackingdate ('ORDAFR', o.mld_opdr_key) afronddatum,
ms.mld_statuses_omschrijving,
os.mld_statusopdr_omschrijving,
o.mld_opdr_opmerking,
v.prs_bedrijf_naam,
o.mld_opdr_materiaal,
v.kosten,
(SELECT fac.safe_to_number(mld_kenmerkopdr_waarde)
FROM mld_kenmerkopdr ko, mld_kenmerk k
WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key AND ko.mld_opdr_key = o.mld_opdr_key AND k.mld_srtkenmerk_key = 3521) mandaat,
(SELECT fac.safe_to_number(mld_kenmerkopdr_waarde)
FROM mld_kenmerkopdr ko, mld_kenmerk k
WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key AND ko.mld_opdr_key = o.mld_opdr_key AND k.mld_srtkenmerk_key = 3881) dispuut,
(SELECT fac.safe_to_number(mld_kenmerkopdr_waarde)
FROM mld_kenmerkopdr ko, mld_kenmerk k
WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key AND ko.mld_opdr_key = o.mld_opdr_key AND k.mld_srtkenmerk_key = 5521) facturabel,
v.contractnr,
v.inkoopordernr,
d.alg_district_omschrijving,
pf.prs_perslid_naam_full behandelaar
FROM ykpn_v_actual_fact v,
mld_opdr o,
mld_statusopdr os,
mld_typeopdr ot,
mld_melding m,
mld_statuses ms,
mld_stdmelding sm,
mld_discipline md,
ins_srtdiscipline sd,
alg_locatie l,
alg_district d,
alg_v_onroerendgoed_gegevens og,
prs_v_perslid_fullnames pf
WHERE v.mld_opdr_key = o.mld_opdr_key
AND o.mld_statusopdr_key = os.mld_statusopdr_key
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_melding_status = ms.mld_statuses_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = md.ins_discipline_key
AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND m.mld_alg_locatie_key = l.alg_locatie_key(+)
AND l.alg_district_key = d.alg_district_key(+)
AND m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys(+)
AND o.prs_perslid_key = pf.prs_perslid_key(+);
-- Frozen regels en basis voor oa. de notificatie op de 11e van de maand; voor
-- de output geldt:
-- Dat deze de frozen vaste contractkosten toont.
-- Dat deze de frozen variabele opdrachtkosten toont.
-- Dat de laatst bevroren maand per bedrijf op de 11e wordt genotificeerd (via
-- extra_key-principe) met daarin de bedragen gegroepeerd per inkoopordernr.
CREATE OR REPLACE VIEW ykpn_v_frozen_fact
(
prs_afdeling_key,
maand,
--prs_bedrijf_key,
extra_key, -- Moet zo heten!
prs_bedrijf_naam,
cp_perslid_key,
cp_aanhef,
cp_naam,
cp_email,
cnt_contract_key,
contractnr,
beschrijving,
inkoopordernr,
cm_aanhef,
cm_naam,
bes_bestelopdr_key,
res_rsv_ruimte_key,
mld_opdr_key,
bro_id,
factuur_naar_sg,
aantal,
kosten,
alg_gebouw_key,
ins_discipline_key
)
AS
SELECT pcp.prs_afdeling_key, -- Vaste contractkosten over de FROZEN termijnen
fin_verkoopfactuur_c3 maand, -- yyyy-mm
b.prs_bedrijf_key,
b.prs_bedrijf_naam,
pcp.prs_perslid_key,
DECODE (pcp.prs_perslid_geslacht, 0, 'Mevr. ', 1, 'Dhr. ', '')
cp_aanhef,
DECODE (
COALESCE (pcp.prs_perslid_voorletters,
SUBSTR (pcp.prs_perslid_voornaam, 1, 1)),
NULL, NULL,
COALESCE (pcp.prs_perslid_voorletters,
SUBSTR (pcp.prs_perslid_voornaam, 1, 1) || '.')
|| ' ')
|| DECODE (pcp.prs_perslid_tussenvoegsel,
NULL, NULL,
pcp.prs_perslid_tussenvoegsel || ' ')
|| pcp.prs_perslid_naam
cp_naam,
pcp.prs_perslid_email,
c.cnt_contract_key,
c.cnt_contract_nummer_intern,
c.cnt_contract_omschrijving,
c.cnt_contract_nummer,
DECODE (pcm.prs_perslid_geslacht, 0, 'Mevr. ', 1, 'Dhr. ', '')
cm_aanhef,
DECODE (
COALESCE (pcm.prs_perslid_voorletters,
SUBSTR (pcm.prs_perslid_voornaam, 1, 1)),
NULL, NULL,
COALESCE (pcm.prs_perslid_voorletters,
SUBSTR (pcm.prs_perslid_voornaam, 1, 1) || '.')
|| ' ')
|| DECODE (pcm.prs_perslid_tussenvoegsel,
NULL, NULL,
pcm.prs_perslid_tussenvoegsel || ' ')
|| pcm.prs_perslid_naam
cm_naam,
NULL bes_bestelopdr_key,
NULL res_rsv_ruimte_key,
NULL mld_opdr_key,
NULL bro_id,
DECODE (kl.prs_kenmerklink_waarde, 1, 'Ja', 'Nee') fact2sg,
0 aantal,
vk.fin_verkoopfactuur_bedrag kosten,
fin_verkoopfactuur_n3, -- alg_gebouw_key
fin_verkoopfactuur_n1 -- discipline
FROM fin_verkoopfactuur vk,
cnt_contract c,
prs_bedrijf b,
cnt_contract mc,
prs_contactpersoon cp,
prs_perslid pcp,
prs_perslid pcm,
(SELECT *
FROM prs_v_aanwezigkenmerklink
WHERE prs_kenmerk_key = 99999) kl -- Factuur rechtstreeks naar SG!
WHERE vk.fin_verkoopfactuur_xmlnode = 'contract'
AND fin_verkoopfactuur_refkey = c.cnt_contract_key
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
AND c.cnt_contract_mantel_key = mc.cnt_contract_key(+)
AND mc.prs_contactpersoon_key = cp.prs_contactpersoon_key(+)
AND cp.prs_perslid_key = pcp.prs_perslid_key(+)
AND c.prs_perslid_key_beh = pcm.prs_perslid_key
AND b.prs_bedrijf_key = kl.prs_link_key(+)
AND fin_verkoopfactuur_n1 IN (421,2221) -- Vast (a)(421) en suppletie contract a(2221)
UNION ALL -- Variabele kosten uit FROZEN opdrachten op variabele contracten
SELECT pcp.prs_afdeling_key,
o.mld_opdr_ordernr maand,
b.prs_bedrijf_key,
b.prs_bedrijf_naam,
pcp.prs_perslid_key,
DECODE (pcp.prs_perslid_geslacht, 0, 'Mevr. ', 1, 'Dhr. ', '')
cp_aanhef,
DECODE (
COALESCE (pcp.prs_perslid_voorletters,
SUBSTR (pcp.prs_perslid_voornaam, 1, 1)),
NULL,
NULL,
COALESCE (pcp.prs_perslid_voorletters,
SUBSTR (pcp.prs_perslid_voornaam, 1, 1) || '.')
|| ' ')
|| DECODE (pcp.prs_perslid_tussenvoegsel,
NULL, NULL,
pcp.prs_perslid_tussenvoegsel || ' ')
|| pcp.prs_perslid_naam
cp_naam,
pcp.prs_perslid_email,
c.cnt_contract_key,
c.cnt_contract_nummer_intern,
c.cnt_contract_omschrijving,
c.cnt_contract_nummer,
DECODE (pcm.prs_perslid_geslacht, 0, 'Mevr. ', 1, 'Dhr. ', '')
cm_aanhef,
DECODE (
COALESCE (pcm.prs_perslid_voorletters,
SUBSTR (pcm.prs_perslid_voornaam, 1, 1)),
NULL, NULL,
COALESCE (pcm.prs_perslid_voorletters,
SUBSTR (pcm.prs_perslid_voornaam, 1, 1) || '.')
|| ' ')
|| DECODE (pcm.prs_perslid_tussenvoegsel,
NULL, NULL,
pcm.prs_perslid_tussenvoegsel || ' ')
|| pcm.prs_perslid_naam
cm_naam,
NULL bes_bestelopdr_key,
NULL res_rsv_ruimte_key,
o.mld_opdr_key,
TO_CHAR (o.mld_melding_key) || '/' || TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr) bro_id,
DECODE (kl.prs_kenmerklink_waarde, 1, 'Ja', 'Nee'),
1 aantal,
o.mld_opdr_kosten kosten, -- Netto bedrag, want alle bedragen excl. BTW, toch?
NULL alg_gebouw_key,
NULL ins_discipline_key
FROM mld_opdr o,
cnt_contract c,
prs_bedrijf b,
cnt_contract mc,
prs_contactpersoon cp,
prs_perslid pcp,
prs_perslid pcm,
(SELECT *
FROM prs_v_aanwezigkenmerklink
WHERE prs_kenmerk_key = 99999) kl -- Factuur rechtstreeks naar SG!
WHERE o.mld_opdr_ordernr IS NOT NULL -- Gefactureerd!
--AND o.mld_statusopdr_key = 7 -- Verwerkt (kan niet anders)
AND o.cnt_contract_key = c.cnt_contract_key
--AND c.ins_discipline_key = 523 -- Variabele contracten (kan niet anders)
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
AND c.cnt_contract_mantel_key = mc.cnt_contract_key(+)
AND mc.prs_contactpersoon_key = cp.prs_contactpersoon_key(+)
AND cp.prs_perslid_key = pcp.prs_perslid_key(+)
AND c.prs_perslid_key_beh = pcm.prs_perslid_key
AND b.prs_bedrijf_key = kl.prs_link_key(+);
-- Geexporteerde/bevroren totalen over voorgaande maanden (vast en variabel).
CREATE OR REPLACE VIEW ykpn_v_rap_frozen_fact_tot
(
fclt_3d_afdeling_key, -- Kunnen beperken per leverancier!
maand,
broc_flag,
--hide_f_bedrijf_key,
fclt_f_leverancier,
--hide_f_contract_key,
contractnr,
beschrijving,
inkoopordernr,
aantal,
kosten
)
AS -- Vaste contractkosten over de FROZEN termijnen
SELECT prs_afdeling_key,
maand,
DECODE (bes_bestelopdr_key, NULL, DECODE (res_rsv_ruimte_key, NULL, DECODE (mld_opdr_key, NULL, 'C', 'O'), 'R'), 'B') broc_flag,
--prs_bedrijf_key,
prs_bedrijf_naam,
--cnt_contract_key,
contractnr,
beschrijving,
inkoopordernr,
SUM (aantal),
SUM (kosten)
FROM ykpn_v_frozen_fact
GROUP BY prs_afdeling_key,
maand,
DECODE (bes_bestelopdr_key, NULL, DECODE (res_rsv_ruimte_key, NULL, DECODE (mld_opdr_key, NULL, 'C', 'O'), 'R'), 'B'),
--prs_bedrijf_key,
prs_bedrijf_naam,
--cnt_contract_key,
contractnr,
beschrijving,
inkoopordernr;
-- Geexporteerde/bevroren variabele opdrachtkosten over voorgaande maanden (details).
CREATE OR REPLACE VIEW ykpn_v_rap_frozen_fact_mld
(
fclt_3d_afdeling_key, -- Kunnen beperken per leverancier!
fclt_3d_locatie_key,
maand,
prio,
mld_melding_key,
mld_opdr_key,
opdr_id,
plaats, -- Gebouw
ruimte,
mld_stdmelding_oms,
opdrachttype,
omschrijving,
begindatum,
einddatum,
afronddatum,
meldingstatus,
opdrachtstatus,
afhandeling,
fclt_f_leverancier,
materiaal,
kosten,
mandaat,
dispuut,
facturabel,
fclt_f_contractnr,
fclt_f_inkoopordernr,
fclt_x_district,
behandelaar
)
AS
SELECT v.prs_afdeling_key,
l.alg_locatie_key,
v.maand,
TO_CHAR (m.mld_melding_spoed),
m.mld_melding_key,
o.mld_opdr_key,
COALESCE (sd.ins_srtdiscipline_prefix, '') || v.bro_id opdr_id,
og.alg_gebouw_naam || ' (' || og.alg_gebouw_code || ')' plaats,
DECODE (og.alg_type, 'R', og.alg_plaatsaanduiding, NULL) ruimte,
sm.mld_stdmelding_omschrijving,
ot.mld_typeopdr_omschrijving,
o.mld_opdr_omschrijving,
o.mld_opdr_datumbegin begindatum,
--TO_CHAR (o.mld_opdr_einddatum, 'dd-mm-yyyy') einddatum,
fac.gettrackingdate ('ORDAFM', o.mld_opdr_key) einddatum,
fac.gettrackingdate ('ORDAFR', o.mld_opdr_key) afronddatum,
ms.mld_statuses_omschrijving,
os.mld_statusopdr_omschrijving,
o.mld_opdr_opmerking,
v.prs_bedrijf_naam,
o.mld_opdr_materiaal,
o.mld_opdr_kosten,
(SELECT fac.safe_to_number(mld_kenmerkopdr_waarde)
FROM mld_kenmerkopdr ko, mld_kenmerk k
WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key AND ko.mld_opdr_key = o.mld_opdr_key AND k.mld_srtkenmerk_key = 3521) mandaat,
(SELECT fac.safe_to_number(mld_kenmerkopdr_waarde)
FROM mld_kenmerkopdr ko, mld_kenmerk k
WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key AND ko.mld_opdr_key = o.mld_opdr_key AND k.mld_srtkenmerk_key = 3881) dispuut,
(SELECT fac.safe_to_number(mld_kenmerkopdr_waarde)
FROM mld_kenmerkopdr ko, mld_kenmerk k
WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key AND ko.mld_opdr_key = o.mld_opdr_key AND k.mld_srtkenmerk_key = 5521) facturabel,
v.contractnr,
v.inkoopordernr,
d.alg_district_omschrijving,
pf.prs_perslid_naam_full behandelaar
FROM ykpn_v_frozen_fact v,
mld_opdr o,
mld_statusopdr os,
mld_typeopdr ot,
mld_melding m,
mld_statuses ms,
mld_stdmelding sm,
mld_discipline md,
ins_srtdiscipline sd,
alg_locatie l,
alg_district d,
alg_v_onroerendgoed_gegevens og,
prs_v_perslid_fullnames_all pf
WHERE v.mld_opdr_key = o.mld_opdr_key
AND o.mld_statusopdr_key = os.mld_statusopdr_key
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
AND o.mld_melding_key = m.mld_melding_key
AND m.mld_melding_status = ms.mld_statuses_key
AND m.mld_stdmelding_key = sm.mld_stdmelding_key
AND sm.mld_ins_discipline_key = md.ins_discipline_key
AND md.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
AND m.mld_alg_locatie_key = l.alg_locatie_key(+)
AND l.alg_district_key = d.alg_district_key(+)
AND m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys(+)
AND o.prs_perslid_key = pf.prs_perslid_key(+);
CREATE OR REPLACE PROCEDURE ykpn_select_fact (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
-- Bevries vaste contractkosten in eigen tabel.
CURSOR c1
IS
SELECT c.cnt_contract_nummer_intern,
c.cnt_contract_omschrijving,
c.cnt_contract_key,
cp.cnt_contract_plaats_key,
cp.cnt_contract_plaats_gewicht,
b.prs_bedrijf_key,
b.prs_bedrijf_naam,
g.alg_gebouw_key,
g.alg_gebouw_code,
v.maand,
v.ins_discipline_key
FROM ykpn_v_actual_fact v, cnt_contract_plaats cp, cnt_contract c, alg_gebouw g, prs_bedrijf b
WHERE v.cnt_contract_key = c.cnt_contract_key
AND v.cnt_contract_key = cp.cnt_contract_key
AND cp.cnt_alg_plaats_code = 'G'
AND cp.cnt_alg_plaats_key = g.alg_gebouw_key
AND c.cnt_prs_bedrijf_key = b.prs_bedrijf_key
AND v.bes_bestelopdr_key IS NULL AND v.res_rsv_ruimte_key IS NULL AND v.mld_opdr_key IS NULL
ORDER BY b.prs_bedrijf_key, c.cnt_contract_key;
-- Zet "variabele" MLD-opdrachten die voor de 1e zijn afgerond op AV.
-- Alleen op variabele contracten.
CURSOR c4
IS
SELECT DISTINCT '[' || TO_CHAR (v.mld_opdr_key) || '|' || v.bro_id || '] ' aanduiding,
v.maand, v.mld_opdr_key, v.ins_discipline_key
FROM ykpn_v_actual_fact v
WHERE v.mld_opdr_key IS NOT NULL
AND v.contractnr NOT LIKE '%/DISPUUT'
ORDER BY 3;
-- Zet "inclusief" opdrachten die voor de 1e zijn gesloten op AV.
-- Afgerond/kosten meerekenen op vaste contracten en geen dispuut
-- Afgemeld/kosten niet meerekenen, geen offerteaanvraag en geen dispuut
-- Afgerond/kosten niet meerekenen en geen dispuut (= geaccepteerde offerteaanvragen)
CURSOR c5
IS
SELECT DISTINCT '[' || TO_CHAR (o.mld_opdr_key) || '] ' aanduiding,
o.mld_opdr_key
FROM mld_opdr o, mld_typeopdr ot, cnt_contract c
WHERE o.mld_statusopdr_key = 9 -- KV
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
AND ot.mld_typeopdr_kosten = 1 -- Kosten meerekenen=Ja
AND o.cnt_contract_key = c.cnt_contract_key
AND c.ins_discipline_key = 41 -- Vaste contracten
-- AND NOT EXISTS -- Niet gemarkeerd als dispuut!
-- (SELECT 1
-- FROM mld_v_aanwezigkenmerkopdr ko, mld_kenmerk k
-- WHERE ko.mld_opdr_key = o.mld_opdr_key
-- AND ko.mld_kenmerk_key = k.mld_kenmerk_key
-- AND k.mld_srtkenmerk_key = 3881 -- Dispuut
-- AND ko.mld_kenmerkopdr_waarde = '1') -- Aangevinkt
AND EXISTS -- gemarkeerd als facturabel!
(SELECT 1
FROM mld_v_aanwezigkenmerkopdr ko, mld_kenmerk k
WHERE ko.mld_opdr_key = o.mld_opdr_key
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 5521 -- Facturabel
AND ko.mld_kenmerkopdr_waarde = '1') -- Aangevinkt
AND fac.gettrackingdate ('ORDAFR', o.mld_opdr_key) BETWEEN TO_DATE ('20190101', 'yyyymmdd') AND TRUNC (SYSDATE, 'mm')
UNION ALL
-- SELECT DISTINCT '[' || TO_CHAR (o.mld_opdr_key) || '] ' aanduiding,
-- o.mld_opdr_key
-- FROM mld_opdr o, mld_typeopdr ot
-- WHERE o.mld_statusopdr_key = 6 -- TV
-- AND o.mld_typeopdr_key = ot.mld_typeopdr_key
-- AND ot.mld_typeopdr_kosten = 0 -- Kosten meerekenen=Nee
-- AND ot.mld_typeopdr_key != 81 -- Offerteaanvraag
-- AND NOT EXISTS -- Niet gemarkeerd als dispuut!
-- (SELECT 1
-- FROM mld_v_aanwezigkenmerkopdr ko, mld_kenmerk k
-- WHERE ko.mld_opdr_key = o.mld_opdr_key
-- AND ko.mld_kenmerk_key = k.mld_kenmerk_key
-- AND k.mld_srtkenmerk_key = 3881 -- Dispuut
-- AND ko.mld_kenmerkopdr_waarde = '1') -- Aangevinkt
-- AND fac.gettrackingdate ('ORDAFM', o.mld_opdr_key) BETWEEN TO_DATE ('20190101', 'yyyymmdd') AND TRUNC (SYSDATE, 'mm')
-- UNION ALL
SELECT DISTINCT '[' || TO_CHAR (o.mld_opdr_key) || '] ' aanduiding,
o.mld_opdr_key
FROM mld_opdr o, mld_typeopdr ot
WHERE o.mld_statusopdr_key = 9 -- KV (ooit met kosten en Offerteaanvragen)
AND o.mld_typeopdr_key = ot.mld_typeopdr_key
AND ot.mld_typeopdr_kosten = 0 -- Kosten meerekenen=Nee
-- AND NOT EXISTS -- Niet gemarkeerd als dispuut!
-- (SELECT 1
-- FROM mld_v_aanwezigkenmerkopdr ko, mld_kenmerk k
-- WHERE ko.mld_opdr_key = o.mld_opdr_key
-- AND ko.mld_kenmerk_key = k.mld_kenmerk_key
-- AND k.mld_srtkenmerk_key = 3881 -- Dispuut
-- AND ko.mld_kenmerkopdr_waarde = '1') -- Aangevinkt
AND EXISTS -- gemarkeerd als facturabel!
(SELECT 1
FROM mld_v_aanwezigkenmerkopdr ko, mld_kenmerk k
WHERE ko.mld_opdr_key = o.mld_opdr_key
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 5521 -- Facturabel
AND ko.mld_kenmerkopdr_waarde = '1') -- Aangevinkt
AND (fac.gettrackingdate ('ORDAFR', o.mld_opdr_key) BETWEEN TO_DATE ('20190101', 'yyyymmdd') AND TRUNC (SYSDATE, 'mm')
OR fac.gettrackingdate ('ORDOOK', o.mld_opdr_key) BETWEEN TO_DATE ('20190101', 'yyyymmdd') AND TRUNC (SYSDATE, 'mm'))
ORDER BY 2;
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count NUMBER (10);
v_verkoopfactuurkop_key NUMBER (10);
v_prijs NUMBER (9, 2);
v_contract_key_prev NUMBER(10);
BEGIN
-- Op 10e dag van de maand (via scheduled task):
-- 1. Bevries vaste contractkosten in eigen tabel (incl. malus?).
-- 4. Zet "variabele" opdrachten die voor de 1e zijn afgerond op AV.
-- 5. Zet "inclusief" opdrachten die voor de 1e zijn gesloten op AV.
-- x. Doe niets met afgewezen/geannuleerde opdrachten?
v_count := 0;
v_contract_key_prev := -1;
FOR rec IN c1
LOOP
BEGIN
v_errormsg := 'Fout toevoegen vaste contractkosten';
IF v_contract_key_prev <> rec.cnt_contract_key
THEN
dbms_output.put_line ('Contract ' || rec.cnt_contract_nummer_intern || ' - ' || rec.maand);
INSERT INTO fin_verkoopfactuurkop (fin_verkoopfactuurkop_id)
VALUES ('Contract ' || rec.cnt_contract_nummer_intern || ' - ' || rec.maand)
RETURNING fin_verkoopfactuurkop_key INTO v_verkoopfactuurkop_key;
v_count := v_count + 1;
v_contract_key_prev := rec.cnt_contract_key;
END IF;
INSERT INTO fin_verkoopfactuur (fin_verkoopfactuurkop_key,
fin_verkoopfactuur_id, -- contractnr en maand
fin_verkoopfactuur_datum, -- aanmaakdatum
fin_verkoopfactuur_omschr, -- nummer en omschrijving
fin_verkoopfactuur_xmlnode, -- contract
fin_verkoopfactuur_refkey, -- contract key
fin_verkoopfactuur_bedrag, -- scope bedrag
prs_bedrijf_key, -- bedrijf key
prs_debiteur_naam, -- bedrijf naam
fin_verkoopfactuur_n1, -- nvt
fin_verkoopfactuur_n2, -- nvt
fin_verkoopfactuur_n3, -- alg_gebouw_key
fin_verkoopfactuur_n4, -- contract-plaats-key
fin_verkoopfactuur_c1, -- nvt
fin_verkoopfactuur_c2, -- nvt
fin_verkoopfactuur_d1, -- nvt
fin_verkoopfactuur_c3) -- nvt
VALUES (v_verkoopfactuurkop_key,
rec.cnt_contract_nummer_intern || '-' || rec.alg_gebouw_code || '-' || rec.maand,
SYSDATE,
rec.cnt_contract_nummer_intern || '-' || rec.cnt_contract_omschrijving || '-' || rec.maand,
'contract',
rec.cnt_contract_key,
rec.cnt_contract_plaats_gewicht/12,
rec.prs_bedrijf_key,
rec.prs_bedrijf_naam,
rec.ins_discipline_key,
NULL,
rec.alg_gebouw_key,
rec.cnt_contract_plaats_key,
NULL,
NULL,
NULL,
rec.maand);
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog (p_applname, 'W', rec.cnt_contract_nummer_intern || '-' || rec.cnt_contract_omschrijving || '-' || rec.maand || v_errormsg, 'FACT-CAV');
COMMIT;
END;
END LOOP;
fac.writelog (p_applname, 'S', '#Vaste contractkosten bevroren: ' || TO_CHAR (v_count), '');
COMMIT;
v_count := 0;
FOR rec IN c4
LOOP
BEGIN
v_errormsg := 'Fout bijwerken ordernummer (MLD).';
UPDATE mld_opdr
SET mld_opdr_ordernr = rec.maand
WHERE mld_opdr_key = rec.mld_opdr_key;
v_errormsg := 'Fout bijwerken status (MLD).';
MLD.setopdrachtstatus (rec.mld_opdr_key, 7, 3);
v_count := v_count + 1;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog (p_applname, 'W', rec.aanduiding || v_errormsg, 'FACT-OAV1');
COMMIT;
END;
END LOOP;
fac.writelog (p_applname, 'S', '#Variabele opdrachten bevroren: ' || TO_CHAR (v_count), '');
COMMIT;
v_count := 0;
FOR rec IN c5
LOOP
BEGIN
v_errormsg := 'Fout bijwerken status (inclusief opdrachten).';
MLD.setopdrachtstatus (rec.mld_opdr_key, 7, 3);
v_count := v_count + 1;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog (p_applname, 'W', rec.aanduiding || v_errormsg, 'FACT-OAV2');
COMMIT;
END;
END LOOP;
fac.writelog (p_applname, 'S', '#Inclusief opdrachten bevroren: ' || TO_CHAR (v_count), '');
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog (p_applname, 'E', v_errormsg, 'Proces FACT_EXPORT afgebroken!');
COMMIT;
END;
/
CREATE OR REPLACE VIEW ykpn_v_mldopdr_retail_53w
(
melding_key,
melding_locatiecode,
melding_locatie,
soortmelding,
productgroep,
subproductgroep,
behandelaar,
melding_datum,
vomschrijving,
opdracht_status,
opdracht_datum,
opdracht_einddatum,
opdracht_afgemeld,
opdracht_doorlooptijd,
opdracht_uitvoerende,
verschil
)
AS
SELECT
m.melding_key,
m.melding_locatiecode,
m.melding_locatie,
m.soortmelding,
m.productgroep,
m.subproductgroep,
m.behandelaar,
m.melding_datum,
TO_CHAR(SUBSTR(REPLACE(REPLACE(REPLACE(m.vomschrijving,';','-'),CHR(10),''), CHR(13),''),0,200)),
o.opdracht_status,
o.opdracht_datum,
o.opdracht_einddatum,
o.opdracht_afgemeld,
o.opdracht_doorlooptijd,
o.opdracht_uitvoerende,
DECODE(SIGN(o.opdracht_afgemeld - o.opdracht_einddatum), -1, 'Op tijd', 'Te laat') verschil
FROM mld_v_udr_melding m, mld_v_udr_opdracht o
WHERE m.melding_key = o.melding_key(+);
--AND m.melding_datum >= SYSDATE-53*7;
CREATE OR REPLACE VIEW YKPN_V_EXPORT_RETAIL_OPD_RAP
(
result, result_order
)
AS
SELECT 'Verschil;Melding;Winkelcode;Winkel;Vakgroep;StdMelding;Omschrijving;Opdracht Datum;Opdracht Einddatum;Opdracht Afgemeld;Opdracht Doorlooptijd;Opdracht Uitvoerende',0
FROM dual
UNION ALL
SELECT verschil||';'||
melding_key||';'||
melding_locatiecode||';'||
melding_locatie||';'||
productgroep||';'||
subproductgroep||';'||
vomschrijving||';'||
opdracht_datum||';'||
opdracht_einddatum||';'||
opdracht_afgemeld||';'||
opdracht_doorlooptijd||';'||
opdracht_uitvoerende,
1
FROM ykpn_v_mldopdr_retail_53w
WHERE melding_datum >= SYSDATE-53*7;
CREATE OR REPLACE VIEW YKPN_V_EXPORT_RETAIL_OPD_RP2J
(
result, result_order
)
AS
SELECT 'Verschil;Melding;Winkelcode;Winkel;Vakgroep;StdMelding;Omschrijving;Opdracht Datum;Opdracht Einddatum;Opdracht Afgemeld;Opdracht Doorlooptijd;Opdracht Uitvoerende',0
FROM dual
UNION ALL
SELECT verschil||';'||
melding_key||';'||
melding_locatiecode||';'||
melding_locatie||';'||
productgroep||';'||
subproductgroep||';'||
vomschrijving||';'||
opdracht_datum||';'||
opdracht_einddatum||';'||
opdracht_afgemeld||';'||
opdracht_doorlooptijd||';'||
opdracht_uitvoerende,
1
FROM ykpn_v_mldopdr_retail_53w
WHERE melding_datum >= SYSDATE-106*7
AND melding_datum < SYSDATE-53*7;
CREATE OR REPLACE VIEW ykpn_v_mld_retail_rol53w
(
melding_key,
meldingnummer,
melding_start_key,
externnummer,
melding_regio,
melding_district,
melding_locatiecode,
melding_locatie,
melding_locatieplaats,
fclt_3d_locatie_key,
melding_gebouwcode,
melding_gebouw,
melding_verdieping,
melding_ruimtenr,
melding_ruimte,
melding_ordernr,
kostensoortgroep,
kostensoort,
kostenplaats,
kostenplaats_oms,
melder,
melder_key,
melder_email,
afdeling,
afdeling_omschrijving,
fclt_3d_afdeling_key,
divisie,
divisie_omschrijving,
fclt_3d_divisie_key,
bedrijf_key,
invoerder,
meldbron,
soortmelding,
fclt_3d_discipline_key,
productgroep,
subproductgroep,
behandelgroep,
behandelaar,
behandelaar_key,
subproductgroepgroep,
fclt_3d_discipline2_key,
actieve_behandelgroep,
actieve_behandelaar_key,
actieve_behandelaar,
melding_status,
sla_nvt,
sla_werkdgn,
sla_werkuren,
sla_respijtdgn,
sla_respijturen,
sla_accptdgn,
sla_accpturen,
plan_uitvoertijd_sla,
melding_datum,
melding_einddatum,
melding_einddatum_std,
melding_acceptdatum,
melding_afgemeld,
melding_accepted,
doorlooptijd_werkdgn,
doorlooptijd_werkuren,
onderwerp,
vomschrijving,
melding_opmerking,
prioriteit,
prioriteittxt,
rating,
rating_opmerking,
bolletje,
actiecode,
accept_sla_dagen,
accept_sla_uren,
uitvoering_sla_dagen,
uitvoering_sla_uren,
afspraak_sla_dagen,
afspraak_sla_uren,
accept_sla_optijd,
uitvoering_sla_optijd,
afspraak_sla_optijd,
selfservice,
melding_spoed
)
AS
SELECT mld_melding_key,
meldingnummer,
mld_melding_start_key,
mld_melding_externnr,
alg_regio_omschrijving,
alg_district_omschrijving,
locatie,
locatie_omschrijving,
locatie_plaats,
alg_locatie_key,
gebouw,
gebouw_naam,
verdieping,
ruimte,
ruimte_omschrijving,
melding_ordernr,
kostensoortgroep,
kostensoort,
kostenplaats,
kostenplaats_oms,
melder,
prs_perslid_key,
prs_perslid_email,
afdeling,
afdeling_omschrijving,
afdeling_key,
divisie,
divisie_omschrijving,
divisie_key,
prs_bedrijf_key,
invoerder,
meldbron,
soortmelding,
stdm_ins_discipline_key,
productgroep,
subproductgroep,
behandelgroep,
behandelaar,
behandelaar_key,
subproductgroepgroep,
mld_ins_discipline_key,
actieve_behandelgroep,
actieve_behandelaar_key,
actieve_behandelaar,
status,
sla_nvt,
sla_werkdgn,
sla_werkuren,
sla_respijtdgn,
sla_respijturen,
sla_accptdgn,
sla_accpturen,
plan_uitvoertijd_sla,
datum,
einddatum,
einddatum_std,
acceptdatum,
afgemeld,
accepted,
DECODE (x.t_doorlooptijd.eenheid, 'D', x.t_doorlooptijd.tijdsduur, NULL)
doorlooptijd_werkdgn,
DECODE (x.t_doorlooptijd.eenheid, 'U', x.t_doorlooptijd.tijdsduur, NULL)
doorlooptijd_werkuren,
onderwerp,
SUBSTR(omschrijving,1,200),
opmerking,
mld_melding_spoed prioriteit,
DECODE(mld_melding_spoed,3,lcl.l('lcl_mld_urg_normaal'),1,lcl.l('lcl_mld_urg_kritiek'),2,lcl.l('lcl_mld_urg_hoog'),4,lcl.l('lcl_mld_urg_laag')),
mld_melding_satisfaction,
mld_melding_satisfaction_op,
mld_melding_flag,
mld_melding_actiecode,
DECODE (x.t_doorlooptijd.eenheid, 'D', acceptdatum - COALESCE (accepted, afgemeld), NULL)
accept_sla_dagen,
CAST (
DECODE (x.t_doorlooptijd.eenheid,
'U', (acceptdatum - COALESCE (accepted, afgemeld)) * 24,
NULL)
AS NUMBER(7,2)
)
accept_sla_uren,
DECODE (
x.t_doorlooptijd.eenheid,
'D',
mld.geteinddatum (mld_melding_key)
- COALESCE (afgemeld, SYSDATE)
+ COALESCE (sla_respijtdgn, 0),
NULL)
uitvoering_sla_dagen,
CAST (
DECODE (
x.t_doorlooptijd.eenheid,
'U',
( (mld.geteinddatum (mld_melding_key) - COALESCE (afgemeld, SYSDATE)) * 24)
+ COALESCE (sla_respijturen, 0),
NULL)
AS NUMBER(7,2)
)
uitvoering_sla_uren,
DECODE (x.t_doorlooptijd.eenheid,
'D', einddatum - COALESCE (afgemeld, SYSDATE) + COALESCE (sla_respijtdgn, 0),
NULL)
afspraak_sla_dagen,
CAST (
DECODE (
x.t_doorlooptijd.eenheid,
'U',
( (einddatum - COALESCE (afgemeld, SYSDATE)) * 24) + COALESCE (sla_respijtdgn, 0),
NULL)
AS NUMBER(7,2)
)
afspraak_sla_uren,
CASE
WHEN acceptdatum IS NULL
OR -- Dan is er geen acceptatietijd gedefinieerd en dus altijd op tijd.
DECODE (x.t_doorlooptijd.eenheid,
'D', acceptdatum - COALESCE (accepted, afgemeld),
0)
+ DECODE (x.t_doorlooptijd.eenheid,
'U', (acceptdatum - COALESCE (accepted, afgemeld)) * 24,
0) >= 0
THEN
lcl.l ('lcl_yes')
ELSE
lcl.l ('lcl_no')
END
accept_sla_optijd,
CASE
WHEN DECODE (
x.t_doorlooptijd.eenheid,
'D',
mld.geteinddatum (mld_melding_key)
- COALESCE (afgemeld, SYSDATE)
+ COALESCE (sla_respijtdgn, 0),
0)
+ DECODE (
x.t_doorlooptijd.eenheid,
'U',
( (mld.geteinddatum(mld_melding_key) - COALESCE (afgemeld, SYSDATE)) * 24)
+ COALESCE (sla_respijturen, 0),
0) >= 0
THEN
lcl.l ('lcl_yes')
ELSE
lcl.l ('lcl_no')
END
uitvoering_sla_optijd,
CASE
WHEN DECODE (x.t_doorlooptijd.eenheid,
'D',
einddatum - COALESCE (afgemeld, SYSDATE) + COALESCE (sla_respijtdgn, 0),
0)
+ DECODE (
x.t_doorlooptijd.eenheid,
'U',
( (einddatum - COALESCE (afgemeld, SYSDATE)) * 24)
+ COALESCE (sla_respijtdgn, 0),
0) >= 0
THEN
lcl.l ('lcl_yes')
ELSE
lcl.l ('lcl_no')
END
afspraak_sla_optijd,
DECODE(invoerder, melder, lcl.l ('lcl_yes'), lcl.l ('lcl_no')) selfservice,
DECODE(mld_melding_spoed,1,'Kritiek',2,'Hoog',3,'Normaal',4,'Laag', 'Onbekend')
FROM (SELECT m.mld_melding_key,
m.mld_melding_start_key,
m.mld_melding_externnr,
m.prs_perslid_key,
mab.prs_perslid_email,
sd.ins_srtdiscipline_prefix || m.mld_melding_key meldingnummer,
alg_regio_omschrijving,
alg_district_omschrijving,
alg_locatie_code locatie,
alg_locatie_omschrijving locatie_omschrijving,
alg_locatie_plaats locatie_plaats,
l.alg_locatie_key,
og.alg_gebouw_code gebouw,
og.alg_gebouw_naam gebouw_naam,
og.alg_verdieping_code verdieping,
og.alg_ruimte_nr ruimte,
og.alg_ruimte_omschrijving ruimte_omschrijving,
m.mld_melding_ordernr melding_ordernr,
(SELECT ksg.prs_kostensoortgrp_oms
FROM prs_kostensoortgrp ksg, prs_kostensoort ks
WHERE ksg.prs_kostensoortgrp_key = ks.prs_kostensoortgrp_key
AND ks.prs_kostensoort_key =
(SELECT COALESCE (sm.prs_kostensoort_key, disc.prs_kostensoort_key)
FROM mld_stdmelding sm, mld_discipline disc
WHERE sm.mld_ins_discipline_key = disc.ins_discipline_key
AND sm.mld_stdmelding_key = s.mld_stdmelding_key))
kostensoortgroep,
(SELECT ks.prs_kostensoort_oms
FROM prs_kostensoort ks
WHERE ks.prs_kostensoort_key =
(SELECT COALESCE (sm.prs_kostensoort_key, disc.prs_kostensoort_key)
FROM mld_stdmelding sm, mld_discipline disc
WHERE sm.mld_ins_discipline_key = disc.ins_discipline_key
AND sm.mld_stdmelding_key = s.mld_stdmelding_key))
kostensoort,
(SELECT k.prs_kostenplaats_nr
FROM prs_kostenplaats k
WHERE k.prs_kostenplaats_key = m.prs_kostenplaats_key)
kostenplaats,
(SELECT k.prs_kostenplaats_omschrijving
FROM prs_kostenplaats k
WHERE k.prs_kostenplaats_key = m.prs_kostenplaats_key)
kostenplaats_oms,
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key = m.prs_perslid_key)
melder,
mab.afdeling_naam afdeling,
mab.afdeling_omschrijving afdeling_omschrijving,
mab.prs_afdeling_key afdeling_key,
mab.divisie_naam divisie,
mab.divisie_omschrijving,
mab.prs_afdeling_key1 divisie_key,
mab.prs_bedrijf_key,
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key = mld.getmeldinguser (m.mld_melding_key))
invoerder,
(SELECT mb.mld_meldbron_omschrijving
FROM mld_meldbron mb
WHERE mb.mld_meldbron_key = m.mld_meldbron_key)
meldbron,
m.mld_meldbron_key,
sd.ins_srtdiscipline_key ins_srtdiscipline_key,
sd.ins_srtdiscipline_omschrijving soortmelding,
md.ins_discipline_key stdm_ins_discipline_key,
md.ins_discipline_omschrijving productgroep,
s.mld_stdmelding_omschrijving subproductgroep,
smg.mld_stdmeldinggroep_naam subproductgroepgroep,
mbg.mld_behandelgroep_naam behandelgroep,
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key = m.mld_melding_behandelaar_key)
behandelaar,
m.mld_melding_behandelaar_key behandelaar_key,
m.mld_ins_discipline_key mld_ins_discipline_key,
(SELECT md2.ins_discipline_omschrijving
FROM mld_discipline md2
WHERE md2.ins_discipline_key = m.mld_ins_discipline_key) actieve_behandelgroep,
m.mld_melding_behandelaar2_key actieve_behandelaar_key,
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key = m.mld_melding_behandelaar2_key)
actieve_behandelaar,
(SELECT mld_statuses_omschrijving
FROM mld_statuses sta
WHERE sta.mld_statuses_key = m.mld_melding_status)
status,
CASE
WHEN m.mld_melding_einddatum >
COALESCE (fac.gettrackingdate ('MLDAFM', m.mld_melding_key),
fac.gettrackingdate ('MLDREJ', m.mld_melding_key),
SYSDATE)
THEN
1
ELSE
0
END
plan_uitvoertijd_sla,
CASE
WHEN m.mld_melding_indult = 1 OR s.mld_stdmelding_slabewaken = 0 THEN 1
ELSE 0
END
sla_nvt,
DECODE (m.mld_melding_t_uitvoertijd.eenheid,
'D', m.mld_melding_t_uitvoertijd.tijdsduur,
NULL)
sla_werkdgn,
DECODE (m.mld_melding_t_uitvoertijd.eenheid,
'U', m.mld_melding_t_uitvoertijd.tijdsduur,
NULL)
sla_werkuren,
DECODE (m.mld_melding_t_respijt.eenheid,
'D', m.mld_melding_t_respijt.tijdsduur,
NULL)
sla_respijtdgn,
DECODE (m.mld_melding_t_respijt.eenheid,
'U', m.mld_melding_t_respijt.tijdsduur,
NULL)
sla_respijturen,
DECODE (m.mld_melding_t_accepttijd.eenheid,
'D', m.mld_melding_t_accepttijd.tijdsduur,
NULL)
sla_accptdgn,
DECODE (m.mld_melding_t_accepttijd.eenheid,
'U', m.mld_melding_t_accepttijd.tijdsduur,
NULL)
sla_accpturen,
m.mld_melding_datum datum,
CASE WHEN s.mld_stdmelding_planbaar = 2
THEN TO_DATE(NULL)
ELSE m.mld_melding_einddatum
END einddatum,
mld_melding_einddatum_std einddatum_std,
mld_melding_acceptdatum_std acceptdatum,
COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5),
mld.getmeldingstatusdate (m.mld_melding_key, 1))
afgemeld,
COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 4),
mld.getmeldingstatusdate (m.mld_melding_key, 1))
accepted,
mld.getactualuitvoer (m.mld_melding_key) t_doorlooptijd,
m.mld_melding_onderwerp onderwerp,
m.mld_melding_omschrijving omschrijving,
m.mld_melding_opmerking opmerking,
m.mld_melding_spoed,
m.mld_melding_satisfaction,
m.mld_melding_satisfaction_op,
m.mld_melding_flag,
mld_melding_actiecode
FROM mld_melding m,
mld_stdmelding s,
alg_locatie l,
alg_district d,
alg_regio r,
alg_v_allonrgoed_gegevens og,
mld_discipline md,
mld_disc_params mdp,
mld_behandelgroep mbg,
ins_srtdiscipline sd,
mld_stdmeldinggroep smg,
(SELECT mx.mld_melding_key
, div.prs_bedrijf_key
, ab.prs_afdeling_key1
, div.prs_afdeling_naam divisie_naam
, div.prs_afdeling_omschrijving divisie_omschrijving
, ab.prs_afdeling_key
, afd.prs_afdeling_naam afdeling_naam
, afd.prs_afdeling_omschrijving afdeling_omschrijving
, px.prs_perslid_key
, px.prs_perslid_email
FROM mld_melding mx
, prs_perslid px
, prs_v_afdeling_boom ab
, prs_afdeling afd
, prs_afdeling div
WHERE px.prs_perslid_key = mx.prs_perslid_key
AND ab.prs_afdeling_key = coalesce(mx.prs_afdeling_key, px.prs_afdeling_key)
AND ab.prs_afdeling_key = afd.prs_afdeling_key
AND ab.prs_afdeling_key1 = div.prs_afdeling_key
) mab
WHERE s.mld_stdmelding_key = m.mld_stdmelding_key
AND m.mld_alg_locatie_key = l.alg_locatie_key(+)
AND sd.ins_srtdiscipline_key = md.ins_srtdiscipline_key
AND sd.ins_srtdiscipline_key=41
AND md.ins_discipline_key = s.mld_ins_discipline_key
AND md.ins_discipline_key = mdp.mld_ins_discipline_key
AND s.mld_stdmeldinggroep_key = smg.mld_stdmeldinggroep_key(+)
AND mdp.mld_behandelgroep_key = mbg.mld_behandelgroep_key(+)
AND l.alg_district_key = d.alg_district_key(+)
AND d.alg_regio_key = r.alg_regio_key(+)
AND m.mld_melding_key = mab.mld_melding_key
AND m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys(+)
AND m.fac_activiteit_key IS NULL) x;
--AND m.mld_melding_datum >= SYSDATE-53*7) x;
CREATE OR REPLACE VIEW YKPN_V_EXPORT_RETAIL_RAPPORT
(
result, result_order
)
AS
SELECT 'melding_key;meldingnummer;melding_start_key;externnummer;melding_regio;melding_district;melding_locatiecode;melding_locatie;melding_locatieplaats;melder;melder_key;afdeling;afdeling_omschrijving;fclt_3d_afdeling_key; bedrijf_key;invoerder;meldbron;soortmelding;fclt_3d_discipline_key;productgroep;subproductgroep;behandelgroep;behandelaar;behandelaar_key;fclt_3d_discipline2_key;actieve_behandelgroep;actieve_behandelaar_key;actieve_behandelaar;melding_status;sla_nvt;sla_werkdgn;sla_accptdgn;sla_accpturen;plan_uitvoertijd_sla;melding_datum;melding_einddatum;melding_einddatum_std;melding_acceptdatum;melding_afgemeld;melding_accepted;doorlooptijd_werkdgn;onderwerp;rating;rating_opmerking;bolletje;actiecode;accept_sla_dagen;uitvoering_sla_dagen;afspraak_sla_dagen;accept_sla_optijd;uitvoering_sla_optijd;afspraak_sla_optijd;selfservice;prioriteit',0
FROM dual
UNION ALL
SELECT melding_key||';'||
meldingnummer||';'||
melding_start_key||';'||
externnummer||';'||
melding_regio||';'||
melding_district||';'||
melding_locatiecode||';'||
melding_locatie||';'||
melding_locatieplaats||';'||
melder||';'||
melder_key||';'||
afdeling||';'||
afdeling_omschrijving||';'||
fclt_3d_afdeling_key||';'||
bedrijf_key||';'||
invoerder||';'||
meldbron||';'||
soortmelding||';'||
fclt_3d_discipline_key||';'||
productgroep||';'||
subproductgroep||';'||
behandelgroep||';'||
behandelaar||';'||
behandelaar_key||';'||
fclt_3d_discipline2_key||';'||
actieve_behandelgroep||';'||
actieve_behandelaar_key||';'||
actieve_behandelaar||';'||
melding_status||';'||
sla_nvt||';'||
sla_werkdgn||';'||
sla_accptdgn||';'||
sla_accpturen||';'||
plan_uitvoertijd_sla||';'||
melding_datum||';'||
melding_einddatum||';'||
melding_einddatum_std||';'||
melding_acceptdatum||';'||
melding_afgemeld||';'||
melding_accepted||';'||
TO_CHAR(doorlooptijd_werkdgn,'999.99')||';'||
onderwerp||';'||
rating||';'||
rating_opmerking||';'||
bolletje||';'||
actiecode||';'||
TO_CHAR(accept_sla_dagen,'999.99')||';'||
TO_CHAR(uitvoering_sla_dagen,'999.99')||';'||
TO_CHAR(afspraak_sla_dagen,'999.99')||';'||
accept_sla_optijd||';'||
uitvoering_sla_optijd||';'||
afspraak_sla_optijd||';'||
selfservice||';'||
melding_spoed,
1
FROM ykpn_v_mld_retail_rol53w
WHERE melding_datum >= SYSDATE-53*7;
CREATE OR REPLACE VIEW YKPN_V_EXPORT_RETAIL_RAPPORT2J
(
result, result_order
)
AS
SELECT 'melding_key;meldingnummer;melding_start_key;externnummer;melding_regio;melding_district;melding_locatiecode;melding_locatie;melding_locatieplaats;melder;melder_key;afdeling;afdeling_omschrijving;fclt_3d_afdeling_key; bedrijf_key;invoerder;meldbron;soortmelding;fclt_3d_discipline_key;productgroep;subproductgroep;behandelgroep;behandelaar;behandelaar_key;fclt_3d_discipline2_key;actieve_behandelgroep;actieve_behandelaar_key;actieve_behandelaar;melding_status;sla_nvt;sla_werkdgn;sla_accptdgn;sla_accpturen;plan_uitvoertijd_sla;melding_datum;melding_einddatum;melding_einddatum_std;melding_acceptdatum;melding_afgemeld;melding_accepted;doorlooptijd_werkdgn;onderwerp;rating;rating_opmerking;bolletje;actiecode;accept_sla_dagen;uitvoering_sla_dagen;afspraak_sla_dagen;accept_sla_optijd;uitvoering_sla_optijd;afspraak_sla_optijd;selfservice;prioriteit',0
FROM dual
UNION ALL
SELECT melding_key||';'||
meldingnummer||';'||
melding_start_key||';'||
externnummer||';'||
melding_regio||';'||
melding_district||';'||
melding_locatiecode||';'||
melding_locatie||';'||
melding_locatieplaats||';'||
melder||';'||
melder_key||';'||
afdeling||';'||
afdeling_omschrijving||';'||
fclt_3d_afdeling_key||';'||
bedrijf_key||';'||
invoerder||';'||
meldbron||';'||
soortmelding||';'||
fclt_3d_discipline_key||';'||
productgroep||';'||
subproductgroep||';'||
behandelgroep||';'||
behandelaar||';'||
behandelaar_key||';'||
fclt_3d_discipline2_key||';'||
actieve_behandelgroep||';'||
actieve_behandelaar_key||';'||
actieve_behandelaar||';'||
melding_status||';'||
sla_nvt||';'||
sla_werkdgn||';'||
sla_accptdgn||';'||
sla_accpturen||';'||
plan_uitvoertijd_sla||';'||
melding_datum||';'||
melding_einddatum||';'||
melding_einddatum_std||';'||
melding_acceptdatum||';'||
melding_afgemeld||';'||
melding_accepted||';'||
TO_CHAR(doorlooptijd_werkdgn,'999.99')||';'||
onderwerp||';'||
rating||';'||
rating_opmerking||';'||
bolletje||';'||
actiecode||';'||
TO_CHAR(accept_sla_dagen,'999.99')||';'||
TO_CHAR(uitvoering_sla_dagen,'999.99')||';'||
TO_CHAR(afspraak_sla_dagen,'999.99')||';'||
accept_sla_optijd||';'||
uitvoering_sla_optijd||';'||
afspraak_sla_optijd||';'||
selfservice||';'||
melding_spoed,
1
FROM ykpn_v_mld_retail_rol53w
WHERE melding_datum >= SYSDATE-106*7
AND melding_datum < SYSDATE-53*7;
CREATE OR REPLACE VIEW ykpn_v_noti_retail_manrap
(
code,
sender,
receiver,
text,
key,
xkey
)
AS
SELECT DISTINCT sn.fac_srtnotificatie_code,
NULL,
gg.prs_perslid_key, -- Yask-contactpersonen
'Retail managment rapportage rollend 53 weken',
r.fac_usrrap_key,
NULL
FROM ykpn_v_frozen_fact v,
fac_gebruikersgroep gg,
fac_usrrap r,
fac_srtnotificatie sn
WHERE TO_CHAR (SYSDATE, 'd') = '2' -- Elke maandag
AND gg.fac_groep_key = 3401 -- RetailManagament groep die dit rapport moet ontvangen
AND UPPER (r.fac_usrrap_omschrijving) = UPPER('BEHEER: Retail management rapportage melding')
AND sn.fac_srtnotificatie_code = 'CUST22';
CREATE OR REPLACE VIEW ykpn_v_rev_billing
AS
SELECT maand,
prs_bedrijf_naam,
contractnr,
beschrijving,
mo.mld_melding_key meldingnr,
mo.mld_opdr_bedrijfopdr_volgnr volgnr,
kosten
FROM ykpn_v_frozen_fact v,
mld_opdr mo
WHERE v.mld_opdr_key = mo.mld_opdr_key(+);
CREATE OR REPLACE VIEW ykpn_v_noti_revBilling
(
code,
sender,
receiver,
text,
key,
xkey,
xemail,
xmobile
)
AS
SELECT DISTINCT sn.fac_srtnotificatie_code,
NULL sender,
NULL receiver,
REPLACE (REPLACE (sn.fac_srtnotificatie_oms, '##LEV##', v.prs_bedrijf_naam), '##MND##', v.maand) text,
r.fac_usrrap_key key,
v.extra_key xkey,
'Shahla.Eleveld@vebego.nl;Soukaina.ElMaadori@vebego.nl;omar.murselovic@vebego.nl' xemail,
NULL mobile
FROM ykpn_v_frozen_fact v,
fac_usrrap r,
fac_srtnotificatie sn
WHERE TO_CHAR (SYSDATE, 'dd') = '11' -- Op de ochtend na 10e van de maand!
AND v.maand = TO_CHAR(ADD_MONTHS(SYSDATE, -1), 'yyyy-mm')
AND v.cnt_contract_key NOT IN (SELECT kc.cnt_contract_key
FROM cnt_kenmerkcontract kc
WHERE kc.cnt_contract_key = v.cnt_contract_key
AND kc.cnt_kenmerk_key=(SELECT DECODE(c.ins_discipline_key, 421,162, 461, 161, 2221, 221) -- vast=421(kenm key=162),var=461(kenm key=161),suppletie=2221(kenm key=221)
FROM cnt_contract c
WHERE cnt_contract_key = v.cnt_contract_key))
AND UPPER (r.fac_usrrap_omschrijving) = UPPER('BEHEER: Hidden rapportage tbv. rev billing notificatie')
AND sn.fac_srtnotificatie_code = CASE
WHEN UPPER(v.prs_bedrijf_naam) like 'VEBEGO CLEANING%' -- eigen notificatie voor Hago omdat anders Putorder de emails niet verstuurd.
THEN 'CUST17'
ELSE 'CUST16'
END
ORDER BY v.extra_key;
-- Geef alle facturen van de vorige maand terug
CREATE OR REPLACE VIEW ykpn_v_rev_bill_vrgmnd
AS
SELECT v.maand, v.contractnr, v.prs_bedrijf_naam bedrijf, v.extra_key extra_key, v.beschrijving, SUM(v.kosten) AS totaal
FROM ykpn_v_frozen_fact v
WHERE v.maand=TO_CHAR(ADD_MONTHS(SYSDATE, -1), 'yyyy-mm')
GROUP BY v.contractNr, v.maand, v.beschrijving,v.prs_bedrijf_naam, v.extra_key
ORDER BY v.maand, v.extra_key;
CREATE OR REPLACE VIEW ykpn_v_noti_te_factureren
(
code,
sender,
receiver,
text,
key,
xkey
)
AS
WITH cp
AS (SELECT cp1.prs_bedrijf_key, p1.prs_perslid_key
FROM prs_v_aanwezigkenmerklink kl1, prs_contactpersoon cp1, prs_v_aanwezigperslid p1
WHERE kl1.prs_kenmerk_key = 1180 -- Contactpersoon factuurnotificatie!
AND kl1.prs_link_key = cp1.prs_contactpersoon_key
AND cp1.prs_contactpersoon_verwijder IS NULL
AND cp1.prs_perslid_key = p1.prs_perslid_key)
SELECT DISTINCT sn.fac_srtnotificatie_code,
NULL,
--cp.prs_perslid_key, -- Leverancier-contactpersonen (met noti-vinkje)
49563, -- Gerlinda 49563
REPLACE (REPLACE (sn.fac_srtnotificatie_oms, '##LEV##', v.prs_bedrijf_naam), '##MND##', v.maand),
r.fac_usrrap_key,
v.extra_key
FROM ykpn_v_frozen_fact v,
cp cp,
fac_usrrap r,
fac_srtnotificatie sn
WHERE TO_CHAR (SYSDATE, 'dd') = '11' -- Op de ochtend na 10e van de maand!
AND v.maand = TO_CHAR (TRUNC (SYSDATE, 'mm') - 1, 'yyyy-mm')
AND v.extra_key = cp.prs_bedrijf_key
AND UPPER (r.fac_usrrap_omschrijving) = UPPER('BEHEER: Hidden rapportage tbv. factuurnotificatie')
AND sn.fac_srtnotificatie_code = 'CUST16'
UNION ALL
SELECT DISTINCT sn.fac_srtnotificatie_code,
NULL,
gg.prs_perslid_key, -- Yask-contactpersonen
REPLACE (sn.fac_srtnotificatie_oms, '##MND##', v.maand),
r.fac_usrrap_key,
NULL -- geen extra key(complete rapportage)
FROM ykpn_v_frozen_fact v,
fac_gebruikersgroep gg,
fac_usrrap r,
fac_srtnotificatie sn
WHERE TO_CHAR (SYSDATE, 'dd') = '11' -- Op de ochtend na 10e van de maand!
AND v.maand = TO_CHAR (TRUNC (SYSDATE, 'mm') - 1, 'yyyy-mm')
AND gg.fac_groep_key = 3161 -- Yask Rev Bil Fact Noti=3161 was voorheen YASK YASK applicatie beheer=32
AND UPPER (r.fac_usrrap_omschrijving) = UPPER('BEHEER: Hidden rapportage tbv. factuurnotificatie')
AND sn.fac_srtnotificatie_code = 'CUST17';
CREATE OR REPLACE VIEW ykpn_v_rap_fact_imp_cnt_mld
AS
SELECT null leveranciersnr,
'<invullen>' factuurnr,
'<invullen>' factuurdatum,
DECODE (bro_id, NULL, 'C' || contractnr,
'M' || bro_id) ordernr,
null locatie,
null afleverdatum,
DECODE (bro_id, NULL, 'Vaste kosten ' || maand,
'Variabele kosten ' || maand) omschrijving,
null aantal,
kosten kostprijs,
null btwbedrag,
DECODE(b.fin_btwtabelwaarde_perc, NULL, '21', to_char(fin_btwtabelwaarde_perc)) btw,
null docid,
'<invullen>' debiteurnr,
null opmerking,
DECODE(b.fin_btwtabelwaarde_verlegd, 1, 'Ja', NULL) BTW_verlegd,
(SELECT alg_gebouw_omschrijving FROM ykpn_v_fin_gebouw g WHERE g.alg_gebouw_key = f.alg_gebouw_key) kenmerk1,
null kenmerk2,
null kenmerk3,
null kenmerk4,
null kenmerk5,
maand boekmaand,
-- projectcode,
prs_bedrijf_naam,
maand
FROM ykpn_v_frozen_fact f,
(SELECT fin_btwtabelwaarde_perc, fin_btwtabelwaarde_verlegd, cnt_contract_key
FROM cnt_kenmerkcontract kc, cnt_kenmerk k, fin_btwtabelwaarde b
WHERE kc.cnt_kenmerk_key = k.cnt_kenmerk_key
AND k.cnt_srtkenmerk_key = 141 -- btwtabelwaarde key
AND FAC.safe_to_number(kc.cnt_kenmerkcontract_waarde) = b.fin_btwtabelwaarde_key) b
WHERE f.cnt_contract_key = b.cnt_contract_key(+)
AND maand > TO_CHAR(ADD_MONTHS (SYSDATE, -120), 'yyyy-mm');
--
-- Factuur import
--
CREATE OR REPLACE PROCEDURE ykpn_import_factuur (p_import_key IN NUMBER)
AS
-- Standaard volgorde van de kolommen in het CSV-formaat, waarbij 3 velden VERPLICHT (minimaal door Facilitor vereist)
-- Variabelelijst
-- v_leveranciernr: 1
-- v_factuurnr: 2 (VERPLICHT, anders zet Facilitor '-' in factuurnr, en is status van factuur "Incompleet")
-- v_factuurdatum: 3
-- v_ordernr: 4 (VERPLICHT, anders is status van factuur "Incompleet")
-- v_locatie: 5
-- v_afleverdatum: 6
-- v_omschrijving: 7
-- v_aantal: 8
-- v_kostprijs: 9 (VERPLICHT, anders is status van factuur "Incompleet")
-- v_btw_bedrag: 10 (VERPLICHT, of anders veld 11, anders is status van factuur "Incompleet")
-- v_btw: 11 (VERPLICHT, of anders veld 10, anders is status van factuur "Incompleet")
-- v_docid: 12
-- v_debiteur_nr: 13
-- v_opmerking: 14
-- v_btw_verlegd: 15 (VERPLICHT, Ja/Nee/<leeg> waarbij leeg gelijk is aan Nee. Andere waarden leidt tot "Incompleet")
-- v_kenmerk1: 16
-- v_kenmerk2: 17
-- v_kenmerk3: 18
-- v_kenmerk4: 19
-- v_kenmerk5: 20
-- v_boekmaand: 21 (GELDIG, Indien gevuld dan moet er een geldige jaar-maand combinatie staan. Andere waarden leidt tot "Incompleet")
-- Eerst geprobeerd via nette array, geeft problemen met type buiten package, en in package lukt niet omdat
-- de import in Facilitor package-loos is (en niet 1-2-3 zo kan worden gemaakt vanwege alle bestaande klanten)
-- v_seq_of_columns ListOfInteger := (1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21);
-- Dus dan maar via een string, en ook op slimme wijze, nl alsof het een ingelezen factuur-record is met p_fielddelimitor
v_seq_of_columns VARCHAR(100);
-- Afwijkingen op deze volgorde zijn in eigen cust_import_factuur te regelen.
-- Als leveranciersnr en factuurnr b.v. zijn omgedraaid in het CSV-formaat,
-- dan factuurimport ListOfInteger := (2,1,3,4,5,6,7,8,9,10,11,12);
-- v_seq_of_columns := '2;1;3;4;5;6;7;8;9;10;11;12';
-- Als leveranciersnr NIET in CSV staat, dan factuurimport ListOfInteger := (0,2,3,4,5,6,7,8,9,10,11,12);
-- v_seq_of_columns := '0;2;3;4;5;6;7;8;9;10;11;12';
-- M.a.w. waar een 0 staat, wordt de variabele niet ingelezen en blift LEEG.
BEGIN
v_seq_of_columns := '1;2;3;4;5;6;7;8;9;10;11;12;13;14;15;16;17;18;19;20;21;22;23;24;25;26';
fac_import_factuur_body(p_import_key, v_seq_of_columns);
-- voeg een voorloopnul toe aan de boekmaanden op positie 6
-- 2017-9 wordt dan 2017-09
DELETE fac_imp_factuur WHERE factuurnr IS NULL AND factuurdatum IS NULL;
UPDATE fac_imp_factuur
SET boekmaand = SUBSTR (boekmaand, 1, 5) || 0 || SUBSTR (boekmaand, 6, 1)
WHERE SUBSTR (boekmaand, 1, 4) IS NOT NULL
AND SUBSTR (boekmaand, 5, 1) = '-'
AND SUBSTR (boekmaand, 6, 1) IS NOT NULL
AND SUBSTR (boekmaand, 7, 1) IS NULL
AND fac_import_key = p_import_key;
COMMIT;
END;
/
CREATE OR REPLACE PROCEDURE ykpn_update_factuur (p_import_key IN NUMBER)
AS
CURSOR set_appr(v_import_key NUMBER)
IS
SELECT f.fin_factuur_key fin_factuur_key
FROM fac_imp_factuur i, fin_factuur f
WHERE fac_import_key=v_import_key
AND f.fin_factuur_key=i.fin_factuur_key;
v_invoerder NUMBER(10);
BEGIN
fac_update_factuur (p_import_key);
INSERT INTO fin_kenmerkfactregel (fin_factuurregel_key, fin_kenmerk_key, fin_kenmerkfactregel_waarde)
SELECT DISTINCT fin_factuurregel_key, fin_kenmerk_key, alg_gebouw_key
FROM fac_imp_factuur i,
fin_kenmerk k,
ykpn_v_fin_gebouw g
WHERE k.fin_kenmerk_key = 41 -- gebouw bij contract
AND i.fin_factuurregel_key IS NOT NULL
AND SUBSTR(g.alg_gebouw_omschrijving, 1,2) = SUBSTR(i.kenmerk1, 1,2)
AND NOT EXISTS
(SELECT fin_kenmerkfactregel_key
FROM fin_kenmerkfactregel kf
WHERE kf.fin_kenmerk_key = 41
AND kf.fin_factuurregel_key = i.fin_factuurregel_key);
INSERT INTO fin_kenmerkfactregel (fin_factuurregel_key, fin_kenmerk_key, fin_kenmerkfactregel_waarde)
SELECT DISTINCT fin_factuurregel_key, fin_kenmerk_key, fac_usrdata_key
FROM fac_imp_factuur i,
fin_kenmerk k,
fac_usrdata ud
WHERE k.fin_kenmerk_key = 61 -- afw factuuroms
AND i.fin_factuurregel_key IS NOT NULL
AND UPPER(ud.fac_usrdata_omschr) = UPPER(TRIM(i.kenmerk2))
AND NOT EXISTS
(SELECT fin_kenmerkfactregel_key
FROM fin_kenmerkfactregel kf
WHERE kf.fin_kenmerk_key = 61
AND kf.fin_factuurregel_key = i.fin_factuurregel_key);
-- Dan gaan we nu per aangemaakte factuur_key kijken of er een goedkeurder gekoppeld kan worden (net zoals een factuur vanuit de interface opslaat via de hookfunctie)
FOR rec IN set_appr(p_import_key)
LOOP
ykpn.fin_set_approver(rec.fin_factuur_key);
END LOOP;
END;
/
CREATE OR REPLACE PROCEDURE YKPN_IMPORT_FIN_FACTUUR_MARX(p_import_key IN NUMBER)
AS
BEGIN
vbxx_import_fin_factuur_marx(p_import_key);
END;
/
CREATE OR REPLACE PROCEDURE YKPN_UPDATE_FIN_FACTUUR_MARX(p_import_key IN NUMBER)
AS
CURSOR set_appr(v_import_key NUMBER)
IS
SELECT f.fin_factuur_key fin_factuur_key
FROM fac_imp_factuur i, fin_factuur f
WHERE fac_import_key=v_import_key
AND f.fin_factuur_key=i.fin_factuur_key;
BEGIN
vbxx_update_fin_factuur_marx(p_import_key);
FOR rec IN set_appr(p_import_key)
LOOP
ykpn.fin_set_approver(rec.fin_factuur_key);
END LOOP;
END;
/
--
-- Koppeling met Exact
--
-- View om gebouw bij factuurregels te tonen
CREATE OR REPLACE VIEW ykpn_v_fin_gebouw
(
alg_gebouw_key,
alg_gebouw_omschrijving
)
AS
SELECT alg_gebouw_key,
SUBSTR (alg_onrgoedkenmerk_waarde, 5, 2)
|| '-'
|| alg_gebouw_code
|| ' '
|| alg_gebouw_naam
FROM alg_gebouw g, alg_onrgoedkenmerk aogk
WHERE g.alg_gebouw_key = aogk.alg_onrgoed_key
AND alg_kenmerk_key = 1200
AND alg_gebouw_verwijder IS NULL;
CREATE OR REPLACE VIEW ykpn_v_aanwezigfactuur
(
FIN_FACTUUR_KEY,
FIN_FACTUUR_NR,
FIN_FACTUUR_TOTAAL,
FIN_FACTUUR_TOTAAL_BTW,
MLD_OPDR_KEY,
CNT_CONTRACT_KEY,
BES_BESTELOPDR_KEY,
PRS_PERSLID_KEY_USER,
FIN_FACTUUR_DATUM,
FIN_FACTUUR_BOEKMAAND,
FIN_FACTUUR_DEBITEUR_NR,
PRS_KOSTENSOORT_KEY,
FIN_FACTUUR_OPMERKING,
FIN_FACTUUR_STATUSES_KEY,
FIN_FACTUUR_VERWIJDER
)
AS
SELECT FIN_FACTUUR_KEY,
FIN_FACTUUR_NR,
FIN_FACTUUR_TOTAAL,
FIN_FACTUUR_TOTAAL_BTW,
MLD_OPDR_KEY,
CNT_CONTRACT_KEY,
BES_BESTELOPDR_KEY,
PRS_PERSLID_KEY_USER,
FIN_FACTUUR_DATUM,
FIN_FACTUUR_BOEKMAAND,
FIN_FACTUUR_DEBITEUR_NR,
PRS_KOSTENSOORT_KEY,
FIN_FACTUUR_OPMERKING,
FIN_FACTUUR_STATUSES_KEY,
FIN_FACTUUR_VERWIJDER
FROM fin_factuur
WHERE fin_factuur_verwijder IS NULL AND fin_factuur_statuses_key > 1;
CREATE OR REPLACE VIEW ykpn_v_factuur_gegevens
(
fin_factuur_key,
opdracht_id,
fin_factuur_datum,
fin_factuur_nr,
prs_bedrijf_key,
dagboek,
fin_factuurregel_totaal,
fin_factuurregel_btw,
fin_btwtabelwaarde_code,
fin_btwtabelwaarde_key,
fin_factuurregel_nr,
fin_factuurregel_key,
fin_factuur_debiteur_nr,
fin_factuur_opmerking,
fin_factuur_boekmaand,
opdr_datum,
project_nummer,
prs_kostensoort_oms,
prs_kostensoort_refcode,
prs_kostensoort_opmerking,
prs_kostensoort_key,
prs_kostenplaats_nr,
mld_opdr_key,
cnt_contract_key,
bes_bestelopdr_key,
fin_factuur_statuses_key,
lev_kpn
)
AS
SELECT f.fin_factuur_key,
DECODE (
c.cnt_contract_key,
NULL, DECODE (
bo.bes_bestelopdr_key,
NULL, (SELECT sd.ins_srtdiscipline_prefix
|| m.mld_melding_key
|| '/'
|| o.mld_opdr_bedrijfopdr_volgnr
FROM mld_melding m,
mld_stdmelding std,
ins_tab_discipline d,
ins_srtdiscipline sd
WHERE m.mld_melding_key =
o.mld_melding_key
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),
bo.bes_bestelopdr_id),
'C'
|| TO_CHAR (cnt_contract_nummer_intern)
|| DECODE (cnt_contract_versie,
NULL, NULL,
'.' || cnt_contract_versie))
opdracht_id,
f.fin_factuur_datum,
f.fin_factuur_nr,
COALESCE (b_c.prs_bedrijf_key,
COALESCE (b_o.prs_bedrijf_key, b_b.prs_bedrijf_key))
prs_bedrijf_key,
DECODE (
(SELECT prs_kenmerklink_waarde
FROM prs_kenmerklink kl
WHERE kl.prs_kenmerk_key = 1020
AND kl.prs_link_key =
COALESCE (
b_c.prs_bedrijf_key,
COALESCE (b_o.prs_bedrijf_key,
b_b.prs_bedrijf_key))),
'1', 63,
62)
dagboek,
fr.fin_factuurregel_totaal,
ROUND (
fr.fin_factuurregel_totaal
* DECODE (btw.fin_btwtabelwaarde_verlegd,
1, 0,
btw.fin_btwtabelwaarde_perc / 100),
2)
fin_factuurregel_btw,
btw.fin_btwtabelwaarde_code,
btw.fin_btwtabelwaarde_key,
fr.fin_factuurregel_nr,
fr.fin_factuurregel_key,
f.fin_factuur_debiteur_nr,
f.fin_factuur_opmerking,
f.fin_factuur_boekmaand,
COALESCE (
o.mld_opdr_datumbegin,
COALESCE (c.cnt_contract_looptijd_tot,
bo.bes_bestelopdr_datum)),
(SELECT MAX (mld_kenmerkopdr_waarde)
FROM mld_kenmerkopdr ko, mld_opdr po
WHERE ko.mld_opdr_key = po.mld_opdr_key
AND o.mld_melding_key = po.mld_melding_key
AND ko.mld_kenmerk_key IN (561, 5403, 5443)) -- PO nummer
projectnummer,
prs_kostensoort_oms,
k.prs_kostensoort_refcode,
k.prs_kostensoort_opmerking,
k.prs_kostensoort_key,
COALESCE (
(SELECT alg_onrgoedkenmerk_waarde
FROM alg_onrgoedkenmerk aogk,
alg_v_onroerendgoed_gegevens aogg,
mld_melding m
WHERE o.mld_melding_key = m.mld_melding_key
AND m.mld_alg_onroerendgoed_keys =
aogg.alg_onroerendgoed_keys
AND aogg.alg_gebouw_key = aogk.alg_onrgoed_key
AND aogk.alg_kenmerk_key = 1200
UNION ALL
SELECT alg_onrgoedkenmerk_waarde
FROM alg_onrgoedkenmerk aogk, fin_kenmerkfactregel kfr
WHERE fr.fin_factuurregel_key = kfr.fin_factuurregel_key
AND kfr.fin_kenmerk_key = 41
AND c.cnt_contract_key IS NOT NULL
AND f.cnt_contract_plaats_key IS NULL
AND fac.safe_to_number (
kfr.fin_kenmerkfactregel_waarde) =
aogk.alg_onrgoed_key
AND aogk.alg_kenmerk_key = 1200
UNION ALL
SELECT alg_onrgoedkenmerk_waarde
FROM alg_onrgoedkenmerk aogk, cnt_contract_plaats cp
WHERE f.cnt_contract_plaats_key = cp.cnt_contract_plaats_key
AND cp.cnt_alg_plaats_key = aogk.alg_onrgoed_key
AND c.cnt_contract_key IS NOT NULL
AND aogk.alg_kenmerk_key = 1200
UNION ALL
SELECT aog.alg_onrgoedkenmerk_waarde
FROM bes_bestelopdr b, mld_adres m, alg_onrgoedkenmerk aog
WHERE b.bes_bestelopdr_key=bo.bes_bestelopdr_key
AND m.mld_adres_key=b.mld_adres_key_lev
AND aog.alg_onrgoed_key=m.alg_locatie_key
AND aog.alg_kenmerk_key=1200),
'Onbekend')
prs_kostenplaats_nr,
o.mld_opdr_key,
c.cnt_contract_key,
bo.bes_bestelopdr_key,
( -- status van de factuur is ingevoerd als er facturen van dezelfde leverancier en nummer zijn
-- met status ingevoerd, afgewezen of incompleet
SELECT DECODE (COUNT (*), 0, f.fin_factuur_statuses_key, 2)
FROM fin_factuur f_t,
cnt_contract c_t,
bes_bestelopdr b_t,
mld_opdr o_t
WHERE f_t.fin_factuur_verwijder IS NULL
AND f_t.mld_opdr_key = o_t.mld_opdr_key(+)
AND f_t.cnt_contract_key = c_t.cnt_contract_key(+)
AND f_t.bes_bestelopdr_key = b_t.bes_bestelopdr_key(+)
AND COALESCE (
o_t.mld_uitvoerende_keys,
COALESCE (
b_t.prs_bedrijf_key,
COALESCE (
c_t.cnt_prs_bedrijf_key,
(SELECT a.prs_bedrijf_key
FROM prs_v_afdeling a, prs_perslid p
WHERE o_t.mld_uitvoerende_keys =
p.prs_perslid_key
AND p.prs_afdeling_key =
a.prs_afdeling_key)))) =
COALESCE (
o.mld_uitvoerende_keys,
COALESCE (
bo.prs_bedrijf_key,
COALESCE (
c.cnt_prs_bedrijf_key,
(SELECT a.prs_bedrijf_key
FROM prs_v_afdeling a, prs_perslid p
WHERE o.mld_uitvoerende_keys =
p.prs_perslid_key
AND p.prs_afdeling_key =
a.prs_afdeling_key))))
AND f.fin_factuur_nr = f_t.fin_factuur_nr
AND f_t.fin_factuur_statuses_key IN (1, 2, 3, 5) -- Afgewezen, Ingevoerd, Incompleet, Ter goedkeuring
AND f.fin_factuur_statuses_key = 6)
fin_factuur_statuses_key,
lk.prs_kostenplaats_nr
lev_kpn
FROM fin_factuur f,
fin_factuurregel fr,
fin_btwtabelwaarde btw,
mld_opdr o,
mld_typeopdr ot,
cnt_contract c,
bes_bestelopdr bo,
(SELECT mld_uitvoerende_key,
DECODE (u.TYPE,
'B', mld_uitvoerende_key,
a.prs_bedrijf_key)
prs_bedrijf_key
FROM mld_v_uitvoerende u, prs_v_afdeling a, prs_perslid p
WHERE u.mld_uitvoerende_key = prs_perslid_key(+)
AND p.prs_afdeling_key = a.prs_afdeling_key(+)) b_o,
prs_bedrijf b_c,
prs_bedrijf b_b,
prs_kostensoort k,
prs_kostensoortgrp kg,
prs_kostenplaats lk
WHERE f.fin_factuur_key = fr.fin_factuur_key
AND fr.fin_btwtabelwaarde_key = btw.fin_btwtabelwaarde_key
AND f.mld_opdr_key = o.mld_opdr_key(+)
AND o.mld_typeopdr_key = ot.mld_typeopdr_key(+)
AND f.cnt_contract_key = c.cnt_contract_key(+)
AND f.bes_bestelopdr_key = bo.bes_bestelopdr_key(+)
AND bo.prs_bedrijf_key = b_b.prs_bedrijf_key(+)
AND o.mld_uitvoerende_keys = b_o.mld_uitvoerende_key(+)
AND c.cnt_prs_bedrijf_key = b_c.prs_bedrijf_key(+)
AND c.prs_kostensoort_key = k.prs_kostensoort_key(+)
AND k.prs_kostenplaats_key = lk.prs_kostenplaats_key(+)
AND k.prs_kostensoortgrp_key = kg.prs_kostensoortgrp_key(+)
AND f.fin_factuur_verwijder IS NULL;
CREATE OR REPLACE VIEW ykpn_v_export_exact_xml (
result,
result_order
)
AS
SELECT fac_rapport_regel, fac_rapport_volgnr
FROM fac_rapport
WHERE fac_rapport_node = 'EXACT';
CREATE OR REPLACE VIEW ykpn_v_export_exact_62 (
result,
result_order
)
AS
SELECT result, result_order
FROM ykpn_v_export_exact_xml;
CREATE OR REPLACE VIEW ykpn_v_export_exact_63 (
result,
result_order
)
AS
SELECT result, result_order
FROM ykpn_v_export_exact_xml;
CREATE OR REPLACE VIEW ykpn_v_bron_export_exact_xml
(
fin_factuur_key,
opdracht_id,
factuur_nr, -- crediteur factuurnummer
datum, -- factuurdatum
crdnr, -- crediteurnummer
project_nummer, -- PO nummer
bedrag_txt,
bedrag,
bedrag_incl,
oms_regel, -- omschrijving in de detailregels
reknr, -- grootboekrekeningnr
kstplcode, -- kostenplaats kenmerk bij gebouw
kstdrcode, -- kostendrager afh van grootboek
btw_code,
dagboek,
oms_kop, -- omschrijving in de kopregel
fin_factuur_debiteur_nr -- crediteur debiteurnummer
)
AS
SELECT fin_factuur_key,
opdracht_id,
fin_factuur_nr,
TO_CHAR (fin_factuur_datum, 'yyyy-mm-dd')
datum,
prs_leverancier_nr crdnr,
project_nummer,
REPLACE (TO_CHAR (bedrag), ',', '.')
bedrag_txt,
bedrag,
bedrag_incl,
SUBSTR (UPPER (DECODE(b.prs_leverancier_nr, '801176', 'YAS', b.prs_bedrijf_naam)), 1, 3)
|| ','
|| SUBSTR(fin_factuur_boekmaand, 6,2)
|| ','
|| opdracht_id
|| ','
|| DECODE(fg.cnt_contract_key, NULL, 'variabel',
COALESCE (LOWER(afwfactoms), LOWER(prs_kostensoort_opmerking)))
oms_regel,
DECODE (fg.cnt_contract_key, NULL, DECODE(b.prs_leverancier_nr, '801176',
DECODE (project_nummer, NULL, '64900', '65310'), -- Yask
DECODE (project_nummer, NULL, '74900', '75310')),
prs_kostensoort_oms)
reknr,
prs_kostenplaats_nr
kstplcode,
DECODE (cnt_contract_key, NULL,
DECODE (project_nummer, NULL, '10', '11'),
DECODE ((SELECT ins_discipline_key
FROM cnt_contract c
WHERE c.cnt_contract_key = fg.cnt_contract_key ),
421, '00', -- Vast
2221, '00', -- suppletie
461, '01', -- Variabel
'-'))
kstdrcode,
fin_btwtabelwaarde_code
btw_code,
fg.dagboek,
SUBSTR(UPPER(DECODE(b.prs_leverancier_nr, '801176', 'YAS', b.prs_bedrijf_naam)),1,3) || ',' ||
SUBSTR(fin_factuur_boekmaand,6,2) ||
DECODE(fg.cnt_contract_key, NULL, ',variabel',
','|| LOWER(prs_kostensoort_opmerking)) oms_kop,
fin_factuur_debiteur_nr
FROM ( SELECT g.fin_factuur_key,
opdracht_id,
project_nummer,
fin_factuur_datum,
fin_factuur_nr,
prs_bedrijf_key,
fin_factuur_debiteur_nr,
fin_factuur_opmerking,
SUM (fin_factuurregel_totaal)
bedrag,
SUM (fin_factuurregel_totaal + fin_factuurregel_btw)
bedrag_incl,
fin_btwtabelwaarde_code,
prs_kostensoort_oms,
prs_kostensoort_refcode,
prs_kostensoort_opmerking,
mld_opdr_key,
cnt_contract_key,
prs_kostenplaats_nr,
fin_factuur_boekmaand,
g.dagboek,
afo.afwfactoms
FROM ykpn_v_factuur_gegevens g,
ykpn_exp_factuur e,
(SELECT fin_factuurregel_key, fac_usrdata_omschr afwfactoms
FROM fin_kenmerkfactregel kfr, fac_usrdata ud
WHERE fin_kenmerk_key = 61 -- Afwijkende factuuromschrijving
AND FAC.safe_to_number(fin_kenmerkfactregel_waarde) = ud.fac_usrdata_key
) afo
WHERE fin_factuur_statuses_key = 6
AND g.fin_factuur_key = e.fin_factuur_key
AND g.dagboek = e.dagboek
AND g.fin_factuurregel_key = afo.fin_factuurregel_key(+)
GROUP BY g.fin_factuur_key,
opdracht_id,
project_nummer,
fin_factuur_datum,
fin_factuur_nr,
prs_bedrijf_key,
fin_factuur_debiteur_nr,
fin_factuur_opmerking,
fin_btwtabelwaarde_code,
prs_kostensoort_oms,
prs_kostensoort_refcode,
prs_kostensoort_opmerking,
mld_opdr_key,
cnt_contract_key,
prs_kostenplaats_nr,
fin_factuur_boekmaand,
g.dagboek,
afo.afwfactoms) fg,
prs_bedrijf b
WHERE fg.prs_bedrijf_key = b.prs_bedrijf_key
AND b.prs_leverancier_nr IS NOT NULL;
-- rapport voor controle door de financiele afdeling voordat definitief geboekt wordt.
CREATE OR REPLACE VIEW ykpn_v_fin_factuur_controle
AS
SELECT prs_leverancier_nr,
boekstuknummer,
dagboek,
boekjaar,
periode,
gefiatteerd,
onzeref,
naamcrediteur,
omschrijving,
SUM (fin_factuurregel_totaal) bedrag,
SUM (fin_factuurregel_totaal + fin_factuurregel_btw) bedragincl,
uwref,
invoerder,
reknr
FROM (SELECT prs_leverancier_nr,
bsn.boekstuknummer,
dagboek,
SUBSTR (fg.fin_factuur_boekmaand, 1, 4)
boekjaar,
SUBSTR (fg.fin_factuur_boekmaand, 6, 2)
periode,
( SELECT LISTAGG (
pf.prs_perslid_naam_full
|| ' '
|| TO_CHAR (t.fac_tracking_datum,
'dd-mm-yyyy hh24:mi'),
CHR (10))
WITHIN GROUP (ORDER BY fac_tracking_datum)
AS fiatteur
FROM fac_tracking t, prs_v_perslid_fullnames_all pf
WHERE t.fac_srtnotificatie_key IN (131, 132) -- FINFOK, FINGOE
AND t.prs_perslid_key = pf.prs_perslid_key
AND t.fac_tracking_refkey = fg.fin_factuur_key
GROUP BY fac_tracking_refkey)
gefiatteerd,
fg.fin_factuur_key
OnzeRef,
prs_bedrijf_naam
NaamCrediteur,
SUBSTR (UPPER (b.prs_bedrijf_naam), 1, 3)
|| ','
|| SUBSTR (fin_factuur_boekmaand, 6, 2)
|| ','
|| opdracht_id
|| ','
|| DECODE (project_nummer,
NULL, fin_factuur_opmerking,
project_nummer)
omschrijving,
fin_factuurregel_totaal,
fin_factuurregel_btw,
DECODE(b.prs_leverancier_nr, '801176',
DECODE (project_nummer, NULL, '64900', '65310'), -- Yask
DECODE (project_nummer, NULL, '74900', '75310'))
reknr,
fg.fin_factuur_nr || ' ' || fg.fin_factuur_debiteur_nr
uwref,
(SELECT pf.prs_perslid_naam_full
FROM fac_tracking t, prs_v_perslid_fullnames_all pf
WHERE t.fac_srtnotificatie_key = 129 -- FINNEW
AND t.fac_tracking_refkey = fg.fin_factuur_key
AND t.prs_perslid_key = pf.prs_perslid_key)
invoerder
FROM ykpn_v_factuur_gegevens fg,
prs_bedrijf b,
(SELECT fin_factuur_key,
fin_kenmerkfactuur_waarde boekstuknummer
FROM fin_kenmerkfactuur kf
WHERE fin_kenmerk_key = 1) bsn
WHERE fg.prs_bedrijf_key = b.prs_bedrijf_key
AND fg.fin_factuur_key = bsn.fin_factuur_key(+))
GROUP BY prs_leverancier_nr,
boekstuknummer,
dagboek,
boekjaar,
periode,
gefiatteerd,
onzeref,
naamcrediteur,
omschrijving,
reknr,
uwref,
invoerder;
-- Procedure om alle facturen te exporteren naar exact.
CREATE OR REPLACE PROCEDURE ykpn_select_exact_xml (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_dagboek IN VARCHAR2
)
AS
CURSOR c(c_dagboek VARCHAR2)
IS
SELECT crdnr, factuur_nr, MAX(datum) datum, MAX(oms_kop) oms_kop
FROM ykpn_v_bron_export_exact_xml
WHERE c_dagboek = dagboek
GROUP BY crdnr, factuur_nr;
CURSOR c_sub (c_crdnr VARCHAR2, c_factuur_nr VARCHAR2)
IS
SELECT *
FROM ykpn_v_bron_export_exact_xml
WHERE COALESCE(crdnr, 'CrdNr') = COALESCE(c_crdnr, 'CrdNr')
AND factuur_nr = c_factuur_nr;
v_order_count NUMBER;
v_amount_sum NUMBER(10,2);
v_amount_sum_incl NUMBER(10,2);
v_count NUMBER;
v_sub_count NUMBER;
v_bestand VARCHAR2(12);
v_boekstuknummer NUMBER;
v_crdnr PRS_BEDRIJF.PRS_LEVERANCIER_NR%TYPE;
v_factuur_nr FIN_FACTUUR.FIN_FACTUUR_NR%TYPE;
v_bijlagen_key NUMBER;
v_bijlagen_filename FAC_BIJLAGEN.FAC_BIJLAGEN_FILENAME%TYPE;
v_guid VARCHAR2(50);
BEGIN
v_order_count := 0;
v_amount_sum := 0;
v_amount_sum_incl := 0;
v_count := 0;
v_bestand := 'EXACT';
v_crdnr := 'Q';
v_factuur_nr := 'Q';
-- Eerst opruiming
DELETE FROM imp_log
WHERE imp_log_applicatie = p_applname;
DELETE fac_rapport
WHERE fac_rapport_node = v_bestand;
-- Verwijder het kenmerk boekstuknummer van de facturen die niet op verwerkt staan
DELETE fin_kenmerkfactuur kf
WHERE fin_kenmerk_key = 1
AND SUBSTR(fin_kenmerkfactuur_waarde, 3,2) = p_dagboek
AND fin_factuur_key IN (SELECT fin_factuur_key
FROM fin_factuur
WHERE fin_factuur_statuses_key <> 7);
-- Bewaar de factuur keys in een tijdelijke tabel zodat bij het verwerken (nieuwe export)
-- deze keys gebruikt kunnen worden.
DELETE ykpn_exp_factuur
WHERE dagboek = p_dagboek;
INSERT INTO ykpn_exp_factuur (fin_factuur_key, dagboek)
( SELECT DISTINCT fg.fin_factuur_key, fg.dagboek
FROM ykpn_v_factuur_gegevens fg,
prs_bedrijf b
WHERE fg.prs_bedrijf_key = b.prs_bedrijf_key
AND b.prs_leverancier_nr IS NOT NULL
AND fg.fin_factuur_statuses_key = 6
AND fg.fin_factuur_datum > SYSDATE - (5 * 365) -- Check op geldige factuurdatum:
AND fg.fin_factuur_datum < SYSDATE + 365 -- facturen mogen niet ouder zijn dan 5 jaar of meer dan <20><>n jaar in de toekomst.
AND fg.dagboek=p_dagboek -- Is het hetzelfde dagboek nog ?
);
-- Bepaal het boekstuknummer (key 3) met het hoogste nummer van dit jaar
-- ## AAIT#36589
SELECT MAX(fin_kenmerkfactuur_waarde)
INTO v_boekstuknummer
FROM fin_kenmerkfactuur
WHERE fin_kenmerk_key = 1
AND SUBSTR(fin_kenmerkfactuur_waarde,1,2) = TO_CHAR(SYSDATE, 'YY')
AND SUBSTR(fin_kenmerkfactuur_waarde,3,2) = p_dagboek;
IF v_boekstuknummer IS NULL
THEN
v_boekstuknummer := FAC.safe_to_number(TO_CHAR(SYSDATE, 'YY') || p_dagboek || '0000');
END IF;
-- header
ykpn.add_xml_row (v_bestand, '<?xml version="1.0" encoding="windows-1252"?>');
ykpn.add_xml_row (v_bestand, '<eExact>');
ykpn.add_xml_row (v_bestand, '<GLEntries>');
FOR rec IN c(p_dagboek)
LOOP
BEGIN
-- Als we een nieuwe leverancier/factuurnummer tegenkomen gaan we het boekstuknummer ophogen.
IF rec.crdnr <> v_crdnr OR rec.factuur_nr <> v_factuur_nr
THEN
v_boekstuknummer := v_boekstuknummer + 1;
v_crdnr := rec.crdnr;
v_factuur_nr := rec.factuur_nr;
END IF;
ykpn.add_xml_row (v_bestand, '<GLEntry status="E" entry="' || xml.char_to_html(v_boekstuknummer) || '">');
ykpn.add_xml_element (v_bestand, 'Description', rec.oms_kop);
ykpn.add_xml_element (v_bestand, 'Date', rec.datum);
ykpn.add_xml_element (v_bestand, 'DocumentDate', TO_CHAR(SYSDATE, 'YYYY-MM-DD') );
ykpn.add_xml_row (v_bestand, '<Journal type="I" code="' || p_dagboek || '"/>');
v_sub_count := 1;
FOR rec1 IN c_sub (v_crdnr, v_factuur_nr)
LOOP
BEGIN
-- Eerst maar even een kenmerk voor het boestuknummer aanmaken
ykpn.set_kenmerk('FIN', 1, rec1.fin_factuur_key, v_boekstuknummer, 0);
ykpn.add_xml_row (v_bestand, '<FinEntryLine number="' || v_sub_count || '" subtype="T" type="N">');
ykpn.add_xml_element (v_bestand, 'Date', rec1.datum);
ykpn.add_xml_row (v_bestand, '<GLAccount code="' || xml.char_to_html(rec1.reknr) || '"/>');
ykpn.add_xml_element (v_bestand, 'Description', rec1.oms_regel);
ykpn.add_xml_row (v_bestand, '<Costcenter code="' || xml.char_to_html(rec1.kstplcode) || '"/>');
ykpn.add_xml_row (v_bestand, '<Costunit code="' || xml.char_to_html(rec1.kstdrcode) || '"/>');
ykpn.add_xml_row (v_bestand, '<Creditor number="' || xml.char_to_html(rec1.crdnr) || '"/>');
ykpn.add_xml_row (v_bestand, '<Item code=""/>');
ykpn.add_xml_row (v_bestand, '<Amount>');
ykpn.add_xml_row (v_bestand, '<Currency code="EUR"/>');
ykpn.add_xml_element (v_bestand, 'Debit', rec1.bedrag_txt);
ykpn.add_xml_row (v_bestand, '<VAT code="' || xml.char_to_html(rec1.btw_code) || '"/>');
ykpn.add_xml_row (v_bestand, '</Amount>');
ykpn.add_xml_row (v_bestand, '<Payment>');
ykpn.add_xml_element (v_bestand, 'Reference', rec.factuur_nr || ' ' || rec1.fin_factuur_debiteur_nr );
ykpn.add_xml_element (v_bestand, 'InvoiceNumber', rec1.fin_factuur_key); -- of moet dit v_boekstuknummer worden????
ykpn.add_xml_row (v_bestand, '</Payment>');
ykpn.add_xml_row (v_bestand, '<FinReferences>');
ykpn.add_xml_element (v_bestand, 'YourRef', rec.factuur_nr || ' ' || rec1.fin_factuur_debiteur_nr);
ykpn.add_xml_element (v_bestand, 'DocumentDate', TO_CHAR(SYSDATE, 'YYYY-MM-DD') );
ykpn.add_xml_row (v_bestand, '</FinReferences>');
SELECT MAX(fac_bijlagen_key)
INTO v_bijlagen_key
FROM fac_v_bijlagen
WHERE fac_bijlagen_module = 'FIN'
AND fac_bijlagen_refkey = rec1.fin_factuur_key
AND fac_bijlagen_kenmerk_key = 21;
IF v_bijlagen_key IS NOT NULL AND v_sub_count = 1
THEN
SELECT fac_bijlagen_filename
INTO v_bijlagen_filename
FROM fac_v_bijlagen
WHERE fac_bijlagen_key = v_bijlagen_key;
v_guid := sys_guid();
ykpn.add_xml_row (v_bestand, '<DocumentAttachment ID="{' || substr(v_guid,1,8) || '-' || substr(v_guid,8,4) || '-' || substr(v_guid,12,4) || '-' || substr(v_guid,16,4) || '-' || substr(v_guid,20,12) || '}" publish="0">');
ykpn.add_xml_row (v_bestand, '<DocumentType number="7"/>');
ykpn.add_xml_element (v_bestand, 'Subject', xml.char_to_html(v_boekstuknummer));
ykpn.add_xml_element (v_bestand, 'OurRef', xml.char_to_html(v_boekstuknummer));
ykpn.add_xml_element (v_bestand, 'YourRef', rec.factuur_nr);
ykpn.add_xml_row (v_bestand, '<Account code="' || xml.char_to_html(rec1.crdnr) || '"/>');
ykpn.add_xml_element (v_bestand, 'FCLTattachment', v_bijlagen_key);
ykpn.add_xml_row (v_bestand, '</DocumentAttachment>');
END IF;
IF rec1.project_nummer IS NOT NULL
THEN
ykpn.add_xml_row (v_bestand, '<FreeFields>');
ykpn.add_xml_row (v_bestand, '<FreeTexts>');
ykpn.add_xml_row (v_bestand, '<FreeText number="1">PO' || rec1.project_nummer || '</FreeText>');
ykpn.add_xml_row (v_bestand, '</FreeTexts>');
ykpn.add_xml_row (v_bestand, '</FreeFields>');
END IF;
ykpn.add_xml_row (v_bestand, '</FinEntryLine>');
v_sub_count := v_sub_count + 1;
v_amount_sum := v_amount_sum + rec1.bedrag;
v_amount_sum_incl := v_amount_sum_incl + rec1.bedrag_incl;
END;
END LOOP;
IF v_sub_count = 1
THEN
fac.writelog (p_applname, 'E', 'Fout tijdens Exact export. Factuurnummer: ' || v_factuur_nr || ' Crdnr: ' || v_crdnr,'');
END IF;
ykpn.add_xml_row (v_bestand, '</GLEntry>');
v_order_count := v_order_count + 1;
END;
END LOOP;
ykpn.add_xml_row (v_bestand, '</GLEntries>');
ykpn.add_xml_row (v_bestand, '</eExact>');
fac.writelog (p_applname, 'S', 'Exact export uitgevoerd. Aantal regels: ' || v_order_count || ' Totaal bedrag: ' || v_amount_sum || ' Totaal bedrag (incl): ' || v_amount_sum_incl, '');
END;
/
CREATE OR REPLACE PROCEDURE ykpn_select_exact_62 (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
BEGIN
ykpn_select_exact_xml (p_applname, p_applrun, '62');
END;
/
CREATE OR REPLACE PROCEDURE ykpn_select_exact_63 (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
BEGIN
ykpn_select_exact_xml (p_applname, p_applrun, '63');
END;
/
-- Procedure om alle facturen te exporteren naar exact.
CREATE OR REPLACE PROCEDURE ykpn_export_exact_62 (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
v_errormsg VARCHAR (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
BEGIN
-- Verwerk actie direct starten na de EXPORT_EXACT
-- INSERT INTO imp_schedule (imp_schedule_name) VALUES ('VERWERK_EXACT_62');
NULL;
END;
/
-- Procedure om alle facturen te exporteren naar exact.
CREATE OR REPLACE PROCEDURE ykpn_export_exact_63 (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
v_errormsg VARCHAR (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
BEGIN
-- Verwerk actie direct starten na de EXPORT_EXACT
-- INSERT INTO imp_schedule (imp_schedule_name) VALUES ('VERWERK_EXACT_63');
NULL;
END;
/
CREATE OR REPLACE VIEW ykpn_v_export_verwerk_exact (
result,
result_order
)
AS
SELECT 'Lijst met bevroren facturen:' fac_rapport_regel, 0 fac_rapport_volgnr
FROM DUAL
UNION ALL
SELECT fac_rapport_regel, fac_rapport_volgnr
FROM fac_rapport
WHERE fac_rapport_node = 'VW_EXACT';
CREATE OR REPLACE VIEW ykpn_v_export_verwerk_exact_62 (
result,
result_order
)
AS
SELECT result, result_order
FROM ykpn_v_export_verwerk_exact;
CREATE OR REPLACE VIEW ykpn_v_export_verwerk_exact_63 (
result,
result_order
)
AS
SELECT result, result_order
FROM ykpn_v_export_verwerk_exact;
CREATE OR REPLACE PROCEDURE ykpn_select_verwerk_exact (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_dagboek IN VARCHAR2
)
AS
CURSOR c_fact
IS
SELECT DISTINCT f.fin_factuur_key
FROM ykpn_exp_factuur f
, ykpn_v_factuur_gegevens fg
WHERE f.fin_factuur_key = fg.fin_factuur_key
AND fg.fin_factuur_statuses_key = 6
AND f.dagboek = p_dagboek;
v_errormsg VARCHAR (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanvrager NUMBER;
v_bestelling_key NUMBER;
v_bestand VARCHAR2(12);
v_logdate DATE;
v_volgnr NUMBER;
BEGIN
v_errormsg := 'Geen akties';
v_aanvrager := 3; -- Facilitor
v_logdate := SYSDATE;
v_bestand := 'VW_EXACT';
v_volgnr := 1;
-- Eerst opruiming
DELETE fac_rapport
WHERE fac_rapport_node = v_bestand;
FOR rec1 IN c_fact
LOOP
BEGIN
UPDATE fin_factuur f
SET fin_factuur_statuses_key = 7
WHERE f.fin_factuur_key = rec1.fin_factuur_key;
fac.trackaction ('FINVER', rec1.fin_factuur_key, v_aanvrager, NULL, NULL);
INSERT INTO fac_rapport (fac_rapport_node,
fac_rapport_volgnr,
fac_rapport_regel)
VALUES (v_bestand,
v_volgnr,
rec1.fin_factuur_key);
v_volgnr := v_volgnr + 1;
END;
END LOOP;
-- verwijder de enties uit de tijdelijke tabel.
DELETE ykpn_exp_factuur WHERE dagboek = p_dagboek;
END;
/
CREATE OR REPLACE PROCEDURE ykpn_select_verwerk_exact_62 (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
BEGIN
ykpn_select_verwerk_exact (p_applname, p_applrun, '62');
END;
/
CREATE OR REPLACE PROCEDURE ykpn_select_verwerk_exact_63 (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
BEGIN
ykpn_select_verwerk_exact (p_applname, p_applrun, '63');
END;
/
CREATE OR REPLACE PROCEDURE ykpn_select_verwerk_exact (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_dagboek IN VARCHAR2
)
AS
CURSOR c_fact
IS
SELECT DISTINCT f.fin_factuur_key
FROM ykpn_exp_factuur f
, ykpn_v_factuur_gegevens fg
WHERE f.fin_factuur_key = fg.fin_factuur_key
AND fg.fin_factuur_statuses_key = 6
AND f.dagboek = p_dagboek;
v_errormsg VARCHAR (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanvrager NUMBER;
v_bestelling_key NUMBER;
v_bestand VARCHAR2(12);
v_logdate DATE;
v_volgnr NUMBER;
BEGIN
v_errormsg := 'Geen akties';
v_aanvrager := 3; -- Facilitor
v_logdate := SYSDATE;
v_bestand := 'VW_EXACT';
v_volgnr := 1;
-- Eerst opruiming
DELETE fac_rapport
WHERE fac_rapport_node = v_bestand;
FOR rec1 IN c_fact
LOOP
BEGIN
UPDATE fin_factuur f
SET fin_factuur_statuses_key = 7
WHERE f.fin_factuur_key = rec1.fin_factuur_key;
fac.trackaction ('FINVER', rec1.fin_factuur_key, v_aanvrager, NULL, NULL);
INSERT INTO fac_rapport (fac_rapport_node,
fac_rapport_volgnr,
fac_rapport_regel)
VALUES (v_bestand,
v_volgnr,
rec1.fin_factuur_key);
v_volgnr := v_volgnr + 1;
END;
END LOOP;
-- verwijder de enties uit de tijdelijke tabel.
DELETE ykpn_exp_factuur WHERE dagboek = p_dagboek;
END;
/
CREATE OR REPLACE PROCEDURE ykpn_select_verwerk_exact_62 (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
BEGIN
ykpn_select_verwerk_exact (p_applname, p_applrun, '62');
END;
/
CREATE OR REPLACE PROCEDURE ykpn_select_verwerk_exact_63 (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
BEGIN
ykpn_select_verwerk_exact (p_applname, p_applrun, '63');
END;
/
CREATE OR REPLACE PROCEDURE YKPN_SELECT_CIRFOOD_CATERING(
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
CURSOR sel
IS
SELECT distinct rra.res_rsv_ruimte_key rrr_key,
rrr.res_reservering_key||'/'||rrr.res_rsv_ruimte_volgnr reservering,
rrr.res_rsv_ruimte_opmerking opmerking,
rrr.res_rsv_ruimte_van van,
rrr.res_rsv_ruimte_tot tot,
(SELECT prs_perslid_naam_friendly FROM prs_v_perslid_fullnames WHERE prs_perslid_key=rrr.res_rsv_ruimte_contact_key) aanvrager,
p.prs_perslid_telefoonnr telefoon,
p.prs_perslid_email email,
k.prs_kostenplaats_key,
k.prs_kostenplaats_nr kostenplaats,
k.prs_kostenplaats_omschrijving,
b.prs_bedrijf_key,
b.prs_overeenkomst_nr,
COALESCE(
(SELECT ao.alg_onrgoedkenmerk_waarde
FROM alg_v_allonrgoed_gegevens alg, alg_onrgoedkenmerk ao, alg_kenmerk ak
WHERE alg.alg_ruimte_key=rrr.alg_ruimte_key
AND ao.alg_onrgoed_key=alg.alg_gebouw_key
AND UPPER(ak.alg_kenmerk_omschrijving)='CIRFOOD LOCATIECODE'
AND ao.alg_kenmerk_key = ak.alg_kenmerk_key),
(SELECT ao.alg_onrgoedkenmerk_waarde
FROM (SELECT MIN(rarm.alg_ruimte_key) alg_ruimte_key
FROM res_ruimte_opstelling rro,
res_ruimte rr,
res_alg_ruimte rarm
WHERE rro.res_ruimte_opstel_key =rrr.res_ruimte_opstel_key
AND rr.res_ruimte_key = rro.res_ruimte_key
AND rarm.res_ruimte_key = rr.res_ruimte_key
AND rarm.res_alg_ruimte_verwijder IS NULL) ruimte,
alg_v_ruimte_gegevens_all alg,
alg_onrgoedkenmerk ao,
alg_kenmerk ak
WHERE alg.alg_ruimte_key = ruimte.alg_ruimte_key
AND ao.alg_onrgoed_key=alg.alg_gebouw_key
AND UPPER(ak.alg_kenmerk_omschrijving)='CIRFOOD LOCATIECODE'
AND ao.alg_kenmerk_key = ak.alg_kenmerk_key)) cirfood_loc,
COALESCE (
(SELECT alg_ruimte_nr
FROM alg_v_allonrgoed_gegevens alg
WHERE alg.alg_ruimte_key=rrr.alg_ruimte_key),
(SELECT MIN(alg.alg_ruimte_nr)
FROM res_ruimte_opstelling rro, res_ruimte rr, res_alg_ruimte rarm, alg_v_ruimte_gegevens_all alg
WHERE rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key
AND rr.res_ruimte_key = rro.res_ruimte_key
AND rarm.res_ruimte_key = rr.res_ruimte_key
AND rarm.res_alg_ruimte_verwijder IS NULL
AND alg.alg_ruimte_key = rarm.alg_ruimte_key)) ruimtenr
FROM res_rsv_artikel rra,
res_artikel ra,
res_discipline rd,
res_disc_params rdp,
prs_bedrijf b,
res_rsv_ruimte rrr,
prs_kostenplaats k,
prs_v_perslid_gegevens p
WHERE rrr.res_rsv_ruimte_van > TO_DATE('01-05-2022','DD-MM-YYYY')
AND rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key
AND rrr.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
AND rra.res_artikel_key = ra.res_artikel_key
AND ra.res_discipline_key = rd.ins_discipline_key
AND rd.ins_discipline_key = rdp.res_ins_discipline_key
AND rra.res_status_bo_key = 5 -- afgemeld
AND rdp.prs_bedrijf_key = b.prs_bedrijf_key
AND rdp.prs_bedrijf_key = 90501 -- Cirfood algemeen
AND p.prs_perslid_key=rrr.res_rsv_ruimte_contact_key
AND rra.res_rsv_artikel_verwijder IS NULL
AND rrr.res_rsv_ruimte_verwijder IS NULL
AND rrr.res_rsv_ruimte_externsyncdate IS NULL;
CURSOR sel_art(p_rrr_key NUMBER)
IS
SELECT rra.res_rsv_artikel_key,
rra.res_rsv_artikel_aantal aantal,
ra.res_artikel_omschrijving artikel_omschrijving,
COALESCE(ra.RES_ARTIKEL_NR,ra.res_artikel_externnr) artikelnr,
rra.res_rsv_artikel_levering van,
ra.res_artikel_btw btw,
rra.res_rsv_artikel_prijs totprijs,
ra.res_artikel_prijs prijs,
rd.ins_discipline_omschrijving catalogus
FROM res_rsv_artikel rra,
res_artikel ra,
res_discipline rd
WHERE rra.res_rsv_ruimte_key=p_rrr_key
AND rra.res_artikel_key = ra.res_artikel_key
AND rra.res_status_bo_key = 5 -- afgemeld
AND rra.res_rsv_artikel_verwijder IS NULL
AND ra.res_artikel_btw IN (0, 9, 21)
AND rd.ins_discipline_key=ra.res_discipline_key;
v_bestand VARCHAR2(20);
v_shop_token VARCHAR2(50);
v_contact_email VARCHAR2(50);
v_debitor_value VARCHAR2(20);
v_counter NUMBER;
v_artikelprijs NUMBER;
BEGIN
v_bestand :='CIRF-EX';
v_counter:=0;
-- CIRFOOD settings
v_shop_token:='KPN_12345';
v_contact_email :='cirfoodcontact@kpn.com';
v_debitor_value := 'KPN_DEB_CODE';
-- eerst opschonen
DELETE FROM fac_rapport
WHERE fac_rapport_node = v_bestand;
ykpn.add_xml_row (v_bestand, '<?xml version="1.0" encoding="windows-1252"?>');
ykpn.add_xml_row (v_bestand, '<Message version="1.1">');
ykpn.add_xml_row (v_bestand, '<Header>');
ykpn.add_xml_row (v_bestand, '<ShopToken>'||v_shop_token||'</ShopToken>');
ykpn.add_xml_row (v_bestand, '<Sender>');
ykpn.add_xml_row (v_bestand, '<ID>1</ID>');
ykpn.add_xml_row (v_bestand, '<Name>KPN</Name>');
ykpn.add_xml_row (v_bestand, '<Email>'||v_contact_email||'</Email>');
ykpn.add_xml_row (v_bestand, '</Sender>');
ykpn.add_xml_row (v_bestand, '<Subject>Purchaseorder Facilitor</Subject>');
ykpn.add_xml_row (v_bestand, '</Header>');
ykpn.add_xml_row (v_bestand, '<Content>');
ykpn.add_xml_row (v_bestand, '<Orders>');
FOR rec IN sel
LOOP
v_counter:=v_counter+1;
ykpn.add_xml_row(v_bestand, '<Order>');
ykpn.add_xml_row(v_bestand, '<Customer>');
ykpn.add_xml_element (v_bestand, 'Name', 'KPN');
ykpn.add_xml_element (v_bestand, 'ID', '9500');
ykpn.add_xml_element (v_bestand, 'ExternalID', rec.reservering);
ykpn.add_xml_row(v_bestand, '<ContentContact>');
ykpn.add_xml_element (v_bestand, 'Name', rec.aanvrager);
ykpn.add_xml_element (v_bestand, 'Tel', rec.telefoon);
ykpn.add_xml_element (v_bestand, 'Email', rec.email);
ykpn.add_xml_row(v_bestand, '</ContentContact>');
ykpn.add_xml_row(v_bestand, '</Customer>');
ykpn.add_xml_element (v_bestand, 'Comments', REGEXP_REPLACE(rec.opmerking, '[^ -~|[:space:]]', ''));
ykpn.add_xml_row(v_bestand, '<Delivery>');
ykpn.add_xml_row(v_bestand, '<Location>');
ykpn.add_xml_element (v_bestand, 'Reference', rec.cirfood_loc);
ykpn.add_xml_row(v_bestand, '<Room>');
ykpn.add_xml_element (v_bestand, 'Description',rec.ruimteNr);
ykpn.add_xml_row(v_bestand, '</Room>');
ykpn.add_xml_row(v_bestand, '</Location>');
ykpn.add_xml_element (v_bestand, 'RequestedDeliveryDateTime',to_char(rec.van,'YYYYMMDD')||'T'||to_char(rec.van,'HH24:MI:SS'));
ykpn.add_xml_element (v_bestand, 'RequestedCollectDateTime',to_char(rec.tot,'YYYYMMDD')||'T'||to_char(rec.tot,'HH24:MI:SS'));
ykpn.add_xml_row(v_bestand, '</Delivery>');
ykpn.add_xml_row(v_bestand, '<CostCentre>');
ykpn.add_xml_element (v_bestand, 'Code',rec.kostenplaats);
ykpn.add_xml_row(v_bestand, '</CostCentre>');
ykpn.add_xml_row(v_bestand, '<OrderLines>');
FOR rec_art in sel_art(rec.rrr_key)
LOOP
ykpn.add_xml_row(v_bestand, '<OrderLine>');
ykpn.add_xml_element (v_bestand, 'Start',TO_CHAR(rec_art.van,'HH24:MI'));
ykpn.add_xml_row(v_bestand, '<Item>');
ykpn.add_xml_element (v_bestand, 'Description',rec_art.artikel_omschrijving);
ykpn.add_xml_element (v_bestand, 'Reference',rec_art.artikelnr);
ykpn.add_xml_row(v_bestand, '</Item>');
v_artikelprijs:=0;
IF UPPER(rec_art.catalogus) = 'CIRFOOD - MAATWERK'
THEN
v_artikelprijs := rec_art.totprijs/rec_art.aantal;
ELSE
v_artikelprijs := rec_art.prijs;
END IF;
ykpn.add_xml_element (v_bestand, 'QuantityOrdered',rec_art.aantal);
ykpn.add_xml_row(v_bestand, '<Price>');
ykpn.add_xml_element (v_bestand, 'NetPrice',v_artikelprijs);
ykpn.add_xml_element (v_bestand, 'BrtPrice',ROUND(v_artikelPrijs*(1+rec_art.btw/100),2));
ykpn.add_xml_element (v_bestand, 'Currency','EUR');
ykpn.add_xml_element (v_bestand, 'VatPercentage',rec_art.btw);
ykpn.add_xml_row(v_bestand, '</Price>');
ykpn.add_xml_row(v_bestand, '</OrderLine>');
UPDATE res_rsv_artikel SET res_rsv_artikel_externsyncdate=SYSDATE WHERE res_rsv_artikel_key=rec_art.res_rsv_artikel_key;
END LOOP;
ykpn.add_xml_row(v_bestand, '</OrderLines>');
ykpn.add_xml_row(v_bestand, '</Order>');
UPDATE res_rsv_ruimte SET res_rsv_ruimte_externsyncdate=SYSDATE WHERE res_rsv_ruimte_key=rec.rrr_key;
END LOOP;
ykpn.add_xml_row (v_bestand, '</Orders>');
ykpn.add_xml_row (v_bestand, '</Content>');
ykpn.add_xml_row (v_bestand, '</Message>');
IF v_counter=0 -- we hebben niets te exporteren dan kunnen we de xml headers ook opruimen.
THEN
DELETE FROM fac_rapport
WHERE fac_rapport_node = v_bestand;
END IF;
END;
/
CREATE OR REPLACE VIEW YKPN_V_EXPORT_CIRFOOD_CATERING
(
result,
result_order
)
AS
SELECT fac_rapport_regel, fac_rapport_volgnr
FROM fac_rapport
WHERE fac_rapport_node LIKE 'CIRF-EX%';
-- View om rapport tbv van Cirfood voor starten export
CREATE OR REPLACE VIEW YKPN_V_CIRFOODEXPORTLIJST
(
rrr_key,
reservering,
opmerking,
van,
tot,
artikelnr,
artikel_omschrijving,
aantal,
btw,
totprijs,
prijs,
kostenplaats,
kp_omschrijving,
cirfood_loc,
ruimtenr,
exportdatum,
status
)
AS
SELECT distinct rra.res_rsv_ruimte_key rrr_key,
rrr.res_reservering_key||'/'||rrr.res_rsv_ruimte_volgnr reservering,
rrr.res_rsv_ruimte_opmerking opmerking,
rrr.RES_RSV_RUIMTE_VAN van,
rrr.RES_RSV_RUIMTE_tot tot,
COALESCE(ra.RES_ARTIKEL_NR,ra.res_artikel_externnr) artikelnr,
ra.res_artikel_omschrijving artikel_omschrijving,
rra.res_rsv_artikel_aantal aantal,
ra.res_artikel_btw btw,
rra.res_rsv_artikel_prijs totprijs,
ra.res_artikel_prijs prijs,
k.prs_kostenplaats_nr kostenplaats,
k.prs_kostenplaats_omschrijving kp_omschrijving,
COALESCE(
(SELECT ao.alg_onrgoedkenmerk_waarde
FROM alg_v_allonrgoed_gegevens alg, alg_onrgoedkenmerk ao, alg_kenmerk ak
WHERE alg.alg_ruimte_key=rrr.alg_ruimte_key
AND ao.alg_onrgoed_key=alg.alg_gebouw_key
AND UPPER(ak.alg_kenmerk_omschrijving)='CIRFOOD LOCATIECODE'
AND ao.alg_kenmerk_key = ak.alg_kenmerk_key),
(SELECT ao.alg_onrgoedkenmerk_waarde
FROM (SELECT MIN(rarm.alg_ruimte_key) alg_ruimte_key
FROM res_ruimte_opstelling rro,
res_ruimte rr,
res_alg_ruimte rarm
WHERE rro.res_ruimte_opstel_key =rrr.res_ruimte_opstel_key
AND rr.res_ruimte_key = rro.res_ruimte_key
AND rarm.res_ruimte_key = rr.res_ruimte_key
AND rarm.res_alg_ruimte_verwijder IS NULL) ruimte,
alg_v_ruimte_gegevens_all alg,
alg_onrgoedkenmerk ao,
alg_kenmerk ak
WHERE alg.alg_ruimte_key = ruimte.alg_ruimte_key
AND ao.alg_onrgoed_key=alg.alg_gebouw_key
AND UPPER(ak.alg_kenmerk_omschrijving)='CIRFOOD LOCATIECODE'
AND ao.alg_kenmerk_key = ak.alg_kenmerk_key)) cirfood_loc,
COALESCE (
(SELECT alg_ruimte_nr
FROM alg_v_allonrgoed_gegevens alg
WHERE alg.alg_ruimte_key=rrr.alg_ruimte_key),
(SELECT MIN(alg.alg_ruimte_nr)
FROM res_ruimte_opstelling rro, res_ruimte rr, res_alg_ruimte rarm, alg_v_ruimte_gegevens_all alg
WHERE rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key
AND rr.res_ruimte_key = rro.res_ruimte_key
AND rarm.res_ruimte_key = rr.res_ruimte_key
AND rarm.res_alg_ruimte_verwijder IS NULL
AND alg.alg_ruimte_key = rarm.alg_ruimte_key)) ruimtenr,
rrr.res_rsv_ruimte_externsyncdate exportdatum,
(SELECT res_status_bo_omschrijving
FROM res_status_bo
WHERE res_status_bo_key=rra.res_status_bo_key) status
FROM res_rsv_artikel rra,
res_artikel ra,
res_discipline rd,
res_disc_params rdp,
prs_bedrijf b,
res_rsv_ruimte rrr,
prs_kostenplaats k
WHERE rrr.res_rsv_ruimte_van > TO_DATE('01-05-2022','DD-MM-YYYY')
AND rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key
AND rrr.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
AND rra.res_artikel_key = ra.res_artikel_key
AND ra.res_discipline_key = rd.ins_discipline_key
AND rd.ins_discipline_key = rdp.res_ins_discipline_key
-- AND rra.res_status_bo_key = 5 -- afgemeld
AND rdp.prs_bedrijf_key = b.prs_bedrijf_key
AND rdp.prs_bedrijf_key = 90501 -- Cirfood algemeen
AND rra.res_rsv_artikel_verwijder IS NULL;
-- Koppeling om finaciele gegevens over catering te exporteren naar Cirfood (Exact verkoop)
-- We gaan eerst alle catering in de verkoopfactuur tabel plaatsen
-- Daarna vullen we de verkoopfactuurkop met het boekstuknummer (aaneengesloten nummering)
-- De data uit de ykpn_v_verkoop_cirfood_t view wordt in de fac_rapport tabel geplaatst
-- waarbij de volgnummers aangepast worden. Normaal hebben alle kopregels een 0 en de volgregels
-- een 1. Maar bij het inlezen in de fac_rapport tabel wordt er voor gezorgd dat de juiste nummering
-- ingevuld wordt.
-- Het te exporteren bestand komt in dan in de view ykpn_v_exp_cirfood beschikbaar.
-- Dan moet nog in de verkoopfactuur tabel gemarkeerd worden dat deze regels geexporteerd zijn door
-- de verkoopfactuur_datum te vullen.
-- En als laatste de catering artikelen naar status 6 (verwerkt) brengen.
CREATE OR REPLACE VIEW ykpn_v_verkoop_cirfood_t
(
result,
resultorder
)
AS
SELECT '1' -- 01 Regelnummer
|| ';'
|| 'V' -- 02 Dagboektype (V) verkoop
|| ';'
|| '75' -- 03 Dagboeknummer
|| ';'
|| ';'
|| ';'
|| SUBSTR (vfk.fin_verkoopfactuurkop_id, 9, 100) -- 06 Boekstuknummer opeenvolgend nummer
|| ';'
|| prs_debiteur_naam
|| '/'
|| prs_kostenplaats_nr
|| ' '
|| prs_kostenplaats_omschrijving
|| ' '
|| vf.fin_btwtabelwaarde_perc
|| '%;' -- 07 Omschrijving
|| TO_CHAR (SYSDATE, 'DDMMYYYY') -- 08 Factuurdatum
|| ';'
|| prs_kostensoort_refcode -- 09 Grootboekrekening
|| ';'
|| ';'
|| ';'
|| ';'
|| ROUND (
SUM (vf.fin_verkoopfactuur_bedrag)
* (100 / (100 + vf.fin_btwtabelwaarde_perc)),
2) -- 13 bedrag
|| ';'
|| ';'
|| ';'
|| ';'
|| ';'
|| ';'
|| ';'
|| ';'
|| fin_btwtabelwaarde_code -- 21 BTW
|| ';'
|| ROUND (
SUM (vf.fin_verkoopfactuur_bedrag)
* ( vf.fin_btwtabelwaarde_perc
/ (100 + vf.fin_btwtabelwaarde_perc)),
2)
|| ';', -- 22 btw bedrag
prs_kostenplaats_nr || '-' || 1
FROM fin_verkoopfactuur vf, fin_verkoopfactuurkop vfk
WHERE vf.fin_verkoopfactuurkop_key = vfk.fin_verkoopfactuurkop_key
AND fin_verkoopfactuur_xmlnode = 'res_artikel'
AND fin_verkoopfactuur_datum IS NULL
GROUP BY vfk.fin_verkoopfactuurkop_id,
prs_debiteur_naam,
vf.prs_kostenplaats_nr,
vf.prs_kostenplaats_omschrijving,
fin_btwtabelwaarde_perc,
fin_btwtabelwaarde_code,
prs_kostensoort_refcode
UNION ALL
SELECT '0' -- 01 Regelnummer
|| ';'
|| 'V' -- 02 Dagboektype (V) verkoop
|| ';'
|| '75' -- 03 Dagboeknummer
|| ';'
|| ';'
|| ';'
|| SUBSTR (vfk.fin_verkoopfactuurkop_id, 9, 100) -- 06 Boekstuknummer opeenvolgend nummer
|| ';'
|| prs_debiteur_naam
|| '/'
|| prs_kostenplaats_nr
|| ' '
|| prs_kostenplaats_omschrijving -- 07 Omschrijving
|| ';'
|| TO_CHAR (SYSDATE, 'DDMMYYYY') -- 08 Factuurdatum
|| ';'
|| ';'
|| prs_debiteur_naam -- 10 Debiteurnummer
|| ';'
|| ';'
|| ';'
|| SUM (vf.fin_verkoopfactuur_bedrag) -- 13 bedrag
|| ';'
|| ';'
|| ';'
|| ';'
|| ';'
|| ';'
|| ';'
|| ';'
|| ';'
|| ';',
prs_kostenplaats_nr || '-' || 0
FROM fin_verkoopfactuur vf, fin_verkoopfactuurkop vfk
WHERE vf.fin_verkoopfactuurkop_key = vfk.fin_verkoopfactuurkop_key
AND fin_verkoopfactuur_xmlnode = 'res_artikel'
AND fin_verkoopfactuur_datum IS NULL
GROUP BY vfk.fin_verkoopfactuurkop_id,
prs_debiteur_naam,
vf.prs_kostenplaats_nr,
vf.prs_kostenplaats_omschrijving;
CREATE OR REPLACE VIEW ykpn_v_export_cirfood (result, result_order)
AS
SELECT fac_rapport_regel, fac_rapport_volgnr
FROM fac_rapport
WHERE fac_rapport_node = 'CIRFOOD';
CREATE OR REPLACE PROCEDURE ykpn_select_cirfood (p_applname IN VARCHAR2,
p_applrun IN VARCHAR2)
AS
CURSOR c_kop
IS
SELECT prs_kostenplaats_nr
FROM fin_verkoopfactuur
WHERE fin_verkoopfactuur_xmlnode = 'res_artikel'
AND fin_verkoopfactuurkop_key IS NULL
GROUP BY prs_kostenplaats_nr;
CURSOR c_rap IS
SELECT result, resultorder
FROM ykpn_v_verkoop_cirfood_t
ORDER BY resultorder;
v_first NUMBER;
v_count NUMBER;
v_index NUMBER;
v_boekstuknr VARCHAR2(100);
v_verkoopfactuurkop_key NUMBER(10);
v_errormsg VARCHAR (200);
v_errorhint VARCHAR (200);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
BEGIN
v_errorhint := 'Verwijder verkoopfacturen die niet geexporteerd zijn.';
DELETE fin_verkoopfactuur
WHERE fin_verkoopfactuur_xmlnode = 'res_artikel'
AND fin_verkoopfactuur_datum IS NULL;
DELETE fin_verkoopfactuurkop vfk
WHERE NOT EXISTS ( SELECT 1
FROM fin_verkoopfactuur vf
WHERE vf.fin_verkoopfactuurkop_key = vfk.fin_verkoopfactuurkop_key);
v_errorhint := 'Voeg de records toe aan de verkoopfactuur tabel.';
INSERT INTO fin_verkoopfactuur (fin_verkoopfactuur_id,
fin_verkoopfactuur_omschr,
fin_verkoopfactuur_xmlnode,
fin_verkoopfactuur_refkey,
prs_kostenplaats_key,
prs_kostenplaats_nr,
prs_kostenplaats_omschrijving,
prs_bedrijf_key,
prs_debiteur_naam,
fin_btwtabelwaarde_perc,
fin_btwtabelwaarde_code,
fin_verkoopfactuur_bedrag,
prs_kostensoort_refcode)
SELECT TO_CHAR (SYSDATE, 'YYYYMMDD')
|| '-'
|| prs_kostenplaats_nr
|| '-'
|| rra.res_rsv_artikel_key,
rra.res_rsv_artikel_aantal || '*' || ra.res_artikel_omschrijving,
'res_artikel',
rra.res_rsv_artikel_key,
k.prs_kostenplaats_key,
k.prs_kostenplaats_nr,
k.prs_kostenplaats_omschrijving,
b.prs_bedrijf_key,
prs_overeenkomst_nr,
ra.res_artikel_btw,
DECODE (ra.res_artikel_btw, 0, '00', 9, '8', 21, '1'),
rra.res_rsv_artikel_prijs,
DECODE (ra.res_artikel_btw, 0, '8200', 9, '8210', 21, '8220')
FROM res_rsv_artikel rra,
res_artikel ra,
res_discipline rd,
res_disc_params rdp,
prs_bedrijf b,
res_rsv_ruimte rrr,
prs_kostenplaats k
WHERE rrr.res_rsv_ruimte_key = rra.res_rsv_ruimte_key
AND rrr.prs_kostenplaats_key = k.prs_kostenplaats_key(+)
AND rra.res_artikel_key = ra.res_artikel_key
AND ra.res_discipline_key = rd.ins_discipline_key
AND rd.ins_discipline_key = rdp.res_ins_discipline_key
AND rra.res_status_bo_key = 5 -- afgemeld
AND rdp.prs_bedrijf_key = b.prs_bedrijf_key
AND rdp.prs_bedrijf_key = 90501 -- Cirfood algemeen
AND rra.res_rsv_artikel_verwijder IS NULL
AND ra.res_artikel_btw IN (0, 9, 21);
-- Zoek het laatste boekstuknummer op
v_errorhint := 'Zoek het vorige boekstuknummer op';
SELECT MAX(SUBSTR(fin_verkoopfactuurkop_id, 9,100))
INTO v_boekstuknr
FROM fin_verkoopfactuur vf,
fin_verkoopfactuurkop vfk
WHERE vf.fin_verkoopfactuurkop_key = vfk.fin_verkoopfactuurkop_key
AND vf.fin_verkoopfactuur_xmlnode = 'res_artikel';
IF v_boekstuknr IS NULL
THEN
v_boekstuknr := '20200001';
END IF;
-- Dan gaan we nu voor de nieuwe facturen het boekstuknummer invullen.
FOR rec IN c_kop
LOOP
BEGIN
v_boekstuknr := v_boekstuknr + 1;
v_errorhint := 'Maak nieuw boekstuknummer aan: ' || v_boekstuknr;
INSERT INTO fin_verkoopfactuurkop (fin_verkoopfactuurkop_id)
VALUES ('Cirfood-' || v_boekstuknr)
RETURNING fin_verkoopfactuurkop_key INTO v_verkoopfactuurkop_key;
v_errorhint := 'Koppel de facturen aan het boekstuknummer: ' || v_boekstuknr || ' kostenplaats: ' || rec.prs_kostenplaats_nr;
UPDATE fin_verkoopfactuur
SET fin_verkoopfactuurkop_key = v_verkoopfactuurkop_key
WHERE fin_verkoopfactuur_xmlnode = 'res_artikel'
AND fin_verkoopfactuurkop_key IS NULL
AND prs_kostenplaats_nr = rec.prs_kostenplaats_nr;
END;
END LOOP;
v_errorhint := 'Verwijder de oude records uit de fac_rapport tabel';
DELETE fac_rapport WHERE fac_rapport_node = 'CIRFOOD';
v_count := 0;
v_index := 0;
FOR rec IN c_rap
LOOP
BEGIN
v_errorhint := 'Pas het volgnummer in de regel aan: ' || SUBSTR(rec.result,1,50);
v_index := v_index + 1;
v_first := substr(rec.result, 1,1);
IF v_first = 0 THEN
v_count := 0;
ELSE
v_count := v_count + 1;
END IF;
INSERT INTO fac_rapport (
fac_rapport_node,
fac_rapport_regel,
fac_rapport_volgnr)
VALUES (
'CIRFOOD',
v_count || substr (rec.result, 2),
v_index);
END;
END LOOP;
v_errorhint := 'Zet de status van de artikelen naar verwerkt';
UPDATE res_rsv_artikel SET res_status_bo_key = 6
WHERE res_rsv_artikel_key IN (SELECT fin_verkoopfactuur_refkey
FROM fin_verkoopfactuur
WHERE fin_verkoopfactuur_xmlnode = 'res_artikel'
AND fin_verkoopfactuur_datum IS NULL);
v_errorhint := 'Markeer de verkoopfactuur regels om aan te geven dat we klaar zijn';
UPDATE fin_verkoopfactuur SET fin_verkoopfactuur_datum = SYSDATE
WHERE fin_verkoopfactuur_xmlnode = 'res_artikel'
AND fin_verkoopfactuur_datum IS NULL;
EXCEPTION WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
ROLLBACK;
fac.writelog ('CIRFOOD', 'E', v_errormsg, v_errorhint);
END;
/
-- Importfunctie om objecten (mobiele telefoons) in Facilitor in te lezen
CREATE OR REPLACE PROCEDURE ykpn_import_ins_mob (p_import_key IN NUMBER)
AS
BEGIN
fac_import_ins (p_import_key);
END;
/
CREATE OR REPLACE PROCEDURE ykpn_update_ins_mob (p_import_key IN NUMBER)
AS
CURSOR c
IS
SELECT *
FROM fac_imp_ins i;
v_perslid_key NUMBER(10);
BEGIN
-- als de locatiecode minder dan 3 posities heeft dan moeten we er een voorloopnul aan toevoegen.
UPDATE fac_imp_ins
SET alg_locatie_code = '0' || alg_locatie_code
WHERE LENGTH (alg_locatie_code) = 2;
-- Eerst de standaard import
fac_update_ins (p_import_key);
-- En vervolgens de ruisnaam koppelen als uitleen
FOR rec IN c
LOOP
BEGIN
SELECT prs_perslid_key
INTO v_perslid_key
FROM prs_perslid
WHERE prs_perslid_verwijder IS NULL
AND prs_perslid_oslogin = UPPER(SUBSTR(rec.ins_kenmerkwaarde1, INSTR(rec.ins_kenmerkwaarde1, '=')+1));
UPDATE ins_deel
SET ins_alg_ruimte_key_org = ins_alg_ruimte_key,
ins_alg_ruimte_type_org = ins_alg_ruimte_type
WHERE ins_deel_omschrijving = rec.ins_deel_omschrijving;
UPDATE ins_deel
SET ins_alg_ruimte_key = v_perslid_key,
ins_alg_ruimte_type = 'P'
WHERE ins_deel_omschrijving = rec.ins_deel_omschrijving;
EXCEPTION WHEN NO_DATA_FOUND
THEN
fac.imp_writelog (
p_import_key,
'E',
'Persoon kan niet gevonden worden en wordt niet gekoppeld: ' || rec.ins_deel_omschrijving || '-' || UPPER(SUBSTR(rec.ins_kenmerkwaarde1, INSTR(rec.ins_kenmerkwaarde1, '=')+1)),
'');
END;
END LOOP;
END;
/
--
-- Importprocedure om mail berichten van de storelocator in Facilitor in te lezen
-- Andere imports zijn ook mogelijk zo is er een specifieke koppeling met Qyn
-- Daarnaast is er een algemene mail import. Hierbij wordt de standaardmelding_key uit
-- een kenmerk bij de persoon gelezen en bepaald de bezetting van deze persoon de locatie.
-- De persoon wordt gevonden door in de login op pto te zoeken.
CREATE OR REPLACE PROCEDURE ykpn_processemail (pfrom IN VARCHAR2,
pto IN VARCHAR2,
psubject IN VARCHAR2,
pbody IN VARCHAR2,
psessionid IN VARCHAR2,
pemailkey IN NUMBER)
AS
v_errormsg VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_perslid_key NUMBER (10);
v_kostenplaats_key NUMBER (10);
v_stdmelding_key NUMBER (10);
v_stdmelding_uvt mld_stdmelding.mld_stdmelding_t_uitvoertijd%TYPE
:= MLD_T_UITVOERTIJD (NULL, NULL); -- constructor initialisatie
v_stdmelding2_key NUMBER (10);
v_stdmelding2_uvt mld_stdmelding.mld_stdmelding_t_uitvoertijd%TYPE
:= MLD_T_UITVOERTIJD (NULL, NULL); -- constructor initialisatie
v_deel_key NUMBER (10);
v_locatie_key NUMBER (10);
v_locatie_code VARCHAR2(100);
v_melding_key NUMBER (10);
v_kenmerk_key NUMBER (10);
v_bedrijf_key NUMBER (10);
v_opdr_key NUMBER (10);
v_typeopdr_key NUMBER (10);
v_statusopdr_key NUMBER (10);
v_behandelaar_key NUMBER (10);
v_behandelaar2_key NUMBER (10);
v_regexp VARCHAR2 (100);
v_opdr_id VARCHAR2 (100);
v_mld_id VARCHAR2 (100);
v_notificatie_code VARCHAR2 (10);
v_link VARCHAR2 (4000);
-- Qyn koppeling
v_naam VARCHAR2(100); -- Topdesk nummer
v_externnummer VARCHAR2(100); -- Facilitor nummer
v_date_txt VARCHAR2(100); -- Datum in tekst formaat
v_closed VARCHAR2(100); -- Indicatie true / false of de melding afgesloten is.
v_oplossing VARCHAR2(1000); -- Oplostekst
v_actie VARCHAR2(1000); -- Update afhandeling
v_date DATE; -- Datum in date formaat
v_from_key NUMBER(10); -- Key van de afzender
-- Corona bezoek
v_locatie VARCHAR2(1000);
v_bezoeker VARCHAR2(1000);
v_reden VARCHAR2(1000);
v_datum VARCHAR2(1000);
v_aanvrager VARCHAR2(1000);
v_bedrijfsmiddel VARCHAR2(1000);
v_afspraak_key NUMBER;
FUNCTION get_xml_tag (p_line IN VARCHAR2, p_tag IN VARCHAR2) RETURN VARCHAR2
AS
v_start NUMBER;
v_einde NUMBER;
BEGIN
v_start := INSTR(p_line, '<' || p_tag || '>') + LENGTH('<' || p_tag || '>');
v_einde := INSTR(p_line, '</' || p_tag || '>') - v_start;
IF v_start = 0 OR v_einde < 1
THEN
RETURN NULL;
ELSE
RETURN substr(p_line, v_start, v_einde);
END IF;
END;
BEGIN
CASE
WHEN UPPER (pto) LIKE 'QYN@%'
THEN
DELETE fac_rapport
WHERE fac_rapport_node = 'PROCESSEMAIL';
INSERT INTO fac_rapport (fac_rapport_node,
fac_rapport_volgnr,
fac_rapport_regel)
VALUES ('PROCESSEMAIL', 1, pbody);
SELECT prs_perslid_key
INTO v_from_key
FROM prs_perslid
WHERE UPPER(prs_perslid_email) = UPPER(pfrom);
v_naam := get_xml_tag(pbody, 'naam');
v_externnummer := get_xml_tag(pbody, 'externnummer');
v_date_txt := get_xml_tag(pbody, 'date');
v_date_txt := REPLACE(SUBSTR(v_date_txt, 1, INSTR(v_date_txt, '+')-1), 'T', ' ');
v_closed := get_xml_tag(pbody, 'closed');
v_oplossing := get_xml_tag(pbody, 'oplossing');
v_actie := get_xml_tag(pbody, 'actie');
v_date := FAC.safe_to_date(v_date_txt, 'yyyy-mm-dd hh24:mi:ss');
INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_volgnr, fac_rapport_regel) VALUES ('PROCESSEMAIL', 2, 'naam: '|| SUBSTR(v_naam, 1, 1900));
INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_volgnr, fac_rapport_regel) VALUES ('PROCESSEMAIL', 3, 'externnummer: '|| SUBSTR(v_externnummer, 1, 1900));
INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_volgnr, fac_rapport_regel) VALUES ('PROCESSEMAIL', 4, 'date_txt: '|| SUBSTR(v_date_txt, 1, 1900));
INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_volgnr, fac_rapport_regel) VALUES ('PROCESSEMAIL', 5, 'date: '|| SUBSTR(v_date, 1, 1900));
INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_volgnr, fac_rapport_regel) VALUES ('PROCESSEMAIL', 6, 'closed: '|| SUBSTR(v_closed, 1, 1900));
INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_volgnr, fac_rapport_regel) VALUES ('PROCESSEMAIL', 7, 'oplossing: ' || SUBSTR(v_oplossing, 1, 1900));
INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_volgnr, fac_rapport_regel) VALUES ('PROCESSEMAIL', 8, 'actie: '|| SUBSTR(v_actie, 1, 1900));
v_errormsg := 'Opzoeken van de opdracht: ' || REGEXP_SUBSTR (v_externnummer, '[[:digit:]]{5,}/[[:digit:]]*') || ' Afzender:' || pfrom;
SELECT mld_opdr_key, mld_melding_key, mld_typeopdr_key, mld_statusopdr_key
INTO v_opdr_key, v_melding_key, v_typeopdr_key, v_statusopdr_key
FROM mld_opdr o, prs_contactpersoon cp
WHERE mld_melding_key || '/' || mld_opdr_bedrijfopdr_volgnr = REGEXP_SUBSTR (v_externnummer, '[[:digit:]]{5,}/[[:digit:]]*')
AND o.mld_uitvoerende_keys = cp.prs_bedrijf_key
AND cp.prs_perslid_key = v_from_key;
v_errormsg := 'Accepteer opdracht: ' || REGEXP_SUBSTR (v_externnummer, '[[:digit:]]{5,}/[[:digit:]]*') || ' Afzender:' || pfrom;
IF v_statusopdr_key = 5 -- Toegekend
THEN
mld.setopdrachtstatus (v_opdr_key, 8, v_from_key); -- Geaccepteerd.
END IF;
BEGIN
v_errormsg := 'Opzoeken kenmerk[Ref. Nr. Leverancier]: ' || REGEXP_SUBSTR (v_externnummer, '[[:digit:]]{5,}/[[:digit:]]*') || ' Afzender:' || pfrom;
SELECT mld_kenmerk_key
INTO v_kenmerk_key
FROM mld_kenmerk
WHERE mld_kenmerk_niveau = 'O'
AND mld_typeopdr_key = v_typeopdr_key
AND mld_srtkenmerk_key = 18; -- Ref. Nr. Leverancier
YKPN.set_kenmerk('MLD', v_kenmerk_key, v_opdr_key, v_naam, 0);
EXCEPTION WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
v_errormsg
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.writelog ('PROCESSEMAIL',
'I',
'Ref. nr leverancier kan niet opgeslagen worden.',
v_errormsg);
END;
IF v_closed IS NULL OR v_closed = 'false'
THEN
INSERT INTO mld_opdr_note (mld_opdr_key, prs_perslid_key, mld_opdr_note_omschrijving)
VALUES (v_opdr_key, v_from_key, v_actie);
ELSE
UPDATE mld_opdr SET mld_opdr_opmerking = v_oplossing || chr(13) || mld_opdr_opmerking
WHERE mld_opdr_key = v_opdr_key;
-- meld de opdracht af
MLD.setopdrachtstatus (v_opdr_key, 6, v_from_key);
MLD.updatemeldingstatus (v_melding_key, 0, v_from_key);
END IF;
WHEN UPPER (pto) LIKE 'NOREPLY@%'
THEN
IF UPPER (pfrom) = 'KLANTEN@OFFICEDEPOT.NL'
THEN
-- We scannen het onderwerp van de mail op het opdracht_id
v_regexp := '[[:alpha:]]*[[:digit:]]{5,}/[[:digit:]]*';
v_opdr_id := REGEXP_SUBSTR (psubject, v_regexp);
-- Nu nog even de srtdisc prefix er af halen.
v_regexp := '[[:digit:]]{5,}/[[:digit:]]*';
v_opdr_id := REGEXP_SUBSTR (v_opdr_id, v_regexp);
v_errormsg := 'Opzoeken van de opdracht: ' || v_opdr_id;
SELECT mld_opdr_key
INTO v_opdr_key
FROM mld_opdr
WHERE mld_melding_key || '/' || mld_opdr_bedrijfopdr_volgnr = v_opdr_id;
-- API-user tbv. OfficeDepot-koppeling key=63741
INSERT INTO mld_opdr_note (mld_opdr_key, prs_perslid_key, mld_opdr_note_omschrijving)
VALUES (v_opdr_key, 63741, pbody);
FAC.trackaction('CUST10', v_opdr_key, 63741, NULL, NULL);
ELSE
DELETE fac_rapport
WHERE fac_rapport_node = 'PROCESSEMAI2';
INSERT INTO fac_rapport (fac_rapport_node,
fac_rapport_volgnr,
fac_rapport_regel)
VALUES ('PROCESSEMAI2', 1, SUBSTR(pbody, 1, 1900));
BEGIN
-- De afzender moet nu geregistreerd staan anders wordt de mail niet afgehandeld.
v_errormsg := 'Opzoeken afzender/melder';
SELECT prs_perslid_key
INTO v_from_key
FROM prs_perslid
WHERE UPPER(prs_perslid_email) = UPPER(pfrom);
v_naam := get_xml_tag(pbody, 'naam');
v_externnummer := get_xml_tag(pbody, 'externnummer');
v_date_txt := get_xml_tag(pbody, 'date');
v_date_txt := REPLACE(SUBSTR(v_date_txt, 1, INSTR(v_date_txt, '+')-1), 'T', ' ');
v_date := FAC.safe_to_date(v_date_txt, 'yyyy-mm-dd hh24:mi:ss');
INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_volgnr, fac_rapport_regel) VALUES ('PROCESSEMAI2', 2, 'naam: '|| SUBSTR(v_naam, 1, 1900));
INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_volgnr, fac_rapport_regel) VALUES ('PROCESSEMAI2', 3, 'externnummer: '|| SUBSTR(v_externnummer, 1, 1900));
INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_volgnr, fac_rapport_regel) VALUES ('PROCESSEMAI2', 4, 'date_txt: '|| SUBSTR(v_date_txt, 1, 1900));
INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_volgnr, fac_rapport_regel) VALUES ('PROCESSEMAI2', 5, 'date: '|| SUBSTR(v_date, 1, 1900));
v_errormsg := 'Opzoeken van de opdracht';
SELECT mld_opdr_key, mld_melding_key
INTO v_opdr_key, v_melding_key
FROM mld_opdr o, prs_contactpersoon cp
WHERE mld_melding_key || '/' || mld_opdr_bedrijfopdr_volgnr = REPLACE(v_externnummer, 'R')
AND o.mld_uitvoerende_keys = cp.prs_bedrijf_key
AND cp.prs_perslid_key = v_from_key;
-- vul de referentie bij van de leverancier in.
YKPN.set_kenmerk('MLD', 3261, v_opdr_key, v_naam, 0);
EXCEPTION WHEN NO_DATA_FOUND
THEN
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (psessionid,
'maillog',
'Ongeregistreerde afzender, mail wordt genegeerd: ' || pfrom);
END;
END IF;
WHEN UPPER (pto) LIKE 'BEZOEK@%'
THEN
BEGIN
v_errorhint := 'Opzoeken velden in de mail';
v_locatie := SUBSTR(pbody, INSTR(pbody, 'Locatie Code: ')+ 14, INSTR(pbody, CHR (10), INSTR(pbody, 'Locatie Code: '))-(INSTR(pbody, 'Locatie Code: ')+ 14));
IF v_locatie IS NULL
THEN
v_locatie := SUBSTR(pbody, INSTR(pbody, 'Locatiecode: ')+ 13, INSTR(pbody, CHR (10), INSTR(pbody, 'Locatiecode: '))-(INSTR(pbody, 'Locatiecode: ')+ 13));
END IF;
v_datum := SUBSTR(pbody, INSTR(pbody, 'Datum: ')+ 7, INSTR(pbody, CHR (10), INSTR(pbody, 'Datum: '))-(INSTR(pbody, 'Datum: ')+ 7));
v_bezoeker := SUBSTR(pbody, INSTR(pbody, 'Naam bezoeker(s): ')+ 18, INSTR(pbody, CHR (10), INSTR(pbody, 'Naam bezoeker(s): '))-(INSTR(pbody, 'Naam bezoeker(s): ')+ 18));
v_reden := SUBSTR(pbody, INSTR(pbody, 'Reden bezoek: ')+ 14, INSTR(pbody, CHR (10), INSTR(pbody, 'Reden bezoek: '))-(INSTR(pbody, 'Reden bezoek: ')+ 14));
v_aanvrager := SUBSTR(pbody, INSTR(pbody, 'Naam aanvrager: ')+ 16, INSTR(pbody, CHR (10), INSTR(pbody, 'Naam aanvrager: '))-(INSTR(pbody, 'Naam aanvrager: ')+ 16));
v_bedrijfsmiddel := SUBSTR(pbody, INSTR(pbody, 'Afhalen bedrijfsmiddel: ')+ 24, INSTR(pbody, CHR (10), INSTR(pbody, 'Afhalen bedrijfsmiddel: '))-(INSTR(pbody, 'Afhalen bedrijfsmiddel: ')+ 24));
DELETE fac_rapport WHERE fac_rapport_node = 'PROCE BEZOEK';
INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_volgnr, fac_rapport_regel) VALUES ('PROCE BEZOEK', 1, 'locatie: '|| SUBSTR(v_locatie, 1, 1900));
INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_volgnr, fac_rapport_regel) VALUES ('PROCE BEZOEK', 2, 'datum: '|| SUBSTR(v_datum, 1, 1900));
INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_volgnr, fac_rapport_regel) VALUES ('PROCE BEZOEK', 3, 'bezoeker: '|| SUBSTR(v_bezoeker, 1, 1900));
INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_volgnr, fac_rapport_regel) VALUES ('PROCE BEZOEK', 4, 'reden: '|| SUBSTR(v_reden, 1, 1900));
INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_volgnr, fac_rapport_regel) VALUES ('PROCE BEZOEK', 5, 'aanvrager: '|| SUBSTR(v_aanvrager, 1, 1900));
INSERT INTO fac_rapport (fac_rapport_node, fac_rapport_volgnr, fac_rapport_regel) VALUES ('PROCE BEZOEK', 6, 'bedrijfsmiddel: '|| SUBSTR(v_bedrijfsmiddel, 1, 1900));
v_errorhint := 'Opzoeken locatie';
SELECT l.alg_locatie_key
INTO v_locatie_key
FROM alg_locatie l, alg_gebouw g
WHERE l.alg_locatie_key = g.alg_locatie_key
AND g.alg_gebouw_verwijder IS NULL
AND g.alg_gebouw_code = v_locatie;
v_errorhint := 'Toevoegen afspraak';
INSERT INTO bez_afspraak (prs_perslid_key,
bez_afspraak_host_key,
bez_afspraak_contact_key,
bez_afspraak_datum,
bez_actie_key,
alg_locatie_key,
bez_afspraak_opmerking,
bez_afspraak_eind)
VALUES (50552,
50552,
50552,
TO_DATE (v_datum || ' 08:00', 'yyyy-mm-dd hh24:mi'),
5,
v_locatie_key,
SUBSTR(DECODE (v_reden, NULL,
DECODE( v_bedrijfsmiddel, NULL, NULL,
'Afhalen bedrijfsmiddel: ' || v_bedrijfsmiddel),
'Reden: ' || v_reden), 1,320),
TO_DATE (v_datum || ' 18:00', 'yyyy-mm-dd hh24:mi'))
RETURNING bez_afspraak_key
INTO v_afspraak_key;
v_errorhint := 'Toevoegen bezoeker';
INSERT INTO bez_bezoekers (bez_afspraak_key, bez_afspraak_naam)
VALUES (v_afspraak_key, SUBSTR(v_bezoeker || v_aanvrager,1,30));
v_errorhint := 'Toevoegen resultaat';
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (psessionid,
'maillog',
'Geregistreerd onder afspraak ' || v_afspraak_key);
EXCEPTION WHEN NO_DATA_FOUND
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
v_errormsg
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.writelog ('PROCESSEMAIL',
'E',
v_errormsg,
v_errorhint);
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (psessionid,
'errormsg',
'Fout bij inleze mail: ' || v_errorhint);
END;
ELSE
v_errormsg := 'Fout bij bepalen melder';
-- Meldingen worden gekoppeld aan de persoon met het emailadres.
SELECT p.prs_perslid_key, a.prs_kostenplaats_key
INTO v_perslid_key, v_kostenplaats_key
FROM prs_v_aanwezigperslid p, prs_afdeling a
WHERE p.prs_perslid_oslogin = '_' || UPPER (SUBSTR(pto, 1, INSTR(pto, '@')-1))
AND p.prs_afdeling_key = a.prs_afdeling_key;
fac.writelog ('PROCESSEMAIL', 'I', 'melder: ' || v_perslid_key || ' Email: ' || pto, '');
v_errormsg := 'Fout bij bepalen email-melding';
SELECT sm.mld_stdmelding_key, sm.mld_stdmelding_t_uitvoertijd
INTO v_stdmelding_key, v_stdmelding_uvt
FROM mld_stdmelding sm, prs_kenmerklink kl
WHERE kl.prs_link_key = v_perslid_key
AND kl.prs_kenmerk_key = 1100 -- Stdmelding kenmerk tbv mail import
AND FAC.safe_to_number(kl.prs_kenmerklink_waarde) = sm.mld_stdmelding_key
AND sm.mld_stdmelding_verwijder IS NULL;
fac.writelog ('PROCESSEMAIL', 'I', 'std: '|| v_stdmelding_key, '');
-- Om niet overal email adressen van te maken zet KPN retail alles op <20><>n email adres.
-- Dan kijken we nu maar even of we ook de afzender kennen.
v_errormsg := 'Is de afzender Retailsupport mail?';
IF v_perslid_key = 64801 -- API-user tbv. Retailsupport mail
THEN
BEGIN
SELECT p.prs_perslid_key, a.prs_kostenplaats_key
INTO v_perslid_key, v_kostenplaats_key
FROM prs_v_aanwezigperslid p, prs_afdeling a, prs_kenmerklink kl
WHERE UPPER(p.prs_perslid_email) = UPPER (pfrom)
AND p.prs_afdeling_key = a.prs_afdeling_key
AND kl.prs_link_key = p.prs_perslid_key
AND kl.prs_kenmerk_key = 1100;
-- Nadat de mail gekoppeld is aan een andere persoon gaan we ook kijken of we een andere stdmelding
-- kunnen vinden.
v_errormsg := 'Fout bij bepalen email-melding';
SELECT sm.mld_stdmelding_key, sm.mld_stdmelding_t_uitvoertijd
INTO v_stdmelding2_key, v_stdmelding2_uvt
FROM mld_stdmelding sm, prs_kenmerklink kl
WHERE kl.prs_link_key = v_perslid_key
AND kl.prs_kenmerk_key = 1100 -- Stdmelding kenmerk tbv mail import
AND FAC.safe_to_number(kl.prs_kenmerklink_waarde) = sm.mld_stdmelding_key
AND sm.mld_stdmelding_verwijder IS NULL;
v_stdmelding_key := v_stdmelding2_key;
v_stdmelding_uvt := v_stdmelding2_uvt;
fac.writelog ('PROCESSEMAIL', 'I', 'std: '|| v_stdmelding_key, '');
EXCEPTION WHEN NO_DATA_FOUND
THEN
v_perslid_key := 64801;
END;
ELSIF v_perslid_key = 85961 -- API-user tbv. RetailAssist
THEN
v_errormsg := 'Is de afzender Retailassist?';
BEGIN
SELECT p.prs_perslid_key, a.prs_kostenplaats_key
INTO v_perslid_key, v_kostenplaats_key
FROM prs_perslid p, prs_afdeling a
WHERE UPPER(prs_perslid_email) = UPPER (pfrom)
AND p.prs_afdeling_key = a.prs_afdeling_key
AND LENGTH (prs_perslid_oslogin) = 6 -- We kiezen de hoofdgebruiker van de winkel.
GROUP BY p.prs_perslid_key, a.prs_kostenplaats_key;
EXCEPTION WHEN NO_DATA_FOUND
THEN
v_perslid_key := 85961;
END;
END IF;
fac.writelog ('PROCESSEMAIL', 'I', 'melder na afzendercheck: ' || v_perslid_key || ' Email from: ' || pfrom, '');
-- Nu gaan we uit de bezetting van de persoon de locatie bepalen.
BEGIN
SELECT alg_locatie_key
INTO v_locatie_key
FROM prs_v_perslidwerkplek_gegevens
WHERE prs_perslid_key = v_perslid_key;
EXCEPTION WHEN NO_DATA_FOUND THEN
v_locatie_key := 701; -- Retail algemeen.
END;
-- Specifieke locatie string in bericht voor storelocator
IF UPPER (pto) LIKE 'KPNRETAILMAILIMPORT@%' -- Storelocator
THEN
BEGIN
-- Nu gaan we uit de mail de locatie herleiden. Als dat niet lukt dan zetten we de locatie op onbekend.
v_locatie_code := SUBSTR(pbody, INSTR(pbody, 'ShopNumber: ')+ 12, 3);
SELECT l.alg_locatie_key
INTO v_locatie_key
FROM alg_locatie l
WHERE l.alg_locatie_code = v_locatie_code
AND l.alg_locatie_verwijder IS NULL;
EXCEPTION WHEN NO_DATA_FOUND THEN
v_locatie_key := 501; -- onbekend.
END;
END IF;
-- Controleer of dit een reactie is op een eerdere mail.
-- Vooralsnog alleen aanzetten voor vakgroep Financi<63>n/Financedesk 406
v_mld_id := REGEXP_SUBSTR (psubject, 'Melding [[:alpha:]][[:digit:]]{5,}', 1, 1);
IF v_mld_id IS NOT NULL
AND (LOWER(SUBSTR(psubject, 1, 3)) = 're:' OR LOWER(SUBSTR(psubject, 1, 3)) = 'fw:')
THEN
BEGIN
SELECT mld_melding_key, mld_melding_behandelaar_key, mld_melding_behandelaar2_key, m.mld_stdmelding_key
INTO v_melding_key, v_behandelaar_key, v_behandelaar2_key, v_stdmelding_key
FROM mld_melding m, mld_stdmelding std
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = 406
AND mld_melding_key = REGEXP_SUBSTR (v_mld_id, '[[:digit:]]{5,}', 1, 1);
EXCEPTION WHEN NO_DATA_FOUND
THEN
v_melding_key := NULL;
END;
END IF;
IF v_melding_key IS NULL
THEN
v_errormsg := 'Fout bij toevoegen melding';
fac.writelog ('PROCESSEMAIL', 'I', 'Stdmeldingkey voor aanmaken: '|| v_stdmelding_key, '');
INSERT INTO mld_melding (mld_melding_module,
mld_meldbron_key,
mld_alg_locatie_key,
mld_alg_onroerendgoed_keys,
mld_melding_datum,
mld_melding_omschrijving,
mld_melding_status,
mld_melding_t_uitvoertijd,
mld_stdmelding_key,
prs_perslid_key,
prs_perslid_key_voor,
prs_kostenplaats_key,
mld_melding_spoed)
VALUES ('MLD',
4, -- email
v_locatie_key,
NULL,
SYSDATE,
'Afzender: ' || pfrom || CHR (10) ||
psubject || CHR (10) || SUBSTR(pbody, 1, 3800),
NULL,
v_stdmelding_uvt,
v_stdmelding_key,
v_perslid_key,
v_perslid_key,
NULL,
3) -- prio normaal
RETURNING mld_melding_key
INTO v_melding_key;
v_errormsg := 'Fout bij statuswijziging';
mld.setmeldingstatus (v_melding_key, 2, v_perslid_key);
IF v_stdmelding_key = 2661 -- R-Hoofdkantoor / Processen/Feedback
THEN
BEGIN
v_link := SUBSTR(pbody, INSTR(pbody, 'Link: https://retailassist-retail.kpnnet.org') + 6);
v_link := SUBSTR(v_link, 1, INSTR(v_link, CHR(13))-1);
v_link := SUBSTR(v_link, 1, INSTR(v_link, CHR(10))-1);
IF lower(v_link) LIKE 'https:%'
THEN
-- 6681 is de key van het kenmerk link bij deze stdmelding
INSERT INTO mld_kenmerkmelding (mld_melding_key, mld_kenmerk_key , mld_kenmerkmelding_waarde)
VALUES (v_melding_key, 6681, v_link);
END IF;
EXCEPTION WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.writelog ('PROCESSEMAIL', 'E', 'Kan kenmerk: 6681 niet opslaan bij melding: ' || v_melding_key || '[' || pfrom || '] ' || v_errormsg, '');
END;
END IF;
-- We gaan nu kijken of we een opdracht kunnen koppelen aan de melding
v_errormsg := 'Fout bij zoeken bedrijf in BDL';
BEGIN
SELECT MAX (bdl.prs_bedrijf_key) prs_bedrijf_key,
std.mld_typeopdr_key
INTO v_bedrijf_key, v_typeopdr_key
FROM mld_stdmelding std,
prs_bedrijfdienstlocatie bdl
WHERE std.mld_stdmelding_key = v_stdmelding_key
AND std.mld_stdmelding_autoorder = 1
AND std.prs_dienst_key = bdl.prs_dienst_key
AND std.mld_typeopdr_key IS NOT NULL
AND ( bdl.alg_locatie_key = v_locatie_key
OR ( bdl.alg_locatie_key IS NULL
AND NOT EXISTS (SELECT bdl2.prs_bedrijfdienstlocatie_key
FROM prs_bedrijfdienstlocatie bdl2
WHERE bdl2.prs_dienst_key = bdl.prs_dienst_key
AND bdl2.alg_locatie_key = v_locatie_key)))
GROUP BY mld_typeopdr_key;
v_errormsg := 'Fout bij statuswijziging naar geaccepteerd';
mld.setmeldingstatus (v_melding_key, 4, v_perslid_key);
v_errormsg := 'Fout bij toevoegen opdracht';
INSERT INTO mld_opdr (mld_melding_key
, prs_kostenplaats_key
, mld_typeopdr_key
, prs_perslid_key
, mld_uitvoerende_keys
, mld_opdr_datumbegin
, mld_opdr_einddatum
, mld_opdr_module
, mld_opdr_omschrijving
, mld_opdr_bedrijfopdr_volgnr
, mld_opdr_teverzenden)
VALUES ( v_melding_key
, NULL
, v_typeopdr_key
, v_perslid_key
, v_bedrijf_key
, SYSDATE
, SYSDATE + 7
, 'MLD'
, psubject || CHR (10) || SUBSTR(pbody, 1, 3900)
, MLD.BepaalOpdrMeldingVolgnr (v_melding_key)
, 1)
RETURNING mld_opdr_key INTO v_opdr_key;
v_errormsg := 'Fout bij aanpassen opdracht status';
MLD.setopdrachtstatus(v_opdr_key , 5, v_perslid_key); -- uitgegeven
v_errormsg := 'Fout bij notificatieverzending';
SELECT DECODE (u.type, 'P', 'ORDMLI', 'ORDMLE')
INTO v_notificatie_code
FROM mld_v_uitvoerende u
WHERE u.mld_uitvoerende_key = v_bedrijf_key;
FAC.trackaction(v_notificatie_code, v_opdr_key, v_perslid_key, NULL, NULL);
-- update melding status
v_errormsg := 'Fout bij bijwerken melding status';
MLD.updatemeldingstatus (v_melding_key, 0, v_perslid_key);
EXCEPTION WHEN NO_DATA_FOUND THEN
NULL; -- er is geen bedrijf - dienst - locatie voor deze melding gedefinieerd. Dus wordt er ook geen opdracht aangemaakt.
END; -- toevoegen opdracht
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (psessionid,
'maillog',
'Geregistreerd onder melding ' || v_melding_key);
ELSE
-- we gaan nu een notitie toevoegen aan de melding
INSERT INTO mld_melding_note (mld_melding_key,
mld_melding_note_omschrijving,
prs_perslid_key,
mld_melding_note_flag)
VALUES (v_melding_key,
SUBSTR (
psubject || CHR (13)
|| REPLACE (
SUBSTR (pbody,
1,
4000 - (LENGTH (psubject) + 2)),
CHR (13) || CHR (10) || CHR (13) || CHR (10),
CHR (10)),
1,
4000), -- verwijder onnodige witregels
v_perslid_key,
0); -- 0 is niet zichtbaar FE.
-- Default tracking is even goed genoeg
fac.trackaction ('MLDNOT',
v_melding_key,
v_perslid_key,
NULL,
'#Notitie toegevoegd vanuit e-mail'); -- # voorkomt notificatie
-- DBMS_OUTPUT.PUT_LINE('Notitie toegevoegd.');
-- Eerst naar de active behandelaar
IF v_behandelaar2_key IS NOT NULL
THEN
fac.putnotificationsrtprio (NULL, v_behandelaar2_key, 'MLDNOB', v_melding_key,
'Melding ' || v_melding_key || ' is door de klant aangepast.',
2, NULL, NULL, NULL, 2, NULL);
ELSIF v_behandelaar_key IS NOT NULL
THEN
fac.putnotificationsrtprio (NULL, v_behandelaar_key, 'MLDNOB', v_melding_key,
'Melding ' || v_melding_key || ' is door de klant aangepast.',
2, NULL, NULL, NULL, 2, NULL);
END IF;
-- Vlaggetjes zetten zoals mld_edit_note.asp dat doet
UPDATE mld_melding
SET mld_melding_actiecode = 1+128 -- Backoffice + Attentie
WHERE mld_melding_key = v_melding_key;
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (psessionid,
'maillog',
'Reactie toegevoegd aan melding ' || v_melding_key);
END IF;
-- Zoek het laagste bijlagen kenmerk om de bijlagen onder te stoppen
v_errormsg := 'Fout bij zoeken naar kenmerkbijlage';
SELECT MIN (mld_kenmerk_key)
INTO v_kenmerk_key
FROM mld_kenmerk k,
mld_srtkenmerk sk,
mld_stdmelding std,
ins_tab_discipline d
WHERE mld_srtkenmerk_kenmerktype = 'M'
AND sk.mld_srtkenmerk_key = k.mld_srtkenmerk_key
AND std.mld_stdmelding_key = v_stdmelding_key
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND ( (k.mld_stdmelding_key = std.mld_stdmelding_key
AND k.mld_kenmerk_niveau = 'S')
OR (k.mld_stdmelding_key = d.ins_discipline_key
AND k.mld_kenmerk_niveau = 'D')
OR (k.mld_stdmelding_key = d.ins_srtdiscipline_key
AND k.mld_kenmerk_niveau = 'T'))
AND k.mld_kenmerk_verwijder IS NULL
AND NOT EXISTS
(SELECT mld_kenmerk_volgnummer
FROM mld_kenmerk k1,
mld_srtkenmerk sk1,
mld_stdmelding std1,
ins_tab_discipline d1
WHERE sk1.mld_srtkenmerk_kenmerktype = 'M'
AND sk1.mld_srtkenmerk_key = k1.mld_srtkenmerk_key
AND std1.mld_stdmelding_key = v_stdmelding_key
AND std1.mld_ins_discipline_key =
d1.ins_discipline_key
AND ( (k1.mld_stdmelding_key =
std1.mld_stdmelding_key
AND k1.mld_kenmerk_niveau = 'S')
OR (k1.mld_stdmelding_key = d1.ins_discipline_key
AND k1.mld_kenmerk_niveau = 'D')
OR (k1.mld_stdmelding_key =
d1.ins_srtdiscipline_key
AND k1.mld_kenmerk_niveau = 'T'))
AND k1.mld_kenmerk_verwijder IS NULL
AND k1.mld_kenmerk_volgnummer >
k.mld_kenmerk_volgnummer);
IF v_kenmerk_key IS NOT NULL
THEN
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (psessionid,
'kenmerkpath',
'MLD\M' || TO_CHAR (TRUNC (v_melding_key / 1000), 'FM0000') || '___\M' || v_melding_key || '\' || v_kenmerk_key || '\');
END IF;
-- originele email wordt opgeslagen bij de melding
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (psessionid,
'kenmerkorgmailpath',
'MLD\M' || TO_CHAR (TRUNC (v_melding_key / 1000), 'FM0000') || '___\M' || v_melding_key || '\' || 8281 || '\');
END CASE;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
v_errormsg
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.writelog ('PROCESSEMAIL',
'E',
'ykpn_processemail afgebroken!',
'[' || pfrom || '] ' || v_errormsg);
INSERT INTO fac_result (fac_result_sessionid,
fac_result_naam,
fac_result_waarde)
VALUES (psessionid,
'errormsg',
'Database fout - Neem contact op met uw systeembeheerder ');
COMMIT;
END;
/
-- View om bestel informatie te laten zien incl cluster
CREATE OR REPLACE VIEW ykpn_v_rap_retail_bestellingen
AS
SELECT b.bes_bestelling_datum besteldatum,
(SELECT alg_locatie_code
FROM alg_locatie l
WHERE l.alg_locatie_key = ma.alg_locatie_key)
locatie_code,
(SELECT alg_locatie_omschrijving
FROM alg_locatie l
WHERE l.alg_locatie_key = ma.alg_locatie_key)
locatie_omschrijving,
(SELECT alg_onrgoedkenmerk_waarde
FROM alg_onrgoedkenmerk aogk
WHERE aogk.alg_onrgoed_key = ma.alg_locatie_key
AND alg_kenmerk_key = 1340)
clusterx,
(SELECT alg_district_omschrijving
FROM alg_locatie l, alg_district d
WHERE l.alg_district_key = d.alg_district_key
AND l.alg_locatie_key = ma.alg_locatie_key)
district_omschijving,
d.ins_discipline_omschrijving catalogus,
sg.bes_srtgroep_omschrijving groep,
b.bes_bestelling_leverdatum afleverdatum,
sd.bes_srtdeel_omschrijving productomschrijving,
sd.bes_srtdeel_nr productcode,
bi.bes_bestelling_item_prijs * bi.bes_bestelling_item_aantal prijs,
bi.bes_bestelling_item_aantal aantal,
bi.bes_bestelling_item_prijs itemprijs
FROM bes_bestelling b,
prs_perslid p,
mld_adres ma,
bes_bestelling_item bi,
bes_srtdeel sd,
bes_srtgroep sg,
ins_tab_discipline d
WHERE b.prs_perslid_key = p.prs_perslid_key
AND b.mld_adres_key_lev = ma.mld_adres_key
AND b.bes_bestelling_key = bi.bes_bestelling_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;
-- Retail notificatie dat een melding langer dan x dagen. (Bij mld_disc_params) later nog openstaat
-- dan de sla tijd.
CREATE OR REPLACE VIEW YKPN_V_NOTI_RETAIL_HERINNERING
(
CODE,
SENDER,
RECEIVER,
TEXT,
KEY,
XKEY
)
AS
SELECT DISTINCT
'MLDMAI',
NULL,
COALESCE (
COALESCE (m.mld_melding_behandelaar2_key,
m.mld_melding_behandelaar_key),
14744), -- Simone van bijnen
'Herinnering: melding R'
|| m.mld_melding_key
|| ' staat nog open.',
m.mld_melding_key,
NULL
FROM mld_melding m,
mld_stdmelding std,
mld_discipline d,
mld_disc_params dp
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_srtdiscipline_key = 41 -- Retail
AND mld_melding_status NOT IN (5,
6,
1,
7) -- afgemeld, historie, afgewezen, uitgegeven
AND TRUNC (
fac.datumtijdplusuitvoertijd (m.mld_melding_einddatum_std,
mld_disc_params_noti_dagen,
'D')) =
TRUNC (SYSDATE)
AND mld_disc_params_noti_dagen IS NOT NULL
AND TO_CHAR (SYSDATE, 'D') NOT IN (1, 7) -- not op zaterdag en zondag
AND d.ins_discipline_key = dp.mld_ins_discipline_key;
-- Herinnering iedere 5 dagen na de einddatum naar de leverancier.
-- Letop flags = 1
CREATE OR REPLACE VIEW ykpn_v_noti_retail_ext_herinn
(
sender,
receiver,
text,
code,
key,
xkey,
xemail,
xmobile
)
AS
SELECT NULL sender,
NULL receiver,
'Einddatum van opdracht: R'
|| m.mld_melding_key
|| '/'
|| o.mld_opdr_bedrijfopdr_volgnr
|| ' staat al '
|| (TRUNC (SYSDATE) - TRUNC (mld_opdr_einddatum))
|| ' dagen open.' text,
'CUST13' code,
o.mld_opdr_key,
NULL xkey,
b.prs_bedrijf_email xemail,
NULL xmobile
FROM mld_opdr o,
mld_melding m,
mld_stdmelding std,
mld_discipline d,
prs_bedrijf b
WHERE o.mld_melding_key = m.mld_melding_key
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_srtdiscipline_key = 41
AND o.mld_uitvoerende_keys = b.prs_bedrijf_key
AND b.prs_bedrijf_email IS NOT NULL
AND TRUNC (mld_opdr_einddatum) < TRUNC (SYSDATE)
AND MOD ((TRUNC (SYSDATE) - TRUNC (mld_opdr_einddatum)), 7) = 0
AND mld_statusopdr_key IN (5, -- toegekend
8 -- geaccepteerd
);
CREATE OR REPLACE VIEW ykpn_v_noti_fact_note
(code, sender, receiver, text, key, xkey, xemail, xmobile, attachments, xsender)
AS
SELECT 'CUST18' code,
NULL sender,
NULL receiver,
'Factuur '||fin.fin_factuur_nr||' heeft een nieuwe notitie: '|| SUBSTR(fnn.fin_factuur_note_omschrijving,0,1990),
fin.fin_factuur_key key,
NULL xkey,
'kpn@yask.nl' xemail,
NULL xmobile,
NULL attachments,
NULL xsender
FROM fin_factuur fin, fin_factuur_note fnn
WHERE fnn.fin_factuur_key = fin.fin_factuur_key
AND fnn.fin_factuur_note_aanmaak> SYSDATE-1;
CREATE OR REPLACE VIEW YKPN_V_NOTI_OPDRFIAT
(
CODE,
SENDER,
RECEIVER,
TEXT,
KEY,
PAR1,
PAR2,
XKEY
)
AS
SELECT 'CUST23',
NULL,
gg.prs_perslid_key,
'Faittering (JHH) noodzakelijk voor opdracht '||o.mld_melding_key||'/'||o.MLD_OPDR_BEDRIJFOPDR_VOLGNR,
o.mld_opdr_key,
NULL,
NULL,
NULL
FROM mld_opdr o, mld_melding m,prs_kostenplaats k, fac_tracking ft ,fac_srtnotificatie sft, fac_gebruikersgroep gg, fac_groep fg
WHERE o.mld_statusopdr_key=3 -- alleen opdrachten die ter fiatering liggen
AND m.mld_melding_key = o.mld_melding_key
AND m.mld_melding_status IN (4,7) -- alleen in behandeling of uitgegeven mld_status
AND k.prs_kostenplaats_key = o.prs_kostenplaats_key
AND k.prs_perslid_key = 4329 -- Alleen voor fiattering voor budgethouder Horsman-Huberts
AND fg.fac_groep_upper='NOTI_GROEP_OPDR_FIAT'
AND gg.fac_groep_key = fg.fac_groep_key
AND ft.fac_srtnotificatie_key=sft.fac_srtnotificatie_key
AND sft.fac_srtnotificatie_code='ORDFIA'
AND ft.fac_tracking_refkey=o.mld_opdr_key
AND ft.fac_tracking_datum > (SELECT COALESCE(MAX(f.fac_notificatie_job_lastrun), SYSDATE-2/24) -- alleen maar nieuwe opdrachten na de laatse notifictaie run
FROM fac_notificatie_job f
WHERE UPPER(f.fac_notificatie_job_view)='YKPN_V_NOTI_OPDRFIAT');
-- Herinnering naar de winkel als de actie meer dan 7 dagen bij de winkel staat.
CREATE OR REPLACE VIEW ykpn_v_noti_retail_winkel
(
CODE,
SENDER,
RECEIVER,
TEXT,
KEY,
XKEY
)
AS
SELECT 'CUST14',
NULL,
p.prs_perslid_key,
'Herinnering: Actie van melding R'
|| m.mld_melding_key
|| ' ligt al '
|| (TRUNC (SYSDATE) - TRUNC (t.datum))
|| ' dagen bij de winkel.',
m.mld_melding_key,
NULL
FROM mld_melding m,
mld_stdmelding std,
mld_discipline d,
prs_perslid p,
( SELECT MAX (fac_tracking_datum) datum,
fac_tracking_refkey mld_melding_key
FROM fac_tracking t
WHERE t.fac_srtnotificatie_key = 402 -- MLDA2M
AND fac_tracking_datum < SYSDATE - 1
GROUP BY fac_tracking_refkey) t
WHERE mld_melding_actiecode = 2
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = d.ins_discipline_key
AND d.ins_srtdiscipline_key = 41
AND m.prs_perslid_key = p.prs_perslid_key
AND m.mld_melding_key = t.mld_melding_key
AND MOD (TRUNC (t.datum) - TRUNC (SYSDATE), 7) = 0
AND mld_melding_status IN (0,
2,
3,
4,
7,
99);
-- View om de doorlooptijd van openstaande meldingen inzichtelijk te krijgen.
CREATE OR REPLACE VIEW ykpn_v_rap_meldingdoorlooptijd
AS
SELECT m.mld_melding_key,
sd.ins_srtdiscipline_omschrijving,
d.ins_discipline_omschrijving,
std.mld_stdmelding_omschrijving,
m.mld_melding_omschrijving,
TRUNC (SYSDATE - mld_melding_datum) t_melding,
TRUNC (
SYSDATE
- (SELECT MAX (fac_tracking_datum)
FROM fac_tracking
WHERE fac_tracking_refkey = mld_melding_key
AND fac_srtnotificatie_key = 381)) t_behandelaar, -- MLDABH
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames pf
WHERE pf.prs_perslid_key = mld_melding_behandelaar2_key) behandelaar
FROM mld_melding m,
mld_stdmelding std,
ins_tab_discipline d,
ins_srtdiscipline sd
WHERE mld_melding_status IN (0, -- Bij frontoffice
2, -- Nieuw
3, -- Te accepteren
4, -- In behandeling
99, -- Niet opgelost
7) -- Uitgegeven
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;
-- view om de uitnutting voor de winkel bij nieuwe bestelling te tonen.
CREATE OR REPLACE VIEW ykpn_bes_budget_retail
(
prs_perslid_key,
bedrag
)
AS
SELECT p.prs_perslid_key,
SUM (bes_bestelling_item_aantal * bes_bestelling_item_brutoprijs)
bedrag
FROM bes_bestelling b,
bes_bestelling_item bi,
mld_adres a,
alg_locatie l,
prs_perslid p,
prs_v_perslidwerkplek_gegevens pwg
WHERE b.bes_bestelling_key = bi.bes_bestelling_key
AND b.mld_adres_key_lev = a.mld_adres_key
AND a.alg_locatie_key = l.alg_locatie_key
AND prs_perslid_nr LIKE 'MX%'
AND p.prs_perslid_key = pwg.prs_perslid_key
AND pwg.alg_locatie_key = l.alg_locatie_key
AND TRUNC (bes_bestelling_datum, 'Q') = TRUNC (SYSDATE, 'Q')
GROUP BY p.prs_perslid_key;
-- eigen voorraad administratie omdat de standaard versie niet werkt doordat de SSO van kpn ingrijpt.
CREATE OR REPLACE VIEW ykpn_v_rap_voorraad
(
hide_f_extern_diskey,
hide_f_srtgroep_omschrijving,
fclt_f_catalogus,
artikel_nr,
artikel_omschrijving,
artikel_prijs,
magazijn,
min_voorraad,
max_voorraad,
inkoop_geleverd,
intern_besteld,
voorraad,
inkoop_besteld,
inkoop_leverdatum,
inkoop_gewenst
)
AS
SELECT extern.dkey,
COALESCE (intern.bes_srtgroep_omschrijving,
extern.bes_srtgroep_omschrijving),
COALESCE (intern.ins_discipline_omschrijving,
extern.ins_discipline_omschrijving),
extern.bes_srtdeel_nr,
COALESCE (intern.bes_srtdeel_omschrijving,
extern.bes_srtdeel_omschrijving),
COALESCE (intern.srtdeel_prijs, extern.srtdeel_prijs),
intern.magazijn,
extern.vmin,
extern.vmax,
extern.geleverd,
intern.besteld,
extern.geleverd - COALESCE (intern.besteld, 0)
voorraad,
extern.besteld,
TO_CHAR (extern.leverdatum, 'dd-mm-yyyy'),
CASE
WHEN ( ( COALESCE (extern.besteld, 0)
+ COALESCE (extern.geleverd, 0))
- COALESCE (intern.besteld, 0)) <
extern.vmin
THEN
extern.vmax
- ( ( COALESCE (extern.besteld, 0)
+ COALESCE (extern.geleverd, 0))
- COALESCE (intern.besteld, 0))
ELSE
NULL
END
extern_gewenst
FROM (SELECT bd.ins_discipline_key
dkey, -- INKOOP-key
g.bes_srtgroep_omschrijving,
sd.bes_srtdeel_nr, -- ext. artikelnr
sd.bes_srtdeel_omschrijving,
bes.getsrtdeelprijs (sd.bes_srtdeel_key, NULL)
srtdeel_prijs,
bd.ins_discipline_omschrijving, -- ext. catalogusnaam
sd.bes_srtdeel_voorraadmin
vmin, -- ext. voorraadmin
sd.bes_srtdeel_voorraadmax
vmax, -- ext. voorraadmax
(SELECT SUM (
COALESCE (boi.bes_bestelopdr_item_aantal,
bi.bes_bestelling_item_aantal)
- COALESCE (
boi.bes_bestelopdr_item_aantalontv,
0))
FROM bes_bestelling b,
bes_bestelling_item bi,
bes_bestelopdr_item boi
WHERE boi.bes_bestelopdr_item_key(+) =
bi.bes_bestelopdr_item_key
AND COALESCE(bi.bes_bestelling_item_status, 1) IN (2,
3,
4,
5,
6)
AND b.bes_bestelling_key = bi.bes_bestelling_key
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key)
besteld,
(SELECT MIN (b.bes_bestelling_leverdatum)
FROM bes_bestelling b,
bes_bestelling_item bi,
bes_bestelopdr_item boi
WHERE boi.bes_bestelopdr_item_key(+) =
bi.bes_bestelopdr_item_key
AND COALESCE(bi.bes_bestelling_item_status, 1) IN (2,
3,
4,
5,
6)
AND COALESCE (bes_bestelopdr_item_aantal,
bi.bes_bestelling_item_aantal) <>
COALESCE (bes_bestelopdr_item_aantalontv, 0)
AND b.bes_bestelling_key = bi.bes_bestelling_key
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key)
leverdatum,
(SELECT SUM (boi.bes_bestelopdr_item_aantalontv)
FROM bes_bestelling b,
bes_bestelling_item bi,
bes_bestelopdr_item boi
WHERE -- boi.bes_bestelopdr_item_status in (6,7) AND
b.bes_bestelling_key = bi.bes_bestelling_key
AND boi.bes_bestelopdr_item_key =
bi.bes_bestelopdr_item_key
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key)
geleverd
FROM bes_srtdeel sd,
bes_srtgroep g,
bes_discipline bd,
bes_disc_params dp
WHERE sd.bes_srtdeel_verwijder IS NULL
AND sd.bes_srtgroep_key = g.bes_srtgroep_key
AND g.ins_discipline_key = bd.ins_discipline_key
AND bd.ins_discipline_key = dp.bes_ins_discipline_key
AND dp.bes_ins_discipline_key_inkoop IS NULL
AND bd.ins_discipline_key IN
(SELECT bes_ins_discipline_key_inkoop
FROM bes_disc_params
WHERE bes_ins_discipline_key_inkoop IS NOT NULL))
extern -- Inkoop artikelen uit externe catalogus!
FULL JOIN
(SELECT dp.bes_ins_discipline_key_inkoop
dkey, -- INKOOP-key
g.bes_srtgroep_omschrijving,
sd.bes_srtdeel_nr, -- int. artikelnr
sd.bes_srtdeel_omschrijving,
sd.bes_srtdeel_notitie
magazijn,
bes.getsrtdeelprijs (sd.bes_srtdeel_key, NULL)
srtdeel_prijs,
bd.ins_discipline_omschrijving, -- int. catalogusnaam
(SELECT SUM (
COALESCE (boi.bes_bestelopdr_item_aantal,
bi.bes_bestelling_item_aantal))
FROM bes_bestelling b,
bes_bestelling_item bi,
bes_bestelopdr_item boi
WHERE boi.bes_bestelopdr_item_key(+) =
bi.bes_bestelopdr_item_key
AND COALESCE(bi.bes_bestelling_item_status, 1) IN (2,
3,
4,
5,
6)
AND b.bes_bestelling_key = bi.bes_bestelling_key
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key)
besteld
FROM bes_srtdeel sd,
bes_srtgroep g,
bes_discipline bd,
bes_disc_params dp
WHERE sd.bes_srtdeel_verwijder IS NULL
AND sd.bes_srtgroep_key = g.bes_srtgroep_key
AND g.ins_discipline_key = bd.ins_discipline_key
AND bd.ins_discipline_key = dp.bes_ins_discipline_key
AND dp.bes_ins_discipline_key_inkoop IS NOT NULL) intern -- Verkoop artikelen uit interne catalogus!
ON extern.dkey = intern.dkey
AND extern.bes_srtdeel_nr = intern.bes_srtdeel_nr;
CREATE OR REPLACE VIEW ykpn_v_udr_opdracht_kenm
(
opdracht_key,
opdracht_nummer,
opdracht_regio,
opdracht_district,
opdracht_locatie_code,
opdracht_locatie,
opdracht_locatieplaats,
fclt_3d_locatie_key,
opdracht_gebouwcode,
opdracht_gebouw,
opdracht_verdieping,
opdracht_ruimtenr,
opdracht_ruimte,
opdracht_kostenplaats,
opdracht_kostenplaats_oms,
melding_key,
opdracht_type,
opdracht_volgnummer,
opdracht_status,
opdracht_duur_gepland,
opdracht_datum,
opdracht_einddatum,
opdracht_plandatum,
opdracht_acceptdatum,
opdracht_afgemeld,
opdracht_doorlooptijd,
opdracht_accepttijd,
opdracht_omschrijving,
opdracht_opmerking,
opdracht_uitvoerende,
opdracht_uitvoerende_contact,
opdracht_behandelaar,
opdracht_contract,
opdracht_contract_versie,
opdracht_contactpersoon,
opdracht_uren,
opdracht_correctie,
opdracht_materiaal,
opdracht_uurtarief,
opdracht_kosten,
melding_status,
melding_afgemeld,
ongeldige_procuratie,
po_nummer,
bedrag_gef_andere_afd,
afw_po_bedr_doorbel,
afgespr_toeslagperc,
tevr_doorloop,
tevr_oplossing,
datum_contact,
dienst_geleverd,
opmerking,
doorbel_afw_po_bedr,
po_bedr_doorbel,
progn_maand_gereed,
kosten_per,
kosten
)
AS
SELECT mld_opdr_key,
ins_srtdiscipline_prefix
|| TO_CHAR (mld_melding_key)
|| '/'
|| opdracht_volgnummer,
alg_regio_omschrijving,
alg_district_omschrijving,
locatie,
locatie_omschrijving,
locatie_plaats,
alg_locatie_key,
gebouw,
gebouw_naam,
verdieping,
ruimte,
ruimte_omschrijving,
kostenplaats,
kostenplaats_oms,
mld_melding_key,
opdracht_type,
opdracht_volgnummer,
opdracht_status,
opdracht_duur_gepland,
opdracht_datum,
opdracht_einddatum,
opdracht_plandatum,
opdracht_acceptdatum,
opdracht_afgemeld,
opdracht_doorlooptijd,
opdracht_accepttijd,
opdracht_omschrijving,
opdracht_opmerking,
opdracht_uitvoerende,
opdracht_uitvoerende_contact,
opdracht_behandelaar,
opdracht_contract,
opdracht_contract_versie,
opdracht_contactpersoon,
opdracht_uren,
opdracht_correctie,
opdracht_materiaal,
opdracht_uurtarief,
opdracht_kosten,
melding_status,
melding_afgemeld,
ongeldige_procuratie,
po_nummer,
bedrag_gef_andere_afd,
afw_po_bedr_doorbel,
afgespr_toeslagperc,
tevr_doorloop,
tevr_oplossing,
datum_contact,
dienst_geleverd,
opmerking,
doorbel_afw_po_bedr,
po_bedr_doorbel,
progn_maand_gereed,
kosten_per,
kosten
FROM (SELECT alg_regio_omschrijving,
alg_district_omschrijving,
alg_locatie_code locatie,
alg_locatie_omschrijving locatie_omschrijving,
alg_locatie_plaats locatie_plaats,
l.alg_locatie_key,
og.alg_gebouw_code gebouw,
og.alg_gebouw_naam gebouw_naam,
og.alg_verdieping_code verdieping,
og.alg_ruimte_nr ruimte,
og.alg_ruimte_omschrijving ruimte_omschrijving,
(SELECT k.prs_kostenplaats_nr
FROM prs_kostenplaats k
WHERE k.prs_kostenplaats_key = o.prs_kostenplaats_key)
kostenplaats,
(SELECT k.prs_kostenplaats_omschrijving
FROM prs_kostenplaats k
WHERE k.prs_kostenplaats_key = o.prs_kostenplaats_key)
kostenplaats_oms,
o.mld_opdr_key,
o.mld_melding_key,
top.mld_typeopdr_key,
top.mld_typeopdr_omschrijving opdracht_type,
o.mld_opdr_bedrijfopdr_volgnr opdracht_volgnummer,
(SELECT mld_statusopdr_omschrijving
FROM mld_statusopdr sta
WHERE sta.mld_statusopdr_key = o.mld_statusopdr_key)
opdracht_status,
fac.count_work_days (o.mld_opdr_datumbegin,
o.mld_opdr_einddatum)
opdracht_duur_gepland,
o.mld_opdr_datumbegin opdracht_datum,
o.mld_opdr_einddatum opdracht_einddatum,
o.mld_opdr_plandatum opdracht_plandatum,
COALESCE (mld.getopdrachtstatusdate (o.mld_opdr_key, 8),
mld.getopdrachtstatusdate (o.mld_opdr_key, 1))
opdracht_acceptdatum,
mld.getopdrachtstatusdate (o.mld_opdr_key, 6)
opdracht_afgemeld,
fac.count_work_days (
o.mld_opdr_datumbegin,
mld.getopdrachtstatusdate (o.mld_opdr_key, 6))
opdracht_doorlooptijd,
COALESCE (
fac.count_work_days (
mld.getopdrachtstatusdate (o.mld_opdr_key, 5),
COALESCE (
mld.getopdrachtstatusdate (o.mld_opdr_key, 8),
mld.getopdrachtstatusdate (o.mld_opdr_key, 6))),
fac.count_work_days (
mld.getopdrachtstatusdate (o.mld_opdr_key, 5),
mld.getopdrachtstatusdate (o.mld_opdr_key, 1)))
opdracht_accepttijd,
o.mld_opdr_omschrijving opdracht_omschrijving,
o.mld_opdr_opmerking opdracht_opmerking,
(SELECT naam
FROM mld_v_uitvoerende u
WHERE u.mld_uitvoerende_key = o.mld_uitvoerende_keys)
opdracht_uitvoerende,
(SELECT contact_naam
FROM (SELECT cp.prs_contactpersoon_key,
pf.prs_perslid_naam_full contact_naam
FROM prs_contactpersoon cp,
prs_v_perslid_fullnames_all pf
WHERE cp.prs_perslid_key = pf.prs_perslid_key
UNION ALL
SELECT cp.prs_contactpersoon_key,
cp.prs_contactpersoon_naam
FROM prs_contactpersoon cp,
prs_v_perslid_fullnames_all pf
WHERE cp.prs_perslid_key = pf.prs_perslid_key
AND cp.prs_perslid_key IS NULL) cpn
WHERE cpn.prs_contactpersoon_key =
o.prs_contactpersoon_key)
opdracht_uitvoerende_contact,
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key = o.prs_perslid_key)
opdracht_behandelaar,
c.cnt_contract_nummer_intern opdracht_contract,
c.cnt_contract_versie opdracht_contract_versie,
o.mld_opdr_contactpersoon opdracht_contactpersoon,
o.mld_opdr_uren opdracht_uren,
o.mld_opdr_kosten
- o.mld_opdr_materiaal
- (o.mld_opdr_uren * o.mld_opdr_uurloon)
opdracht_correctie,
o.mld_opdr_materiaal opdracht_materiaal,
o.mld_opdr_uurloon opdracht_uurtarief,
o.mld_opdr_kosten opdracht_kosten,
sdi.ins_srtdiscipline_prefix,
(SELECT mld_statuses_omschrijving
FROM mld_statuses sta
WHERE sta.mld_statuses_key = m.mld_melding_status)
melding_status,
COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5),
mld.getmeldingstatusdate (m.mld_melding_key, 1))
melding_afgemeld,
(SELECT DECODE (fac.safe_to_number(mld_kenmerkopdr_waarde), 1, 'Ja', 'Nee')
FROM mld_kenmerkopdr ko, mld_kenmerk k
WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_kenmerkopdr_verwijder IS NULL
AND k.mld_srtkenmerk_key = 181
AND ko.mld_opdr_key = o.mld_opdr_key)
ongeldige_procuratie,
(SELECT mld_kenmerkopdr_waarde
FROM mld_kenmerkopdr ko, mld_kenmerk k
WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_kenmerkopdr_verwijder IS NULL
AND k.mld_srtkenmerk_key = 381
AND ko.mld_opdr_key = o.mld_opdr_key)
po_nummer,
(SELECT DECODE (fac.safe_to_number(mld_kenmerkopdr_waarde), 1, 'Ja', 'Nee')
FROM mld_kenmerkopdr ko, mld_kenmerk k
WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_kenmerkopdr_verwijder IS NULL
AND k.mld_srtkenmerk_key = 401
AND ko.mld_opdr_key = o.mld_opdr_key)
bedrag_gef_door_andere_afd,
(SELECT DECODE (fac.safe_to_number(mld_kenmerkopdr_waarde), 1, 'Ja', 'Nee')
FROM mld_kenmerkopdr ko, mld_kenmerk k
WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_kenmerkopdr_verwijder IS NULL
AND k.mld_srtkenmerk_key = 401
AND ko.mld_opdr_key = o.mld_opdr_key)
bedrag_gef_andere_afd,
(SELECT DECODE (fac.safe_to_number(mld_kenmerkopdr_waarde), 1, 'Ja', 'Nee')
FROM mld_kenmerkopdr ko, mld_kenmerk k
WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_kenmerkopdr_verwijder IS NULL
AND k.mld_srtkenmerk_key = 2762
AND ko.mld_opdr_key = o.mld_opdr_key)
afw_po_bedr_doorbel,
(SELECT fac.safe_to_number (mld_kenmerkopdr_waarde)
FROM mld_kenmerkopdr ko, mld_kenmerk k
WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_kenmerkopdr_verwijder IS NULL
AND k.mld_srtkenmerk_key = 542
AND ko.mld_opdr_key = o.mld_opdr_key)
afgespr_toeslagperc,
(SELECT fac_usrdata_omschr
FROM mld_kenmerkopdr ko, mld_kenmerk k, fac_usrdata ud
WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_kenmerkopdr_verwijder IS NULL
AND fac_usrtab_key = 781
AND ud.fac_usrdata_key =
fac.safe_to_number(mld_kenmerkopdr_waarde)
AND k.mld_srtkenmerk_key = 1563
AND ko.mld_opdr_key = o.mld_opdr_key)
tevr_doorloop,
(SELECT fac_usrdata_omschr
FROM mld_kenmerkopdr ko, mld_kenmerk k, fac_usrdata ud
WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_kenmerkopdr_verwijder IS NULL
AND fac_usrtab_key = 781
AND ud.fac_usrdata_key =
fac.safe_to_number(mld_kenmerkopdr_waarde)
AND k.mld_srtkenmerk_key = 1581
AND ko.mld_opdr_key = o.mld_opdr_key)
tevr_oplossing,
(SELECT fac.safe_to_date (mld_kenmerkopdr_waarde,
'dd-mm-yyyy')
FROM mld_kenmerkopdr ko, mld_kenmerk k
WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_kenmerkopdr_verwijder IS NULL
AND k.mld_srtkenmerk_key = 1562
AND ko.mld_opdr_key = o.mld_opdr_key)
datum_contact,
(SELECT fac_usrdata_omschr
FROM mld_kenmerkopdr ko, mld_kenmerk k, fac_usrdata ud
WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_kenmerkopdr_verwijder IS NULL
AND fac_usrtab_key = 201
AND ud.fac_usrdata_key =
fac.safe_to_number(mld_kenmerkopdr_waarde)
AND k.mld_srtkenmerk_key = 1601
AND ko.mld_opdr_key = o.mld_opdr_key)
dienst_geleverd,
(SELECT mld_kenmerkopdr_waarde
FROM mld_kenmerkopdr ko, mld_kenmerk k
WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_kenmerkopdr_verwijder IS NULL
AND k.mld_srtkenmerk_key = 2561
AND ko.mld_opdr_key = o.mld_opdr_key)
opmerking,
(SELECT fac.safe_to_number (mld_kenmerkopdr_waarde)
FROM mld_kenmerkopdr ko, mld_kenmerk k
WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_kenmerkopdr_verwijder IS NULL
AND k.mld_srtkenmerk_key = 2781
AND ko.mld_opdr_key = o.mld_opdr_key)
doorbel_afw_po_bedr,
(SELECT DECODE (fac.safe_to_number(mld_kenmerkopdr_waarde), 1, 'Ja', 'Nee')
FROM mld_kenmerkopdr ko, mld_kenmerk k
WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_kenmerkopdr_verwijder IS NULL
AND k.mld_srtkenmerk_key = 2761
AND ko.mld_opdr_key = o.mld_opdr_key)
po_bedr_doorbel,
(SELECT fac_usrdata_omschr
FROM mld_kenmerkopdr ko, mld_kenmerk k, fac_usrdata ud
WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_kenmerkopdr_verwijder IS NULL
AND fac_usrtab_key = 1181
AND ud.fac_usrdata_key =
fac.safe_to_number(mld_kenmerkopdr_waarde)
AND k.mld_srtkenmerk_key = 2861
AND ko.mld_opdr_key = o.mld_opdr_key)
progn_maand_gereed,
(SELECT fac_usrdata_omschr
FROM mld_kenmerkopdr ko, mld_kenmerk k, fac_usrdata ud
WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_kenmerkopdr_verwijder IS NULL
AND fac_usrtab_key = 1161
AND ud.fac_usrdata_key =
fac.safe_to_number(mld_kenmerkopdr_waarde)
AND k.mld_srtkenmerk_key = 2821
AND ko.mld_opdr_key = o.mld_opdr_key)
kosten_per,
(SELECT fac.safe_to_number (mld_kenmerkopdr_waarde)
FROM mld_kenmerkopdr ko, mld_kenmerk k
WHERE ko.mld_kenmerk_key = k.mld_kenmerk_key
AND mld_kenmerkopdr_verwijder IS NULL
AND k.mld_srtkenmerk_key = 2841
AND ko.mld_opdr_key = o.mld_opdr_key)
kosten
FROM alg_locatie l,
alg_district d,
alg_regio r,
alg_v_allonrgoed_gegevens og,
mld_opdr o,
mld_typeopdr top,
mld_melding m,
mld_stdmelding stdm,
ins_tab_discipline di,
ins_srtdiscipline sdi,
cnt_contract c
WHERE m.mld_alg_locatie_key = l.alg_locatie_key(+)
AND l.alg_district_key = d.alg_district_key(+)
AND d.alg_regio_key = r.alg_regio_key(+)
AND m.mld_alg_onroerendgoed_keys =
og.alg_onroerendgoed_keys(+)
AND o.cnt_contract_key = c.cnt_contract_key(+)
AND m.mld_stdmelding_key = stdm.mld_stdmelding_key
AND stdm.mld_ins_discipline_key = di.ins_discipline_key
AND di.ins_srtdiscipline_key = sdi.ins_srtdiscipline_key
AND o.mld_melding_key = m.mld_melding_key
AND o.mld_typeopdr_key = top.mld_typeopdr_key(+)
AND o.mld_opdr_datumbegin >=
TO_DATE ('01-01-2014', 'DD-MM-YYYY')) x;
-- Tbv YKPN#75754 extr rapportage tbv 3 fase facturatie naar KPN
-- toeveogen van datum wanneer kenmerk Gereed voor doorbelasting PO gezet wordt.
CREATE OR REPLACE VIEW ykpn_v_proj_doorbelast
AS
SELECT opdracht_key,
opdracht_nummer,
opdracht_regio,
opdracht_district,
opdracht_locatie_code,
opdracht_locatie,
opdracht_locatieplaats,
fclt_3d_locatie_key,
opdracht_gebouwcode,
opdracht_gebouw,
opdracht_verdieping,
opdracht_ruimtenr,
opdracht_ruimte,
opdracht_kostenplaats,
opdracht_kostenplaats_oms,
melding_key,
opdracht_type,
opdracht_volgnummer,
opdracht_status,
opdracht_duur_gepland,
opdracht_datum,
opdracht_einddatum,
opdracht_plandatum,
opdracht_acceptdatum,
opdracht_afgemeld,
opdracht_doorlooptijd,
opdracht_accepttijd,
opdracht_omschrijving,
opdracht_opmerking,
opdracht_uitvoerende,
opdracht_uitvoerende_contact,
opdracht_behandelaar,
opdracht_contract,
opdracht_contract_versie,
opdracht_contactpersoon,
opdracht_uren,
opdracht_correctie,
opdracht_materiaal,
opdracht_uurtarief,
opdracht_kosten,
melding_status,
melding_afgemeld,
ongeldige_procuratie,
po_nummer,
bedrag_gef_andere_afd,
afw_po_bedr_doorbel,
afgespr_toeslagperc,
tevr_doorloop,
tevr_oplossing,
datum_contact,
dienst_geleverd,
opmerking,
doorbel_afw_po_bedr,
po_bedr_doorbel,
COALESCE((SELECT MIN(ft.FAC_TRACKING_DATUM)
FROM mld_kenmerkopdr ko, mld_kenmerk k, fac_tracking ft
WHERE ko.mld_opdr_key = opdracht_key
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 5001
AND ft.FAC_TRACKING_REFKEY=opdracht_key
AND ft.FAC_TRACKING_OMS LIKE '%Gereed voor doorbelasting PO?: (leeg) --> 1%' ),
mld.getopdrachtstatusdate(opdracht_key,6)) po_bedr_doorbel_datum,
progn_maand_gereed,
kosten_per,
kosten,
(SELECT UPPER(ud.fac_usrdata_omschr)
FROM mld_kenmerkopdr ko, mld_kenmerk k, fac_usrdata ud
WHERE ko.mld_opdr_key = opdracht_key
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 5001
AND ud.fac_usrdata_key=ko.mld_kenmerkopdr_waarde) -- Capex/Opex
capex_opex
FROM ykpn_v_udr_opdracht_kenm
WHERE opdracht_datum >= TO_DATE ('01-01-2020', 'DD-MM-YYYY');
CREATE OR REPLACE VIEW ykpn_v_udr_melding
(
melding_key,
meldingnummer,
behandeling_in,
melding_start_key,
externnummer,
melding_regio,
melding_district,
melding_locatiecode,
melding_locatie,
melding_locatieplaats,
fclt_3d_locatie_key,
gebouw_key,
melding_gebouwcode,
melding_gebouw,
melding_verdieping,
melding_ruimtenr,
melding_ruimte,
melding_ordernr,
kostensoortgroep,
kostensoort,
kostenplaats,
kostenplaats_oms,
melder,
melder_key,
melder_email,
afdeling,
afdeling_omschrijving,
fclt_3d_afdeling_key,
divisie,
divisie_omschrijving,
fclt_3d_divisie_key,
bedrijf_key,
invoerder,
meldbron,
soortmelding,
fclt_3d_discipline_key,
productgroep,
subproductgroep,
behandelgroep,
behandelaar,
behandelaar_key,
subproductgroepgroep,
fclt_3d_discipline2_key,
actieve_behandelgroep,
actieve_behandelaar_key,
actieve_behandelaar,
melding_status,
sla_nvt,
sla_werkdgn,
sla_werkuren,
sla_respijtdgn,
sla_respijturen,
sla_accptdgn,
sla_accpturen,
plan_uitvoertijd_sla,
melding_datum,
melding_einddatum,
melding_einddatum_std,
melding_acceptdatum,
melding_afgemeld,
melding_accepted,
doorlooptijd_werkdgn,
doorlooptijd_werkuren,
onderwerp,
vomschrijving,
melding_opmerking,
prioriteit,
prioriteittxt,
rating,
rating_opmerking,
bolletje,
actiecode,
accept_sla_dagen,
accept_sla_uren,
uitvoering_sla_dagen,
uitvoering_sla_uren,
afspraak_sla_dagen,
afspraak_sla_uren,
accept_sla_optijd,
uitvoering_sla_optijd,
afspraak_sla_optijd,
selfservice
)
AS
SELECT mld_melding_key,
meldingnummer,
mld_melding_parentkey,
mld_melding_start_key,
mld_melding_externnr,
alg_regio_omschrijving,
alg_district_omschrijving,
locatie,
locatie_omschrijving,
locatie_plaats,
alg_locatie_key,
alg_gebouw_key,
gebouw,
gebouw_naam,
verdieping,
ruimte,
ruimte_omschrijving,
melding_ordernr,
kostensoortgroep,
kostensoort,
kostenplaats,
kostenplaats_oms,
melder,
prs_perslid_key,
prs_perslid_email,
afdeling,
afdeling_omschrijving,
afdeling_key,
divisie,
divisie_omschrijving,
divisie_key,
prs_bedrijf_key,
invoerder,
meldbron,
soortmelding,
stdm_ins_discipline_key,
productgroep,
subproductgroep,
behandelgroep,
behandelaar,
behandelaar_key,
subproductgroepgroep,
mld_ins_discipline_key,
actieve_behandelgroep,
actieve_behandelaar_key,
actieve_behandelaar,
status,
sla_nvt,
sla_werkdgn,
sla_werkuren,
sla_respijtdgn,
sla_respijturen,
sla_accptdgn,
sla_accpturen,
plan_uitvoertijd_sla,
datum,
einddatum,
einddatum_std,
acceptdatum,
afgemeld,
accepted,
DECODE (x.t_doorlooptijd.eenheid, 'D', x.t_doorlooptijd.tijdsduur, NULL)
doorlooptijd_werkdgn,
DECODE (x.t_doorlooptijd.eenheid, 'U', x.t_doorlooptijd.tijdsduur, NULL)
doorlooptijd_werkuren,
onderwerp,
omschrijving,
opmerking,
mld_melding_spoed prioriteit,
DECODE(mld_melding_spoed,3,lcl.l('lcl_mld_urg_normaal'),1,lcl.l('lcl_mld_urg_kritiek'),2,lcl.l('lcl_mld_urg_hoog'),4,lcl.l('lcl_mld_urg_laag')),
mld_melding_satisfaction,
mld_melding_satisfaction_op,
mld_melding_flag,
mld_melding_actiecode,
DECODE (x.t_doorlooptijd.eenheid, 'D', acceptdatum - COALESCE (accepted, afgemeld), NULL)
accept_sla_dagen,
CAST (
DECODE (x.t_doorlooptijd.eenheid,
'U', (acceptdatum - COALESCE (accepted, afgemeld)) * 24,
NULL)
AS NUMBER(7,2)
)
accept_sla_uren,
DECODE (
x.t_doorlooptijd.eenheid,
'D',
mld.geteinddatum (mld_melding_key)
- COALESCE (afgemeld, SYSDATE)
+ COALESCE (sla_respijtdgn, 0),
NULL)
uitvoering_sla_dagen,
CAST (
DECODE (
x.t_doorlooptijd.eenheid,
'U',
( (mld.geteinddatum (mld_melding_key) - COALESCE (afgemeld, SYSDATE)) * 24)
+ COALESCE (sla_respijturen, 0),
NULL)
AS NUMBER(7,2)
)
uitvoering_sla_uren,
DECODE (x.t_doorlooptijd.eenheid,
'D', einddatum - COALESCE (afgemeld, SYSDATE) + COALESCE (sla_respijtdgn, 0),
NULL)
afspraak_sla_dagen,
CAST (
DECODE (
x.t_doorlooptijd.eenheid,
'U',
( (einddatum - COALESCE (afgemeld, SYSDATE)) * 24) + COALESCE (sla_respijtdgn, 0),
NULL)
AS NUMBER(7,2)
)
afspraak_sla_uren,
CASE
WHEN acceptdatum IS NULL
OR -- Dan is er geen acceptatietijd gedefinieerd en dus altijd op tijd.
DECODE (x.t_doorlooptijd.eenheid,
'D', acceptdatum - COALESCE (accepted, afgemeld),
0)
+ DECODE (x.t_doorlooptijd.eenheid,
'U', (acceptdatum - COALESCE (accepted, afgemeld)) * 24,
0) >= 0
THEN
lcl.l ('lcl_yes')
ELSE
lcl.l ('lcl_no')
END
accept_sla_optijd,
CASE
WHEN DECODE (
x.t_doorlooptijd.eenheid,
'D',
mld.geteinddatum (mld_melding_key)
- COALESCE (afgemeld, SYSDATE)
+ COALESCE (sla_respijtdgn, 0),
0)
+ DECODE (
x.t_doorlooptijd.eenheid,
'U',
( (mld.geteinddatum(mld_melding_key) - COALESCE (afgemeld, SYSDATE)) * 24)
+ COALESCE (sla_respijturen, 0),
0) >= 0
THEN
lcl.l ('lcl_yes')
ELSE
lcl.l ('lcl_no')
END
uitvoering_sla_optijd,
CASE
WHEN DECODE (x.t_doorlooptijd.eenheid,
'D',
einddatum - COALESCE (afgemeld, SYSDATE) + COALESCE (sla_respijtdgn, 0),
0)
+ DECODE (
x.t_doorlooptijd.eenheid,
'U',
( (einddatum - COALESCE (afgemeld, SYSDATE)) * 24)
+ COALESCE (sla_respijtdgn, 0),
0) >= 0
THEN
lcl.l ('lcl_yes')
ELSE
lcl.l ('lcl_no')
END
afspraak_sla_optijd,
DECODE(invoerder, melder, lcl.l ('lcl_yes'), lcl.l ('lcl_no')) selfservice
FROM (SELECT m.mld_melding_key,
m.mld_melding_parentkey,
m.mld_melding_start_key,
m.mld_melding_externnr,
m.prs_perslid_key,
mab.prs_perslid_email,
sd.ins_srtdiscipline_prefix || m.mld_melding_key meldingnummer,
alg_regio_omschrijving,
alg_district_omschrijving,
alg_locatie_code locatie,
alg_locatie_omschrijving locatie_omschrijving,
alg_locatie_plaats locatie_plaats,
l.alg_locatie_key,
COALESCE(og.alg_gebouw_code, og.alg_terreinsector_code) gebouw,
COALESCE(og.alg_gebouw_naam, og.alg_terreinsector_naam) gebouw_naam,
og.alg_verdieping_code verdieping,
og.alg_gebouw_key,
og.alg_ruimte_nr ruimte,
og.alg_ruimte_omschrijving ruimte_omschrijving,
m.mld_melding_ordernr melding_ordernr,
(SELECT ksg.prs_kostensoortgrp_oms
FROM prs_kostensoortgrp ksg, prs_kostensoort ks
WHERE ksg.prs_kostensoortgrp_key = ks.prs_kostensoortgrp_key
AND ks.prs_kostensoort_key =
(SELECT COALESCE (sm.prs_kostensoort_key, disc.prs_kostensoort_key)
FROM mld_stdmelding sm, mld_discipline disc
WHERE sm.mld_ins_discipline_key = disc.ins_discipline_key
AND sm.mld_stdmelding_key = s.mld_stdmelding_key))
kostensoortgroep,
(SELECT ks.prs_kostensoort_oms
FROM prs_kostensoort ks
WHERE ks.prs_kostensoort_key =
(SELECT COALESCE (sm.prs_kostensoort_key, disc.prs_kostensoort_key)
FROM mld_stdmelding sm, mld_discipline disc
WHERE sm.mld_ins_discipline_key = disc.ins_discipline_key
AND sm.mld_stdmelding_key = s.mld_stdmelding_key))
kostensoort,
(SELECT k.prs_kostenplaats_nr
FROM prs_kostenplaats k
WHERE k.prs_kostenplaats_key = m.prs_kostenplaats_key)
kostenplaats,
(SELECT k.prs_kostenplaats_omschrijving
FROM prs_kostenplaats k
WHERE k.prs_kostenplaats_key = m.prs_kostenplaats_key)
kostenplaats_oms,
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key = m.prs_perslid_key)
melder,
mab.afdeling_naam afdeling,
mab.afdeling_omschrijving afdeling_omschrijving,
mab.prs_afdeling_key afdeling_key,
mab.divisie_naam divisie,
mab.divisie_omschrijving,
mab.prs_afdeling_key1 divisie_key,
mab.prs_bedrijf_key,
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key = mld.getmeldinguser (m.mld_melding_key))
invoerder,
(SELECT mb.mld_meldbron_omschrijving
FROM mld_meldbron mb
WHERE mb.mld_meldbron_key = m.mld_meldbron_key)
meldbron,
m.mld_meldbron_key,
sd.ins_srtdiscipline_key ins_srtdiscipline_key,
sd.ins_srtdiscipline_omschrijving soortmelding,
md.ins_discipline_key stdm_ins_discipline_key,
md.ins_discipline_omschrijving productgroep,
s.mld_stdmelding_omschrijving subproductgroep,
smg.mld_stdmeldinggroep_naam subproductgroepgroep,
mbg.mld_behandelgroep_naam behandelgroep,
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key = m.mld_melding_behandelaar_key)
behandelaar,
m.mld_melding_behandelaar_key behandelaar_key,
m.mld_ins_discipline_key mld_ins_discipline_key,
(SELECT md2.ins_discipline_omschrijving
FROM mld_discipline md2
WHERE md2.ins_discipline_key = m.mld_ins_discipline_key) actieve_behandelgroep,
m.mld_melding_behandelaar2_key actieve_behandelaar_key,
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key = m.mld_melding_behandelaar2_key)
actieve_behandelaar,
(SELECT mld_statuses_omschrijving
FROM mld_statuses sta
WHERE sta.mld_statuses_key = m.mld_melding_status)
status,
CASE
WHEN m.mld_melding_einddatum >
COALESCE (fac.gettrackingdate ('MLDAFM', m.mld_melding_key),
fac.gettrackingdate ('MLDREJ', m.mld_melding_key),
SYSDATE)
THEN
1
ELSE
0
END
plan_uitvoertijd_sla,
CASE
WHEN m.mld_melding_indult = 1 OR s.mld_stdmelding_slabewaken = 0 THEN 1
ELSE 0
END
sla_nvt,
DECODE (m.mld_melding_t_uitvoertijd.eenheid,
'D', m.mld_melding_t_uitvoertijd.tijdsduur,
NULL)
sla_werkdgn,
DECODE (m.mld_melding_t_uitvoertijd.eenheid,
'U', m.mld_melding_t_uitvoertijd.tijdsduur,
NULL)
sla_werkuren,
DECODE (m.mld_melding_t_respijt.eenheid,
'D', m.mld_melding_t_respijt.tijdsduur,
NULL)
sla_respijtdgn,
DECODE (m.mld_melding_t_respijt.eenheid,
'U', m.mld_melding_t_respijt.tijdsduur,
NULL)
sla_respijturen,
DECODE (m.mld_melding_t_accepttijd.eenheid,
'D', m.mld_melding_t_accepttijd.tijdsduur,
NULL)
sla_accptdgn,
DECODE (m.mld_melding_t_accepttijd.eenheid,
'U', m.mld_melding_t_accepttijd.tijdsduur,
NULL)
sla_accpturen,
m.mld_melding_datum datum,
CASE WHEN s.mld_stdmelding_planbaar = 2
THEN TO_DATE(NULL)
ELSE m.mld_melding_einddatum
END einddatum,
mld_melding_einddatum_std einddatum_std,
mld_melding_acceptdatum_std acceptdatum,
COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 5),
mld.getmeldingstatusdate (m.mld_melding_key, 1))
afgemeld,
COALESCE (mld.getmeldingstatusdate (m.mld_melding_key, 4),
mld.getmeldingstatusdate (m.mld_melding_key, 1))
accepted,
mld.getactualuitvoer (m.mld_melding_key) t_doorlooptijd,
m.mld_melding_onderwerp onderwerp,
m.mld_melding_omschrijving omschrijving,
m.mld_melding_opmerking opmerking,
m.mld_melding_spoed,
m.mld_melding_satisfaction,
m.mld_melding_satisfaction_op,
m.mld_melding_flag,
mld_melding_actiecode
FROM mld_melding m,
mld_stdmelding s,
alg_locatie l,
alg_district d,
alg_regio r,
alg_v_allonrgoed_gegevens og,
mld_discipline md,
mld_disc_params mdp,
mld_behandelgroep mbg,
ins_srtdiscipline sd,
mld_stdmeldinggroep smg,
(SELECT mx.mld_melding_key
, div.prs_bedrijf_key
, ab.prs_afdeling_key1
, div.prs_afdeling_naam divisie_naam
, div.prs_afdeling_omschrijving divisie_omschrijving
, ab.prs_afdeling_key
, afd.prs_afdeling_naam afdeling_naam
, afd.prs_afdeling_omschrijving afdeling_omschrijving
, px.prs_perslid_key
, px.prs_perslid_email
FROM mld_melding mx
, prs_perslid px
, prs_v_afdeling_boom ab
, prs_afdeling afd
, prs_afdeling div
WHERE px.prs_perslid_key = mx.prs_perslid_key
AND ab.prs_afdeling_key = coalesce(mx.prs_afdeling_key, px.prs_afdeling_key)
AND ab.prs_afdeling_key = afd.prs_afdeling_key
AND ab.prs_afdeling_key1 = div.prs_afdeling_key
) mab
WHERE s.mld_stdmelding_key = m.mld_stdmelding_key
AND m.mld_alg_locatie_key = l.alg_locatie_key(+)
AND sd.ins_srtdiscipline_key = md.ins_srtdiscipline_key
AND md.ins_discipline_key = s.mld_ins_discipline_key
AND md.ins_discipline_key = mdp.mld_ins_discipline_key
AND s.mld_stdmeldinggroep_key = smg.mld_stdmeldinggroep_key(+)
AND mdp.mld_behandelgroep_key = mbg.mld_behandelgroep_key(+)
AND l.alg_district_key = d.alg_district_key(+)
AND d.alg_regio_key = r.alg_regio_key(+)
AND m.mld_melding_key = mab.mld_melding_key
AND m.mld_alg_onroerendgoed_keys = og.alg_onroerendgoed_keys(+)
AND m.fac_activiteit_key IS NULL
AND m.mld_melding_datum >= TO_DATE ('01-01-2010', 'DD-MM-YYYY')) x;
CREATE OR REPLACE VIEW ykpn_v_melding_inc_accept
AS
SELECT y.*,
(SELECT p.prs_perslid_naam_friendly
FROM prs_v_perslid_fullnames_all p
WHERE p.prs_perslid_key=
(SELECT ft.prs_perslid_key
from fac_tracking ft, prs_v_perslid_fullnames_all p
where ft.fac_tracking_refkey=melding_key
AND ft.fac_srtnotificatie_key=38
AND ROWNUM=1
)
) acceptant
FROM ykpn_v_udr_melding y;
-- YKPN wil uitbereiding op de udr_medlingopdracht raportage
-- Extra kolom met leverancier sla en of deze op tijd is.
CREATE OR REPLACE VIEW ykpn_v_udr_meldingopdracht
AS
SELECT
mo.melding_key,
mo.meldingnummer,
mo.melding_start_key,
mo.externnummer,
mo.melding_regio,
mo.melding_district,
mo.melding_locatiecode,
mo.melding_locatie,
mo.melding_locatieplaats,
mo.fclt_3d_locatie_key,
mo.melding_gebouwcode,
mo.melding_gebouw,
mo.melding_verdieping,
mo.melding_ruimtenr,
mo.melding_ruimte,
mo.melding_ordernr,
mo.kostensoortgroep,
mo.kostensoort,
mo.kostenplaats,
mo.kostenplaats_oms,
mo.melder,
mo.melder_key,
mo.melder_email,
mo.afdeling,
mo.afdeling_omschrijving,
mo.fclt_3d_afdeling_key,
mo.divisie,
mo.divisie_omschrijving,
mo.fclt_3d_divisie_key,
mo.bedrijf_key,
mo.invoerder,
mo.meldbron,
mo.soortmelding,
mo.fclt_3d_discipline_key,
mo.productgroep,
mo.subproductgroep,
mo.behandelgroep,
mo.behandelaar,
mo.behandelaar_key,
mo.subproductgroepgroep,
mo.fclt_3d_discipline2_key,
mo.actieve_behandelgroep,
mo.actieve_behandelaar_key,
mo.actieve_behandelaar,
mo.melding_status,
mo.sla_nvt,
mo.sla_werkdgn,
mo.sla_werkuren,
mo.sla_respijtdgn,
mo.sla_respijturen,
mo.sla_accptdgn,
mo.sla_accpturen,
mo.plan_uitvoertijd_sla,
mo.melding_datum,
mo.melding_einddatum,
mo.melding_einddatum_std,
mo.melding_acceptdatum,
mo.melding_afgemeld,
mo.melding_accepted,
mo.doorlooptijd_werkdgn,
mo.doorlooptijd_werkuren,
mo.onderwerp,
mo.vomschrijving,
mo.melding_opmerking,
mo.prioriteit,
mo.prioriteittxt,
mo.rating,
mo.rating_opmerking,
mo.bolletje,
mo.actiecode,
mo.accept_sla_dagen,
mo.accept_sla_uren,
mo.uitvoering_sla_dagen,
mo.uitvoering_sla_uren,
mo.afspraak_sla_dagen,
mo.afspraak_sla_uren,
mo.accept_sla_optijd,
mo.uitvoering_sla_optijd,
mo.afspraak_sla_optijd,
mo.selfservice,
mo.opdracht_key,
mo.opdracht_nummer,
mo.opdracht_regio,
mo.opdracht_district,
mo.opdracht_locatie_code,
mo.opdracht_locatie,
mo.opdracht_locatieplaats,
--mo.fclt_3d_locatie_key,
mo.opdracht_gebouwcode,
mo.opdracht_gebouw,
mo.opdracht_verdieping,
mo.opdracht_ruimtenr,
mo.opdracht_ruimte,
mo.opdracht_kostenplaats,
mo.opdracht_kostenplaats_oms,
--mo.melding_key,
mo.opdracht_type,
mo.opdracht_volgnummer,
mo.opdracht_status,
mo.opdracht_duur_gepland,
mo.opdracht_datum,
mo.opdracht_einddatum,
mo.opdracht_plandatum,
mo.opdracht_acceptdatum,
mo.opdracht_afgemeld,
mo.opdracht_doorlooptijd,
mo.opdracht_accepttijd,
mo.opdracht_omschrijving,
mo.opdracht_opmerking,
mo.opdracht_uitvoerende,
mo.opdracht_uitvoerende_contact,
mo.opdracht_behandelaar,
mo.opdracht_contract,
mo.opdracht_contract_versie,
mo.opdracht_contactpersoon,
mo.opdracht_uren,
mo.opdracht_correctie,
mo.opdracht_materiaal,
mo.opdracht_uurtarief,
mo.opdracht_kosten,
mo.opdracht_verstrektdatum,
mo.opdracht_lev_doorloopuren,
mo.opdracht_lev_doorloopdagen,
tijd,
eenheid,
CASE
WHEN tijd=0
THEN 'NVT'
ELSE CASE
WHEN (CASE
WHEN eenheid='D' THEN tijd-mo.opdracht_lev_doorloopdagen
ELSE tijd-mo.opdracht_lev_doorloopuren
END)>0
THEN 'Ja'
ELSE 'Nee'
END
END optijd
FROM (select mo.*,
COALESCE((SELECT p.prs_bdl_t_uitvoertijd.tijdsduur
FROM prs_bedrijfdienstlocatie p
WHERE prs_bedrijfdienstlocatie_key =
(SELECT MAX(pb.prs_bedrijfdienstlocatie_key)
FROM mld_melding m, mld_stdmelding sm, prs_dienst pd, prs_bedrijfdienstlocatie pb
WHERE m.mld_melding_key= mo.melding_key
AND sm.mld_stdmelding_key= m.mld_stdmelding_key
AND pd.prs_dienst_key=sm.prs_dienst_key
AND pb.prs_dienst_key = pd.prs_dienst_key
AND pb.prs_bedrijf_key=o.mld_uitvoerende_keys
AND pb.alg_locatie_key=mo.fclt_3d_locatie_key)),0) tijd,
(SELECT p.prs_bdl_t_uitvoertijd.eenheid
FROM prs_bedrijfdienstlocatie p
WHERE prs_bedrijfdienstlocatie_key =
(SELECT MAX(pb.prs_bedrijfdienstlocatie_key)
FROM mld_melding m, mld_stdmelding sm, prs_dienst pd, prs_bedrijfdienstlocatie pb
WHERE m.mld_melding_key= mo.melding_key
AND sm.mld_stdmelding_key= m.mld_stdmelding_key
AND pd.prs_dienst_key=sm.prs_dienst_key
AND pb.prs_dienst_key = pd.prs_dienst_key
AND pb.prs_bedrijf_key=o.mld_uitvoerende_keys
AND pb.alg_locatie_key=mo.fclt_3d_locatie_key)) eenheid
FROM mld_v_udr_meldingopdracht mo,
mld_opdr o
WHERE o.mld_opdr_key = mo.opdracht_key) mo;
CREATE OR REPLACE VIEW ykpn_v_rap_log
AS
SELECT COALESCE (imp_log_applicatie, a.fac_import_app_code)
applicatie,
imp_log_datum,
imp_log_status,
imp_log_omschrijving,
imp_log_hint
FROM imp_log l, fac_import i, fac_import_app a
WHERE l.fac_import_key = i.fac_import_key(+)
AND i.fac_import_app_key = a.fac_import_app_key(+);
CREATE OR REPLACE VIEW ykpn_v_rap_dienstrapport
AS
SELECT l.alg_locatie_key fclt_3d_locatie_key,
l.alg_locatie_omschrijving,
m.mld_melding_key,
std.mld_stdmelding_omschrijving,
std.mld_ins_discipline_key,
prs_perslid_naam_full,
mld_melding_datum,
mld_melding_note_aanmaak,
mld_melding_note_omschrijving
FROM mld_melding_note n,
mld_melding m,
mld_stdmelding std,
alg_locatie l,
prs_v_perslid_fullnames pf
WHERE n.prs_perslid_key = pf.prs_perslid_key
AND n.mld_melding_key = m.mld_melding_key
AND m.mld_alg_locatie_key = l.alg_locatie_key
AND m.mld_stdmelding_key = std.mld_stdmelding_key;
CREATE OR REPLACE VIEW ykpn_v_iot_report
AS
SELECT geb.ALG_GEBOUW_OMSCHRIJVING,
ver.ALG_VERDIEPING_CODE,
rm.ALG_RUIMTE_NR,
ins.ins_deel_key insKey,
ins.INS_DEEL_OMSCHRIJVING DeviceID,
isrt.INS_SRTDEEL_OMSCHRIJVING Soort,
ins.INS_DEEL_OPMERKING type,
(SELECT knd.ins_kenmerkdeel_waarde
FROM ins_kenmerkdeel knd
WHERE knd.ins_kenmerk_key = 241 AND -- Vulgraad kenmerk DEV=241, ACC=461 PROD=241
ins.ins_deel_key=knd.ins_deel_key AND
knd.ins_kenmerkdeel_verwijder IS NULL) fillLevel,
(SELECT knd.ins_kenmerkdeel_waarde
FROM ins_kenmerkdeel knd
WHERE knd.ins_kenmerk_key = 281 AND -- batterij kenmerk DEV=281,
ins.ins_deel_key=knd.ins_deel_key AND
knd.ins_kenmerkdeel_verwijder IS NULL) batterij
FROM ins_deel ins, alg_ruimte rm, alg_verdieping ver, alg_v_gebouw_gegevens geb, ins_srtdeel isrt
WHERE ins.ins_discipline_key=3282 -- Discipline IoT_CWS DEV=3101, ACC=3142, prod=3282
AND isrt.ins_srtdeel_key = ins.ins_srtdeel_key
AND rm.alg_ruimte_key= ins.ins_alg_ruimte_key
AND ver.alg_verdieping_key = rm.alg_verdieping_key
AND geb.alg_gebouw_key = ver.alg_gebouw_key
AND ins.ins_deel_verwijder IS NULL;
CREATE OR REPLACE VIEW ykpn_v_iot_papcon
AS
SELECT geb.alg_gebouw_omschrijving,
ver.alg_verdieping_code,
rm.alg_ruimte_nr,
ins.ins_deel_key insKey,
ins.ins_deel_omschrijving deviceid,
isrt.ins_srtdeel_omschrijving soort,
ins.ins_deel_opmerking type,
(SELECT knd.ins_kenmerkdeel_waarde
FROM ins_kenmerkdeel knd
WHERE knd.ins_kenmerk_key = 261 AND -- Vulgraad kenmerk DEV=301, ACC=481 PROD=261
ins.ins_deel_key=knd.ins_deel_key AND
knd.ins_kenmerkdeel_verwijder IS NULL) fillLevel
FROM ins_deel ins, alg_ruimte rm, alg_verdieping ver, alg_v_gebouw_gegevens geb, ins_srtdeel isrt
WHERE ins.ins_discipline_key=3281 -- Discipline KPN_Iot DEV=3123, ACC= 3141 PROD=3281
AND isrt.ins_srtdeel_key = ins.ins_srtdeel_key
AND rm.alg_ruimte_key= ins.ins_alg_ruimte_key
AND ver.alg_verdieping_key = rm.alg_verdieping_key
AND geb.alg_gebouw_key = ver.alg_gebouw_key
AND ins.ins_deel_verwijder IS NULL;
CREATE OR REPLACE VIEW ykpn_v_wp_qrcodes
AS
SELECT loc.alg_locatie_omschrijving locatie,
av.alg_verdieping_code verdieping,
av.alg_ruimte_nr ruimteNr,
i.ins_deel_key,
i.ins_deel_omschrijving soort,
'N-IVzS7k3BMQNFkt' bookmark
FROM ins_deel i,alg_v_allonrgoed_gegevens av, alg_v_aanweziglocatie loc
WHERE i.ins_discipline_key=2301
AND i.ins_deel_omschrijving like 'BUR%'
AND i.ins_alg_ruimte_key= av.alg_ruimte_key
AND av.alg_locatie_key=loc.alg_locatie_key;
CREATE OR REPLACE VIEW ykpn_v_meubilair_locatie
AS
SELECT aantal, ins_srtdeel_omschrijving, alg.alg_ruimte_nr, alg.alg_verdieping_code, alg.alg_locatie_omschrijving
FROM (
SELECT count(*) aantal, srt.ins_srtdeel_omschrijving, ins.ins_alg_ruimte_key
FROM ins_deel ins, ins_srtgroep grp, ins_srtdeel srt
WHERE grp.ins_srtgroep_key=161
AND srt.ins_srtgroep_key = grp.ins_srtgroep_key
AND ins.ins_srtdeel_key = srt.ins_srtdeel_key
AND ins_deel_verwijder IS NULL
GROUP BY ins.ins_srtdeel_key, srt.ins_srtdeel_omschrijving,ins.ins_alg_ruimte_key) o,
alg_v_ruimte_gegevens_all alg
WHERE alg.alg_ruimte_key = o.ins_alg_ruimte_key
ORDER BY alg.alg_locatie_key, alg.alg_verdieping_code, alg.alg_ruimte_key;
CREATE OR REPLACE VIEW ykpn_v_mandt_opdr_zond_fact
AS
SELECT op.mld_melding_key||'/'||op.mld_opdr_bedrijfopdr_volgnr melding,
m.mld_melding_onderwerp onderwerp,
ot.mld_typeopdr_omschrijving opdrachtsoort,
(select fac.safe_to_number(mko.mld_kenmerkopdr_waarde) from mld_kenmerkopdr mko where mko.mld_kenmerk_key IN (5041, 5021) AND mko.MLD_OPDR_KEY = op.mld_opdr_key) mandaat,
op.mld_opdr_materiaal materiaal,
op.mld_opdr_uren uren,
op.mld_opdr_uurloon uurloon,
(op.mld_opdr_kosten-op.mld_opdr_materiaal-(op.mld_opdr_uren*op.mld_opdr_uurloon)) correctie,
op.mld_opdr_kosten totaal,
(SELECT pb.prs_bedrijf_naam
FROM prs_bedrijf pb
WHERE pb.prs_bedrijf_key=op.mld_uitvoerende_keys) bedrijf,
op.mld_opdr_datumbegin,
op.mld_opdr_einddatum,
a.alg_locatie_omschrijving,
a.alg_locatie_code,
(SELECT p.prs_perslid_naam_friendly
FROM prs_v_perslid_fullnames p
WHERE p.prs_perslid_key=op.prs_perslid_key) behandelaar,
(SELECT p.prs_perslid_email
FROM prs_perslid p
WHERE p.prs_perslid_key=op.prs_perslid_key) behandelaar_email
FROM mld_opdr op,
mld_melding m,
mld_typeopdr ot,
alg_v_aanweziglocatie a
WHERE op.mld_statusopdr_key= 6 -- alleen afgemelde opdrachten
AND m.mld_melding_key=op.mld_melding_key
AND ot.mld_typeopdr_key = op.mld_typeopdr_key
AND a.alg_locatie_key=m.mld_alg_locatie_key(+)
AND NOT EXISTS
(SELECT 1 FROM fin_factuur ff WHERE ff.mld_opdr_key = op.mld_opdr_key);
CREATE OR REPLACE VIEW ykpn_v_uitleen_mutaties
AS
SELECT ins_deel_key,
ins_deel_omschrijving,
ins_deel_opmerking,
(SELECT isd.ins_srtdeel_omschrijving FROM ins_srtdeel isd WHERE isd.ins_srtdeel_key=id.ins_srtdeel_key) objectsoort,
ft.fac_tracking_datum,
DECODE(ft.fac_srtnotificatie_key,101,'gewijzigd', 103,'uitgegeven',104 ,'ingenomen') actie,
(SELECT CASE WHEN ft.fac_srtnotificatie_key= 103 THEN TRIM(SUBSTR(ft.fac_tracking_oms, INSTR(ft.fac_tracking_oms,'uitgegeven aan')+14,INSTR(ft.fac_tracking_oms,'Datum uitgeleend'))) ELSE '' END FROM DUAL) uitgegeven_aan,
(SELECT p.PRS_PERSLID_NAAM_FRIENDLY from PRS_V_PERSLID_FULLNAMES p WHERE p.PRS_PERSLID_KEY=ft.prs_perslid_key) actie_door,
ft.fac_tracking_oms
FROM ins_deel id,
fac_tracking ft
WHERE id.ins_discipline_key=3721 -- alleen objecten uit uitleenmiddelen 3721
AND ft.fac_tracking_refkey=id.ins_deel_key
AND ft.fac_srtnotificatie_key in (101,103,104) -- alleen mutaties, uitgegevn en ingenomen
AND id.ins_deel_verwijder is null
ORDER BY id.ins_deel_key, ft.fac_tracking_datum;
-----------------------------------------
-- Parkeerplaats goedkeuring
-----------------------------------------
-- view voor lijstje met mensen die WEB_USER09 rechten hebben
-- dit zijn de mensen die parkeerplaatsen goed mogen keuren.
CREATE OR REPLACE VIEW ykpn_v_pp_goedkeurders
(
prs_perslid_key,
prs_perslid_naam_full,
prs_perslid_verwijder
)
AS
SELECT DISTINCT
pf.prs_perslid_key, prs_perslid_naam_full || '(' || kl.prs_kenmerklink_waarde || ')', prs_perslid_verwijder
FROM prs_v_perslid_fullnames_all pf,
fac_groeprechten gr,
fac_gebruikersgroep gg,
prs_kenmerklink kl
WHERE pf.prs_perslid_key = gg.prs_perslid_key
AND gg.fac_groep_key = gr.fac_groep_key
AND gr.fac_functie_key = 119 -- WEB_USER09
AND kl.prs_link_key = pf.prs_perslid_key
AND kl.prs_kenmerk_key = 1040;
-- view voor rapport pp goedkeurders
-- via de gebruikersgroep gaan we op zoek naar vervangers.
CREATE OR REPLACE VIEW ykpn_v_rap_goedkeuring_pp
AS
SELECT gg1.prs_perslid_key FCLT_3D_USER_KEY,
b.bez_bezoekers_key,
bez_afspraak_datum,
bez_afspraak_eind,
bez_afspraak_gastheer,
bez_afspraak_naam,
bez_afspraak_bedrijf,
alg_locatie_omschrijving,
alg_gebouw_naam,
prs_perslid_naam_full goedkeurder,
(SELECT bez_kenmerkwaarde_waarde
FROM bez_kenmerkwaarde kw
WHERE bez_kenmerk_key = 1004
AND kw.bez_bezoekers_key = b.bez_bezoekers_key) reden
FROM bez_afspraak a,
bez_bezoekers b,
res_rsv_deel rrd,
res_v_ins_deel rid,
bez_kenmerkwaarde kw,
prs_v_perslid_fullnames pg,
alg_locatie l,
alg_gebouw g,
-- fac_groep gr,
fac_gebruikersgroep gg1
-- fac_gebruikersgroep gg2
WHERE b.bez_bezoekers_key = rrd.bez_bezoekers_key
AND rrd.res_deel_key = rid.res_deel_key
AND rid.alg_gebouw_key = g.alg_gebouw_key
AND b.bez_bezoekers_key = kw.bez_bezoekers_key
AND a.alg_locatie_key = l.alg_locatie_key
AND kw.bez_kenmerk_key = 1003 -- moet goedgekeurd worden door
AND a.bez_afspraak_key = b.bez_afspraak_key
AND fac.safe_to_number (kw.bez_kenmerkwaarde_waarde) =
pg.prs_perslid_key
AND pg.prs_perslid_key = gg1.prs_perslid_key
AND gg1.fac_groep_key = 341
-- AND gr.fac_groep_collega = 1
-- AND gr.fac_groep_key = gg2.fac_groep_key
-- AND gr.fac_groep_key = 341
AND NOT EXISTS (SELECT t.fac_tracking_key
FROM fac_tracking t, fac_srtnotificatie sn
WHERE fac_tracking_refkey = b.bez_bezoekers_key
AND t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND sn.fac_srtnotificatie_code = 'CUST04');
-- Rapport met goedgekeurde en afgewezen parkeerplaatsen
CREATE OR REPLACE VIEW ykpn_v_rap_tracking_pp
AS
SELECT bez_afspraak_datum,
fac_tracking_datum,
DECODE (fac_srtnotificatie_code,
'CUST05', 'Afgekeurd',
'CUST04', 'Goedgekeurd')
fac_srtnotificatie_oms,
a.bez_afspraak_key,
bez_afspraak_naam,
bez_afspraak_bedrijf,
l.alg_locatie_omschrijving,
wpl.alg_locatie_omschrijving standplaats,
pfg.prs_perslid_naam_full
goedkeurder,
pfh.prs_perslid_naam_full
gastheer,
(SELECT bez_kenmerkwaarde_waarde
FROM bez_kenmerkwaarde kw
WHERE bez_kenmerk_key = 1004
AND kw.bez_bezoekers_key = b.bez_bezoekers_key)
reden
FROM fac_tracking t,
fac_srtnotificatie sn,
bez_bezoekers b,
bez_afspraak a,
alg_locatie l,
prs_v_perslid_fullnames pfg,
prs_v_perslid_fullnames pfh,
prs_v_perslidwerkplek_gegevens pwpg,
alg_locatie wpl
WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND ( fac_srtnotificatie_code = 'CUST05'
OR fac_srtnotificatie_code = 'CUST04')
AND t.fac_tracking_refkey = b.bez_bezoekers_key
AND b.bez_afspraak_key = a.bez_afspraak_key
AND a.alg_locatie_key = l.alg_locatie_key
AND t.prs_perslid_key = pfg.prs_perslid_key
AND a.bez_afspraak_host_key = pfh.prs_perslid_key
AND b.prs_perslid_key = pwpg.prs_perslid_key(+)
AND pwpg.alg_locatie_key = wpl.alg_locatie_key(+);
-- Notificatie naar mensen die geen autorisator opgegeven hebben tijdens het boeken van een parkeerplaats.
CREATE OR REPLACE VIEW ykpn_v_noti_ongeldige_pp
(
CODE,
SENDER,
RECEIVER,
TEXT,
KEY,
XKEY
)
AS
SELECT DISTINCT
'CUST06',
NULL,
bez_afspraak_contact_key,
'Ongeldige parkeerplaatsaanvraag bij bezoek '
|| a.bez_afspraak_key
|| ' op '
|| TO_CHAR (a.bez_afspraak_datum, 'dd-mm-yy hh24:mi'),
a.bez_afspraak_key,
NULL
FROM bez_bezoekers b, bez_afspraak a, res_rsv_deel rrd
WHERE b.bez_afspraak_key = a.bez_afspraak_key
AND rrd.bez_bezoekers_key = b.bez_bezoekers_key
AND rrd.res_rsv_deel_verwijder IS NULL
AND NOT EXISTS
(SELECT bez_kenmerkwaarde_key
FROM bez_kenmerkwaarde kw
WHERE kw.bez_kenmerk_key = 1020
AND kw.bez_bezoekers_key = b.bez_bezoekers_key) -- pincode
AND NOT EXISTS
(SELECT bez_kenmerkwaarde_key
FROM bez_kenmerkwaarde kw
WHERE kw.bez_kenmerk_key = 1003
AND kw.bez_bezoekers_key = b.bez_bezoekers_key) -- autorisator
AND rrd.res_rsv_deel_aanmaak BETWEEN (SELECT fac_notificatie_job_nextrun
- fac_notificatie_job_interval
/ 24
FROM fac_notificatie_job
WHERE fac_notificatie_job_view =
'YKPN_V_NOTI_ONGELDIGE_PP')
AND (SELECT fac_notificatie_job_nextrun
FROM fac_notificatie_job
WHERE fac_notificatie_job_view =
'YKPN_V_NOTI_ONGELDIGE_PP');
CREATE OR REPLACE VIEW ykpn_v_iam_list
AS
SELECT res.res_rsv_ruimte_key res_key,
alg.alg_gebouw_naam||', object '||alg.alg_gebouw_code||', werkplekreservering TGV' accesslevelcode,
(SELECT p.prs_perslid_oslogin FROM prs_perslid p WHERE p.prs_perslid_key=res.res_rsv_ruimte_contact_key) ruisID,
(SELECT kw.res_kenmerkreservering_waarde
FROM res_kenmerkwaarde kw, res_kenmerk kn, res_srtkenmerk ks
WHERE UPPER(ks.res_srtkenmerk_omschrijving)='IAM_AUTORISATIE'
AND kn.res_srtkenmerk_key = ks.res_srtkenmerk_key
AND kw.res_kenmerk_key = kn.res_kenmerk_key
AND kw.res_rsv_ruimte_key=res.res_rsv_ruimte_key) iam_response
FROM res_rsv_ruimte res, alg_v_onroerendgoed_gegevens alg, alg_onrgoedkenmerk akn
WHERE alg.alg_ruimte_key=res.alg_ruimte_key
AND akn.alg_onrgoed_key=alg.alg_gebouw_key
AND akn.alg_kenmerk_key=(SELECT ak.alg_kenmerk_key
FROM alg_kenmerk ak
WHERE ak.alg_kenmerk_upper='IAM AANMELDING VEREIST')
AND akn.alg_onrgoedkenmerk_waarde='1';
--AND res.res_rsv_ruimte_verwijder IS NULL
CREATE OR REPLACE VIEW ykpn_v_iam_res
AS
SELECT res.res_rsv_ruimte_key res_key,
alg.alg_gebouw_naam||', object '||alg.alg_gebouw_code||', werkplekreservering TGV' accesslevelcode,
(SELECT p.prs_perslid_oslogin
FROM prs_perslid p
WHERE p.prs_perslid_key=res.res_rsv_ruimte_contact_key) ruisID,
TO_CHAR(res.res_rsv_ruimte_van,'YYYY-MM-DD')||'T'||TO_CHAR(res.res_rsv_ruimte_van, 'HH24:MI:SS') datumVan,
TO_CHAR(res.res_rsv_ruimte_tot,'YYYY-MM-DD')||'T'||TO_CHAR(res.res_rsv_ruimte_tot, 'HH24:MI:SS') datumTot
FROM res_rsv_ruimte res, alg_v_onroerendgoed_gegevens alg, alg_onrgoedkenmerk akn
WHERE alg.alg_ruimte_key=res.alg_ruimte_key
AND akn.alg_onrgoed_key=alg.alg_gebouw_key
AND akn.alg_kenmerk_key = (SELECT ak.alg_kenmerk_key
FROM alg_kenmerk ak
WHERE ak.alg_kenmerk_upper='IAM AANMELDING VEREIST')
AND akn.alg_onrgoedkenmerk_waarde= '1'
AND res.res_rsv_ruimte_verwijder IS NULL
AND TO_CHAR(res.res_rsv_ruimte_van,'YYYYMMDD')= TO_CHAR(SYSDATE,'YYYYMMDD')
AND res.res_rsv_ruimte_key NOT IN (SELECT kw.res_rsv_ruimte_key
FROM res_kenmerkwaarde kw, res_kenmerk kn, res_srtkenmerk ks
WHERE UPPER(ks.res_srtkenmerk_omschrijving)='IAM_AUTORISATIE'
AND kn.res_srtkenmerk_key = ks.res_srtkenmerk_key
AND kw.res_kenmerk_key = kn.res_kenmerk_key
AND kw.res_rsv_ruimte_key=res.res_rsv_ruimte_key);
-- YKPN#70737 Rapportages procuraties
-- rapportage over alle meldingen die een procuratie hebben doorlopen
CREATE OR REPLACE VIEW ykpn_v_procuratie_rap
(
melding_key,
opdr_key,
opdr_volgnr,
mld_onderwerp,
opdr_omschrijving,
melding_datum,
opdr_begindatum,
melding_einddatum,
opdr_einddatum,
mld_status,
opdr_status,
locatie,
mld_behandelaar,
opd_behandelaar,
ong_procuratie,
po_gereed_doorbelast,
po_afwijkend,
po_nummer,
capex_opex,
materiaal_kosten,
kost_em,
kost_hm,
kost_jpm,
tot_bedrag_extlev,
kost_mpm,
kost_spm,
yask_fee_extlev,
kost_fm,
kost_hospm,
tot_bedrag_proc,
kost_faccor,
tot_koste_evn,
kost_huisvm,
kost_medior,
kost_jfaccor,
uren,
uurloon,
totaal_kosten,
correctie,
leverancier
)
AS
SELECT mld_melding_key,
mld_opdr_key,
mld_opdr_bedrijfopdr_volgnr,
mld_onderwerp,
opdr_omschrijving,
mld_melding_datum,
mld_opdr_datumbegin,
mld_melding_einddatum,
mld_opdr_einddatum,
mld_status,
opd_status,
locatie,
mld_behandelaar,
opd_behandelaar,
ong_procuratie,
po_gereed_doorbelast,
po_afwijkend,
po_nummer,
capex_opex,
materiaal_kosten,
kost_em,
kost_hm,
kost_jpm,
tot_bedrag_extlev,
kost_mpm,
kost_spm,
yask_fee_extlev,
kost_fm,
kost_hospm,
tot_bedrag_proc,
kost_faccor,
tot_koste_evn,
kost_huisvm,
kost_medior,
kost_jfaccor,
uren,
uurloon,
totaal_kosten,
(totaal_kosten-materiaal_kosten-(uren*uurloon)) correctie,
uitvoerende
FROM (SELECT m.mld_melding_key,
o.mld_opdr_key,
o.mld_opdr_bedrijfopdr_volgnr,
m.MLD_MELDING_ONDERWERP mld_onderwerp,
o.MLD_OPDR_OMSCHRIJVING opdr_omschrijving,
m.mld_melding_datum,
o.mld_opdr_datumbegin,
m.mld_melding_einddatum,
o.mld_opdr_einddatum,
(SELECT mms.mld_statuses_omschrijving
FROM mld_statuses mms
WHERE mms.mld_statuses_key=m.mld_melding_status) mld_status,
(SELECT mld_statusopdr_omschrijving
FROM mld_statusopdr ms
WHERE ms.mld_statusopdr_key=o.mld_statusopdr_key) opd_status,
(SELECT a.alg_locatie_omschrijving
FROM alg_v_aanweziglocatie a
WHERE a.alg_locatie_key=m.mld_alg_locatie_key) locatie,
(SELECT p.prs_perslid_naam_friendly
FROM prs_v_perslid_fullnames p
WHERE p.prs_perslid_key=m.prs_perslid_key) mld_behandelaar,
(SELECT p.prs_perslid_naam_friendly
FROM prs_v_perslid_fullnames p
WHERE p.prs_perslid_key=o.prs_perslid_key) opd_behandelaar,
COALESCE((SELECT CASE WHEN fac.safe_to_number(ko.mld_kenmerkopdr_waarde)=1 THEN 'ja' ELSE 'nee' END
FROM mld_kenmerkopdr ko
WHERE ko.mld_opdr_key=o.mld_opdr_key
AND ko.mld_kenmerk_key in (301,5402,5442)),'nee') ong_procuratie,
COALESCE((SELECT CASE WHEN fac.safe_to_number(ko.mld_kenmerkopdr_waarde)=1 THEN 'ja' ELSE 'nee' END
FROM mld_kenmerkopdr ko
WHERE ko.mld_opdr_key=o.mld_opdr_key
AND ko.mld_kenmerk_key in (3701,5408,5448)),'nee') po_gereed_doorbelast,
COALESCE((SELECT CASE WHEN fac.safe_to_number(ko.mld_kenmerkopdr_waarde)=1 THEN 'ja' ELSE 'nee' END
FROM mld_kenmerkopdr ko
WHERE ko.mld_opdr_key=o.mld_opdr_key
AND ko.mld_kenmerk_key in (741,5405,5445)),'nee') po_afwijkend,
(SELECT ko.mld_kenmerkopdr_waarde
FROM mld_kenmerkopdr ko
WHERE ko.mld_opdr_key=o.mld_opdr_key
AND ko.mld_kenmerk_key in (561,5403,5443)) po_nummer,
(SELECT fu.fac_usrdata_code
FROM mld_kenmerkopdr ko, fac_usrdata fu
WHERE ko.mld_opdr_key=o.mld_opdr_key
AND ko.mld_kenmerk_key in (7901,7921,7941)
AND fu.fac_usrdata_key=ko.mld_kenmerkopdr_waarde
AND fu.fac_usrtab_key=1961) capex_opex,
COALESCE((SELECT sum(mom.mld_opdr_materiaal_aantal*mom.mld_opdr_materiaal_prijs)
FROM mld_opdr_materiaal mom
WHERE mom.mld_opdr_key=o.mld_opdr_key),0) materiaal_kosten,
(SELECT max(DECODE(fac_usrdata_key,141,mom.mld_opdr_materiaal_prijs*mld_opdr_materiaal_aantal))
FROM mld_opdr_materiaal mom
WHERE mom.mld_opdr_key=o.mld_opdr_key) kost_em, -- uur eventmanager
(SELECT max(DECODE(fac_usrdata_key,161,mom.mld_opdr_materiaal_prijs*mld_opdr_materiaal_aantal))
FROM mld_opdr_materiaal mom
WHERE mom.mld_opdr_key=o.mld_opdr_key) kost_hm, -- uur huismeester
(SELECT max(DECODE(fac_usrdata_key,162,mom.mld_opdr_materiaal_prijs))
FROM mld_opdr_materiaal mom
WHERE mom.mld_opdr_key=o.mld_opdr_key) kost_jpm, -- uur Junior projectmanager
(SELECT max(DECODE(fac_usrdata_key,2361,mom.mld_opdr_materiaal_prijs*mld_opdr_materiaal_aantal))
FROM mld_opdr_materiaal mom
WHERE mom.mld_opdr_key=o.mld_opdr_key) tot_bedrag_extlev, -- total bedrag ext lev offerter
(SELECT max(DECODE(fac_usrdata_key,2381,mom.mld_opdr_materiaal_prijs*mld_opdr_materiaal_aantal))
FROM mld_opdr_materiaal mom
WHERE mom.mld_opdr_key=o.mld_opdr_key) kost_mpm, -- medio projectmanager
(SELECT max(DECODE(fac_usrdata_key,2382,mom.mld_opdr_materiaal_prijs*mld_opdr_materiaal_aantal))
FROM mld_opdr_materiaal mom
WHERE mom.mld_opdr_key=o.mld_opdr_key) kost_spm, -- uur senior projectmanager
(SELECT max(DECODE(fac_usrdata_key,2383,mom.mld_opdr_materiaal_prijs*mld_opdr_materiaal_aantal))
FROM mld_opdr_materiaal mom
WHERE mom.mld_opdr_key=o.mld_opdr_key) yask_fee_extlev, -- yask fee ext lev offertes
(SELECT max(DECODE(fac_usrdata_key,2384,mom.mld_opdr_materiaal_prijs*mld_opdr_materiaal_aantal))
FROM mld_opdr_materiaal mom
WHERE mom.mld_opdr_key=o.mld_opdr_key) kost_fm, -- uur facilitor manager
(SELECT max(DECODE(fac_usrdata_key,2385,mom.mld_opdr_materiaal_prijs*mld_opdr_materiaal_aantal))
FROM mld_opdr_materiaal mom
WHERE mom.mld_opdr_key=o.mld_opdr_key) kost_hospm, -- uren hosp medewwerker
(SELECT max(DECODE(fac_usrdata_key,2401,mom.mld_opdr_materiaal_prijs*mld_opdr_materiaal_aantal))
FROM mld_opdr_materiaal mom
WHERE mom.mld_opdr_key=o.mld_opdr_key) tot_bedrag_proc, -- totaal bedrag proc
(SELECT max(DECODE(fac_usrdata_key,2421,mom.mld_opdr_materiaal_prijs*mld_opdr_materiaal_aantal))
FROM mld_opdr_materiaal mom
WHERE mom.mld_opdr_key=o.mld_opdr_key) kost_faccor, -- uren facilitie coordinator
(SELECT max(DECODE(fac_usrdata_key,2481,mom.mld_opdr_materiaal_prijs*mld_opdr_materiaal_aantal))
FROM mld_opdr_materiaal mom
WHERE mom.mld_opdr_key=o.mld_opdr_key) tot_koste_evn, -- totale kosten evenement
(SELECT max(DECODE(fac_usrdata_key,2901,mom.mld_opdr_materiaal_prijs*mld_opdr_materiaal_aantal))
FROM mld_opdr_materiaal mom
WHERE mom.mld_opdr_key=o.mld_opdr_key) kost_huisvm, -- uren huisvestigingsmanager
(SELECT max(DECODE(fac_usrdata_key,3341,mom.mld_opdr_materiaal_prijs*mld_opdr_materiaal_aantal))
FROM mld_opdr_materiaal mom
WHERE mom.mld_opdr_key=o.mld_opdr_key) kost_medior, -- uren medior
(SELECT max(DECODE(fac_usrdata_key,3461,mom.mld_opdr_materiaal_prijs*mld_opdr_materiaal_aantal))
FROM mld_opdr_materiaal mom
WHERE mom.mld_opdr_key=o.mld_opdr_key) kost_jfaccor, -- uren junior facilitor coordinator
COALESCE(o.mld_opdr_uren,0) uren,
COALESCE(o.mld_opdr_uurloon,0) uurloon,
COALESCE(o.mld_opdr_kosten,0) totaal_kosten,
(SELECT p.prs_bedrijf_naam FROM prs_bedrijf p where p.prs_bedrijf_key=o.mld_uitvoerende_keys) uitvoerende
FROM mld_melding m, mld_opdr o
WHERE o.mld_typeopdr_key IN (101,2481, 2482)
AND m.mld_melding_key=o.mld_melding_key);
-- YKPN#70737 Rapportages procuraties
-- rapportage over alle facturen van meldingen die een procuratie hebben doorlopen
CREATE OR REPLACE VIEW ykpn_v_procuratie_factuur
(
factuur_nr,
melding_nr,
opdr_key,
opdr_nr,
melding_datum,
opdr_datum,
melding_einddatum,
opdr_einddatum,
opdr_status,
locatie,
mld_behandelaar,
opd_behandelaar,
uitvoerende,
totaal_kosten,
fact_regel_bedrag
)
AS
SELECT DISTINCT
fin.fin_factuur_nr factuur_nr,
m.mld_melding_key,
o.mld_opdr_key,
m.mld_melding_key||'/'||o.mld_opdr_bedrijfopdr_volgnr,
m.mld_melding_datum,
o.mld_opdr_datumbegin,
m.mld_melding_einddatum,
o.mld_opdr_einddatum,
(SELECT a.alg_locatie_omschrijving FROM alg_v_aanweziglocatie a WHERE a.alg_locatie_key=m.mld_alg_locatie_key) locatie,
(SELECT p.prs_perslid_naam_friendly FROM prs_v_perslid_fullnames p WHERE p.prs_perslid_key=m.prs_perslid_key) mld_behandelaar,
(SELECT p.prs_perslid_naam_friendly FROM prs_v_perslid_fullnames p WHERE p.prs_perslid_key=o.prs_perslid_key) opd_behandelaar,
(SELECT mld_statusopdr_omschrijving FROM mld_statusopdr ms WHERE ms.mld_statusopdr_key=o.mld_statusopdr_key) status,
(SELECT p.prs_bedrijf_naam FROM prs_bedrijf p WHERE p.prs_bedrijf_key=o.mld_uitvoerende_keys) uitvoerende,
o.mld_opdr_kosten,
fir.fin_factuurregel_totaal
FROM fin_factuur fin,
fin_factuurregel fir,
mld_melding m,
mld_opdr o,
(SELECT DISTINCT m.mld_melding_key
FROM mld_melding m, mld_opdr o
WHERE m.mld_melding_key=o.mld_melding_key
AND o.mld_typeopdr_key IN (101,2481, 2482)
AND o.mld_statusopdr_key IN (4,5,6)) mld
WHERE m.mld_melding_key =mld.mld_melding_key
AND o.mld_melding_key=m.mld_melding_key
AND fin.mld_opdr_key=o.mld_opdr_key
AND fir.fin_factuur_key = fin.fin_factuur_key;
CREATE OR REPLACE VIEW ykpn_v_bes_winkel
(
bes_key,
winkel,
code,
artikelnr,
omschrijving,
aantal,
prijs,
datum
)
AS
SELECT b.bes_bestelling_key,
p.prs_perslid_naam,
p.prs_perslid_voornaam,
bsd.bes_srtdeel_nr,
bsd.bes_srtdeel_omschrijving,
bbi.bes_bestelling_item_aantal,
bbi.bes_bestelling_item_prijs,
b.bes_bestelling_datum
FROM bes_bestelling b,
bes_bestelling_item bbi,
bes_srtdeel bsd,
prs_perslid p
WHERE bbi.bes_bestelling_key=b.bes_bestelling_key
AND bsd.bes_srtdeel_key = bbi.bes_srtdeel_key
AND b.prs_perslid_key = p.prs_perslid_key
AND LOWER(p.prs_perslid_naam) like '%winkel%' -- alleen de winkel bestellingen
ORDER BY p.prs_perslid_naam;
CREATE OR REPLACE VIEW ykpn_v_bezoek_secu
AS
SELECT
a.bez_afspraak_datum,
l.alg_locatie_omschrijving,
kw.bez_kenmerkwaarde_waarde,
DECODE(kw.bez_kenmerkwaarde_waarde,null,1,61,1,62,1) aantal_bezoekers,
DECODE(kw.bez_kenmerkwaarde_waarde,null,1,61,1,0) wel_gelegitimeerd,
DECODE(kw.bez_kenmerkwaarde_waarde,62,1,0) niet_gelegitimeerd
FROM bez_bezoekers b,
bez_afspraak a,
alg_locatie l,
(SELECT * FROM bez_kenmerkwaarde WHERE bez_kenmerk_key=1120) kw
WHERE a.bez_afspraak_key = b.bez_afspraak_key
AND a.alg_locatie_key = l.alg_locatie_key
AND kw.bez_bezoekers_key(+)=b.bez_bezoekers_key;
CREATE OR REPLACE VIEW ykpn_v_factuur_fiateur
AS
SELECT f.fin_factuur_key
factuurnr_intern,
fin_factuur_verwijder,
f.fin_factuur_datum
factuur_datum,
f.fin_factuur_flag,
COALESCE (b.prs_bedrijf_naam,
(SELECT d.prs_afdeling_omschrijving
FROM prs_v_afdeling d
WHERE d.prs_afdeling_key = c.cnt_prs_afdeling_key),
(SELECT pf.prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key = c.cnt_prs_perslid_key))
uitvoerende,
b.prs_leverancier_nr,
fin_factuur_nr
factuurnr_extern,
f.mld_opdr_key,
f.cnt_contract_key,
f.bes_bestelopdr_key,
NVL2 (
k.prs_kostenplaats_nr,
prs_kostenplaats_nr
|| ' '
|| lcl.x ('prs_kostenplaats_omschrijving',
k.prs_kostenplaats_key,
k.prs_kostenplaats_omschrijving),
'')
kostenplaats,
cd.ins_discipline_omschrijving,
(SELECT MIN (ins_discipline_omschrijving)
FROM bes_discipline bd, bes_srtgroep bg, bes_srtdeel bs
WHERE bs.bes_srtdeel_key = bb.bes_srtdeel_key
AND bg.bes_srtgroep_key = bs.bes_srtgroep_key
AND bd.ins_discipline_key = bg.ins_discipline_key)
bes_discipline_omschrijving,
mld_stdmelding_omschrijving,
COALESCE (
NVL2 (
f.mld_opdr_key,
ins_srtdiscipline_prefix
|| TO_CHAR (o.mld_melding_key)
|| '/'
|| o.mld_opdr_bedrijfopdr_volgnr,
NULL),
NVL2 (
f.cnt_contract_key,
'C'
|| cnt_contract_nummer_intern
|| NVL2 (cnt_contract_versie, '.' || cnt_contract_versie, ''),
NULL),
NVL2 (f.bes_bestelopdr_key, bo.bes_bestelopdr_id, NULL),
' ')
opdrachtnr,
o.mld_statusopdr_key,
o.mld_opdr_kosten,
f.fin_factuur_bron,
f.fin_factuur_totaal + f.fin_factuur_totaal_btw
bedrag_incl_BTW,
f.fin_factuur_totaal
bedrag_excl_BTW,
f.fin_factuur_boekmaand,
f.fin_factuur_statuses_key,
f.fin_factuur_opmerking,
fin.matchfactuur (f.fin_factuur_key)
roodgroen,
budgethouder,
(SELECT pf.prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key = budgethouder)
budgethoudernaam,
c.prs_perslid_key_eig,
prs_perslid_key_goedkeur,
(SELECT MAX (fin_factuur_note_aanmaak)
FROM fin_factuur_note fn
WHERE fn.fin_factuur_key = f.fin_factuur_key)
notitie,
(SELECT pf.prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key = bb.prs_perslid_key)
besteller,
bb.bestelopdr_totaal,
bb.bestelopdr_besteld,
bb.bestelopdr_geleverd,
COALESCE((SELECT p.prs_perslid_naam_friendly
FROM prs_v_perslid_fullnames p,
(SELECT MAX(pw.prs_perslid_key) prs_perslid_key
FROM fac_groep g, fac_gebruikersgroep gg, prs_perslidwerkplek pw, prs_werkplek w, alg_v_allonroerendgoed a
WHERE g.fac_groep_omschrijving='Yask FM'
AND gg.fac_groep_key=g.fac_groep_key
AND pw.prs_perslid_key=gg.prs_perslid_key
AND pw.prs_werkplek_key=w.prs_werkplek_key
AND w.prs_alg_ruimte_key=a.alg_ruimte_key
AND a.alg_gebouw_key= onrg.alg_gebouw_key
) fac
WHERE p.prs_perslid_key=fac.prs_perslid_key),
(SELECT p.prs_perslid_naam_friendly
FROM prs_v_perslid_fullnames p,
(SELECT MAX(pw.prs_perslid_key) prs_perslid_key
FROM fac_groep g, fac_gebruikersgroep gg, prs_perslidwerkplek pw, prs_werkplek w, alg_v_allonroerendgoed a, mld_adres ba
WHERE g.fac_groep_omschrijving='Yask FM'
AND gg.fac_groep_key=g.fac_groep_key
AND pw.prs_perslid_key=gg.prs_perslid_key
AND pw.prs_werkplek_key=w.prs_werkplek_key
AND w.prs_alg_ruimte_key=a.alg_ruimte_key
AND a.alg_locatie_key= ba.alg_locatie_key
AND ba.mld_adres_key = bo.mld_adres_key_lev
) fac
WHERE p.prs_perslid_key=fac.prs_perslid_key)) fiatteur,
(SELECT pf.prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all pf
WHERE pf.prs_perslid_key =(select prs_perslid_key from fac_tracking where fac_tracking_key=ft.fac_tracking_key)) laatste_fiateur_track,
1
bes_fiat_write,
1
mld_fiat_write
FROM (SELECT fin.getfiatteur (f.fin_factuur_key) budgethouder, f.*
FROM fin_factuur f) f
LEFT OUTER JOIN (SELECT MAX(fac_tracking_key) fac_tracking_key, fac_tracking_refkey
FROM fac_tracking
WHERE fac_srtnotificatie_key=131 group by fac_tracking_refkey) ft ON ft.fac_tracking_refkey=f.fin_factuur_key
LEFT OUTER JOIN mld_opdr o ON f.mld_opdr_key = o.mld_opdr_key
LEFT OUTER JOIN mld_melding m ON o.mld_melding_key = m.mld_melding_key
LEFT OUTER JOIN mld_stdmelding sm
ON m.mld_stdmelding_key = sm.mld_stdmelding_key
LEFT OUTER JOIN mld_discipline d
ON sm.mld_ins_discipline_key = d.ins_discipline_key
LEFT OUTER JOIN ins_srtdiscipline sd
ON d.ins_srtdiscipline_key = sd.ins_srtdiscipline_key
LEFT OUTER JOIN cnt_contract c
ON f.cnt_contract_key = c.cnt_contract_key
LEFT OUTER JOIN cnt_discipline cd
ON c.ins_discipline_key = cd.ins_discipline_key
LEFT OUTER JOIN bes_bestelopdr bo
ON f.bes_bestelopdr_key = bo.bes_bestelopdr_key
LEFT OUTER JOIN
( SELECT boi.bes_bestelopdr_key,
MIN (bes_srtdeel_key) bes_srtdeel_key,
MIN (bb.prs_kostenplaats_key) prs_kostenplaats_key,
MIN (bb.prs_perslid_key) prs_perslid_key,
SUM (
boi.bes_bestelopdr_item_prijs
* boi.bes_bestelopdr_item_aantal) bestelopdr_totaal,
SUM (boi.bes_bestelopdr_item_aantal) bestelopdr_besteld,
SUM (boi.bes_bestelopdr_item_aantalontv) bestelopdr_geleverd
FROM bes_bestelling bb,
bes_bestelopdr_item boi,
bes_bestelling_item bbi
WHERE bbi.bes_bestelling_key = bb.bes_bestelling_key
AND boi.bes_bestelopdr_item_key = bbi.bes_bestelopdr_item_key
GROUP BY boi.bes_bestelopdr_key) bb
ON f.bes_bestelopdr_key = bb.bes_bestelopdr_key
LEFT OUTER JOIN prs_kostenplaats k
ON k.prs_kostenplaats_key = COALESCE (bb.prs_kostenplaats_key,
o.prs_kostenplaats_key,
m.prs_kostenplaats_key,
c.prs_kostenplaats_key)
LEFT OUTER JOIN prs_bedrijf b
ON b.prs_bedrijf_key =
COALESCE (o.mld_uitvoerende_keys,
c.cnt_prs_bedrijf_key,
bo.prs_bedrijf_key)
LEFT OUTER JOIN alg_v_allonroerendgoed onrg
ON m.mld_alg_onroerendgoed_keys = onrg.alg_onroerendgoed_keys
WHERE 1 = 1
AND f.fin_factuur_statuses_key = 2
AND f.fin_factuur_verwijder IS NULL
ORDER BY f.fin_factuur_key;
CREATE OR REPLACE VIEW ykpn_v_arrow_meldingen
(
melding_key,
melding_onderwerp,
melding_datum,
afmeld_datum,
melding_status,
tot_melding_kosten
)
AS
SELECT m.mld_melding_key,
m.mld_melding_onderwerp,
m.mld_melding_datum,
(SELECT MAX(fac_tracking_datum)
FROM fac_tracking
WHERE fac_srtnotificatie_key=39 -- MLDAFM
AND fac_tracking_refkey=m.mld_melding_key) afmeld_datum,
(SELECT mld_statuses.mld_statuses_omschrijving
FROM mld_statuses
WHERE mld_statuses.mld_statuses_key=m.mld_melding_status) melding_status,
SUM(ROUND(o.mld_opdr_kosten*1.04, 2)) tot_melding_kosten -- Vaste toelslag van 4%
FROM mld_melding m,
mld_stdmelding ms,
mld_opdr o
WHERE UPPER(ms.mld_stdmelding_omschrijving)='ARROW' -- Alleen de Arrow meldingen
AND m.mld_stdmelding_key=ms.mld_stdmelding_key
AND o.mld_melding_key = m.mld_melding_key
GROUP BY m.mld_melding_key,m.mld_melding_onderwerp,m.mld_melding_datum, m.mld_melding_status;
CREATE OR REPLACE VIEW ykpn_v_rap_prsdienstplaats_ext
(
prs_bedrijf_key,
bedrijf,
prs_dienst_key,
dienst,
dienst_hint,
locatie,
gebouw,
gebouw_functie,
TYPE,
werkdagen,
werkuren
)
AS
SELECT b.prs_bedrijf_key,
b.prs_bedrijf_naam,
d.prs_dienst_key,
d.prs_dienst_omschrijving,
d.prs_dienst_hint,
NULL locatie,
NULL gebouw,
NULL gebouw_functie,
'geen scope' TYPE,
DECODE (bdl.prs_bdl_t_uitvoertijd.eenheid,
'D', bdl.prs_bdl_t_uitvoertijd.tijdsduur,
NULL) sla_werkdgn,
DECODE (bdl.prs_bdl_t_uitvoertijd.eenheid,
'U', bdl.prs_bdl_t_uitvoertijd.tijdsduur,
NULL) sla_werkuren
FROM prs_bedrijfdienstlocatie bdl, prs_bedrijf b, prs_dienst d
WHERE b.prs_bedrijf_key = bdl.prs_bedrijf_key
AND prs_bedrijf_verwijder IS NULL
AND bdl.prs_dienst_key = d.prs_dienst_key
AND alg_gebouw_key IS NULL
AND alg_locatie_key IS NULL
UNION
SELECT b.prs_bedrijf_key,
b.prs_bedrijf_naam,
d.prs_dienst_key,
d.prs_dienst_omschrijving,
d.prs_dienst_hint,
l.alg_locatie_omschrijving,
NULL gebouw,
NULL gebouw_functie,
'locatie scope' TYPE,
DECODE (bdl.prs_bdl_t_uitvoertijd.eenheid,
'D', bdl.prs_bdl_t_uitvoertijd.tijdsduur,
NULL) sla_werkdgn,
DECODE (bdl.prs_bdl_t_uitvoertijd.eenheid,
'U', bdl.prs_bdl_t_uitvoertijd.tijdsduur,
NULL) sla_werkuren
FROM prs_bedrijfdienstlocatie bdl,
prs_bedrijf b,
prs_dienst d,
alg_locatie l
WHERE b.prs_bedrijf_key = bdl.prs_bedrijf_key
AND prs_bedrijf_verwijder IS NULL
AND bdl.prs_dienst_key = d.prs_dienst_key
AND l.alg_locatie_key = bdl.alg_locatie_key
AND alg_gebouw_key IS NULL
UNION
SELECT b.prs_bedrijf_key,
b.prs_bedrijf_naam,
d.prs_dienst_key,
d.prs_dienst_omschrijving,
d.prs_dienst_hint,
l.alg_locatie_omschrijving,
g.alg_gebouw_omschrijving,
sg.alg_srtgebouw_omschrijving functie,
'gebouw scope' TYPE,
DECODE (bdl.prs_bdl_t_uitvoertijd.eenheid,
'D', bdl.prs_bdl_t_uitvoertijd.tijdsduur,
NULL) sla_werkdgn,
DECODE (bdl.prs_bdl_t_uitvoertijd.eenheid,
'U', bdl.prs_bdl_t_uitvoertijd.tijdsduur,
NULL) sla_werkuren
FROM prs_bedrijfdienstlocatie bdl,
prs_bedrijf b,
prs_dienst d,
alg_locatie l,
alg_gebouw g,
alg_srtgebouw sg
WHERE b.prs_bedrijf_key = bdl.prs_bedrijf_key
AND prs_bedrijf_verwijder IS NULL
AND bdl.prs_dienst_key = d.prs_dienst_key
AND l.alg_locatie_key = g.alg_locatie_key
AND g.alg_gebouw_key = bdl.alg_gebouw_key
AND g.alg_srtgebouw_key = sg.alg_srtgebouw_key;
CREATE OR REPLACE VIEW ykpn_v_rap_dienstxmelding
(
vakgroep,
melding,
melding_werkdagen,
melding_werkuren,
bedrijf,
dienst,
dienst_hint,
locatie,
gebouw,
gebouw_functie,
TYPE,
dienst_werkdagen,
dienst_werkuren
)
AS
SELECT d.ins_discipline_omschrijving vakgroep,
std.mld_stdmelding_omschrijving melding,
DECODE (std.mld_stdmelding_t_uitvoertijd.eenheid,
'D', std.mld_stdmelding_t_uitvoertijd.tijdsduur,
NULL) melding_werkdagen,
DECODE (std.mld_stdmelding_t_uitvoertijd.eenheid,
'U', std.mld_stdmelding_t_uitvoertijd.tijdsduur,
NULL) melding_werkuren,
bedrijf,
dienst,
dienst_hint,
locatie,
gebouw,
gebouw_functie,
TYPE,
werkdagen dienst_werkdagen,
werkuren dienst_werkuren
FROM ykpn_v_rap_prsdienstplaats_ext pdp,
mld_stdmelding std,
mld_discipline d
WHERE std.prs_dienst_key = pdp.prs_dienst_key
AND std.mld_ins_discipline_key = d.ins_discipline_key;
CREATE OR REPLACE VIEW YKPN_V_AFD_ZONDER_COSTCENTRE
(
prs_afdeling_key,
prs_afdeling_naam,
prs_afdeling_omschrijving,
prs_kostenplaats_nr
)
AS
SELECT prs_afdeling_key,
prs_afdeling_naam,
prs_afdeling_omschrijving,
NULL prs_kostenplaats_nr
FROM prs_afdeling
WHERE prs_kostenplaats_key IS NULL
AND prs_afdeling_verwijder IS NULL;
CREATE OR REPLACE VIEW YKPN_V_GIO_RUIMTEXPORT
(
alg_ruimte_key,
ruimte_nr,
alg_srtruimte_omschrijving,
alg_locatie_code,
alg_locatie_omschrijving
)
AS
SELECT r.alg_ruimte_key,
r.alg_ruimte_nr,
sr.alg_srtruimte_omschrijving,
l.alg_locatie_code,
l.alg_locatie_omschrijving
FROM alg_ruimte r,
alg_srtruimte sr,
alg_v_onroerendgoed_gegevens aog,
alg_locatie l
WHERE r.alg_ruimte_verwijder IS NULL
AND sr.alg_srtruimte_key = r.alg_srtruimte_key
AND aog.alg_ruimte_key = r.alg_ruimte_key
AND l.alg_locatie_key = aog.alg_locatie_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