UWVA#41977: KPN(_PRJ)-import/Robuuster bij dubbele aanlevering van bestanden

svn path=/Customer/trunk/; revision=35349
This commit is contained in:
Maarten van der Heide
2017-09-18 09:19:12 +00:00
parent 29179f78c5
commit 9111b0c139

View File

@@ -21,14 +21,12 @@ SET DEFINE OFF
-- UWVA#15040 Import van projectkostenplaatsen die niet voorkomen in de KPN import
CREATE OR REPLACE PROCEDURE uwva_import_kpn_prj (p_import_key IN NUMBER)
AS
CURSOR c_cursor
IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
NEXT_RECORD c_cursor%ROWTYPE;
CURSOR c_cursor IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
next_record c_cursor%ROWTYPE;
v_newline VARCHAR2 (1000); -- Input line
v_field VARCHAR2 (100);
@@ -37,7 +35,6 @@ AS
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
header_is_valid NUMBER;
v_empty VARCHAR2 (100);
v_afdeling VARCHAR2 (100);
v_status VARCHAR2 (100);
v_omschrijving VARCHAR2 (100);
@@ -48,12 +45,12 @@ BEGIN
header_is_valid := 0;
DELETE FROM uwva_imp_kpn_prj;
DELETE FROM uwva_imp_kpn_prj;
FOR NEXT_RECORD IN c_cursor
LOOP
BEGIN
v_newline := NEXT_RECORD.FAC_IMP_FILE_LINE;
v_newline := next_record.FAC_IMP_FILE_LINE;
fac.imp_getfield (v_newline, v_fielddelimitor, v_boekingsunit);
fac.imp_getfield (v_newline, v_fielddelimitor, v_project);
fac.imp_getfield (v_newline, v_fielddelimitor, v_omschrijving);
@@ -86,17 +83,11 @@ BEGIN
SUBSTR (v_omschrijving, 1, 60),
SUBSTR (v_boekingsunit, 1, 6));
ELSE
fac.imp_writelog (
p_import_key,
'E',
'Invalid import file',
'Er is een ongeldige Projectkostenplaats aangetroffen in het importbestand:'
|| SUBSTR (v_project, 1, 30)
);
fac.imp_writelog (p_import_key, 'E', 'Invalid import file', 'Er is een ongeldige Projectkostenplaats aangetroffen in het importbestand:' || SUBSTR (v_project, 1, 30));
-- UWVA#23269: Hier stond uwva_imp_kpn en dat leek mij niet goed (zeker met 't
-- vervolg in uwva_update_abs() zoals dat tegenwoordig het geval is)!!!
DELETE FROM uwva_imp_kpn_prj; -- maak uwva_imp_kpn_prj weer leeg.
DELETE FROM uwva_imp_kpn_prj; -- maak uwva_imp_kpn_prj weer leeg.
EXIT; -- kostenplaats niet 6 posities; voorloopnullen kunnen weggevallen zijn.
END IF;
END IF;
@@ -106,48 +97,41 @@ BEGIN
IF (header_is_valid = 0)
THEN
fac.imp_writelog (
p_import_key,
'E',
'Invalid import file',
'Er is geen geldige Header aangetroffen en in het importbestand'
);
fac.imp_writelog (p_import_key, 'E', 'Invalid import file', 'Er is geen geldige Header aangetroffen en in het importbestand');
END IF;
-- UWVA#41977: Import robuust gemaakt tegen dubbele aanlevering van KPN_PRJ-bestand.
DELETE FROM fac_imp_file
WHERE fac_import_key = p_import_key;
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_errormsg,
'');
v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'E', v_errormsg, '');
END;
/
CREATE OR REPLACE PROCEDURE uwva_update_kpn_prj (p_import_key IN NUMBER)
AS
BEGIN
NULL;
-- update wordt door de uwva_update_kpn procedure uitgevoerd.
NULL;
END;
/
-- UWVA#7 Import van kostenplaatsen
-- UWVA#20021 Nu met organisatiestructuur en budgethouders + mandaten
-- (waardoor budgethouderimport overbodig wordt)
CREATE OR REPLACE PROCEDURE uwva_import_kpn (
p_import_key IN NUMBER
)
CREATE OR REPLACE PROCEDURE uwva_import_kpn (p_import_key IN NUMBER)
AS
CURSOR c_cursor IS
SELECT *
FROM fac_imp_file
WHERE fac_import_key = p_import_key
ORDER BY fac_imp_file_index;
next_record c_cursor%ROWTYPE;
next_record c_cursor%ROWTYPE;
v_newline VARCHAR2 (1000); -- Input line
v_field VARCHAR2 (100);
@@ -180,7 +164,6 @@ BEGIN
FOR next_record IN c_cursor LOOP
BEGIN
v_newline := next_record.FAC_IMP_FILE_LINE;
fac.imp_getfield (v_newline, v_fielddelimitor, v_afdeling);
fac.imp_getfield (v_newline, v_fielddelimitor, v_omschrijving);
@@ -194,40 +177,47 @@ BEGIN
fac.imp_getfield (v_newline, v_fielddelimitor, v_perslid_nr);
fac.imp_getfield (v_newline, v_fielddelimitor, v_mandaatcode);
fac.imp_getfield (v_newline, v_fielddelimitor, v_date1);
fac.imp_getfield (v_newline, v_fielddelimitor, v_date2);
fac.imp_getfield (v_newline, v_fielddelimitor, v_date2);
IF ( header_is_valid = 0
AND v_afdeling = 'code_eenheid' --code_eenheid
AND v_omschrijving = 'naam_eenheid' --naam_eenheid
AND v_niv2_code = 'code_eenheid_niveau_2' --code_eenheid_niveau_2
AND v_afdeling = 'code_eenheid' --code_eenheid
AND v_omschrijving = 'naam_eenheid' --naam_eenheid
AND v_niv2_code = 'code_eenheid_niveau_2' --code_eenheid_niveau_2
AND v_niv2_oms = 'naam_eenheid_nivo_2' --naam_eenheid_nivo_2
AND v_niv3_code = 'code_eenheid_niveau_3' --code_eenheid_niveau_3
AND v_niv4_code = 'code_eenheid_niveau_4' --code_eenheid_niveau_4
AND v_niv5_code = 'code_eenheid_niveau_5' --code_eenheid_niveau_5
AND v_niv6_code = 'code_eenheid_niveau_6' --code_eenheid_niveau_6
AND v_niv7_code = 'code_eenheid_niveau_7' --code_eenheid_niveau_7
AND v_perslid_nr = 'wnr_leidinggevende' --wnr_leidinggevende
AND v_mandaatcode = 'code_mandaat' --code_mandaat
AND v_date1 = 'start_datum' --start_datum
AND v_date2 = 'eind_datum' --eind_datum
AND v_niv3_code = 'code_eenheid_niveau_3' --code_eenheid_niveau_3
AND v_niv4_code = 'code_eenheid_niveau_4' --code_eenheid_niveau_4
AND v_niv5_code = 'code_eenheid_niveau_5' --code_eenheid_niveau_5
AND v_niv6_code = 'code_eenheid_niveau_6' --code_eenheid_niveau_6
AND v_niv7_code = 'code_eenheid_niveau_7' --code_eenheid_niveau_7
AND v_perslid_nr = 'wnr_leidinggevende' --wnr_leidinggevende
AND v_mandaatcode = 'code_mandaat' --code_mandaat
AND v_date1 = 'start_datum' --start_datum
AND v_date2 = 'eind_datum' --eind_datum
)
THEN
header_is_valid := 1;
ELSE
IF (header_is_valid = 1 AND v_afdeling != ' ')
THEN
IF (LENGTH(v_afdeling) >= 6) -- lengte van kostenplaats moet minimaal 6 posities zijn.
IF (LENGTH (v_afdeling) >= 6) -- lengte van kostenplaats moet minimaal 6 posities zijn.
THEN
IF (SYSDATE >= TO_DATE(v_date1, 'dd-mm-yyyy') AND SYSDATE <= TO_DATE(v_date2, 'dd-mm-yyyy'))
THEN v_status := 'A';
ELSE v_status := 'I';
END IF;
IF (SYSDATE >= TO_DATE (v_date1, 'dd-mm-yyyy') AND SYSDATE <= TO_DATE (v_date2, 'dd-mm-yyyy'))
THEN v_status := 'A';
ELSE v_status := 'I';
END IF;
INSERT INTO uwva_imp_kpn
(afdeling, status,
(afdeling,
status,
omschrijving,
niv2_code, niv3_code, niv4_code, niv5_code, niv6_code, niv7_code,
perslid_nr, mandaatcode
niv2_code,
niv3_code,
niv4_code,
niv5_code,
niv6_code,
niv7_code,
perslid_nr,
mandaatcode
)
VALUES (SUBSTR (v_afdeling, 1, 6), SUBSTR (v_status, 1, 1),
SUBSTR (v_omschrijving, 1, 60),
@@ -245,37 +235,29 @@ BEGIN
SUBSTR (v_perslid_nr, 1, 16), SUBSTR(v_mandaatcode, 1, 6)
);
ELSE
fac.imp_writelog
(p_import_key,
'E',
'Invalid import file',
'Er is een ongeldige Kostenplaats aangetroffen in het importbestand. Een kostenplaats moet uit 6 posities bestaan. kostenplaats:' || SUBSTR (v_afdeling, 1, 6)
);
DELETE FROM uwva_imp_kpn; -- maak uwva_imp_kpn weer leeg.
EXIT; -- kostenplaats heeft geen 6 posities. Voorloopnullen kunnen weggevallen zijn.
fac.imp_writelog (p_import_key, 'E', 'Invalid import file', 'Er is een ongeldige Kostenplaats aangetroffen in het importbestand. Een kostenplaats moet uit 6 posities bestaan. kostenplaats:' || SUBSTR (v_afdeling, 1, 6));
DELETE FROM uwva_imp_kpn; -- maak uwva_imp_kpn weer leeg.
EXIT; -- kostenplaats heeft geen 6 posities. Voorloopnullen kunnen weggevallen zijn.
END IF;
END IF;
END IF;
END;
END LOOP;
IF (header_is_valid = 0)
THEN
fac.imp_writelog
(p_import_key,
'E',
'Invalid import file',
'Er is geen geldige Header aangetroffen en in het importbestand'
);
fac.imp_writelog (p_import_key, 'E', 'Invalid import file', 'Er is geen geldige Header aangetroffen en in het importbestand');
END IF;
-- UWVA#41977: Import robuust gemaakt tegen dubbele aanlevering van KPN-bestand.
DELETE FROM fac_imp_file
WHERE fac_import_key = p_import_key;
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 || ')';
v_errormsg := 'OTHERS (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'E', v_errormsg, '');
END;
/
@@ -6157,7 +6139,7 @@ AS
prs_perslidwerkplek pw,
alg_locatie l
WHERE p.prs_perslid_nr IS NOT NULL
AND p.prs_perslid_key = pf.prs_perslid_key
AND p.prs_perslid_key = pf.prs_perslid_key
AND w.prs_werkplek_key(+) = pw.prs_werkplek_key
AND p.prs_perslid_key = pw.prs_perslid_key(+)
AND w.alg_locatie_key = l.alg_locatie_key(+)