VOLK#78884 Koppeling voor up to date houden afdelingen

svn path=/Customer/trunk/; revision=62007
This commit is contained in:
Suzan Wiegerinck
2023-10-02 15:14:05 +00:00
parent 567fdc6d24
commit 026a00d1e9

View File

@@ -657,6 +657,7 @@ AS
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,
@@ -729,6 +730,7 @@ AS
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
@@ -788,6 +790,7 @@ AS
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
@@ -1022,6 +1025,7 @@ END volk_SELECT_firmbase;
/
--- genereert het export bestand voor Firmbase
CREATE OR REPLACE VIEW VOLK_V_EXPORT_FIRMBASE
(
RESULT,
@@ -1347,6 +1351,7 @@ 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
@@ -1354,9 +1359,9 @@ AS
oracle_err_mes VARCHAR2 (200);
v_errorhint VARCHAR2 (100);
v_aanduiding VARCHAR2 (100);
v_afmeldtekst VARCHAR2 (4000);
v_afmeldtekst VARCHAR2 (4000);
CURSOR coll IS
CURSOR coll IS
SELECT o.mld_opdr_key,
os.mld_statusopdr_key,
os.mld_statusopdr_omschrijving,
@@ -1367,7 +1372,7 @@ AS
mld_melding m,
mld_statuses ms,
mld_statusopdr os
WHERE o.mld_uitvoerende_keys = 27886 -- Collliers
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
@@ -1381,8 +1386,7 @@ BEGIN
FOR rec IN coll
LOOP
BEGIN
SELECT at.mld_afmeldtekst_omschrijving
SELECT at.mld_afmeldtekst_omschrijving
INTO v_afmeldtekst
FROM mld_afmeldtekst at
WHERE at.mld_afmeldtekst_key = 41;
@@ -1391,14 +1395,14 @@ BEGIN
SET m.mld_melding_opmerking = v_afmeldtekst
WHERE m.mld_melding_key = rec.mld_melding_key;
mld.setmeldingstatus (rec.mld_melding_key, 5, 3);
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);
mld.setopdrachtstatus (rec.mld_opdr_key, 6, 3);
fac.trackaction ('ORDTRK',
rec.mld_opdr_key,
NULL,
@@ -1422,6 +1426,7 @@ 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,
@@ -1511,8 +1516,8 @@ BEGIN
-- Bekende afzender --> dat is de melder
IF (v_count = 1)
THEN
SELECT p.prs_perslid_key, d.prs_kostenplaats_key
INTO sender, kostenplaats
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
@@ -1521,8 +1526,8 @@ BEGIN
v_pbody := pbody;
-- Geen bekende afzender --> _FACILITOR wordt de afzender
ELSE
SELECT prs_perslid_key, d.prs_kostenplaats_key
INTO sender, kostenplaats
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 = 3;
@@ -1691,7 +1696,7 @@ BEGIN
341,
3,
sender,
sender,
pfrom,
3)
RETURNING mld_melding_key
INTO v_newkey;
@@ -1738,6 +1743,280 @@ EXCEPTION
'Database fout - Neem contact op met uw systeembeheerder');
END volk_processemail;
/
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)
VALUES (v_bedrijf_naam,
v_afdeling_naam,
v_afdeling_naam_parent,
v_afdeling_omschrijving);
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_naam NOT IN (SELECT o.prs_afdeling_naam
FROM fac_imp_organisatie o)
AND a.prs_afdeling_key NOT IN
(SELECT p.prs_afdeling_key
FROM prs_perslid p
WHERE p.prs_perslid_verwijder IS NULL
AND p.prs_perslid_inactief IS NULL);
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
BEGIN
-- er wordt met een dummy kostenplaats gewerkt, dus deze zetten we bij alle afdelingen in de import tabel
UPDATE FAC_IMP_ORGANISATIE o
SET o.prs_kostenplaats_nr = '999999'
WHERE o.prs_kostenplaats_nr IS NULL;
-- de afdelingsnaam wordt tot 6 posities aangevuld met voorloopnullen
UPDATE fac_imp_organisatie o
SET o.prs_afdeling_naam = LPAD (o.prs_afdeling_naam, 6, '0'),
o.prs_afdeling_naam_parent =
LPAD (o.prs_afdeling_naam_parent, 6, '0');
volk_delete_organisatie (p_import_key);
fac_update_organisatie (p_import_key);
END volk_update_organisatie;
/
------ payload end ------