CSUN#70849 emailadressen importeren

svn path=/Database/trunk/; revision=55917
This commit is contained in:
Erik Groener
2022-05-17 08:58:45 +00:00
parent 6d093aacef
commit 082ca96c94

View File

@@ -416,9 +416,9 @@ AS
-- Als er GEEN fiatbedrag is meegegeven dan de LAATSTE fiatteur opleveren. De ondergrens is dan pondergrens (normaalgesproken het totale opdrachtbedrag).
IF pfiatbedrag >= 0
THEN
lgrens := pfiatbedrag; // De volgende fiatteur opleveren.
lgrens := pfiatbedrag; -- De volgende fiatteur opleveren.
ELSE
lgrens := pondergrens; // De laatste fiatteur opleveren.
lgrens := pondergrens; -- De laatste fiatteur opleveren.
END IF;
WHILE lteller <= 3 AND lfoundfiatteur = 0
@@ -603,7 +603,7 @@ AS
p_waarde IN VARCHAR2)
IS
v_count NUMBER;
v_niveau VARCHAR2 (1);
v_niveau prs_kenmerk.prs_kenmerk_niveau%TYPE;
BEGIN
-- niveau van prs_kenmerk ophalen, omdat deze ook in prs_kenmerklink wordt opgeslagen
SELECT prs_kenmerk_niveau
@@ -951,11 +951,11 @@ AS
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
BEGIN
// JGL: Ik zou graag een WHERE fac_import_key = p_import_key hieronder
// toevoegen zodat het script ook multi-user veilig is,
// Heel veel klant-specifieke imports(/aanvullingen) controleren
// echter niet op de fac_import_key en zouden flink de fout in gaan.
// Daarom vooralsnog hier toch maar alles verwijderen
-- JGL: Ik zou graag een WHERE fac_import_key = p_import_key hieronder
-- toevoegen zodat het script ook multi-user veilig is,
-- Heel veel klant-specifieke imports(/aanvullingen) controleren
-- echter niet op de fac_import_key en zouden flink de fout in gaan.
-- Daarom vooralsnog hier toch maar alles verwijderen
DELETE FROM fac_imp_perslid;
SELECT COALESCE (MAX (fac_imp_file_index), 0) + 1
@@ -1858,8 +1858,177 @@ AS
SELECT * FROM fac_imp_perslid;
recPersLid cPersLid%ROWTYPE;
BEGIN
-- SUBPROC
PROCEDURE upsertkenmerk_imp(p_perslid_key IN NUMBER, p_kenmerkwaarde IN VARCHAR2)
AS
ccount NUMBER;
v_kenmerk VARCHAR2(60);
v_sql VARCHAR2(1000);
v_cursor INTEGER;
v_rowsprocessed NUMBER DEFAULT 0;
v_waarde prs_kenmerklink.prs_kenmerklink_waarde%TYPE;
v_kenmerk_key prs_kenmerk.prs_kenmerk_key%TYPE;
v_kenmerk_type prs_kenmerk.prs_kenmerk_kenmerktype%TYPE;
v_kenmerk_niveau prs_kenmerk.prs_kenmerk_niveau%TYPE;
v_objectnaam fac_kenmerkdomein.fac_kenmerkdomein_objectnaam%TYPE;
v_kolomnaam fac_kenmerkdomein.fac_kenmerkdomein_kolomnaam%TYPE;
v_kolomtxt fac_kenmerkdomein.fac_kenmerkdomein_kolomtxt%TYPE;
v_kenmerklink_key prs_kenmerklink.prs_kenmerklink_key%TYPE;
BEGIN
IF p_kenmerkwaarde IS NOT NULL
THEN
v_errormsg := 'Fout bij bepalen kenmerk [' || p_kenmerkwaarde || ']';
v_kenmerk := SUBSTR(p_kenmerkwaarde, 1, INSTR(p_kenmerkwaarde, '=') - 1);
v_waarde := SUBSTR(p_kenmerkwaarde, INSTR(p_kenmerkwaarde, '=') + 1);
IF fac.safe_to_number (v_kenmerk) IS NULL
THEN
SELECT k.prs_kenmerk_key,
k.prs_kenmerk_kenmerktype,
k.prs_kenmerk_niveau
INTO v_kenmerk_key,
v_kenmerk_type,
v_kenmerk_niveau
FROM ( SELECT ks.prs_kenmerk_key,
ks.prs_kenmerk_kenmerktype,
ks.prs_kenmerk_niveau,
ks.prs_kenmerk_volgnr
FROM prs_v_aanwezigkenmerk ks
WHERE ks.prs_kenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S', 'X', 'B', 'V')
AND COALESCE(UPPER(ks.prs_kenmerk_omschrijving), ks.prs_kenmerk_upper) = UPPER(v_kenmerk)
ORDER BY ks.prs_kenmerk_volgnr
) k
WHERE ROWNUM = 1;
ELSE
SELECT k.prs_kenmerk_key,
k.prs_kenmerk_kenmerktype,
k.prs_kenmerk_niveau
INTO v_kenmerk_key,
v_kenmerk_type,
v_kenmerk_niveau
FROM prs_v_aanwezigkenmerk k
WHERE k.prs_kenmerk_key = v_kenmerk
AND k.prs_kenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S', 'X', 'B', 'V')
ORDER BY k.prs_kenmerk_volgnr;
END IF;
IF v_waarde IS NOT NULL
THEN
IF v_kenmerk_type IN ('R', 'S')
THEN
v_errormsg := 'Fout bij bepalen eigen tabel';
SELECT COUNT (*)
INTO ccount
FROM prs_kenmerk k,
fac_kenmerkdomein d
WHERE k.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key
AND d.fac_usrtab_key IS NOT NULL
AND k.prs_kenmerk_key = v_kenmerk_key;
v_errormsg := 'Fout bij bepalen nieuwe waarde [' || v_waarde || ']';
IF ccount = 1
THEN -- Eigen tabel
SELECT TO_CHAR(ud.fac_usrdata_key)
INTO v_waarde
FROM prs_kenmerk k,
fac_kenmerkdomein d,
fac_v_aanwezigusrdata ud
WHERE k.prs_kenmerk_key = v_kenmerk_key
AND k.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key
AND d.fac_usrtab_key = ud.fac_usrtab_key
AND UPPER(TRIM(ud.fac_usrdata_omschr)) = UPPER(v_waarde);
ELSE -- FACILITOR view/tabel
SELECT d.fac_kenmerkdomein_objectnaam,
d.fac_kenmerkdomein_kolomnaam,
d.fac_kenmerkdomein_kolomtxt
INTO v_objectnaam,
v_kolomnaam,
v_kolomtxt
FROM prs_kenmerk k,
fac_kenmerkdomein d
WHERE k.prs_kenmerk_key = v_kenmerk_key
AND k.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key
AND d.fac_usrtab_key IS NULL;
v_sql := 'SELECT MAX(' || v_kolomnaam || ')'
|| ' FROM ' || v_objectnaam
|| ' WHERE UPPER(TRIM(' || v_kolomtxt || ')) = UPPER(:pwaarde)';
v_cursor := DBMS_SQL.open_cursor;
DBMS_SQL.parse (v_cursor, v_sql, DBMS_SQL.native);
DBMS_SQL.BIND_VARIABLE(v_cursor, ':pwaarde', v_waarde);
DBMS_SQL.define_column(v_cursor, 1, v_waarde, 255);
v_rowsprocessed := DBMS_SQL.execute_and_fetch (v_cursor);
DBMS_SQL.column_value (v_cursor, 1, v_waarde);
DBMS_SQL.close_cursor(v_cursor);
END IF;
ELSE -- C(Karakter)/D(Datum)/N(Numeriek)/X(Bestandsnaam)
NULL; -- v_waarde := p_waarde;
END IF;
v_errormsg := 'Fout bij bepalen huidige waarde';
SELECT COUNT(*),
MAX(prs_kenmerklink_key)
INTO ccount,
v_kenmerklink_key
FROM prs_v_aanwezigkenmerklink
WHERE prs_link_key = p_perslid_key
AND prs_kenmerk_key = v_kenmerk_key;
IF v_kenmerk_type = 'N' -- Alleen voor numerieke waarden de decimale komma vervangen door punt.
THEN
v_waarde := REPLACE (v_waarde, ',', '.');
END IF;
IF ccount = 0
THEN
v_errormsg := 'Fout bij toevoegen waarde [' || v_waarde || ']'
|| ' voor perslid_key=' || TO_CHAR(p_perslid_key)
|| ', kenmerk_key=' || TO_CHAR(v_kenmerk_key)
|| ', link_niveau=' || v_kenmerk_niveau;
INSERT INTO prs_kenmerklink (prs_link_key,
prs_kenmerk_key,
prs_kenmerklink_niveau,
prs_kenmerklink_waarde)
VALUES (p_perslid_key,
v_kenmerk_key,
v_kenmerk_niveau,
v_waarde);
ELSE
v_errormsg := 'Fout bij bijwerken waarde [' || v_waarde || ']'
|| ' voor kenmerklink_key=' || TO_CHAR(v_kenmerklink_key);
UPDATE prs_kenmerklink
SET prs_kenmerklink_waarde = v_waarde
WHERE prs_kenmerklink_key = v_kenmerklink_key;
END IF;
ELSE
-- Verwijder kenmerken die al bestaan maar met de nieuwe import leeg zijn.
DELETE prs_kenmerklink
WHERE prs_kenmerk_key = v_kenmerk_key
AND prs_link_key = p_perslid_key;
END IF;
END IF;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR(SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'upsertkenmerk_imp');
END; -- upsertkenmerk_imp
BEGIN
v_count_update := 0;
v_count_tot := 0;
v_count_error := 0;
@@ -1899,12 +2068,11 @@ AS
v_count_error := v_count_error + 1;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg :=
' (ORACLE error number = <'
|| ORACLE_err_num
|| '> ORACLE error message = <'
|| ORACLE_err_mes
|| '>)';
v_errormsg := ' (ORACLE error number = <'
|| ORACLE_err_num
|| '> ORACLE error message = <'
|| ORACLE_err_mes
|| '>)';
fac.imp_writelog (p_import_key,
'E',
@@ -1943,11 +2111,8 @@ AS
v_errorhint := '';
v_count_tot := v_count_tot + 1;
v_aanduiding :=
recPersLid.prs_perslid_naam
|| '|'
|| recPersLid.prs_perslid_voornaam
|| '| ';
v_aanduiding := recPersLid.prs_perslid_naam || '|'
|| recPersLid.prs_perslid_voornaam || '| ';
v_errormsg := '';
v_errorhint := 'Fout bij bepalen functie';
@@ -2026,23 +2191,16 @@ AS
INTO v_perslid_key, v_count
FROM prs_perslid
WHERE prs_perslid_verwijder IS NULL
AND ( (p_sleutelkolom IS NULL
AND UPPER (prs_perslid_naam) =
UPPER (recPersLid.prs_perslid_naam)
AND UPPER (prs_perslid_voornaam) =
UPPER (recPersLid.prs_perslid_voornaam))
OR (UPPER (p_sleutelkolom) = 'NR'
AND UPPER (prs_perslid_nr) =
UPPER (recPersLid.prs_perslid_nr)
OR UPPER (p_sleutelkolom) = 'EMAIL'
AND UPPER (prs_perslid_email) =
UPPER (recPersLid.prs_perslid_email)
OR UPPER (p_sleutelkolom) = 'LOGIN'
AND UPPER (prs_perslid_oslogin) =
UPPER (recPersLid.prs_perslid_oslogin)
OR UPPER (p_sleutelkolom) = 'APIKEY'
AND UPPER (prs_perslid_apikey) =
UPPER (recPersLid.prs_perslid_apikey)));
AND ( ( p_sleutelkolom IS NULL
AND UPPER (prs_perslid_naam) = UPPER (recPersLid.prs_perslid_naam)
AND UPPER (prs_perslid_voornaam) = UPPER (recPersLid.prs_perslid_voornaam)
)
OR ( UPPER (p_sleutelkolom) = 'NR' AND UPPER (prs_perslid_nr) = UPPER (recPersLid.prs_perslid_nr)
OR UPPER (p_sleutelkolom) = 'EMAIL' AND UPPER (prs_perslid_email) = UPPER (recPersLid.prs_perslid_email)
OR UPPER (p_sleutelkolom) = 'LOGIN' AND UPPER (prs_perslid_oslogin) = UPPER (recPersLid.prs_perslid_oslogin)
OR UPPER (p_sleutelkolom) = 'APIKEY' AND UPPER (prs_perslid_apikey) = UPPER (recPersLid.prs_perslid_apikey)
)
);
IF (v_count = 0)
THEN
@@ -2093,10 +2251,8 @@ AS
SET prs_srtperslid_key = v_srtperslid_key,
prs_afdeling_key = v_afdeling_key,
prs_perslid_naam = v_prs_perslid_naam,
prs_perslid_voorletters =
recPersLid.prs_perslid_voorletters,
prs_perslid_tussenvoegsel =
v_prs_perslid_tussenvoegsel,
prs_perslid_voorletters = recPersLid.prs_perslid_voorletters,
prs_perslid_tussenvoegsel = v_prs_perslid_tussenvoegsel,
prs_perslid_voornaam = recPersLid.prs_perslid_voornaam,
prs_perslid_nr = recPersLid.prs_perslid_nr,
prs_perslid_dienstverband = recPersLid.prs_perslid_dienstverband,
@@ -2123,22 +2279,34 @@ AS
COMMIT; -- persoon in ieder geval toegevoegd.
v_aanduiding :=
recPersLid.prs_perslid_nr
|| '|'
|| recPersLid.prs_perslid_naam
|| '|'
|| recPersLid.prs_perslid_voornaam
|| '|'
|| recPersLid.alg_locatie_code
|| '|'
|| recPersLid.alg_gebouw_code
|| '|'
|| recPersLid.alg_verdieping_volgnr
|| '|'
|| recPersLid.alg_ruimte_nr
|| ' - ';
upsertkenmerk_imp(v_perslid_key, recPersLid.prs_kenmerk1);
upsertkenmerk_imp(v_perslid_key, recPersLid.prs_kenmerk2);
upsertkenmerk_imp(v_perslid_key, recPersLid.prs_kenmerk3);
upsertkenmerk_imp(v_perslid_key, recPersLid.prs_kenmerk4);
upsertkenmerk_imp(v_perslid_key, recPersLid.prs_kenmerk5);
upsertkenmerk_imp(v_perslid_key, recPersLid.prs_kenmerk6);
upsertkenmerk_imp(v_perslid_key, recPersLid.prs_kenmerk7);
upsertkenmerk_imp(v_perslid_key, recPersLid.prs_kenmerk8);
upsertkenmerk_imp(v_perslid_key, recPersLid.prs_kenmerk9);
upsertkenmerk_imp(v_perslid_key, recPersLid.prs_kenmerk10);
upsertkenmerk_imp(v_perslid_key, recPersLid.prs_kenmerk11);
upsertkenmerk_imp(v_perslid_key, recPersLid.prs_kenmerk12);
upsertkenmerk_imp(v_perslid_key, recPersLid.prs_kenmerk13);
upsertkenmerk_imp(v_perslid_key, recPersLid.prs_kenmerk14);
upsertkenmerk_imp(v_perslid_key, recPersLid.prs_kenmerk15);
upsertkenmerk_imp(v_perslid_key, recPersLid.prs_kenmerk16);
upsertkenmerk_imp(v_perslid_key, recPersLid.prs_kenmerk17);
upsertkenmerk_imp(v_perslid_key, recPersLid.prs_kenmerk18);
upsertkenmerk_imp(v_perslid_key, recPersLid.prs_kenmerk19);
upsertkenmerk_imp(v_perslid_key, recPersLid.prs_kenmerk20);
v_aanduiding := recPersLid.prs_perslid_nr || '|'
|| recPersLid.prs_perslid_naam || '|'
|| recPersLid.prs_perslid_voornaam || '|'
|| recPersLid.alg_locatie_code || '|'
|| recPersLid.alg_gebouw_code || '|'
|| recPersLid.alg_verdieping_volgnr || '|'
|| recPersLid.alg_ruimte_nr || ' - ';
v_locatie_key := NULL;
v_gebouw_key := NULL;