Files
Customer/AA/AAIT/aait.sql
Arthur Egberink 6fc9de63c9 AAIT#25498 -- Kenmerken overnemen bij opdracht in workflow
svn path=/Customer/trunk/; revision=16712
2013-02-04 09:36:43 +00:00

1860 lines
63 KiB
SQL
Raw Blame History

-- Script containing customer specific configuration sql statements for aait: Arcadis Aqumen Facility Management
-- (c) 2010 SG|facilitor bv
-- $Revision$
-- $Id$
--
-- Support: +31 53 4800700
SPOOL xaait.lst
SET ECHO ON
SET DEFINE OFF
@aaxx.sql;
-- script om dagelijks terugkerende scripts aan te roepen.
CREATE OR REPLACE PROCEDURE aait_select_daily_task (p_applname IN VARCHAR2, p_applrun IN VARCHAR2)
AS
BEGIN
aaxx_daily_task (p_applname, p_applrun);
END;
/
-- budgettracker overrules
CREATE OR REPLACE VIEW aait_v_export_budget_tracker (RESULT, result_order) AS SELECT RESULT, result_order FROM aaxx_v_export_budget_tracker;
-- export overrules
-- exact IT
CREATE OR REPLACE VIEW aait_v_export_exact_it (RESULT, result_order)
AS
SELECT fac_rapport_regel, fac_rapport_volgnr
FROM fac_rapport
WHERE fac_rapport_node = 'EXACT_IT';
CREATE OR REPLACE PROCEDURE aait_select_exact_it (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
BEGIN
-- Bij AAIT wordt in de opdracht bepaald op welke grootboekrekening (lees: kostensoort) de kosten geboekt
-- moeten worden. Dit wordt vastgelegd in srtkenmerk met key 201. Dit is een lijst met kostensoorten. Voor het
-- exporteren van de kosten wordt de kostensoort_key in de factuur gelijk gemaakt aan de kostensoort bij de
-- opdracht.
UPDATE fin_factuur f
SET prs_kostensoort_key = COALESCE((SELECT fac.safe_to_number(mld_kenmerkopdr_waarde)
FROM mld_kenmerk k, mld_kenmerkopdr ko, mld_opdr o
WHERE f.mld_opdr_key = o.mld_opdr_key
AND o.mld_opdr_key = ko.mld_opdr_key
AND ko.mld_kenmerk_key = k.mld_kenmerk_key
AND k.mld_srtkenmerk_key = 201), prs_kostensoort_key) -- srtkenmerk Grootboekrekening/Kostensoort
WHERE EXISTS (SELECT fg.fin_factuur_key
FROM aaxx_v_factuur_gegevens fg
WHERE fg.fin_factuur_key = f.fin_factuur_key
AND mld_opdr_key IS NOT NULL
AND substr(opdracht_id, 1, 2) = 'IT'
AND fin_factuur_statuses_key = 6);
aaxx_select_exact_xml_adm (p_applname, p_applrun, 'IT');
END;
/
CREATE OR REPLACE PROCEDURE aait_export_exact_it (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
BEGIN
aaxx_export_exact_adm (p_applname, p_applrun, p_filedir, p_filename, 'IT');
END;
/
-- exact facilitair
CREATE OR REPLACE VIEW aait_v_export_exact_fac (RESULT, result_order)
AS
SELECT fac_rapport_regel, fac_rapport_volgnr
FROM fac_rapport
WHERE fac_rapport_node = 'EXACT_FAC';
CREATE OR REPLACE PROCEDURE aait_select_exact_fac (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
BEGIN
-- Bij AAIT wordt in de opdracht bepaald op welke grootboekrekening (lees: kostensoort) de kosten geboekt
-- moeten worden. Dit wordt vastgelegd in srtkenmerk met key 201. Dit is een lijst met kostensoorten. Voor het
-- exporteren van de kosten wordt de kostensoort_key in de factuur gelijk gemaakt aan de kostensoort bij de
-- opdracht.
aaxx_select_exact_xml_adm(p_applname, p_applrun, 'FAC');
END;
/
CREATE OR REPLACE PROCEDURE aait_export_exact_fac (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
BEGIN
aaxx_export_exact_adm(p_applname, p_applrun, p_filedir, p_filename, 'FAC');
END;
/
CREATE OR REPLACE VIEW aait_v_export_verwerk_exact_it (RESULT, result_order) AS SELECT RESULT, result_order FROM aaxx_v_export_verwerk_exact;
CREATE OR REPLACE PROCEDURE aait_export_verwerk_exact_it (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
BEGIN
aaxx_export_verwerk_exact_adm(p_applname, p_applrun, p_filedir, p_filename, 'IT');
END;
/
CREATE OR REPLACE PROCEDURE aait_export_verwerk_exact_fac (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
BEGIN
aaxx_export_verwerk_exact_adm(p_applname, p_applrun, p_filedir, p_filename, 'FAC');
END;
/
-- bundel catering
CREATE OR REPLACE VIEW aait_v_export_bundel_catering (RESULT, result_order) AS SELECT RESULT, result_order FROM aaxx_v_export_bundel_catering;
CREATE OR REPLACE PROCEDURE aait_export_bundel_catering (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
BEGIN
aaxx_export_bundel_catering(p_applname, p_applrun, p_filedir, p_filename);
END;
/
-- exact verkoop
CREATE OR REPLACE VIEW aait_v_export_exact_verkoop (RESULT, result_order) AS SELECT RESULT, result_order FROM aaxx_v_export_exact_verkoop;
CREATE OR REPLACE PROCEDURE aait_select_exact_verkoop (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
BEGIN
aaxx_select_exact_verkoop(p_applname, p_applrun, to_char(sysdate, 'yyyy'));
END;
/
CREATE OR REPLACE PROCEDURE aait_export_exact_verkoop (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
BEGIN
aaxx_export_exact_verkoop(p_applname, p_applrun, p_filedir, p_filename, to_char(sysdate, 'yyyy'));
END;
/
-- exact verkoop over het vorige jaar
CREATE OR REPLACE VIEW aait_v_export_exact_verkoop_vj (RESULT, result_order) AS SELECT RESULT, result_order FROM aaxx_v_export_exact_verkoop;
CREATE OR REPLACE PROCEDURE aait_select_exact_verkoop_vj (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
BEGIN
aaxx_select_exact_verkoop(p_applname, p_applrun, to_char(to_number(to_char(sysdate, 'yyyy'))-1));
END;
/
CREATE OR REPLACE PROCEDURE aait_export_exact_verkoop_vj (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
BEGIN
aaxx_export_exact_verkoop(p_applname, p_applrun, p_filedir, p_filename, to_char(to_number(to_char(sysdate, 'yyyy'))-1));
END;
/
-- exact projecturen (XML), opgesplitst naar boekhouding (eerste 3 digits kostenplaats)
CREATE OR REPLACE VIEW aait_v_export_exact_uren001 (
result,
result_order
)
AS
SELECT fac_rapport_regel, fac_rapport_volgnr
FROM fac_rapport
WHERE fac_rapport_node = SUBSTR ('EXACT_UREN001', 1, 12);
CREATE OR REPLACE VIEW aait_v_export_exact_uren007 (
result,
result_order
)
AS
SELECT fac_rapport_regel, fac_rapport_volgnr
FROM fac_rapport
WHERE fac_rapport_node = SUBSTR ('EXACT_UREN007', 1, 12);
CREATE OR REPLACE VIEW aait_v_export_exact_uren012 (
result,
result_order
)
AS
SELECT fac_rapport_regel, fac_rapport_volgnr
FROM fac_rapport
WHERE fac_rapport_node = SUBSTR ('EXACT_UREN012', 1, 12);
CREATE OR REPLACE VIEW aait_v_export_exact_uren020 (
result,
result_order
)
AS
SELECT fac_rapport_regel, fac_rapport_volgnr
FROM fac_rapport
WHERE fac_rapport_node = SUBSTR ('EXACT_UREN020', 1, 12);
CREATE OR REPLACE VIEW aait_v_export_exact_uren029 (
result,
result_order
)
AS
SELECT fac_rapport_regel, fac_rapport_volgnr
FROM fac_rapport
WHERE fac_rapport_node = SUBSTR ('EXACT_UREN029', 1, 12);
-- Exportregels (XML-structuur) in fac_rapport
CREATE OR REPLACE PROCEDURE aait_select_exact_uren001 (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
BEGIN
aaxx_select_exact_uren_xml(p_applname, p_applrun, '001');
END;
/
CREATE OR REPLACE PROCEDURE aait_select_exact_uren007 (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
BEGIN
aaxx_select_exact_uren_xml(p_applname, p_applrun, '007');
END;
/
CREATE OR REPLACE PROCEDURE aait_select_exact_uren012 (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
BEGIN
aaxx_select_exact_uren_xml(p_applname, p_applrun, '012');
END;
/
CREATE OR REPLACE PROCEDURE aait_select_exact_uren020 (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
BEGIN
aaxx_select_exact_uren_xml(p_applname, p_applrun, '020');
END;
/
CREATE OR REPLACE PROCEDURE aait_select_exact_uren029 (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2
)
AS
BEGIN
aaxx_select_exact_uren_xml(p_applname, p_applrun, '029');
END;
/
-- verwerk exact projecturen (XML)
CREATE OR REPLACE PROCEDURE aait_export_vw_exact_uren001 (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
BEGIN
aaxx_export_verwerk_exact_uren(p_applname, p_applrun, p_filedir, p_filename, '001');
END;
/
CREATE OR REPLACE PROCEDURE aait_export_vw_exact_uren007 (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
BEGIN
aaxx_export_verwerk_exact_uren(p_applname, p_applrun, p_filedir, p_filename, '007');
END;
/
CREATE OR REPLACE PROCEDURE aait_export_vw_exact_uren012 (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
BEGIN
aaxx_export_verwerk_exact_uren(p_applname, p_applrun, p_filedir, p_filename, '012');
END;
/
CREATE OR REPLACE PROCEDURE aait_export_vw_exact_uren020 (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
BEGIN
aaxx_export_verwerk_exact_uren(p_applname, p_applrun, p_filedir, p_filename, '020');
END;
/
CREATE OR REPLACE PROCEDURE aait_export_vw_exact_uren029 (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
BEGIN
aaxx_export_verwerk_exact_uren(p_applname, p_applrun, p_filedir, p_filename, '029');
END;
/
--------------------------------
-- import contractorders
--------------------------------
CREATE OR REPLACE PROCEDURE aait_import_contract (p_import_key IN NUMBER) IS
BEGIN
aaxx_import_contract (p_import_key);
END aait_import_contract;
/
CREATE OR REPLACE PROCEDURE aait_update_contract (p_import_key IN NUMBER)
AS
BEGIN
aaxx_update_contract (p_import_key);
END aait_update_contract;
/
CREATE OR REPLACE PROCEDURE aait_import_ruimte (p_import_key IN NUMBER)
AS
BEGIN
aaxx_import_ruimte(p_import_key);
END;
/
CREATE OR REPLACE PROCEDURE aait_update_ruimte (p_import_key IN NUMBER)
AS
BEGIN
aaxx_update_ruimte(p_import_key);
END;
/
-- personen import koppeling
CREATE OR REPLACE PROCEDURE aait_import_perslid_mut (p_import_key IN NUMBER)
AS
v_afdelingscode VARCHAR2(100);
v_persoonachternaam VARCHAR2(100);
v_tussenvoegsel VARCHAR2(100);
v_voorletters VARCHAR2(100);
v_voornaam VARCHAR2(100);
v_titel VARCHAR2(100);
v_telefoonnummer VARCHAR2(100);
v_mobiel VARCHAR2(100);
v_email VARCHAR2(100);
v_functie VARCHAR2(100);
v_loginnaam VARCHAR2(100);
v_personeelsnummer VARCHAR2(100);
v_dienstverband VARCHAR2(100);
v_uurloon VARCHAR2(100);
v_kostenplaats VARCHAR2(100);
v_header VARCHAR2(1000);
v_newline VARCHAR2(1000);
header_is_valid NUMBER := 0;
v_old_login VARCHAR2 (30);
c_delim VARCHAR2 (1) := ';';
CURSOR c1
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
-- cursor om de tussenvoegsels goed in te kunnen vullen. Deze staan nu achter de achternaam.
CURSOR c
IS
SELECT fac_usrdata_omschr, loginnaam
FROM aait_imp_perslid p, fac_usrdata u
WHERE UPPER(p.persoonachternaam) LIKE UPPER(u.fac_usrdata_omschr) || ' ' || '%'
AND fac_usrtab_key = 201
ORDER BY p.loginnaam, LENGTH (fac_usrdata_omschr) DESC;
BEGIN
v_old_login := 'QueQeLeQue';
-- Eerst opruiming
DELETE FROM aait_imp_perslid
WHERE fac_import_key <> p_import_key;
COMMIT;
FOR rec1 IN c1
LOOP
BEGIN
v_newline := rec1.fac_imp_file_line;
-- Lees alle veldwaarden
v_header := v_newline;
fac.imp_getfield (v_newline, c_delim, v_afdelingscode);
fac.imp_getfield (v_newline, c_delim, v_persoonachternaam);
fac.imp_getfield (v_newline, c_delim, v_tussenvoegsel);
fac.imp_getfield (v_newline, c_delim, v_voorletters);
fac.imp_getfield (v_newline, c_delim, v_voornaam);
fac.imp_getfield (v_newline, c_delim, v_titel);
fac.imp_getfield (v_newline, c_delim, v_telefoonnummer);
fac.imp_getfield (v_newline, c_delim, v_mobiel);
fac.imp_getfield (v_newline, c_delim, v_email);
fac.imp_getfield (v_newline, c_delim, v_functie);
fac.imp_getfield (v_newline, c_delim, v_personeelsnummer);
fac.imp_getfield (v_newline, c_delim, v_loginnaam);
fac.imp_getfield (v_newline, c_delim, v_dienstverband);
fac.imp_getfield (v_newline, c_delim, v_uurloon);
fac.imp_getfield (v_newline, c_delim, v_kostenplaats);
IF (header_is_valid = 0)
THEN
IF LOWER (TRIM (v_header)) = 'afdelingscode;persoonachternaam;tussenvoegsel;voorletters;voornaam;titel aanhef;telefoonnummer;mobiel;email;functie;personeelsnummer;loginnaam;dienstverband;uurloon;kostenplaats'
OR LOWER (TRIM (v_header)) = '"afdelingscode";"persoonachternaam";"tussenvoegsel";"voorletters";"voornaam";"titel aanhef";"telefoonnummer";"mobiel";"email";"functie";"personeelsnummer";"loginnaam";"dienstverband";"uurloon";"kostenplaats"'
THEN
header_is_valid := 1;
END IF;
ELSE
INSERT INTO aait_imp_perslid (
afdelingscode,
persoonachternaam,
tussenvoegsel,
voorletters,
voornaam,
titel,
telefoonnummer,
mobiel,
email,
functie,
loginnaam,
personeelsnummer,
dienstverband,
uurloon,
kostenplaats,
fac_import_key)
VALUES (
v_afdelingscode,
v_persoonachternaam,
v_tussenvoegsel,
v_voorletters,
v_voornaam,
v_titel,
DECODE(v_telefoonnummer, 'N/A', NULL, v_telefoonnummer),
v_mobiel,
v_email,
v_functie,
v_loginnaam,
v_personeelsnummer,
v_dienstverband,
v_uurloon,
to_char(fac.safe_to_number(v_kostenplaats), '00000000'),
p_import_key);
END IF;
END;
END LOOP;
IF (header_is_valid = 0)
THEN
fac.imp_writelog (
p_import_key,
'E',
'Ongeldige header',
'Controleer het importbestand.'
);
ELSE
-- splits de achternaam in tussenvoegsels en achternaam.
FOR rec IN c
LOOP
BEGIN
IF rec.loginnaam <> v_old_login
THEN
DBMS_OUTPUT.put_line (
rec.loginnaam || '-' || rec.fac_usrdata_omschr);
v_old_login := rec.loginnaam;
UPDATE aait_imp_perslid p
SET tussenvoegsel = rec.fac_usrdata_omschr,
persoonachternaam =
TRIM(SUBSTR (persoonachternaam,
LENGTH (rec.fac_usrdata_omschr) + 1))
WHERE p.loginnaam = rec.loginnaam;
END IF;
END;
END LOOP;
DELETE fac_imp_perslid;
INSERT INTO fac_imp_perslid (
prs_afdeling_naam,
prs_perslid_naam,
prs_perslid_tussenvoegsel,
prs_perslid_voorletters,
prs_perslid_voornaam,
prs_perslid_titel,
prs_perslid_telefoonnr,
prs_perslid_mobiel,
prs_perslid_email,
prs_srtperslid_omschrijving,
prs_perslid_oslogin,
prs_perslid_nr)
SELECT substr(afdelingscode, 1, 10),
substr(persoonachternaam, 1, 60),
substr(tussenvoegsel, 1, 15),
substr(voorletters, 1, 10),
substr(voornaam, 1, 30),
substr(titel, 1, 15),
substr(telefoonnummer, 1, 15),
substr(mobiel, 1, 15),
substr(email, 1, 50),
substr(functie, 1, 60),
substr(loginnaam, 1, 30),
substr(personeelsnummer, 1, 16)
FROM aait_imp_perslid
WHERE fac_import_key = p_import_key;
END IF;
END aait_import_perslid_mut;
/
CREATE OR REPLACE PROCEDURE aait_update_perslid_mut (
p_import_key IN NUMBER
) IS
CURSOR c_del
IS
SELECT prs_perslid_key,
prs_perslid_naam,
prs_perslid_oslogin,
prs_perslid_oslogin2,
prs_perslid_login,
(SELECT COUNT ( * )
FROM prs_v_verplichting v
WHERE v.prs_perslid_key = p.prs_perslid_key)
verplichtingen
FROM prs_perslid p
WHERE NOT EXISTS
(SELECT prs_perslid_key
FROM fac_imp_perslid i
WHERE p.prs_perslid_oslogin = UPPER (i.prs_perslid_oslogin)
OR p.prs_perslid_oslogin2 = UPPER (i.prs_perslid_oslogin))
AND prs_perslid_verwijder IS NULL
AND (prs_perslid_oslogin NOT LIKE '/_%' ESCAPE ('/')
OR prs_perslid_oslogin IS NULL);
-- cursor om extra velden toe te voegen die niet in de generiek import staan
CURSOR c_extra
IS
SELECT p.prs_perslid_key, prs_perslid_naam_full, kostenplaats, dienstverband, uurloon
FROM aait_imp_perslid i, prs_perslid p, prs_v_perslid_fullnames pf
WHERE UPPER(i.loginnaam) = p.prs_perslid_oslogin
AND p.prs_perslid_key = pf.prs_perslid_key;
v_perslid_key NUMBER;
v_perslid_nr VARCHAR2(100);
v_kostenplaats_nr VARCHAR2(100);
v_fac_groep_key NUMBER;
v_count NUMBER;
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (200);
BEGIN
SELECT count(*)
INTO v_count
FROM fac_imp_perslid;
IF v_count > 100 THEN
BEGIN
SELECT fac_groep_key
INTO v_fac_groep_key
FROM fac_groep
WHERE UPPER (fac_groep_omschrijving) = 'AAFM PROJECTUREN';
EXCEPTION
WHEN NO_DATA_FOUND
THEN
INSERT INTO fac_groep (fac_groep_omschrijving)
VALUES ('AAFM Projecturen')
RETURNING fac_groep_key
INTO v_fac_groep_key;
END;
-- generic update
aaxx.fac_gen_update_perslid (p_import_key, 'LOGIN', 0, '');
-- extra velden toevoegen aan de persoon
FOR rec IN c_extra
LOOP
BEGIN
v_aanduiding := rec.prs_perslid_naam_full||' ('
|| rec.kostenplaats||', '||rec.dienstverband||', '||rec.uurloon||')';
UPDATE prs_perslid p
SET prs_perslid_uurloon = fac.safe_to_number(replace(rec.uurloon,',','.')),
prs_perslid_dienstverband = fac.safe_to_number(replace(rec.dienstverband, ',','.'))
WHERE p.prs_perslid_key = rec.prs_perslid_key;
aaxx.set_prs_kenmerk (p_import_key, 'P', 2, rec.prs_perslid_key, rec.kostenplaats);
-- voeg de persoon toe aan de groep AAFM-projecturen als deze al niet tot de groep behoort.
INSERT INTO fac_gebruikersgroep (fac_groep_key, prs_perslid_key)
SELECT g.fac_groep_key, p.prs_perslid_key
FROM prs_perslid p, fac_groep g
WHERE p.prs_perslid_key = rec.prs_perslid_key
AND g.fac_groep_key = v_fac_groep_key
AND NOT EXISTS (
SELECT fac_gebruikersgroep_key
FROM fac_gebruikersgroep gg
WHERE gg.fac_groep_key = g.fac_groep_key
AND gg.prs_perslid_key = p.prs_perslid_key);
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 bijwerken persoon.'
);
END;
END LOOP;
FOR rec IN c_del
LOOP
BEGIN
v_aanduiding := rec.prs_perslid_naam||' ('
|| rec.prs_perslid_oslogin||'/'||rec.prs_perslid_oslogin2||')';
UPDATE prs_perslid p
SET prs_perslid_oslogin = NULL,
prs_perslid_oslogin2 = NULL
WHERE p.prs_perslid_key = rec.prs_perslid_key;
DELETE fac_gebruikersgroep
WHERE prs_perslid_key = rec.prs_perslid_key
AND fac_groep_key = v_fac_groep_key;
IF rec.verplichtingen = 0 THEN
UPDATE prs_perslid p
SET prs_perslid_verwijder = sysdate
WHERE p.prs_perslid_key = rec.prs_perslid_key;
ELSE
UPDATE prs_perslid p
SET prs_perslid_naam = substr('Inactief ' || prs_perslid_naam, 1,60)
WHERE p.prs_perslid_key = rec.prs_perslid_key
AND p.prs_perslid_naam not like 'Inactief%';
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.imp_writelog (
p_import_key,
'E',
v_aanduiding || v_errormsg,
'Fout bij verwijderen persoon.'
);
END;
END LOOP;
END IF;
END aait_update_perslid_mut;
/
-- Andere account mogen ook gebruik maken van deze data
-- WITH GRANT OPTION omdat AAFM de grant weer door mag geven.
GRANT SELECT ON aait_imp_perslid TO aafm WITH GRANT OPTION;
-- AAIT#24873: Rapportage bezoekers op scherm
-- kenmerk key 1000: afspraak is prive (dus niet op infobord)
CREATE OR REPLACE VIEW aait_v_rap_infobord
(
item_type,
item_key,
aktief,
bezoek_status,
offset,
dag,
tijd_van,
tijd_tot,
ruimte,
catalogus,
aanvrager,
gastheer,
omschrijving,
status,
bezoeker,
bedrijf,
locatie_code,
gebouw_code,
verdieping_code,
locatie_omschrijving,
gebouw_omschrijving,
verdieping_omschrijving,
alg_locatie_key,
alg_gebouw_key,
alg_verdieping_key
)
AS
SELECT 'RES',
rrr.res_rsv_ruimte_key,
(CASE
WHEN res_rsv_ruimte_van > SYSDATE THEN 'expected'
WHEN res_rsv_ruimte_tot < SYSDATE THEN 'passed'
ELSE 'active'
END)
aktief,
(CASE
WHEN b.bez_bezoekers_out IS NOT NULL THEN 'out'
WHEN b.bez_bezoekers_done IS NOT NULL THEN 'in'
ELSE 'expected'
END)
bezoek_status,
TRUNC ( (SYSDATE - res_rsv_ruimte_van) * 24 * 60) offset,
TO_CHAR (res_rsv_ruimte_van, 'dd-mm-yyyy') dag,
TO_CHAR (res_rsv_ruimte_van, 'hh24:mi') tijd_van,
TO_CHAR (res_rsv_ruimte_tot, 'hh24:mi') tijd_tot,
res_ruimte_nr ruimte,
ins_discipline_omschrijving catalogus,
aanvrager.prs_perslid_naam_full aanvrager,
gastheer.prs_perslid_naam_full gastheer,
res_rsv_ruimte_omschrijving omschrijving,
sf.res_status_fo_omschrijving status,
b.bez_afspraak_naam,
b.bez_afspraak_bedrijf,
alg_locatie_code locatie_code,
alg_gebouw_code gebouw_code,
alg_verdieping_code verdieping_code,
alg_locatie_omschrijving locatie_omschrijving,
alg_gebouw_omschrijving gebouw_omschrijving,
alg_verdieping_omschrijving verdieping_omschrijving,
l.alg_locatie_key,
g.alg_gebouw_key,
v.alg_verdieping_key
FROM res_v_aanwezigrsv_ruimte rrr,
res_ruimte_opstelling rro,
prs_v_perslid_fullnames aanvrager,
prs_v_perslid_fullnames gastheer,
res_v_res_ruimte_gegevens rrg,
alg_locatie l,
alg_gebouw g,
alg_verdieping v,
res_status_fo sf,
res_discipline rd,
bez_afspraak a,
bez_bezoekers b,
(SELECT * FROM bez_kenmerkwaarde
WHERE bez_kenmerk_key = 1000
AND bez_kenmerkwaarde_verwijder IS NULL) prive
WHERE rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key
AND rro.res_ruimte_key = rrg.res_ruimte_key
AND rrr.res_rsv_ruimte_host_key = gastheer.prs_perslid_key
AND rrr.res_rsv_ruimte_contact_key = aanvrager.prs_perslid_key
AND TRUNC (res_rsv_ruimte_van) = TRUNC (SYSDATE)
AND rrg.alg_locatie_key = l.alg_locatie_key
AND rrg.alg_gebouw_key = g.alg_gebouw_key
AND rrg.alg_verdieping_key = v.alg_verdieping_key
AND rrr.res_status_fo_key = sf.res_status_fo_key
AND rrg.res_discipline_key = rd.ins_discipline_key
AND rrr.res_rsv_ruimte_key = a.res_rsv_ruimte_key(+)
AND a.bez_afspraak_key = b.bez_afspraak_key(+)
AND prive.bez_bezoekers_key(+) = b.bez_bezoekers_key
AND COALESCE(prive.bez_kenmerkwaarde_waarde, '0') = '0'
UNION ALL
SELECT 'BEZ',
b.bez_afspraak_key,
(CASE
WHEN a.bez_afspraak_datum > SYSDATE THEN 'expected'
WHEN a.bez_afspraak_eind < SYSDATE THEN 'passed'
ELSE 'active'
END)
aktief,
(CASE
WHEN b.bez_bezoekers_out IS NOT NULL THEN 'out'
WHEN b.bez_bezoekers_done IS NOT NULL THEN 'in'
ELSE 'expected'
END)
bezoek_status,
TRUNC ( (SYSDATE - bez_afspraak_datum) * 24 * 60) offset,
TO_CHAR (bez_afspraak_datum, 'dd-mm-yyyy') dag,
TO_CHAR (bez_afspraak_datum, 'hh24:mi') tijd_van,
TO_CHAR (bez_afspraak_eind, 'hh24:mi') tijd_tot,
NULL ruimte,
NULL catalogus,
aanvrager.prs_perslid_naam_full aanvrager,
gastheer.prs_perslid_naam_full gastheer,
NULL omschrijving,
NULL status,
b.bez_afspraak_naam,
b.bez_afspraak_bedrijf,
alg_locatie_code locatie_code,
alg_gebouw_code gebouw_code,
NULL verdieping_code,
alg_locatie_omschrijving locatie_omschrijving,
alg_gebouw_naam gebouw_omschrijving,
alg_verdieping_omschrijving verdieping_omschrijving,
l.alg_locatie_key,
ogg.alg_gebouw_key,
ogg.alg_verdieping_key
FROM bez_afspraak a,
bez_bezoekers b,
prs_v_perslid_fullnames aanvrager,
alg_locatie l,
alg_v_allonrgoed_gegevens ogg,
prs_v_perslid_fullnames gastheer,
(SELECT * FROM bez_kenmerkwaarde
WHERE bez_kenmerk_key = 1000
AND bez_kenmerkwaarde_verwijder IS NULL) prive
WHERE a.bez_afspraak_key = b.bez_afspraak_key
AND TRUNC(a.bez_afspraak_datum) = TRUNC(SYSDATE)
AND a.bez_afspraak_host_key = gastheer.prs_perslid_key
AND a.bez_afspraak_contact_key = aanvrager.prs_perslid_key
AND a.alg_locatie_key = l.alg_locatie_key
AND a.alg_onrgoed_keys = ogg.alg_onroerendgoed_keys(+)
AND a.res_rsv_ruimte_key IS NULL
AND prive.bez_bezoekers_key(+) = b.bez_bezoekers_key
AND COALESCE(prive.bez_kenmerkwaarde_waarde, '0') = '0';
CREATE OR REPLACE VIEW aait_v_rap_bezoekers
AS
SELECT * FROM aait_v_rap_infobord;
CREATE OR REPLACE VIEW AAIT_V_RAP_FACTUUR_GOEDKEURING
(
FCLT_D_DATUM_GOEDKEURING,
APPROVER,
FIN_FACTUUR_KEY,
FIN_FACTUUR_NR,
PRS_BEDRIJF_NAAM,
PRS_BEDRIJF_BEZOEK_ADRES,
PRS_BEDRIJF_TELEFOON,
PRS_BEDRIJF_FAX,
FIN_FACTUUR_DATUM,
FIN_FACTUUR_AANMAAK,
FIN_FACTUUR_TOTAAL,
FIN_FACTUUR_BTW,
MODULE,
ORDERNUMMER,
ORDERDATUM,
OMSCHRIJVING,
ORDERSTATUS,
ORDERBEDRAG,
PRS_KOSTENSOORT_OPMERKING,
PRS_KOSTENSOORT_OMS,
PRS_KOSTENPLAATS_NR,
PRS_KOSTENPLAATS_OMSCHRIJVING,
CALLER
)
AS
SELECT TO_CHAR (fac.gettrackingdate ('FINFOK', g.fin_factuur_key),
'dd-mm-yyyy')
fclt_d_datum_acc,
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all
WHERE prs_perslid_key =
fac.gettrackinguserkey ('FINFOK', f.fin_factuur_key))
approver,
g.fin_factuur_key,
g.fin_factuur_nr,
prs_bedrijf_naam,
prs_bedrijf_bezoek_adres,
prs_bedrijf_telefoon,
prs_bedrijf_fax,
TO_CHAR (g.fin_factuur_datum, 'dd-mm-yyyy'),
TO_CHAR (fac.gettrackingdate ('FINNEW', g.fin_factuur_key),
'dd-mm-yyyy')
fin_factuur_aanmaak,
fin_factuur_totaal,
fin_factuur_totaal + fin_factuur_totaal_btw,
module,
ordernummer,
TO_CHAR (orderdatum, 'dd-mm-yyyy'),
omschrijving,
orderstatus,
orderbedrag,
prs_kostensoort_opmerking,
ks.prs_kostensoort_oms,
prs_kostenplaats_nr,
prs_kostenplaats_omschrijving,
(SELECT prs_perslid_naam_full
FROM prs_v_perslid_fullnames_all
WHERE prs_perslid_key = caller)
FROM aaxx_v_factuur_gegevens g,
prs_bedrijf b,
fin_factuur f,
( SELECT 'BES' module,
bo.bes_bestelopdr_key,
NULL mld_opdr_key,
NULL cnt_contract_key,
bo.bes_bestelopdr_id ordernummer,
bes_bestelopdr_datum orderdatum,
bes.bestelopdr_tooltip (bo.bes_bestelopdr_key) omschrijving,
bes_bestelopdrstatuses_omschr orderstatus,
SUM (bi.bes_bestelling_item_brutoprijs) orderbedrag,
b.prs_perslid_key caller
FROM bes_bestelopdr bo,
bes_bestelopdr_item boi,
bes_bestelling_item bi,
bes_bestelling b,
bes_bestelopdrstatuses s
WHERE bo.bes_bestelopdr_key = boi.bes_bestelopdr_key
AND boi.bes_bestelopdr_item_key =
bi.bes_bestelopdr_item_key
AND bi.bes_bestelling_key = b.bes_bestelling_key
AND bo.bes_bestelopdr_status = s.bes_bestelopdrstatuses_key
GROUP BY bo.bes_bestelopdr_key,
bo.bes_bestelopdr_id,
bes_bestelopdr_datum,
bes_bestelopdrstatuses_omschr,
b.prs_perslid_key
UNION ALL
SELECT 'MLD',
NULL,
mld_opdr_key,
NULL,
ins_srtdiscipline_prefix
|| o.mld_melding_key
|| '/'
|| mld_opdr_bedrijfopdr_volgnr,
mld_opdr_datumbegin,
mld_opdr_omschrijving,
mld_statusopdr_omschrijving,
mld_opdr_kosten,
m.prs_perslid_key
FROM mld_opdr o,
mld_melding m,
mld_stdmelding std,
mld_statusopdr s,
ins_tab_discipline d,
ins_srtdiscipline sd
WHERE o.mld_melding_key = m.mld_melding_key
AND o.mld_statusopdr_key = s.mld_statusopdr_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 = 'IT'
UNION ALL
SELECT 'CNT',
NULL,
NULL,
cnt_contract_key,
cnt_contract_nummer_intern
|| '.'
|| COALESCE (cnt_contract_versie, '0'),
cnt_contract_looptijd_van,
cnt_contract_document,
DECODE (
SIGN (cnt_contract_looptijd_van - SYSDATE),
1,
'Toekomst',
-1,
DECODE (SIGN (cnt_contract_looptijd_tot - SYSDATE),
1, 'Actueel',
-1, 'Verlopen')),
cnt_contract_termijnkosten,
prs_perslid_key_beh
FROM cnt_contract c,
prs_v_afdeling_boom a
WHERE c.prs_afdeling_key_eig = a.prs_afdeling_key
AND a.prs_afdeling_key1 = 173) order_geg, -- STAFF afdeling
prs_kostenplaats k,
prs_kostensoort ks
WHERE ( g.mld_opdr_key = order_geg.mld_opdr_key
OR g.cnt_contract_key = order_geg.cnt_contract_key
OR g.bes_bestelopdr_key = order_geg.bes_bestelopdr_key)
AND g.prs_bedrijf_key = b.prs_bedrijf_key
AND g.fin_factuur_key = f.fin_factuur_key
AND g.prs_kostenplaats_key = k.prs_kostenplaats_key
AND g.prs_kostensoort_key = ks.prs_kostensoort_key
AND f.fin_factuur_statuses_key IN (6, 7);
CREATE OR REPLACE VIEW aait_v_noti_ordreminder
(
CODE,
SENDER,
RECEIVER,
TEXT,
KEY,
PAR1,
PAR2,
XKEY
)
AS
SELECT 'CUST01',
'',
prs.getkpverantwoordelijke (
o.prs_kostenplaats_key,
2,
-1)
budgethouder,
'REMINDER: '
|| COUNT (o.mld_opdr_key)
|| ' Service Request'
|| DECODE (COUNT (o.mld_opdr_key), 1, '', 's'),
MIN (o.mld_opdr_key), -- Dummy key, althans een willekeurige; nog testen of dit werkt???
NULL,
NULL,
NULL
FROM mld_opdr o
WHERE o.mld_statusopdr_key = 3
GROUP BY prs.getkpverantwoordelijke (
prs_kostenplaats_key,
2,
-1);
CREATE OR REPLACE VIEW AAIT_V_NOTI_FINREMINDER
(
CODE,
SENDER,
RECEIVER,
TEXT,
KEY,
PAR1,
PAR2,
XKEY
)
AS
SELECT 'FININF',
'',
546, -- Mr. Hartley
'Fiatteringsverzoek voor '
|| COUNT (f.fin_factuur_key)
|| DECODE (COUNT (f.fin_factuur_key), 1, ' factuur.', ' facturen.'),
MIN (f.fin_factuur_key), -- Dummy key, althans een willekeurige; FSN#19425
NULL,
NULL,
NULL
FROM fin_factuur f
WHERE f.fin_factuur_statuses_key =
DECODE (TO_CHAR (SYSDATE, 'D'), 1, 99, 7, 99, 2) -- notificatie niet versturen in het weekend
AND f.fin_factuur_verwijder IS NULL
GROUP BY fin_factuur_statuses_key;
CREATE OR REPLACE VIEW aait_v_kostensoort (
prs_kostensoort_key,
prs_kostensoort_omschrijving
)
AS
SELECT prs_kostensoort_key,
prs_kostensoort_oms || '-' || prs_kostensoort_opmerking
FROM prs_kostensoort;
CREATE OR REPLACE VIEW aait_v_mobile_phones (
ins_srtdeel_key,
ins_srtdeel_omschrijving
)
AS
SELECT ins_srtdeel_key, ins_srtdeel_omschrijving
FROM ins_srtdeel
WHERE ins_srtdeel_code_upper = 'MO' AND ins_srtdeel_verwijder IS NULL
ORDER BY ins_srtdeel_omschrijving;
CREATE OR REPLACE VIEW aait_v_laptops (
ins_srtdeel_key,
ins_srtdeel_omschrijving
)
AS
SELECT ins_srtdeel_key, ins_srtdeel_omschrijving
FROM ins_srtdeel
WHERE ins_srtdeel_code_upper = 'LP' AND ins_srtdeel_verwijder IS NULL
ORDER BY ins_srtdeel_omschrijving;
CREATE OR REPLACE VIEW aait_v_rap_order_corrections
(
fclt_3d_user_key,
melding,
status,
datum,
omschrijving
)
AS
SELECT gg.prs_perslid_key,
m.mld_melding_key,
s.mld_statuses_omschrijving,
m.mld_melding_datum,
m.mld_melding_omschrijving
FROM mld_melding m,
mld_statuses s,
mld_stdmelding std,
fac_groep gr,
fac_functie f,
fac_groeprechten g,
fac_gebruikersgroep gg,
alg_v_allonroerendgoed aog,
prs_v_perslidwerkplek_gegevens pwg
WHERE std.mld_ins_discipline_key = 441 -- order corrections
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND m.mld_melding_status = s.mld_statuses_key
AND g.fac_functie_key = f.fac_functie_key
AND f.fac_functie_code = 'WEB_MLDBO3'
AND g.ins_discipline_key = std.mld_ins_discipline_key
AND m.mld_alg_onroerendgoed_keys = aog.alg_onroerendgoed_keys
AND pwg.alg_gebouw_key = aog.alg_gebouw_key
AND pwg.prs_perslid_key = gg.prs_perslid_key
AND g.fac_groep_key = gg.fac_groep_key
AND gg.fac_groep_key = gr.fac_groep_key
AND gr.fac_groep_omschrijving <> '_Admin'
AND m.mld_melding_status IN (2, 3) -- ingevoerd en ingezien
UNION ALL
SELECT gg.prs_perslid_key,
m.mld_melding_key,
s.mld_statuses_omschrijving,
m.mld_melding_datum,
m.mld_melding_omschrijving
FROM mld_melding m,
mld_stdmelding std,
mld_statuses s,
fac_groep gr,
fac_functie f,
fac_groeprechten g,
fac_gebruikersgroep gg,
alg_v_allonroerendgoed aog,
prs_v_perslidwerkplek_gegevens pwg
WHERE std.mld_ins_discipline_key = 441 -- order corrections
AND m.mld_stdmelding_key = std.mld_stdmelding_key
AND m.mld_melding_status = s.mld_statuses_key
AND g.fac_functie_key = f.fac_functie_key
AND f.fac_functie_code = 'WEB_MLDBO2'
AND g.ins_discipline_key = std.mld_ins_discipline_key
AND m.mld_alg_onroerendgoed_keys = aog.alg_onroerendgoed_keys
AND pwg.alg_gebouw_key = aog.alg_gebouw_key
AND pwg.prs_perslid_key = gg.prs_perslid_key
AND g.fac_groep_key = gg.fac_groep_key
AND gg.fac_groep_key = gr.fac_groep_key
AND gr.fac_groep_omschrijving <> '_Admin'
AND m.mld_melding_status IN (4);
-- geaccepteerd
CREATE OR REPLACE VIEW aait_v_noti_ordercorr (
code,
sender,
receiver,
text,
key,
par1,
par2,
xkey
)
AS
SELECT 'FACUSR',
'',
fclt_3d_user_key,
'Facilitor: There are ' || count(*) || ' Order Correction Request(s) assigned to you.',
341, -- key van rapport aait_v_rap_order_corrections
'',
'',
NULL
FROM aait_v_rap_order_corrections
GROUP BY fclt_3d_user_key;
CREATE OR REPLACE VIEW aait_v_noti_bes_accept (
code,
sender,
receiver,
text,
key,
par1,
par2,
xkey
)
AS
SELECT DISTINCT 'BESAP1',
'',
546,
'',
b.bes_bestelling_key,
'',
'',
NULL
FROM fac_v_webgebruiker g,
bes_discipline bd,
bes_bestelling b,
bes_bestelling_item bi,
bes_srtdeel sd,
bes_srtgroep sg,
( SELECT fac_tracking_refkey,
MAX (fac_tracking_datum) fac_tracking_datum
FROM fac_tracking t, fac_srtnotificatie sn
WHERE t.fac_srtnotificatie_key = sn.fac_srtnotificatie_key
AND fac_srtnotificatie_code <> 'BESMAI'
AND fac_srtnotificatie_xmlnode = 'bestelling'
GROUP BY fac_tracking_refkey) tr
WHERE g.prs_perslid_key = 546 -- Derek Hartley
AND bd.ins_discipline_key = g.ins_discipline_key
AND b.bes_bestelling_key = bi.bes_bestelling_key
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key -- 5.1.0
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key -- 5.1.0
AND sg.ins_discipline_key = g.ins_discipline_key
AND b.bes_bestelling_status = 3 -- gefiatteerd
AND tr.fac_tracking_refkey = b.bes_bestelling_key
AND tr.fac_tracking_datum > sysdate -1;
CREATE OR REPLACE PROCEDURE aait_import_opdrstatus (p_import_key IN NUMBER)
AS
c_delim VARCHAR2 (1) := ';';
v_newline VARCHAR2 (1000); -- Input line
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_aanduiding VARCHAR2 (200);
header_is_valid NUMBER := 0;
v_count_tot NUMBER (10) := 0;
v_count_import NUMBER (10) := 0;
v_ongeldig NUMBER (1) := 0;
-- De importvelden
v_msg_type VARCHAR2 (255); -- C?
v_opdrachtnr VARCHAR2 (255); -- C?
v_externnr VARCHAR2 (255); -- C?
v_actie VARCHAR2 (1000); -- C?
v_actiedatum VARCHAR2 (1000); -- DATE
v_actiedatum_d DATE; -- DATE
v_status VARCHAR2 (1000);
-- 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 aait_imp_opdrstatusmulti
WHERE fac_import_key <> p_import_key;
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_msg_type);
fac.imp_getfield (v_newline, c_delim, v_opdrachtnr);
fac.imp_getfield (v_newline, c_delim, v_externnr);
fac.imp_getfield (v_newline, c_delim, v_actie);
fac.imp_getfield (v_newline, c_delim, v_actiedatum);
fac.imp_getfield (v_newline, c_delim, v_status);
v_aanduiding :=
'['
|| v_msg_type
|| '|'
|| v_opdrachtnr
|| '|'
|| v_externnr
|| '] ';
-- 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_msg_type)) = 'MSG_TYPE'
AND UPPER (TRIM (v_opdrachtnr)) = 'OPDRACHTNR'
AND UPPER (TRIM (v_externnr)) = 'EXTERNNR'
AND UPPER (TRIM (v_actie)) = 'ACTIE'
AND UPPER (TRIM (v_actiedatum)) = 'ACTIEDATUM'
AND UPPER (TRIM (v_status)) = 'STATUS'
THEN
header_is_valid := 1;
END IF;
ELSE
v_count_tot := v_count_tot + 1;
-- Controleer alle veldwaarden
v_errormsg := 'Fout inlezen msg_type';
v_msg_type := TRIM (v_msg_type);
IF (COALESCE (v_msg_type, 'XXX') != 'UPD'
AND COALESCE (v_msg_type, 'XXX') != 'AFM')
THEN
fac.imp_writelog (
p_import_key,
'E',
v_aanduiding || v_errormsg,
'Berichttype ongeldig; regel wordt overgeslagen!'
);
v_ongeldig := 1;
END IF;
--
v_errormsg := 'Fout inlezen opdrachtnummer';
v_opdrachtnr := TRIM (v_opdrachtnr);
IF (v_opdrachtnr IS NULL)
THEN
fac.imp_writelog (
p_import_key,
'E',
v_aanduiding || v_errormsg,
'Opdrachtnummer verplicht; regel wordt overgeslagen!'
);
v_ongeldig := 1;
END IF;
--
v_errormsg := 'Fout inlezen externnr';
v_externnr := TRIM (v_externnr);
--
v_errormsg := 'Fout inlezen actie';
v_actie := TRIM (REPLACE (v_actie, '%%0A', CHR (13) || CHR (10)));
--
v_errormsg := 'Fout inlezen actiedatum';
v_actiedatum := TRIM (v_actiedatum);
IF (v_actiedatum IS NOT NULL)
THEN
IF (fac.safe_to_date (v_actiedatum, 'dd-mm-yyyy hh24:mi') IS NULL)
THEN
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'Actiedatum ongeldig!');
v_actiedatum := NULL;
ELSE
v_actiedatum_d :=
fac.safe_to_date (v_actiedatum, 'dd-mm-yyyy hh24:mi');
END IF;
END IF;
-- Insert geformatteerde import record
IF (v_ongeldig = 0)
THEN
BEGIN
v_errormsg := 'Fout toevoegen didstatus';
INSERT INTO aait_imp_opdrstatusmulti (fac_import_key,
imp_log_timestamp,
msg_type,
opdrachtnr,
externnr,
actie,
actiedatum,
status)
VALUES (p_import_key,
SYSDATE,
SUBSTR (v_msg_type, 1, 30),
SUBSTR (v_opdrachtnr, 1, 15),
SUBSTR (v_externnr, 1, 15),
SUBSTR (v_actie, 1, 1000),
v_actiedatum_d,
SUBSTR (v_status, 1, 100));
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 AAIT_IMP_OPDRSTATUSMULTI.'
);
END;
END IF;
END IF;
END;
END LOOP;
-- verwijder de entries uit de imp_file omdat er meerdere bestanden in <20><>n run ingelezen kunnen worden.
DELETE fac_imp_file WHERE fac_import_key = p_import_key;
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',
v_aanduiding || v_errormsg,
'Inleesproces opdrachtstatusberichten afgebroken!');
END;
/
/* Formatted on 4-2-2011 17:04:50 (QP5 v5.115.810.9015) */
CREATE OR REPLACE PROCEDURE aait_update_opdrstatus (p_import_key IN NUMBER)
AS
-- Cursor loopt - in volgorde! - over alle ingelezen opdrachtstatusberichten.
CURSOR c1
IS
SELECT imp_log_timestamp,
msg_type,
opdrachtnr,
externnr,
actie,
actiedatum,
coalesce(status,'Onbekend') status
FROM aait_imp_opdrstatusmulti
WHERE fac_import_key = p_import_key
ORDER BY actiedatum, imp_log_timestamp, msg_type DESC, opdrachtnr;
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;
BEGIN
-- Loop door alle geimporteerde opdrachtstatusberichten en verwerk deze.
v_count_tot := 0;
FOR rec IN c1
LOOP
BEGIN
v_aanduiding := '[' || rec.msg_type || '|' || rec.opdrachtnr || '] ';
v_count_tot := v_count_tot + 1;
v_count := 0;
-- Key van melding/opdracht bepalen en externnr bij opdracht opslaan.
IF (rec.opdrachtnr IS NOT NULL)
THEN
v_errormsg := 'Fout bij bepalen melding/opdracht.';
SELECT mld_melding_key, mld_opdr_key, mld_statusopdr_key
INTO v_mld_key, v_opdr_key, v_opdr_status
FROM mld_opdr
WHERE mld_melding_key || '/' || mld_opdr_bedrijfopdr_volgnr =
rec.opdrachtnr;
END IF;
-- Bijwerken Opmerking met actie (bovenin melding en opdracht).
IF (rec.actie IS NOT NULL)
THEN
v_errormsg := 'Fout bij bijwerken opdracht-opmerking.';
v_count := LENGTH (rec.actie) + 5; -- Beetje speling qua lengte!
UPDATE mld_opdr
SET mld_opdr_opmerking = rec.actie
WHERE mld_opdr_key = v_opdr_key;
v_errormsg := 'Fout bij bijwerken melding-opmerking.';
UPDATE mld_melding
SET mld_melding_opmerking = rec.actie
WHERE mld_melding_key = v_mld_key
AND mld_melding_status IN (4, 7);
COMMIT;
END IF;
-- Accepteer opdracht (als msg_type=UPD en nog niet al geaccepteerd)!
IF (rec.msg_type = 'UPD' AND v_opdr_status = 5)
THEN
v_errormsg := 'Fout bij accepteren opdracht.';
MLD.setopdrachtstatus (v_opdr_key, 8, 4); -- Facilitor
COMMIT;
END IF;
-- Sluit opdracht (als msg_type=AFM); de bovenliggende melding wordt
-- tevens gesloten als het de laatste opdracht is!
IF (rec.msg_type = 'AFM'
AND (v_opdr_status = 5 OR v_opdr_status = 8))
THEN
v_errormsg := 'Fout bij sluiten opdracht.';
MLD.setopdrachtstatus (v_opdr_key, 6, 4); -- Facilitor
COMMIT;
IF rec.status <> 'Niet opgelost' THEN
v_errormsg := 'Fout bij sluiten melding.';
SELECT COUNT ( * )
INTO v_count
FROM (SELECT m.mld_melding_key,
(SELECT COUNT ( * )
FROM mld_opdr o
WHERE mld_melding_key = m.mld_melding_key)
aanw_opdr,
(SELECT COUNT ( * )
FROM mld_opdr o
WHERE mld_melding_key = m.mld_melding_key
AND o.mld_statusopdr_key NOT IN
(1, 2, 6, 7, 9))
open_opdr
FROM mld_melding m
WHERE m.mld_melding_key = v_mld_key
AND m.mld_melding_status IN (4, 7))
niet_opgelost
WHERE aanw_opdr > 0 AND open_opdr = 0;
IF (v_count = 1)
THEN
MLD.setmeldingstatus (v_mld_key, 5, 4); -- Facilitor
MLD.mld_nextworkflowstep (v_mld_key, 1); -- Succes
COMMIT;
END IF;
ELSE
BEGIN MLD.updatemeldingstatus (v_mld_key, 0, 4); END;
END IF;
END IF;
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;
/
-- export om opdrachten aan te maken bij meldingen met auto-order die onderdeel
-- uitmaken van een workflow. Bijkomend voordeel is dat deze functie ook de
-- opdrachten aanmaakt bij meldingen met auto-order waarbij abusievelijk geen
-- opdracht aangemaakt is.
CREATE OR REPLACE PROCEDURE aait_export_autoorder (
p_applname IN VARCHAR2,
p_applrun IN VARCHAR2,
p_filedir IN VARCHAR2,
p_filename IN VARCHAR2
)
AS
CURSOR c
IS
SELECT m.mld_melding_key,
m.prs_kostenplaats_key,
m.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_dienst d,
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 NOT EXISTS (SELECT mld_melding_key
FROM mld_opdr o
WHERE mld_melding_key = m.mld_melding_key)
GROUP BY mld_melding_key,
prs_kostenplaats_key,
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, 4); -- 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
, 4 -- 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, 4); -- 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, 4, NULL, NULL);
-- update melding status
MLD.updatemeldingstatus (rec.mld_melding_key, 0, 4); -- facilitor
EXCEPTION
WHEN OTHERS
THEN
fac.writelog (p_applname
, 'E'
, 'OTHERS (error ' || SQLCODE || '/' || SUBSTR (SQLERRM, 1, 100) || ')'
, 'Fout bij aanmaken opdracht: ' || rec.mld_melding_key);
END;
END LOOP;
END aait_export_autoorder;
/
-- packages tbv rapportages
CREATE OR REPLACE PACKAGE AAIT_RAP
AS
-- PACKAGES voor de Connexxion specifieke rapportages
TYPE t_cursor IS REF CURSOR;
PROCEDURE afmeld_user (user_key IN NUMBER,
p_datum_van IN VARCHAR2,
p_datum_tot IN VARCHAR2,
p_cursor OUT t_cursor);
END;
/
CREATE OR REPLACE PACKAGE BODY AAIT_RAP
AS
--
--Rapportages
--
PROCEDURE afmeld_user (user_key IN NUMBER,
p_datum_van IN VARCHAR2, -- Let wel: formaat '13-05-2005'
p_datum_tot IN VARCHAR2,
p_cursor OUT t_cursor)
AS
v_datum_van DATE;
v_datum_tot DATE;
v_alg_level_read NUMBER;
BEGIN
v_datum_van := fac.safe_to_date (p_datum_van, 'dd-mm-yyyy');
v_datum_tot := fac.safe_to_date (p_datum_tot, 'dd-mm-yyyy');
OPEN p_cursor FOR
SELECT prs_perslid_naam_full,
d.ins_discipline_omschrijving,
COUNT (mld_melding_key)
FROM fac_tracking t,
prs_v_perslid_fullnames_all pf,
mld_melding m,
mld_stdmelding std,
ins_tab_discipline d
WHERE fac_srtnotificatie_key = 22 --mldafm
AND t.prs_perslid_key = pf.prs_perslid_key
AND fac_tracking_refkey = 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 = 22 -- IT helpdesk
AND fac_tracking_datum BETWEEN v_datum_van AND v_datum_tot
GROUP BY prs_perslid_naam_full, ins_discipline_omschrijving;
END;
END;
/
CREATE OR REPLACE VIEW aait_v_graph_citrix_melding
(
FCLT_XAS_,
FCLT_YAS_,
FCLT_URL,
FCLT_3D_DISCIPLINE_KEY
)
AS
SELECT mld_stdmelding_omschrijving,
COUNT (mld_stdmelding_omschrijving) aantal,
'appl/mld/mld_search.asp?urole=fo&autosearch=1&stdm_str=',
std.mld_stdmelding_key
FROM mld_melding m, mld_stdmelding std
WHERE m.mld_stdmelding_key = std.mld_stdmelding_key
AND std.mld_ins_discipline_key = 421 -- Citrix (AAFM)
AND mld_melding_status IN (2, 3, 4, 7, 0) -- 2-ingevoerd, 3-ingezien, 4-geaccepteerd, 7-uitgegeven, 0-pending
GROUP BY std.mld_stdmelding_key, mld_stdmelding_omschrijving;
CREATE OR REPLACE VIEW aait_v_afdelingniv12
(
prs_afdeling_key,
omschrijving
)
AS
SELECT a1.prs_afdeling_key,
a1.prs_afdeling_naam
|| ' ['
|| a1.prs_afdeling_omschrijving
|| ']'
FROM PRS_AFDELING a1
WHERE a1.prs_afdeling_parentkey IS NULL
AND a1.prs_afdeling_verwijder IS NULL
UNION ALL
SELECT a2.prs_afdeling_key,
a2.prs_afdeling_naam
|| ' ['
|| a2.prs_afdeling_omschrijving
|| ']'
FROM PRS_AFDELING a1, PRS_AFDELING a2
WHERE a2.prs_afdeling_parentkey = a1.prs_afdeling_key
AND a1.prs_afdeling_parentkey IS NULL
AND a2.prs_afdeling_verwijder IS NULL;
BEGIN adm.systrackscript('$Workfile: aait.sql $', '$Revision$', 0); END;
/
BEGIN fac.registercustversion('AAIT', 38); END;
/
COMMIT;
SPOOL OFF