2532 lines
106 KiB
MySQL
2532 lines
106 KiB
MySQL
--
|
|
-- $Id$
|
|
--
|
|
-- Script containing customer specific sql statements for the FACILITOR database
|
|
|
|
DEFINE thisfile = 'VOLK.SQL'
|
|
DEFINE dbuser = 'VOLK'
|
|
|
|
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 PROCEDURE volk_import_perslid (p_import_key IN NUMBER)
|
|
AS
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
v_errormsg VARCHAR2 (400);
|
|
v_errorhint VARCHAR2 (400);
|
|
v_aantal_in_FCLT NUMBER;
|
|
BEGIN
|
|
v_errorhint := 'Generieke update';
|
|
-- de sequence array staat beschreven in PRS_PAC.SRC bij de prs.import_perslid proc
|
|
prs.import_perslid (
|
|
p_import_key,
|
|
'0;0;0;0;0;0;9;4;10;3;'
|
|
|| '8;0;0;0;0;5;0;12;0;1;'
|
|
|| '7;1;0;0;0;0;2;6;11;0;'
|
|
|| '0;0;0;0;0;0;0;0;0;0;'
|
|
|| '0;0;0;0;0;0',
|
|
'%"CentralAccount";"CostCenter";"FirstName";"LastName";"TelephoneNumber";"UserPrincipalName";"DepartmentName";"Initials";"DepartmentCode";"NameAddOn";"Rights";"Email"%');
|
|
-- "CentralAccount(20)";"CostCenter(27)";"FirstName(10)";"LastName(8)";"TelephoneNumber(16)";"UserPrincipalName(28)";"DepartmentName(21)";"Initials(11)";"DepartmentCode(7)";"NameAddOn(9)";"Rights(29)";"Email(18)"
|
|
-- Kenmerk 1: CostCenter. Kan eventueel later gebruikt worden om de OE te bepalen als alleen hoofdgroepen gebruikt gaan worden
|
|
-- Kenmerk 2: UserPrincipalName wordt nog niet gebruikt
|
|
-- Kenmerk 3: Rights. Dit zijn de rollen die iemand moet krijgen
|
|
|
|
COMMIT;
|
|
|
|
-- Beleid bij de Volksbank: in cloud applicaties moet gekoppeld worden op UserPrincipalName
|
|
-- Personen zonder UserPrincipalName nemen we dus niet mee
|
|
DELETE fac_imp_perslid
|
|
WHERE prs_kenmerk2 IS NULL;
|
|
|
|
/* 57846: User identification is not unique, oslogin kan niet op basis van mailadres daarom op perslidnr
|
|
-- prs oslogin hier nemen we het eerste gedeelte van de UPN, volledig UserPrincipalName is te lang
|
|
-- kan tot maximaal 30 posities
|
|
UPDATE fac_imp_perslid
|
|
SET prs_perslid_oslogin =
|
|
SUBSTR (
|
|
(SUBSTR (prs_kenmerk2, 1, (INSTR (prs_kenmerk2, '@') - 1))),
|
|
1,
|
|
30);
|
|
*/
|
|
|
|
-- functie wordt niet gebruikt, dus deze wordt altijd 'onbekend'
|
|
UPDATE fac_imp_perslid
|
|
SET prs_srtperslid_omschrijving = 'onbekend';
|
|
|
|
-- De rollen die in kenmerk3 zijn gezet splitsen we uit, aanname is dat iemand max. 5 rollen heeft
|
|
-- We vullen de kenmerken 10 tm 14 met de rollen
|
|
UPDATE fac_imp_perslid p
|
|
SET p.PRS_KENMERK10 =
|
|
DECODE (NULLIF (INSTR (p.PRS_KENMERK3,
|
|
',',
|
|
1,
|
|
1),
|
|
0),
|
|
NULL, p.prs_kenmerk3,
|
|
SUBSTR (prs_kenmerk3,
|
|
1,
|
|
(INSTR (p.PRS_KENMERK3,
|
|
',',
|
|
1,
|
|
1))
|
|
- 1)),
|
|
p.PRS_KENMERK11 =
|
|
CASE
|
|
WHEN NULLIF (INSTR (p.PRS_KENMERK3,
|
|
',',
|
|
1,
|
|
1),
|
|
0)
|
|
IS NOT NULL
|
|
THEN
|
|
DECODE (NULLIF (INSTR (p.PRS_KENMERK3,
|
|
',',
|
|
1,
|
|
2),
|
|
0),
|
|
NULL, SUBSTR (prs_kenmerk3, INSTR (p.PRS_KENMERK3, ',', 2) + 1),
|
|
SUBSTR (prs_kenmerk3,
|
|
( INSTR (p.PRS_KENMERK3,
|
|
',',
|
|
1,
|
|
1)
|
|
+ 1),
|
|
( INSTR (p.PRS_KENMERK3,
|
|
',',
|
|
1,
|
|
2)
|
|
- INSTR (p.PRS_KENMERK3,
|
|
',',
|
|
1,
|
|
1)
|
|
- 1)))
|
|
END,
|
|
p.PRS_KENMERK12 =
|
|
CASE
|
|
WHEN NULLIF (INSTR (p.PRS_KENMERK3,
|
|
',',
|
|
1,
|
|
2),
|
|
0)
|
|
IS NOT NULL
|
|
THEN
|
|
DECODE (NULLIF (INSTR (p.PRS_KENMERK3,
|
|
',',
|
|
1,
|
|
3),
|
|
0),
|
|
NULL, SUBSTR (prs_kenmerk3,
|
|
INSTR (p.PRS_KENMERK3,
|
|
',',
|
|
1,
|
|
2)
|
|
+ 1),
|
|
SUBSTR (prs_kenmerk3,
|
|
( INSTR (p.PRS_KENMERK3,
|
|
',',
|
|
1,
|
|
2)
|
|
+ 1),
|
|
( INSTR (p.PRS_KENMERK3,
|
|
',',
|
|
1,
|
|
3)
|
|
- INSTR (p.PRS_KENMERK3,
|
|
',',
|
|
1,
|
|
2)
|
|
- 1)))
|
|
END,
|
|
p.PRS_KENMERK13 =
|
|
CASE
|
|
WHEN NULLIF (INSTR (p.PRS_KENMERK3,
|
|
',',
|
|
1,
|
|
3),
|
|
0)
|
|
IS NOT NULL
|
|
THEN
|
|
DECODE (NULLIF (INSTR (p.PRS_KENMERK3,
|
|
',',
|
|
1,
|
|
4),
|
|
0),
|
|
NULL, SUBSTR (prs_kenmerk3,
|
|
INSTR (p.PRS_KENMERK3,
|
|
',',
|
|
1,
|
|
3)
|
|
+ 1),
|
|
SUBSTR (prs_kenmerk3,
|
|
( INSTR (p.PRS_KENMERK3,
|
|
',',
|
|
1,
|
|
3)
|
|
+ 1),
|
|
( INSTR (p.PRS_KENMERK3,
|
|
',',
|
|
1,
|
|
4)
|
|
- INSTR (p.PRS_KENMERK3,
|
|
',',
|
|
1,
|
|
3)
|
|
- 1)))
|
|
END,
|
|
p.PRS_KENMERK14 =
|
|
CASE
|
|
WHEN NULLIF (INSTR (p.PRS_KENMERK3,
|
|
',',
|
|
1,
|
|
4),
|
|
0)
|
|
IS NOT NULL
|
|
THEN
|
|
DECODE (NULLIF (INSTR (p.PRS_KENMERK3,
|
|
',',
|
|
1,
|
|
5),
|
|
0),
|
|
NULL, SUBSTR (prs_kenmerk3,
|
|
INSTR (p.PRS_KENMERK3,
|
|
',',
|
|
1,
|
|
4)
|
|
+ 1),
|
|
SUBSTR (prs_kenmerk3,
|
|
( INSTR (p.PRS_KENMERK3,
|
|
',',
|
|
1,
|
|
4)
|
|
+ 1),
|
|
( INSTR (p.PRS_KENMERK3,
|
|
',',
|
|
1,
|
|
5)
|
|
- INSTR (p.PRS_KENMERK3,
|
|
',',
|
|
1,
|
|
4)
|
|
- 1)))
|
|
END;
|
|
|
|
COMMIT;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
|
v_errormsg := 'Error ' || oracle_err_num || '/' || oracle_err_mes;
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_errormsg,
|
|
v_errorhint);
|
|
END volk_import_perslid;
|
|
/
|
|
|
|
CREATE OR REPLACE PROCEDURE volk_update_autorisaties (p_import_key IN NUMBER)
|
|
AS
|
|
-- Gebruikers met rechten anders dan de bijzondere groepen die met _ gemarkeerd zijn
|
|
-- Maar die in de import niet meer die rechten mee krijgen
|
|
-- Dan moeten die rechten weer verwijderd worden
|
|
CURSOR c_perslid_autorisatie_verw IS
|
|
SELECT oud.*
|
|
FROM (SELECT gg.fac_groep_key,
|
|
fac_groep_omschrijving,
|
|
p.prs_perslid_key,
|
|
pf.prs_perslid_naam_full
|
|
FROM fac_gebruikersgroep gg,
|
|
fac_groep g,
|
|
prs_perslid p,
|
|
prs_v_perslid_fullnames_all pf
|
|
WHERE gg.fac_groep_key = g.fac_groep_key
|
|
AND gg.prs_perslid_key = p.prs_perslid_key
|
|
AND p.prs_perslid_key = pf.prs_perslid_key
|
|
AND UPPER (g.fac_groep_omschrijving) <> '_DEFAULT'
|
|
AND p.prs_perslid_oslogin NOT LIKE '%\_%' ESCAPE '\') oud
|
|
LEFT OUTER JOIN
|
|
(SELECT groep.*
|
|
FROM (SELECT i.prs_perslid_key,
|
|
groep1.fac_groep_key,
|
|
groep1.fac_groep_omschrijving
|
|
FROM fac_imp_perslid i,
|
|
(SELECT *
|
|
FROM fac_groep g) groep1
|
|
WHERE UPPER (i.PRS_KENMERK10) = groep1.fac_groep_upper(+)
|
|
UNION ALL
|
|
SELECT i.prs_perslid_key,
|
|
groep2.fac_groep_key,
|
|
groep2.fac_groep_omschrijving
|
|
FROM fac_imp_perslid i,
|
|
(SELECT *
|
|
FROM fac_groep g) groep2
|
|
WHERE UPPER (i.PRS_KENMERK11) = groep2.fac_groep_upper(+)
|
|
UNION ALL
|
|
SELECT i.prs_perslid_key,
|
|
groep3.fac_groep_key,
|
|
groep3.fac_groep_omschrijving
|
|
FROM fac_imp_perslid i,
|
|
(SELECT *
|
|
FROM fac_groep g) groep3
|
|
WHERE UPPER (i.PRS_KENMERK12) = groep3.fac_groep_upper(+)
|
|
UNION ALL
|
|
SELECT i.prs_perslid_key,
|
|
groep4.fac_groep_key,
|
|
groep4.fac_groep_omschrijving
|
|
FROM fac_imp_perslid i,
|
|
(SELECT *
|
|
FROM fac_groep g) groep4
|
|
WHERE UPPER (i.PRS_KENMERK13) = groep4.fac_groep_upper(+)
|
|
UNION ALL
|
|
SELECT i.prs_perslid_key,
|
|
groep5.fac_groep_key,
|
|
groep5.fac_groep_omschrijving
|
|
FROM fac_imp_perslid i,
|
|
(SELECT *
|
|
FROM fac_groep g) groep5
|
|
WHERE UPPER (i.PRS_KENMERK14) = groep5.fac_groep_upper(+)) groep
|
|
WHERE groep.prs_perslid_key IS NOT NULL
|
|
AND groep.fac_groep_key IS NOT NULL
|
|
AND UPPER (groep.fac_groep_omschrijving) <> '_DEFAULT') nieuw
|
|
ON oud.prs_perslid_key = nieuw.prs_perslid_key
|
|
AND oud.fac_groep_key = nieuw.fac_groep_key
|
|
WHERE nieuw.fac_groep_key IS NULL;
|
|
|
|
CURSOR c_persid_autorisatiegroep IS
|
|
SELECT prs.prs_perslid_naam_full, groep.*
|
|
FROM (SELECT i.prs_perslid_key, groep1.fac_groep_key, groep1.fac_groep_omschrijving
|
|
FROM fac_imp_perslid i,
|
|
(SELECT *
|
|
FROM fac_groep g) groep1
|
|
WHERE UPPER (i.PRS_KENMERK10) = groep1.fac_groep_upper(+)
|
|
UNION ALL
|
|
SELECT i.prs_perslid_key, groep2.fac_groep_key, groep2.fac_groep_omschrijving
|
|
FROM fac_imp_perslid i,
|
|
(SELECT *
|
|
FROM fac_groep g) groep2
|
|
WHERE UPPER (i.PRS_KENMERK11) = groep2.fac_groep_upper(+)
|
|
UNION ALL
|
|
SELECT i.prs_perslid_key, groep3.fac_groep_key, groep3.fac_groep_omschrijving
|
|
FROM fac_imp_perslid i,
|
|
(SELECT *
|
|
FROM fac_groep g) groep3
|
|
WHERE UPPER (i.PRS_KENMERK12) = groep3.fac_groep_upper(+)
|
|
UNION ALL
|
|
SELECT i.prs_perslid_key, groep4.fac_groep_key, groep4.fac_groep_omschrijving
|
|
FROM fac_imp_perslid i,
|
|
(SELECT *
|
|
FROM fac_groep g) groep4
|
|
WHERE UPPER (i.PRS_KENMERK13) = groep4.fac_groep_upper(+)
|
|
UNION ALL
|
|
SELECT i.prs_perslid_key, groep5.fac_groep_key, groep5.fac_groep_omschrijving
|
|
FROM fac_imp_perslid i,
|
|
(SELECT *
|
|
FROM fac_groep g) groep5
|
|
WHERE UPPER (i.PRS_KENMERK14) = groep5.fac_groep_upper(+)) groep,
|
|
PRS_V_PERSLID_FULLNAMES_ALL prs
|
|
WHERE prs.prs_perslid_key = groep.prs_perslid_key
|
|
AND groep.prs_perslid_key IS NOT NULL
|
|
AND groep.fac_groep_key IS NOT NULL
|
|
AND UPPER (groep.fac_groep_omschrijving) <> '_DEFAULT'
|
|
AND NOT EXISTS
|
|
(SELECT fac_gebruikersgroep_key
|
|
FROM fac_gebruikersgroep gg
|
|
WHERE gg.prs_perslid_key = groep.prs_perslid_key
|
|
AND fac_groep_key = groep.fac_groep_key);
|
|
BEGIN
|
|
FOR rc IN c_perslid_autorisatie_verw
|
|
LOOP
|
|
BEGIN
|
|
DELETE fac_gebruikersgroep gg
|
|
WHERE gg.fac_groep_key = rc.fac_groep_key AND gg.prs_perslid_key = rc.prs_perslid_key;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'W',
|
|
'Post update autorisaties bij persoon: '
|
|
|| rc.fac_groep_omschrijving
|
|
|| ' is NIET verwijderd,',
|
|
'Naam:' || rc.prs_perslid_naam_full);
|
|
END;
|
|
|
|
COMMIT;
|
|
END LOOP;
|
|
|
|
FOR rc IN c_persid_autorisatiegroep
|
|
LOOP
|
|
BEGIN
|
|
INSERT INTO fac_gebruikersgroep (prs_perslid_key, fac_groep_key)
|
|
VALUES (rc.prs_perslid_key, rc.fac_groep_key);
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'W',
|
|
'Post update autorisaties bij persoon'
|
|
|| rc.prs_perslid_key
|
|
|| ' is NIET volledig uitgevoerd',
|
|
'Naam:' || rc.prs_perslid_naam_full);
|
|
END;
|
|
|
|
COMMIT;
|
|
END LOOP;
|
|
END;
|
|
/
|
|
|
|
CREATE OR REPLACE PROCEDURE volk_update_perslid (p_import_key IN NUMBER)
|
|
IS
|
|
v_ruimte_key NUMBER;
|
|
v_virtual NUMBER;
|
|
v_alg_type VARCHAR2 (20);
|
|
v_count NUMBER;
|
|
|
|
CURSOR c_perslid IS
|
|
SELECT *
|
|
FROM fac_imp_perslid
|
|
WHERE prs_perslid_key IS NOT NULL;
|
|
|
|
-- Alle medewerkers van de Volksbank verwijderen die niet meer in import bestand voorkomen.
|
|
CURSOR c_del IS
|
|
SELECT p.prs_perslid_key, p.prs_perslid_oslogin, pf.prs_perslid_naam_full
|
|
FROM prs_perslid p, prs_v_perslid_fullnames_all pf
|
|
WHERE pf.prs_perslid_key = p.prs_perslid_key
|
|
AND p.prs_perslid_oslogin IS NOT NULL
|
|
AND p.prs_perslid_verwijder IS NULL
|
|
AND p.prs_perslid_oslogin NOT LIKE '%\_%' ESCAPE '\'
|
|
AND NOT EXISTS
|
|
(SELECT *
|
|
FROM fac_imp_perslid i
|
|
WHERE UPPER (i.prs_perslid_oslogin) = UPPER (p.prs_perslid_oslogin));
|
|
BEGIN
|
|
-- generic update
|
|
SELECT COUNT (*) INTO v_count FROM fac_imp_perslid;
|
|
|
|
IF v_count < 1000
|
|
THEN
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'E',
|
|
'Het aantal te importeren personen is te klein (' || TO_CHAR (v_count) || ')',
|
|
'Zie Specificatie');
|
|
RETURN;
|
|
END IF;
|
|
|
|
-- Match op 'NR'
|
|
prs.update_perslid (p_import_key, 'NR', NULL);
|
|
|
|
volk_update_autorisaties (p_import_key);
|
|
|
|
COMMIT;
|
|
|
|
-- Verwijder personen die niet meer in de import voorkomen.
|
|
FOR rec IN c_del
|
|
LOOP
|
|
BEGIN
|
|
prs.delete_perslid (p_import_key, rec.prs_perslid_key);
|
|
END;
|
|
END LOOP;
|
|
|
|
COMMIT;
|
|
|
|
FOR rec IN c_persLid
|
|
LOOP
|
|
BEGIN
|
|
volk.movetoruimte (rec.prs_perslid_key);
|
|
END;
|
|
END LOOP;
|
|
END volk_update_perslid;
|
|
/
|
|
|
|
CREATE OR REPLACE VIEW VOLK_V_RAPP_MLD_WINKELS
|
|
(
|
|
DATUM,
|
|
HTML_AANVRAAG_NR,
|
|
MELDINGNR,
|
|
LOCATIE,
|
|
GEBOUW,
|
|
MELDER,
|
|
MELDING,
|
|
STATUS,
|
|
ONDERWERP,
|
|
OMSCHRIJVING
|
|
)
|
|
AS
|
|
SELECT melding_datum,
|
|
'<a class="details" onclick=''FcltMgr.openDetail("'
|
|
|| 'appl/mld/mld_melding.asp?urole=fe&'
|
|
|| 'mld_key='
|
|
|| MELDING_KEY
|
|
|| '")''>'
|
|
|| HTF.escape_sc (meldingnummer)
|
|
|| '</a>' meldingnummer,
|
|
melding_key,
|
|
melding_locatie,
|
|
melding_gebouw,
|
|
melder,
|
|
subproductgroep,
|
|
melding_status,
|
|
onderwerp,
|
|
vomschrijving
|
|
FROM MLD_V_UDR_MELDING m
|
|
WHERE UPPER (soortmelding) LIKE '%WINKEL%';
|
|
|
|
CREATE OR REPLACE VIEW VOLK_V_RAPP_TRACKING_UITLEEN
|
|
(
|
|
INS_DEEL_KEY,
|
|
OBJECT_OMSCHRIJVING,
|
|
DATUM,
|
|
DATUM_TIJD,
|
|
TRACKING,
|
|
OMSCHRIJVING
|
|
)
|
|
AS
|
|
SELECT d.ins_deel_key,
|
|
d.ins_deel_omschrijving,
|
|
TRUNC (t.fac_tracking_datum) periode,
|
|
t.fac_tracking_datum,
|
|
DECODE (t.fac_srtnotificatie_key,
|
|
124, 'Uitgegeven door: ' || p.prs_perslid_naam_friendly,
|
|
125, 'Ingenomen door: ' || p.prs_perslid_naam_friendly) tracking,
|
|
DECODE (
|
|
t.fac_srtnotificatie_key,
|
|
124, (DECODE (
|
|
naam_cnt.ins_kenmerkdeel_waarde,
|
|
NULL, t.fac_tracking_oms,
|
|
'Object '
|
|
|| d.ins_deel_omschrijving
|
|
|| ' is uitgegeven aan '
|
|
|| naam_cnt.ins_kenmerkdeel_waarde)),
|
|
t.fac_tracking_oms) tracking_omschr
|
|
FROM fac_tracking t,
|
|
ins_deel d,
|
|
prs_v_perslid_fullnames_all p,
|
|
(SELECT ins_deel_key, ins_kenmerkdeel_waarde
|
|
FROM ins_kenmerkdeel kd
|
|
WHERE ins_kenmerk_key = 2 AND ins_kenmerkdeel_verwijder IS NULL) naam_cnt,
|
|
(SELECT ins_deel_key, ins_kenmerkdeel_waarde
|
|
FROM ins_kenmerkdeel kd
|
|
WHERE ins_kenmerk_key = 3 AND ins_kenmerkdeel_verwijder IS NULL) telnr_cnt
|
|
WHERE fac_tracking_refkey = d.ins_deel_key
|
|
AND t.prs_perslid_key = p.prs_perslid_key
|
|
AND naam_cnt.ins_deel_key(+) = d.ins_deel_key
|
|
AND telnr_cnt.ins_deel_key(+) = d.ins_deel_key
|
|
AND t.fac_tracking_oms IS NOT NULL
|
|
AND d.ins_srtdeel_key IN (41,
|
|
42,
|
|
43,
|
|
44) -- passen en sleutels
|
|
AND fac_srtnotificatie_key IN (124, 125) -- uitgifte (insout) en inname (insinn)
|
|
ORDER BY ins_deel_key, t.fac_tracking_datum;
|
|
|
|
CREATE OR REPLACE VIEW VOLK_V_NOTI_BEZOEKERS
|
|
(
|
|
SENDER,
|
|
RECEIVER,
|
|
TEXT,
|
|
CODE,
|
|
FAC_SRTNOTIFICATIE_KEY,
|
|
KEY,
|
|
XKEY,
|
|
XEMAIL,
|
|
XMOBILE
|
|
)
|
|
AS
|
|
SELECT DISTINCT
|
|
NULL sender,
|
|
NULL receiver,
|
|
DECODE (
|
|
t.fac_srtnotificatie_key,
|
|
30, 'Nieuwe bezoekersregistratie voor '
|
|
|| b.BEZOEK_VAN
|
|
|| ', nummer: '
|
|
|| b.afspraak_key
|
|
|| ', gastheer: '
|
|
|| b.HOST,
|
|
31, 'Wijziging in bezoekersregistratie voor '
|
|
|| b.BEZOEK_VAN
|
|
|| ', nummer: '
|
|
|| b.afspraak_key
|
|
|| ', gastheer: '
|
|
|| b.HOST) TEXT,
|
|
sn.fac_srtnotificatie_code,
|
|
sn.fac_srtnotificatie_key,
|
|
b.afspraak_key,
|
|
NULL xkey,
|
|
ud.fac_usrdata_omschr,
|
|
NULL xmobile
|
|
FROM fac_tracking t,
|
|
bez_v_udr_bezoeker b,
|
|
bez_afspraak a,
|
|
alg_locatie l,
|
|
fac_usrdata ud,
|
|
fac_srtnotificatie sn,
|
|
fac_notificatie_job nj
|
|
WHERE t.fac_tracking_refkey = b.afspraak_key
|
|
AND t.fac_srtnotificatie_key IN (30, 31) --- BEZMUT, registreren nieuwe afspraak en BEZUPD, wijzigen afspraak
|
|
AND sn.fac_srtnotificatie_code = 'CUST01'
|
|
AND t.fac_tracking_refkey = b.afspraak_key
|
|
AND a.bez_afspraak_key = b.afspraak_key
|
|
AND b.fclt_3d_locatie_key = l.alg_locatie_key
|
|
AND ud.fac_usrdata_code = l.alg_locatie_code
|
|
AND ud.fac_usrtab_key = 141 --- bezoekersmutaties van het afgelopen uur
|
|
AND ud.fac_usrdata_verwijder IS NULL
|
|
AND t.fac_tracking_datum > nj.fac_notificatie_job_lastrun
|
|
AND nj.fac_notificatie_job_view = 'VOLK_V_NOTI_BEZOEKERS'
|
|
AND NOT EXISTS
|
|
(SELECT ba.bez_actie_key
|
|
FROM bez_actie ba
|
|
WHERE ba.bez_actie_key = 61 -- VOLK#81492
|
|
AND a.bez_actie_key = ba.bez_actie_key);
|
|
|
|
CREATE OR REPLACE VIEW VOLK_V_RAPP_BEDRIJF_DIENST
|
|
(
|
|
bedrijf_naam,
|
|
prs_bedrijf_key,
|
|
dienst,
|
|
locatie
|
|
)
|
|
AS
|
|
SELECT b.prs_bedrijf_naam, scope.*
|
|
FROM prs_bedrijf b,
|
|
(SELECT bdl.prs_bedrijf_key,
|
|
d.prs_dienst_omschrijving,
|
|
NVL (NVL (l.alg_locatie_omschrijving, g.ALG_GEBOUW_OMSCHRIJVING),
|
|
'Alle locaties') locatie
|
|
FROM prs_bedrijfdienstlocatie bdl,
|
|
prs_dienst d,
|
|
alg_locatie l,
|
|
alg_gebouw g
|
|
WHERE bdl.prs_dienst_key = d.prs_dienst_key(+)
|
|
AND bdl.alg_gebouw_key = g.alg_gebouw_key(+)
|
|
AND bdl.alg_locatie_key = l.alg_locatie_key(+)) scope
|
|
WHERE b.prs_bedrijf_key = scope.prs_bedrijf_key;
|
|
|
|
-- De bron view met gegevens over bezoekers die een parkeerplaats moeten krijgen vandaag of morgen
|
|
|
|
CREATE OR REPLACE VIEW VOLK_V_EXP_FIRMBASE
|
|
(
|
|
BEZ_BEZOEKER_KEY,
|
|
BEZ_AFSPRAAK_KEY,
|
|
BEZ_STARTDATUM,
|
|
BEZ_EINDDATUM,
|
|
FIRMBASE_RESPONSE,
|
|
KENTEKEN,
|
|
LANDCODE,
|
|
VISITOR_PROFILE,
|
|
VISITOR_ID,
|
|
BEZOEKER_NAAM
|
|
)
|
|
AS
|
|
SELECT b.bez_bezoekers_key,
|
|
a.bez_afspraak_key,
|
|
a.bez_afspraak_datum,
|
|
a.bez_afspraak_eind,
|
|
firmb.bez_kenmerkwaarde_waarde
|
|
AS firmbase_resp, --- KOMT ER EEN KEY TERUG OF KAN IK HIER RESPONS CODE IN TERUGZETTEN?
|
|
REPLACE (REPLACE (COALESCE (b.bez_bezoekers_kenteken, kenteken.kenteken), '-', ''),
|
|
' ',
|
|
''),
|
|
'NL'
|
|
AS landcode,
|
|
'VBank',
|
|
guid.bez_kenmerkwaarde_waarde
|
|
AS guid,
|
|
b.bez_afspraak_naam
|
|
AS bezoeker_naam
|
|
FROM bez_afspraak a,
|
|
bez_bezoekers b,
|
|
alg_locatie l,
|
|
(SELECT rd.bez_bezoekers_key
|
|
FROM ins_v_aanwezigdeel ins_de,
|
|
ins_srtdeel ins_sd,
|
|
res_v_aanwezigdeel res_de,
|
|
res_rsv_deel rd
|
|
WHERE ins_de.ins_deel_key = res_de.res_ins_deel_key
|
|
AND ins_de.ins_deel_module = 'INS'
|
|
AND ins_de.ins_deel_parent_key IS NULL
|
|
AND ins_sd.ins_srtdeel_key = ins_de.ins_srtdeel_key
|
|
AND ins_sd.ins_srtdeel_code = 'PARK'
|
|
AND rd.res_deel_key = res_de.res_deel_key) park,
|
|
(SELECT kw.bez_bezoekers_key, bez_kenmerkwaarde_waarde
|
|
FROM bez_kenmerkwaarde kw, bez_kenmerk k
|
|
WHERE k.bez_kenmerk_key = kw.bez_kenmerk_key
|
|
AND k.bez_kenmerk_upper = 'FIRMBASE RESPONSE') firmb,
|
|
(SELECT kw.bez_bezoekers_key, UPPER (bez_kenmerkwaarde_waarde) kenteken
|
|
FROM bez_kenmerkwaarde kw, bez_kenmerk k
|
|
WHERE k.bez_kenmerk_key = kw.bez_kenmerk_key AND k.bez_kenmerk_upper = 'KENTEKEN')
|
|
kenteken,
|
|
(SELECT kw.bez_bezoekers_key, bez_kenmerkwaarde_waarde
|
|
FROM bez_kenmerkwaarde kw, bez_kenmerk k
|
|
WHERE k.bez_kenmerk_key = kw.bez_kenmerk_key AND k.bez_kenmerk_upper = 'VISITORID')
|
|
guid
|
|
WHERE b.bez_afspraak_key = a.bez_afspraak_key
|
|
AND b.bez_bezoekers_key = park.bez_bezoekers_key
|
|
AND a.alg_locatie_key = l.alg_locatie_key
|
|
AND l.alg_locatie_key = 104 --- alleen Utrecht groot kantoor
|
|
AND firmb.bez_bezoekers_key(+) = b.bez_bezoekers_key
|
|
AND kenteken.bez_bezoekers_key(+) = b.bez_bezoekers_key
|
|
AND guid.bez_bezoekers_key(+) = b.bez_bezoekers_key
|
|
AND a.bez_afspraak_datum < TRUNC (SYSDATE) + 2
|
|
AND a.bez_afspraak_datum > TRUNC (SYSDATE) - 1;
|
|
|
|
-- !!!!!!!!!!!!!!!!!! tijdelijke view omdat de mail uitgevallen is. !!!!!!!!!!!!!!!!!!!!!!
|
|
|
|
CREATE OR REPLACE VIEW volk_v_rap_bezoekers_mutatie
|
|
AS
|
|
SELECT DISTINCT
|
|
DECODE (t.fac_srtnotificatie_key, 30, 'Nieuw', 31, 'Wijziging') status,
|
|
a.bez_afspraak_key nummer,
|
|
contact.prs_perslid_naam_full contactpersoon,
|
|
HOST.prs_perslid_naam_full gastheer,
|
|
l.alg_locatie_omschrijving -- locatie,
|
|
-- ud.fac_usrdata_omschr
|
|
email,
|
|
b.bez_afspraak_naam bezoeker,
|
|
b.bez_afspraak_bedrijf bedrijf,
|
|
a.bez_afspraak_datum van,
|
|
a.bez_afspraak_eind tot,
|
|
(SELECT bez_kenmerkwaarde_waarde
|
|
FROM bez_kenmerkwaarde kw, bez_kenmerk k
|
|
WHERE k.bez_kenmerk_key = kw.bez_kenmerk_key
|
|
AND kw.bez_bezoekers_key = b.bez_bezoekers_key
|
|
AND k.bez_kenmerk_upper = 'KENTEKEN') kenteken,
|
|
(SELECT COUNT (*)
|
|
FROM res_rsv_deel rrd
|
|
WHERE rrd.bez_bezoekers_key = b.bez_bezoekers_key) parkeerplaats,
|
|
fac_tracking_datum wijziging
|
|
FROM fac_tracking t,
|
|
bez_bezoekers b,
|
|
bez_afspraak a,
|
|
alg_locatie l,
|
|
-- fac_usrdata ud,
|
|
fac_srtnotificatie sn,
|
|
prs_v_perslid_fullnames contact,
|
|
prs_v_perslid_fullnames HOST
|
|
WHERE a.bez_afspraak_key = b.bez_afspraak_key
|
|
AND t.fac_tracking_refkey = a.bez_afspraak_key
|
|
AND t.fac_srtnotificatie_key IN (30, 31) --- BEZMUT, registreren nieuwe afspraak en BEZUPD, wijzigen afspraak
|
|
AND sn.fac_srtnotificatie_code = 'CUST01'
|
|
AND t.fac_tracking_refkey = a.bez_afspraak_key
|
|
AND a.alg_locatie_key = l.alg_locatie_key
|
|
-- AND ud.fac_usrdata_code = l.alg_locatie_code
|
|
AND a.bez_afspraak_host_key = HOST.prs_perslid_key
|
|
AND a.bez_afspraak_contact_key = contact.prs_perslid_key
|
|
-- AND ud.fac_usrtab_key = 141 --- bezoekersmutaties van het afgelopen uur
|
|
AND t.fac_tracking_datum > TO_DATE ('20190423 16:00', 'yyyymmdd hh24:mi');
|
|
|
|
-- Procedure om de bezoekers met een parkeerplaats klaar te zetten voor de export
|
|
|
|
CREATE OR REPLACE PROCEDURE VOLK_SELECT_FIRMBASE (p_applname IN VARCHAR2, p_applrun IN VARCHAR2)
|
|
AS
|
|
v_rap_count NUMBER;
|
|
v_visitor_id VARCHAR (100);
|
|
v_kenmerk_visid NUMBER;
|
|
|
|
v_aanduiding VARCHAR2 (200);
|
|
v_errorhint VARCHAR2 (1000);
|
|
v_errormsg VARCHAR2 (1000);
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
v_count NUMBER;
|
|
|
|
-- Firmbase koppeling bestaat uit 3 verschillende onderdelen:
|
|
-- Insert Visitor, Update Visitor, Cancel Visitor
|
|
|
|
-- Stap 1: Insert Visitor
|
|
-- Selectcriteria: alle bezoekers uit volk_v_exp_firmbase die nog niet in de tabel met Firmbase registraties staan
|
|
-- Of eigenlijk ook: nog geen visitor_id hebben
|
|
CURSOR IV IS
|
|
SELECT p.*
|
|
FROM volk_v_exp_firmbase p
|
|
WHERE p.visitor_id IS NULL
|
|
AND p.bez_bezoeker_key NOT IN (SELECT f.bez_bezoeker_key
|
|
FROM volk_registraties_firmbase f);
|
|
|
|
|
|
-- Stap 2: Update Visitor
|
|
-- Er ontstaat verschil in kentekens tussen de VOLK eigen tabel en bez. tabel
|
|
-- Selectcriteria: alle bezoekers uit volk_v_exp_firmbase met Firmbase key waarbij kenteken afwijkt van de gegevens uit VOLK tabel
|
|
-- De nieuwe gegevens worden geexporteerd en de eigen tabel wordt bijgewerkt
|
|
CURSOR UV IS
|
|
SELECT p.*
|
|
FROM volk_v_exp_firmbase p, volk_registraties_firmbase f
|
|
WHERE p.bez_bezoeker_key = f.bez_bezoeker_key
|
|
AND NVL (p.kenteken, 'KL') <> NVL (f.kenteken, 'KL');
|
|
|
|
|
|
-- Stap 3: Cancel Visitor
|
|
-- De bezoekersregistratie staat wel in de eigen tabel maar niet in de bez. tabel (bezoeker (en evt ook afspraak) is verwijderd)
|
|
-- Bezoekers uit het verleden kijken we niet naar, die staan sowieso niet in de view
|
|
-- LET OP: ook bij het wijzigen van datum/tijd van de afspraak moet eerst een delete en dan een nieuwe insert gedaan worden
|
|
-- Selectcriteria: alle bezoekers uit VOLK eigen tabel die niet meer voorkomen in volk_v_exp_firmbase
|
|
-- Of bezoekers uit VOLK eigen tabel waarbij begin en/of eindtijd afwijkt van de informatie uit de standaard tabel
|
|
-- Er wordt een delete visitor gestuurd en het record wordt uit de eigen tabel verwijderd
|
|
CURSOR CV IS
|
|
SELECT f.*
|
|
FROM volk_registraties_firmbase f
|
|
WHERE f.bez_startdatum > TRUNC (SYSDATE - 1)
|
|
AND f.visitor_id NOT IN (SELECT v.visitor_id
|
|
FROM volk_v_exp_firmbase v)
|
|
UNION ALL
|
|
SELECT f.*
|
|
FROM volk_registraties_firmbase f, volk_v_exp_firmbase v
|
|
WHERE f.visitor_id = v.visitor_id
|
|
AND (f.bez_startdatum <> v.bez_startdatum OR f.bez_einddatum <> v.bez_einddatum);
|
|
BEGIN
|
|
DELETE imp_log
|
|
WHERE imp_log_applicatie = p_applname;
|
|
|
|
DELETE fac_rapport
|
|
WHERE fac_rapport_node = p_applname;
|
|
|
|
v_rap_count := 0;
|
|
|
|
SELECT k.bez_kenmerk_key
|
|
INTO v_kenmerk_visid
|
|
FROM bez_kenmerk k
|
|
WHERE k.bez_kenmerk_upper = 'VISITORID';
|
|
|
|
FOR rec IN UV
|
|
LOOP
|
|
v_rap_count := v_rap_count + 1;
|
|
v_aanduiding := v_rap_count || ': ' || rec.bez_afspraak_key || '/' || rec.bez_bezoeker_key;
|
|
v_errormsg := 'Exportregel update visitor Firmbase aanmaken';
|
|
|
|
INSERT INTO fac_rapport (fac_rapport_node,
|
|
fac_rapport_volgnr,
|
|
fac_rapport_regel,
|
|
fac_rapport_soort)
|
|
VALUES (
|
|
p_applname,
|
|
v_rap_count,
|
|
'node update.js'
|
|
|| ' "'
|
|
|| rec.visitor_id
|
|
|| '"'
|
|
|| ' "'
|
|
|| NVL (rec.kenteken,
|
|
'KL-' || SUBSTR (TO_CHAR (rec.bez_bezoeker_key, 'FM0000000000'), -6))
|
|
|| '"'
|
|
|| ' "'
|
|
|| NVL (rec.landcode, 'NL')
|
|
|| '" >>%0.log 2>>&1',
|
|
0);
|
|
|
|
-- dan ook het kenteken in de eigen tabel aanpassen
|
|
UPDATE volk_registraties_firmbase v
|
|
SET kenteken = rec.kenteken
|
|
WHERE v.visitor_id = rec.visitor_id;
|
|
|
|
COMMIT;
|
|
END LOOP;
|
|
|
|
FOR rec IN CV
|
|
LOOP
|
|
v_rap_count := v_rap_count + 1;
|
|
v_aanduiding := v_rap_count || ': ' || rec.bez_afspraak_key || '/' || rec.bez_bezoeker_key;
|
|
v_errormsg := 'Exportregel delete visitor Firmbase aanmaken';
|
|
|
|
INSERT INTO fac_rapport (fac_rapport_node,
|
|
fac_rapport_volgnr,
|
|
fac_rapport_regel,
|
|
fac_rapport_soort)
|
|
VALUES (p_applname,
|
|
v_rap_count,
|
|
'node cancel.js' || ' "' || rec.visitor_id || '" >>%0.log 2>>&1',
|
|
0);
|
|
|
|
--- Registratie verwijderen uit logtabel
|
|
--- VisitorID verwijderen bij de reservering omdat de bezoeker een nieuwe ID moet krijgen via insert
|
|
DELETE volk_registraties_firmbase f
|
|
WHERE f.visitor_id = rec.visitor_id;
|
|
|
|
DELETE bez_kenmerkwaarde
|
|
WHERE bez_kenmerk_key = v_kenmerk_visid AND bez_bezoekers_key = rec.bez_bezoeker_key;
|
|
|
|
COMMIT;
|
|
END LOOP;
|
|
|
|
FOR rec IN IV
|
|
LOOP
|
|
v_rap_count := v_rap_count + 1;
|
|
v_aanduiding := v_rap_count || ': ' || rec.bez_afspraak_key || '/' || rec.bez_bezoeker_key;
|
|
v_errormsg := 'Exportregel insert visitor Firmbase aanmaken';
|
|
|
|
|
|
SELECT SUBSTR (SYS_GUID (), 1, 26)
|
|
|| SUBSTR (TO_CHAR (p.bez_bezoeker_key, 'FM0000000000'), -6)
|
|
INTO v_visitor_id
|
|
FROM volk_v_exp_firmbase p
|
|
WHERE p.bez_bezoeker_key = rec.bez_bezoeker_key;
|
|
|
|
--- als er wel een parkeerplaats is ingevuld, maar er is geen kenteken bekend, dan moet het kenteken veld gevuld worden met:
|
|
--- KL- en de laatste 6 posities van het VisitorID, bij ons is dat de bezoekerkey aangevuld met voorloopnullen
|
|
INSERT INTO fac_rapport (fac_rapport_node,
|
|
fac_rapport_volgnr,
|
|
fac_rapport_regel,
|
|
fac_rapport_soort)
|
|
VALUES (
|
|
p_applname,
|
|
v_rap_count,
|
|
'node register.js'
|
|
|| ' "'
|
|
|| v_visitor_id
|
|
|| '"'
|
|
|| ' "'
|
|
|| NVL (rec.kenteken,
|
|
'KL-' || SUBSTR (TO_CHAR (rec.bez_bezoeker_key, 'FM0000000000'), -6))
|
|
|| '"'
|
|
|| ' "'
|
|
|| NVL (rec.landcode, 'NL')
|
|
|| '"'
|
|
|| ' "'
|
|
|| REPLACE (rec.bez_startdatum, ' ', 'T')
|
|
|| '"'
|
|
|| ' "'
|
|
|| REPLACE (rec.bez_einddatum, ' ', 'T')
|
|
|| '"'
|
|
|| ' "'
|
|
|| rec.bezoeker_naam
|
|
|| '" >>%0.log 2>>&1',
|
|
0);
|
|
|
|
-- registratie ook in eigen tabel toevoegen
|
|
INSERT INTO volk_registraties_firmbase (bez_bezoeker_key,
|
|
bez_startdatum,
|
|
bez_einddatum,
|
|
kenteken,
|
|
visitor_id)
|
|
VALUES (rec.bez_bezoeker_key,
|
|
rec.bez_startdatum,
|
|
rec.bez_einddatum,
|
|
rec.kenteken,
|
|
v_visitor_id);
|
|
|
|
-- guid ook registreren bij desbetreffende bezoekersregistratie
|
|
INSERT INTO bez_kenmerkwaarde (bez_kenmerk_key,
|
|
bez_bezoekers_key,
|
|
bez_kenmerkwaarde_waarde)
|
|
VALUES (v_kenmerk_visid, rec.bez_bezoeker_key, v_visitor_id);
|
|
|
|
|
|
COMMIT;
|
|
END LOOP;
|
|
|
|
COMMIT;
|
|
END volk_SELECT_firmbase;
|
|
/
|
|
|
|
--- genereert het export bestand voor Firmbase
|
|
|
|
CREATE OR REPLACE VIEW VOLK_V_EXPORT_FIRMBASE
|
|
(
|
|
RESULT,
|
|
RESULT_ORDER
|
|
)
|
|
AS
|
|
SELECT fac_rapport_regel, fac_rapport_volgnr
|
|
FROM fac_rapport
|
|
WHERE fac_rapport_node = 'FIRMBASE';
|
|
|
|
|
|
CREATE OR REPLACE PACKAGE VOLK
|
|
AS
|
|
PROCEDURE mld_after_insert (p_melding_key IN NUMBER);
|
|
|
|
PROCEDURE opschonen_registraties_fb;
|
|
|
|
PROCEDURE movetoruimte (p_perslid_key NUMBER);
|
|
END;
|
|
/
|
|
|
|
CREATE OR REPLACE PACKAGE BODY VOLK
|
|
AS
|
|
PROCEDURE mld_after_insert (p_melding_key IN NUMBER)
|
|
AS
|
|
CURSOR c IS
|
|
SELECT m.mld_melding_key
|
|
FROM mld_stdmelding sm,
|
|
ins_tab_discipline vg,
|
|
ins_srtdiscipline vgt,
|
|
mld_disc_params vgp,
|
|
mld_melding m
|
|
WHERE sm.mld_ins_discipline_key = vg.ins_discipline_key
|
|
AND vg.ins_srtdiscipline_key = vgt.ins_srtdiscipline_key
|
|
AND UPPER (ins_srtdiscipline_omschrijving) LIKE '%WINKEL%'
|
|
AND sm.mld_ins_discipline_key = vgp.mld_ins_discipline_key
|
|
AND vgp.mld_disc_params_kanpubliek = 1
|
|
AND m.mld_melding_publiek = 0
|
|
AND m.mld_stdmelding_key = sm.mld_stdmelding_key;
|
|
|
|
v_count NUMBER;
|
|
v_stdmelding_key NUMBER;
|
|
BEGIN
|
|
FOR rec IN C
|
|
LOOP
|
|
UPDATE mld_melding m
|
|
SET m.mld_melding_publiek = 1
|
|
WHERE m.mld_melding_key = rec.mld_melding_key;
|
|
END LOOP;
|
|
END;
|
|
|
|
|
|
PROCEDURE opschonen_registraties_fb
|
|
AS
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
v_errormsg VARCHAR2 (200);
|
|
BEGIN
|
|
DELETE volk_registraties_firmbase fb
|
|
WHERE fb.bez_einddatum < TRUNC (SYSDATE - 7);
|
|
|
|
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.writelog ('Opschonen registraties Firmbase',
|
|
'E',
|
|
v_errormsg,
|
|
'');
|
|
END;
|
|
|
|
PROCEDURE movetoruimte (p_perslid_key NUMBER)
|
|
AS
|
|
v_ruimte_key NUMBER (10);
|
|
v_verdieping_key NUMBER (10);
|
|
BEGIN
|
|
SELECT MIN (x.alg_ruimte_key)
|
|
INTO v_ruimte_key
|
|
FROM (SELECT r1.alg_ruimte_key
|
|
FROM alg_v_aanwezigruimte r1, alg_verdieping v1
|
|
WHERE r1.alg_srtruimte_key = 21 -- Fictief
|
|
AND SUBSTR (r1.alg_ruimte_nr, 1, 1) = '_'
|
|
AND r1.alg_verdieping_key = v1.alg_verdieping_key
|
|
AND v1.alg_gebouw_key = 124) x
|
|
LEFT JOIN ( SELECT prs_alg_ruimte_key, COUNT (*) aant
|
|
FROM prs_werkplek wp
|
|
GROUP BY prs_alg_ruimte_key) wp
|
|
ON x.alg_ruimte_key = wp.prs_alg_ruimte_key
|
|
WHERE COALESCE (wp.aant, 0) < 9999;
|
|
|
|
IF v_ruimte_key IS NULL
|
|
THEN
|
|
INSERT INTO alg_ruimte (alg_verdieping_key, -- Begane grond Croeselaan
|
|
alg_srtruimte_key, alg_ruimte_nr)
|
|
VALUES (1437, 21, '_Quqelequ')
|
|
RETURNING alg_ruimte_key
|
|
INTO v_ruimte_key;
|
|
|
|
UPDATE alg_ruimte
|
|
SET alg_ruimte_nr = '_' || TO_CHAR (v_ruimte_key)
|
|
WHERE alg_ruimte_key = v_ruimte_key;
|
|
END IF;
|
|
|
|
prs.movetoruimte (p_perslid_key,
|
|
v_ruimte_key,
|
|
'A',
|
|
1);
|
|
END;
|
|
END;
|
|
/
|
|
|
|
CREATE OR REPLACE VIEW VOLK_V_RAPP_AANT_BEZ_INTERN
|
|
(
|
|
DATUM,
|
|
FCLT_LOCATIE_KEY,
|
|
LOCATIE,
|
|
BEDRIJFSONDERDEEL,
|
|
AANTAL,
|
|
AANTAL_BHV,
|
|
HTML_DETAILS
|
|
)
|
|
AS
|
|
SELECT TRUNC (afs.bez_afspraak_datum),
|
|
l.alg_locatie_key,
|
|
l.alg_locatie_omschrijving,
|
|
COALESCE (bo.fac_usrdata_omschr, 'Onbekend') bedrijfsonderdeel,
|
|
COUNT (b.bez_bezoekers_key),
|
|
SUM (bhv.bhv),
|
|
'<a class="details" onclick=''FcltMgr.openDetail("appl/fac/fac_report.asp?usrrap_key=161&'
|
|
|| 'mode=list&'
|
|
|| 'fclt_datum_afspraak='
|
|
|| fac.safe_to_number (TO_CHAR (afs.bez_afspraak_datum, 'yyyymmdd'))
|
|
|| '&'
|
|
|| 'fclt_bedrijfsonderdeel='
|
|
|| COALESCE (REPLACE (bo.fac_usrdata_omschr, '&', '%26'), 'Onbekend')
|
|
|| '&'
|
|
|| 'fclt_locatie_key='
|
|
|| l.alg_locatie_key
|
|
|| '")''>'
|
|
|| 'Klik hier voor de details'
|
|
|| '</a>' AS html_details
|
|
FROM bez_bezoekers b,
|
|
bez_afspraak afs,
|
|
prs_perslid HOST,
|
|
alg_locatie l,
|
|
prs_afdeling a,
|
|
(SELECT kl.prs_link_key, fac.safe_to_number (kl.prs_kenmerklink_waarde) bhv
|
|
FROM prs_kenmerk k, prs_kenmerklink kl
|
|
WHERE k.prs_kenmerk_upper LIKE '%BHV%' AND kl.prs_kenmerk_key = k.prs_kenmerk_key) bhv,
|
|
(SELECT *
|
|
FROM fac_usrtab tb, fac_usrdata ud
|
|
WHERE ud.fac_usrtab_key = tb.fac_usrtab_key
|
|
AND UPPER (tb.fac_usrtab_omschrijving) = 'BEDRIJFSONDERDEEL') bo
|
|
WHERE b.bez_afspraak_key = afs.bez_afspraak_key
|
|
AND afs.alg_locatie_key = l.alg_locatie_key
|
|
AND afs.bez_afspraak_host_key = HOST.prs_perslid_key
|
|
AND b.prs_perslid_key = bhv.prs_link_key(+)
|
|
AND HOST.prs_afdeling_key = a.prs_afdeling_key
|
|
AND bo.fac_usrdata_code(+) = a.prs_afdeling_naam --- op basis van afdelingscode wordt het bedrijfsonderdeel gekoppeld
|
|
GROUP BY TRUNC (afs.bez_afspraak_datum),
|
|
l.alg_locatie_key,
|
|
l.alg_locatie_omschrijving,
|
|
COALESCE (bo.fac_usrdata_omschr, 'Onbekend'),
|
|
'<a class="details" onclick=''FcltMgr.openDetail("appl/fac/fac_report.asp?usrrap_key=161&'
|
|
|| 'mode=list&'
|
|
|| 'fclt_datum_afspraak='
|
|
|| fac.safe_to_number (TO_CHAR (afs.bez_afspraak_datum, 'yyyymmdd'))
|
|
|| '&'
|
|
|| 'fclt_bedrijfsonderdeel='
|
|
|| COALESCE (REPLACE (bo.fac_usrdata_omschr, '&', '%26'), 'Onbekend')
|
|
|| '&'
|
|
|| 'fclt_locatie_key='
|
|
|| l.alg_locatie_key
|
|
|| '")''>'
|
|
|| 'Klik hier voor de details'
|
|
|| '</a>';
|
|
|
|
CREATE OR REPLACE VIEW VOLK_V_RAPP_BEZ_INTERN_DETAIL
|
|
(
|
|
FCLT_DATUM_AFSPRAAK,
|
|
FCLT_BEDRIJFSONDERDEEL,
|
|
FCLT_LOCATIE_KEY,
|
|
DATUM,
|
|
BEDRIJFSONDERDEEL,
|
|
LOCATIE,
|
|
BEZOEKER,
|
|
AFSPRAAK_VAN,
|
|
AFSPRAAK_TOT,
|
|
ACTIE,
|
|
GASTHEER_VROUW
|
|
)
|
|
AS
|
|
SELECT fac.safe_to_number (TO_CHAR (afs.bez_afspraak_datum, 'yyyymmdd'))
|
|
fclt_datum,
|
|
COALESCE (bo.fac_usrdata_omschr, 'Onbekend')
|
|
fclt_bedrijfsonderdeel,
|
|
l.alg_locatie_key,
|
|
TRUNC (afs.bez_afspraak_datum),
|
|
COALESCE (bo.fac_usrdata_omschr, 'Onbekend')
|
|
bedrijfsonderdeel,
|
|
l.alg_locatie_omschrijving,
|
|
b.bez_afspraak_naam,
|
|
TO_CHAR (afs.bez_afspraak_datum, 'HH24:MI'),
|
|
TO_CHAR (afs.bez_afspraak_eind, 'HH24:MI'),
|
|
ac.bez_actie_omschrijving,
|
|
bez_voor.prs_perslid_naam_friendly
|
|
gastheer_vrouw
|
|
FROM bez_bezoekers b,
|
|
bez_afspraak afs,
|
|
prs_perslid p,
|
|
-- prs_v_perslid_fullnames_all pf,
|
|
prs_v_perslid_fullnames_all bez_voor,
|
|
alg_locatie l,
|
|
prs_afdeling a,
|
|
(SELECT *
|
|
FROM fac_usrtab tb, fac_usrdata ud
|
|
WHERE ud.fac_usrtab_key = tb.fac_usrtab_key
|
|
AND UPPER (tb.fac_usrtab_omschrijving) = 'BEDRIJFSONDERDEEL') bo,
|
|
bez_actie ac
|
|
WHERE b.bez_afspraak_key = afs.bez_afspraak_key
|
|
AND afs.alg_locatie_key = l.alg_locatie_key
|
|
AND afs.bez_afspraak_host_key = p.prs_perslid_key
|
|
AND p.prs_afdeling_key = a.prs_afdeling_key
|
|
AND bo.fac_usrdata_code(+) = a.prs_afdeling_naam --- op basis van afdelingscode wordt het bedrijfsonderdeel gekoppeld
|
|
AND afs.bez_actie_key = ac.bez_actie_key
|
|
AND afs.bez_afspraak_host_key = bez_voor.prs_perslid_key
|
|
ORDER BY afs.bez_afspraak_datum;
|
|
|
|
CREATE OR REPLACE PROCEDURE VOLK_DAILY
|
|
AS
|
|
BEGIN
|
|
-- Opschonenen Firmbase registraties
|
|
volk.opschonen_registraties_fb ();
|
|
END;
|
|
/
|
|
|
|
CREATE OR REPLACE VIEW VOLK_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 <= 29)
|
|
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 'bezet' END
|
|
waarde1,
|
|
CASE WHEN MAX (res_rsv_ruimte_tot) IS NULL THEN res_ruimte_nr ELSE 'bezet' 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
|
|
FROM res_v_aanwezigruimte rr,
|
|
res_alg_ruimte rar,
|
|
datums,
|
|
(SELECT datum,
|
|
res_ruimte_key,
|
|
res_rsv_ruimte_van,
|
|
res_rsv_ruimte_tot
|
|
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) 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 = 381 -- 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;
|
|
|
|
COMMIT;
|
|
|
|
--- VOLK#77515 Uitbesteding Servicedesk Retail locaties SNS
|
|
--- Meldingen/opdrachten uitgezet naar Colliers mogen direct worden afgemeld
|
|
|
|
CREATE OR REPLACE PROCEDURE volk_select_colliers (p_applname IN VARCHAR2, p_applrun IN VARCHAR2)
|
|
AS
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
v_errorhint VARCHAR2 (100);
|
|
v_aanduiding VARCHAR2 (100);
|
|
v_afmeldtekst VARCHAR2 (4000);
|
|
|
|
CURSOR coll IS
|
|
SELECT o.mld_opdr_key,
|
|
os.mld_statusopdr_key,
|
|
os.mld_statusopdr_omschrijving,
|
|
m.mld_melding_key,
|
|
ms.mld_statuses_key,
|
|
ms.mld_statuses_omschrijving
|
|
FROM mld_opdr o,
|
|
mld_melding m,
|
|
mld_statuses ms,
|
|
mld_statusopdr os
|
|
WHERE o.mld_uitvoerende_keys = 27886 -- Collliers
|
|
AND m.mld_melding_key = o.mld_melding_key
|
|
AND ms.mld_statuses_key = m.mld_melding_status
|
|
AND os.mld_statusopdr_key = o.mld_statusopdr_key
|
|
AND m.mld_melding_status IN (2, 3, 7);
|
|
BEGIN
|
|
v_errorhint := 'init';
|
|
|
|
DELETE imp_log
|
|
WHERE imp_log_applicatie = p_applname;
|
|
|
|
FOR rec IN coll
|
|
LOOP
|
|
BEGIN
|
|
SELECT at.mld_afmeldtekst_omschrijving
|
|
INTO v_afmeldtekst
|
|
FROM mld_afmeldtekst at
|
|
WHERE at.mld_afmeldtekst_key = 41;
|
|
|
|
UPDATE mld_melding m
|
|
SET m.mld_melding_opmerking = v_afmeldtekst
|
|
WHERE m.mld_melding_key = rec.mld_melding_key;
|
|
|
|
mld.setmeldingstatus (rec.mld_melding_key, 5, 3);
|
|
fac.trackaction ('MLDTRK',
|
|
rec.mld_melding_key,
|
|
NULL,
|
|
NULL,
|
|
'Melding naar Colliers automatisch afgemeld');
|
|
|
|
mld.setopdrachtstatus (rec.mld_opdr_key, 6, 3);
|
|
fac.trackaction ('ORDTRK',
|
|
rec.mld_opdr_key,
|
|
NULL,
|
|
NULL,
|
|
'Opdracht naar Colliers automatisch afgemeld');
|
|
|
|
COMMIT;
|
|
END;
|
|
END LOOP;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
|
fac.writelog (p_applname,
|
|
'E',
|
|
'Error ' || oracle_err_num || '/' || oracle_err_mes,
|
|
v_errorhint);
|
|
END;
|
|
/
|
|
|
|
--- VOLK#77515 Uitbesteding Servicedesk Retail locaties SNS
|
|
--- Colliers moet worden geinformeerd over meldingen die naar CSU zijn uitgezet
|
|
|
|
CREATE OR REPLACE VIEW VOLK_V_NOTI_CSU_ORD
|
|
(
|
|
SENDER,
|
|
RECEIVER,
|
|
TEXT,
|
|
CODE,
|
|
KEY,
|
|
XKEY,
|
|
XSENDER,
|
|
XEMAIL,
|
|
XMOBILE
|
|
)
|
|
BEQUEATH DEFINER
|
|
AS
|
|
SELECT 3 sender, --- Facilitor
|
|
NULL receiver,
|
|
'Ter informatie: Opdracht '
|
|
|| TO_CHAR (m.mld_melding_key)
|
|
|| '/'
|
|
|| TO_CHAR (o.mld_opdr_bedrijfopdr_volgnr)
|
|
|| 'is uitgezet naar CSU ' tekst,
|
|
sn.fac_srtnotificatie_code code,
|
|
o.mld_opdr_key key,
|
|
NULL xkey,
|
|
NULL xsender,
|
|
SUBSTR (ba.prs_bedrijfadres_url, INSTR (ba.prs_bedrijfadres_url, ':') + 1) xemail,
|
|
NULL xmobile
|
|
FROM mld_opdr o,
|
|
mld_melding m,
|
|
mld_stdmelding sm,
|
|
ins_tab_discipline vg,
|
|
ins_srtdiscipline vgt,
|
|
fac_tracking t,
|
|
prs_bedrijfadres ba,
|
|
fac_srtnotificatie sn
|
|
WHERE o.mld_uitvoerende_keys = 87 -- CSU
|
|
AND m.mld_melding_key = o.mld_melding_key
|
|
AND sm.mld_stdmelding_key = m.mld_stdmelding_key
|
|
AND vg.ins_discipline_key = sm.mld_ins_discipline_key
|
|
AND vgt.ins_srtdiscipline_key = vg.ins_srtdiscipline_key
|
|
AND vgt.ins_srtdiscipline_key IN (4, 5) ---vakgroeptype SNS winkel FN/LD
|
|
AND t.fac_tracking_refkey = o.mld_opdr_key
|
|
AND t.fac_srtnotificatie_key = 72 -- ORDNEW
|
|
AND ba.prs_bedrijf_key = 27886 -- Colliers
|
|
AND ba.prs_bedrijfadres_type = 'O'
|
|
AND sn.fac_srtnotificatie_code = 'CUST02'
|
|
AND t.fac_tracking_datum >
|
|
(SELECT fac_notificatie_job_lastrun
|
|
FROM fac_notificatie_job
|
|
WHERE UPPER (fac_notificatie_job_view) = 'VOLK_V_NOTI_CSU_ORD')
|
|
AND t.fac_tracking_datum <
|
|
(SELECT fac_notificatie_job_nextrun
|
|
FROM fac_notificatie_job
|
|
WHERE UPPER (fac_notificatie_job_view) = 'VOLK_V_NOTI_CSU_ORD');
|
|
|
|
CREATE OR REPLACE PROCEDURE volk_processemail (pfrom IN VARCHAR2,
|
|
pto IN VARCHAR2,
|
|
psubject IN VARCHAR2,
|
|
pbody IN VARCHAR2,
|
|
psessionid IN VARCHAR2,
|
|
pemailkey IN NUMBER)
|
|
AS
|
|
v_count NUMBER;
|
|
sender prs_perslid.prs_perslid_key%TYPE;
|
|
defaultstdmelding fac_setting.fac_setting_default%TYPE;
|
|
subject_regexp fac_setting.fac_setting_default%TYPE;
|
|
v_newkey mld_melding.mld_melding_key%TYPE;
|
|
v_mldnum VARCHAR2 (4000);
|
|
v_mldkey mld_melding.mld_melding_key%TYPE;
|
|
v_email fac_notificatie.fac_notificatie_receiver_email%TYPE;
|
|
v_check NUMBER;
|
|
v_pbody VARCHAR2 (4000);
|
|
v_folder_kkey mld_kenmerk.mld_kenmerk_key%TYPE;
|
|
-- kkey mld_kenmerk.mld_kenmerk_key%TYPE;
|
|
errormsg fac_result.fac_result_waarde%TYPE;
|
|
BEGIN
|
|
-- Valideer de sender in pfrom: kennen we deze?
|
|
SELECT COUNT (*)
|
|
INTO v_count
|
|
FROM prs_perslid p, prs_afdeling d
|
|
WHERE p.prs_afdeling_key = d.prs_afdeling_key AND UPPER (prs_perslid_email) = UPPER (pfrom);
|
|
|
|
-- Bekende afzender --> dat is de melder
|
|
IF (v_count = 1)
|
|
THEN
|
|
SELECT p.prs_perslid_key
|
|
INTO sender
|
|
FROM prs_perslid p, prs_afdeling d
|
|
WHERE p.prs_afdeling_key = d.prs_afdeling_key
|
|
AND p.prs_perslid_verwijder IS NULL
|
|
AND UPPER (prs_perslid_email) = UPPER (pfrom);
|
|
|
|
v_pbody := pbody;
|
|
-- Geen bekende afzender --> Service Desk Facilitair wordt de afzender
|
|
ELSE
|
|
SELECT prs_perslid_key
|
|
INTO sender
|
|
FROM prs_perslid p, prs_afdeling d
|
|
WHERE p.prs_afdeling_key = d.prs_afdeling_key AND prs_perslid_key = 7201;
|
|
|
|
|
|
--- we nemen het mailadres van de afzender wel op in de tekst
|
|
v_pbody := 'Verstuurd door: ' || pfrom || CHR (10) || pbody;
|
|
END IF;
|
|
|
|
-- Check of de afzender een reply op een bestaande melding doet, in dat geval wordt dat in notities genoteerd.
|
|
-- 1) Eerst uit het onderwerp het meldingnummer proberen te onderscheppen, uitgangspunt dat in het onderwerp het meldingnummer '1234' kan worden opgevist, met ervoor en erna een spatie
|
|
-- 2) Het 1e nummer dat in het onderwerp staat wordt gezien als meldingnummer, eventuele andere nummers later in het onderwerp worden genegeerd.
|
|
subject_regexp := '[[:digit:]]{1,}';
|
|
|
|
v_pbody := pbody;
|
|
|
|
v_mldnum :=
|
|
REGEXP_SUBSTR (psubject,
|
|
subject_regexp,
|
|
1,
|
|
1,
|
|
'i');
|
|
|
|
v_mldkey := fac.safe_to_number (v_mldnum);
|
|
|
|
--- kijken of er inderdaad een melding bestaat met het gevonden nummer
|
|
SELECT COUNT (m.mld_melding_key)
|
|
INTO v_check
|
|
FROM mld_melding m
|
|
WHERE m.mld_melding_key = v_mldkey;
|
|
|
|
IF v_check = 1
|
|
THEN
|
|
-- Bestaande melding gevonden dus we zetten de mail als notitie bij deze melding
|
|
BEGIN
|
|
INSERT INTO mld_melding_note (mld_melding_key,
|
|
mld_melding_note_omschrijving,
|
|
mld_melding_note_flag,
|
|
prs_perslid_key)
|
|
VALUES (
|
|
v_mldkey,
|
|
SUBSTR (
|
|
psubject
|
|
|| CHR (13)
|
|
|| CHR (10)
|
|
|| REPLACE (SUBSTR (v_pbody, 1, 4000 - (LENGTH (v_pbody) + 2)),
|
|
CHR (13) || CHR (10) || CHR (13) || CHR (10),
|
|
CHR (13) || CHR (10)),
|
|
1,
|
|
4000), -- verwijder onnodige witregels
|
|
1,
|
|
3);
|
|
|
|
--- belletje bij de melding zetten
|
|
UPDATE mld_melding
|
|
SET mld_melding_actiecode = 129
|
|
WHERE mld_melding_key = v_mldkey;
|
|
|
|
--- de huidige behandelaar krijgt een notificatie
|
|
SELECT mld_melding_behandelaar_key
|
|
INTO v_email
|
|
FROM mld_melding
|
|
WHERE mld_melding_key = v_mldkey;
|
|
|
|
IF v_email IS NOT NULL
|
|
THEN
|
|
INSERT INTO fac_notificatie (fac_srtnotificatie_key,
|
|
fac_notificatie_status,
|
|
prs_perslid_key_receiver,
|
|
fac_notificatie_receiver_email,
|
|
fac_notificatie_oms,
|
|
fac_notificatie_refkey,
|
|
fac_notificatie_prioriteit)
|
|
VALUES (67, --- mldnob
|
|
2,
|
|
v_email,
|
|
NULL,
|
|
'Er is een opmerking geplaatst bij melding ' || TO_CHAR (v_mldkey),
|
|
v_mldkey,
|
|
2);
|
|
END IF;
|
|
|
|
-- Find the lowest volgnummer of the Folder-flexfield.
|
|
SELECT MIN (k1.mld_kenmerk_key)
|
|
INTO v_folder_kkey
|
|
FROM mld_stdmelding sm1,
|
|
ins_tab_discipline td1,
|
|
mld_kenmerk k1,
|
|
mld_srtkenmerk sk1,
|
|
mld_melding m
|
|
WHERE m.mld_stdmelding_key = sm1.mld_stdmelding_key
|
|
AND m.mld_melding_key = v_mldkey
|
|
AND sm1.mld_ins_discipline_key = td1.ins_discipline_key
|
|
AND k1.mld_kenmerk_verwijder IS NULL
|
|
AND k1.mld_srtkenmerk_key = sk1.mld_srtkenmerk_key
|
|
AND sk1.mld_srtkenmerk_kenmerktype = 'M'
|
|
AND ( ( k1.mld_stdmelding_key = sm1.mld_stdmelding_key
|
|
AND k1.mld_kenmerk_niveau = 'S')
|
|
OR ( k1.mld_stdmelding_key = td1.ins_discipline_key
|
|
AND k1.mld_kenmerk_niveau = 'D')
|
|
OR ( k1.mld_stdmelding_key = td1.ins_srtdiscipline_key
|
|
AND k1.mld_kenmerk_niveau = 'T')
|
|
OR (k1.mld_kenmerk_niveau = 'A'));
|
|
|
|
IF v_folder_kkey 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_mldkey / 1000), 'FM0000')
|
|
|| '___\M'
|
|
|| v_mldkey
|
|
|| '\'
|
|
|| v_folder_kkey
|
|
|| '\');
|
|
END IF;
|
|
|
|
fac.trackaction ('MLDTRK',
|
|
v_mldkey,
|
|
NULL,
|
|
NULL,
|
|
'Nieuwe notitie via Mail2melding');
|
|
END;
|
|
ELSE
|
|
--- geen bestaande melding kunnen vinden dus dan een nieuwe aanmaken
|
|
BEGIN
|
|
INSERT INTO mld_melding (mld_melding_module,
|
|
mld_meldbron_key,
|
|
mld_melding_datum,
|
|
mld_melding_onderwerp,
|
|
mld_melding_omschrijving,
|
|
mld_melding_status,
|
|
mld_stdmelding_key,
|
|
prs_perslid_key,
|
|
mld_melding_email_ext,
|
|
mld_melding_spoed)
|
|
VALUES (
|
|
'MLD',
|
|
4, -- email
|
|
SYSDATE,
|
|
SUBSTR (psubject, 1, 60),
|
|
SUBSTR (
|
|
REPLACE (SUBSTR (pbody, 1, 4000),
|
|
CHR (13) || CHR (10) || CHR (13) || CHR (10),
|
|
CHR (13) || CHR (10)),
|
|
1,
|
|
4000), -- verwijder onnodige witregels
|
|
2,
|
|
341,
|
|
sender,
|
|
pfrom,
|
|
3)
|
|
RETURNING mld_melding_key
|
|
INTO v_newkey;
|
|
|
|
-- Find the lowest volgnummer of the Folder-flexfield.
|
|
SELECT MIN (k1.mld_kenmerk_key)
|
|
INTO v_folder_kkey
|
|
FROM mld_stdmelding sm1,
|
|
ins_tab_discipline td1,
|
|
mld_kenmerk k1,
|
|
mld_srtkenmerk sk1,
|
|
mld_melding m
|
|
WHERE m.mld_stdmelding_key = sm1.mld_stdmelding_key
|
|
AND m.mld_melding_key = v_newkey
|
|
AND sm1.mld_ins_discipline_key = td1.ins_discipline_key
|
|
AND k1.mld_kenmerk_verwijder IS NULL
|
|
AND k1.mld_srtkenmerk_key = sk1.mld_srtkenmerk_key
|
|
AND sk1.mld_srtkenmerk_kenmerktype = 'M'
|
|
AND ( ( k1.mld_stdmelding_key = sm1.mld_stdmelding_key
|
|
AND k1.mld_kenmerk_niveau = 'S')
|
|
OR ( k1.mld_stdmelding_key = td1.ins_discipline_key
|
|
AND k1.mld_kenmerk_niveau = 'D')
|
|
OR ( k1.mld_stdmelding_key = td1.ins_srtdiscipline_key
|
|
AND k1.mld_kenmerk_niveau = 'T')
|
|
OR (k1.mld_kenmerk_niveau = 'A'));
|
|
|
|
IF v_folder_kkey 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_newkey / 1000), 'FM0000')
|
|
|| '___\M'
|
|
|| v_newkey
|
|
|| '\'
|
|
|| v_folder_kkey
|
|
|| '\');
|
|
END IF;
|
|
|
|
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
|
|
VALUES (psessionid, 'maillog', 'Geregistreerd onder melding ' || v_newkey);
|
|
END;
|
|
|
|
IF errormsg IS NOT NULL
|
|
THEN
|
|
INSERT INTO fac_result (fac_result_sessionid, fac_result_naam, fac_result_waarde)
|
|
VALUES (psessionid, 'errormsg', errormsg);
|
|
END IF;
|
|
END IF;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
fac.writelog (
|
|
'PROCESSEMAIL',
|
|
'W',
|
|
'Mail kon niet verwerkt worden afzender: ' || pfrom || '[' || 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 volk_processemail;
|
|
/
|
|
|
|
CREATE OR REPLACE PROCEDURE volk_organisatie_level7 (p_import_key IN NUMBER)
|
|
IS
|
|
c_fielddelimitor VARCHAR2 (2) := fac.import_delimiter (p_import_key);
|
|
v_newline fac_imp_file.fac_imp_file_line%TYPE; -- Input line
|
|
v_errormsg VARCHAR2 (1000);
|
|
v_errorhint VARCHAR2 (1000);
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
v_aanduiding VARCHAR2 (200);
|
|
v_count NUMBER (10);
|
|
v_ongeldig NUMBER (1);
|
|
v_count_update NUMBER (10);
|
|
v_count_error NUMBER (10);
|
|
v_count_tot NUMBER (10);
|
|
v_bedrijf_key NUMBER (10);
|
|
v_kostenplaats_key NUMBER (10);
|
|
v_afdeling_key NUMBER (10);
|
|
v_prs_afdeling_parentkey NUMBER (10);
|
|
v_prs_actual_parentkey NUMBER (10);
|
|
|
|
CURSOR cbedrijf IS
|
|
SELECT MIN (prs_bedrijf_naam) prs_bedrijf_naam
|
|
FROM fac_imp_organisatie
|
|
WHERE prs_bedrijf_naam IS NOT NULL
|
|
GROUP BY UPPER (prs_bedrijf_naam);
|
|
|
|
recbedrijf cbedrijf%ROWTYPE;
|
|
|
|
-- Bij 1-op-1 relatie tussen kostenplaats en afdeling de kostenplaatsomschrijving zetten op
|
|
-- de afdelingsomschrijving, ander de kostenplaatsomschrijving leeg laten.
|
|
CURSOR ckpn IS
|
|
SELECT MIN (prs_kostenplaats_nr)
|
|
prs_kostenplaats_nr,
|
|
DECODE (COUNT (*), 1, MAX (prs_afdeling_omschrijving), '')
|
|
prs_kostenplaats_omschrijving,
|
|
'PRS'
|
|
prs_kostenplaats_module
|
|
FROM fac_imp_organisatie
|
|
WHERE prs_kostenplaats_nr IS NOT NULL
|
|
GROUP BY UPPER (prs_kostenplaats_nr);
|
|
|
|
reckpn ckpn%ROWTYPE;
|
|
|
|
CURSOR cafdeling1 IS
|
|
SELECT MIN (prs_bedrijf_naam) prs_bedrijf_naam,
|
|
UPPER (prs_bedrijf_naam) prs_bedrijf_naam_upper,
|
|
MIN (prs_afdeling_naam) prs_afdeling_naam,
|
|
UPPER (prs_afdeling_naam) prs_afdeling_upper,
|
|
MAX (prs_afdeling_omschrijving) prs_afdeling_omschrijving,
|
|
MIN (prs_afdeling_naam_parent) prs_afdeling_naam_parent,
|
|
MIN (UPPER (prs_afdeling_naam_parent)) prs_afdeling_naam_parent_upper,
|
|
MIN (UPPER (prs_afdeling_actual_parent)) prs_afdeling_actual_parent_upper,
|
|
MAX (prs_kostenplaats_nr) prs_kostenplaats_nr,
|
|
MAX (UPPER (prs_kostenplaats_nr)) prs_kostenplaats_upper,
|
|
MAX (prs_afdeling_externid) prs_afdeling_externid,
|
|
niveau
|
|
FROM (SELECT 1 niveau,
|
|
a1.prs_bedrijf_naam,
|
|
a1.prs_afdeling_naam,
|
|
a1.prs_afdeling_omschrijving,
|
|
a1.prs_kostenplaats_nr,
|
|
'' prs_afdeling_naam_parent,
|
|
'' prs_afdeling_actual_parent,
|
|
a1.prs_afdeling_externid
|
|
FROM fac_imp_organisatie a1
|
|
WHERE a1.prs_afdeling_naam_parent IS NULL
|
|
UNION ALL
|
|
SELECT 2,
|
|
a2.prs_bedrijf_naam,
|
|
a2.prs_afdeling_naam,
|
|
a2.prs_afdeling_omschrijving,
|
|
a2.prs_kostenplaats_nr,
|
|
a1.prs_afdeling_naam,
|
|
a1.prs_afdeling_naam,
|
|
a2.prs_afdeling_externid
|
|
FROM fac_imp_organisatie a1, fac_imp_organisatie a2
|
|
WHERE a2.prs_afdeling_naam_parent = a1.prs_afdeling_naam
|
|
AND a1.prs_afdeling_naam_parent IS NULL
|
|
UNION ALL
|
|
SELECT 3,
|
|
a3.prs_bedrijf_naam,
|
|
a3.prs_afdeling_naam,
|
|
a3.prs_afdeling_omschrijving,
|
|
a3.prs_kostenplaats_nr,
|
|
a2.prs_afdeling_naam,
|
|
a2.prs_afdeling_naam,
|
|
a3.prs_afdeling_externid
|
|
FROM fac_imp_organisatie a1, fac_imp_organisatie a2, fac_imp_organisatie a3
|
|
WHERE a3.prs_afdeling_naam_parent = a2.prs_afdeling_naam
|
|
AND a2.prs_afdeling_naam_parent = a1.prs_afdeling_naam
|
|
AND a1.prs_afdeling_naam_parent IS NULL
|
|
UNION ALL
|
|
SELECT 4,
|
|
a4.prs_bedrijf_naam,
|
|
a4.prs_afdeling_naam,
|
|
a4.prs_afdeling_omschrijving,
|
|
a4.prs_kostenplaats_nr,
|
|
a3.prs_afdeling_naam,
|
|
a3.prs_afdeling_naam,
|
|
a4.prs_afdeling_externid
|
|
FROM fac_imp_organisatie a1,
|
|
fac_imp_organisatie a2,
|
|
fac_imp_organisatie a3,
|
|
fac_imp_organisatie a4
|
|
WHERE a4.prs_afdeling_naam_parent = a3.prs_afdeling_naam
|
|
AND a3.prs_afdeling_naam_parent = a2.prs_afdeling_naam
|
|
AND a2.prs_afdeling_naam_parent = a1.prs_afdeling_naam
|
|
AND a1.prs_afdeling_naam_parent IS NULL
|
|
UNION ALL
|
|
SELECT 5,
|
|
a5.prs_bedrijf_naam,
|
|
a5.prs_afdeling_naam,
|
|
a5.prs_afdeling_omschrijving,
|
|
a5.prs_kostenplaats_nr,
|
|
a4.prs_afdeling_naam,
|
|
a4.prs_afdeling_naam,
|
|
a5.prs_afdeling_externid
|
|
FROM fac_imp_organisatie a1,
|
|
fac_imp_organisatie a2,
|
|
fac_imp_organisatie a3,
|
|
fac_imp_organisatie a4,
|
|
fac_imp_organisatie a5
|
|
WHERE a5.prs_afdeling_naam_parent = a4.prs_afdeling_naam
|
|
AND a4.prs_afdeling_naam_parent = a3.prs_afdeling_naam
|
|
AND a3.prs_afdeling_naam_parent = a2.prs_afdeling_naam
|
|
AND a2.prs_afdeling_naam_parent = a1.prs_afdeling_naam
|
|
AND a1.prs_afdeling_naam_parent IS NULL
|
|
--- vanaf hier krijgen we te maken met ' fictieve niveaus' , de parent moet afdeling 4 blijven de daadwerkelijke parent zetten we in een kenmerk
|
|
UNION ALL
|
|
SELECT 6,
|
|
a6.prs_bedrijf_naam,
|
|
a6.prs_afdeling_naam,
|
|
a6.prs_afdeling_omschrijving,
|
|
a6.prs_kostenplaats_nr,
|
|
a4.prs_afdeling_naam,
|
|
a5.prs_afdeling_naam,
|
|
a6.prs_afdeling_externid
|
|
FROM fac_imp_organisatie a1,
|
|
fac_imp_organisatie a2,
|
|
fac_imp_organisatie a3,
|
|
fac_imp_organisatie a4,
|
|
fac_imp_organisatie a5,
|
|
fac_imp_organisatie a6
|
|
WHERE a6.prs_afdeling_naam_parent = a5.prs_afdeling_naam
|
|
AND a5.prs_afdeling_naam_parent = a4.prs_afdeling_naam
|
|
AND a4.prs_afdeling_naam_parent = a3.prs_afdeling_naam
|
|
AND a3.prs_afdeling_naam_parent = a2.prs_afdeling_naam
|
|
AND a2.prs_afdeling_naam_parent = a1.prs_afdeling_naam
|
|
AND a1.prs_afdeling_naam_parent IS NULL
|
|
UNION ALL
|
|
SELECT 7,
|
|
a7.prs_bedrijf_naam,
|
|
a7.prs_afdeling_naam,
|
|
a7.prs_afdeling_omschrijving,
|
|
a7.prs_kostenplaats_nr,
|
|
a4.prs_afdeling_naam,
|
|
a6.prs_afdeling_naam,
|
|
a7.prs_afdeling_externid
|
|
FROM fac_imp_organisatie a1,
|
|
fac_imp_organisatie a2,
|
|
fac_imp_organisatie a3,
|
|
fac_imp_organisatie a4,
|
|
fac_imp_organisatie a5,
|
|
fac_imp_organisatie a6,
|
|
fac_imp_organisatie a7
|
|
WHERE a7.prs_afdeling_naam_parent = a6.prs_afdeling_naam
|
|
AND a6.prs_afdeling_naam_parent = a5.prs_afdeling_naam
|
|
AND a5.prs_afdeling_naam_parent = a4.prs_afdeling_naam
|
|
AND a4.prs_afdeling_naam_parent = a3.prs_afdeling_naam
|
|
AND a3.prs_afdeling_naam_parent = a2.prs_afdeling_naam
|
|
AND a2.prs_afdeling_naam_parent = a1.prs_afdeling_naam
|
|
AND a1.prs_afdeling_naam_parent IS NULL
|
|
UNION ALL
|
|
SELECT 8,
|
|
a8.prs_bedrijf_naam,
|
|
a8.prs_afdeling_naam,
|
|
a8.prs_afdeling_omschrijving,
|
|
a8.prs_kostenplaats_nr,
|
|
a4.prs_afdeling_naam,
|
|
a7.prs_afdeling_naam,
|
|
a8.prs_afdeling_externid
|
|
FROM fac_imp_organisatie a1,
|
|
fac_imp_organisatie a2,
|
|
fac_imp_organisatie a3,
|
|
fac_imp_organisatie a4,
|
|
fac_imp_organisatie a5,
|
|
fac_imp_organisatie a6,
|
|
fac_imp_organisatie a7,
|
|
fac_imp_organisatie a8
|
|
WHERE a8.prs_afdeling_naam_parent = a7.prs_afdeling_naam
|
|
AND a7.prs_afdeling_naam_parent = a6.prs_afdeling_naam
|
|
AND a6.prs_afdeling_naam_parent = a5.prs_afdeling_naam
|
|
AND a5.prs_afdeling_naam_parent = a4.prs_afdeling_naam
|
|
AND a4.prs_afdeling_naam_parent = a3.prs_afdeling_naam
|
|
AND a3.prs_afdeling_naam_parent = a2.prs_afdeling_naam
|
|
AND a2.prs_afdeling_naam_parent = a1.prs_afdeling_naam
|
|
AND a1.prs_afdeling_naam_parent IS NULL
|
|
UNION ALL
|
|
SELECT 9,
|
|
a9.prs_bedrijf_naam,
|
|
a9.prs_afdeling_naam,
|
|
a9.prs_afdeling_omschrijving,
|
|
a9.prs_kostenplaats_nr,
|
|
a4.prs_afdeling_naam,
|
|
a8.prs_afdeling_naam,
|
|
a9.prs_afdeling_externid
|
|
FROM fac_imp_organisatie a1,
|
|
fac_imp_organisatie a2,
|
|
fac_imp_organisatie a3,
|
|
fac_imp_organisatie a4,
|
|
fac_imp_organisatie a5,
|
|
fac_imp_organisatie a6,
|
|
fac_imp_organisatie a7,
|
|
fac_imp_organisatie a8,
|
|
fac_imp_organisatie a9
|
|
WHERE a9.prs_afdeling_naam_parent = a8.prs_afdeling_naam
|
|
AND a8.prs_afdeling_naam_parent = a7.prs_afdeling_naam
|
|
AND a7.prs_afdeling_naam_parent = a6.prs_afdeling_naam
|
|
AND a6.prs_afdeling_naam_parent = a5.prs_afdeling_naam
|
|
AND a5.prs_afdeling_naam_parent = a4.prs_afdeling_naam
|
|
AND a4.prs_afdeling_naam_parent = a3.prs_afdeling_naam
|
|
AND a3.prs_afdeling_naam_parent = a2.prs_afdeling_naam
|
|
AND a2.prs_afdeling_naam_parent = a1.prs_afdeling_naam
|
|
AND a1.prs_afdeling_naam_parent IS NULL
|
|
UNION ALL
|
|
SELECT 10,
|
|
a10.prs_bedrijf_naam,
|
|
a10.prs_afdeling_naam,
|
|
a10.prs_afdeling_omschrijving,
|
|
a10.prs_kostenplaats_nr,
|
|
a4.prs_afdeling_naam,
|
|
a9.prs_afdeling_naam,
|
|
a10.prs_afdeling_externid
|
|
FROM fac_imp_organisatie a1,
|
|
fac_imp_organisatie a2,
|
|
fac_imp_organisatie a3,
|
|
fac_imp_organisatie a4,
|
|
fac_imp_organisatie a5,
|
|
fac_imp_organisatie a6,
|
|
fac_imp_organisatie a7,
|
|
fac_imp_organisatie a8,
|
|
fac_imp_organisatie a9,
|
|
fac_imp_organisatie a10
|
|
WHERE a10.prs_afdeling_naam_parent = a10.prs_afdeling_naam
|
|
AND a9.prs_afdeling_naam_parent = a8.prs_afdeling_naam
|
|
AND a8.prs_afdeling_naam_parent = a7.prs_afdeling_naam
|
|
AND a7.prs_afdeling_naam_parent = a6.prs_afdeling_naam
|
|
AND a6.prs_afdeling_naam_parent = a5.prs_afdeling_naam
|
|
AND a5.prs_afdeling_naam_parent = a4.prs_afdeling_naam
|
|
AND a4.prs_afdeling_naam_parent = a3.prs_afdeling_naam
|
|
AND a3.prs_afdeling_naam_parent = a2.prs_afdeling_naam
|
|
AND a2.prs_afdeling_naam_parent = a1.prs_afdeling_naam
|
|
AND a1.prs_afdeling_naam_parent IS NULL)
|
|
WHERE ((prs_bedrijf_naam IS NOT NULL) AND (prs_afdeling_naam IS NOT NULL)) -- geen lege regels
|
|
GROUP BY UPPER (prs_bedrijf_naam), UPPER (prs_afdeling_naam), niveau
|
|
ORDER BY niveau;
|
|
|
|
recafdeling1 cafdeling1%ROWTYPE;
|
|
BEGIN
|
|
v_count_update := 0;
|
|
v_count_tot := 0;
|
|
v_count_error := 0;
|
|
|
|
FOR rec IN cbedrijf
|
|
LOOP
|
|
BEGIN
|
|
v_count_tot := v_count_tot + 1;
|
|
|
|
v_aanduiding := rec.prs_bedrijf_naam || '| ';
|
|
v_errormsg := '';
|
|
v_errorhint := '';
|
|
|
|
v_errorhint := 'Kijken of bedrijf al bestaat';
|
|
|
|
SELECT COUNT (*)
|
|
INTO v_count
|
|
FROM prs_bedrijf
|
|
WHERE UPPER (prs_bedrijf_naam_upper) = UPPER (rec.prs_bedrijf_naam)
|
|
AND prs_bedrijf_verwijder IS NULL;
|
|
|
|
IF (v_count = 0)
|
|
THEN
|
|
v_errorhint := 'Fout bij toevoegen bedrijf';
|
|
|
|
INSERT INTO prs_bedrijf (prs_bedrijf_naam, prs_bedrijf_intern)
|
|
VALUES (rec.prs_bedrijf_naam, 1);
|
|
|
|
COMMIT;
|
|
v_count_update := v_count_update + 1;
|
|
END IF;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
v_count_error := v_count_error + 1;
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
|
|
IF (v_errormsg IS NULL)
|
|
THEN
|
|
v_errormsg :=
|
|
'Fout tijdens verwerken van bedrijf [' || rec.prs_bedrijf_naam || ']';
|
|
END IF;
|
|
|
|
v_errorhint := v_errorhint || ': ' || oracle_err_mes;
|
|
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_aanduiding || v_errormsg,
|
|
v_errorhint);
|
|
|
|
COMMIT; -- tbv logging
|
|
END;
|
|
END LOOP;
|
|
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'S',
|
|
'Bedrijf: verwerkte regels zonder foutmelding: ' || TO_CHAR (v_count_tot - v_count_error),
|
|
'');
|
|
|
|
fac.imp_writelog (p_import_key,
|
|
'S',
|
|
'Bedrijf: verwerkte regels met foutmelding: ' || TO_CHAR (v_count_error),
|
|
'');
|
|
|
|
|
|
|
|
v_count_update := 0;
|
|
v_count_tot := 0;
|
|
v_count_error := 0;
|
|
|
|
FOR rec IN ckpn
|
|
LOOP
|
|
BEGIN
|
|
v_aanduiding := rec.prs_kostenplaats_nr || '| ';
|
|
v_errormsg := '';
|
|
v_errorhint := '';
|
|
|
|
|
|
v_count_tot := v_count_tot + 1;
|
|
|
|
v_aanduiding := recbedrijf.prs_bedrijf_naam || '| ';
|
|
v_errormsg := '';
|
|
v_errorhint := '';
|
|
|
|
v_errorhint := 'Kijken of de kostenplaats al bestaat';
|
|
|
|
SELECT COUNT (*)
|
|
INTO v_count
|
|
FROM prs_kostenplaats
|
|
WHERE prs_kostenplaats_verwijder IS NULL
|
|
AND UPPER (prs_kostenplaats_upper) = UPPER (rec.prs_kostenplaats_nr);
|
|
|
|
IF (v_count = 0)
|
|
THEN
|
|
v_errorhint := 'Fout bij toevoegen kostenplaats';
|
|
|
|
INSERT INTO prs_kostenplaats (prs_kostenplaats_nr,
|
|
prs_kostenplaats_omschrijving,
|
|
prs_kostenplaats_module)
|
|
VALUES (rec.prs_kostenplaats_nr,
|
|
rec.prs_kostenplaats_omschrijving,
|
|
rec.prs_kostenplaats_module);
|
|
|
|
COMMIT;
|
|
v_count_update := v_count_update + 1;
|
|
END IF;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
v_count_error := v_count_error + 1;
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
|
|
IF (v_errormsg IS NULL)
|
|
THEN
|
|
v_errormsg :=
|
|
'Fout tijdens verwerken van kostenplaats ['
|
|
|| reckpn.prs_kostenplaats_nr
|
|
|| ']';
|
|
END IF;
|
|
|
|
v_errorhint := v_errorhint || ': ' || oracle_err_mes;
|
|
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_aanduiding || v_errormsg,
|
|
v_errorhint);
|
|
|
|
COMMIT; -- tbv logging
|
|
END;
|
|
END LOOP;
|
|
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'S',
|
|
'Kostenplaats: verwerkte regels zonder foutmelding: '
|
|
|| TO_CHAR (v_count_tot - v_count_error),
|
|
'');
|
|
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'S',
|
|
'Kostenplaats: verwerkte regels met foutmelding: ' || TO_CHAR (v_count_error),
|
|
'');
|
|
|
|
v_count_update := 0;
|
|
v_count_tot := 0;
|
|
v_count_error := 0;
|
|
|
|
FOR rec IN cafdeling1
|
|
LOOP
|
|
BEGIN
|
|
v_count_tot := v_count_tot + 1;
|
|
|
|
v_aanduiding :=
|
|
rec.prs_bedrijf_naam
|
|
|| '|'
|
|
|| rec.prs_afdeling_naam
|
|
|| '|'
|
|
|| rec.prs_afdeling_naam_parent
|
|
|| '| ';
|
|
v_errormsg := '';
|
|
v_errorhint := '';
|
|
|
|
IF (recafdeling1.niveau = 1)
|
|
THEN
|
|
v_errorhint := 'Bedrijf niet gevonden bij afdeling';
|
|
v_prs_afdeling_parentkey := TO_NUMBER (NULL);
|
|
|
|
SELECT prs_bedrijf_key
|
|
INTO v_bedrijf_key
|
|
FROM prs_bedrijf
|
|
WHERE prs_bedrijf_verwijder IS NULL
|
|
AND prs_bedrijf_naam_upper = rec.prs_bedrijf_naam_upper;
|
|
ELSE
|
|
v_errorhint := 'Parent van de afdeling niet gevonden';
|
|
v_bedrijf_key := TO_NUMBER (NULL);
|
|
|
|
SELECT prs_afdeling_key
|
|
INTO v_prs_afdeling_parentkey
|
|
FROM prs_afdeling
|
|
WHERE prs_afdeling_verwijder IS NULL
|
|
AND prs_afdeling_upper = rec.prs_afdeling_naam_parent_upper;
|
|
|
|
SELECT prs_afdeling_key
|
|
INTO v_prs_actual_parentkey
|
|
FROM prs_afdeling
|
|
WHERE prs_afdeling_verwijder IS NULL
|
|
AND prs_afdeling_upper = rec.prs_afdeling_actual_parent_upper;
|
|
END IF;
|
|
|
|
v_errorhint := 'Bepalen of afdeling bestaat';
|
|
|
|
SELECT COUNT (*)
|
|
INTO v_count
|
|
FROM prs_afdeling
|
|
WHERE UPPER (RTRIM (prs_afdeling_omschrijving)) =
|
|
UPPER (RTRIM (rec.prs_afdeling_omschrijving))
|
|
AND prs_afdeling_verwijder IS NULL;
|
|
|
|
v_errorhint := 'Kostenplaats bij afdeling bepalen';
|
|
|
|
SELECT COUNT (*), NVL (MAX (prs_kostenplaats_key), TO_NUMBER (NULL))
|
|
INTO v_count, v_kostenplaats_key
|
|
FROM prs_kostenplaats
|
|
WHERE prs_kostenplaats_verwijder IS NULL
|
|
AND prs_kostenplaats_upper = UPPER (TRIM (rec.prs_kostenplaats_upper))
|
|
AND UPPER (prs_kostenplaats_module) = 'PRS';
|
|
|
|
v_errorhint := 'Kostenplaats bij afdeling bepalen';
|
|
|
|
SELECT COUNT (*)
|
|
INTO v_count
|
|
FROM prs_afdeling
|
|
WHERE prs_afdeling_verwijder IS NULL
|
|
AND prs_afdeling_upper = UPPER (TRIM (rec.prs_afdeling_upper));
|
|
|
|
v_errorhint := 'Fout bij toevoegen afdeling';
|
|
|
|
IF (v_count = 0)
|
|
THEN
|
|
INSERT INTO prs_afdeling (prs_afdeling_naam,
|
|
prs_afdeling_omschrijving,
|
|
prs_bedrijf_key,
|
|
prs_afdeling_parentkey,
|
|
prs_kostenplaats_key,
|
|
prs_afdeling_externid)
|
|
VALUES (rec.prs_afdeling_naam,
|
|
rec.prs_afdeling_omschrijving,
|
|
v_bedrijf_key,
|
|
v_prs_afdeling_parentkey,
|
|
v_kostenplaats_key,
|
|
rec.prs_afdeling_externid)
|
|
RETURNING prs_afdeling_key
|
|
INTO v_afdeling_key;
|
|
|
|
-- Vul dep level
|
|
flx.setflex ('PRS',
|
|
1040,
|
|
v_afdeling_key,
|
|
'A',
|
|
rec.niveau);
|
|
|
|
-- Vul parent
|
|
flx.setflex ('PRS',
|
|
1041,
|
|
v_afdeling_key,
|
|
'A',
|
|
v_prs_actual_parentkey);
|
|
|
|
COMMIT;
|
|
v_count_update := v_count_update + 1;
|
|
ELSE
|
|
IF (v_count = 1)
|
|
THEN
|
|
UPDATE prs_afdeling
|
|
SET prs_afdeling_parentkey = v_prs_afdeling_parentkey,
|
|
prs_kostenplaats_key = v_kostenplaats_key
|
|
WHERE prs_afdeling_upper = UPPER (TRIM (rec.prs_afdeling_upper));
|
|
|
|
SELECT prs_afdeling_key
|
|
INTO v_afdeling_key
|
|
FROM prs_afdeling
|
|
WHERE prs_afdeling_upper = UPPER (TRIM (rec.prs_afdeling_upper));
|
|
|
|
-- Vul dep level
|
|
flx.setflex ('PRS',
|
|
1040,
|
|
v_afdeling_key,
|
|
'A',
|
|
rec.niveau);
|
|
-- Vul parent
|
|
flx.setflex ('PRS',
|
|
1041,
|
|
v_afdeling_key,
|
|
'A',
|
|
v_prs_actual_parentkey);
|
|
|
|
COMMIT;
|
|
END IF;
|
|
END IF;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
v_count_error := v_count_error + 1;
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
|
|
IF (v_errormsg IS NULL)
|
|
THEN
|
|
v_errormsg :=
|
|
'Fout tijdens verwerken van afdeling [' || rec.prs_afdeling_naam || ']';
|
|
END IF;
|
|
|
|
v_errorhint := v_errorhint || ': ' || oracle_err_mes;
|
|
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_aanduiding || v_errormsg,
|
|
v_errorhint);
|
|
|
|
COMMIT; -- tbv logging
|
|
END;
|
|
END LOOP;
|
|
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'S',
|
|
'Afdeling: verwerkte regels zonder foutmelding: ' || TO_CHAR (v_count_tot - v_count_error),
|
|
'');
|
|
|
|
fac.imp_writelog (p_import_key,
|
|
'S',
|
|
'Afdeling: verwerkte regels met foutmelding: ' || TO_CHAR (v_count_error),
|
|
'');
|
|
END volk_organisatie_level7;
|
|
/
|
|
|
|
CREATE OR REPLACE PROCEDURE volk_import_organisatie (p_import_key IN NUMBER)
|
|
AS
|
|
c_fielddelimitor VARCHAR2 (2) := fac.import_delimiter (p_import_key);
|
|
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_bedrijf_naam VARCHAR2 (256);
|
|
v_afdeling_naam VARCHAR2 (256);
|
|
v_afdeling_naam_parent VARCHAR2 (256);
|
|
v_afdeling_omschrijving VARCHAR2 (256);
|
|
v_kostenplaats_nr VARCHAR2 (256);
|
|
|
|
-- PRS_BEDRIJF
|
|
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 fac_imp_organisatie;
|
|
|
|
COMMIT;
|
|
v_count_error := 0;
|
|
header_is_valid := 0;
|
|
v_count_tot := 0;
|
|
v_count_import := 0;
|
|
|
|
FOR rec1 IN c1
|
|
LOOP
|
|
BEGIN
|
|
v_errormsg := 'Fout FETCH te importeren rij';
|
|
|
|
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_fielddelimitor, v_bedrijf_naam);
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_afdeling_naam_parent);
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_afdeling_naam);
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_afdeling_omschrijving);
|
|
|
|
v_aanduiding :=
|
|
v_bedrijf_naam || '|' || v_afdeling_naam || '|' || v_afdeling_omschrijving || '| ';
|
|
|
|
IF (header_is_valid = 0)
|
|
THEN
|
|
IF UPPER (v_bedrijf_naam) = 'BEDRIJFSNAAM'
|
|
AND UPPER (v_afdeling_naam_parent) = 'AFDELINGSCODEPARENT'
|
|
THEN
|
|
header_is_valid := 1;
|
|
END IF;
|
|
ELSE
|
|
v_count_tot := v_count_tot + 1;
|
|
--fac.imp_writelog (p_import_key, 'I', v_aanduiding, '');
|
|
-- Controleer alle veldwaarde
|
|
v_bedrijf_naam := TRIM (v_bedrijf_naam);
|
|
|
|
IF LENGTH (v_bedrijf_naam) > 60
|
|
THEN
|
|
v_bedrijf_naam := SUBSTR (v_bedrijf_naam, 1, 60);
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || 'Bedrijf-aanduiding is te lang',
|
|
'Aanduiding wordt afgebroken tot [' || v_bedrijf_naam || ']');
|
|
END IF;
|
|
|
|
--
|
|
v_afdeling_naam := TRIM (v_afdeling_naam);
|
|
|
|
IF LENGTH (v_afdeling_naam) > 15
|
|
THEN
|
|
v_afdeling_naam := SUBSTR (v_afdeling_naam, 1, 15);
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'W',
|
|
v_aanduiding || 'Afdeling-aanduiding is te lang',
|
|
'Aanduiding wordt afgebroken tot [' || v_afdeling_naam || ']');
|
|
END IF;
|
|
|
|
v_afdeling_naam_parent := TRIM (v_afdeling_naam_parent);
|
|
|
|
IF LENGTH (v_afdeling_naam_parent) > 15
|
|
THEN
|
|
v_afdeling_naam_parent := SUBSTR (v_afdeling_naam_parent, 1, 15);
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'W',
|
|
v_aanduiding || 'Afdeling-aanduiding is te lang',
|
|
'Aanduiding wordt afgebroken tot [' || v_afdeling_naam_parent || ']');
|
|
END IF;
|
|
|
|
v_afdeling_omschrijving := TRIM (v_afdeling_omschrijving);
|
|
|
|
IF LENGTH (v_afdeling_omschrijving) > 60
|
|
THEN
|
|
v_afdeling_omschrijving := SUBSTR (v_afdeling_omschrijving, 1, 60);
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'W',
|
|
v_aanduiding || 'Afdelingsomschrijving is te lang',
|
|
'Aanduiding wordt afgebroken tot [' || v_afdeling_omschrijving || ']');
|
|
END IF;
|
|
|
|
v_all_null :=
|
|
(v_bedrijf_naam IS NULL)
|
|
AND (v_afdeling_naam IS NULL)
|
|
AND (v_afdeling_naam_parent IS NULL)
|
|
AND (v_afdeling_omschrijving IS NULL);
|
|
|
|
-- Insert geformatteerde import record
|
|
IF v_ongeldig = 0
|
|
THEN
|
|
v_errormsg :=
|
|
'Fout bij toevoegen te impoteren bedrijf/afdeling ['
|
|
|| v_afdeling_naam
|
|
|| ']';
|
|
|
|
INSERT INTO fac_imp_organisatie (prs_bedrijf_naam,
|
|
prs_afdeling_naam,
|
|
prs_afdeling_naam_parent,
|
|
prs_afdeling_omschrijving,
|
|
prs_kostenplaats_nr)
|
|
VALUES (v_bedrijf_naam,
|
|
v_afdeling_naam,
|
|
v_afdeling_naam_parent,
|
|
v_afdeling_omschrijving,
|
|
v_afdeling_naam); -- dummy kostenplaats
|
|
|
|
UPDATE fac_imp_organisatie
|
|
SET prs_afdeling_naam_parent = NULL
|
|
WHERE prs_afdeling_naam_parent = '000001';
|
|
|
|
v_count_import := v_count_import + 1;
|
|
END IF;
|
|
END IF;
|
|
END;
|
|
END LOOP;
|
|
|
|
IF (header_is_valid = 0)
|
|
THEN
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_aanduiding || 'Ongeldig importbestand',
|
|
'Geen geldige headerregel aanwezig');
|
|
ELSE
|
|
fac.imp_writelog (p_import_key,
|
|
'S',
|
|
'Bedrijf: aantal ingelezen regels: ' || TO_CHAR (v_count_tot),
|
|
'');
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'S',
|
|
'Bedrijf: aantal ongeldige 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 := 'error ' || oracle_err_num || '/' || oracle_err_mes;
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_errormsg,
|
|
'');
|
|
END volk_import_organisatie;
|
|
/
|
|
|
|
CREATE OR REPLACE PROCEDURE volk_delete_organisatie (p_import_key IN NUMBER)
|
|
AS
|
|
--- afdelingen die niet in de import voorkomen en waar ook geen medewerkers meer onder vallen
|
|
--- deze mogen een verwijderdatum krijgen
|
|
CURSOR c_del IS
|
|
SELECT a.prs_afdeling_key,
|
|
a.prs_afdeling_naam || ' ' || a.prs_afdeling_omschrijving afdeling
|
|
FROM prs_afdeling a
|
|
WHERE a.prs_afdeling_verwijder IS NULL
|
|
AND NOT EXISTS
|
|
(SELECT i.prs_afdeling_naam
|
|
FROM fac_imp_organisatie i
|
|
WHERE i.prs_afdeling_naam = a.prs_afdeling_naam)
|
|
AND NOT EXISTS
|
|
(SELECT p.prs_afdeling_key
|
|
FROM prs_perslid p
|
|
WHERE p.prs_afdeling_key = a.prs_afdeling_key
|
|
AND p.prs_perslid_verwijder IS NULL)
|
|
AND NOT EXISTS
|
|
(SELECT *
|
|
FROM prs_afdeling p
|
|
WHERE p.prs_afdeling_parentkey = a.prs_afdeling_key);
|
|
BEGIN
|
|
FOR rec IN c_del
|
|
LOOP
|
|
BEGIN
|
|
UPDATE prs_afdeling a
|
|
SET a.prs_afdeling_verwijder = SYSDATE
|
|
WHERE a.prs_afdeling_key = rec.prs_afdeling_key;
|
|
|
|
fac.trackaction (
|
|
'ADMTRK',
|
|
rec.prs_afdeling_key,
|
|
NULL,
|
|
NULL,
|
|
'Afdeling ' || rec.afdeling || ' is verwijderd vanuit de organisatie import');
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'W',
|
|
'volk_delete_afdeling',
|
|
'Verwijderen van afdeling: ' || rec.afdeling || ' is NIET gelukt');
|
|
END;
|
|
|
|
COMMIT;
|
|
END LOOP;
|
|
END volk_delete_organisatie;
|
|
/
|
|
|
|
CREATE OR REPLACE PROCEDURE volk_update_organisatie (p_import_key IN NUMBER)
|
|
AS
|
|
-- wanneer de afdeling gelijk is maar de omschrijving, kostenplaats of de parent anders dan werken we de afdeling in Facilitor bij
|
|
CURSOR c_omschr IS
|
|
SELECT i.prs_afdeling_naam,
|
|
i.prs_afdeling_omschrijving prs_afdeling_omschrijving_new,
|
|
a.prs_afdeling_omschrijving,
|
|
a.prs_afdeling_key
|
|
FROM fac_imp_organisatie i, prs_afdeling a
|
|
WHERE i.prs_afdeling_naam = a.prs_afdeling_naam
|
|
AND a.prs_afdeling_omschrijving <> i.prs_afdeling_omschrijving;
|
|
|
|
CURSOR c_kpl IS
|
|
SELECT kn.prs_kostenplaats_key prs_kostenplaats_key_new, a.prs_afdeling_key
|
|
FROM fac_imp_organisatie i,
|
|
prs_kostenplaats kn,
|
|
prs_afdeling a,
|
|
prs_kostenplaats k
|
|
WHERE kn.prs_kostenplaats_nr = i.prs_kostenplaats_nr
|
|
AND i.prs_afdeling_naam = a.prs_afdeling_naam
|
|
AND a.prs_kostenplaats_key = k.prs_kostenplaats_key
|
|
AND i.prs_kostenplaats_nr <> k.prs_kostenplaats_nr;
|
|
|
|
CURSOR c_parent IS
|
|
SELECT a.prs_afdeling_key, ap_new.prs_afdeling_key prs_afdeling_parentkey_new
|
|
FROM prs_afdeling a, fac_imp_organisatie i, prs_afdeling ap_new
|
|
WHERE i.prs_afdeling_naam = a.prs_afdeling_naam
|
|
AND i.prs_afdeling_naam_parent = ap_new.prs_afdeling_naam
|
|
AND a.prs_afdeling_parentkey <> ap_new.prs_afdeling_key;
|
|
BEGIN
|
|
-- we verwijderen afdelingen die niet meer in de import meekomen
|
|
volk_delete_organisatie (p_import_key);
|
|
|
|
-- de afdelingen die wel in de import zittenvoegen we toe
|
|
volk_organisatie_level7 (p_import_key);
|
|
|
|
END volk_update_organisatie;
|
|
/
|
|
|
|
CREATE OR REPLACE VIEW VOLK_V_RAP_VIRTUAL_AGENT
|
|
(
|
|
perslid_key,
|
|
perslid_nummer
|
|
)
|
|
AS
|
|
SELECT p.prs_perslid_key, p.prs_perslid_nr
|
|
FROM prs_perslid p
|
|
WHERE p.prs_perslid_verwijder IS NULL
|
|
AND ( p.prs_perslid_einddatum IS NULL
|
|
OR TRUNC (p.prs_perslid_einddatum) > TRUNC (SYSDATE))
|
|
AND p.prs_perslid_nr IS NOT NULL;
|
|
|
|
CREATE OR REPLACE VIEW VOLK_V_AFDELINGEN
|
|
(
|
|
prs_afdeling_key,
|
|
prs_afdeling_omschr,
|
|
prs_afdeling_verwijder
|
|
)
|
|
AS
|
|
SELECT a.prs_afdeling_key,
|
|
a.prs_afdeling_naam || ' ' || a.prs_afdeling_omschrijving,
|
|
a.prs_afdeling_verwijder
|
|
FROM prs_afdeling a;
|
|
|
|
------ 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 |