From 026a00d1e9f22a4918fd3c6b9fac6ddc01a40d9a Mon Sep 17 00:00:00 2001 From: Suzan Wiegerinck Date: Mon, 2 Oct 2023 15:14:05 +0000 Subject: [PATCH] VOLK#78884 Koppeling voor up to date houden afdelingen svn path=/Customer/trunk/; revision=62007 --- VOLK/volk.sql | 303 ++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 291 insertions(+), 12 deletions(-) diff --git a/VOLK/volk.sql b/VOLK/volk.sql index f41b88ba2..433c08f5a 100644 --- a/VOLK/volk.sql +++ b/VOLK/volk.sql @@ -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 ------