2316 lines
92 KiB
MySQL
2316 lines
92 KiB
MySQL
-- Script containing customer specific configuration sql statements for VGLD
|
||
-- (c) 2013 SG|facilitor bv
|
||
-- $Revision$
|
||
-- $Id$
|
||
--
|
||
-- Support: +31 53 4800700
|
||
|
||
set echo on
|
||
|
||
spool VGLD.lst
|
||
|
||
CREATE OR REPLACE PROCEDURE vgld_import_prs (
|
||
p_import_key IN NUMBER
|
||
)
|
||
IS
|
||
c_fielddelimitor VARCHAR2 (1) := ';';
|
||
-- LET OP: moet idem zijn als declaratie bij vgld_UPDATE_PRS
|
||
v_newline VARCHAR2 (1000); -- Input line
|
||
v_aanduiding VARCHAR2 (200);
|
||
v_errorhint VARCHAR2 (1000);
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
header_is_valid NUMBER := 0;
|
||
v_ongeldig NUMBER (1);
|
||
v_count_tot NUMBER (10);
|
||
v_count_import NUMBER (10);
|
||
v_count NUMBER;
|
||
v_pos NUMBER;
|
||
-- De importvelden:
|
||
v_prs_perslid_nr VARCHAR2 (256);
|
||
v_prs_perslid_voornaam VARCHAR2 (256);
|
||
v_prs_perslid_naam VARCHAR2 (256);
|
||
v_prs_perslid_tussenvoegsel VARCHAR2 (256);
|
||
v_prs_perslid_voorletters VARCHAR2 (256);
|
||
v_prs_afdeling_code VARCHAR2 (256);
|
||
v_prs_srtperslid_omschrijving VARCHAR2 (256);
|
||
v_prs_perslid_telefoonnr VARCHAR2 (256);
|
||
v_prs_perslid_mobiel VARCHAR2 (256);
|
||
v_prs_perslid_email VARCHAR2 (256);
|
||
v_prs_perslid_oslogin VARCHAR2 (256);
|
||
|
||
|
||
-- Overig:
|
||
v_alg_locatie_code VARCHAR2 (256);
|
||
v_alg_gebouw_code VARCHAR2 (256);
|
||
|
||
|
||
CURSOR c1
|
||
IS
|
||
SELECT *
|
||
FROM fac_imp_file
|
||
WHERE fac_import_key = p_import_key
|
||
ORDER BY fac_imp_file_index;
|
||
BEGIN
|
||
DELETE FROM vgld_imp_prs;
|
||
|
||
COMMIT;
|
||
|
||
v_count_tot := 0;
|
||
v_count_import := 0;
|
||
|
||
FOR rec1 IN c1
|
||
LOOP
|
||
BEGIN
|
||
v_newline := rec1.fac_imp_file_line;
|
||
v_aanduiding := '';
|
||
v_errorhint := 'Fout bij opvragen te importeren rij';
|
||
v_ongeldig := 0;
|
||
-- Lees alle veldwaarden
|
||
|
||
-- 01, 02, 03, 04 - Naam van medewerkers in de 1e 4 kolommen: voornaam, voorletters, tussenvoegsels, achternaam.
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_voornaam);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_voorletters);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_tussenvoegsel);
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_naam);
|
||
|
||
-- 05 - Peroneelsnr
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_nr);
|
||
|
||
-- 06 - Afdelingscode
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_afdeling_code);
|
||
|
||
-- 07 - Functieomschrijving van medewerker
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_srtperslid_omschrijving);
|
||
|
||
-- 08 - Email adres van medewerker
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_email);
|
||
|
||
-- 09 - Mobiel van medewerker
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_mobiel);
|
||
|
||
-- 10 - Telnr van medewerker
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_telefoonnr);
|
||
|
||
-- 11 - Usernaam/login
|
||
fac.imp_getfield (v_newline, c_fielddelimitor, v_prs_perslid_oslogin);
|
||
|
||
-------------------------------------------------------------------------
|
||
|
||
-- xx - Locatiecode werkplek van medewerker
|
||
--fac.imp_getfield (v_newline, c_fielddelimitor, v_alg_locatie_code);
|
||
v_alg_locatie_code := NULL;
|
||
|
||
-- xx - Gebouwcode werkplek van medewerker
|
||
--fac.imp_getfield (v_newline, c_fielddelimitor, v_alg_gebouw_code);
|
||
v_alg_gebouw_code := NULL;
|
||
-------------------------------------------------------------------------
|
||
|
||
|
||
|
||
--
|
||
v_aanduiding :=
|
||
'['
|
||
|| v_prs_perslid_nr
|
||
|| '|'
|
||
|| v_prs_perslid_naam
|
||
|| '] ';
|
||
|
||
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen
|
||
-- de juiste kolomkop. Ik controleer daarbij ALLE kolommen!
|
||
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
|
||
IF (header_is_valid = 0)
|
||
THEN
|
||
IF UPPER (v_prs_perslid_voornaam) = 'ROEPNAAM'
|
||
AND UPPER (v_prs_perslid_naam) = 'ACHTERNAAM'
|
||
AND UPPER (v_prs_perslid_nr) = 'PERSNR.'
|
||
AND UPPER (v_prs_afdeling_code) = 'AFDNR.'
|
||
AND UPPER (v_prs_srtperslid_omschrijving) = 'FUNCTIE'
|
||
AND UPPER (v_prs_perslid_email) = 'E-MAIL'
|
||
AND UPPER (v_prs_perslid_mobiel) = 'MOBILE'
|
||
AND UPPER (v_prs_perslid_telefoonnr) = 'TELEFOON'
|
||
AND UPPER (v_prs_perslid_oslogin) = 'LOGIN'
|
||
THEN
|
||
header_is_valid := 1;
|
||
END IF;
|
||
ELSE
|
||
v_count_tot := v_count_tot + 1;
|
||
-- Controleer alle veldwaarden
|
||
|
||
--
|
||
v_errorhint := 'Ongeldige naam';
|
||
v_prs_perslid_naam := TRIM (v_prs_perslid_naam);
|
||
|
||
IF LENGTH (v_prs_perslid_naam) > 30
|
||
THEN
|
||
v_prs_perslid_naam := SUBSTR (v_prs_perslid_naam, 1, 30);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Naam te lang',
|
||
'Naam wordt afgebroken tot ['
|
||
|| v_prs_perslid_naam
|
||
|| ']'
|
||
);
|
||
ELSE
|
||
IF (v_prs_perslid_naam IS NULL)
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog
|
||
(p_import_key,
|
||
'E',
|
||
v_aanduiding || 'Naam onbekend',
|
||
'Naam is verplicht; regel wordt overgeslagen!'
|
||
);
|
||
END IF;
|
||
END IF;
|
||
COMMIT;
|
||
|
||
--
|
||
|
||
v_errorhint := 'Ongeldig loginnaam';
|
||
v_prs_perslid_oslogin := TRIM (v_prs_perslid_oslogin);
|
||
|
||
IF LENGTH (v_prs_perslid_oslogin) > 30
|
||
THEN
|
||
v_prs_perslid_oslogin := SUBSTR (v_prs_perslid_oslogin, 1, 30);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Loginnaam te lang',
|
||
'Loginnaam wordt afgebroken tot ['
|
||
|| v_prs_perslid_oslogin
|
||
|| ']'
|
||
);
|
||
ELSE
|
||
IF (v_prs_perslid_oslogin IS NULL)
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog
|
||
(p_import_key,
|
||
'E',
|
||
v_aanduiding || 'Usernaam/login onbekend',
|
||
'Usernaam/login is verplicht; regel wordt overgeslagen!'
|
||
);
|
||
END IF;
|
||
END IF;
|
||
COMMIT;
|
||
|
||
--
|
||
v_errorhint := 'Ongeldig e-mailadres';
|
||
v_prs_perslid_email := TRIM (v_prs_perslid_email);
|
||
|
||
IF LENGTH (v_prs_perslid_email) > 200
|
||
THEN
|
||
v_prs_perslid_email := SUBSTR (v_prs_perslid_email, 1, 200);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'E-mailadres te lang',
|
||
'E-mailadres wordt afgebroken tot ['
|
||
|| v_prs_perslid_email
|
||
|| ']'
|
||
);
|
||
COMMIT;
|
||
END IF;
|
||
|
||
v_errorhint := 'Ongeldig personeelsnummer';
|
||
v_prs_perslid_nr := TRIM (v_prs_perslid_nr);
|
||
|
||
IF LENGTH (v_prs_perslid_nr) > 16
|
||
THEN
|
||
v_prs_perslid_nr := SUBSTR (v_prs_perslid_nr, 1, 16);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Personeelsnummer te lang',
|
||
'Personeelsnummer wordt afgebroken tot ['
|
||
|| v_prs_perslid_nr
|
||
|| ']'
|
||
);
|
||
END IF;
|
||
COMMIT;
|
||
|
||
|
||
--
|
||
v_errorhint := 'Ongeldig tussenvoegsel';
|
||
v_prs_perslid_tussenvoegsel := TRIM (v_prs_perslid_tussenvoegsel);
|
||
|
||
IF LENGTH (v_prs_perslid_tussenvoegsel) > 15
|
||
THEN
|
||
v_prs_perslid_tussenvoegsel :=
|
||
SUBSTR (v_prs_perslid_tussenvoegsel, 1, 15);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Tussenvoegsel te lang',
|
||
'Tussenvoegsel wordt afgebroken tot ['
|
||
|| v_prs_perslid_tussenvoegsel
|
||
|| ']'
|
||
);
|
||
COMMIT;
|
||
END IF;
|
||
|
||
--
|
||
v_errorhint := 'Ongeldige voorletters';
|
||
v_prs_perslid_voorletters := TRIM (v_prs_perslid_voorletters);
|
||
|
||
IF LENGTH (v_prs_perslid_voorletters) > 10
|
||
THEN
|
||
v_prs_perslid_voorletters :=
|
||
SUBSTR (v_prs_perslid_voorletters, 1, 10);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Voorletters te lang',
|
||
'Voorletters worden afgebroken tot ['
|
||
|| v_prs_perslid_voorletters
|
||
|| ']'
|
||
);
|
||
COMMIT;
|
||
END IF;
|
||
|
||
--
|
||
v_errorhint := 'Ongeldige voornaam';
|
||
v_prs_perslid_voornaam := TRIM (v_prs_perslid_voornaam);
|
||
|
||
IF LENGTH (v_prs_perslid_voornaam) > 30
|
||
THEN
|
||
v_prs_perslid_voornaam :=
|
||
SUBSTR (v_prs_perslid_voornaam, 1, 30);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Voornaam is te lang',
|
||
'Voornaam wordt afgebroken tot ['
|
||
|| v_prs_perslid_voornaam
|
||
|| ']'
|
||
);
|
||
END IF;
|
||
COMMIT;
|
||
|
||
|
||
|
||
|
||
|
||
v_errorhint := 'Ongeldige afdelingcode';
|
||
v_prs_afdeling_code := TRIM (v_prs_afdeling_code);
|
||
|
||
IF LENGTH (v_prs_afdeling_code) > 10
|
||
THEN
|
||
v_prs_afdeling_code := SUBSTR (v_prs_afdeling_code, 1, 10);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Afdelingscode te lang',
|
||
'Afdelingscode wordt afgebroken tot ['
|
||
|| v_prs_afdeling_code
|
||
|| ']'
|
||
);
|
||
ELSE
|
||
IF (v_prs_afdeling_code IS NULL)
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog
|
||
(p_import_key,
|
||
'E',
|
||
v_aanduiding || 'Afdelingscode onbekend',
|
||
'Afdelingscode is verplicht; regel wordt overgeslagen!'
|
||
);
|
||
END IF;
|
||
END IF;
|
||
COMMIT;
|
||
|
||
|
||
--
|
||
v_errorhint := 'Ongeldige functie';
|
||
v_prs_srtperslid_omschrijving := TRIM (v_prs_srtperslid_omschrijving);
|
||
|
||
IF LENGTH (v_prs_srtperslid_omschrijving) > 60
|
||
THEN
|
||
v_prs_srtperslid_omschrijving :=
|
||
SUBSTR (v_prs_srtperslid_omschrijving, 1, 60);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Functie te lang',
|
||
'Functie wordt afgebroken tot ['
|
||
|| v_prs_srtperslid_omschrijving
|
||
|| ']'
|
||
);
|
||
ELSE
|
||
IF (v_prs_srtperslid_omschrijving IS NULL)
|
||
THEN
|
||
v_ongeldig := 1;
|
||
fac.imp_writelog
|
||
(p_import_key,
|
||
'E',
|
||
v_aanduiding || 'Functie onbekend',
|
||
'Functie is verplicht; regel wordt overgeslagen!'
|
||
);
|
||
END IF;
|
||
END IF;
|
||
COMMIT;
|
||
|
||
--
|
||
v_errorhint := 'Ongeldige plaats/locatiecode';
|
||
v_alg_locatie_code := TRIM(v_alg_locatie_code);
|
||
|
||
IF LENGTH (v_alg_locatie_code) > 5
|
||
THEN
|
||
v_alg_locatie_code := SUBSTR (v_alg_locatie_code, 1, 5);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Locatiecode te lang',
|
||
'Locatiecode wordt afgebroken tot ['
|
||
|| v_alg_locatie_code
|
||
|| ']'
|
||
);
|
||
COMMIT;
|
||
END IF;
|
||
|
||
--
|
||
v_errorhint := 'Ongeldige plaats/gebouwcode';
|
||
v_alg_gebouw_code := TRIM(v_alg_gebouw_code);
|
||
|
||
IF LENGTH (v_alg_gebouw_code) > 10
|
||
THEN
|
||
v_alg_gebouw_code := SUBSTR (v_alg_gebouw_code, 1, 10);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Gebouwcode te lang',
|
||
'Gebouwcode wordt afgebroken tot ['
|
||
|| v_alg_gebouw_code
|
||
|| ']'
|
||
);
|
||
COMMIT;
|
||
END IF;
|
||
|
||
--
|
||
v_errorhint := 'Ongeldig mobiel nummer';
|
||
v_prs_perslid_mobiel := TRIM (v_prs_perslid_mobiel);
|
||
|
||
IF LENGTH (v_prs_perslid_mobiel) > 15
|
||
THEN
|
||
v_prs_perslid_mobiel := SUBSTR (v_prs_perslid_mobiel, 1, 15);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Mobiel nummer te lang',
|
||
'mobiel nummer wordt afgebroken tot ['
|
||
|| v_prs_perslid_mobiel
|
||
|| ']'
|
||
);
|
||
COMMIT;
|
||
END IF;
|
||
|
||
|
||
v_errorhint := 'Ongeldig telefoonnummer';
|
||
v_prs_perslid_telefoonnr := TRIM (v_prs_perslid_telefoonnr);
|
||
|
||
IF LENGTH (v_prs_perslid_telefoonnr) > 15
|
||
THEN
|
||
v_prs_perslid_telefoonnr :=
|
||
SUBSTR (v_prs_perslid_telefoonnr, 1, 15);
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
v_aanduiding || 'Telefoonnummer te lang',
|
||
'Telefoonnummer wordt afgebroken tot ['
|
||
|| v_prs_perslid_telefoonnr
|
||
|| ']'
|
||
);
|
||
COMMIT;
|
||
END IF;
|
||
|
||
COMMIT;
|
||
|
||
|
||
-- Insert geformatteerde import record
|
||
IF v_ongeldig = 0
|
||
THEN
|
||
BEGIN
|
||
v_errorhint :=
|
||
'Fout bij toevoegen regel aan importtabel VGLD_IMP_PRS';
|
||
|
||
INSERT INTO vgld_imp_prs
|
||
(prs_perslid_nr, prs_perslid_naam,
|
||
prs_perslid_tussenvoegsel,
|
||
prs_perslid_voorletters,
|
||
prs_perslid_voornaam,
|
||
prs_afdeling_code,
|
||
prs_srtperslid_omschrijving,
|
||
alg_locatie_code, alg_gebouw_code,
|
||
alg_verdieping_volgnr, alg_ruimte_nr,
|
||
prs_perslid_telefoonnr,
|
||
prs_perslid_mobiel,
|
||
prs_perslid_email,
|
||
prs_perslid_oslogin
|
||
)
|
||
VALUES (v_prs_perslid_nr, v_prs_perslid_naam,
|
||
v_prs_perslid_tussenvoegsel,
|
||
v_prs_perslid_voorletters,
|
||
v_prs_perslid_voornaam,
|
||
v_prs_afdeling_code,
|
||
v_prs_srtperslid_omschrijving,
|
||
v_alg_locatie_code, v_alg_gebouw_code,
|
||
NULL, NULL,
|
||
v_prs_perslid_telefoonnr,
|
||
v_prs_perslid_mobiel,
|
||
v_prs_perslid_email,
|
||
v_prs_perslid_oslogin
|
||
);
|
||
COMMIT;
|
||
v_count_import := v_count_import + 1;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
||
v_errormsg :=
|
||
v_errorhint
|
||
|| ' ORACLE (error '
|
||
|| oracle_err_num
|
||
|| '/'
|
||
|| oracle_err_mes
|
||
|| ')';
|
||
fac.imp_writelog
|
||
(p_import_key,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
'Ingelezen regel kan niet worden weggeschreven!'
|
||
);
|
||
COMMIT;
|
||
END;
|
||
END IF;
|
||
END IF;
|
||
END;
|
||
END LOOP;
|
||
|
||
IF (header_is_valid = 0)
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
'Ongeldig importbestand',
|
||
'Geen header of header niet volgens specificatie!'
|
||
);
|
||
ELSE
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Persoon: aantal ingelezen regels: '
|
||
|| TO_CHAR (v_count_tot),
|
||
''
|
||
);
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Persoon: 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 :=
|
||
'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
v_errorhint
|
||
);
|
||
COMMIT;
|
||
END vgld_import_prs;
|
||
/
|
||
|
||
CREATE OR REPLACE PROCEDURE vgld_update_prs (
|
||
p_import_key IN NUMBER
|
||
)
|
||
IS
|
||
-- LET OP: moet idem zijn als declaratie bij VGLD_IMPORT_PRS
|
||
c_persoon_inactief VARCHAR2 (30) := 'INACTIEF: ';
|
||
-- Maximaal percentage aan nieuwe medewerkers tov. actieve medewerkers met een nummer
|
||
c_max_delta_percentage NUMBER (10) := 20;
|
||
-- Ruimte waar personen in geplaatst worden (indien nog geen ruimte in opgegeven gebouw)
|
||
c_ruimte_nr VARCHAR2 (10) := '000';
|
||
-- Groep waar personen in geplaatst worden (indien nog geen groep)
|
||
|
||
c_key_default_rol NUMBER(10) := 1;
|
||
|
||
v_aanduiding VARCHAR2 (200);
|
||
v_errorhint VARCHAR2 (1000);
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_count_prs_actual NUMBER (10);
|
||
v_count_prs_import NUMBER (10); -- Matching actual persons!
|
||
v_count_tot NUMBER (10);
|
||
v_count_error NUMBER (10);
|
||
v_count NUMBER (10);
|
||
--
|
||
v_perslid_key NUMBER (10);
|
||
v_afdeling_key NUMBER (10);
|
||
|
||
v_srtperslid_key NUMBER (10);
|
||
v_oslogin VARCHAR2 (30);
|
||
v_wachtwoord VARCHAR2 (30);
|
||
v_locatie_key NUMBER (10);
|
||
v_gebouw_key NUMBER (10);
|
||
v_verdieping_key NUMBER (10);
|
||
v_ruimte_key NUMBER (10);
|
||
v_wp_key NUMBER (10);
|
||
v_wp_volgnr NUMBER (3);
|
||
v_wp_oms VARCHAR2 (30);
|
||
v_groep_defaultnaam VARCHAR2 (30);
|
||
|
||
-- Let op! Met eindatum zijn personen die niet meer in dienst zijn.
|
||
-- Dubbele nummers? Dan wordt iemand mogelijk niet verwijderd/INACTIEF!
|
||
CURSOR cdelprs
|
||
IS
|
||
SELECT p.prs_perslid_key, p.prs_perslid_nr, p.prs_perslid_naam,
|
||
p.prs_perslid_voornaam
|
||
FROM prs_v_aanwezigperslid p
|
||
WHERE p.prs_perslid_nr IS NOT NULL
|
||
AND NOT EXISTS (
|
||
SELECT 1
|
||
FROM vgld_imp_prs ip
|
||
WHERE ip.prs_perslid_nr = p.prs_perslid_nr);
|
||
|
||
|
||
CURSOR csperslid
|
||
IS
|
||
SELECT prs_srtperslid_omschrijving
|
||
FROM vgld_imp_prs
|
||
GROUP BY prs_srtperslid_omschrijving;
|
||
|
||
|
||
CURSOR cprsafd
|
||
IS
|
||
SELECT UPPER(prs_afdeling_code) prs_afdeling_code, MIN(prs_afdeling_naam) prs_afdeling_naam
|
||
FROM vgld_imp_prs
|
||
GROUP BY UPPER (prs_afdeling_code);
|
||
|
||
CURSOR cperslid
|
||
IS
|
||
SELECT *
|
||
FROM vgld_imp_prs;
|
||
|
||
CURSOR cwp
|
||
IS
|
||
SELECT p.*, ip.alg_locatie_code, ip.alg_gebouw_code
|
||
FROM vgld_imp_prs ip, prs_v_aanwezigperslid p
|
||
WHERE ip.alg_locatie_code IS NOT NULL
|
||
AND ip.alg_gebouw_code IS NOT NULL
|
||
AND UPPER (ip.prs_perslid_nr) = UPPER (p.prs_perslid_nr);
|
||
|
||
-- Alle actieve personen met personeelsnummer (ie. de import-doelgroep) zonder een werkplek
|
||
CURSOR cnowp
|
||
IS
|
||
SELECT p.prs_perslid_key, p.prs_perslid_nr, p.prs_perslid_naam,
|
||
p.prs_perslid_voornaam
|
||
FROM prs_v_aanwezigperslid p
|
||
WHERE p.prs_perslid_nr IS NOT NULL
|
||
AND p.prs_perslid_naam NOT LIKE c_persoon_inactief || '%'
|
||
AND NOT EXISTS (SELECT 1
|
||
FROM prs_perslidwerkplek pw
|
||
WHERE pw.prs_perslid_key = p.prs_perslid_key);
|
||
|
||
-- Alle aanwezige personen met personeelsnummer (ie. de import-doelgroep) niet in een groep
|
||
CURSOR cnogroup
|
||
IS
|
||
SELECT p.prs_perslid_key, p.prs_perslid_nr, p.prs_perslid_naam,
|
||
p.prs_perslid_voornaam
|
||
FROM prs_v_aanwezigperslid p
|
||
WHERE p.prs_perslid_nr IS NOT NULL
|
||
AND NOT EXISTS (SELECT 1
|
||
FROM fac_gebruikersgroep g
|
||
WHERE g.prs_perslid_key = p.prs_perslid_key);
|
||
|
||
|
||
BEGIN
|
||
SELECT DECODE (COUNT (*), 0, 1, COUNT (*))
|
||
INTO v_count_prs_actual
|
||
FROM prs_perslid
|
||
WHERE prs_perslid_verwijder IS NULL AND prs_perslid_nr IS NOT NULL;
|
||
|
||
SELECT DECODE (COUNT (*), 0, 1, COUNT (*))
|
||
INTO v_count_prs_import
|
||
FROM prs_perslid p, vgld_imp_prs ip
|
||
WHERE p.prs_perslid_nr IS NOT NULL
|
||
AND p.prs_perslid_verwijder IS NULL
|
||
AND p.prs_perslid_nr = ip.prs_perslid_nr;
|
||
|
||
IF ( (TRUNC ((v_count_prs_import / v_count_prs_actual) * 100) >=
|
||
(100 - c_max_delta_percentage
|
||
)
|
||
)
|
||
)
|
||
THEN
|
||
-- Geldig importbestand wat betreft aantal personen
|
||
FOR recdelprs IN cdelprs
|
||
LOOP
|
||
BEGIN
|
||
-- Heeft persoon actuele/toekomstige verplichtingen?
|
||
SELECT COUNT (*)
|
||
INTO v_count
|
||
FROM prs_perslid p, prs_v_verplichting_keys r
|
||
WHERE p.prs_perslid_key = r.prs_perslid_key
|
||
AND p.prs_perslid_key = recdelprs.prs_perslid_key;
|
||
|
||
IF (v_count = 0)
|
||
THEN
|
||
v_errorhint := 'Fout bij verwijderen persoon';
|
||
|
||
UPDATE prs_perslid
|
||
SET prs_perslid_verwijder = SYSDATE
|
||
WHERE prs_perslid_key = recdelprs.prs_perslid_key;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'I',
|
||
'Persoon met nummer ['
|
||
|| recdelprs.prs_perslid_nr
|
||
|| '] en naam ['
|
||
|| recdelprs.prs_perslid_naam
|
||
|| ', '
|
||
|| recdelprs.prs_perslid_voornaam
|
||
|| '] is verwijderd',
|
||
'Persoon is verwijderd'
|
||
);
|
||
COMMIT;
|
||
ELSE
|
||
-- Staat persoon INACTIEF?
|
||
SELECT COUNT (*)
|
||
INTO v_count
|
||
FROM prs_perslid p
|
||
WHERE p.prs_perslid_naam LIKE c_persoon_inactief || '%'
|
||
AND p.prs_perslid_key = recdelprs.prs_perslid_key;
|
||
|
||
IF (v_count = 0)
|
||
THEN
|
||
v_errorhint := 'Fout bij INACTIEF zetten persoon';
|
||
|
||
-- Persoon INACTIEF zetten (update naam + reset oslogin)
|
||
UPDATE prs_perslid
|
||
SET prs_perslid_naam =
|
||
SUBSTR (c_persoon_inactief || prs_perslid_naam,
|
||
1,
|
||
30
|
||
),
|
||
prs_perslid_oslogin = NULL
|
||
WHERE prs_perslid_key = recdelprs.prs_perslid_key;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'I',
|
||
'Persoon met nummer ['
|
||
|| recdelprs.prs_perslid_nr
|
||
|| '] en naam ['
|
||
|| recdelprs.prs_perslid_naam
|
||
|| ', '
|
||
|| recdelprs.prs_perslid_voornaam
|
||
|| '] is INACTIEF gezet',
|
||
'Persoon is INACTIEF gezet'
|
||
);
|
||
ELSE
|
||
v_errorhint := 'Fout bij INACTIEF maken persoon';
|
||
|
||
-- Persoon INACTIEF maken (reset oslogin; indien handmatig INACTIEF gezet)
|
||
UPDATE prs_perslid
|
||
SET prs_perslid_oslogin = NULL
|
||
WHERE prs_perslid_naam LIKE c_persoon_inactief || '%'
|
||
AND prs_perslid_oslogin IS NOT NULL;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'I',
|
||
'Persoon met nummer ['
|
||
|| recdelprs.prs_perslid_nr
|
||
|| '] en naam ['
|
||
|| recdelprs.prs_perslid_naam
|
||
|| ', '
|
||
|| recdelprs.prs_perslid_voornaam
|
||
|| '] is INACTIEF gemaakt',
|
||
'Persoon is INACTIEF gemaakt'
|
||
);
|
||
END IF;
|
||
COMMIT;
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg :=
|
||
'OTHERS (error '
|
||
|| oracle_err_num
|
||
|| '/'
|
||
|| oracle_err_mes
|
||
|| ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_errormsg,
|
||
v_errorhint
|
||
);
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
v_count_tot := 0;
|
||
v_count_error := 0;
|
||
|
||
FOR recsperslid IN csperslid
|
||
LOOP
|
||
BEGIN
|
||
v_count_tot := v_count_tot + 1;
|
||
v_aanduiding := recsperslid.prs_srtperslid_omschrijving || ' - ';
|
||
v_errorhint := 'Fout bij bepalen functie';
|
||
|
||
SELECT COUNT (*)
|
||
INTO v_count
|
||
FROM prs_srtperslid
|
||
WHERE UPPER (prs_srtperslid_omschrijving) =
|
||
UPPER (recsperslid.prs_srtperslid_omschrijving)
|
||
AND prs_srtperslid_verwijder IS NULL;
|
||
|
||
IF (v_count = 0)
|
||
THEN
|
||
v_errorhint := 'Fout bij toevoegen functie';
|
||
|
||
INSERT INTO prs_srtperslid (prs_srtperslid_omschrijving)
|
||
VALUES (recsperslid.prs_srtperslid_omschrijving);
|
||
COMMIT;
|
||
END IF;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
v_count_error := v_count_error + 1;
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg :=
|
||
'OTHERS (error '
|
||
|| oracle_err_num
|
||
|| '/'
|
||
|| oracle_err_mes
|
||
|| ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
v_errorhint
|
||
);
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Functie: verwerkte regels zonder foutmelding: '
|
||
|| TO_CHAR (v_count_tot - v_count_error),
|
||
''
|
||
);
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Functie: verwerkte regels met foutmelding: '
|
||
|| TO_CHAR (v_count_error),
|
||
''
|
||
);
|
||
|
||
COMMIT;
|
||
|
||
v_count_tot := 0;
|
||
v_count_error := 0;
|
||
|
||
FOR recperslid IN cperslid
|
||
LOOP
|
||
BEGIN
|
||
v_count_tot := v_count_tot + 1;
|
||
v_aanduiding :=
|
||
recperslid.prs_perslid_nr
|
||
|| '|'
|
||
|| recperslid.prs_perslid_naam
|
||
|| '|'
|
||
|| recperslid.prs_perslid_voornaam
|
||
|| ' - ';
|
||
v_errorhint :=
|
||
'Fout bij bepalen functie ['
|
||
|| recperslid.prs_srtperslid_omschrijving
|
||
|| ']';
|
||
|
||
SELECT prs_srtperslid_key
|
||
INTO v_srtperslid_key
|
||
FROM prs_srtperslid
|
||
WHERE prs_srtperslid_verwijder IS NULL
|
||
AND UPPER (prs_srtperslid_omschrijving) =
|
||
UPPER (recperslid.prs_srtperslid_omschrijving);
|
||
|
||
v_errorhint :=
|
||
'Fout bij bepalen afdeling ['
|
||
|| recperslid.prs_afdeling_naam
|
||
|| ']';
|
||
|
||
SELECT prs_afdeling_key
|
||
INTO v_afdeling_key
|
||
FROM prs_afdeling
|
||
WHERE prs_afdeling_verwijder IS NULL
|
||
AND UPPER (prs_afdeling_naam) = UPPER (recperslid.prs_afdeling_code);
|
||
|
||
|
||
v_errorhint := 'Fout bij bepalen persoon';
|
||
|
||
SELECT COUNT (*), MAX (prs_perslid_key)
|
||
INTO v_count, v_perslid_key
|
||
FROM prs_perslid
|
||
WHERE prs_perslid_verwijder IS NULL
|
||
AND UPPER (prs_perslid_nr) = UPPER (recperslid.prs_perslid_nr);
|
||
|
||
|
||
IF (v_count = 0)
|
||
THEN
|
||
v_errorhint := 'Fout bij toevoegen persoon';
|
||
-- Nieuwe persoon uit importbestand, wordt toegevoegd in Facilitor.
|
||
INSERT INTO prs_perslid
|
||
(prs_perslid_module, prs_srtperslid_key,
|
||
prs_afdeling_key, prs_perslid_naam,
|
||
prs_perslid_voorletters,
|
||
prs_perslid_tussenvoegsel,
|
||
prs_perslid_voornaam,
|
||
prs_perslid_telefoonnr,
|
||
prs_perslid_mobiel,
|
||
prs_perslid_email,
|
||
prs_perslid_nr,
|
||
prs_perslid_oslogin
|
||
)
|
||
VALUES ('PRS', v_srtperslid_key,
|
||
v_afdeling_key, recperslid.prs_perslid_naam,
|
||
recperslid.prs_perslid_voorletters,
|
||
recperslid.prs_perslid_tussenvoegsel,
|
||
recperslid.prs_perslid_voornaam,
|
||
recperslid.prs_perslid_telefoonnr,
|
||
recperslid.prs_perslid_mobiel,
|
||
recperslid.prs_perslid_email,
|
||
recperslid.prs_perslid_nr,
|
||
recperslid.prs_perslid_oslogin
|
||
);
|
||
COMMIT;
|
||
ELSE
|
||
|
||
v_errorhint := 'Fout bij wijzigen persoon';
|
||
|
||
-- Functie, Afdeling altijd bijwerken
|
||
-- Voorletters, Naam, Tussenvoegsels, Voornaam alleen indien gevuld wordt aangeboden, anders laten staan wat in DB stond.
|
||
-- Telefoonnr: alleen bijwerken indien uit AD-dump gevuld, anders niet bijwerken (dus gewoon laten staan zoals in Facilitor was gereigistreerd).
|
||
-- E-mail: alleen bijwerken indien uit AD-dump gevuld, anders niet bijwerken (dus gewoon laten staan zoals in Facilitor was gereigistreerd).
|
||
-- Personeelsnr: alleen bijwerken indien uit AD-dump gevuld, anders niet bijwerken (dus gewoon laten staan zoals in Facilitor was gereigistreerd).
|
||
-- Login: alleen bijwerken indien uit AD-dump gevuld, anders niet bijwerken (dus gewoon laten staan zoals in Facilitor was gereigistreerd).
|
||
|
||
UPDATE prs_perslid
|
||
SET prs_srtperslid_key = v_srtperslid_key,
|
||
prs_afdeling_key = v_afdeling_key,
|
||
prs_perslid_naam = COALESCE(recperslid.prs_perslid_naam,prs_perslid_naam),
|
||
prs_perslid_voorletters = COALESCE(recperslid.prs_perslid_voorletters,prs_perslid_voorletters),
|
||
prs_perslid_tussenvoegsel = COALESCE(recperslid.prs_perslid_tussenvoegsel,prs_perslid_tussenvoegsel),
|
||
prs_perslid_voornaam = COALESCE(recperslid.prs_perslid_voornaam,prs_perslid_voornaam),
|
||
-- VGLD#31908 prs_perslid_telefoonnr = COALESCE (recperslid.prs_perslid_telefoonnr, prs_perslid_telefoonnr),
|
||
-- VGLD#31908 prs_perslid_mobiel = COALESCE (recperslid.prs_perslid_mobiel, prs_perslid_mobiel),
|
||
prs_perslid_email = COALESCE (recperslid.prs_perslid_email, prs_perslid_email),
|
||
prs_perslid_nr = COALESCE (recperslid.prs_perslid_nr, prs_perslid_nr),
|
||
prs_perslid_oslogin = COALESCE (recperslid.prs_perslid_oslogin, prs_perslid_oslogin)
|
||
WHERE prs_perslid_key = v_perslid_key;
|
||
COMMIT;
|
||
END IF;
|
||
|
||
|
||
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
v_count_error := v_count_error + 1;
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg :=
|
||
'OTHERS (error '
|
||
|| oracle_err_num
|
||
|| '/'
|
||
|| oracle_err_mes
|
||
|| ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
v_errorhint
|
||
);
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Persoon: verwerkte regels zonder foutmelding: '
|
||
|| TO_CHAR (v_count_tot - v_count_error),
|
||
''
|
||
);
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Persoon: verwerkte regels met foutmelding: '
|
||
|| TO_CHAR (v_count_error),
|
||
''
|
||
);
|
||
COMMIT;
|
||
|
||
v_count_tot := 0;
|
||
v_count_error := 0;
|
||
|
||
FOR recwp IN cwp
|
||
LOOP
|
||
BEGIN
|
||
v_count_tot := v_count_tot + 1;
|
||
v_aanduiding :=
|
||
recwp.prs_perslid_nr
|
||
|| '|'
|
||
|| recwp.prs_perslid_naam
|
||
|| '|'
|
||
|| recwp.prs_perslid_voornaam
|
||
|| '|'
|
||
|| recwp.alg_locatie_code
|
||
|| '|'
|
||
|| recwp.alg_gebouw_code
|
||
|| ' - ';
|
||
v_errorhint := 'Fout bij bepalen persoon';
|
||
|
||
SELECT prs_perslid_key
|
||
INTO v_perslid_key
|
||
FROM prs_v_aanwezigperslid
|
||
WHERE UPPER (prs_perslid_nr) = UPPER (recwp.prs_perslid_nr);
|
||
|
||
v_errorhint := 'Fout bij bepalen locatie';
|
||
|
||
SELECT alg_locatie_key
|
||
INTO v_locatie_key
|
||
FROM alg_v_aanweziglocatie
|
||
WHERE UPPER (alg_locatie_code) = UPPER (recwp.alg_locatie_code);
|
||
|
||
v_errorhint := 'Fout bij bepalen gebouw';
|
||
|
||
SELECT alg_gebouw_key
|
||
INTO v_gebouw_key
|
||
FROM alg_v_aanweziggebouw
|
||
WHERE alg_locatie_key = v_locatie_key
|
||
AND UPPER (alg_gebouw_code) = UPPER (recwp.alg_gebouw_code);
|
||
|
||
v_errorhint := 'Fout bij bepalen verdieping';
|
||
|
||
SELECT alg_verdieping_key
|
||
INTO v_verdieping_key
|
||
FROM alg_v_aanwezigverdieping
|
||
WHERE alg_gebouw_key = v_gebouw_key
|
||
AND alg_verdieping_volgnr = (SELECT MIN (v.alg_verdieping_volgnr)
|
||
FROM alg_verdieping v
|
||
WHERE v.alg_gebouw_key = v_gebouw_key
|
||
AND v.alg_verdieping_volgnr >= 0);
|
||
|
||
v_errorhint :=
|
||
'Fout bij bepalen of persoon in gebouw een werkplek heeft';
|
||
|
||
SELECT COUNT (*)
|
||
INTO v_count
|
||
FROM prs_perslidwerkplek pw,
|
||
prs_werkplek wp,
|
||
alg_ruimte r,
|
||
alg_verdieping v
|
||
WHERE pw.prs_perslid_key = v_perslid_key
|
||
AND pw.prs_werkplek_key = wp.prs_werkplek_key
|
||
AND wp.prs_alg_ruimte_key = r.alg_ruimte_key
|
||
AND r.alg_verdieping_key = v.alg_verdieping_key
|
||
AND v.alg_gebouw_key = v_gebouw_key;
|
||
|
||
-- v_count=0 -> persoon verhuist naar/krijgt wp in gebouw.
|
||
IF (v_count = 0)
|
||
THEN
|
||
v_errorhint := 'Fout bij bepalen ruimte';
|
||
|
||
SELECT COUNT (*)
|
||
INTO v_count
|
||
FROM alg_v_aanwezigruimte r
|
||
WHERE r.alg_verdieping_key = v_verdieping_key
|
||
AND r.alg_ruimte_nr = c_ruimte_nr;
|
||
|
||
-- v_count=0 -> ruimte '000' bestaat nog niet.
|
||
IF (v_count = 0)
|
||
THEN
|
||
v_errorhint := 'Fout bij toevoegen ruimte';
|
||
|
||
INSERT INTO alg_ruimte
|
||
(alg_verdieping_key, alg_srtruimte_key,
|
||
alg_ruimte_nr
|
||
)
|
||
VALUES (v_verdieping_key, 21, -- facilitaire ruimte
|
||
c_ruimte_nr
|
||
);
|
||
COMMIT;
|
||
END IF;
|
||
|
||
v_errorhint := 'Fout bij bepalen ruimte';
|
||
|
||
SELECT alg_ruimte_key
|
||
INTO v_ruimte_key
|
||
FROM alg_v_aanwezigruimte r
|
||
WHERE r.alg_verdieping_key = v_verdieping_key
|
||
AND r.alg_ruimte_nr = c_ruimte_nr;
|
||
|
||
v_errorhint := 'Fout bij bepalen vrije werkplek';
|
||
|
||
SELECT COUNT (w.prs_werkplek_key)
|
||
INTO v_count
|
||
FROM prs_werkplek w
|
||
WHERE w.prs_alg_ruimte_key = v_ruimte_key
|
||
AND NOT EXISTS (
|
||
SELECT 1
|
||
FROM prs_perslidwerkplek pw
|
||
WHERE pw.prs_werkplek_key =
|
||
w.prs_werkplek_key);
|
||
|
||
IF (v_count > 0)
|
||
THEN
|
||
SELECT MIN (w.prs_werkplek_key)
|
||
INTO v_wp_key
|
||
FROM prs_werkplek w
|
||
WHERE w.prs_alg_ruimte_key = v_ruimte_key
|
||
AND NOT EXISTS (
|
||
SELECT 1
|
||
FROM prs_perslidwerkplek pw
|
||
WHERE pw.prs_werkplek_key =
|
||
w.prs_werkplek_key);
|
||
|
||
v_errorhint :=
|
||
'Fout bij koppelen persoon aan vrije werkplek';
|
||
|
||
INSERT INTO prs_perslidwerkplek
|
||
(prs_perslid_key, prs_werkplek_key,
|
||
prs_perslidwerkplek_bezetting
|
||
)
|
||
VALUES (v_perslid_key, v_wp_key,
|
||
100
|
||
);
|
||
COMMIT;
|
||
ELSE
|
||
v_errorhint := 'Fout bij bepalen nieuwe werkplek';
|
||
|
||
SELECT prs_s_prs_werkplek_key.NEXTVAL
|
||
INTO v_wp_key
|
||
FROM DUAL;
|
||
|
||
SELECT COALESCE (MAX (w.prs_werkplek_volgnr), 0) + 1
|
||
INTO v_wp_volgnr
|
||
FROM prs_werkplek w
|
||
WHERE w.prs_alg_ruimte_key = v_ruimte_key;
|
||
|
||
v_wp_oms := c_ruimte_nr || '/' || TO_CHAR (v_wp_volgnr);
|
||
|
||
v_errorhint := 'Fout bij aanmaken nieuwe werkplek';
|
||
|
||
INSERT INTO prs_werkplek
|
||
(prs_werkplek_key, prs_werkplek_module,
|
||
prs_werkplek_volgnr,
|
||
prs_werkplek_omschrijving, prs_alg_ruimte_key
|
||
)
|
||
VALUES (v_wp_key, 'PRR',
|
||
v_wp_volgnr,
|
||
v_wp_oms, v_ruimte_key
|
||
);
|
||
|
||
v_errorhint :=
|
||
'Fout bij koppelen persoon aan nieuwe werkplek';
|
||
|
||
INSERT INTO prs_perslidwerkplek
|
||
(prs_perslid_key, prs_werkplek_key,
|
||
prs_perslidwerkplek_bezetting
|
||
)
|
||
VALUES (v_perslid_key, v_wp_key,
|
||
100
|
||
);
|
||
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);
|
||
v_errormsg :=
|
||
'OTHERS (error '
|
||
|| oracle_err_num
|
||
|| '/'
|
||
|| oracle_err_mes
|
||
|| ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_aanduiding || v_errormsg,
|
||
v_errorhint
|
||
);
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Werkplek: verwerkte regels zonder foutmelding: '
|
||
|| TO_CHAR (v_count_tot - v_count_error),
|
||
''
|
||
);
|
||
fac.imp_writelog (p_import_key,
|
||
'S',
|
||
'Werkplek: verwerkte regels met foutmelding: '
|
||
|| TO_CHAR (v_count_error),
|
||
''
|
||
);
|
||
COMMIT;
|
||
|
||
FOR recnowp IN cnowp
|
||
LOOP
|
||
BEGIN
|
||
fac.imp_writelog (p_import_key,
|
||
'I',
|
||
'Persoon met nummer ['
|
||
|| recnowp.prs_perslid_nr
|
||
|| '] en naam ['
|
||
|| recnowp.prs_perslid_naam
|
||
|| ', '
|
||
|| recnowp.prs_perslid_voornaam
|
||
|| '] heeft geen werkplek',
|
||
'Geen werkplek'
|
||
);
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg :=
|
||
'OTHERS (error '
|
||
|| oracle_err_num
|
||
|| '/'
|
||
|| oracle_err_mes
|
||
|| ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_errormsg,
|
||
v_errorhint
|
||
);
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
-- Iedereen krijgt _default-rol die nog geen groep heeft.
|
||
FOR recnogroup IN cnogroup
|
||
LOOP
|
||
BEGIN
|
||
v_aanduiding :=
|
||
recnogroup.prs_perslid_nr
|
||
|| '|'
|
||
|| recnogroup.prs_perslid_naam
|
||
|| '|'
|
||
|| recnogroup.prs_perslid_voornaam
|
||
|| ' - ';
|
||
v_errorhint := 'Fout bij bepalen groep met key [' || c_key_default_rol || ']';
|
||
|
||
SELECT fac_groep_upper
|
||
INTO v_groep_defaultnaam
|
||
FROM fac_groep
|
||
WHERE fac_groep_key = c_key_default_rol;
|
||
|
||
|
||
v_errorhint :=
|
||
'Fout bij koppelen persoon aan groep met key [' || c_key_default_rol || ']';
|
||
|
||
INSERT INTO fac_gebruikersgroep
|
||
(fac_groep_key, prs_perslid_key
|
||
)
|
||
VALUES (c_key_default_rol, recnogroup.prs_perslid_key
|
||
);
|
||
COMMIT;
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg :=
|
||
'OTHERS (error '
|
||
|| oracle_err_num
|
||
|| '/'
|
||
|| oracle_err_mes
|
||
|| ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_errormsg,
|
||
v_errorhint
|
||
);
|
||
COMMIT;
|
||
END;
|
||
END LOOP;
|
||
|
||
|
||
ELSE
|
||
fac.imp_writelog
|
||
(p_import_key,
|
||
'E',
|
||
'Verschil tussen het actuele aantal en het te importeren aantal personen te groot; zie specificatie!',
|
||
'- max. verschilpercentage = ['
|
||
|| TO_CHAR (c_max_delta_percentage)
|
||
|| '%] <br> '
|
||
|| '- #personen importbestand = ['
|
||
|| TO_CHAR (v_count_prs_import)
|
||
|| '] <br> '
|
||
|| '- #personen Facilitor = ['
|
||
|| TO_CHAR (v_count_prs_actual)
|
||
|| ']'
|
||
);
|
||
COMMIT;
|
||
END IF; -- Geldig importbestand wat betreft aantal inserts
|
||
COMMIT;
|
||
END vgld_update_prs;
|
||
/
|
||
|
||
|
||
|
||
|
||
|
||
------
|
||
------ FACTUUREXPORT / KOPPELING EXACT
|
||
------
|
||
|
||
-- View waarin bij de factuur met fin_factuur_key het bijbehorende factuurbestand (PDF) geldt.
|
||
CREATE OR REPLACE VIEW vgld_v_factuur_bestand (fin_factuur_key, fin_factuur_bestand)
|
||
AS
|
||
SELECT kf.fin_factuur_key, kf.fin_kenmerkfactuur_waarde
|
||
FROM fin_kenmerkfactuur kf
|
||
WHERE kf.fin_kenmerkfactuur_verwijder IS NULL
|
||
AND fin_kenmerk_key = 1;
|
||
|
||
-- View waarin bij de factuur met fin_factuur_key het bijbehorende betaalreferentie of betaalkenmerk geldt.
|
||
CREATE OR REPLACE VIEW vgld_v_factuur_betaalref (fin_factuur_key, fin_factuur_betaalref)
|
||
AS
|
||
SELECT kf.fin_factuur_key, kf.fin_kenmerkfactuur_waarde
|
||
FROM fin_kenmerkfactuur kf
|
||
WHERE kf.fin_kenmerkfactuur_verwijder IS NULL
|
||
AND fin_kenmerk_key = 2;
|
||
|
||
-- View waarin bij de factuur met fin_factuur_key de omschrijving van de kopregel (naar Exact) wordt bepaald.
|
||
CREATE OR REPLACE VIEW vgld_v_factuur_omschr_kopregel (fin_factuur_key, fin_factuur_omschr_kopregel)
|
||
AS
|
||
SELECT kf.fin_factuur_key, kf.fin_kenmerkfactuur_waarde
|
||
FROM fin_kenmerkfactuur kf
|
||
WHERE kf.fin_kenmerkfactuur_verwijder IS NULL
|
||
AND fin_kenmerk_key = 81;
|
||
|
||
-- View waarin bij de factuur met fin_factuur_key de omschrijving van de kopregel (naar Exact) wordt bepaald.
|
||
CREATE OR REPLACE VIEW vgld_v_factuurregel_datum (fin_factuurregel_key, fin_factuurregel_datum)
|
||
AS
|
||
SELECT kfr.fin_factuurregel_key, kfr.fin_kenmerkfactregel_waarde
|
||
FROM fin_kenmerkfactregel kfr
|
||
WHERE kfr.fin_kenmerkfactregel_verwijder IS NULL
|
||
AND fin_kenmerk_key = 82;
|
||
|
||
|
||
-- view tbv export naar exact
|
||
CREATE OR REPLACE VIEW vgld_v_factuur_mldcnt_gegevens (
|
||
fin_factuur_key,
|
||
opdracht_id,
|
||
fin_factuur_datum,
|
||
fin_factuur_boekmaand,
|
||
fin_factuur_nr,
|
||
fin_factuur_bestand,
|
||
prs_bedrijf_key,
|
||
fin_factuurregel_totaal,
|
||
fin_factuurregel_btw,
|
||
fin_factuurregel_btw_perc,
|
||
fin_btwtabelwaarde_btwcode,
|
||
fin_factuurregel_nr,
|
||
fin_factuurregel_omschrijving,
|
||
fin_factuurregel_datum,
|
||
fin_factuur_debiteur_nr,
|
||
fin_factuur_betaalref,
|
||
fin_factuur_omschr_kopregel,
|
||
project_nummer,
|
||
prs_kostensoort_oms,
|
||
prs_kostensoort_doorbelasten,
|
||
prs_kostenplaats_nr,
|
||
bes_opdr_key,
|
||
mld_opdr_key,
|
||
cnt_contract_key,
|
||
fin_factuur_statuses_key
|
||
)
|
||
AS
|
||
SELECT DISTINCT f.fin_factuur_key,
|
||
COALESCE (TO_CHAR (cnt_contract_nummer),
|
||
(SELECT sd.ins_srtdiscipline_prefix
|
||
|| m.mld_melding_key
|
||
|| '/'
|
||
|| o.mld_opdr_bedrijfopdr_volgnr
|
||
FROM mld_melding m,
|
||
mld_stdmelding std,
|
||
ins_tab_discipline d,
|
||
ins_srtdiscipline sd
|
||
WHERE m.mld_melding_key = o.mld_melding_key
|
||
AND m.mld_stdmelding_key = std.mld_stdmelding_key
|
||
AND std.mld_ins_discipline_key = d.ins_discipline_key
|
||
AND d.ins_srtdiscipline_key =
|
||
sd.ins_srtdiscipline_key)
|
||
)
|
||
opdracht_id,
|
||
f.fin_factuur_datum,
|
||
f.fin_factuur_boekmaand,
|
||
f.fin_factuur_nr,
|
||
fb.fin_factuur_bestand,
|
||
COALESCE (b_c.prs_bedrijf_key, b_o.prs_bedrijf_key) prs_bedrijf_key,
|
||
fr.fin_factuurregel_totaal,
|
||
fr.fin_factuurregel_btw,
|
||
btw.fin_btwtabelwaarde_perc,
|
||
btw.fin_btwtabelwaarde_code,
|
||
fr.fin_factuurregel_nr,
|
||
fr.fin_factuurregel_omschrijving,
|
||
frd.fin_factuurregel_datum,
|
||
f.fin_factuur_debiteur_nr,
|
||
fbr.fin_factuur_betaalref,
|
||
fok.fin_factuur_omschr_kopregel,
|
||
NULL projectnummer,
|
||
COALESCE(ks_regel.prs_kostensoort_oms,ks.prs_kostensoort_oms),
|
||
DECODE(ks_regel.prs_kostensoort_oms, NULL, ks.prs_kostensoort_doorbelasten, ks_regel.prs_kostensoort_doorbelasten),
|
||
COALESCE (kp_c.prs_kostenplaats_nr, kp_o.prs_kostenplaats_nr) prs_kostenplaats_nr,
|
||
NULL bes_opdr_key,
|
||
o.mld_opdr_key,
|
||
c.cnt_contract_key,
|
||
f.fin_factuur_statuses_key
|
||
FROM fin_factuur f,
|
||
vgld_v_factuur_bestand fb,
|
||
vgld_v_factuur_betaalref fbr,
|
||
vgld_v_factuur_omschr_kopregel fok,
|
||
fin_factuurregel fr,
|
||
vgld_v_factuurregel_datum frd,
|
||
fin_btwtabelwaarde btw,
|
||
mld_opdr o,
|
||
mld_typeopdr ot,
|
||
cnt_contract c,
|
||
prs_bedrijf b_o,
|
||
prs_bedrijf b_c,
|
||
prs_kostensoort ks,
|
||
prs_kostensoort ks_regel,
|
||
prs_kostenplaats kp_c,
|
||
prs_kostenplaats kp_o
|
||
WHERE f.fin_factuur_key = fr.fin_factuur_key
|
||
AND fr.fin_factuurregel_key = frd.fin_factuurregel_key(+)
|
||
AND fr.fin_btwtabelwaarde_key = btw.fin_btwtabelwaarde_key
|
||
AND f.fin_factuur_key = fb.fin_factuur_key(+)
|
||
AND f.fin_factuur_key = fbr.fin_factuur_key(+)
|
||
AND f.fin_factuur_key = fok.fin_factuur_key(+)
|
||
AND f.bes_bestelopdr_key is null
|
||
AND f.mld_opdr_key = o.mld_opdr_key(+)
|
||
AND o.prs_kostenplaats_key = kp_o.prs_kostenplaats_key (+)
|
||
AND o.mld_typeopdr_key = ot.mld_typeopdr_key(+)
|
||
AND f.cnt_contract_key = c.cnt_contract_key(+)
|
||
AND o.mld_uitvoerende_keys = b_o.prs_bedrijf_key(+)
|
||
AND c.cnt_prs_bedrijf_key = b_c.prs_bedrijf_key(+)
|
||
AND c.prs_kostenplaats_key = kp_c.prs_kostenplaats_key (+)
|
||
AND f.prs_kostensoort_key = ks.prs_kostensoort_key(+)
|
||
AND fr.prs_kostensoort_key = ks_regel.prs_kostensoort_key(+);
|
||
|
||
|
||
CREATE OR REPLACE VIEW vgld_v_factuur_bes_gegevens (
|
||
fin_factuur_key,
|
||
opdracht_id,
|
||
fin_factuur_datum,
|
||
fin_factuur_boekmaand,
|
||
fin_factuur_nr,
|
||
fin_factuur_bestand,
|
||
prs_bedrijf_key,
|
||
fin_factuurregel_totaal,
|
||
fin_factuurregel_btw,
|
||
fin_factuurregel_btw_perc,
|
||
fin_btwtabelwaarde_btwcode,
|
||
fin_factuurregel_nr,
|
||
fin_factuurregel_omschrijving,
|
||
fin_factuurregel_datum,
|
||
fin_factuur_debiteur_nr,
|
||
fin_factuur_betaalref,
|
||
fin_factuur_omschr_kopregel,
|
||
project_nummer,
|
||
prs_kostensoort_oms,
|
||
prs_kostensoort_doorbelasten,
|
||
prs_kostenplaats_nr,
|
||
bes_opdr_key,
|
||
mld_opdr_key,
|
||
cnt_contract_key,
|
||
fin_factuur_statuses_key
|
||
)
|
||
AS
|
||
SELECT DISTINCT f.fin_factuur_key,
|
||
TO_CHAR (bo.bes_bestelopdr_id) opdracht_id,
|
||
f.fin_factuur_datum,
|
||
f.fin_factuur_boekmaand,
|
||
f.fin_factuur_nr,
|
||
fb.fin_factuur_bestand,
|
||
b.prs_bedrijf_key,
|
||
fr.fin_factuurregel_totaal,
|
||
fr.fin_factuurregel_btw,
|
||
btw.fin_btwtabelwaarde_perc,
|
||
btw.fin_btwtabelwaarde_code,
|
||
fr.fin_factuurregel_nr,
|
||
fr.fin_factuurregel_omschrijving,
|
||
frd.fin_factuurregel_datum,
|
||
f.fin_factuur_debiteur_nr,
|
||
fbr.fin_factuur_betaalref,
|
||
fok.fin_factuur_omschr_kopregel,
|
||
NULL projectnummer,
|
||
COALESCE(ks_regel.prs_kostensoort_oms,ks.prs_kostensoort_oms),
|
||
DECODE(ks_regel.prs_kostensoort_oms, NULL, ks.prs_kostensoort_doorbelasten, ks_regel.prs_kostensoort_doorbelasten),
|
||
kp.prs_kostenplaats_nr,
|
||
bo.bes_bestelopdr_key bes_opdr_key,
|
||
NULL mld_opdr_key,
|
||
NULL cnt_contract_key,
|
||
f.fin_factuur_statuses_key
|
||
FROM bes_bestelopdr bo,
|
||
prs_bedrijf b,
|
||
bes_bestelling bes,
|
||
bes_bestelopdr_item boi,
|
||
bes_bestelling_item bi,
|
||
fin_factuur f,
|
||
vgld_v_factuur_bestand fb,
|
||
vgld_v_factuur_betaalref fbr,
|
||
vgld_v_factuur_omschr_kopregel fok,
|
||
fin_factuurregel fr,
|
||
vgld_v_factuurregel_datum frd,
|
||
fin_btwtabelwaarde btw,
|
||
prs_kostensoort ks,
|
||
prs_kostensoort ks_regel,
|
||
prs_kostenplaats kp
|
||
WHERE b.prs_bedrijf_key = bo.prs_bedrijf_key
|
||
AND bo.bes_bestelopdr_key = boi.bes_bestelopdr_key
|
||
AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
|
||
AND bes.bes_bestelling_key = bi.bes_bestelling_key
|
||
AND kp.prs_kostenplaats_key = bes.prs_kostenplaats_key
|
||
AND f.prs_kostensoort_key = ks.prs_kostensoort_key(+)
|
||
AND fr.prs_kostensoort_key = ks_regel.prs_kostensoort_key(+)
|
||
AND f.bes_bestelopdr_key = bo.bes_bestelopdr_key
|
||
AND f.fin_factuur_key = fr.fin_factuur_key
|
||
AND fr.fin_factuurregel_key = frd.fin_factuurregel_key(+)
|
||
AND fr.fin_btwtabelwaarde_key = btw.fin_btwtabelwaarde_key
|
||
AND f.fin_factuur_key = fb.fin_factuur_key(+)
|
||
AND f.fin_factuur_key = fbr.fin_factuur_key(+)
|
||
AND f.fin_factuur_key = fok.fin_factuur_key(+);
|
||
|
||
|
||
CREATE OR REPLACE VIEW vgld_v_factuur_geg
|
||
AS
|
||
SELECT * from vgld_v_factuur_mldcnt_gegevens
|
||
UNION
|
||
SELECT * from vgld_v_factuur_bes_gegevens;
|
||
|
||
|
||
CREATE OR REPLACE VIEW vgld_v_factuur_geg_akkoord
|
||
AS
|
||
SELECT * from vgld_v_factuur_mldcnt_gegevens
|
||
WHERE fin_factuur_statuses_key = 6
|
||
UNION
|
||
SELECT * from vgld_v_factuur_bes_gegevens
|
||
WHERE fin_factuur_statuses_key = 6;
|
||
|
||
|
||
|
||
-- De OUDE ascii-rapportage van het exportbestand die voor Exact zou worden gegenereerd.
|
||
CREATE OR REPLACE VIEW vgld_v_rap_exact
|
||
(regelnummer,dagb_type, dagbknr, periode, bkjcode, bkstnr, oms25, datum, empty9, debnr,
|
||
crdnr, empty12, bedrag, drbk_in_val, valcode, koers, kredbep, bdrkredbep, vervdatfak, vervdatkrd,
|
||
empty21, empty22, weeknummer, betaalref, betwijze, grek_bdr, empty27, empty28, empty29, empty30,
|
||
empty31, transsubtype, empty33, empty34, empty35, empty36, empty37, empty38, projectnr, field40)
|
||
AS
|
||
SELECT regelnummer,dagb_type, dagbknr, periode, bkjcode, bkstnr, oms25, datum, empty9, debnr,
|
||
crdnr, empty12, bedrag, drbk_in_val, valcode, koers, kredbep, bdrkredbep, vervdatfak, vervdatkrd,
|
||
empty21, empty22, weeknummer, betaalref, betwijze, grek_bdr, empty27, empty28, empty29, empty30,
|
||
empty31, transsubtype, empty33, empty34, empty35, empty36, empty37, empty38, projectnr, '!'
|
||
FROM (SELECT 0 regelnummer,
|
||
'I' dagb_type,
|
||
'42' dagbknr,
|
||
'' periode,
|
||
'' bkjcode,
|
||
TO_CHAR (fin_factuur_key) bkstnr,
|
||
opdracht_id oms25,
|
||
TO_CHAR (fin_factuur_datum, 'ddmmyyyy') datum,
|
||
'' empty9,
|
||
'' debnr,
|
||
(SELECT prs_leverancier_nr
|
||
FROM prs_bedrijf b
|
||
WHERE b.prs_bedrijf_key = fg.prs_bedrijf_key)
|
||
crdnr,
|
||
'' empty12,
|
||
REPLACE (TO_CHAR (bedrag), ',', '.') bedrag,
|
||
'' drbk_in_val,
|
||
'' valcode,
|
||
'' koers,
|
||
'' kredbep,
|
||
'' bdrkredbep,
|
||
'' vervdatfak,
|
||
'' vervdatkrd,
|
||
'' empty21,
|
||
'' empty22,
|
||
'' weeknummer,
|
||
COALESCE(fin_factuur_betaalref, fin_factuur_nr || '/' || fin_factuur_debiteur_nr) betaalref,
|
||
'' betwijze,
|
||
'' grek_bdr,
|
||
'' empty27,
|
||
'' empty28,
|
||
'' empty29,
|
||
'' empty30,
|
||
'' empty31,
|
||
'' transsubtype,
|
||
'' empty33,
|
||
'' empty34,
|
||
'' empty35,
|
||
'' empty36,
|
||
'' empty37,
|
||
'' empty38,
|
||
'' projectnr,
|
||
'!' empty40
|
||
FROM (SELECT fin_factuur_key,
|
||
opdracht_id,
|
||
fin_factuur_datum,
|
||
fin_factuur_nr,
|
||
prs_bedrijf_key,
|
||
fin_factuur_debiteur_nr,
|
||
fin_factuur_betaalref,
|
||
SUM (fin_factuurregel_totaal + fin_factuurregel_btw)
|
||
bedrag
|
||
FROM vgld_v_factuur_geg_akkoord
|
||
GROUP BY fin_factuur_key,
|
||
opdracht_id,
|
||
fin_factuur_datum,
|
||
fin_factuur_nr,
|
||
prs_bedrijf_key,
|
||
fin_factuur_debiteur_nr,
|
||
fin_factuur_betaalref) fg
|
||
UNION ALL
|
||
SELECT fin_factuurregel_nr regelnummer,
|
||
'I' dagb_type,
|
||
'42' dagbknr,
|
||
'' periode,
|
||
'' bkjcode,
|
||
TO_CHAR (fin_factuur_key) boekstuknummer,
|
||
COALESCE(fin_factuur_betaalref, fin_factuur_nr || '/' || fin_factuur_debiteur_nr) oms25,
|
||
TO_CHAR (fin_factuur_datum, 'ddmmyyyy') datum,
|
||
prs_kostensoort_oms reknr,
|
||
'' debnr,
|
||
(SELECT prs_leverancier_nr
|
||
FROM prs_bedrijf b
|
||
WHERE b.prs_bedrijf_key = fg.prs_bedrijf_key)
|
||
crdnr,
|
||
'' empty12,
|
||
REPLACE (TO_CHAR (fin_factuurregel_totaal), ',', '.') bedrag,
|
||
'' drbk_in_val,
|
||
'' val_code,
|
||
'' koers,
|
||
'' kredbep,
|
||
'' bdrkredbep,
|
||
'' vervdatfak,
|
||
'' vervdatkrd,
|
||
fin_btwtabelwaarde_btwcode btw_code,
|
||
REPLACE (TO_CHAR (fin_factuurregel_btw), ',', '.') btw_bdr,
|
||
'' weeknummer,
|
||
'' empty24,
|
||
'' empty25,
|
||
'' empty26,
|
||
prs_kostenplaats_nr kstplcode,
|
||
'' kstdrcode,
|
||
'' empty29,
|
||
'' empty30,
|
||
'' empty31,
|
||
'' transsubtype,
|
||
'' empty33,
|
||
'' empty34,
|
||
'' emtpy35,
|
||
'' empty36,
|
||
'' empty37,
|
||
'' empty38,
|
||
project_nummer projectnr,
|
||
'!' empty40
|
||
FROM vgld_v_factuur_geg_akkoord fg);
|
||
|
||
|
||
|
||
|
||
|
||
|
||
-- Alle waarden (zijn evt meer records) uit eigen tabel '$SYSTEM' waarvan de waarde_code met een
|
||
-- zekere prefix begint (volgens de systeem-setting PREFIX_FCLT_FACTUUR_XML_HEADER), komen in de header vd xml terecht.
|
||
CREATE OR REPLACE VIEW vgld_v_fclt_factuur_header (
|
||
result,
|
||
result_order
|
||
)
|
||
AS
|
||
SELECT '<' || fac_usrdata_code || '>' || fac_usrdata_omschr || '</' || fac_usrdata_code || '>', 1
|
||
FROM fac_usrdata
|
||
WHERE fac_usrtab_key = 21
|
||
AND fac_usrdata_verwijder is null;
|
||
|
||
CREATE OR REPLACE VIEW vgld_v_fclt_factuur_body (
|
||
result,
|
||
result_order
|
||
)
|
||
AS
|
||
SELECT DECODE(regelnummer,0,'<fin_factuur>','<fin_factuurregel>')
|
||
|| '<fin_factuur_key>' || fin_factuur_key || '</fin_factuur_key>'
|
||
|| '<fin_factuur_nr>' || xml.char_to_html(fin_factuur_nr) || '</fin_factuur_nr>'
|
||
|| '<fin_factuur_bestand>' || xml.char_to_html(fin_factuur_bestand) || '</fin_factuur_bestand>'
|
||
|| '<fin_factuur_debiteur_nr>' || xml.char_to_html(fin_factuur_debiteur_nr) || '</fin_factuur_debiteur_nr>'
|
||
|| '<fin_factuur_omschr_kopregel>' || xml.char_to_html(fin_factuur_omschr_kopregel) || '</fin_factuur_omschr_kopregel>'
|
||
|| '<bes_mld_cnt_opdracht_id>' || xml.char_to_html(bes_mld_cnt_opdracht_id) || '</bes_mld_cnt_opdracht_id>'
|
||
|| '<fin_factuur_datum>' || datum || '</fin_factuur_datum>'
|
||
|| '<fin_factuur_boekmaand>' || fin_factuur_boekmaand || '</fin_factuur_boekmaand>'
|
||
|| '<prs_kostensoort_oms>' || xml.char_to_html(grootboekrekening) || '</prs_kostensoort_oms>'
|
||
|| '<prs_kostensoort_doorbelasten>' || xml.char_to_html(kostensoort_doorbelasten)|| '</prs_kostensoort_doorbelasten>'
|
||
|| '<prs_betaal_referentie>' || xml.char_to_html(betaalreferentie) || '</prs_betaal_referentie>'
|
||
|| '<prs_leverancier_nr>' || xml.char_to_html(crediteur_nr) || '</prs_leverancier_nr>'
|
||
|| '<prs_bedrijf_naam>' || xml.char_to_html(crediteur_naam) || '</prs_bedrijf_naam>'
|
||
|| '<fin_factuur_totaal_exbtw>' || fin_factuur_totaal_exbtw || '</fin_factuur_totaal_exbtw>'
|
||
|| '<fin_factuur_totaal_incbtw>' || fin_factuur_totaal_incbtw || '</fin_factuur_totaal_incbtw>'
|
||
|| '<fin_factuurregel_omschrijving>' || xml.char_to_html(fin_factuurregel_omschrijving) || '</fin_factuurregel_omschrijving>'
|
||
|| '<fin_factuurregel_datum>' || xml.char_to_html(fin_factuurregel_datum) || '</fin_factuurregel_datum>'
|
||
|| '<fin_factuurregel_totaal>' || fin_factuurregel_totaal || '</fin_factuurregel_totaal>'
|
||
|| '<fin_factuurregel_btw_perc>' || btw_percentage || '</fin_factuurregel_btw_perc>'
|
||
|| '<fin_factuurregel_btw_perc_code>' || xml.char_to_html(btw_code) || '</fin_factuurregel_btw_perc_code>'
|
||
|| '<fin_factuurregel_btw_bedrag>' || btw_bedrag || '</fin_factuurregel_btw_bedrag>'
|
||
|| '<prs_kostenplaats_nr>' || xml.char_to_html(prs_kostenplaats_nr) || '</prs_kostenplaats_nr>'
|
||
|| DECODE(regelnummer, 0, '', DECODE(max_factuur_regelnr - regelnummer,0,'</fin_factuurregel></fin_factuur>','</fin_factuurregel>'))
|
||
,
|
||
(1000000 + fin_factuur_key) * 10000 + regelnummer
|
||
FROM (SELECT 0 regelnummer,
|
||
aant_factuur_regels,
|
||
max_factuur_regelnr,
|
||
fin_factuur_key,
|
||
fin_factuur_nr,
|
||
fin_factuur_bestand,
|
||
fin_factuur_debiteur_nr,
|
||
fin_factuur_omschr_kopregel,
|
||
opdracht_id bes_mld_cnt_opdracht_id,
|
||
TO_CHAR (fin_factuur_datum, 'ddmmyyyy') datum,
|
||
fin_factuur_boekmaand,
|
||
'' grootboekrekening,
|
||
'' kostensoort_doorbelasten,
|
||
betaalreferentie,
|
||
(SELECT prs_leverancier_nr
|
||
FROM prs_bedrijf b
|
||
WHERE b.prs_bedrijf_key = fg.prs_bedrijf_key) crediteur_nr,
|
||
(SELECT prs_bedrijf_naam
|
||
FROM prs_bedrijf b
|
||
WHERE b.prs_bedrijf_key = fg.prs_bedrijf_key) crediteur_naam,
|
||
REPLACE (TO_CHAR (ROUND(bedrag_exbtw,2)), ',', '.') fin_factuur_totaal_exbtw,
|
||
REPLACE (TO_CHAR (ROUND(bedrag_incbtw,2)), ',', '.') fin_factuur_totaal_incbtw,
|
||
'' fin_factuurregel_omschrijving,
|
||
'' fin_factuurregel_datum,
|
||
'' fin_factuurregel_totaal,
|
||
'' btw_percentage,
|
||
'' btw_code,
|
||
'' btw_bedrag,
|
||
'' prs_kostenplaats_nr
|
||
FROM (SELECT fin_factuur_key,
|
||
opdracht_id,
|
||
fin_factuur_datum,
|
||
fin_factuur_boekmaand,
|
||
fin_factuur_nr,
|
||
fin_factuur_bestand,
|
||
prs_bedrijf_key,
|
||
fin_factuur_debiteur_nr,
|
||
COALESCE(fin_factuur_betaalref, fin_factuur_nr || '/' || fin_factuur_debiteur_nr) betaalreferentie,
|
||
fin_factuur_omschr_kopregel,
|
||
COUNT(fin_factuur_key) AS aant_factuur_regels,
|
||
MAX (fin_factuurregel_nr) AS max_factuur_regelnr,
|
||
SUM (fin_factuurregel_totaal) bedrag_exbtw,
|
||
SUM (fin_factuurregel_totaal + fin_factuurregel_btw) bedrag_incbtw
|
||
FROM vgld_v_factuur_geg_akkoord
|
||
GROUP BY fin_factuur_key,
|
||
opdracht_id,
|
||
fin_factuur_datum,
|
||
fin_factuur_boekmaand,
|
||
fin_factuur_nr,
|
||
fin_factuur_bestand,
|
||
prs_bedrijf_key,
|
||
fin_factuur_debiteur_nr,
|
||
fin_factuur_betaalref,
|
||
fin_factuur_omschr_kopregel) fg
|
||
UNION ALL
|
||
SELECT fin_factuurregel_nr regelnummer,
|
||
(SELECT COUNT(fin_factuur_key)
|
||
FROM vgld_v_factuur_geg_akkoord fc
|
||
WHERE fc.fin_factuur_key = fg.fin_factuur_key
|
||
GROUP BY fin_factuur_key,
|
||
opdracht_id,
|
||
fin_factuur_datum,
|
||
fin_factuur_nr,
|
||
prs_bedrijf_key,
|
||
fin_factuur_debiteur_nr) AS aant_factuur_regels,
|
||
(SELECT MAX(fin_factuurregel_nr)
|
||
FROM vgld_v_factuur_geg_akkoord fc
|
||
WHERE fc.fin_factuur_key = fg.fin_factuur_key
|
||
GROUP BY fin_factuur_key,
|
||
opdracht_id,
|
||
fin_factuur_datum,
|
||
fin_factuur_nr,
|
||
prs_bedrijf_key,
|
||
fin_factuur_debiteur_nr) AS max_factuur_regelnr,
|
||
fin_factuur_key,
|
||
fin_factuur_nr,
|
||
'' fin_factuur_bestand,
|
||
fin_factuur_debiteur_nr,
|
||
'' fin_factuur_omschr_kopregel,
|
||
'' bes_mld_cnt_opdracht_id,
|
||
TO_CHAR (fin_factuur_datum, 'ddmmyyyy') datum,
|
||
fin_factuur_boekmaand,
|
||
prs_kostensoort_oms grootboekrekening,
|
||
TO_CHAR(prs_kostensoort_doorbelasten) kostensoort_doorbelasten,
|
||
COALESCE(fin_factuur_betaalref, fin_factuur_nr || '/' || fin_factuur_debiteur_nr) betaalreferentie,
|
||
(SELECT prs_leverancier_nr
|
||
FROM prs_bedrijf b
|
||
WHERE b.prs_bedrijf_key = fg.prs_bedrijf_key) crediteur_nr,
|
||
(SELECT prs_bedrijf_naam
|
||
FROM prs_bedrijf b
|
||
WHERE b.prs_bedrijf_key = fg.prs_bedrijf_key) crediteur_naam,
|
||
'' fin_factuur_totaal_exbtw,
|
||
'' fin_factuur_totaal_incbtw,
|
||
fin_factuurregel_omschrijving,
|
||
fin_factuurregel_datum,
|
||
REPLACE (TO_CHAR (ROUND(fin_factuurregel_totaal,2)), ',', '.') fin_factuurregel_totaal,
|
||
TO_CHAR(fin_factuurregel_btw_perc) btw_percentage,
|
||
fin_btwtabelwaarde_btwcode btw_code,
|
||
REPLACE (TO_CHAR (ROUND(fin_factuurregel_btw,2)), ',', '.') btw_bedrag,
|
||
prs_kostenplaats_nr
|
||
FROM vgld_v_factuur_geg_akkoord fg
|
||
ORDER BY fin_factuur_key, regelnummer);
|
||
|
||
|
||
|
||
|
||
CREATE OR REPLACE VIEW vgld_v_export_fclt_factuur (
|
||
result,
|
||
result_order
|
||
)
|
||
AS
|
||
SELECT '<xml>',0 FROM DUAL
|
||
UNION
|
||
SELECT result, result_order FROM vgld_v_fclt_factuur_header
|
||
UNION
|
||
SELECT result, result_order FROM vgld_v_fclt_factuur_body
|
||
UNION
|
||
SELECT '</xml>',99999999999999999999 FROM DUAL;
|
||
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE vgld_export_fclt_factuur (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_filedir IN VARCHAR2,
|
||
p_filename IN VARCHAR2
|
||
)
|
||
AS
|
||
|
||
-- In cursor cfactuur alle facturen die worden geexporteerd...
|
||
CURSOR cfactuur
|
||
IS
|
||
SELECT fin_factuur_key
|
||
FROM vgld_v_factuur_geg_akkoord
|
||
GROUP BY fin_factuur_key;
|
||
|
||
BEGIN
|
||
-- DE EXPORT IS OP BASIS VAN EEN VIEW GEREALISEERD, WAARNA NU ALS LAATSTE STAP NOG WAT ADMINISTRATIE VOLGT...
|
||
FOR cfact IN cfactuur
|
||
LOOP
|
||
-- Zowel de factuur in tracking zetten als de status op verwerkt (=7) zetten
|
||
fin.setfactuurstatus (cfact.fin_factuur_key, 7, NULL);
|
||
END LOOP;
|
||
END;
|
||
/
|
||
|
||
|
||
|
||
CREATE OR REPLACE VIEW vgld_v_export_undo_exact (
|
||
result,
|
||
result_order
|
||
)
|
||
AS
|
||
SELECT REPLACE(REPLACE(f.fin_factuur_key
|
||
|| ';'
|
||
|| opdracht_id
|
||
|| ';'
|
||
|| fin_factuur_datum
|
||
|| ';'
|
||
|| fin_factuur_nr
|
||
|| ';'
|
||
|| prs_bedrijf_key
|
||
|| ';'
|
||
|| fin_factuurregel_totaal
|
||
|| ';'
|
||
|| fin_factuurregel_btw
|
||
|| ';'
|
||
|| fin_factuurregel_nr
|
||
|| ';'
|
||
|| fin_factuur_debiteur_nr
|
||
|| ';'
|
||
|| project_nummer
|
||
|| ';'
|
||
|| prs_kostensoort_oms
|
||
|| ';'
|
||
|| bes_opdr_key
|
||
|| ';'
|
||
|| mld_opdr_key
|
||
|| ';'
|
||
|| cnt_contract_key
|
||
,CHR (13), ''), CHR (10), '<ret>'), f.fin_factuur_key
|
||
FROM vgld_v_factuur_geg f, fac_tracking t, fac_srtnotificatie sn
|
||
WHERE sn.fac_srtnotificatie_code ='FINVER'
|
||
AND sn.fac_srtnotificatie_key = t.fac_srtnotificatie_key
|
||
AND t.fac_tracking_datum >= (SELECT MAX(t1.fac_tracking_datum) - (1 / (24*60))
|
||
FROM fac_tracking t1
|
||
WHERE t1.fac_srtnotificatie_key = t.fac_srtnotificatie_key)
|
||
AND f.fin_factuur_key = t.fac_tracking_refkey
|
||
AND f.fin_factuur_statuses_key = 7;
|
||
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE vgld_select_undo_exact (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2
|
||
)
|
||
AS
|
||
v_errormsg VARCHAR (200);
|
||
BEGIN
|
||
v_errormsg := 'Geen akties';
|
||
|
||
END;
|
||
/
|
||
|
||
-- Procedure om alle geexporteerde facturen naar status verwerkt te zetten.
|
||
CREATE OR REPLACE PROCEDURE vgld_export_undo_exact (
|
||
p_applname IN VARCHAR2,
|
||
p_applrun IN VARCHAR2,
|
||
p_filedir IN VARCHAR2,
|
||
p_filename IN VARCHAR2
|
||
)
|
||
AS
|
||
CURSOR cfactuur
|
||
IS
|
||
SELECT DISTINCT f.fin_factuur_key
|
||
FROM fac_tracking t, fac_srtnotificatie sn, fin_factuur f
|
||
WHERE sn.fac_srtnotificatie_code ='FINVER'
|
||
AND sn.fac_srtnotificatie_key = t.fac_srtnotificatie_key
|
||
AND t.fac_tracking_datum >= (SELECT MAX(t1.fac_tracking_datum) - (1 / (24*60))
|
||
FROM fac_tracking t1
|
||
WHERE t1.fac_srtnotificatie_key = t.fac_srtnotificatie_key)
|
||
AND f.fin_factuur_key = t.fac_tracking_refkey
|
||
AND fin_factuur_statuses_key = 7;
|
||
|
||
v_errormsg VARCHAR (200);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
BEGIN
|
||
v_errormsg := 'Geen akties';
|
||
|
||
FOR cfact IN cfactuur
|
||
LOOP
|
||
-- Eerst de factuur in tracking zetten...
|
||
-- Omdat van 7 naar 6 niet mag/geoorloofd is, lukt het niet via
|
||
-- de reguliere functie fin.setfactuurstatus (cfact.fin_factuur_key, 6, NULL);
|
||
|
||
-- Dan maar zelf en custom-made:
|
||
fac.trackaction ('FINFOK', cfact.fin_factuur_key, NULL, NULL, 'Factuur uit archief teruggezet');
|
||
UPDATE fin_factuur
|
||
SET fin_factuur_statuses_key = 6
|
||
WHERE fin_factuur_key = cfact.fin_factuur_key;
|
||
|
||
END LOOP;
|
||
END;
|
||
/
|
||
|
||
-- RES: Dagoverzicht per vergaderzaal.
|
||
-- rrr.res_status_fo_key IN (1, 2) -- Alleen Optie + Definitief!
|
||
-- res_srtactiviteit_key = 1 -- Ruimte (g<><67>n Voorz. + WP)!
|
||
|
||
CREATE OR REPLACE VIEW vgld_v_rap_res_infobord
|
||
(
|
||
aktief,
|
||
offset,
|
||
fclt_f_jaar,
|
||
fclt_f_maand,
|
||
fclt_f_dag,
|
||
dag,
|
||
tijd_van,
|
||
tijd_tot,
|
||
reserv_ruimte,
|
||
fclt_f_ruimte,
|
||
fclt_f_dagoverzicht,
|
||
activiteit,
|
||
catalogus,
|
||
aanvrager,
|
||
gastheer,
|
||
omschrijving,
|
||
status,
|
||
locatie_code,
|
||
gebouw_code,
|
||
verdieping_code,
|
||
locatie_omschrijving,
|
||
gebouw_omschrijving,
|
||
verdieping_omschrijving,
|
||
alg_locatie_key,
|
||
alg_gebouw_key,
|
||
alg_verdieping_key,
|
||
alg_ruimte_key
|
||
)
|
||
AS
|
||
SELECT (CASE
|
||
WHEN rrr.res_rsv_ruimte_van > SYSDATE THEN 'expected'
|
||
WHEN rrr.res_rsv_ruimte_tot < SYSDATE THEN 'passed'
|
||
ELSE 'active'
|
||
END) aktief,
|
||
TRUNC ( (SYSDATE - rrr.res_rsv_ruimte_van) * 24 * 60) offset,
|
||
TO_CHAR (rrr.res_rsv_ruimte_van, 'yyyy') fclt_f_jaar,
|
||
TO_CHAR (rrr.res_rsv_ruimte_van, 'mm') fclt_f_maand,
|
||
TO_CHAR (rrr.res_rsv_ruimte_van, 'dd') fclt_f_dag,
|
||
TO_CHAR (rrr.res_rsv_ruimte_van, 'dd-mm-yyyy') dag,
|
||
TO_CHAR (rrr.res_rsv_ruimte_van, 'hh24:mi') tijd_van,
|
||
TO_CHAR (rrr.res_rsv_ruimte_tot, 'hh24:mi') tijd_tot,
|
||
rrg.res_ruimte_nr ruimte,
|
||
r.alg_ruimte_omschrijving,
|
||
DECODE(RK.ALG_ONRGOEDKENMERK_WAARDE,'1', 'Ja', 'Nee'),
|
||
A.RES_ACTIVITEIT_OMSCHRIJVING,
|
||
rd.ins_discipline_omschrijving catalogus,
|
||
aanvrager.prs_perslid_naam_full aanvrager,
|
||
gastheer.prs_perslid_naam_full gastheer,
|
||
rrr.res_rsv_ruimte_omschrijving omschrijving,
|
||
sf.res_status_fo_omschrijving status,
|
||
l.alg_locatie_code locatie_code,
|
||
g.alg_gebouw_code gebouw_code,
|
||
v.alg_verdieping_code verdieping_code,
|
||
l.alg_locatie_omschrijving locatie_omschrijving,
|
||
g.alg_gebouw_omschrijving gebouw_omschrijving,
|
||
v.alg_verdieping_omschrijving verdieping_omschrijving,
|
||
l.alg_locatie_key,
|
||
g.alg_gebouw_key,
|
||
v.alg_verdieping_key,
|
||
r.alg_ruimte_key
|
||
FROM res_v_aanwezigrsv_ruimte rrr,
|
||
res_ruimte_opstelling rro,
|
||
res_v_res_ruimte_gegevens rrg,
|
||
res_alg_ruimte rar,
|
||
prs_v_perslid_fullnames aanvrager,
|
||
prs_v_perslid_fullnames gastheer,
|
||
alg_locatie l,
|
||
alg_gebouw g,
|
||
alg_verdieping v,
|
||
alg_ruimte r,
|
||
alg_onrgoedkenmerk rk,
|
||
res_status_fo sf,
|
||
res_activiteit a,
|
||
res_discipline rd
|
||
WHERE rrr.res_status_fo_key IN (1, 2)
|
||
AND rrr.res_ruimte_opstel_key = rro.res_ruimte_opstel_key
|
||
AND rro.res_ruimte_key = rrg.res_ruimte_key
|
||
AND rrg.res_ruimte_key = RAR.RES_RUIMTE_KEY
|
||
and RAR.ALG_RUIMTE_KEY = r.alg_ruimte_key
|
||
AND rk.alg_onrgoed_key (+)= r.alg_ruimte_key
|
||
AND rk.alg_kenmerk_key (+) = 1000
|
||
AND rk.alg_onrgoed_niveau (+) ='R'
|
||
AND rrr.res_rsv_ruimte_host_key = gastheer.prs_perslid_key
|
||
AND rrr.res_rsv_ruimte_contact_key = aanvrager.prs_perslid_key
|
||
AND rrg.alg_locatie_key = l.alg_locatie_key
|
||
AND rrg.alg_gebouw_key = g.alg_gebouw_key
|
||
AND rrg.alg_verdieping_key = v.alg_verdieping_key
|
||
AND rrr.res_status_fo_key = sf.res_status_fo_key
|
||
AND rrr.res_activiteit_key = a.res_activiteit_key
|
||
AND a.res_srtactiviteit_key = 1 -- Ruimte (g<><67>n Voorz. + WP)!
|
||
AND rrg.res_discipline_key = rd.ins_discipline_key;
|
||
|
||
|
||
|
||
|
||
|
||
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||
-- DELIXL E-INVOICING -- DELIXL E-INVOICING -- DELIXL E-INVOICING -- DELIXL E-INVOICING -- DELIXL E-INVOICING -- DELIXL E-INVOICING -- DELIXL E-INVOICING --
|
||
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||
|
||
CREATE OR REPLACE PROCEDURE vgld_post_fin_factuur_delixl (p_import_key IN NUMBER)
|
||
AS
|
||
mb VARCHAR(50);
|
||
BEGIN
|
||
mb := 'Dit is een dummy';
|
||
END;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE vgld_import_fin_factuur_delixl (p_import_key IN NUMBER)
|
||
AS
|
||
v_seq_of_columns VARCHAR(50);
|
||
BEGIN
|
||
|
||
--In de XSL: factuurnr(1);factuurdatum(2);opdrachtnr(3);omschrijving(4);bedrag(5);btwperc(6);btwbedrag(7);document(8);debiteurnr(9);opmerking(10);btw_verlegd(11);betaalkenmerk(12)
|
||
--hulp voor pos : '1;2;3;4;5;6;7;8;9;0;1;2;3;14;15;16;7;8;9;0'
|
||
v_seq_of_columns := '0;1;2;3;0;0;4;0;5;7;6;8;0;0;0;9;0;0;0;0';
|
||
|
||
-- Variabelelijst
|
||
-- v_leveranciernr: 1
|
||
-- v_factuurnr: 2 (VERPLICHT, anders zet Facilitor '-' in factuurnr, en is status van factuur "Incompleet")
|
||
-- v_factuurdatum: 3
|
||
-- v_ordernr: 4 (VERPLICHT, anders is status van factuur "Incompleet")
|
||
-- v_locatie: 5
|
||
-- v_afleverdatum: 6
|
||
-- v_omschrijving: 7
|
||
-- v_aantal: 8
|
||
-- v_kostprijs: 9 (VERPLICHT, anders is status van factuur "Incompleet")
|
||
-- v_btw_bedrag: 10 (VERPLICHT, of anders veld 11, anders is status van factuur "Incompleet")
|
||
-- v_btw: 11 (VERPLICHT, of anders veld 10, anders is status van factuur "Incompleet")
|
||
-- v_docid: 12
|
||
-- v_debiteur_nr: 13
|
||
-- v_opmerking: 14
|
||
-- v_btw_verlegd: 15 (VERPLICHT, Ja/Nee/<leeg> waarbij leeg gelijk is aan Nee. Andere waarden leidt tot "Incompleet")
|
||
-- v_kenmerk1: 16
|
||
-- v_kenmerk1: 17
|
||
-- v_kenmerk1: 18
|
||
-- v_kenmerk1: 19
|
||
-- v_kenmerk1: 20
|
||
-- v_boekmaand: 21
|
||
|
||
fac_import_factuur_body(p_import_key, v_seq_of_columns);
|
||
vgld_post_fin_factuur_delixl (p_import_key);
|
||
END;
|
||
/
|
||
|
||
--
|
||
-- CUST: post processing van:
|
||
-- 1) Factuurregelnummers conform de bestelopdracht-regelnummers (want die krijgen we van DeliXML weer mee terug, en da's handig om te vergelijken indien dat nodig mocht zijn)
|
||
-- Deze had wat mij betreft ook in standaard fac_update_factuur gemogen, echter daar ontbreekt de sortering daarop, en is de sortering DESC (had ASC gemogen).
|
||
-- 2) voor verwerking van kenmerk 'kostensoort' (grootboekrekening)
|
||
|
||
CREATE OR REPLACE PROCEDURE vgld_post_update_factuur_deli (p_import_key IN NUMBER)
|
||
AS
|
||
v_fac_usrtab_key fac_usrtab.fac_usrtab_key%TYPE;
|
||
v_fac_usrdata_omschr fac_usrdata.fac_usrdata_omschr%TYPE;
|
||
v_prs_kostensoort_key prs_kostensoort.prs_kostensoort_key%TYPE;
|
||
v_fin_kostensoort_key prs_kostensoort.prs_kostensoort_key%TYPE;
|
||
|
||
CURSOR cfactuurregel_kostensoort
|
||
IS
|
||
SELECT DISTINCT fin_factuur_key, factuurnr, fin_factuurregel_key, kenmerk1, fac_imp_file_index
|
||
FROM fac_imp_factuur
|
||
WHERE fac_import_key = p_import_key;
|
||
BEGIN
|
||
|
||
-- In productie is de key van eigen tabel '$DeliXL' 101
|
||
v_fac_usrtab_key := 101;
|
||
|
||
|
||
-- De betaalreferentie wordt in kenmerk 1 van fac_imp_factuur gezet, dus alle fac_imp_factuur langsgaan en verwerken
|
||
|
||
FOR rc IN cfactuurregel_kostensoort
|
||
LOOP
|
||
BEGIN
|
||
UPDATE fin_factuurregel
|
||
SET fin_factuurregel_nr = rc.fac_imp_file_index
|
||
WHERE fin_factuurregel_key = rc.fin_factuurregel_key;
|
||
|
||
-- Kostensoorten van DeliXL (KS-D) als volgt omgezet naar kostensoort van Vogellanden (KS-V):
|
||
-- Stap a) uit VGLD#28993, via eigen tabel $DeliXL
|
||
|
||
SELECT MAX(ud.fac_usrdata_omschr)
|
||
INTO v_fac_usrdata_omschr
|
||
FROM fac_usrdata ud
|
||
WHERE fac_usrtab_key = v_fac_usrtab_key
|
||
AND ud.fac_usrdata_verwijder IS NULL
|
||
AND rc.kenmerk1 LIKE ud.fac_usrdata_code;
|
||
|
||
IF v_fac_usrdata_omschr IS NULL
|
||
THEN
|
||
-- We hebben nog GEEN match gevonden in de eigen tabel '$DeliXL', verder op zoek naar de kostensoort:
|
||
-- Stap b) uit VGLD#28993, voorloopnul van KS-D erachter gezet (b.v. 0123 wordt 1230)
|
||
|
||
IF SUBSTR(rc.kenmerk1,1,1) = '0'
|
||
THEN
|
||
-- 1e cijfer van kostensoort Deli is een 0, dus voorloopnul erachter zetten.
|
||
v_fac_usrdata_omschr := SUBSTR(rc.kenmerk1,2) || SUBSTR(rc.kenmerk1,1,1);
|
||
END IF;
|
||
END IF;
|
||
|
||
IF v_fac_usrdata_omschr IS NOT NULL
|
||
THEN
|
||
-- Dan gaan we op zoek of de kostensoort volgens stap a) of stap b) wel bestaat.
|
||
SELECT MAX(prs_kostensoort_key)
|
||
INTO v_prs_kostensoort_key
|
||
FROM prs_kostensoort
|
||
WHERE prs_kostensoort_upper = UPPER(v_fac_usrdata_omschr);
|
||
|
||
IF v_prs_kostensoort_key IS NOT NULL
|
||
THEN
|
||
-- We hebben een geldige vertaling van kostensoort van Deli -> kostensoort Vogellanden.
|
||
-- Nu nog ff checken of deze kostensoort al bij factuur staat, want dan hoeven we dit op factuurregel niet te zetten (dan neemt die de kostensoort van factuur 'over')
|
||
|
||
SELECT COALESCE(f.prs_kostensoort_key,-1)
|
||
INTO v_fin_kostensoort_key
|
||
FROM fin_factuur f, fin_factuurregel fr
|
||
WHERE f.fin_factuur_key = fr.fin_factuur_key
|
||
AND fr.fin_factuurregel_key = rc.fin_factuurregel_key;
|
||
|
||
IF v_fin_kostensoort_key <> v_prs_kostensoort_key
|
||
THEN
|
||
-- De kostensoort is NIET dezelfde als bij factuur, dus we gaan hem op factuurregel nivo zetten.
|
||
UPDATE fin_factuurregel
|
||
SET prs_kostensoort_key = v_prs_kostensoort_key
|
||
WHERE fin_factuurregel_key = rc.fin_factuurregel_key;
|
||
END IF;
|
||
END IF;
|
||
END IF;
|
||
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
fac.imp_writelog (p_import_key,
|
||
'W',
|
||
'Van factuur met key ' || rc.fin_factuur_key || ' is de kostensoort niet verwerkt (regel ' || rc.fac_imp_file_index || ')',
|
||
'Factuurnr:' || rc.factuurnr || ' / Kostensoort: ' || rc.kenmerk1
|
||
);
|
||
END;
|
||
END LOOP;
|
||
END;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE vgld_update_fin_factuur_delixl (p_import_key IN NUMBER)
|
||
AS
|
||
BEGIN
|
||
-- Standaard FCLT verwerk import facturen
|
||
|
||
fac_update_factuur (p_import_key);
|
||
-- CUST: post processing van:
|
||
-- 1) Factuurregelnummers conform de bestelopdracht-regelnummers (want die krijgen we van DeliXML weer mee terug, en da's handig om te vergelijken indien dat nodig mocht zijn)
|
||
-- 2) voor verwerking van kenmerk 'kostensoort' (grootboekrekening)
|
||
vgld_post_update_factuur_deli(p_import_key);
|
||
END;
|
||
/
|
||
|
||
|
||
|
||
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||
------ OFFICE DEPOT E-INVOICING -- OFFICE DEPOT E-INVOICING -- OFFICE DEPOT E-INVOICING -- OFFICE DEPOT E-INVOICING -- OFFICE DEPOT E-INVOICING ------
|
||
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE vgld_import_fin_factuur_od (p_import_key IN NUMBER)
|
||
AS
|
||
v_seq_of_columns VARCHAR(50);
|
||
BEGIN
|
||
|
||
--In de XSL: factuurnr(1);factuurdatum(2);opdrachtnr(3);omschrijving(4);bedrag(5);btwperc(6);btwbedrag(7);document(8);debiteurnr(9);opmerking(10);btw_verlegd(11);betaalkenmerk(12)
|
||
--hulp voor pos : '1;2;3;4;5;6;7;8;9;0;1;2;3;14;15;16;7;8;9;0'
|
||
v_seq_of_columns := '0;1;2;3;0;0;4;0;5;7;6;0;0;0;0;0;0;0;0;0';
|
||
|
||
-- Variabelelijst
|
||
-- v_leveranciernr: 1
|
||
-- v_factuurnr: 2 (VERPLICHT, anders zet Facilitor '-' in factuurnr, en is status van factuur "Incompleet")
|
||
-- v_factuurdatum: 3
|
||
-- v_ordernr: 4 (VERPLICHT, anders is status van factuur "Incompleet")
|
||
-- v_locatie: 5
|
||
-- v_afleverdatum: 6
|
||
-- v_omschrijving: 7
|
||
-- v_aantal: 8
|
||
-- v_kostprijs: 9 (VERPLICHT, anders is status van factuur "Incompleet")
|
||
-- v_btw_bedrag: 10 (VERPLICHT, of anders veld 11, anders is status van factuur "Incompleet")
|
||
-- v_btw: 11 (VERPLICHT, of anders veld 10, anders is status van factuur "Incompleet")
|
||
-- v_docid: 12
|
||
-- v_debiteur_nr: 13
|
||
-- v_opmerking: 14
|
||
-- v_btw_verlegd: 15 (VERPLICHT, Ja/Nee/<leeg> waarbij leeg gelijk is aan Nee. Andere waarden leidt tot "Incompleet")
|
||
-- v_kenmerk1: 16
|
||
-- v_kenmerk1: 17
|
||
-- v_kenmerk1: 18
|
||
-- v_kenmerk1: 19
|
||
-- v_kenmerk1: 20
|
||
-- v_boekmaand: 21
|
||
|
||
fac_import_factuur_body(p_import_key, v_seq_of_columns);
|
||
END;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE vgld_update_fin_factuur_od (p_import_key IN NUMBER)
|
||
AS
|
||
BEGIN
|
||
-- Standaard FCLT verwerk import facturen
|
||
fac_update_factuur (p_import_key);
|
||
END;
|
||
/
|
||
|
||
|
||
|
||
----------------------------------------------------------------------------------------------------------------------------------------------------------------------
|
||
|
||
-- Koppeling met Exact - CREDITEUREN
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE vgld_post_import_ext_bedrijf (p_import_key IN NUMBER)
|
||
AS
|
||
BEGIN
|
||
-- VGLD stuurt geen LUC mee, afgesproken dat elke leverancier LUC gaat zijn (leverancier, uitvoerende en contractant).
|
||
-- Daarom in deze post-import alle bedrijven in de import met p_import_key een LUC markeren.
|
||
|
||
UPDATE fac_imp_ext_bedrijf
|
||
SET prs_bedrijf_leverancier = 1,
|
||
prs_bedrijf_uitvoerende = 1,
|
||
prs_bedrijf_contract = 1;
|
||
|
||
-- Alle @@ (deze worden in de XSL geplaatst) worden door CR/LF vervangen.
|
||
UPDATE fac_imp_ext_bedrijf
|
||
SET prs_bedrijf_opmerking = replace(prs_bedrijf_opmerking, '@@',CHR (10));
|
||
|
||
END;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE vgld_import_extern_bedrijf (p_import_key IN NUMBER)
|
||
AS
|
||
v_errormsg VARCHAR2 (1000);
|
||
oracle_err_num NUMBER;
|
||
oracle_err_mes VARCHAR2 (200);
|
||
v_seq_of_columns VARCHAR(255);
|
||
BEGIN
|
||
-- hulpje 1;2;3;4;5;6;7;8;9;0;1;2;3;4;5;6;7;8;9;0;1;2;3;4;5;6;7;8;9;0;1;2;3
|
||
v_seq_of_columns := '2;1;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;0;3;0;0;0;4;0;0';
|
||
fac_import_bedrijf_body (p_import_key, v_seq_of_columns, 0);
|
||
vgld_post_import_ext_bedrijf (p_import_key);
|
||
|
||
EXCEPTION
|
||
WHEN OTHERS
|
||
THEN
|
||
oracle_err_num := SQLCODE;
|
||
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
||
v_errormsg :=
|
||
'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
||
fac.imp_writelog (p_import_key,
|
||
'E',
|
||
v_errormsg,
|
||
'Inleesproces relaties afgebroken!');
|
||
END vgld_import_extern_bedrijf;
|
||
/
|
||
|
||
|
||
CREATE OR REPLACE PROCEDURE vgld_update_extern_bedrijf (p_import_key IN NUMBER)
|
||
AS
|
||
BEGIN
|
||
-- Parameter p_sync = 0 of 1:
|
||
-- 0 = er wordt niet gesynchroniseerd (op leveranciersnummer), maar gewoon (ala FIP) aangevuld. Elke leverancier wordt toegevoegd.
|
||
-- 1 = er wel wel gesynchroniseerd (op leveranciernummer), dus add + update + delete
|
||
fac_update_bedrijf_body(p_import_key, 1);
|
||
END ;
|
||
/
|
||
|
||
|
||
|
||
|
||
BEGIN adm.systrackscriptId('$Id$', 0); END;
|
||
/
|
||
|
||
BEGIN fac.registercustversion('VGLD', 9); END;
|
||
/
|
||
|
||
commit;
|
||
|
||
spool off
|