18840 lines
814 KiB
MySQL
18840 lines
814 KiB
MySQL
--
|
||
-- $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
|
||
|