UWVA#69484 RESRUIMTEN-import/Uitbreiden met capaciteit

svn path=/Customer/trunk/; revision=55685
This commit is contained in:
Maarten van der Heide
2022-04-25 11:40:25 +00:00
parent 622a5224b4
commit 02c895ed66

View File

@@ -8210,15 +8210,14 @@ AS
TO_CHAR (x.alg_ruimte_key) alg_key,
z.ins_discipline_omschrijving,
z.res_ruimte_nr,
TO_CHAR(DECODE (
cap1.def_ro_key,
NULL,
(SELECT ro.res_ruimte_opstel_bezoekers
FROM res_ruimte_opstelling ro
WHERE ro.res_ruimte_opstel_key = cap2.min_ro_key),
(SELECT ro.res_ruimte_opstel_bezoekers
FROM res_ruimte_opstelling ro
WHERE ro.res_ruimte_opstel_key = cap1.def_ro_key)))
DECODE (cap1.def_ro_key,
NULL,
(SELECT TO_CHAR (ro.res_ruimte_opstel_bezoekers)
FROM res_ruimte_opstelling ro
WHERE ro.res_ruimte_opstel_key = cap2.min_ro_key),
(SELECT TO_CHAR (ro.res_ruimte_opstel_bezoekers)
FROM res_ruimte_opstelling ro
WHERE ro.res_ruimte_opstel_key = cap1.def_ro_key))
norm_capaciteit,
TO_CHAR (z.res_ruimte_key) res_key,
z.res_ruimte_image fotonaam,
@@ -8237,7 +8236,7 @@ AS
alg_v_aanwezigverdieping v,
alg_v_aanweziggebouw g,
alg_v_aanweziglocatie l
WHERE rar.alg_ruimte_key = r.alg_ruimte_key
WHERE rar.alg_ruimte_key = r.alg_ruimte_key
AND r.alg_verdieping_key = v.alg_verdieping_key
AND v.alg_gebouw_key = g.alg_gebouw_key
AND g.alg_locatie_key = l.alg_locatie_key) x
@@ -8256,25 +8255,24 @@ AS
AND a.bez_actie_key(+) = rr.bez_actie_key) z
ON x.res_ruimte_key = z.res_ruimte_key
LEFT JOIN -- Default ruimte-capaciteit (indien gedefinieerd)
(SELECT ro.res_ruimte_key,
ro.res_ruimte_opstel_key def_ro_key
FROM res_ruimte_opstelling ro
WHERE ro.res_ruimte_opstel_default = 1) cap1
( SELECT res_ruimte_key, MIN (res_ruimte_opstel_key) def_ro_key
FROM res_ruimte_opstelling
WHERE res_ruimte_opstel_verwijder IS NULL
AND res_ruimte_opstel_default = 1
GROUP BY res_ruimte_key) cap1
ON x.res_ruimte_key = cap1.res_ruimte_key
LEFT JOIN -- Anders de eerst gedefinieerde ruimte-capaciteit
( SELECT ro.res_ruimte_key,
MIN (ro.res_ruimte_opstel_key) min_ro_key
FROM res_ruimte_opstelling ro
GROUP BY ro.res_ruimte_key) cap2
( SELECT res_ruimte_key, MIN (res_ruimte_opstel_key) min_ro_key
FROM res_ruimte_opstelling
WHERE res_ruimte_opstel_verwijder IS NULL
GROUP BY res_ruimte_key) cap2
ON x.res_ruimte_key = cap2.res_ruimte_key;
CREATE OR REPLACE PROCEDURE uwva_import_resruimten (p_import_key IN NUMBER)
AS
c_delim VARCHAR2 (1) := ';';
v_newline VARCHAR2 (1000); -- Input line
v_newline VARCHAR2 (4000); -- Input line
v_errormsg VARCHAR2 (1000);
v_errorhint VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
header_is_valid NUMBER;
@@ -8282,21 +8280,21 @@ AS
v_count_import NUMBER (10);
v_ongeldig NUMBER (1);
v_aanduiding VARCHAR2 (200);
-- De importvelden
v_alg_gebouw_code VARCHAR2 (255); -- C10
-- De importvelden:
v_alg_gebouw_code VARCHAR2 (255); -- C12
v_alg_verdieping_code VARCHAR2 (255); -- C10
v_alg_ruimte_nr VARCHAR2 (255); -- C10
v_alg_ruimte_key VARCHAR2 (255); -- N10
v_alg_ruimte_key_n NUMBER (10); -- N10
v_ins_discipline_omschrijving VARCHAR2 (255); -- C30
v_res_ruimte_nr VARCHAR2 (255); -- C40
v_norm_capaciteit VARCHAR2 (255); -- dummy
v_norm_capaciteit VARCHAR2 (255); -- N5
v_norm_capaciteit_n NUMBER (10); -- N5
v_res_ruimte_key VARCHAR2 (255); -- N10
v_res_ruimte_key_n NUMBER (10); -- N10
v_fotonaam VARCHAR2 (255); -- C255
v_res_ruimte_omschrijving VARCHAR2 (1000); -- C255
-- Overige velden:
CURSOR c1
IS
SELECT *
@@ -8305,11 +8303,11 @@ AS
ORDER BY fac_imp_file_index;
BEGIN
DELETE FROM uwva_imp_resruimten;
COMMIT;
v_count_tot := 0;
v_count_import := 0;
header_is_valid := 0;
COMMIT;
FOR rec1 IN c1
LOOP
@@ -8329,16 +8327,8 @@ BEGIN
fac.imp_getfield (v_newline, c_delim, v_res_ruimte_key);
fac.imp_getfield (v_newline, c_delim, v_fotonaam);
fac.imp_getfield (v_newline, c_delim, v_res_ruimte_omschrijving);
v_aanduiding :=
'['
|| v_alg_gebouw_code
|| '|'
|| v_alg_verdieping_code
|| '|'
|| v_alg_ruimte_nr
|| '|'
|| v_res_ruimte_nr
|| '] ';
v_aanduiding := '[' || v_alg_gebouw_code || '|' || v_alg_verdieping_code || '|' || v_alg_ruimte_nr || '|' || v_res_ruimte_nr || '] ';
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen
-- de juiste kolomkop. Ik controleer daarbij ALLE kolommen!
@@ -8361,92 +8351,62 @@ BEGIN
ELSE
v_count_tot := v_count_tot + 1;
-- Controleer alle veldwaarden
v_errormsg :=
'Fout bij inlezen gebouwcode [' || v_alg_gebouw_code || ']';
v_errormsg := 'Fout inlezen gebouwcode [' || v_alg_gebouw_code || ']';
v_alg_gebouw_code := TRIM (v_alg_gebouw_code);
--
v_errormsg :=
'Fout bij inlezen verdiepingcode ['
|| v_alg_verdieping_code
|| ']';
v_errormsg := 'Fout inlezen verdiepingcode [' || v_alg_verdieping_code || ']';
v_alg_verdieping_code := TRIM (v_alg_verdieping_code);
--
v_errormsg :=
'Fout bij inlezen ruimtenr [' || v_alg_ruimte_nr || ']';
v_errormsg := 'Fout inlezen ruimtenr [' || v_alg_ruimte_nr || ']';
v_alg_ruimte_nr := TRIM (v_alg_ruimte_nr);
--
v_errormsg :=
'Fout bij inlezen alg_key [' || v_alg_ruimte_key || ']';
v_alg_ruimte_key_n := TO_NUMBER (v_alg_ruimte_key);
v_errormsg := 'Fout inlezen alg_key [' || v_alg_ruimte_key || ']';
v_alg_ruimte_key_n := fac.safe_to_number (v_alg_ruimte_key);
--
v_errormsg :=
'Fout bij inlezen ruimtecategorie ['
|| v_ins_discipline_omschrijving
|| ']';
v_ins_discipline_omschrijving :=
TRIM (v_ins_discipline_omschrijving);
v_errormsg := 'Fout inlezen ruimtecategorie [' || v_ins_discipline_omschrijving || ']';
v_ins_discipline_omschrijving := TRIM (v_ins_discipline_omschrijving);
--
v_errormsg :=
'Fout bij inlezen ruimtenaam [' || v_res_ruimte_nr || ']';
v_errormsg := 'Fout inlezen ruimtenaam [' || v_res_ruimte_nr || ']';
v_res_ruimte_nr := TRIM (v_res_ruimte_nr);
IF LENGTH (v_res_ruimte_nr) > 40
THEN
v_res_ruimte_nr := SUBSTR (v_res_ruimte_nr, 1, 40);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Ruimtenaam te lang',
'Ruimtenaam wordt afgebroken tot ['
|| v_res_ruimte_nr
|| ']');
fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Ruimtenaam te lang', 'Ruimtenaam afgebroken tot [' || v_res_ruimte_nr || ']');
END IF;
-- DUMMY: hier nog wel ingelezen, maar verder niets mee doen!
v_errormsg :=
'Fout bij inlezen max. bezoekers ['
|| v_norm_capaciteit
|| ']';
v_norm_capaciteit := TRIM (v_norm_capaciteit);
-- Per UWVA#69484 (UWVA126) niet langer DUMMY!
v_errormsg := 'Fout inlezen norm_capaciteit [' || v_norm_capaciteit || ']';
v_norm_capaciteit_n := fac.safe_to_number (v_norm_capaciteit);
--
v_errormsg :=
'Fout bij inlezen res_key [' || v_res_ruimte_key || ']';
v_res_ruimte_key_n := TO_NUMBER (v_res_ruimte_key);
v_errormsg := 'Fout inlezen res_key [' || v_res_ruimte_key || ']';
v_res_ruimte_key_n := fac.safe_to_number (v_res_ruimte_key);
--
v_errormsg := 'Fout bij inlezen fotonaam [' || v_fotonaam || ']';
v_errormsg := 'Fout inlezen fotonaam [' || v_fotonaam || ']';
v_fotonaam := TRIM (v_fotonaam);
--
v_errormsg :=
'Fout bij inlezen omschrijving ['
|| v_res_ruimte_omschrijving
|| ']';
v_errormsg := 'Fout inlezen omschrijving [' || v_res_ruimte_omschrijving || ']';
v_res_ruimte_omschrijving := TRIM (v_res_ruimte_omschrijving);
IF LENGTH (v_res_ruimte_omschrijving) > 255
THEN
v_res_ruimte_omschrijving :=
SUBSTR (v_res_ruimte_omschrijving, 1, 255);
fac.imp_writelog (
p_import_key,
'W',
v_aanduiding || 'Omschrijving te lang',
'Omschrijving wordt afgebroken na 255 tekens');
v_res_ruimte_omschrijving := SUBSTR (v_res_ruimte_omschrijving, 1, 255);
fac.imp_writelog (p_import_key, 'W', v_aanduiding || 'Omschrijving te lang', 'Omschrijving afgebroken na 255 tekens');
END IF;
-- Insert geformatteerde import record
IF v_ongeldig = 0
THEN
BEGIN
v_errormsg := 'Fout bij toevoegen regel aan importtabel';
v_errormsg := 'Fout wegschrijven importregel';
INSERT INTO uwva_imp_resruimten (alg_gebouw_code,
alg_verdieping_code,
alg_ruimte_nr,
@@ -8455,7 +8415,8 @@ BEGIN
res_ruimte_nr,
res_ruimte_key,
fotonaam,
res_ruimte_omschrijving)
res_ruimte_omschrijving,
norm_capaciteit)
VALUES (v_alg_gebouw_code,
v_alg_verdieping_code,
v_alg_ruimte_nr,
@@ -8464,8 +8425,8 @@ BEGIN
v_res_ruimte_nr,
v_res_ruimte_key_n,
v_fotonaam,
v_res_ruimte_omschrijving);
v_res_ruimte_omschrijving,
v_norm_capaciteit);
COMMIT;
v_count_import := v_count_import + 1;
@@ -8473,19 +8434,10 @@ BEGIN
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
v_errormsg
|| ' ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (
p_import_key,
'E',
v_aanduiding || v_errormsg,
'Fout bij toevoegen regel aan importtabel UWVA_IMP_RESRUIMTEN.');
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'E', v_aanduiding || v_errormsg, '');
COMMIT;
END;
END IF;
END IF;
@@ -8494,72 +8446,52 @@ BEGIN
IF (header_is_valid = 0)
THEN
fac.imp_writelog (p_import_key,
'E',
'Ongeldig importbestand',
'Geen header of header niet volgens specificatie!');
fac.imp_writelog (p_import_key, 'E', 'Ongeldig importbestand', 'Geen header of header niet volgens specificatie!');
ELSE
fac.imp_writelog (
p_import_key,
'S',
'Inleesproces: aantal ingelezen importregels: '
|| TO_CHAR (v_count_tot),
'');
fac.imp_writelog (
p_import_key,
'S',
'Inleesproces: aantal ongeldige niet ingelezen importregels: '
|| TO_CHAR (v_count_tot - v_count_import),
'');
fac.imp_writelog (p_import_key, 'S', 'Reserveerbare ruimten/#ingelezen importregels: ' || TO_CHAR (v_count_tot), '');
fac.imp_writelog (p_import_key, 'S', 'Reserveerbare ruimten/#ongeldige niet ingelezen 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 :=
'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (
p_import_key,
'E',
v_errormsg,
'Inleesproces reserveerbare ruimtegegevens afgebroken!');
v_errormsg := 'ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'E', v_errormsg, 'Inleesproces reserveerbare ruimten afgebroken!');
COMMIT;
END uwva_import_resruimten;
/
CREATE OR REPLACE PROCEDURE uwva_update_resruimten (p_import_key IN NUMBER)
AS
-- Cursor loopt over tijdelijke tabel met daarin opgebouwd de reserveerbare
-- ruimtegegevens.
v_errormsg VARCHAR2 (1000) := '-';
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
v_count_upd NUMBER (10);
-- Cursor loopt over importtabel met daarin de reserveerbare ruimtegegevens.
CURSOR c1
IS
SELECT alg_ruimte_key,
res_ruimte_key,
res_ruimte_nr,
fotonaam,
res_ruimte_omschrijving
res_ruimte_omschrijving,
norm_capaciteit
FROM uwva_imp_resruimten
ORDER BY 1, 2;
v_count_tot NUMBER (10);
v_count_upd NUMBER (10);
v_ongeldig NUMBER;
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
-- SUBFUNC
FUNCTION verwerk_regel (p_import_key IN NUMBER,
p_alg_key IN NUMBER,
p_res_key IN NUMBER,
p_res_ruimte_nr IN VARCHAR2,
p_fotonaam IN VARCHAR2,
p_res_ruimte_omschrijving IN VARCHAR2)
p_res_ruimte_omschrijving IN VARCHAR2,
p_norm_capaciteit IN VARCHAR2)
RETURN NUMBER
IS
--c_foto_prefix VARCHAR2 (20) := '/photos/';
v_errormsg VARCHAR2 (1000);
oracle_err_num NUMBER;
oracle_err_mes VARCHAR2 (200);
@@ -8570,34 +8502,33 @@ AS
BEGIN
v_ongeldig := 0;
v_aanduiding := '[' || p_alg_key || '|' || p_res_key || '] ';
-- Controleer ruimte-keys
v_errormsg := 'Fout bepalen resruimte';
SELECT COUNT (rar.res_alg_ruimte_key)
v_errormsg := 'Fout bepalen resruimte';
SELECT COUNT (res_alg_ruimte_key)
INTO v_count
FROM res_v_aanwezigalg_ruimte rar
WHERE rar.alg_ruimte_key = p_alg_key
AND rar.res_ruimte_key = p_res_key;
FROM res_v_aanwezigalg_ruimte
WHERE alg_ruimte_key = p_alg_key AND res_ruimte_key = p_res_key;
IF v_count = 1
THEN
v_errormsg := 'Fout bijwerken resruimte-naam/omschrijving/foto';
UPDATE res_ruimte
SET res_ruimte_nr = COALESCE (p_res_ruimte_nr, res_ruimte_nr),
res_ruimte_omschrijving =
COALESCE (p_res_ruimte_omschrijving,
res_ruimte_omschrijving),
res_ruimte_omschrijving = COALESCE (p_res_ruimte_omschrijving, res_ruimte_omschrijving),
res_ruimte_image = COALESCE (p_fotonaam, res_ruimte_image)
WHERE res_ruimte_key = p_res_key;
-- UWVA#69484: Uitbreiden met capaciteit!
v_errormsg := 'Fout bijwerken capaciteit';
UPDATE res_ruimte_opstelling
SET res_ruimte_opstel_bezoekers = COALESCE (fac.safe_to_number (p_norm_capaciteit), res_ruimte_opstel_bezoekers)
WHERE res_ruimte_opstel_verwijder IS NULL
AND res_ruimte_key = p_res_key;
COMMIT;
ELSE
v_ongeldig := 1;
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'Regel wordt overgeslagen');
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, 'Regel overgeslagen');
COMMIT;
END IF;
@@ -8608,17 +8539,8 @@ AS
v_ongeldig := 1;
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
v_errormsg :=
v_errormsg
|| 'ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (p_import_key,
'W',
v_aanduiding || v_errormsg,
'');
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'W', v_aanduiding || v_errormsg, '');
COMMIT;
RETURN v_ongeldig;
@@ -8626,53 +8548,28 @@ AS
-- MAIN
BEGIN
-- Loop door alle resruimte-regels en verwerk deze.
v_count_tot := 0;
v_count_upd := 0;
FOR rec IN c1
LOOP
BEGIN
v_count_tot := v_count_tot + 1;
IF verwerk_regel (p_import_key,
rec.alg_ruimte_key,
rec.res_ruimte_key,
rec.res_ruimte_nr,
rec.fotonaam,
rec.res_ruimte_omschrijving) = 0
v_errormsg := 'Fout verwerken resruimte-regel';
IF verwerk_regel (p_import_key, rec.alg_ruimte_key, rec.res_ruimte_key, rec.res_ruimte_nr, rec.fotonaam, rec.res_ruimte_omschrijving, rec.norm_capaciteit) = 0
THEN
v_count_upd := v_count_upd + 1;
END IF;
END;
END LOOP;
fac.imp_writelog (
p_import_key,
'S',
'Importproces: '
|| TO_CHAR (v_count_upd)
|| ' van de '
|| TO_CHAR (v_count_tot)
|| ' regels verwerkt',
'');
fac.imp_writelog (p_import_key, 'S', 'Reserveerbare ruimten/#bijgewerkt: ' || TO_CHAR (v_count_upd), '');
COMMIT;
EXCEPTION
WHEN OTHERS
THEN
oracle_err_num := SQLCODE;
oracle_err_mes := SUBSTR (SQLERRM, 1, 150);
v_errormsg :=
v_errormsg
|| 'ORACLE (error '
|| oracle_err_num
|| '/'
|| oracle_err_mes
|| ')';
fac.imp_writelog (
p_import_key,
'E',
'Importproces reserveerbare ruimtegegevens afgebroken!',
v_errormsg);
v_errormsg := v_errormsg || ' ORACLE (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
fac.imp_writelog (p_import_key, 'E', v_errormsg, 'Importproces reserveerbare ruimten afgebroken!');
END uwva_update_resruimten;
/