5786 lines
233 KiB
MySQL
5786 lines
233 KiB
MySQL
--
|
|
-- $Id$
|
|
--
|
|
-- Script containing customer specific db-configuration for DVON.
|
|
DEFINE thisfile = 'DVON.SQL'
|
|
DEFINE dbuser = '^FMD'
|
|
|
|
SET ECHO ON
|
|
SET DEFINE ON
|
|
COLUMN fcltlogfile NEW_VALUE fcltlogfile NOPRINT;
|
|
WHENEVER SQLERROR EXIT;
|
|
SELECT adm.scriptspoolfile('&dbuser', '&thisfile') AS fcltlogfile FROM DUAL;
|
|
WHENEVER SQLERROR CONTINUE;
|
|
SPOOL &fcltlogfile
|
|
SET DEFINE OFF
|
|
|
|
------ payload begin ------
|
|
|
|
CREATE OR REPLACE PROCEDURE dvon_import_prs (p_import_key IN NUMBER)
|
|
AS
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
v_errormsg VARCHAR2 (400);
|
|
v_errorhint VARCHAR2 (400);
|
|
v_newline FAC_IMP_FILE.FAC_IMP_FILE_LINE%TYPE;
|
|
BEGIN
|
|
|
|
BEGIN
|
|
SELECT fac_imp_file_line
|
|
INTO v_newline
|
|
FROM fac_imp_file
|
|
WHERE fac_import_key = p_import_key
|
|
AND fac_imp_file_index = 1;
|
|
|
|
IF v_newline LIKE
|
|
CHR (TO_NUMBER ('EF', 'xx'))
|
|
|| CHR (TO_NUMBER ('BB', 'xx'))
|
|
|| CHR (TO_NUMBER ('BF', 'xx'))
|
|
|| '%'
|
|
THEN
|
|
-- EF BB BF aangetroffen
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
'Byte Order Mark aangetroffen',
|
|
'Bestand heeft onbehandeld UTF-8 formaat.'
|
|
);
|
|
v_newline := SUBSTR (v_newline, 4);
|
|
END IF;
|
|
|
|
-- Verwijder de dubbele quotes
|
|
v_newline := REPLACE (v_newline, '"');
|
|
|
|
UPDATE fac_imp_file
|
|
SET fac_imp_file_line = v_newline
|
|
WHERE fac_import_key = p_import_key
|
|
AND fac_imp_file_index = 1;
|
|
|
|
|
|
EXCEPTION WHEN OTHERS
|
|
THEN
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
'Fout bij controle op Byte Order Mark',
|
|
''
|
|
);
|
|
END;
|
|
|
|
v_errorhint := 'Generieke update';
|
|
-- de sequence array staat beschreven in PRS_PAC.SRC bij de prs.import_perslid proc
|
|
prs.import_perslid (p_import_key,
|
|
'0;0;0;0;0;0;5;2;0;3;'||
|
|
'0;0;0;0;0;0;0;4;0;0;'||
|
|
'5;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',
|
|
'accountnaam;achternaam;voornaam;e-mail;afdeling'
|
|
);
|
|
|
|
UPDATE fac_imp_perslid
|
|
SET prs_srtperslid_omschrijving = 'Onbekend'
|
|
WHERE fac_import_key = p_import_key;
|
|
|
|
COMMIT;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
|
v_errormsg := 'Error ' || oracle_err_num || '/' || oracle_err_mes;
|
|
fac.imp_writelog (p_import_key, 'E', v_errormsg, v_errorhint);
|
|
END dvon_import_prs;
|
|
/
|
|
|
|
CREATE OR REPLACE PROCEDURE dvon_update_prs (
|
|
p_import_key IN NUMBER
|
|
) IS
|
|
-- Alle personen verwijderen die niet meer in import bestand voorkomen.
|
|
CURSOR c_del
|
|
IS
|
|
SELECT p.prs_perslid_key, p.prs_perslid_oslogin, pf.prs_perslid_naam_full
|
|
FROM fac_imp_perslid i, prs_perslid p, prs_v_perslid_fullnames_all pf
|
|
WHERE p.prs_perslid_oslogin = i.prs_perslid_oslogin(+)
|
|
AND pf.prs_perslid_key = p.prs_perslid_key
|
|
AND p.prs_perslid_oslogin IS NOT NULL
|
|
AND i.prs_perslid_oslogin IS NULL
|
|
AND p.prs_perslid_verwijder IS NULL
|
|
AND p.prs_perslid_oslogin NOT LIKE '%_%'
|
|
AND p.prs_perslid_oslogin2 IS NULL
|
|
ORDER BY 2;
|
|
|
|
v_count NUMBER;
|
|
|
|
BEGIN
|
|
-- generic update
|
|
|
|
SELECT count(*)
|
|
INTO v_count
|
|
FROM fac_imp_perslid;
|
|
|
|
IF v_count < 150
|
|
THEN
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
'Het aantal te importeren personen is te klein ('
|
|
|| TO_CHAR (v_count) || ')',
|
|
'Zie Specificatie'
|
|
);
|
|
RETURN;
|
|
END IF;
|
|
|
|
-- 'LOGIN' betekent dat op basis van oslogin wordt gematched.
|
|
-- 'A' betekent altijd alle (andere/overige) werkplekken verwijderen
|
|
prs.update_perslid (p_import_key, 'LOGIN', NULL);
|
|
|
|
-- Verwijder personen die niet meer in de import voorkomen.
|
|
FOR rec IN c_del
|
|
LOOP
|
|
BEGIN
|
|
prs.delete_perslid (p_import_key, rec.prs_perslid_key);
|
|
END;
|
|
END LOOP;
|
|
|
|
END dvon_update_prs;
|
|
/
|
|
|
|
-- Custom imports hier
|
|
-- Catalogusartikelen import, gebaseerd op de FIP uit FAC_PACF.SRC incl kenmerken van bestelregel
|
|
|
|
CREATE OR REPLACE PROCEDURE DVON_IMPORT_CATARTIKEL (
|
|
p_import_key IN NUMBER
|
|
)
|
|
IS
|
|
p_discipline_key NUMBER(10);
|
|
p_bedrijf_key NUMBER(10);
|
|
|
|
c_delim VARCHAR2 (1) := ';';
|
|
v_newline fac_imp_file.fac_imp_file_line%TYPE; -- Input line
|
|
v_errormsg VARCHAR2 (1000);
|
|
v_errorhint VARCHAR2 (1000);
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
v_aanduiding VARCHAR2 (200);
|
|
header_is_valid NUMBER := 0;
|
|
v_count_tot NUMBER (10) := 0;
|
|
v_count_import NUMBER (10) := 0;
|
|
v_ongeldig NUMBER (1) := 0;
|
|
|
|
-- De importvelden
|
|
v_discipline_omschrijving VARCHAR2 (255); -- Catalogus naam (moet al bestaan)
|
|
v_bedrijf_naam VARCHAR2 (255); -- Leverancier
|
|
v_srtdeel_nr VARCHAR2 (255); -- Artikelnr
|
|
v_srtgroep_omschrijving VARCHAR2 (255); -- Artikelgroep
|
|
v_srtdeel_omschrijving VARCHAR2 (255); -- Artikelomschrijving
|
|
v_srtdeel_prijs VARCHAR2 (255); -- v_srtdeel_prijs = 0
|
|
v_srtdeel_eenheid VARCHAR2 (255); -- Stuk / Pak / etc.
|
|
v_srtdeel_image VARCHAR2 (255); -- Picture
|
|
v_srtdeel_wijzigdagen VARCHAR2 (255); -- Behouden
|
|
v_srtdeel_annuleerdagen VARCHAR2 (255); -- Behouden
|
|
v_srtdeel_vervaldatum VARCHAR2 (255); -- DueDate
|
|
v_srtdeel_minimumvoorraad VARCHAR2 (255); -- Minimumvoorraad
|
|
v_srtdeel_maximumvoorraad VARCHAR2 (255); -- Maximumvoorraad
|
|
v_srtdeel_opmerking VARCHAR2 (4000); -- straks afgekapt op 2000
|
|
v_srtdeel_objectsrtcode VARCHAR2 (255); -- Objectsoortcode
|
|
v_srtdeel_kenmerksrt VARCHAR2 (255); -- Kenmerksoort (moet deze al bestaan? - Ja, maat)
|
|
v_srtdeel_volgnr VARCHAR2 (255); -- Volgnummer
|
|
v_srtdeel_verplicht VARCHAR2 (255); -- Verplicht
|
|
v_srtdeel_groep VARCHAR2 (255); -- Kenmerkgroep
|
|
|
|
-- Overige velden
|
|
v_discipline_key NUMBER (10);
|
|
v_bedrijf_key NUMBER (10);
|
|
v_bes_staffeltabel_key NUMBER (10);
|
|
|
|
CURSOR c1
|
|
IS
|
|
SELECT fac_imp_file_line,
|
|
LENGTH (TRIM (REPLACE (fac_imp_file_line, c_delim, '')))
|
|
regellengte
|
|
FROM FAC_IMP_FILE
|
|
WHERE fac_import_key = p_import_key
|
|
ORDER BY fac_imp_file_index;
|
|
|
|
BEGIN
|
|
SELECT ins_discipline_key, prs_bedrijf_key
|
|
INTO p_discipline_key, p_bedrijf_key
|
|
FROM fac_import fi, fac_import_app fia
|
|
WHERE fi.fac_import_key = p_import_key
|
|
AND fi.fac_import_app_key = fia.fac_import_app_key;
|
|
|
|
-- Eerst opruiming
|
|
-- LET OP: we ondersteunen geen multi-variant meer
|
|
DELETE FROM DVON_IMP_CATARTIKEL;
|
|
|
|
FOR rec IN c1
|
|
LOOP
|
|
BEGIN
|
|
v_aanduiding := '';
|
|
v_errorhint := 'Fout inlezen importregel';
|
|
v_newline := rec.fac_imp_file_line;
|
|
v_ongeldig := 0;
|
|
|
|
-- Lees alle veldwaarden
|
|
fac.imp_getfield (v_newline, c_delim, v_discipline_omschrijving);
|
|
fac.imp_getfield (v_newline, c_delim, v_bedrijf_naam);
|
|
fac.imp_getfield (v_newline, c_delim, v_srtdeel_nr);
|
|
fac.imp_getfield (v_newline, c_delim, v_srtgroep_omschrijving);
|
|
fac.imp_getfield (v_newline, c_delim, v_srtdeel_omschrijving);
|
|
fac.imp_getfield (v_newline, c_delim, v_srtdeel_prijs);
|
|
fac.imp_getfield (v_newline, c_delim, v_srtdeel_eenheid);
|
|
fac.imp_getfield (v_newline, c_delim, v_srtdeel_image);
|
|
fac.imp_getfield (v_newline, c_delim, v_srtdeel_wijzigdagen);
|
|
fac.imp_getfield (v_newline, c_delim, v_srtdeel_annuleerdagen);
|
|
fac.imp_getfield (v_newline, c_delim, v_srtdeel_vervaldatum);
|
|
fac.imp_getfield (v_newline, c_delim, v_srtdeel_minimumvoorraad);
|
|
fac.imp_getfield (v_newline, c_delim, v_srtdeel_maximumvoorraad);
|
|
fac.imp_getfield (v_newline, c_delim, v_srtdeel_opmerking);
|
|
fac.imp_getfield (v_newline, c_delim, v_srtdeel_objectsrtcode);
|
|
fac.imp_getfield (v_newline, c_delim, v_srtdeel_kenmerksrt);
|
|
fac.imp_getfield (v_newline, c_delim, v_srtdeel_volgnr);
|
|
fac.imp_getfield (v_newline, c_delim, v_srtdeel_verplicht);
|
|
fac.imp_getfield (v_newline, c_delim, v_srtdeel_groep);
|
|
|
|
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen
|
|
-- de juiste kolomkop. Ik controleer daarbij - sinds UWVA#21562 - bijna alle
|
|
-- kolommen (spaties in kolomheaders zijn onhandig bij "round-trip syncen").
|
|
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
|
|
IF (header_is_valid = 0)
|
|
THEN
|
|
IF UPPER (TRIM (v_discipline_omschrijving)) LIKE 'CATALOGUS%'
|
|
AND UPPER (TRIM (v_bedrijf_naam)) = 'LEVERANCIER'
|
|
AND UPPER (TRIM (v_srtdeel_nr)) = 'ARTIKELNR'
|
|
AND UPPER (TRIM (v_srtgroep_omschrijving)) = 'GROEP'
|
|
AND UPPER (TRIM (v_srtdeel_omschrijving)) = 'OMSCHRIJVING'
|
|
AND UPPER (TRIM (v_srtdeel_prijs)) = 'PRIJS'
|
|
AND UPPER (TRIM (v_srtdeel_eenheid)) = 'EENHEID'
|
|
AND UPPER (TRIM (v_srtdeel_image)) = 'PICTURE'
|
|
AND UPPER (TRIM (v_srtdeel_wijzigdagen)) = 'WIJZIGDAGEN'
|
|
AND UPPER (TRIM (v_srtdeel_annuleerdagen)) = 'ANNULEERDAGEN'
|
|
AND UPPER (TRIM (v_srtdeel_vervaldatum)) = 'DUEDATE'
|
|
AND UPPER (TRIM (v_srtdeel_minimumvoorraad)) = 'MINIMUMVOORRAAD'
|
|
AND UPPER (TRIM (v_srtdeel_maximumvoorraad)) = 'MAXIMUMVOORRAAD'
|
|
AND UPPER (TRIM (v_srtdeel_opmerking)) = 'OPMERKING'
|
|
AND UPPER (TRIM (v_srtdeel_objectsrtcode)) = 'OBJECTSOORTCODE'
|
|
AND UPPER (TRIM (v_srtdeel_kenmerksrt)) = 'KENMERKSOORT'
|
|
AND UPPER (TRIM (v_srtdeel_volgnr)) = 'VOLGNUMMER'
|
|
AND UPPER (TRIM (v_srtdeel_verplicht)) = 'VERPLICHT'
|
|
AND UPPER (TRIM (v_srtdeel_groep)) = 'KENMERKGROEP'
|
|
THEN
|
|
header_is_valid := 1;
|
|
END IF;
|
|
ELSIF rec.regellengte > 1 -- Lege regels overslaan!
|
|
THEN
|
|
v_count_tot := v_count_tot + 1;
|
|
v_aanduiding :=
|
|
'['
|
|
|| TRIM (v_discipline_omschrijving)
|
|
|| '|'
|
|
|| TRIM (v_bedrijf_naam)
|
|
|| '|'
|
|
|| TRIM (v_srtdeel_nr)
|
|
|| '] ';
|
|
|
|
v_discipline_omschrijving := TRIM (v_discipline_omschrijving);
|
|
v_errorhint :=
|
|
'Catalogus onbekend/ongeldig; regel wordt niet ingelezen';
|
|
|
|
SELECT ins_discipline_key
|
|
INTO v_discipline_key
|
|
FROM INS_TAB_DISCIPLINE
|
|
WHERE UPPER (ins_discipline_omschrijving) =
|
|
UPPER (v_discipline_omschrijving)
|
|
AND ins_discipline_module = 'BES'
|
|
AND ins_discipline_verwijder IS NULL;
|
|
|
|
v_bedrijf_naam := TRIM (v_bedrijf_naam);
|
|
v_errorhint :=
|
|
'Bedrijf onbekend/ongeldig; regel wordt niet ingelezen';
|
|
|
|
SELECT prs_bedrijf_key
|
|
INTO v_bedrijf_key
|
|
FROM PRS_BEDRIJF
|
|
WHERE UPPER (prs_bedrijf_naam) = UPPER (v_bedrijf_naam)
|
|
AND COALESCE (p_bedrijf_key, prs_bedrijf_key) =
|
|
prs_bedrijf_key -- Import bedoelt voor bedrijf?
|
|
AND prs_bedrijf_verwijder IS NULL;
|
|
|
|
v_errorhint := 'Fout bij controleren importregel';
|
|
|
|
v_srtdeel_nr := TRIM (v_srtdeel_nr);
|
|
|
|
IF LENGTH (v_srtdeel_nr) > 32
|
|
THEN
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'W',
|
|
v_aanduiding || 'Artikelnummer te lang',
|
|
'Nummer wordt afgebroken (Nr:' || v_srtdeel_nr || ')'
|
|
);
|
|
END IF;
|
|
|
|
v_srtgroep_omschrijving := TRIM (v_srtgroep_omschrijving);
|
|
|
|
IF LENGTH (v_srtgroep_omschrijving) > 60
|
|
THEN
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'W',
|
|
v_aanduiding || 'Groepomschrijving te lang',
|
|
'Omschrijving wordt afgebroken (Nr:' || v_srtdeel_nr || ')'
|
|
);
|
|
END IF;
|
|
|
|
v_srtdeel_omschrijving := TRIM (v_srtdeel_omschrijving);
|
|
|
|
IF LENGTH (v_srtdeel_omschrijving) > 100
|
|
THEN
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'W',
|
|
v_aanduiding || 'Artikelomschrijving te lang',
|
|
'Omschrijving wordt afgebroken (Nr:' || v_srtdeel_nr || ')'
|
|
);
|
|
END IF;
|
|
|
|
-- Indien leeg, dan blijft/wordt prijs=ongedefinieerd=NULL!
|
|
v_srtdeel_prijs := TRIM (v_srtdeel_prijs);
|
|
|
|
IF v_srtdeel_prijs IS NOT NULL
|
|
AND fac.safe_to_number (v_srtdeel_prijs) IS NULL
|
|
THEN
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'W',
|
|
v_aanduiding || 'Ongeldige prijs',
|
|
'Regel wordt niet ingelezen (Nr:' || v_srtdeel_nr || ')'
|
|
);
|
|
v_ongeldig := 1;
|
|
END IF;
|
|
|
|
v_srtdeel_eenheid := TRIM (v_srtdeel_eenheid);
|
|
|
|
IF LENGTH (v_srtdeel_eenheid) > 30
|
|
THEN
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'W',
|
|
v_aanduiding || 'Eenheid te lang',
|
|
'Eenheid wordt afgebroken (Nr:' || v_srtdeel_nr || ')'
|
|
);
|
|
END IF;
|
|
|
|
v_srtdeel_image := TRIM (v_srtdeel_image);
|
|
|
|
IF LENGTH (v_srtdeel_image) > 255
|
|
THEN
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'W',
|
|
v_aanduiding || 'Imagenaam te lang',
|
|
'Naam wordt afgebroken (Nr:' || v_srtdeel_nr || ')'
|
|
);
|
|
END IF;
|
|
|
|
v_srtdeel_vervaldatum := TRIM (v_srtdeel_vervaldatum);
|
|
|
|
IF v_srtdeel_vervaldatum IS NOT NULL
|
|
AND fac.safe_to_date (v_srtdeel_vervaldatum, 'yyyymmdd') IS NULL
|
|
THEN
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'W',
|
|
v_aanduiding || 'Ongeldige vervaldatum',
|
|
'Regel wordt niet ingelezen (Nr:' || v_srtdeel_nr || ')'
|
|
);
|
|
v_ongeldig := 1;
|
|
END IF;
|
|
|
|
IF v_srtdeel_wijzigdagen IS NOT NULL
|
|
AND ( fac.safe_to_number (v_srtdeel_wijzigdagen) IS NULL
|
|
OR fac.safe_to_number (v_srtdeel_wijzigdagen) < 0
|
|
OR fac.safe_to_number (v_srtdeel_wijzigdagen) > 999)
|
|
THEN
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'W',
|
|
v_aanduiding || 'Ongeldig aantal wijzigdagen',
|
|
'Regel wordt niet ingelezen (Nr:' || v_srtdeel_nr || ')'
|
|
);
|
|
v_ongeldig := 1;
|
|
END IF;
|
|
|
|
-- Annuleerdagen mag niet negatief of meer zijn dan 3 posities lang.
|
|
-- Indien leeg, dan blijft/wordt annuleerdagen=ongedefinieerd=NULL!
|
|
v_srtdeel_annuleerdagen := TRIM (v_srtdeel_annuleerdagen);
|
|
|
|
IF v_srtdeel_annuleerdagen IS NOT NULL
|
|
AND ( fac.safe_to_number (v_srtdeel_annuleerdagen) IS NULL
|
|
OR fac.safe_to_number (v_srtdeel_annuleerdagen) < 0
|
|
OR fac.safe_to_number (v_srtdeel_annuleerdagen) > 999)
|
|
THEN
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'W',
|
|
v_aanduiding || 'Ongeldig aantal annuleerdagen',
|
|
'Regel wordt niet ingelezen (Nr:' || v_srtdeel_nr || ')'
|
|
);
|
|
v_ongeldig := 1;
|
|
END IF;
|
|
|
|
v_srtdeel_opmerking := TRIM (v_srtdeel_opmerking);
|
|
|
|
IF LENGTH (v_srtdeel_opmerking) > 2000
|
|
THEN
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'W',
|
|
v_aanduiding || 'Opmerking te lang',
|
|
'Opmerking wordt afgebroken (Nr:' || v_srtdeel_nr || ')'
|
|
);
|
|
END IF;
|
|
|
|
IF v_ongeldig = 0
|
|
THEN
|
|
v_errorhint := 'Fout toevoegen importregel';
|
|
|
|
INSERT INTO DVON_IMP_CATARTIKEL (
|
|
fac_import_key,
|
|
ins_discipline_key,
|
|
prs_bedrijf_key,
|
|
ins_srtdeel_nr,
|
|
ins_srtgroep_omschrijving,
|
|
ins_srtdeel_omschrijving,
|
|
ins_srtdeel_prijs,
|
|
ins_srtdeel_eenheid,
|
|
ins_srtdeel_image,
|
|
ins_srtdeel_vervaldatum,
|
|
ins_srtdeel_minimumvoorraad,
|
|
ins_srtdeel_maximumvoorraad,
|
|
ins_srtdeel_wijzigdagen,
|
|
ins_srtdeel_annuleerdagen,
|
|
ins_srtdeel_opmerking,
|
|
ins_kenmerk_objectsrtcode,
|
|
ins_kenmerk_kenmerksrt,
|
|
ins_kenmerk_volgnr,
|
|
ins_kenmerk_verplicht,
|
|
ins_kenmerk_groep )
|
|
VALUES (
|
|
p_import_key,
|
|
v_discipline_key,
|
|
v_bedrijf_key,
|
|
SUBSTR (v_srtdeel_nr, 1, 32),
|
|
SUBSTR (v_srtgroep_omschrijving, 1, 60),
|
|
SUBSTR (v_srtdeel_omschrijving, 1, 100),
|
|
COALESCE (fac.safe_to_number (v_srtdeel_prijs), 0),
|
|
SUBSTR (v_srtdeel_eenheid, 1, 30),
|
|
SUBSTR (v_srtdeel_image, 1, 255),
|
|
fac.safe_to_date (v_srtdeel_vervaldatum,
|
|
'yyyymmdd'),
|
|
fac.safe_to_number (v_srtdeel_minimumvoorraad),
|
|
fac.safe_to_number (v_srtdeel_maximumvoorraad),
|
|
fac.safe_to_number (v_srtdeel_wijzigdagen),
|
|
fac.safe_to_number (v_srtdeel_annuleerdagen),
|
|
SUBSTR (v_srtdeel_opmerking, 1, 2000),
|
|
SUBSTR (v_srtdeel_objectsrtcode, 1, 10),
|
|
SUBSTR (v_srtdeel_kenmerksrt, 1, 50),
|
|
fac.safe_to_number (v_srtdeel_volgnr),
|
|
fac.safe_to_number (v_srtdeel_verplicht),
|
|
fac.safe_to_number (v_srtdeel_groep)
|
|
);
|
|
v_count_import := v_count_import + 1;
|
|
END IF;
|
|
END IF;
|
|
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,
|
|
'W',
|
|
v_aanduiding || v_errormsg,
|
|
v_errorhint);
|
|
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',
|
|
'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),
|
|
''
|
|
);
|
|
END IF;
|
|
|
|
COMMIT;
|
|
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_aanduiding || v_errormsg,
|
|
'Inlezen catalogus artikelen afgebroken!');
|
|
END DVON_IMPORT_CATARTIKEL;
|
|
/
|
|
|
|
-- Update artikelen
|
|
CREATE OR REPLACE PROCEDURE DVON_UPDATE_CATARTIKEL (
|
|
p_import_key IN NUMBER
|
|
)
|
|
AS
|
|
v_errormsg VARCHAR2 (1000);
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
v_aanduiding VARCHAR2 (200);
|
|
v_disc_oms VARCHAR2 (100);
|
|
v_bedr_naam VARCHAR2 (100);
|
|
|
|
-- Update artikelen
|
|
PROCEDURE l_update_catartikel (pdisc_key IN NUMBER, pbedr_key IN NUMBER)
|
|
AS
|
|
|
|
CURSOR c_updsrtdeel
|
|
IS
|
|
SELECT s.bes_srtdeel_key, d.*
|
|
FROM dvon_imp_catartikel d, bes_srtgroep g, bes_srtdeel s
|
|
WHERE fac_import_key = p_import_key
|
|
AND d.ins_discipline_key = g.ins_discipline_key
|
|
-- AND d.prs_bedrijf_key = cbedr_key
|
|
-- AND g.ins_discipline_key = cdisc_key
|
|
AND g.bes_srtgroep_key = s.bes_srtgroep_key
|
|
AND UPPER (s.bes_srtdeel_nr) = UPPER (d.ins_srtdeel_nr)
|
|
-- AND s.prs_bedrijf_key = cbedr_key
|
|
AND s.bes_srtdeel_verwijder IS NULL;
|
|
|
|
CURSOR c_inssrtdeel
|
|
IS
|
|
SELECT d.*
|
|
FROM dvon_imp_catartikel d
|
|
WHERE fac_import_key = p_import_key
|
|
-- AND d.ins_discipline_key = cdisc_key
|
|
-- AND d.prs_bedrijf_key = cbedr_key
|
|
AND NOT EXISTS
|
|
(SELECT 1
|
|
FROM bes_srtgroep g, bes_srtdeel s
|
|
WHERE g.ins_discipline_key = d.ins_discipline_key
|
|
AND g.bes_srtgroep_key = s.bes_srtgroep_key
|
|
AND UPPER (s.bes_srtdeel_nr) =
|
|
UPPER (d.ins_srtdeel_nr)
|
|
-- AND s.prs_bedrijf_key = cbedr_key
|
|
AND s.bes_srtdeel_verwijder IS NULL);
|
|
|
|
ccount NUMBER (10);
|
|
l_srtgroep_key NUMBER (10);
|
|
l_bes_srtdeel_key bes_srtdeel.bes_srtdeel_key%TYPE;
|
|
l_omschrijving bes_srtdeel.bes_srtdeel_omschrijving%TYPE;
|
|
l_prijs bes_srtdeel_prijs.bes_srtdeel_prijs_prijs%TYPE;
|
|
-- l_inkprijs bes_srtdeel_prijs.bes_srtdeel_prijs_inkprijs%TYPE;
|
|
-- l_veelvoud bes_srtdeel.bes_srtdeel_veelvoud%TYPE;
|
|
l_minimumvoorraad bes_srtdeel.bes_srtdeel_voorraadmin%TYPE;
|
|
l_maximumvoorraad bes_srtdeel.bes_srtdeel_voorraadmax%TYPE;
|
|
l_wijzigdagen bes_srtdeel.bes_srtdeel_wijzigdagen%TYPE;
|
|
l_annuleerdagen bes_srtdeel.bes_srtdeel_annuleerdagen%TYPE;
|
|
l_opmerking bes_srtdeel.bes_srtdeel_opmerking%TYPE;
|
|
|
|
BEGIN
|
|
-- UPDATE SRTDEEL
|
|
ccount := 0;
|
|
|
|
FOR rec IN c_updsrtdeel
|
|
LOOP
|
|
BEGIN
|
|
v_errormsg :=
|
|
'Fout bij bepalen groep ' || rec.ins_srtgroep_omschrijving;
|
|
|
|
SELECT bes_srtgroep_key
|
|
INTO l_srtgroep_key
|
|
FROM bes_srtgroep
|
|
WHERE bes_srtgroep_verwijder IS NULL
|
|
AND ins_discipline_key = rec.ins_discipline_key
|
|
AND UPPER (bes_srtgroep_omschrijving) =
|
|
UPPER (rec.ins_srtgroep_omschrijving);
|
|
|
|
v_errormsg :=
|
|
'Fout bij bepalen huidige artikel-velden '
|
|
|| rec.ins_srtdeel_nr;
|
|
|
|
-- Tbv. logging de oude waarden opzoeken.
|
|
SELECT bes_srtdeel_omschrijving,
|
|
bes.getsrtdeelprijs (rec.bes_srtdeel_key, NULL),
|
|
-- bes.getsrtdeelinkprijs (rec.bes_srtdeel_key, NULL),
|
|
-- bes_srtdeel_veelvoud,
|
|
-- bes_srtdeel_minimum,
|
|
bes_srtdeel_voorraadmin,
|
|
bes_srtdeel_voorraadmax,
|
|
bes_srtdeel_wijzigdagen,
|
|
bes_srtdeel_annuleerdagen,
|
|
bes_srtdeel_opmerking
|
|
INTO l_omschrijving,
|
|
l_prijs,
|
|
-- l_inkprijs,
|
|
-- l_veelvoud,
|
|
-- l_minimum,
|
|
-- l_minimum,
|
|
l_minimumvoorraad,
|
|
l_maximumvoorraad,
|
|
l_wijzigdagen,
|
|
l_annuleerdagen,
|
|
l_opmerking
|
|
FROM bes_srtdeel
|
|
WHERE bes_srtdeel_verwijder IS NULL
|
|
AND bes_srtdeel_key = rec.bes_srtdeel_key;
|
|
|
|
v_errormsg := 'Fout bij bijwerken artikel ' || rec.ins_srtdeel_nr;
|
|
|
|
-- Codetechnisch zou hier bes.upsert_srtdeel() passen, maar die doet bv nog geen inkprijs.
|
|
-- Later nog eens TODO
|
|
UPDATE bes_srtdeel
|
|
SET bes_srtgroep_key = l_srtgroep_key,
|
|
bes_srtdeel_omschrijving = rec.ins_srtdeel_omschrijving,
|
|
bes_srtdeel_image = rec.ins_srtdeel_image,
|
|
-- bes_srtdeel_btw = rec.ins_srtdeel_btw,
|
|
bes_srtdeel_eenheid = rec.ins_srtdeel_eenheid,
|
|
bes_srtdeel_vervaldatum = rec.ins_srtdeel_vervaldatum,
|
|
-- bes_srtdeel_veelvoud = rec.ins_srtdeel_veelvoud,
|
|
bes_srtdeel_voorraadmin = rec.ins_srtdeel_minimumvoorraad,
|
|
bes_srtdeel_voorraadmax = rec.ins_srtdeel_maximumvoorraad,
|
|
-- bes_staffeltabel_key = rec.bes_staffeltabel_key,
|
|
bes_srtdeel_wijzigdagen = rec.ins_srtdeel_wijzigdagen,
|
|
bes_srtdeel_annuleerdagen = rec.ins_srtdeel_annuleerdagen,
|
|
bes_srtdeel_opmerking = rec.ins_srtdeel_opmerking,
|
|
ins_srtdeel_key = (select ins_srtdeel_key
|
|
from ins_srtdeel i
|
|
where i.ins_srtdeel_code_upper = UPPER (rec.ins_kenmerk_objectsrtcode))
|
|
WHERE bes_srtdeel_verwijder IS NULL
|
|
AND bes_srtdeel_key = rec.bes_srtdeel_key
|
|
RETURNING bes_srtdeel_key INTO l_bes_srtdeel_key;
|
|
|
|
UPDATE bes_kenmerk
|
|
SET bes_srtkenmerk_key = (select bes_srtkenmerk_key
|
|
from bes_srtkenmerk b
|
|
where b.bes_srtkenmerk_upper = UPPER (rec.ins_kenmerk_kenmerksrt)),
|
|
-- bes_kenmerk_type = 'I',
|
|
-- bes_kenmerk_niveau = 'S',
|
|
bes_kenmerk_verplicht = rec.ins_kenmerk_verplicht,
|
|
bes_kenmerk_groep = rec.ins_kenmerk_groep,
|
|
bes_kenmerk_volgnummer = rec.ins_kenmerk_volgnr
|
|
WHERE bes_srtinstallatie_key = l_bes_srtdeel_key;
|
|
|
|
IF l_omschrijving <> rec.ins_srtdeel_omschrijving
|
|
THEN
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'I',
|
|
'Artikel '
|
|
|| rec.ins_srtdeel_nr
|
|
|| '/'
|
|
|| rec.ins_srtdeel_omschrijving
|
|
|| ' is gewijzigd',
|
|
'Omschrijving '
|
|
|| l_omschrijving
|
|
|| ' -> '
|
|
|| rec.ins_srtdeel_omschrijving
|
|
);
|
|
END IF;
|
|
|
|
bes.upsert_srtdeel_prijs (rec.bes_srtdeel_key, rec.ins_srtdeel_prijs, 0);
|
|
|
|
IF l_prijs <> rec.ins_srtdeel_prijs
|
|
THEN
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'I',
|
|
'Artikel '
|
|
|| rec.ins_srtdeel_nr
|
|
|| '/'
|
|
|| rec.ins_srtdeel_omschrijving
|
|
|| ' is gewijzigd',
|
|
'Prijs ' || l_prijs || ' -> ' || rec.ins_srtdeel_prijs
|
|
);
|
|
END IF;
|
|
|
|
IF l_minimumvoorraad <> rec.ins_srtdeel_minimumvoorraad
|
|
THEN
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'I',
|
|
'Artikel '
|
|
|| rec.ins_srtdeel_nr
|
|
|| '/'
|
|
|| rec.ins_srtdeel_omschrijving
|
|
|| ' is gewijzigd',
|
|
'Miinimumvoorraad '
|
|
|| l_minimumvoorraad
|
|
|| ' -> '
|
|
|| rec.ins_srtdeel_minimumvoorraad
|
|
);
|
|
END IF;
|
|
|
|
IF l_maximumvoorraad <> rec.ins_srtdeel_maximumvoorraad
|
|
THEN
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'I',
|
|
'Artikel '
|
|
|| rec.ins_srtdeel_nr
|
|
|| '/'
|
|
|| rec.ins_srtdeel_omschrijving
|
|
|| ' is gewijzigd',
|
|
'Maximumvoorraad '
|
|
|| l_maximumvoorraad
|
|
|| ' -> '
|
|
|| rec.ins_srtdeel_maximumvoorraad
|
|
);
|
|
END IF;
|
|
|
|
IF l_wijzigdagen <> rec.ins_srtdeel_wijzigdagen
|
|
THEN
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'I',
|
|
'Artikel '
|
|
|| rec.ins_srtdeel_nr
|
|
|| '/'
|
|
|| rec.ins_srtdeel_omschrijving
|
|
|| ' is gewijzigd',
|
|
'Wijzigdagen '
|
|
|| l_wijzigdagen
|
|
|| ' -> '
|
|
|| rec.ins_srtdeel_wijzigdagen
|
|
);
|
|
END IF;
|
|
|
|
IF l_annuleerdagen <> rec.ins_srtdeel_annuleerdagen
|
|
THEN
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'I',
|
|
'Artikel '
|
|
|| rec.ins_srtdeel_nr
|
|
|| '/'
|
|
|| rec.ins_srtdeel_omschrijving
|
|
|| ' is gewijzigd',
|
|
'Annuleerdagen '
|
|
|| l_annuleerdagen
|
|
|| ' -> '
|
|
|| rec.ins_srtdeel_annuleerdagen
|
|
);
|
|
END IF;
|
|
|
|
IF l_opmerking <> rec.ins_srtdeel_opmerking
|
|
THEN
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'I',
|
|
'Artikel '
|
|
|| rec.ins_srtdeel_nr
|
|
|| '/'
|
|
|| rec.ins_srtdeel_opmerking
|
|
|| ' is gewijzigd',
|
|
'Opmerking '
|
|
|| l_opmerking
|
|
|| ' -> '
|
|
|| rec.ins_srtdeel_opmerking
|
|
);
|
|
END IF;
|
|
|
|
ccount := ccount + 1;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
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,
|
|
'W',
|
|
v_aanduiding || v_errormsg,
|
|
'');
|
|
END;
|
|
END LOOP;
|
|
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'S',
|
|
v_aanduiding
|
|
|| 'Er zijn '
|
|
|| TO_CHAR (ccount)
|
|
|| ' artikelen bijgewerkt',
|
|
''
|
|
);
|
|
|
|
COMMIT;
|
|
|
|
-- INSERT SRTDEEL
|
|
ccount := 0;
|
|
|
|
FOR rec IN c_inssrtdeel
|
|
LOOP
|
|
BEGIN
|
|
v_errormsg :=
|
|
'Fout bij bepalen groep ' || rec.ins_srtgroep_omschrijving;
|
|
|
|
SELECT bes_srtgroep_key
|
|
INTO l_srtgroep_key
|
|
FROM bes_srtgroep
|
|
WHERE bes_srtgroep_verwijder IS NULL
|
|
AND ins_discipline_key = rec.ins_discipline_key
|
|
AND UPPER (bes_srtgroep_omschrijving) =
|
|
UPPER (rec.ins_srtgroep_omschrijving);
|
|
|
|
v_errormsg := 'Fout bij toevoegen artikel ' || rec.ins_srtdeel_nr;
|
|
|
|
INSERT INTO bes_srtdeel (bes_srtgroep_key,
|
|
bes_srtdeel_nr,
|
|
bes_srtdeel_omschrijving,
|
|
bes_srtdeel_image,
|
|
-- bes_srtdeel_btw,
|
|
bes_srtdeel_eenheid,
|
|
bes_srtdeel_dimensie,
|
|
prs_bedrijf_key,
|
|
bes_srtdeel_vervaldatum,
|
|
-- bes_srtdeel_veelvoud,
|
|
bes_srtdeel_voorraadmin,
|
|
bes_srtdeel_voorraadmax,
|
|
-- bes_staffeltabel_key,
|
|
bes_srtdeel_wijzigdagen,
|
|
bes_srtdeel_annuleerdagen,
|
|
bes_srtdeel_opmerking,
|
|
ins_srtdeel_key)
|
|
VALUES (l_srtgroep_key,
|
|
rec.ins_srtdeel_nr,
|
|
rec.ins_srtdeel_omschrijving,
|
|
rec.ins_srtdeel_image,
|
|
-- rec.ins_srtdeel_btw,
|
|
rec.ins_srtdeel_eenheid,
|
|
0,
|
|
pbedr_key,
|
|
rec.ins_srtdeel_vervaldatum,
|
|
-- rec.ins_srtdeel_veelvoud,
|
|
rec.ins_srtdeel_minimumvoorraad,
|
|
rec.ins_srtdeel_minimumvoorraad,
|
|
-- rec.bes_staffeltabel_key,
|
|
rec.ins_srtdeel_wijzigdagen,
|
|
rec.ins_srtdeel_annuleerdagen,
|
|
rec.ins_srtdeel_opmerking,
|
|
(select i.ins_srtdeel_key
|
|
from ins_srtdeel i
|
|
where i.ins_srtdeel_code_upper = UPPER (rec.ins_kenmerk_objectsrtcode)))
|
|
RETURNING bes_srtdeel_key INTO l_bes_srtdeel_key;
|
|
|
|
bes.upsert_srtdeel_prijs (l_bes_srtdeel_key, rec.ins_srtdeel_prijs, 0);
|
|
|
|
INSERT INTO bes_kenmerk (bes_srtkenmerk_key,
|
|
bes_srtinstallatie_key,
|
|
bes_kenmerk_type,
|
|
bes_kenmerk_niveau,
|
|
bes_kenmerk_verplicht,
|
|
bes_kenmerk_groep,
|
|
bes_kenmerk_volgnummer)
|
|
VALUES ((select bes_srtkenmerk_key
|
|
from bes_srtkenmerk b
|
|
where b.bes_srtkenmerk_upper = UPPER (rec.ins_kenmerk_kenmerksrt)),
|
|
l_bes_srtdeel_key,
|
|
'I',
|
|
'S',
|
|
rec.ins_kenmerk_verplicht,
|
|
rec.ins_kenmerk_groep,
|
|
rec.ins_kenmerk_volgnr);
|
|
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'I',
|
|
v_aanduiding
|
|
|| 'Artikel '
|
|
|| rec.ins_srtdeel_nr
|
|
|| '/'
|
|
|| rec.ins_srtdeel_omschrijving
|
|
|| ' is toegevoegd',
|
|
''
|
|
);
|
|
ccount := ccount + 1;
|
|
EXCEPTION
|
|
WHEN DUP_VAL_ON_INDEX
|
|
THEN
|
|
v_errormsg := 'Artikelnummer dubbel in importbestand';
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || v_errormsg,
|
|
'');
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
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,
|
|
'W',
|
|
v_aanduiding || v_errormsg,
|
|
'');
|
|
END;
|
|
END LOOP;
|
|
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'S',
|
|
v_aanduiding
|
|
|| 'Er zijn '
|
|
|| TO_CHAR (ccount)
|
|
|| ' artikelen toegevoegd',
|
|
''
|
|
);
|
|
|
|
COMMIT;
|
|
END;
|
|
BEGIN
|
|
-- Doorloop alle catalogi/ bedrijven. Er kunnen er in theorie meerdere tegelijk zijn
|
|
FOR rec IN
|
|
(SELECT DISTINCT ins_discipline_key, prs_bedrijf_key
|
|
FROM dvon_imp_catartikel
|
|
WHERE fac_import_key = p_import_key)
|
|
LOOP
|
|
BEGIN
|
|
-- Puur voor logging toch even catalogus- en bedrijfsnaam bepalen!
|
|
v_aanduiding := '[' || TO_CHAR (rec.ins_discipline_key) || '] ';
|
|
v_errormsg := 'Fout bepalen catalogus';
|
|
|
|
SELECT ins_discipline_omschrijving
|
|
INTO v_disc_oms
|
|
FROM ins_tab_discipline
|
|
WHERE ins_discipline_key = rec.ins_discipline_key;
|
|
|
|
v_aanduiding := '[' || TO_CHAR (rec.prs_bedrijf_key) || '] ';
|
|
v_errormsg := 'Fout bepalen bedrijf';
|
|
|
|
SELECT prs_bedrijf_naam
|
|
INTO v_bedr_naam
|
|
FROM prs_v_aanwezigbedrijf
|
|
WHERE prs_bedrijf_key = rec.prs_bedrijf_key;
|
|
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'I',
|
|
'Import van catalogus ' || v_disc_oms || '/' || v_bedr_naam,
|
|
'discipline: '
|
|
|| rec.ins_discipline_key
|
|
|| ', bedrijf: '
|
|
|| rec.prs_bedrijf_key
|
|
);
|
|
|
|
COMMIT;
|
|
|
|
v_aanduiding := '[' || v_disc_oms || '|' || v_bedr_naam || '] ';
|
|
l_update_catartikel (rec.ins_discipline_key, rec.prs_bedrijf_key);
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
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 LOOP;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
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,
|
|
'Verwerken catalogus afgebroken!');
|
|
END DVON_UPDATE_CATARTIKEL;
|
|
/
|
|
|
|
-- Objectsoorten import
|
|
|
|
CREATE OR REPLACE PROCEDURE DVON_IMPORT_OBJSRT (
|
|
p_import_key IN NUMBER
|
|
)
|
|
IS
|
|
c_delim VARCHAR2 (1) := ';';
|
|
v_newline fac_imp_file.fac_imp_file_line%TYPE; -- Input line
|
|
v_errormsg VARCHAR2 (1000);
|
|
v_errorhint VARCHAR2 (1000);
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
v_aanduiding VARCHAR2 (200);
|
|
header_is_valid NUMBER := 0;
|
|
v_count_tot NUMBER (10) := 0;
|
|
v_count_import NUMBER (10) := 0;
|
|
v_ongeldig NUMBER (1) := 0;
|
|
|
|
-- De importvelden
|
|
v_key_objsrtkey VARCHAR2 (255); -- Key van bestaande objectsoort (alleen bij exports)
|
|
v_discipline_omschrijving VARCHAR2 (255); -- Discipline omschrijving (moet al bestaan)
|
|
v_srtgroep_omschrijving VARCHAR2 (255); -- Objectgroep naam (moet al bestaan)
|
|
v_srtdeel_code VARCHAR2 (255); -- Objectcode
|
|
v_srtdeel_omschrijving VARCHAR2 (255); -- Objectomschrijving
|
|
v_srtdeel_uitleenbaar VARCHAR2 (255); -- Uitleenbaar ja/nee
|
|
v_bedrijf_naam VARCHAR2 (255); -- Leverancier (kenmerk bij objectsoort)
|
|
v_srtdeel_vervaldatum VARCHAR2 (255); -- Vervaldatum object
|
|
v_srtkenmerk_naam VARCHAR2 (255); -- Kenmerksoort (moet al bestaan)
|
|
v_srtkenmerk_bewerkbij VARCHAR2 (255); -- Kenmerk bewerken bij object of objectsoort
|
|
v_srtkenmerk_volgnr VARCHAR2 (255); -- Volgnummer
|
|
v_srtkenmerk_verplicht VARCHAR2 (255); -- Verplicht
|
|
v_srtkenmerk_groep VARCHAR2 (255); -- Kenmerkgroep
|
|
v_file_index NUMBER;
|
|
|
|
|
|
-- Overige velden
|
|
v_discipline_key NUMBER (10);
|
|
v_srtgroep_key NUMBER (10);
|
|
v_bedrijf_key NUMBER (10);
|
|
v_leverancier_key NUMBER (10);
|
|
|
|
CURSOR c1
|
|
IS
|
|
SELECT *
|
|
FROM fac_imp_file
|
|
WHERE fac_import_key = p_import_key
|
|
ORDER BY fac_imp_file_index;
|
|
|
|
-- Controleer tijdens import-fase alleen op bestaan van kenmerksoort (of
|
|
-- deze - via een kenmerk - wel is gedefinieerd voor de betreffende object-
|
|
-- discipline/groep/soort, volgt pas tijdens de update-fase)!
|
|
|
|
FUNCTION bepaal_srtkenmerk_key (p_kw IN VARCHAR)
|
|
RETURN VARCHAR
|
|
IS
|
|
v_srtkenmerk_key NUMBER;
|
|
v_kenmerk_groep NUMBER;
|
|
v_kw VARCHAR(250);
|
|
BEGIN
|
|
v_kenmerk_groep := 0;
|
|
v_kw := p_kw;
|
|
IF INSTR (v_kw, '|') > 1
|
|
THEN
|
|
v_kenmerk_groep := SUBSTR (v_kw, INSTR (v_kw, '|') + 1);
|
|
v_kw := SUBSTR (v_kw, 1, INSTR (v_kw, '|') - 1);
|
|
END IF;
|
|
|
|
IF fac.safe_to_number (v_kw) IS NULL
|
|
THEN -- kenmerkwaarde is alfanumeriek (dus omschrijving)!
|
|
SELECT ins_srtkenmerk_key
|
|
INTO v_srtkenmerk_key
|
|
FROM ins_v_aanwezigsrtkenmerk
|
|
WHERE ins_srtkenmerk_upper = UPPER (v_kw)
|
|
AND ins_srtkenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S', 'X', 'B');
|
|
ELSE -- kenmerkwaarde is numeriek (dus key)!
|
|
SELECT ins_srtkenmerk_key
|
|
INTO v_srtkenmerk_key
|
|
FROM ins_v_aanwezigsrtkenmerk
|
|
WHERE ins_srtkenmerk_key = fac.safe_to_number (v_kw)
|
|
AND ins_srtkenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S', 'X', 'B');
|
|
END IF;
|
|
|
|
RETURN TO_CHAR(v_srtkenmerk_key) || '|' || TO_CHAR(v_kenmerk_groep);
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN
|
|
IF p_kw IS NULL OR UPPER (p_kw) LIKE 'KENMERK%'
|
|
THEN
|
|
RETURN NULL;
|
|
ELSE
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
'Fout bij bepalen kenmerksoort [' || p_kw || ']',
|
|
'Bestaat niet of type ongeldig');
|
|
COMMIT;
|
|
RETURN NULL;
|
|
END IF;
|
|
END;
|
|
|
|
-- Eerst opruiming
|
|
BEGIN
|
|
DELETE FROM DVON_IMP_OBJSRT;
|
|
|
|
COMMIT;
|
|
|
|
v_count_tot := 0;
|
|
v_count_import := 0;
|
|
header_is_valid := 0;
|
|
|
|
FOR rec1 IN c1
|
|
LOOP
|
|
BEGIN
|
|
v_newline := rec1.fac_imp_file_line;
|
|
v_file_index := rec1.fac_imp_file_index;
|
|
v_errormsg := 'Fout bij opvragen importregel';
|
|
v_aanduiding := '';
|
|
v_ongeldig := 0;
|
|
|
|
-- Lees alle veldwaarden
|
|
fac.imp_getfield (v_newline, c_delim, v_key_objsrtkey);
|
|
fac.imp_getfield (v_newline, c_delim, v_discipline_omschrijving);
|
|
fac.imp_getfield (v_newline, c_delim, v_srtgroep_omschrijving);
|
|
fac.imp_getfield (v_newline, c_delim, v_srtdeel_code);
|
|
fac.imp_getfield (v_newline, c_delim, v_srtdeel_omschrijving);
|
|
fac.imp_getfield (v_newline, c_delim, v_srtdeel_uitleenbaar);
|
|
fac.imp_getfield (v_newline, c_delim, v_bedrijf_naam);
|
|
fac.imp_getfield (v_newline, c_delim, v_srtdeel_vervaldatum);
|
|
fac.imp_getfield (v_newline, c_delim, v_srtkenmerk_naam);
|
|
fac.imp_getfield (v_newline, c_delim, v_srtkenmerk_bewerkbij);
|
|
fac.imp_getfield (v_newline, c_delim, v_srtkenmerk_volgnr);
|
|
fac.imp_getfield (v_newline, c_delim, v_srtkenmerk_verplicht);
|
|
fac.imp_getfield (v_newline, c_delim, v_srtkenmerk_groep);
|
|
|
|
v_aanduiding :=
|
|
'['
|
|
|| v_discipline_omschrijving
|
|
|| '|'
|
|
|| v_srtgroep_omschrijving
|
|
|| '|'
|
|
|| v_srtdeel_code
|
|
|| '|'
|
|
|| v_srtdeel_omschrijving
|
|
|| '] ';
|
|
|
|
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen
|
|
-- de juiste kolomkop. Ik controleer daarbij alle NIET-kenmerk kolommen!
|
|
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
|
|
|
|
IF (header_is_valid = 0)
|
|
THEN
|
|
IF UPPER (TRIM (v_key_objsrtkey)) = 'OBJSRTKEY'
|
|
AND UPPER (TRIM (v_discipline_omschrijving)) LIKE 'DISCIPLINEOMSCHRIJVING%'
|
|
AND UPPER (TRIM (v_srtgroep_omschrijving)) = 'GROEPSOORTOMSCHRIJVING'
|
|
AND UPPER (TRIM (v_srtdeel_code)) = 'OBJECTSOORTCODE'
|
|
AND UPPER (TRIM (v_srtdeel_omschrijving)) = 'OBJECTSOORTOMSCHRIJVING'
|
|
AND UPPER (TRIM (v_srtdeel_uitleenbaar)) = 'UITLEENBAAR'
|
|
AND UPPER (TRIM (v_bedrijf_naam)) = 'LEVERANCIER'
|
|
AND UPPER (TRIM (v_srtdeel_vervaldatum)) = 'VERVALDATUM'
|
|
AND UPPER (TRIM (v_srtkenmerk_naam)) = 'KENMERKSOORT'
|
|
AND UPPER (TRIM (v_srtkenmerk_bewerkbij)) LIKE 'BEWERKEN%'
|
|
AND UPPER (TRIM (v_srtkenmerk_volgnr)) = 'VOLGNUMMER'
|
|
AND UPPER (TRIM (v_srtkenmerk_verplicht)) = 'VERPLICHT'
|
|
AND UPPER (TRIM (v_srtkenmerk_groep)) = 'GROEP'
|
|
THEN
|
|
header_is_valid := 1;
|
|
END IF;
|
|
ELSE
|
|
v_count_tot := v_count_tot + 1;
|
|
-- Controleer alle veldwaarden
|
|
v_errormsg := 'Disciplineomschrijving ongeldig';
|
|
v_discipline_omschrijving :=
|
|
TRIM (v_discipline_omschrijving);
|
|
|
|
IF v_discipline_omschrijving IS NULL
|
|
OR LENGTH (v_discipline_omschrijving) > 60
|
|
THEN
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || v_errormsg,
|
|
'Regel wordt overgeslagen');
|
|
v_ongeldig := 1;
|
|
END IF;
|
|
|
|
--
|
|
v_errormsg := 'Groepsoortomschrijving ongeldig';
|
|
v_srtgroep_omschrijving := TRIM (v_srtgroep_omschrijving);
|
|
|
|
IF v_srtgroep_omschrijving IS NULL
|
|
OR LENGTH (v_srtgroep_omschrijving) > 60
|
|
THEN
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || v_errormsg,
|
|
'Regel wordt overgeslagen');
|
|
v_ongeldig := 1;
|
|
END IF;
|
|
|
|
--
|
|
v_errormsg := 'Objectsoortcode ongeldig';
|
|
v_srtdeel_code := TRIM (v_srtdeel_code);
|
|
|
|
IF v_srtdeel_code IS NULL OR LENGTH (v_srtdeel_code) > 10
|
|
THEN
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || v_errormsg,
|
|
'Regel wordt overgeslagen');
|
|
v_ongeldig := 1;
|
|
END IF;
|
|
|
|
--
|
|
v_errormsg := 'Objectsoortomschrijving ongeldig';
|
|
v_srtdeel_omschrijving := TRIM (v_srtdeel_omschrijving);
|
|
|
|
IF v_srtdeel_omschrijving IS NULL
|
|
OR LENGTH (v_srtdeel_omschrijving) > 100
|
|
THEN
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || v_errormsg,
|
|
'Regel wordt overgeslagen');
|
|
v_ongeldig := 1;
|
|
END IF;
|
|
|
|
v_discipline_omschrijving := TRIM (v_discipline_omschrijving);
|
|
v_errorhint := 'Discipline onbekend/ongeldig; regel wordt niet ingelezen';
|
|
|
|
SELECT ins_discipline_key
|
|
INTO v_discipline_key
|
|
FROM INS_TAB_DISCIPLINE
|
|
WHERE UPPER (ins_discipline_omschrijving) =
|
|
UPPER (v_discipline_omschrijving)
|
|
AND ins_discipline_module = 'INS'
|
|
AND ins_discipline_verwijder IS NULL;
|
|
|
|
v_srtgroep_omschrijving := TRIM (v_srtgroep_omschrijving);
|
|
v_errorhint :=
|
|
'Objectgroep onbekend/ongeldig; regel wordt niet ingelezen';
|
|
|
|
SELECT ins_srtgroep_key
|
|
INTO v_srtgroep_key
|
|
FROM ins_srtgroep
|
|
WHERE UPPER (ins_srtgroep_omschrijving) = UPPER (v_srtgroep_omschrijving)
|
|
AND ins_discipline_key = v_discipline_key
|
|
AND ins_srtgroep_verwijder IS NULL;
|
|
|
|
SELECT prs_bedrijf_key
|
|
INTO v_bedrijf_key
|
|
FROM PRS_BEDRIJF
|
|
WHERE prs_bedrijf_naam_upper LIKE '%DIENST VERVOER%'
|
|
AND prs_bedrijf_verwijder IS NULL;
|
|
|
|
IF v_bedrijf_naam IS NOT NULL
|
|
THEN
|
|
SELECT f.fac_usrdata_key
|
|
INTO v_leverancier_key
|
|
FROM fac_usrdata f
|
|
WHERE UPPER (f.fac_usrdata_omschr) = UPPER (v_bedrijf_naam);
|
|
END IF;
|
|
|
|
IF v_ongeldig = 0
|
|
THEN
|
|
BEGIN
|
|
v_errormsg := 'Fout bij wegschrijven importregel';
|
|
|
|
INSERT INTO DVON_IMP_OBJSRT (
|
|
fac_import_key,
|
|
ins_objsrt_key,
|
|
ins_discipline_key,
|
|
prs_bedrijf_key,
|
|
ins_srtgroep_key,
|
|
ins_srtdeel_code,
|
|
ins_srtdeel_omschrijving,
|
|
ins_srtdeel_uitleenbaar,
|
|
ins_srtkenmerk_levkey,
|
|
ins_srtdeel_vervaldatum,
|
|
ins_srtkenmerk_naam,
|
|
ins_srtkenmerk_bewerkbij,
|
|
ins_srtkenmerk_volgnr,
|
|
ins_srtkenmerk_verplicht,
|
|
ins_srtkenmerk_groep
|
|
)
|
|
VALUES (
|
|
p_import_key,
|
|
v_key_objsrtkey,
|
|
v_discipline_key,
|
|
v_bedrijf_key,
|
|
v_srtgroep_key,
|
|
v_srtdeel_code,
|
|
v_srtdeel_omschrijving,
|
|
DECODE (v_srtdeel_uitleenbaar, 'ja', 1, NULL),
|
|
v_leverancier_key,
|
|
TO_DATE (v_srtdeel_vervaldatum, 'DD-MM-YYYY'),
|
|
v_srtkenmerk_naam,
|
|
v_srtkenmerk_bewerkbij,
|
|
v_srtkenmerk_volgnr,
|
|
DECODE (v_srtkenmerk_verplicht, 'ja', 1, NULL),
|
|
v_srtkenmerk_groep
|
|
);
|
|
COMMIT;
|
|
v_count_import := v_count_import + 1;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
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,
|
|
'W',
|
|
v_aanduiding || v_errormsg,
|
|
'');
|
|
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',
|
|
'Objecten/aantal ingelezen importregels: ' || TO_CHAR (v_count_tot),
|
|
''
|
|
);
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'S',
|
|
'Objecten/aantal 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, 200);
|
|
v_errormsg :=
|
|
v_errormsg
|
|
|| ' ORACLE (error '
|
|
|| oracle_err_num
|
|
|| '/'
|
|
|| oracle_err_mes
|
|
|| ')';
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_aanduiding || v_errormsg,
|
|
'Inleesproces objecten afgebroken! regel:' || v_file_index);
|
|
END DVON_IMPORT_OBJSRT;
|
|
/
|
|
|
|
CREATE OR REPLACE PROCEDURE DVON_UPDATE_OBJSRT (p_import_key IN NUMBER)
|
|
AS
|
|
v_errormsg VARCHAR2 (1000) := '-';
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
v_aanduiding VARCHAR2 (200);
|
|
|
|
-- SUBPROC
|
|
PROCEDURE add_srtdeel (p_import_key IN NUMBER)
|
|
AS
|
|
CURSOR c1
|
|
IS
|
|
SELECT ins_discipline_key,
|
|
ins_srtgroep_key,
|
|
UPPER (ins_srtdeel_code) ins_srtdeel_code_upper,
|
|
UPPER (ins_srtdeel_omschrijving) ins_srtdeel_upper,
|
|
ins_srtdeel_code,
|
|
ins_srtdeel_omschrijving,
|
|
ins_srtdeel_uitleenbaar,
|
|
ins_srtkenmerk_levkey,
|
|
ins_srtdeel_vervaldatum,
|
|
ins_srtkenmerk_naam,
|
|
ins_srtkenmerk_bewerkbij,
|
|
ins_srtkenmerk_volgnr,
|
|
ins_srtkenmerk_verplicht,
|
|
ins_srtkenmerk_groep,
|
|
prs_bedrijf_key
|
|
FROM DVON_IMP_OBJSRT
|
|
WHERE ins_objsrt_key IS NULL;
|
|
-- GROUP BY ins_discipline_key,
|
|
-- ins_srtgroep_key,
|
|
-- UPPER (ins_srtdeel_code),
|
|
-- UPPER (ins_srtdeel_omschrijving);
|
|
|
|
CURSOR c2
|
|
IS
|
|
SELECT ins_objsrt_key,
|
|
ins_discipline_key,
|
|
ins_srtgroep_key,
|
|
ins_srtdeel_code,
|
|
ins_srtdeel_omschrijving,
|
|
ins_srtdeel_uitleenbaar,
|
|
ins_srtkenmerk_levkey,
|
|
ins_srtdeel_vervaldatum,
|
|
prs_bedrijf_key,
|
|
ins_srtkenmerk_naam,
|
|
ins_srtkenmerk_bewerkbij,
|
|
ins_srtkenmerk_volgnr,
|
|
ins_srtkenmerk_verplicht,
|
|
ins_srtkenmerk_groep
|
|
FROM DVON_IMP_OBJSRT
|
|
WHERE ins_objsrt_key IS NOT NULL;
|
|
-- GROUP BY ins_objsrt_key,
|
|
-- ins_discipline_key,
|
|
-- ins_srtgroep_key,
|
|
-- ins_srtdeel_code,
|
|
-- ins_srtdeel_omschrijving;
|
|
|
|
v_discipline_key NUMBER (10);
|
|
v_srtgroep_key NUMBER (10);
|
|
ccount NUMBER (10);
|
|
v_count_tot NUMBER (10);
|
|
v_count_update NUMBER (10);
|
|
v_srtdeel_key NUMBER (10);
|
|
v_srtkenmerk_key NUMBER (10);
|
|
BEGIN
|
|
v_count_tot := 0;
|
|
v_count_update := 0;
|
|
|
|
FOR rec IN c1
|
|
LOOP
|
|
BEGIN
|
|
v_count_tot := v_count_tot + 1;
|
|
v_errormsg := 'Fout bij bepalen discipline';
|
|
|
|
SELECT ins_discipline_key
|
|
INTO v_discipline_key
|
|
FROM ins_tab_discipline
|
|
WHERE ins_discipline_verwijder IS NULL
|
|
AND ins_discipline_module = 'INS'
|
|
AND ins_discipline_key = rec.ins_discipline_key;
|
|
|
|
v_errormsg := 'Fout bij bepalen groepsoort';
|
|
|
|
SELECT ins_srtgroep_key
|
|
INTO v_srtgroep_key
|
|
FROM ins_srtgroep
|
|
WHERE ins_srtgroep_verwijder IS NULL
|
|
AND ins_srtgroep_module = 'INS'
|
|
AND ins_discipline_key = v_discipline_key
|
|
AND ins_srtgroep_key = rec.ins_srtgroep_key;
|
|
|
|
v_errormsg :=
|
|
'Fout bij toevoegen objectsoort ['
|
|
|| rec.ins_srtdeel_omschrijving
|
|
|| ']';
|
|
|
|
SELECT COUNT ( * )
|
|
INTO ccount
|
|
FROM ins_srtdeel
|
|
WHERE ins_srtdeel_verwijder IS NULL
|
|
AND ins_srtdeel_module = 'INS'
|
|
AND ins_srtgroep_key = v_srtgroep_key
|
|
AND TRIM (ins_srtdeel_upper) = rec.ins_srtdeel_upper;
|
|
|
|
SELECT ins_srtkenmerk_key
|
|
INTO v_srtkenmerk_key
|
|
FROM ins_srtkenmerk
|
|
WHERE ins_srtkenmerk_upper = UPPER (rec.ins_srtkenmerk_naam);
|
|
|
|
IF ccount = 0
|
|
THEN
|
|
-- binding 17 betekent ruimtegebonden of persoonsgebonden
|
|
INSERT INTO ins_srtdeel (ins_srtgroep_key,
|
|
ins_srtdeel_module,
|
|
ins_srtdeel_code,
|
|
ins_srtdeel_omschrijving,
|
|
ins_srtdeel_vervaldatum,
|
|
ins_srtdeel_uitleenbaar,
|
|
ins_srtdeel_binding,
|
|
prs_bedrijf_key)
|
|
VALUES (v_srtgroep_key,
|
|
'INS',
|
|
rec.ins_srtdeel_code,
|
|
rec.ins_srtdeel_omschrijving,
|
|
rec.ins_srtdeel_vervaldatum,
|
|
rec.ins_srtdeel_uitleenbaar,
|
|
17,
|
|
rec.prs_bedrijf_key)
|
|
RETURNING ins_srtdeel_key
|
|
INTO v_srtdeel_key;
|
|
|
|
INSERT INTO ins_kenmerk (ins_srtkenmerk_key,
|
|
ins_srtinstallatie_key,
|
|
ins_kenmerk_niveau,
|
|
ins_kenmerk_bewerkniveau,
|
|
ins_kenmerk_wissen,
|
|
ins_kenmerk_volgnummer,
|
|
ins_kenmerk_verplicht)
|
|
VALUES (v_srtkenmerk_key,
|
|
DECODE (rec.ins_srtkenmerk_bewerkbij,
|
|
'soort', v_discipline_key,
|
|
'deel', v_srtdeel_key),
|
|
'S',
|
|
DECODE (rec.ins_srtkenmerk_bewerkbij,
|
|
'soort', 'S',
|
|
'deel', 'D'),
|
|
0,
|
|
rec.ins_srtkenmerk_volgnr,
|
|
rec.ins_srtkenmerk_verplicht);
|
|
|
|
INSERT INTO ins_kenmerkdeel (ins_deel_key,
|
|
ins_kenmerk_key,
|
|
ins_kenmerkdeel_waarde
|
|
)
|
|
VALUES (v_srtdeel_key,
|
|
241, -- kenmerkkey van leverancier
|
|
rec.ins_srtkenmerk_levkey);
|
|
|
|
v_count_update := v_count_update + 1;
|
|
END IF;
|
|
|
|
COMMIT;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg :=
|
|
v_errormsg
|
|
|| ' (error '
|
|
|| oracle_err_num
|
|
|| '/'
|
|
|| oracle_err_mes
|
|
|| ')';
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_errormsg,
|
|
'');
|
|
COMMIT;
|
|
END;
|
|
END LOOP;
|
|
|
|
FOR rec IN c2
|
|
LOOP
|
|
BEGIN
|
|
-- Bepaal de soort kenmerk key
|
|
|
|
SELECT ins_srtkenmerk_key
|
|
INTO v_srtkenmerk_key
|
|
FROM ins_srtkenmerk
|
|
WHERE ins_srtkenmerk_upper = UPPER (rec.ins_srtkenmerk_naam);
|
|
|
|
UPDATE ins_srtdeel
|
|
SET ins_srtgroep_key = rec.ins_srtgroep_key,
|
|
ins_srtdeel_code = rec.ins_srtdeel_code,
|
|
ins_srtdeel_omschrijving = rec.ins_srtdeel_omschrijving,
|
|
ins_srtdeel_vervaldatum = rec.ins_srtdeel_vervaldatum,
|
|
ins_srtdeel_uitleenbaar = rec.ins_srtdeel_uitleenbaar,
|
|
prs_bedrijf_key = rec.prs_bedrijf_key
|
|
WHERE ins_srtdeel_key = rec.ins_objsrt_key
|
|
RETURNING ins_srtdeel_key INTO v_srtdeel_key;
|
|
|
|
UPDATE ins_kenmerk
|
|
SET ins_kenmerk_bewerkniveau = DECODE (rec.ins_srtkenmerk_bewerkbij,
|
|
'soort', 'S',
|
|
'deel', 'D'),
|
|
ins_kenmerk_volgnummer = rec.ins_srtkenmerk_volgnr,
|
|
ins_kenmerk_verplicht = rec.ins_srtkenmerk_verplicht
|
|
WHERE ins_srtinstallatie_key = v_srtdeel_key;
|
|
|
|
UPDATE ins_kenmerkdeel
|
|
SET ins_kenmerkdeel_waarde = rec.ins_srtkenmerk_levkey
|
|
WHERE ins_deel_key = v_srtdeel_key
|
|
AND ins_kenmerk_key = 241
|
|
AND ins_kenmerkdeel_waarde != rec.ins_srtkenmerk_levkey;
|
|
|
|
END;
|
|
END LOOP;
|
|
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'S',
|
|
'Objectsoorten/aantal ingelezen: ' || TO_CHAR (v_count_tot),
|
|
'');
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'S',
|
|
'Objectsoorten/aantal toegevoegd: ' || TO_CHAR (v_count_update),
|
|
'');
|
|
COMMIT;
|
|
END;
|
|
-- MAIN
|
|
BEGIN
|
|
-- add_kostensoort (p_import_key);
|
|
-- add_insdiscipline (p_import_key);
|
|
-- add_resdiscipline (p_import_key);
|
|
-- add_srtgroep (p_import_key);
|
|
add_srtdeel (p_import_key);
|
|
-- add_deel (p_import_key);
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg :=
|
|
v_errormsg
|
|
|| ' (error '
|
|
|| oracle_err_num
|
|
|| '/'
|
|
|| oracle_err_mes
|
|
|| ')';
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_errormsg,
|
|
'Importproces objecten afgebroken!');
|
|
END DVON_UPDATE_OBJSRT;
|
|
/
|
|
|
|
CREATE OR REPLACE PROCEDURE dvon_import_orgkost (p_import_key IN NUMBER
|
|
)
|
|
AS
|
|
c_fielddelimitor VARCHAR2 (1) := ';';
|
|
v_newline VARCHAR2 (1000); -- Input line
|
|
v_errormsg VARCHAR2 (1000);
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
header_is_valid NUMBER;
|
|
v_count NUMBER;
|
|
v_ongeldig NUMBER (1);
|
|
v_mode NUMBER (1);
|
|
v_aanduiding VARCHAR2 (200);
|
|
v_all_null BOOLEAN;
|
|
v_count_error NUMBER (10);
|
|
v_count_tot NUMBER (10);
|
|
v_count_import NUMBER (10);
|
|
|
|
-- De importvelden:
|
|
v_bedrijf_naam VARCHAR2 (256);
|
|
v_afdeling_naam VARCHAR2 (256);
|
|
v_afdeling_naam_parent VARCHAR2 (256);
|
|
v_afdeling_omschrijving VARCHAR2 (256);
|
|
v_kostenplaats_nr VARCHAR2 (256); -- Overlap hier met import_kpn
|
|
v_kostenplaats_omschrijving VARCHAR2 (255);
|
|
v_kostenplaats_module VARCHAR2 (255);
|
|
v_kostenplaats_begin VARCHAR2 (255);
|
|
v_kostenplaats_begin_d DATE;
|
|
v_kostenplaats_eind VARCHAR2 (255);
|
|
v_kostenplaats_eind_d DATE;
|
|
v_kostenplaatsgrp_oms VARCHAR2 (255);
|
|
v_kostenplaatsgrp_key NUMBER (10);
|
|
v_perslid VARCHAR2 (255);
|
|
v_perslid_key NUMBER (10);
|
|
v_kostenplaats_limiet VARCHAR2 (255);
|
|
v_kostenplaats_limietperiode VARCHAR2 (255);
|
|
v_kostenplaats_extern VARCHAR2 (255);
|
|
v_kostenplaats_fiat VARCHAR2 (255);
|
|
v_fiatteur_1 VARCHAR2 (255);
|
|
v_fiatteur_1_key NUMBER (10);
|
|
v_fiatteur_2 VARCHAR2 (255);
|
|
v_fiatteur_2_key NUMBER (10);
|
|
v_fiatteur_3 VARCHAR2 (255);
|
|
v_fiatteur_3_key NUMBER (10);
|
|
v_kostenplaatsgrp_nr VARCHAR2 (255);
|
|
v_kostenplaatsgrp_limiet VARCHAR2 (255);
|
|
v_kostenplaatsgrp_limietp VARCHAR2 (255);
|
|
|
|
-- PRS_BEDRIJF
|
|
CURSOR c1
|
|
IS
|
|
SELECT *
|
|
FROM fac_imp_file
|
|
WHERE fac_import_key = p_import_key
|
|
ORDER BY fac_imp_file_index;
|
|
BEGIN
|
|
-- Eerst opruiming
|
|
DELETE FROM DVON_IMP_ORGKOST;
|
|
|
|
COMMIT;
|
|
v_count_error := 0;
|
|
header_is_valid := 0;
|
|
v_count_tot := 0;
|
|
v_count_import := 0;
|
|
|
|
FOR rec1 IN c1
|
|
LOOP
|
|
BEGIN
|
|
v_errormsg := 'Fout FETCH te importeren rij';
|
|
|
|
v_newline := rec1.fac_imp_file_line;
|
|
v_errormsg := 'Fout opvragen te importeren rij';
|
|
v_aanduiding := '';
|
|
v_ongeldig := 0;
|
|
|
|
-- Lees alle veldwaarden
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_bedrijf_naam);
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_afdeling_naam_parent);
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_afdeling_naam);
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_afdeling_omschrijving);
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_kostenplaats_nr);
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_kostenplaats_omschrijving);
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_kostenplaats_module);
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_kostenplaats_begin);
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_kostenplaats_eind);
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_perslid);
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_kostenplaats_limiet);
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_kostenplaats_limietperiode);
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_kostenplaats_extern);
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_kostenplaats_fiat);
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_kostenplaatsgrp_oms);
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_kostenplaatsgrp_nr);
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_fiatteur_1);
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_fiatteur_2);
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_fiatteur_3);
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_kostenplaatsgrp_limiet);
|
|
fac.imp_getfield (v_newline, c_fielddelimitor, v_kostenplaatsgrp_limietp);
|
|
|
|
v_aanduiding := v_bedrijf_naam || '|' || v_afdeling_naam || '|' || v_afdeling_omschrijving || '|' || v_kostenplaats_nr || '|' || v_kostenplaats_omschrijving;
|
|
|
|
IF (header_is_valid = 0)
|
|
THEN
|
|
IF UPPER (v_bedrijf_naam) = 'BEDRIJFSNAAM'
|
|
AND UPPER (v_afdeling_naam_parent) = 'AFDELINGSCODEPARENT'
|
|
AND UPPER (v_kostenplaats_nr) = 'KOSTENPLAATS'
|
|
AND UPPER (v_perslid) = 'BUDGETHOUDER'
|
|
AND UPPER (v_kostenplaats_fiat) = 'OPDRACHTENFIATTEREN'
|
|
THEN
|
|
header_is_valid := 1;
|
|
END IF;
|
|
ELSE
|
|
v_count_tot := v_count_tot + 1;
|
|
--fac.imp_writelog (p_import_key, 'I', v_aanduiding, '');
|
|
-- Controleer alle veldwaarde
|
|
v_bedrijf_naam := TRIM (v_bedrijf_naam);
|
|
|
|
IF LENGTH (v_bedrijf_naam) > 60
|
|
THEN
|
|
v_bedrijf_naam := SUBSTR (v_bedrijf_naam, 1, 60);
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || 'Bedrijf-aanduiding is te lang',
|
|
'Aanduiding wordt afgebroken tot [' || v_bedrijf_naam || ']'
|
|
);
|
|
END IF;
|
|
|
|
--
|
|
v_afdeling_naam := TRIM (v_afdeling_naam);
|
|
|
|
IF LENGTH (v_afdeling_naam) > 15
|
|
THEN
|
|
v_afdeling_naam := SUBSTR (v_afdeling_naam, 1, 15);
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || 'Afdeling-aanduiding is te lang',
|
|
'Aanduiding wordt afgebroken tot [' || v_afdeling_naam || ']'
|
|
);
|
|
END IF;
|
|
|
|
--
|
|
v_afdeling_naam_parent := TRIM (v_afdeling_naam_parent);
|
|
|
|
IF LENGTH (v_afdeling_naam_parent) > 15
|
|
THEN
|
|
v_afdeling_naam_parent := SUBSTR (v_afdeling_naam_parent, 1, 15);
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || 'Afdeling-aanduiding is te lang',
|
|
'Aanduiding wordt afgebroken tot [' || v_afdeling_naam_parent || ']'
|
|
);
|
|
END IF;
|
|
|
|
--
|
|
v_afdeling_omschrijving := TRIM (v_afdeling_omschrijving);
|
|
|
|
IF LENGTH (v_afdeling_omschrijving) > 60
|
|
THEN
|
|
v_afdeling_omschrijving := SUBSTR (v_afdeling_omschrijving, 1, 60);
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || 'Afdelingsomschrijving is te lang',
|
|
'Aanduiding wordt afgebroken tot [' || v_afdeling_omschrijving || ']'
|
|
);
|
|
END IF;
|
|
|
|
--
|
|
v_kostenplaats_nr := TRIM (v_kostenplaats_nr);
|
|
|
|
IF LENGTH (v_kostenplaats_nr) > 30
|
|
THEN
|
|
v_kostenplaats_nr := SUBSTR (v_kostenplaats_nr, 1, 30);
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || 'Kostenplaats-aanduiding is te lang',
|
|
'Aanduiding wordt afgebroken tot [' || v_kostenplaats_nr || ']'
|
|
);
|
|
END IF;
|
|
|
|
IF LENGTH (v_kostenplaats_omschrijving) > 60
|
|
THEN
|
|
v_kostenplaats_omschrijving := SUBSTR (v_kostenplaats_omschrijving, 1, 60);
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'W',
|
|
v_aanduiding || 'Kostenpaatsomschrijving is te lang',
|
|
'Kostenpaatsomschrijving wordt afgebroken tot ['
|
|
|| v_kostenplaats_omschrijving
|
|
|| ']');
|
|
END IF;
|
|
|
|
--
|
|
v_kostenplaats_module := UPPER (TRIM (v_kostenplaats_module));
|
|
|
|
IF v_kostenplaats_module NOT IN ('ALG', 'PRS', 'PRJ')
|
|
THEN
|
|
v_kostenplaats_module := 'PRS';
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'E',
|
|
v_aanduiding || 'Ongelding kostenplaatstype',
|
|
'Kostenplaatstype wordt aangepast naar [' || v_kostenplaats_module || ']');
|
|
END IF;
|
|
|
|
--
|
|
v_kostenplaats_begin := TRIM (v_kostenplaats_begin);
|
|
v_kostenplaats_begin_d := fac.safe_to_date (v_kostenplaats_begin, 'dd-mm-yyyy');
|
|
|
|
IF v_kostenplaats_begin IS NOT NULL AND v_kostenplaats_begin_d IS NULL
|
|
THEN
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_aanduiding || 'Kostenplaatsbegin is ongeldig',
|
|
'Kostenplaatsbegin wordt leeg gemaakt');
|
|
END IF;
|
|
|
|
--
|
|
v_kostenplaats_eind := TRIM (v_kostenplaats_eind);
|
|
v_kostenplaats_eind_d := fac.safe_to_date (v_kostenplaats_eind, 'dd-mm-yyyy');
|
|
|
|
IF v_kostenplaats_eind IS NOT NULL AND v_kostenplaats_eind_d IS NULL
|
|
THEN
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_aanduiding || 'Kostenplaatseind is ongeldig',
|
|
'Kostenplaatseind wordt leeg gemaakt');
|
|
END IF;
|
|
|
|
--
|
|
v_kostenplaatsgrp_oms := TRIM (v_kostenplaatsgrp_oms);
|
|
|
|
IF v_kostenplaatsgrp_oms IS NOT NULL
|
|
THEN
|
|
BEGIN
|
|
SELECT prs_kostenplaatsgrp_key
|
|
INTO v_kostenplaatsgrp_key
|
|
FROM prs_kostenplaatsgrp
|
|
WHERE UPPER (prs_kostenplaatsgrp_oms) = UPPER (v_kostenplaatsgrp_oms);
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN
|
|
v_kostenplaatsgrp_key := v_kostenplaatsgrp_key;
|
|
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'E',
|
|
v_aanduiding || 'Kostenplaatsgroep-aanduiding kan niet gevonden worden',
|
|
'Kostenplaatsgroep wordt aangemaakt [' || v_kostenplaatsgrp_oms || ']');
|
|
END;
|
|
ELSE
|
|
v_kostenplaatsgrp_key := NULL;
|
|
END IF;
|
|
|
|
--
|
|
v_perslid := TRIM (v_perslid);
|
|
|
|
IF v_perslid IS NOT NULL
|
|
THEN
|
|
BEGIN
|
|
SELECT prs_perslid_key
|
|
INTO v_perslid_key
|
|
FROM prs_perslid
|
|
WHERE prs_perslid_oslogin = UPPER (v_perslid)
|
|
OR prs_perslid_oslogin = UPPER (v_perslid);
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN
|
|
v_perslid_key := NULL;
|
|
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'E',
|
|
v_aanduiding || 'Budgethouder-aanduiding kan niet gevonden worden',
|
|
'Budgethouder wordt leeg gemaakt [' || v_perslid || ']');
|
|
END;
|
|
ELSE
|
|
v_perslid_key := NULL;
|
|
END IF;
|
|
|
|
v_kostenplaats_limiet := TRIM (v_kostenplaats_limiet);
|
|
|
|
v_kostenplaats_limietperiode := UPPER (TRIM (v_kostenplaats_limietperiode));
|
|
|
|
IF v_kostenplaats_limietperiode IS NOT NULL
|
|
AND v_kostenplaats_limietperiode NOT IN ('J', 'M')
|
|
THEN
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'E',
|
|
v_aanduiding || 'Budgetperiode-aanduiding kan niet gevonden worden',
|
|
'Budgetperiode wordt leeg gemaakt [' || v_kostenplaats_limietperiode || ']');
|
|
END IF;
|
|
|
|
v_kostenplaats_extern := TRIM (v_kostenplaats_extern);
|
|
|
|
IF v_kostenplaats_extern IS NOT NULL AND v_kostenplaats_extern NOT IN ('0', '1')
|
|
THEN
|
|
v_kostenplaats_extern := NULL;
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'E',
|
|
v_aanduiding || 'Kostenplaats extern-aanduiding kan niet gevonden worden',
|
|
'Kostenplaats_extern-aanduiding wordt leeg gemaakt');
|
|
END IF;
|
|
|
|
v_kostenplaats_fiat := TRIM (v_kostenplaats_fiat);
|
|
|
|
IF v_kostenplaats_fiat IS NOT NULL AND v_kostenplaats_fiat NOT IN ('0', '1')
|
|
THEN
|
|
v_kostenplaats_fiat := NULL;
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'E',
|
|
v_aanduiding || 'Opdrachtfiatteren-aanduiding kan niet gevonden worden',
|
|
'Opdrachtfiatteren-aanduiding wordt leeg gemaakt');
|
|
END IF;
|
|
|
|
IF v_fiatteur_1 IS NOT NULL
|
|
THEN
|
|
BEGIN
|
|
SELECT prs_perslid_key
|
|
INTO v_fiatteur_1_key
|
|
FROM prs_perslid
|
|
WHERE prs_perslid_oslogin = UPPER (v_fiatteur_1)
|
|
OR prs_perslid_oslogin = UPPER (v_fiatteur_1);
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN
|
|
v_fiatteur_1_key := NULL;
|
|
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'E',
|
|
v_aanduiding || 'Fiatteur 1 kan niet gevonden worden',
|
|
'Fiatteur 1 wordt leeg gemaakt [' || v_fiatteur_1 || ']');
|
|
END;
|
|
ELSE
|
|
v_fiatteur_1_key := NULL;
|
|
END IF;
|
|
|
|
IF v_fiatteur_2 IS NOT NULL
|
|
THEN
|
|
BEGIN
|
|
SELECT prs_perslid_key
|
|
INTO v_fiatteur_2_key
|
|
FROM prs_perslid
|
|
WHERE prs_perslid_oslogin = UPPER (v_fiatteur_2)
|
|
OR prs_perslid_oslogin = UPPER (v_fiatteur_2);
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN
|
|
v_fiatteur_2_key := NULL;
|
|
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'E',
|
|
v_aanduiding || 'Fiatteur 2 kan niet gevonden worden',
|
|
'Fiatteur 3 wordt leeg gemaakt [' || v_fiatteur_2 || ']');
|
|
END;
|
|
ELSE
|
|
v_fiatteur_2_key := NULL;
|
|
END IF;
|
|
|
|
IF v_fiatteur_3 IS NOT NULL
|
|
THEN
|
|
BEGIN
|
|
SELECT prs_perslid_key
|
|
INTO v_fiatteur_3_key
|
|
FROM prs_perslid
|
|
WHERE prs_perslid_oslogin = UPPER (v_fiatteur_3)
|
|
OR prs_perslid_oslogin = UPPER (v_fiatteur_3);
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN
|
|
v_fiatteur_3_key := NULL;
|
|
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'E',
|
|
v_aanduiding || 'Fiatteur 3 kan niet gevonden worden',
|
|
'Fiatteur 3 wordt leeg gemaakt [' || v_fiatteur_3 || ']');
|
|
END;
|
|
ELSE
|
|
v_fiatteur_3_key := NULL;
|
|
END IF;
|
|
|
|
v_all_null :=
|
|
(v_bedrijf_naam IS NULL)
|
|
AND (v_afdeling_naam IS NULL)
|
|
AND (v_afdeling_naam_parent IS NULL)
|
|
AND (v_afdeling_omschrijving IS NULL)
|
|
AND (v_kostenplaats_nr IS NULL);
|
|
|
|
-- Insert geformatteerde import record
|
|
IF v_ongeldig = 0
|
|
THEN
|
|
v_errormsg := 'Fout bij toevoegen te impoteren bedrijf/afdeling/kostenplaats [' || v_aanduiding || ']';
|
|
|
|
INSERT INTO DVON_IMP_ORGKOST (prs_bedrijf_naam,
|
|
prs_afdeling_naam,
|
|
prs_afdeling_naam_parent,
|
|
prs_afdeling_omschrijving,
|
|
prs_kostenplaats_nr,
|
|
prs_kostenplaats_omschrijving,
|
|
prs_kostenplaats_module,
|
|
prs_kostenplaats_begin,
|
|
prs_kostenplaats_eind,
|
|
prs_kostenplaatsgrp_key,
|
|
prs_perslid_key,
|
|
prs_kostenplaats_limiet,
|
|
prs_kostenplaats_limietperiode,
|
|
prs_kostenplaats_extern,
|
|
prs_kostenplaats_fiat,
|
|
prs_fiatteur_1,
|
|
prs_fiatteur_2,
|
|
prs_fiatteur_3,
|
|
prs_kostenplaatsgrp_oms,
|
|
prs_kostenplaatsgrp_nr,
|
|
prs_kostenplaatsgrp_limiet,
|
|
prs_kostenplaatsgrp_limietp
|
|
)
|
|
VALUES (
|
|
v_bedrijf_naam,
|
|
v_afdeling_naam,
|
|
v_afdeling_naam_parent,
|
|
v_afdeling_omschrijving,
|
|
v_kostenplaats_nr,
|
|
v_kostenplaats_omschrijving,
|
|
v_kostenplaats_module,
|
|
v_kostenplaats_begin_d,
|
|
v_kostenplaats_eind_d,
|
|
v_kostenplaatsgrp_key,
|
|
v_perslid_key,
|
|
fac.safe_to_number (v_kostenplaats_limiet),
|
|
DECODE (v_kostenplaats_limietperiode, 'M', 1, 'J', 2, 0),
|
|
fac.safe_to_number (v_kostenplaats_extern),
|
|
fac.safe_to_number (v_kostenplaats_fiat),
|
|
v_fiatteur_1_key,
|
|
v_fiatteur_2_key,
|
|
v_fiatteur_3_key,
|
|
v_kostenplaatsgrp_oms,
|
|
v_kostenplaatsgrp_nr,
|
|
fac.safe_to_number (v_kostenplaatsgrp_limiet),
|
|
DECODE (v_kostenplaatsgrp_limietp, 'M', 1, 'J', 2, 0)
|
|
);
|
|
|
|
v_count_import := v_count_import + 1;
|
|
END IF;
|
|
END IF;
|
|
END;
|
|
END LOOP;
|
|
|
|
IF (header_is_valid = 0)
|
|
THEN
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_aanduiding || 'Ongeldig importbestand',
|
|
'Geen geldige headerregel aanwezig'
|
|
);
|
|
ELSE
|
|
fac.imp_writelog (p_import_key, 'S', 'Bedrijf: aantal ingelezen regels: ' || TO_CHAR (v_count_tot), '');
|
|
fac.imp_writelog (p_import_key,
|
|
'S',
|
|
'Bedrijf: aantal ongeldige importregels: ' || TO_CHAR (v_count_tot - v_count_import),
|
|
''
|
|
);
|
|
END IF;
|
|
|
|
COMMIT;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
|
v_errormsg := 'error ' || oracle_err_num || '/' || oracle_err_mes;
|
|
fac.imp_writelog (p_import_key, 'E', v_errormsg, '');
|
|
END dvon_import_orgkost;
|
|
/
|
|
|
|
|
|
CREATE OR REPLACE PROCEDURE dvon_import_orgkost_del (
|
|
p_import_key IN NUMBER
|
|
) IS
|
|
|
|
BEGIN
|
|
|
|
dvon_import_orgkost(p_import_key);
|
|
|
|
END;
|
|
/
|
|
|
|
CREATE OR REPLACE PROCEDURE DVON_UPDATE_ORGKOST (p_import_key IN NUMBER)
|
|
AS
|
|
v_errormsg VARCHAR2 (1000) := '-';
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
v_aanduiding VARCHAR2 (200);
|
|
|
|
-- SUBPROC
|
|
PROCEDURE add_organisatie (
|
|
p_import_key IN NUMBER
|
|
) IS
|
|
|
|
c_fielddelimitor VARCHAR2 (1) := ';';
|
|
|
|
v_newline fac_imp_file.fac_imp_file_line%TYPE; -- Input line
|
|
v_errormsg VARCHAR2 (1000);
|
|
v_errorhint VARCHAR2 (1000);
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
v_aanduiding VARCHAR2 (200);
|
|
|
|
v_count NUMBER(10);
|
|
v_ongeldig NUMBER(1);
|
|
v_count_update NUMBER(10);
|
|
v_count_error NUMBER(10);
|
|
v_count_tot NUMBER(10);
|
|
|
|
--
|
|
v_bedrijf_key NUMBER(10);
|
|
v_kostenplaats_key NUMBER(10);
|
|
v_prs_afdeling_parentkey NUMBER(10);
|
|
|
|
CURSOR cBedrijf
|
|
IS
|
|
SELECT min(prs_bedrijf_naam) prs_bedrijf_naam
|
|
FROM DVON_IMP_ORGKOST
|
|
WHERE prs_bedrijf_naam is not null
|
|
GROUP BY upper(prs_bedrijf_naam);
|
|
|
|
recBedrijf cBedrijf%ROWTYPE;
|
|
|
|
-- Bij 1-op-1 relatie tussen kostenplaats en afdeling de kostenplaatsomschrijving zetten op
|
|
-- de afdelingsomschrijving, ander de kostenplaatsomschrijving leeg laten.
|
|
CURSOR cKPN
|
|
IS
|
|
SELECT MIN(prs_kostenplaats_nr) prs_kostenplaats_nr,
|
|
DECODE(COUNT(*),1,MAX(prs_afdeling_omschrijving),'') prs_kostenplaats_omschrijving,
|
|
'PRS' prs_kostenplaats_module
|
|
FROM DVON_IMP_ORGKOST
|
|
WHERE prs_kostenplaats_nr IS NOT NULL
|
|
GROUP BY UPPER(prs_kostenplaats_nr);
|
|
|
|
recKPN cKpn%ROWTYPE;
|
|
|
|
CURSOR cAfdeling1
|
|
IS
|
|
SELECT MIN(prs_bedrijf_naam) prs_bedrijf_naam
|
|
,UPPER(prs_bedrijf_naam) prs_bedrijf_naam_upper
|
|
,MIN(prs_afdeling_naam) prs_afdeling_naam
|
|
,UPPER(prs_afdeling_naam) prs_afdeling_upper
|
|
,MAX(prs_afdeling_omschrijving) prs_afdeling_omschrijving
|
|
,MIN(prs_afdeling_naam_parent) prs_afdeling_naam_parent
|
|
,MIN(UPPER(prs_afdeling_naam_parent)) prs_afdeling_naam_parent_upper
|
|
,MAX(prs_kostenplaats_nr) prs_kostenplaats_nr
|
|
,MAX(UPPER(prs_kostenplaats_nr)) prs_kostenplaats_upper
|
|
,NIVEAU
|
|
FROM (SELECT 1 NIVEAU,
|
|
a1.prs_bedrijf_naam,
|
|
a1.prs_afdeling_naam,
|
|
a1.prs_afdeling_omschrijving,
|
|
a1.prs_kostenplaats_nr,
|
|
'' PRS_AFDELING_NAAM_PARENT
|
|
FROM DVON_IMP_ORGKOST a1
|
|
WHERE a1.prs_afdeling_naam_parent IS NULL
|
|
UNION ALL
|
|
SELECT 2,
|
|
a2.prs_bedrijf_naam,
|
|
a2.prs_afdeling_naam,
|
|
a2.prs_afdeling_omschrijving,
|
|
a2.prs_kostenplaats_nr,
|
|
a1.prs_afdeling_naam
|
|
FROM DVON_IMP_ORGKOST a1, DVON_IMP_ORGKOST a2
|
|
WHERE a2.prs_afdeling_naam_parent = a1.prs_afdeling_naam
|
|
AND a1.prs_afdeling_naam_parent IS NULL
|
|
UNION ALL
|
|
SELECT 3,
|
|
a3.prs_bedrijf_naam,
|
|
a3.prs_afdeling_naam,
|
|
a3.prs_afdeling_omschrijving,
|
|
a3.prs_kostenplaats_nr,
|
|
a2.prs_afdeling_naam
|
|
FROM DVON_IMP_ORGKOST a1, DVON_IMP_ORGKOST a2, DVON_IMP_ORGKOST a3
|
|
WHERE a3.prs_afdeling_naam_parent = a2.prs_afdeling_naam
|
|
AND a2.prs_afdeling_naam_parent = a1.prs_afdeling_naam
|
|
AND a1.prs_afdeling_naam_parent IS NULL
|
|
UNION ALL
|
|
SELECT 4,
|
|
a4.prs_bedrijf_naam,
|
|
a4.prs_afdeling_naam,
|
|
a4.prs_afdeling_omschrijving,
|
|
a4.prs_kostenplaats_nr,
|
|
a3.prs_afdeling_naam
|
|
FROM DVON_IMP_ORGKOST a1, DVON_IMP_ORGKOST a2, DVON_IMP_ORGKOST a3, DVON_IMP_ORGKOST a4
|
|
WHERE a4.prs_afdeling_naam_parent = a3.prs_afdeling_naam
|
|
AND a3.prs_afdeling_naam_parent = a2.prs_afdeling_naam
|
|
AND a2.prs_afdeling_naam_parent = a1.prs_afdeling_naam
|
|
AND a1.prs_afdeling_naam_parent IS NULL
|
|
UNION ALL
|
|
SELECT 5,
|
|
a5.prs_bedrijf_naam,
|
|
a5.prs_afdeling_naam,
|
|
a5.prs_afdeling_omschrijving,
|
|
a5.prs_kostenplaats_nr,
|
|
a4.prs_afdeling_naam
|
|
FROM DVON_IMP_ORGKOST a1, DVON_IMP_ORGKOST a2, DVON_IMP_ORGKOST a3, DVON_IMP_ORGKOST a4, DVON_IMP_ORGKOST a5
|
|
WHERE a5.prs_afdeling_naam_parent = a4.prs_afdeling_naam
|
|
AND a4.prs_afdeling_naam_parent = a3.prs_afdeling_naam
|
|
AND a3.prs_afdeling_naam_parent = a2.prs_afdeling_naam
|
|
AND a2.prs_afdeling_naam_parent = a1.prs_afdeling_naam
|
|
AND a1.prs_afdeling_naam_parent IS NULL)
|
|
WHERE ((prs_bedrijf_naam IS NOT NULL) AND (prs_afdeling_naam IS NOT NULL)) -- geen lege regels
|
|
GROUP BY UPPER(prs_bedrijf_naam), UPPER(prs_afdeling_naam), NIVEAU
|
|
ORDER BY NIVEAU;
|
|
|
|
recAfdeling1 cAfdeling1%ROWTYPE;
|
|
|
|
BEGIN
|
|
|
|
OPEN cBedrijf;
|
|
v_count_update := 0;
|
|
v_count_tot := 0;
|
|
v_count_error := 0;
|
|
IF cBedrijf%ISOPEN THEN
|
|
|
|
LOOP
|
|
BEGIN
|
|
|
|
FETCH cBedrijf INTO recBedrijf;
|
|
EXIT WHEN cBedrijf%NOTFOUND;
|
|
v_count_tot := v_count_tot + 1;
|
|
|
|
v_aanduiding := recBedrijf.PRS_BEDRIJF_NAAM||'| ';
|
|
v_errormsg := '';
|
|
v_errorhint := '';
|
|
|
|
v_errorhint := 'Kijken of bedrijf al bestaat';
|
|
SELECT count(*)
|
|
INTO v_count
|
|
FROM prs_bedrijf
|
|
WHERE upper(prs_bedrijf_naam_upper) = upper(recBedrijf.prs_bedrijf_naam)
|
|
AND prs_bedrijf_verwijder is null;
|
|
|
|
IF (v_count = 0) THEN
|
|
|
|
v_errorhint := 'Fout bij toevoegen bedrijf';
|
|
INSERT INTO PRS_BEDRIJF (
|
|
prs_bedrijf_naam
|
|
,prs_bedrijf_intern
|
|
) VALUES (
|
|
recBedrijf.prs_bedrijf_naam
|
|
,1
|
|
);
|
|
|
|
commit;
|
|
v_count_update := v_count_update + 1;
|
|
|
|
END IF;
|
|
|
|
EXCEPTION WHEN OTHERS THEN
|
|
v_count_error := v_count_error + 1;
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR(SQLERRM, 1, 200);
|
|
IF (v_errormsg = '') THEN
|
|
v_errormsg := 'Fout tijdens verwerken van bedrijf ['||recBedrijf.PRS_BEDRIJF_NAAM||']';
|
|
END IF;
|
|
v_errorhint := v_errorhint||': ' || oracle_err_mes;
|
|
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_aanduiding||v_errormsg,
|
|
v_errorhint
|
|
);
|
|
|
|
commit; -- tbv logging
|
|
|
|
END;
|
|
END LOOP;
|
|
|
|
fac.imp_writelog (p_import_key,
|
|
'S',
|
|
'Bedrijf: verwerkte regels zonder foutmelding: '||to_char(v_count_tot-v_count_error),
|
|
''
|
|
);
|
|
|
|
fac.imp_writelog (p_import_key,
|
|
'S',
|
|
'Bedrijf: verwerkte regels met foutmelding: <b>'||to_char(v_count_error),
|
|
''
|
|
);
|
|
|
|
END IF;
|
|
|
|
OPEN cKPN;
|
|
v_count_update := 0;
|
|
v_count_tot := 0;
|
|
v_count_error := 0;
|
|
IF cKPN%ISOPEN THEN
|
|
|
|
LOOP
|
|
BEGIN
|
|
v_aanduiding := recKPN.PRS_KOSTENPLAATS_NR||'| ';
|
|
v_errormsg := '';
|
|
v_errorhint := '';
|
|
|
|
FETCH cKPN INTO recKPN;
|
|
EXIT WHEN cKPN%NOTFOUND;
|
|
v_count_tot := v_count_tot + 1;
|
|
|
|
v_aanduiding := recBedrijf.PRS_BEDRIJF_NAAM||'| ';
|
|
v_errormsg := '';
|
|
v_errorhint := '';
|
|
|
|
v_errorhint := 'Kijken of de kostenplaats al bestaat';
|
|
SELECT count(*)
|
|
INTO v_count
|
|
FROM prs_kostenplaats
|
|
WHERE prs_kostenplaats_verwijder is null
|
|
AND upper(prs_kostenplaats_upper) = upper(recKPN.prs_kostenplaats_nr);
|
|
|
|
IF (v_count = 0) THEN
|
|
|
|
v_errorhint := 'Fout bij toevoegen kostenplaats';
|
|
INSERT INTO PRS_KOSTENPLAATS
|
|
(PRS_KOSTENPLAATS_NR
|
|
,PRS_KOSTENPLAATS_OMSCHRIJVING
|
|
,PRS_KOSTENPLAATS_MODULE)
|
|
VALUES
|
|
(recKPN.prs_kostenplaats_nr
|
|
,recKPN.prs_kostenplaats_omschrijving
|
|
,recKPN.prs_kostenplaats_module);
|
|
|
|
commit;
|
|
v_count_update := v_count_update + 1;
|
|
|
|
END IF;
|
|
|
|
EXCEPTION WHEN OTHERS THEN
|
|
v_count_error := v_count_error + 1;
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR(SQLERRM, 1, 200);
|
|
IF (v_errormsg = '') THEN
|
|
v_errormsg := 'Fout tijdens verwerken van kostenplaats ['||recKPN.PRS_KOSTENPLAATS_NR||']';
|
|
END IF;
|
|
v_errorhint := v_errorhint||': ' || oracle_err_mes;
|
|
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_aanduiding||v_errormsg,
|
|
v_errorhint
|
|
);
|
|
|
|
commit; -- tbv logging
|
|
|
|
END;
|
|
END LOOP;
|
|
|
|
fac.imp_writelog (p_import_key,
|
|
'S',
|
|
'Kostenplaats: verwerkte regels zonder foutmelding: '||to_char(v_count_tot-v_count_error),
|
|
''
|
|
);
|
|
|
|
fac.imp_writelog (p_import_key,
|
|
'S',
|
|
'Kostenplaats: verwerkte regels met foutmelding: <b>'||to_char(v_count_error),
|
|
''
|
|
);
|
|
|
|
END IF;
|
|
|
|
|
|
OPEN cAfdeling1;
|
|
v_count_update := 0;
|
|
v_count_tot := 0;
|
|
v_count_error := 0;
|
|
IF cAfdeling1%ISOPEN THEN
|
|
|
|
LOOP
|
|
BEGIN
|
|
|
|
FETCH cAfdeling1 INTO recAfdeling1;
|
|
EXIT WHEN cAfdeling1%NOTFOUND;
|
|
v_count_tot := v_count_tot + 1;
|
|
|
|
v_aanduiding := recAfdeling1.prs_bedrijf_naam||'|'||recAfdeling1.prs_afdeling_naam||'|'||recAfdeling1.prs_afdeling_naam_parent ||'| ';
|
|
v_errormsg := '';
|
|
v_errorhint := '';
|
|
|
|
IF (recAfdeling1.niveau = 1) THEN
|
|
v_errorhint := 'Bedrijf niet gevonden bij afdeling';
|
|
v_prs_afdeling_parentkey := to_number(NULL);
|
|
SELECT prs_bedrijf_key
|
|
INTO v_bedrijf_key
|
|
FROM prs_bedrijf
|
|
WHERE prs_bedrijf_verwijder IS NULL
|
|
AND prs_bedrijf_naam_upper = recAfdeling1.prs_bedrijf_naam_upper;
|
|
ELSE
|
|
v_errorhint := 'Parent van de afdeling niet gevonden';
|
|
v_bedrijf_key := to_number(NULL);
|
|
SELECT prs_afdeling_key
|
|
INTO v_prs_afdeling_parentkey
|
|
FROM prs_afdeling
|
|
WHERE prs_afdeling_verwijder IS NULL
|
|
AND prs_afdeling_upper = recAfdeling1.prs_afdeling_naam_parent_upper;
|
|
END IF;
|
|
|
|
v_errorhint := 'Bepalen of afdeling bestaat';
|
|
SELECT count(*)
|
|
INTO v_count
|
|
FROM prs_afdeling
|
|
WHERE upper(rtrim(prs_afdeling_omschrijving)) = upper(rtrim(recAfdeling1.prs_afdeling_omschrijving))
|
|
AND prs_afdeling_verwijder is null;
|
|
|
|
v_errorhint := 'Kostenplaats bij afdeling bepalen';
|
|
SELECT COUNT(*), NVL(MAX(prs_kostenplaats_key),to_number(NULL))
|
|
INTO v_count, v_kostenplaats_key
|
|
FROM PRS_KOSTENPLAATS
|
|
WHERE prs_kostenplaats_verwijder IS NULL
|
|
AND prs_kostenplaats_upper = UPPER(trim(recAfdeling1.prs_kostenplaats_upper))
|
|
AND UPPER(prs_kostenplaats_module) = 'PRS';
|
|
|
|
v_errorhint := 'Kostenplaats bij afdeling bepalen';
|
|
SELECT COUNT(*)
|
|
INTO v_count
|
|
FROM PRS_AFDELING
|
|
WHERE prs_afdeling_verwijder IS NULL
|
|
AND prs_afdeling_upper = UPPER(trim(recAfdeling1.prs_afdeling_upper));
|
|
|
|
v_errorhint := 'Fout bij toevoegen afdeling';
|
|
IF (v_count = 0) THEN
|
|
|
|
INSERT INTO PRS_AFDELING
|
|
(prs_afdeling_naam
|
|
,prs_afdeling_omschrijving
|
|
,prs_bedrijf_key
|
|
,prs_afdeling_parentkey
|
|
,prs_kostenplaats_key
|
|
)
|
|
VALUES
|
|
(recAfdeling1.prs_afdeling_naam
|
|
,recAfdeling1.prs_afdeling_omschrijving
|
|
,v_bedrijf_key
|
|
,v_prs_afdeling_parentkey
|
|
,v_kostenplaats_key
|
|
);
|
|
|
|
COMMIT;
|
|
v_count_update := v_count_update + 1;
|
|
|
|
END IF;
|
|
|
|
EXCEPTION WHEN OTHERS THEN
|
|
|
|
v_count_error := v_count_error + 1;
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR(SQLERRM, 1, 200);
|
|
IF (v_errormsg = '') THEN
|
|
v_errormsg := 'Fout tijdens verwerken van afdeling ['||recAfdeling1.PRS_AFDELING_NAAM||']';
|
|
END IF;
|
|
v_errorhint := v_errorhint||': ' || oracle_err_mes;
|
|
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_aanduiding||v_errormsg,
|
|
v_errorhint
|
|
);
|
|
|
|
commit; -- tbv logging
|
|
END;
|
|
END LOOP;
|
|
|
|
fac.imp_writelog (p_import_key,
|
|
'S',
|
|
'Afdeling: verwerkte regels zonder foutmelding: '||to_char(v_count_tot-v_count_error),
|
|
''
|
|
);
|
|
|
|
fac.imp_writelog (p_import_key,
|
|
'S',
|
|
'Afdeling: verwerkte regels met foutmelding: <b>'||to_char(v_count_error),
|
|
''
|
|
);
|
|
|
|
END IF;
|
|
CLOSE cAfdeling1;
|
|
END;
|
|
|
|
-- SUBPROC
|
|
PROCEDURE add_organisatie_del (
|
|
p_import_key IN NUMBER
|
|
) IS
|
|
|
|
BEGIN
|
|
|
|
fac.imp_prs_delete_organisatie(p_import_key,1);
|
|
add_organisatie(p_import_key);
|
|
|
|
END;
|
|
|
|
-- SUBPROC
|
|
PROCEDURE update_kostenplaats (p_import_key IN NUMBER)
|
|
AS
|
|
CURSOR c
|
|
IS
|
|
SELECT DISTINCT
|
|
prs_kostenplaats_nr,
|
|
prs_kostenplaats_omschrijving,
|
|
prs_kostenplaats_module,
|
|
prs_kostenplaats_begin,
|
|
prs_kostenplaats_eind,
|
|
prs_kostenplaatsgrp_key,
|
|
prs_perslid_key,
|
|
prs_kostenplaats_limiet,
|
|
prs_kostenplaats_limietperiode,
|
|
prs_kostenplaats_extern,
|
|
prs_kostenplaats_fiat,
|
|
prs_kostenplaatsgrp_oms,
|
|
prs_kostenplaatsgrp_nr,
|
|
prs_fiatteur_1,
|
|
prs_fiatteur_2,
|
|
prs_fiatteur_3,
|
|
prs_kostenplaatsgrp_limiet,
|
|
prs_kostenplaatsgrp_limietp
|
|
FROM DVON_IMP_ORGKOST;
|
|
|
|
v_errormsg VARCHAR2 (1000);
|
|
v_errorhint VARCHAR2 (1000);
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
v_count NUMBER;
|
|
v_ongeldig NUMBER (1);
|
|
v_aanduiding VARCHAR2 (200);
|
|
|
|
v_kostenplaats_key prs_kostenplaats.prs_kostenplaats_key%TYPE;
|
|
v_kostenplaatsgrp_key prs_kostenplaatsgrp.prs_kostenplaatsgrp_key%TYPE;
|
|
|
|
BEGIN
|
|
FOR rec IN c
|
|
LOOP
|
|
BEGIN
|
|
BEGIN
|
|
v_aanduiding := rec.prs_kostenplaatsgrp_nr || '|' || rec.prs_kostenplaatsgrp_oms;
|
|
|
|
v_errorhint := 'Opzoeken kostenplaatsgroep';
|
|
|
|
SELECT prs_kostenplaatsgrp_key
|
|
INTO v_kostenplaatsgrp_key
|
|
FROM prs_kostenplaatsgrp
|
|
WHERE UPPER (prs_kostenplaatsgrp_oms) = UPPER (rec.prs_kostenplaatsgrp_oms);
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN
|
|
v_errorhint := 'Toevoegen kostenplaatsgroep';
|
|
|
|
INSERT INTO prs_kostenplaatsgrp (prs_kostenplaatsgrp_oms)
|
|
VALUES (rec.prs_kostenplaats_omschrijving)
|
|
RETURNING prs_kostenplaatsgrp_key
|
|
INTO v_kostenplaatsgrp_key;
|
|
END;
|
|
|
|
BEGIN
|
|
v_aanduiding := rec.prs_kostenplaats_nr || '|' || rec.prs_kostenplaats_omschrijving;
|
|
|
|
v_errorhint := 'Opzoeken kostenplaats';
|
|
|
|
SELECT prs_kostenplaats_key
|
|
INTO v_kostenplaats_key
|
|
FROM prs_kostenplaats
|
|
WHERE prs_kostenplaats_verwijder IS NULL
|
|
AND prs_kostenplaats_upper = UPPER (rec.prs_kostenplaats_nr);
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN
|
|
v_errorhint := 'Toevoegen kostenplaats';
|
|
|
|
INSERT INTO prs_kostenplaats (prs_kostenplaats_nr,
|
|
prs_kostenplaats_module,
|
|
prs_kostenplaats_omschrijving)
|
|
VALUES (rec.prs_kostenplaats_nr,
|
|
rec.prs_kostenplaats_module,
|
|
rec.prs_kostenplaats_omschrijving)
|
|
RETURNING prs_kostenplaats_key
|
|
INTO v_kostenplaats_key;
|
|
END;
|
|
|
|
-- Even de kostenplaats groep updaten, dit kunnen fiatteuren en/of limieten zijn
|
|
UPDATE prs_kostenplaatsgrp g
|
|
SET prs_kostenplaatsgrp_oms = rec.prs_kostenplaatsgrp_oms,
|
|
prs_kostenplaatsgrp_limiet = rec.prs_kostenplaatsgrp_limiet,
|
|
prs_kostenplaatsgrp_limperiode = rec.prs_kostenplaatsgrp_limietp,
|
|
prs_kostenplaatsgrp_nr = rec.prs_kostenplaatsgrp_nr,
|
|
prs_perslid_key = rec.prs_fiatteur_1,
|
|
prs_kostenplaatsgrp_fiat2_key = rec.prs_fiatteur_2,
|
|
prs_kostenplaatsgrp_fiat3_key = rec.prs_fiatteur_3
|
|
WHERE g.prs_kostenplaatsgrp_key = v_kostenplaatsgrp_key;
|
|
|
|
-- We hebben nu een kostenplaats record aangemaakt of gevonden.
|
|
-- Dan gaan we deze nu updaten.
|
|
v_errorhint := 'Aanpassen kostenplaats';
|
|
|
|
UPDATE prs_kostenplaats k
|
|
SET prs_kostenplaats_omschrijving = rec.prs_kostenplaats_omschrijving,
|
|
prs_kostenplaats_module = rec.prs_kostenplaats_module,
|
|
prs_kostenplaats_begin = rec.prs_kostenplaats_begin,
|
|
prs_kostenplaats_eind = rec.prs_kostenplaats_eind,
|
|
prs_kostenplaatsgrp_key = rec.prs_kostenplaatsgrp_key,
|
|
prs_perslid_key = rec.prs_perslid_key,
|
|
prs_kostenplaats_limiet = rec.prs_kostenplaats_limiet,
|
|
prs_kostenplaats_limietperiode = rec.prs_kostenplaats_limietperiode,
|
|
prs_kostenplaats_extern =
|
|
COALESCE (rec.prs_kostenplaats_extern, prs_kostenplaats_extern),
|
|
prs_kostenplaats_fiat = COALESCE (rec.prs_kostenplaats_fiat, prs_kostenplaats_fiat)
|
|
WHERE k.prs_kostenplaats_key = v_kostenplaats_key;
|
|
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
|
v_errormsg := 'error ' || oracle_err_num || '/' || oracle_err_mes;
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_errormsg,
|
|
v_errorhint || ' | ' || v_aanduiding);
|
|
END;
|
|
END LOOP;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 100);
|
|
v_errormsg := 'error ' || oracle_err_num || '/' || oracle_err_mes;
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_errormsg,
|
|
v_errorhint || ' | ' || v_aanduiding);
|
|
END;
|
|
|
|
-- MAIN
|
|
BEGIN
|
|
add_organisatie (p_import_key);
|
|
add_organisatie_del (p_import_key);
|
|
update_kostenplaats (p_import_key);
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg :=
|
|
v_errormsg
|
|
|| ' (error '
|
|
|| oracle_err_num
|
|
|| '/'
|
|
|| oracle_err_mes
|
|
|| ')';
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_errormsg,
|
|
'Importproces afgebroken!');
|
|
END DVON_UPDATE_ORGKOST;
|
|
/
|
|
|
|
CREATE OR REPLACE PROCEDURE dvon_import_extrains (p_import_key IN NUMBER)
|
|
IS
|
|
c_delim VARCHAR2 (1) := ';';
|
|
v_newline fac_imp_file.fac_imp_file_line%TYPE; -- Input line
|
|
v_errormsg VARCHAR2 (1000);
|
|
v_errorhint VARCHAR2 (1000);
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
header_is_valid NUMBER;
|
|
v_count_tot NUMBER (10);
|
|
v_count_import NUMBER (10);
|
|
v_ongeldig NUMBER (1);
|
|
v_aanduiding VARCHAR (400);
|
|
v_ins_srtkenmerk_key1 VARCHAR2 (255);
|
|
v_ins_srtkenmerk_key2 VARCHAR2 (255);
|
|
v_ins_srtkenmerk_key3 VARCHAR2 (255);
|
|
v_ins_srtkenmerk_key4 VARCHAR2 (255);
|
|
v_ins_srtkenmerk_key5 VARCHAR2 (255);
|
|
v_ins_srtkenmerk_key6 VARCHAR2 (255);
|
|
v_ins_srtkenmerk_key7 VARCHAR2 (255);
|
|
v_ins_srtkenmerk_key8 VARCHAR2 (255);
|
|
v_ins_srtkenmerk_key9 VARCHAR2 (255);
|
|
v_ins_srtkenmerk_key10 VARCHAR2 (255);
|
|
v_ins_srtkenmerk_key11 VARCHAR2 (255);
|
|
v_ins_srtkenmerk_key12 VARCHAR2 (255);
|
|
v_ins_srtkenmerk_key13 VARCHAR2 (255);
|
|
v_ins_srtkenmerk_key14 VARCHAR2 (255);
|
|
v_ins_srtkenmerk_key15 VARCHAR2 (255);
|
|
v_ins_srtkenmerk_key16 VARCHAR2 (255);
|
|
v_ins_srtkenmerk_key17 VARCHAR2 (255);
|
|
v_ins_srtkenmerk_key18 VARCHAR2 (255);
|
|
v_ins_srtkenmerk_key19 VARCHAR2 (255);
|
|
v_ins_srtkenmerk_key20 VARCHAR2 (255);
|
|
-- De importvelden
|
|
v_ins_discipline_omschrijving VARCHAR2 (255); -- C60
|
|
v_ins_discipline_kostensoort VARCHAR2 (255); --C60
|
|
v_ins_srtgroep_omschrijving VARCHAR2 (255); -- C60
|
|
v_ins_srtdeel_code VARCHAR2 (255); -- C10
|
|
v_ins_srtdeel_omschrijving VARCHAR2 (255); -- C100
|
|
v_ins_deel_omschrijving VARCHAR2 (255); -- C60
|
|
v_ins_deel_opmerking VARCHAR2 (1000); -- C320
|
|
v_reserveerbaar VARCHAR2 (255); -- C1
|
|
v_reserveerbaar_n NUMBER (1); -- N1
|
|
v_res_deel_eenheid VARCHAR2 (255); -- C10
|
|
v_res_deel_prijs VARCHAR2 (255); -- N7,2
|
|
v_res_deel_prijs_n NUMBER (7, 2); -- N7,2
|
|
v_alg_locatie_code VARCHAR2 (255); -- C10
|
|
v_alg_gebouw_code VARCHAR2 (255); -- C12
|
|
v_alg_verdieping_volgnr VARCHAR2 (255); -- N3
|
|
v_alg_verdieping_volgnr_n NUMBER (3); -- N3
|
|
v_alg_ruimte_nr VARCHAR2 (255); -- C10
|
|
v_res_deel_alg_level VARCHAR2 (255); -- C1 (naar -1 t/m 5)
|
|
v_res_deel_alg_level_n NUMBER (1); -- N1
|
|
v_res_discipline_omschrijving VARCHAR2 (255); -- C60
|
|
v_res_discipline_kostensoort VARCHAR2 (255); -- C60
|
|
v_prs_perslid_matchcode VARCHAR2 (255);
|
|
v_prs_perslid_matchwaarde VARCHAR2 (255);
|
|
v_ins_kenmerkwaarde1 VARCHAR2 (4000);
|
|
v_ins_kenmerkwaarde2 VARCHAR2 (4000);
|
|
v_ins_kenmerkwaarde3 VARCHAR2 (4000);
|
|
v_ins_kenmerkwaarde4 VARCHAR2 (4000);
|
|
v_ins_kenmerkwaarde5 VARCHAR2 (4000);
|
|
v_ins_kenmerkwaarde6 VARCHAR2 (4000);
|
|
v_ins_kenmerkwaarde7 VARCHAR2 (4000);
|
|
v_ins_kenmerkwaarde8 VARCHAR2 (4000);
|
|
v_ins_kenmerkwaarde9 VARCHAR2 (4000);
|
|
v_ins_kenmerkwaarde10 VARCHAR2 (4000);
|
|
v_ins_kenmerkwaarde11 VARCHAR2 (4000);
|
|
v_ins_kenmerkwaarde12 VARCHAR2 (4000);
|
|
v_ins_kenmerkwaarde13 VARCHAR2 (4000);
|
|
v_ins_kenmerkwaarde14 VARCHAR2 (4000);
|
|
v_ins_kenmerkwaarde15 VARCHAR2 (4000);
|
|
v_ins_kenmerkwaarde16 VARCHAR2 (4000);
|
|
v_ins_kenmerkwaarde17 VARCHAR2 (4000);
|
|
v_ins_kenmerkwaarde18 VARCHAR2 (4000);
|
|
v_ins_kenmerkwaarde19 VARCHAR2 (4000);
|
|
v_ins_kenmerkwaarde20 VARCHAR2 (4000);
|
|
v_file_index NUMBER;
|
|
|
|
-- Overige velden:
|
|
CURSOR c1
|
|
IS
|
|
SELECT *
|
|
FROM fac_imp_file
|
|
WHERE fac_import_key = p_import_key
|
|
ORDER BY fac_imp_file_index;
|
|
|
|
-- Controleer tijdens import-fase alleen op bestaan van kenmerksoort (of
|
|
-- deze - via een kenmerk - wel is gedefinieerd voor de betreffende object-
|
|
-- discipline/groep/soort, volgt pas tijdens de update-fase)!
|
|
--
|
|
-- kw is bijvoorbeeld 'Parkeercode' of 'Parkeercode|3' waarbij de laatste in groep 3 zit
|
|
-- het resultaat is NULL (als niet gevonden) of 234|3 voor strkenmer_key 234 in groep 3
|
|
-- Als geen groep is meegegeven wordt 234|0 opgeleverd (de default groep)
|
|
FUNCTION bepaal_srtkenmerk_key (p_kw IN VARCHAR)
|
|
RETURN VARCHAR
|
|
IS
|
|
v_srtkenmerk_key NUMBER;
|
|
v_kenmerk_groep NUMBER;
|
|
v_kw VARCHAR(250);
|
|
BEGIN
|
|
v_kenmerk_groep := 0;
|
|
v_kw := p_kw;
|
|
IF INSTR (v_kw, '|') > 1
|
|
THEN
|
|
v_kenmerk_groep := SUBSTR (v_kw, INSTR (v_kw, '|') + 1);
|
|
v_kw := SUBSTR (v_kw, 1, INSTR (v_kw, '|') - 1);
|
|
END IF;
|
|
|
|
IF p_kw LIKE 'maat'
|
|
THEN -- maat, dus maar even wegzetten (wordt later gesplitst)
|
|
SELECT 9999
|
|
INTO v_srtkenmerk_key
|
|
FROM DUAL;
|
|
|
|
ELSE -- kenmerkwaarde is alfanumeriek (dus omschrijving)!
|
|
SELECT ins_srtkenmerk_key
|
|
INTO v_srtkenmerk_key
|
|
FROM ins_v_aanwezigsrtkenmerk
|
|
WHERE ins_srtkenmerk_upper = UPPER (v_kw)
|
|
AND ins_srtkenmerk_kenmerktype IN ('C', 'D', 'N', 'R', 'S', 'X', 'B');
|
|
END IF;
|
|
|
|
RETURN TO_CHAR(v_srtkenmerk_key) || '|' || TO_CHAR(v_kenmerk_groep);
|
|
EXCEPTION
|
|
WHEN NO_DATA_FOUND
|
|
THEN
|
|
IF p_kw IS NULL OR UPPER (p_kw) LIKE 'KENMERK%'
|
|
THEN
|
|
RETURN NULL;
|
|
ELSE
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
'Fout bij bepalen kenmerksoort [' || p_kw || ']',
|
|
'Bestaat niet of type ongeldig');
|
|
COMMIT;
|
|
RETURN NULL;
|
|
END IF;
|
|
END;
|
|
BEGIN
|
|
-- Eerst opruiming
|
|
DELETE FROM fac_imp_ins;
|
|
|
|
COMMIT;
|
|
|
|
v_count_tot := 0;
|
|
v_count_import := 0;
|
|
header_is_valid := 0;
|
|
v_prs_perslid_matchcode := '';
|
|
|
|
FOR rec1 IN c1
|
|
LOOP
|
|
BEGIN
|
|
v_newline := rec1.fac_imp_file_line;
|
|
v_file_index := rec1.fac_imp_file_index;
|
|
v_errormsg := 'Fout bij opvragen importregel';
|
|
v_aanduiding := '';
|
|
v_ongeldig := 0;
|
|
-- Lees alle veldwaarden
|
|
fac.imp_getfield (v_newline, c_delim, v_ins_discipline_omschrijving);
|
|
fac.imp_getfield (v_newline, c_delim, v_ins_discipline_kostensoort);
|
|
fac.imp_getfield (v_newline, c_delim, v_ins_srtgroep_omschrijving);
|
|
fac.imp_getfield (v_newline, c_delim, v_ins_srtdeel_code);
|
|
fac.imp_getfield (v_newline, c_delim, v_ins_srtdeel_omschrijving);
|
|
fac.imp_getfield (v_newline, c_delim, v_ins_deel_omschrijving);
|
|
fac.imp_getfield (v_newline, c_delim, v_ins_deel_opmerking);
|
|
fac.imp_getfield (v_newline, c_delim, v_reserveerbaar);
|
|
fac.imp_getfield (v_newline, c_delim, v_res_deel_eenheid);
|
|
fac.imp_getfield (v_newline, c_delim, v_res_deel_prijs);
|
|
fac.imp_getfield (v_newline, c_delim, v_alg_locatie_code);
|
|
fac.imp_getfield (v_newline, c_delim, v_alg_gebouw_code);
|
|
fac.imp_getfield (v_newline, c_delim, v_alg_verdieping_volgnr);
|
|
fac.imp_getfield (v_newline, c_delim, v_alg_ruimte_nr);
|
|
fac.imp_getfield (v_newline, c_delim, v_res_deel_alg_level);
|
|
fac.imp_getfield (v_newline, c_delim, v_res_discipline_omschrijving);
|
|
fac.imp_getfield (v_newline, c_delim, v_res_discipline_kostensoort);
|
|
fac.imp_getfield (v_newline, c_delim, v_prs_perslid_matchcode);
|
|
fac.imp_getfield (v_newline, c_delim, v_prs_perslid_matchwaarde);
|
|
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde1);
|
|
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde2);
|
|
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde3);
|
|
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde4);
|
|
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde5);
|
|
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde6);
|
|
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde7);
|
|
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde8);
|
|
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde9);
|
|
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde10);
|
|
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde11);
|
|
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde12);
|
|
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde13);
|
|
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde14);
|
|
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde15);
|
|
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde16);
|
|
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde17);
|
|
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde18);
|
|
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde19);
|
|
fac.imp_getfield (v_newline, c_delim, v_ins_kenmerkwaarde20);
|
|
|
|
v_aanduiding :=
|
|
'['
|
|
|| v_ins_discipline_omschrijving
|
|
|| '|'
|
|
|| v_ins_srtgroep_omschrijving
|
|
|| '|'
|
|
|| v_ins_srtdeel_code
|
|
|| '|'
|
|
|| v_ins_srtdeel_omschrijving
|
|
|| '|'
|
|
|| v_ins_deel_omschrijving
|
|
|| '] ';
|
|
|
|
-- Ik controleer of ik een geldige header heb, dat is: in de juiste kolommen
|
|
-- de juiste kolomkop. Ik controleer daarbij alle NIET-kenmerk kolommen!
|
|
-- Ik negeer alles totdat ik een geldige header ben gepasseerd.
|
|
IF (header_is_valid = 0)
|
|
THEN
|
|
IF UPPER (v_ins_discipline_omschrijving) =
|
|
'DISCIPLINEOMSCHRIJVING'
|
|
AND UPPER (v_ins_discipline_kostensoort) =
|
|
'DISCIPLINEKOSTENSOORT'
|
|
AND UPPER (v_ins_srtgroep_omschrijving) =
|
|
'GROEPSOORTOMSCHRIJVING'
|
|
AND UPPER (v_ins_srtdeel_code) = 'OBJECTSOORTCODE'
|
|
AND UPPER (v_ins_srtdeel_omschrijving) =
|
|
'OBJECTSOORTOMSCHRIJVING'
|
|
AND UPPER (v_ins_deel_omschrijving) = 'OBJECTOMSCHRIJVING'
|
|
AND UPPER (v_ins_deel_opmerking) = 'OBJECTOPMERKING'
|
|
AND UPPER (v_reserveerbaar) = 'RESERVEERBAAR'
|
|
AND UPPER (v_res_deel_eenheid) = 'EENHEID'
|
|
AND UPPER (v_res_deel_prijs) = 'PRIJS'
|
|
AND UPPER (v_alg_locatie_code) = 'LOCATIECODE'
|
|
AND UPPER (v_alg_gebouw_code) = 'GEBOUWCODE'
|
|
AND UPPER (v_alg_verdieping_volgnr) = 'BOUWLAAGVOLGNUMMER'
|
|
AND UPPER (v_alg_ruimte_nr) = 'RUIMTENUMMER'
|
|
AND UPPER (v_res_deel_alg_level) = 'RESERVERINGSCOPE'
|
|
AND UPPER (v_res_discipline_omschrijving) = 'CATALOGUSNAAM'
|
|
AND UPPER (v_res_discipline_kostensoort) =
|
|
'CATALOGUSKOSTENSOORT'
|
|
AND UPPER (v_prs_perslid_matchcode) = 'PERSOONMATCHCODE'
|
|
AND UPPER (v_prs_perslid_matchwaarde) = 'PERSOONMATCHWAARDE'
|
|
THEN
|
|
v_ins_srtkenmerk_key1 := bepaal_srtkenmerk_key (v_ins_kenmerkwaarde1);
|
|
v_ins_srtkenmerk_key2 := bepaal_srtkenmerk_key (v_ins_kenmerkwaarde2);
|
|
v_ins_srtkenmerk_key3 := bepaal_srtkenmerk_key (v_ins_kenmerkwaarde3);
|
|
v_ins_srtkenmerk_key4 := bepaal_srtkenmerk_key (v_ins_kenmerkwaarde4);
|
|
v_ins_srtkenmerk_key5 := bepaal_srtkenmerk_key (v_ins_kenmerkwaarde5);
|
|
v_ins_srtkenmerk_key6 := bepaal_srtkenmerk_key (v_ins_kenmerkwaarde6);
|
|
v_ins_srtkenmerk_key7 := bepaal_srtkenmerk_key (v_ins_kenmerkwaarde7);
|
|
v_ins_srtkenmerk_key8 := bepaal_srtkenmerk_key (v_ins_kenmerkwaarde8);
|
|
v_ins_srtkenmerk_key9 := bepaal_srtkenmerk_key (v_ins_kenmerkwaarde9);
|
|
v_ins_srtkenmerk_key10 := bepaal_srtkenmerk_key (v_ins_kenmerkwaarde10);
|
|
v_ins_srtkenmerk_key11 := bepaal_srtkenmerk_key (v_ins_kenmerkwaarde11);
|
|
v_ins_srtkenmerk_key12 := bepaal_srtkenmerk_key (v_ins_kenmerkwaarde12);
|
|
v_ins_srtkenmerk_key13 := bepaal_srtkenmerk_key (v_ins_kenmerkwaarde13);
|
|
v_ins_srtkenmerk_key14 := bepaal_srtkenmerk_key (v_ins_kenmerkwaarde14);
|
|
v_ins_srtkenmerk_key15 := bepaal_srtkenmerk_key (v_ins_kenmerkwaarde15);
|
|
v_ins_srtkenmerk_key16 := bepaal_srtkenmerk_key (v_ins_kenmerkwaarde16);
|
|
v_ins_srtkenmerk_key17 := bepaal_srtkenmerk_key (v_ins_kenmerkwaarde17);
|
|
v_ins_srtkenmerk_key18 := bepaal_srtkenmerk_key (v_ins_kenmerkwaarde18);
|
|
v_ins_srtkenmerk_key19 := bepaal_srtkenmerk_key (v_ins_kenmerkwaarde19);
|
|
v_ins_srtkenmerk_key20 := bepaal_srtkenmerk_key (v_ins_kenmerkwaarde20);
|
|
|
|
header_is_valid := 1;
|
|
END IF;
|
|
ELSE
|
|
v_count_tot := v_count_tot + 1;
|
|
-- Controleer alle veldwaarden
|
|
v_errormsg := 'Disciplineomschrijving ongeldig';
|
|
v_ins_discipline_omschrijving :=
|
|
TRIM (v_ins_discipline_omschrijving);
|
|
|
|
IF v_ins_discipline_omschrijving IS NULL
|
|
OR LENGTH (v_ins_discipline_omschrijving) > 60
|
|
THEN
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || v_errormsg,
|
|
'Regel wordt overgeslagen');
|
|
v_ongeldig := 1;
|
|
END IF;
|
|
|
|
--
|
|
v_errormsg := 'Kostensoort ongeldig';
|
|
v_ins_discipline_kostensoort :=
|
|
TRIM (v_ins_discipline_kostensoort);
|
|
|
|
IF LENGTH (v_ins_discipline_kostensoort) > 60
|
|
THEN
|
|
v_ins_discipline_kostensoort :=
|
|
SUBSTR (v_ins_discipline_kostensoort, 1, 60);
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'W',
|
|
v_aanduiding || v_errormsg,
|
|
'Disciplinekostensoort wordt afgebroken tot ['
|
|
|| v_ins_discipline_kostensoort
|
|
|| ']'
|
|
);
|
|
END IF;
|
|
|
|
--
|
|
v_errormsg := 'Groepsoortomschrijving ongeldig';
|
|
v_ins_srtgroep_omschrijving := TRIM (v_ins_srtgroep_omschrijving);
|
|
|
|
IF v_ins_srtgroep_omschrijving IS NULL
|
|
OR LENGTH (v_ins_srtgroep_omschrijving) > 60
|
|
THEN
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || v_errormsg,
|
|
'Regel wordt overgeslagen');
|
|
v_ongeldig := 1;
|
|
END IF;
|
|
|
|
--
|
|
v_errormsg := 'Objectsoortcode ongeldig';
|
|
v_ins_srtdeel_code := TRIM (v_ins_srtdeel_code);
|
|
|
|
IF v_ins_srtdeel_code IS NULL OR LENGTH (v_ins_srtdeel_code) > 10
|
|
THEN
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || v_errormsg,
|
|
'Regel wordt overgeslagen');
|
|
v_ongeldig := 1;
|
|
END IF;
|
|
|
|
--
|
|
v_errormsg := 'Objectsoortomschrijving ongeldig';
|
|
v_ins_srtdeel_omschrijving := TRIM (v_ins_srtdeel_omschrijving);
|
|
|
|
IF v_ins_srtdeel_omschrijving IS NULL
|
|
OR LENGTH (v_ins_srtdeel_omschrijving) > 100
|
|
THEN
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || v_errormsg,
|
|
'Regel wordt overgeslagen');
|
|
v_ongeldig := 1;
|
|
END IF;
|
|
|
|
--
|
|
v_errormsg := 'Objectomschrijving ongeldig';
|
|
v_ins_deel_omschrijving := TRIM (v_ins_deel_omschrijving);
|
|
|
|
IF v_ins_deel_omschrijving IS NULL
|
|
OR LENGTH (v_ins_deel_omschrijving) > 60
|
|
THEN
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || v_errormsg,
|
|
'Regel wordt overgeslagen');
|
|
v_ongeldig := 1;
|
|
END IF;
|
|
|
|
v_errormsg := 'Objectopmerking ongeldig';
|
|
v_ins_deel_opmerking := TRIM (v_ins_deel_opmerking);
|
|
|
|
IF LENGTH (v_ins_deel_opmerking) > 320
|
|
THEN
|
|
v_ins_deel_opmerking := SUBSTR (v_ins_deel_opmerking, 1, 320);
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'W',
|
|
v_aanduiding || v_errormsg,
|
|
'Objectopmerking wordt afgebroken tot ['
|
|
|| v_ins_deel_opmerking
|
|
|| ']'
|
|
);
|
|
END IF;
|
|
|
|
-- Verder geen foutdetectie; kan dus stricter?
|
|
SELECT DECODE (SUBSTR (TRIM (UPPER (v_reserveerbaar)), 1, 1),
|
|
'J', 1,
|
|
0)
|
|
INTO v_reserveerbaar_n
|
|
FROM DUAL;
|
|
|
|
--
|
|
v_errormsg := 'Eenheid ongeldig';
|
|
v_res_deel_eenheid := TRIM (v_res_deel_eenheid);
|
|
|
|
IF LENGTH (v_res_deel_eenheid) > 10
|
|
THEN
|
|
v_res_deel_eenheid := SUBSTR (v_res_deel_eenheid, 1, 10);
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'W',
|
|
v_aanduiding || v_errormsg,
|
|
'Eenheid wordt afgebroken tot ['
|
|
|| v_res_deel_eenheid
|
|
|| ']'
|
|
);
|
|
END IF;
|
|
|
|
--
|
|
v_errormsg := 'Prijs ongeldig; maximale grootte 99999.99';
|
|
v_res_deel_prijs := TRIM (v_res_deel_prijs);
|
|
v_res_deel_prijs_n := NULL;
|
|
|
|
IF (v_res_deel_prijs IS NOT NULL)
|
|
THEN
|
|
IF (fac.safe_to_number (v_res_deel_prijs) IS NULL)
|
|
THEN
|
|
v_ongeldig := 1;
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || v_errormsg,
|
|
'Regel wordt overgeslagen!');
|
|
ELSE
|
|
v_res_deel_prijs_n := fac.safe_to_number (v_res_deel_prijs);
|
|
END IF;
|
|
END IF;
|
|
|
|
--
|
|
v_errormsg := 'Locatiecode ongeldig';
|
|
v_alg_locatie_code := TRIM (v_alg_locatie_code);
|
|
|
|
IF LENGTH (v_alg_locatie_code) > 10
|
|
THEN
|
|
v_alg_locatie_code := SUBSTR (v_alg_locatie_code, 1, 10);
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'W',
|
|
v_aanduiding || v_errormsg,
|
|
'Locatiecode wordt afgebroken tot ['
|
|
|| v_alg_locatie_code
|
|
|| ']'
|
|
);
|
|
END IF;
|
|
|
|
--
|
|
v_errormsg := 'Gebouwcode ongeldig';
|
|
v_alg_gebouw_code := TRIM (v_alg_gebouw_code);
|
|
|
|
IF LENGTH (v_alg_gebouw_code) > 12
|
|
THEN
|
|
v_alg_gebouw_code := SUBSTR (v_alg_gebouw_code, 1, 12);
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'W',
|
|
v_aanduiding || v_errormsg,
|
|
'Gebouwcode wordt afgebroken tot ['
|
|
|| v_alg_gebouw_code
|
|
|| ']'
|
|
);
|
|
END IF;
|
|
|
|
--
|
|
v_errormsg := 'Bouwlaagvolgnummer ongeldig';
|
|
v_alg_verdieping_volgnr := TRIM (v_alg_verdieping_volgnr);
|
|
v_alg_verdieping_volgnr_n := NULL;
|
|
|
|
IF (v_alg_verdieping_volgnr IS NOT NULL)
|
|
THEN
|
|
v_alg_verdieping_volgnr_n :=
|
|
ROUND (fac.safe_to_number (v_alg_verdieping_volgnr));
|
|
|
|
IF v_alg_verdieping_volgnr_n NOT BETWEEN -999 AND 999
|
|
THEN
|
|
v_ongeldig := 1;
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || v_errormsg,
|
|
'Regel wordt overgeslagen!');
|
|
ELSE
|
|
v_alg_verdieping_volgnr_n :=
|
|
fac.safe_to_number (v_alg_verdieping_volgnr);
|
|
END IF;
|
|
END IF;
|
|
|
|
--
|
|
v_errormsg := 'Ruimtenummer ongeldig';
|
|
v_alg_ruimte_nr := TRIM (v_alg_ruimte_nr);
|
|
|
|
IF LENGTH (v_alg_ruimte_nr) > 10
|
|
THEN
|
|
v_alg_ruimte_nr := SUBSTR (v_alg_ruimte_nr, 1, 10);
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'W',
|
|
v_aanduiding || v_errormsg,
|
|
'Ruimtenummer wordt afgebroken tot ['
|
|
|| v_alg_ruimte_nr
|
|
|| ']'
|
|
);
|
|
END IF;
|
|
|
|
-- Verder geen foutdetectie; kan dus stricter?
|
|
SELECT DECODE (SUBSTR (TRIM (v_res_deel_alg_level), 1, 1),
|
|
'E', 0,
|
|
'D', 1,
|
|
'L', 2,
|
|
'G', 3,
|
|
'V', 4,
|
|
'R', 5,
|
|
-1)
|
|
INTO v_res_deel_alg_level_n
|
|
FROM DUAL;
|
|
|
|
--
|
|
v_errormsg := 'Catalogusnaam ongeldig';
|
|
v_res_discipline_omschrijving :=
|
|
TRIM (v_res_discipline_omschrijving);
|
|
|
|
IF LENGTH (v_res_discipline_omschrijving) > 60
|
|
THEN
|
|
v_res_discipline_omschrijving :=
|
|
SUBSTR (TRIM (v_res_discipline_omschrijving), 1, 60);
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'W',
|
|
v_aanduiding || v_errormsg,
|
|
'Catalogusnaam wordt afgebroken tot ['
|
|
|| v_res_discipline_omschrijving
|
|
|| ']'
|
|
);
|
|
END IF;
|
|
|
|
--
|
|
v_errormsg := 'Cataloguskostensoort ongeldig';
|
|
v_res_discipline_kostensoort :=
|
|
TRIM (v_res_discipline_kostensoort);
|
|
|
|
IF LENGTH (v_res_discipline_kostensoort) > 60
|
|
THEN
|
|
v_res_discipline_kostensoort :=
|
|
SUBSTR (TRIM (v_res_discipline_kostensoort), 1, 60);
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'W',
|
|
v_aanduiding || v_errormsg,
|
|
'Cataloguskostensoort wordt afgebroken tot ['
|
|
|| v_res_discipline_kostensoort
|
|
|| ']'
|
|
);
|
|
END IF;
|
|
|
|
-- De rest alleen ff trimmen.
|
|
v_prs_perslid_matchcode := TRIM (v_prs_perslid_matchcode);
|
|
v_prs_perslid_matchwaarde := TRIM (v_prs_perslid_matchwaarde);
|
|
v_ins_kenmerkwaarde1 := TRIM (v_ins_kenmerkwaarde1);
|
|
v_ins_kenmerkwaarde2 := TRIM (v_ins_kenmerkwaarde2);
|
|
v_ins_kenmerkwaarde3 := TRIM (v_ins_kenmerkwaarde3);
|
|
v_ins_kenmerkwaarde4 := TRIM (v_ins_kenmerkwaarde4);
|
|
v_ins_kenmerkwaarde5 := TRIM (v_ins_kenmerkwaarde5);
|
|
v_ins_kenmerkwaarde6 := TRIM (v_ins_kenmerkwaarde6);
|
|
v_ins_kenmerkwaarde7 := TRIM (v_ins_kenmerkwaarde7);
|
|
v_ins_kenmerkwaarde8 := TRIM (v_ins_kenmerkwaarde8);
|
|
v_ins_kenmerkwaarde9 := TRIM (v_ins_kenmerkwaarde9);
|
|
v_ins_kenmerkwaarde10 := TRIM (v_ins_kenmerkwaarde10);
|
|
v_ins_kenmerkwaarde11 := TRIM (v_ins_kenmerkwaarde11);
|
|
v_ins_kenmerkwaarde12 := TRIM (v_ins_kenmerkwaarde12);
|
|
v_ins_kenmerkwaarde13 := TRIM (v_ins_kenmerkwaarde13);
|
|
v_ins_kenmerkwaarde14 := TRIM (v_ins_kenmerkwaarde14);
|
|
v_ins_kenmerkwaarde15 := TRIM (v_ins_kenmerkwaarde15);
|
|
v_ins_kenmerkwaarde16 := TRIM (v_ins_kenmerkwaarde16);
|
|
v_ins_kenmerkwaarde17 := TRIM (v_ins_kenmerkwaarde17);
|
|
v_ins_kenmerkwaarde18 := TRIM (v_ins_kenmerkwaarde18);
|
|
v_ins_kenmerkwaarde19 := TRIM (v_ins_kenmerkwaarde19);
|
|
v_ins_kenmerkwaarde20 := TRIM (v_ins_kenmerkwaarde20);
|
|
|
|
-- Insert geformatteerde import record
|
|
IF v_ongeldig = 0
|
|
THEN
|
|
BEGIN
|
|
v_errormsg := 'Fout bij wegschrijven importregel';
|
|
|
|
-- Als uit kenmerkheader een geldige kenmerksoort-key volgt,
|
|
-- dan is kenmerkwaarde<n> gevuld met <key>=<waarde>; zoniet,
|
|
-- dan is kenmerkwaarde<n> gevuld met <waarde>!
|
|
-- NB. Een NULL-waarde resulteert NIET in het wissen van een
|
|
-- kenmerkveld (bijwerken kan wel, maar wissen dus niet)!
|
|
INSERT INTO fac_imp_ins (
|
|
ins_discipline_omschrijving,
|
|
ins_discipline_kostensoort,
|
|
ins_srtgroep_omschrijving,
|
|
ins_srtdeel_code,
|
|
ins_srtdeel_omschrijving,
|
|
ins_deel_omschrijving,
|
|
ins_deel_opmerking,
|
|
reserveerbaar,
|
|
res_deel_eenheid,
|
|
res_deel_prijs,
|
|
alg_locatie_code,
|
|
alg_gebouw_code,
|
|
alg_verdieping_volgnr,
|
|
alg_ruimte_nr,
|
|
res_deel_alg_level,
|
|
res_discipline_omschrijving,
|
|
res_discipline_kostensoort,
|
|
prs_perslid_matchcode,
|
|
prs_perslid_matchwaarde,
|
|
ins_kenmerkwaarde1,
|
|
ins_kenmerkwaarde2,
|
|
ins_kenmerkwaarde3,
|
|
ins_kenmerkwaarde4,
|
|
ins_kenmerkwaarde5,
|
|
ins_kenmerkwaarde6,
|
|
ins_kenmerkwaarde7,
|
|
ins_kenmerkwaarde8,
|
|
ins_kenmerkwaarde9,
|
|
ins_kenmerkwaarde10,
|
|
ins_kenmerkwaarde11,
|
|
ins_kenmerkwaarde12,
|
|
ins_kenmerkwaarde13,
|
|
ins_kenmerkwaarde14,
|
|
ins_kenmerkwaarde15,
|
|
ins_kenmerkwaarde16,
|
|
ins_kenmerkwaarde17,
|
|
ins_kenmerkwaarde18,
|
|
ins_kenmerkwaarde19,
|
|
ins_kenmerkwaarde20
|
|
)
|
|
VALUES (
|
|
v_ins_discipline_omschrijving,
|
|
v_ins_discipline_kostensoort,
|
|
v_ins_srtgroep_omschrijving,
|
|
v_ins_srtdeel_code,
|
|
v_ins_srtdeel_omschrijving,
|
|
v_ins_deel_omschrijving,
|
|
v_ins_deel_opmerking,
|
|
v_reserveerbaar_n,
|
|
v_res_deel_eenheid,
|
|
v_res_deel_prijs_n,
|
|
v_alg_locatie_code,
|
|
v_alg_gebouw_code,
|
|
v_alg_verdieping_volgnr_n,
|
|
v_alg_ruimte_nr,
|
|
v_res_deel_alg_level_n,
|
|
v_res_discipline_omschrijving,
|
|
v_res_discipline_kostensoort,
|
|
v_prs_perslid_matchcode,
|
|
v_prs_perslid_matchwaarde,
|
|
DECODE (v_ins_srtkenmerk_key1,
|
|
NULL, v_ins_kenmerkwaarde1,
|
|
'9999|0',
|
|
(SELECT i.ins_srtkenmerk_key || '|0'
|
|
FROM ins_v_aanwezigsrtkenmerk i, ins_v_srtdeel_kenmerk ik
|
|
WHERE i.ins_srtkenmerk_key = ik.ins_srtkenmerk_key
|
|
AND i.ins_srtkenmerk_upper LIKE '%MAAT%'
|
|
AND ik.ins_srtdeel_upper = UPPER (v_ins_srtdeel_omschrijving))
|
|
|| '='
|
|
|| SUBSTR (v_ins_kenmerkwaarde1, 1, 3900),
|
|
TO_CHAR (v_ins_srtkenmerk_key1)
|
|
|| '='
|
|
|| SUBSTR (v_ins_kenmerkwaarde1, 1, 3900)
|
|
),
|
|
DECODE (
|
|
v_ins_srtkenmerk_key2,
|
|
NULL, v_ins_kenmerkwaarde2,
|
|
TO_CHAR (v_ins_srtkenmerk_key2)
|
|
|| '='
|
|
|| SUBSTR (v_ins_kenmerkwaarde2, 1, 3900)
|
|
),
|
|
DECODE (
|
|
v_ins_srtkenmerk_key3,
|
|
NULL, v_ins_kenmerkwaarde3,
|
|
TO_CHAR (v_ins_srtkenmerk_key3)
|
|
|| '='
|
|
|| SUBSTR (v_ins_kenmerkwaarde3, 1, 3900)
|
|
),
|
|
DECODE (
|
|
v_ins_srtkenmerk_key4,
|
|
NULL, v_ins_kenmerkwaarde4,
|
|
TO_CHAR (v_ins_srtkenmerk_key4)
|
|
|| '='
|
|
|| SUBSTR (v_ins_kenmerkwaarde4, 1, 3900)
|
|
),
|
|
DECODE (
|
|
v_ins_srtkenmerk_key5,
|
|
NULL, v_ins_kenmerkwaarde5,
|
|
TO_CHAR (v_ins_srtkenmerk_key5)
|
|
|| '='
|
|
|| SUBSTR (v_ins_kenmerkwaarde5, 1, 3900)
|
|
),
|
|
DECODE (
|
|
v_ins_srtkenmerk_key6,
|
|
NULL, v_ins_kenmerkwaarde6,
|
|
TO_CHAR (v_ins_srtkenmerk_key6)
|
|
|| '='
|
|
|| SUBSTR (v_ins_kenmerkwaarde6, 1, 3900)
|
|
),
|
|
DECODE (
|
|
v_ins_srtkenmerk_key7,
|
|
NULL, v_ins_kenmerkwaarde7,
|
|
TO_CHAR (v_ins_srtkenmerk_key7)
|
|
|| '='
|
|
|| SUBSTR (v_ins_kenmerkwaarde7, 1, 3900)
|
|
),
|
|
DECODE (
|
|
v_ins_srtkenmerk_key8,
|
|
NULL, v_ins_kenmerkwaarde8,
|
|
TO_CHAR (v_ins_srtkenmerk_key8)
|
|
|| '='
|
|
|| SUBSTR (v_ins_kenmerkwaarde8, 1, 3900)
|
|
),
|
|
DECODE (
|
|
v_ins_srtkenmerk_key9,
|
|
NULL, v_ins_kenmerkwaarde9,
|
|
TO_CHAR (v_ins_srtkenmerk_key9)
|
|
|| '='
|
|
|| SUBSTR (v_ins_kenmerkwaarde9, 1, 3900)
|
|
),
|
|
DECODE (
|
|
v_ins_srtkenmerk_key10,
|
|
NULL, v_ins_kenmerkwaarde10,
|
|
TO_CHAR (v_ins_srtkenmerk_key10)
|
|
|| '='
|
|
|| SUBSTR (v_ins_kenmerkwaarde10, 1, 3900)
|
|
),
|
|
DECODE (
|
|
v_ins_srtkenmerk_key11,
|
|
NULL, v_ins_kenmerkwaarde11,
|
|
TO_CHAR (v_ins_srtkenmerk_key11)
|
|
|| '='
|
|
|| SUBSTR (v_ins_kenmerkwaarde11, 1, 3900)
|
|
),
|
|
DECODE (
|
|
v_ins_srtkenmerk_key12,
|
|
NULL, v_ins_kenmerkwaarde12,
|
|
TO_CHAR (v_ins_srtkenmerk_key12)
|
|
|| '='
|
|
|| SUBSTR (v_ins_kenmerkwaarde12, 1, 3900)
|
|
),
|
|
DECODE (
|
|
v_ins_srtkenmerk_key13,
|
|
NULL, v_ins_kenmerkwaarde13,
|
|
TO_CHAR (v_ins_srtkenmerk_key13)
|
|
|| '='
|
|
|| SUBSTR (v_ins_kenmerkwaarde13, 1, 3900)
|
|
),
|
|
DECODE (
|
|
v_ins_srtkenmerk_key14,
|
|
NULL, v_ins_kenmerkwaarde14,
|
|
TO_CHAR (v_ins_srtkenmerk_key14)
|
|
|| '='
|
|
|| SUBSTR (v_ins_kenmerkwaarde14, 1, 3900)
|
|
),
|
|
DECODE (
|
|
v_ins_srtkenmerk_key15,
|
|
NULL, v_ins_kenmerkwaarde15,
|
|
TO_CHAR (v_ins_srtkenmerk_key15)
|
|
|| '='
|
|
|| SUBSTR (v_ins_kenmerkwaarde15, 1, 3900)
|
|
),
|
|
DECODE (
|
|
v_ins_srtkenmerk_key16,
|
|
NULL, v_ins_kenmerkwaarde16,
|
|
TO_CHAR (v_ins_srtkenmerk_key16)
|
|
|| '='
|
|
|| SUBSTR (v_ins_kenmerkwaarde16, 1, 3900)
|
|
),
|
|
DECODE (
|
|
v_ins_srtkenmerk_key17,
|
|
NULL, v_ins_kenmerkwaarde17,
|
|
TO_CHAR (v_ins_srtkenmerk_key17)
|
|
|| '='
|
|
|| SUBSTR (v_ins_kenmerkwaarde17, 1, 3900)
|
|
),
|
|
DECODE (
|
|
v_ins_srtkenmerk_key18,
|
|
NULL, v_ins_kenmerkwaarde18,
|
|
TO_CHAR (v_ins_srtkenmerk_key18)
|
|
|| '='
|
|
|| SUBSTR (v_ins_kenmerkwaarde18, 1, 3900)
|
|
),
|
|
DECODE (
|
|
v_ins_srtkenmerk_key19,
|
|
NULL, v_ins_kenmerkwaarde19,
|
|
TO_CHAR (v_ins_srtkenmerk_key19)
|
|
|| '='
|
|
|| SUBSTR (v_ins_kenmerkwaarde19, 1, 3900)
|
|
),
|
|
DECODE (
|
|
v_ins_srtkenmerk_key20,
|
|
NULL, v_ins_kenmerkwaarde20,
|
|
TO_CHAR (v_ins_srtkenmerk_key20)
|
|
|| '='
|
|
|| SUBSTR (v_ins_kenmerkwaarde20, 1, 3900)
|
|
)
|
|
);
|
|
|
|
COMMIT;
|
|
v_count_import := v_count_import + 1;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
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,
|
|
'W',
|
|
v_aanduiding || v_errormsg,
|
|
'');
|
|
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',
|
|
'Objecten/aantal ingelezen importregels: ' || TO_CHAR (v_count_tot),
|
|
''
|
|
);
|
|
fac.imp_writelog (
|
|
p_import_key,
|
|
'S',
|
|
'Objecten/aantal 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, 200);
|
|
v_errormsg :=
|
|
v_errormsg
|
|
|| ' ORACLE (error '
|
|
|| oracle_err_num
|
|
|| '/'
|
|
|| oracle_err_mes
|
|
|| ')';
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_aanduiding || v_errormsg,
|
|
'Inleesproces objecten afgebroken! regel:' || v_file_index);
|
|
END dvon_import_extrains;
|
|
/
|
|
|
|
|
|
CREATE OR REPLACE PROCEDURE dvon_update_extrains (p_import_key IN NUMBER)
|
|
AS
|
|
v_errormsg VARCHAR2 (1000) := '-';
|
|
oracle_err_num NUMBER;
|
|
oracle_err_mes VARCHAR2 (200);
|
|
v_aanduiding VARCHAR2 (200);
|
|
|
|
-- SUBPROC
|
|
-- Conversie naar bruikbare objectomschrijvingen
|
|
PROCEDURE dvon_import_ins (p_import_key IN NUMBER)
|
|
AS
|
|
|
|
CURSOR c1
|
|
IS
|
|
SELECT DISTINCT
|
|
objectomschrijving,
|
|
disciplineomschrijving,
|
|
disciplinekostensoort,
|
|
groepsoortomschrijving,
|
|
objectsoortcode,
|
|
to_char (regexp_replace(substr (nummer, -7), '[^0-9]', '') +
|
|
ROW_NUMBER() OVER (PARTITION BY objectsoortcode ORDER BY objectsoortcode)) calc
|
|
FROM dvon_v_expbestelling_data;
|
|
|
|
BEGIN
|
|
FOR rec IN c1
|
|
LOOP
|
|
BEGIN
|
|
v_errormsg :='Fout bij converteren objectomschrijving object [' || rec.objectsoortcode || ']';
|
|
|
|
UPDATE fac_imp_ins
|
|
SET ins_deel_omschrijving = to_char (rec.objectsoortcode) || to_char (LPAD(rec.calc, 3, '0'))
|
|
WHERE ins_srtdeel_code = rec.objectsoortcode
|
|
AND ins_deel_omschrijving = to_char (rec.objectomschrijving);
|
|
END;
|
|
END LOOP;
|
|
COMMIT;
|
|
END;
|
|
|
|
-- SUBPROC
|
|
PROCEDURE add_kostensoort (p_import_key IN NUMBER)
|
|
AS
|
|
CURSOR c1
|
|
IS
|
|
SELECT prs_kostensoort_upper,
|
|
MAX (prs_kostensoort_omschrijving) prs_kostensoort_omschrijving
|
|
FROM ( SELECT UPPER (ins_discipline_kostensoort) prs_kostensoort_upper,
|
|
MAX (ins_discipline_kostensoort) prs_kostensoort_omschrijving
|
|
FROM fac_imp_ins
|
|
WHERE ins_discipline_kostensoort IS NOT NULL
|
|
GROUP BY UPPER (ins_discipline_kostensoort)
|
|
UNION ALL
|
|
SELECT UPPER (res_discipline_kostensoort) prs_kostensoort_upper,
|
|
MAX (res_discipline_kostensoort) prs_kostensoort_omschrijving
|
|
FROM fac_imp_ins
|
|
WHERE reserveerbaar = 1 AND res_discipline_kostensoort IS NOT NULL
|
|
GROUP BY UPPER (res_discipline_kostensoort))
|
|
GROUP BY prs_kostensoort_upper;
|
|
|
|
v_kostensoort_key NUMBER (10);
|
|
ccount NUMBER (10);
|
|
v_count_tot NUMBER (10);
|
|
v_count_update NUMBER (10);
|
|
BEGIN
|
|
v_count_tot := 0;
|
|
v_count_update := 0;
|
|
|
|
FOR rec IN c1
|
|
LOOP
|
|
BEGIN
|
|
v_count_tot := v_count_tot + 1;
|
|
v_errormsg :=
|
|
'Fout bij toevoegen kostensoort [' || rec.prs_kostensoort_omschrijving || ']';
|
|
|
|
SELECT COUNT ( * )
|
|
INTO ccount
|
|
FROM prs_kostensoort
|
|
WHERE TRIM (prs_kostensoort_upper) = rec.prs_kostensoort_upper;
|
|
|
|
IF ccount = 0
|
|
THEN
|
|
INSERT INTO prs_kostensoort (prs_kostensoort_oms)
|
|
VALUES (rec.prs_kostensoort_omschrijving);
|
|
|
|
v_count_update := v_count_update + 1;
|
|
END IF;
|
|
|
|
COMMIT;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg :=
|
|
v_errormsg
|
|
|| ' (error '
|
|
|| oracle_err_num
|
|
|| '/'
|
|
|| oracle_err_mes
|
|
|| ')';
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_errormsg,
|
|
'');
|
|
COMMIT;
|
|
END;
|
|
END LOOP;
|
|
|
|
fac.imp_writelog (p_import_key,
|
|
'S',
|
|
'Kostensoorten/aantal ingelezen: ' || TO_CHAR (v_count_tot),
|
|
'');
|
|
fac.imp_writelog (p_import_key,
|
|
'S',
|
|
'Kostensoorten/aantal toegevoegd: ' || TO_CHAR (v_count_update),
|
|
'');
|
|
COMMIT;
|
|
END;
|
|
|
|
-- SUBPROC
|
|
PROCEDURE add_insdiscipline (p_import_key IN NUMBER)
|
|
AS
|
|
CURSOR c1
|
|
IS
|
|
SELECT UPPER (ins_discipline_omschrijving) ins_discipline_upper,
|
|
UPPER (ins_discipline_kostensoort) ins_kostensoort_upper,
|
|
MAX (ins_discipline_omschrijving) ins_discipline_omschrijving
|
|
FROM fac_imp_ins
|
|
GROUP BY UPPER (ins_discipline_omschrijving), UPPER (ins_discipline_kostensoort);
|
|
|
|
v_discipline_key NUMBER (10);
|
|
v_kostensoort_key NUMBER (10);
|
|
ccount NUMBER (10);
|
|
v_count_tot NUMBER (10);
|
|
v_count_update NUMBER (10);
|
|
BEGIN
|
|
v_count_tot := 0;
|
|
v_count_update := 0;
|
|
|
|
FOR rec IN c1
|
|
LOOP
|
|
BEGIN
|
|
v_count_tot := v_count_tot + 1;
|
|
v_errormsg :=
|
|
'Fout bij toevoegen INS-discipline [' || rec.ins_discipline_omschrijving || ']';
|
|
|
|
SELECT COUNT ( * )
|
|
INTO ccount
|
|
FROM ins_tab_discipline
|
|
WHERE ins_discipline_verwijder IS NULL
|
|
AND ins_discipline_module = 'INS'
|
|
AND UPPER (TRIM (ins_discipline_omschrijving)) = rec.ins_discipline_upper;
|
|
|
|
IF ccount = 0
|
|
THEN
|
|
IF rec.ins_kostensoort_upper IS NULL
|
|
THEN
|
|
v_kostensoort_key := NULL;
|
|
ELSE
|
|
SELECT prs_kostensoort_key
|
|
INTO v_kostensoort_key
|
|
FROM prs_kostensoort
|
|
WHERE TRIM (prs_kostensoort_upper) = rec.ins_kostensoort_upper;
|
|
END IF;
|
|
|
|
INSERT INTO ins_tab_discipline (ins_discipline_module,
|
|
ins_discipline_omschrijving,
|
|
ins_discipline_min_level,
|
|
ins_discipline_kpnverplicht,
|
|
prs_kostensoort_key)
|
|
VALUES ('INS',
|
|
SUBSTR (rec.ins_discipline_omschrijving, 1, 60),
|
|
1,
|
|
0,
|
|
v_kostensoort_key)
|
|
RETURNING ins_discipline_key
|
|
INTO v_discipline_key;
|
|
|
|
INSERT INTO ins_disc_params (ins_discipline_key, ins_disc_params_type)
|
|
VALUES (v_discipline_key, 0);
|
|
|
|
v_count_update := v_count_update + 1;
|
|
END IF;
|
|
|
|
COMMIT;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg :=
|
|
v_errormsg
|
|
|| ' (error '
|
|
|| oracle_err_num
|
|
|| '/'
|
|
|| oracle_err_mes
|
|
|| ')';
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_errormsg,
|
|
'');
|
|
COMMIT;
|
|
END;
|
|
END LOOP;
|
|
|
|
fac.imp_writelog (p_import_key,
|
|
'S',
|
|
'INS-Disciplines/aantal ingelezen: ' || TO_CHAR (v_count_tot),
|
|
'');
|
|
fac.imp_writelog (p_import_key,
|
|
'S',
|
|
'INS-Disciplines/aantal toegevoegd: ' || TO_CHAR (v_count_update),
|
|
'');
|
|
COMMIT;
|
|
END;
|
|
|
|
-- SUBPROC
|
|
PROCEDURE add_resdiscipline (p_import_key IN NUMBER)
|
|
AS
|
|
CURSOR c1
|
|
IS
|
|
SELECT UPPER (res_discipline_omschrijving) res_discipline_upper,
|
|
UPPER (res_discipline_kostensoort) res_kostensoort_upper,
|
|
MAX (res_discipline_omschrijving) res_discipline_omschrijving
|
|
FROM fac_imp_ins
|
|
WHERE reserveerbaar = 1
|
|
GROUP BY UPPER (res_discipline_omschrijving), UPPER (res_discipline_kostensoort);
|
|
|
|
v_discipline_key NUMBER (10);
|
|
v_kostensoort_key NUMBER (10);
|
|
ccount NUMBER (10);
|
|
v_count_tot NUMBER (10);
|
|
v_count_update NUMBER (10);
|
|
BEGIN
|
|
v_count_tot := 0;
|
|
v_count_update := 0;
|
|
|
|
FOR rec IN c1
|
|
LOOP
|
|
BEGIN
|
|
v_count_tot := v_count_tot + 1;
|
|
v_errormsg :=
|
|
'Fout bij toevoegen RES-discipline [' || rec.res_discipline_omschrijving || ']';
|
|
|
|
SELECT COUNT ( * )
|
|
INTO ccount
|
|
FROM ins_tab_discipline
|
|
WHERE ins_discipline_verwijder IS NULL
|
|
AND ins_discipline_module = 'RES'
|
|
AND UPPER (TRIM (ins_discipline_omschrijving)) = rec.res_discipline_upper;
|
|
|
|
IF ccount = 0
|
|
THEN
|
|
IF rec.res_kostensoort_upper IS NULL
|
|
THEN
|
|
v_kostensoort_key := NULL;
|
|
ELSE
|
|
SELECT prs_kostensoort_key
|
|
INTO v_kostensoort_key
|
|
FROM prs_kostensoort
|
|
WHERE TRIM (prs_kostensoort_upper) = rec.res_kostensoort_upper;
|
|
END IF;
|
|
|
|
INSERT INTO ins_tab_discipline (ins_discipline_module,
|
|
ins_discipline_omschrijving,
|
|
ins_discipline_min_level,
|
|
ins_discipline_kpnverplicht,
|
|
prs_kostensoort_key)
|
|
VALUES ('RES',
|
|
SUBSTR (rec.res_discipline_omschrijving, 1, 60),
|
|
1,
|
|
0,
|
|
v_kostensoort_key)
|
|
RETURNING ins_discipline_key
|
|
INTO v_discipline_key;
|
|
|
|
INSERT INTO res_disc_params (res_ins_discipline_key)
|
|
VALUES (v_discipline_key);
|
|
|
|
v_count_update := v_count_update + 1;
|
|
END IF;
|
|
|
|
COMMIT;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg :=
|
|
v_errormsg
|
|
|| ' (error '
|
|
|| oracle_err_num
|
|
|| '/'
|
|
|| oracle_err_mes
|
|
|| ')';
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_errormsg,
|
|
'');
|
|
COMMIT;
|
|
END;
|
|
END LOOP;
|
|
|
|
fac.imp_writelog (p_import_key,
|
|
'S',
|
|
'RES-Disciplines/aantal ingelezen: ' || TO_CHAR (v_count_tot),
|
|
'');
|
|
fac.imp_writelog (p_import_key,
|
|
'S',
|
|
'RES-Disciplines/aantal toegevoegd: ' || TO_CHAR (v_count_update),
|
|
'');
|
|
COMMIT;
|
|
END;
|
|
|
|
-- SUBPROC
|
|
PROCEDURE add_srtgroep (p_import_key IN NUMBER)
|
|
AS
|
|
CURSOR c1
|
|
IS
|
|
SELECT UPPER (ins_discipline_omschrijving) ins_discipline_upper,
|
|
UPPER (ins_srtgroep_omschrijving) ins_srtgroep_upper,
|
|
MAX (ins_discipline_omschrijving) ins_discipline_omschrijving,
|
|
MAX (ins_srtgroep_omschrijving) ins_srtgroep_omschrijving
|
|
FROM fac_imp_ins
|
|
GROUP BY UPPER (ins_discipline_omschrijving), UPPER (ins_srtgroep_omschrijving);
|
|
|
|
v_discipline_key NUMBER (10);
|
|
ccount NUMBER (10);
|
|
v_count_tot NUMBER (10);
|
|
v_count_update NUMBER (10);
|
|
BEGIN
|
|
v_count_tot := 0;
|
|
v_count_update := 0;
|
|
|
|
FOR rec IN c1
|
|
LOOP
|
|
BEGIN
|
|
v_count_tot := v_count_tot + 1;
|
|
v_errormsg := 'Fout bij bepalen discipline';
|
|
|
|
SELECT ins_discipline_key
|
|
INTO v_discipline_key
|
|
FROM ins_tab_discipline
|
|
WHERE ins_discipline_verwijder IS NULL
|
|
AND ins_discipline_module = 'INS'
|
|
AND UPPER (TRIM (ins_discipline_omschrijving)) = rec.ins_discipline_upper;
|
|
|
|
v_errormsg :=
|
|
'Fout bij toevoegen groepsoort [' || rec.ins_srtgroep_omschrijving || '] ';
|
|
|
|
SELECT COUNT ( * )
|
|
INTO ccount
|
|
FROM ins_srtgroep
|
|
WHERE ins_srtgroep_verwijder IS NULL
|
|
AND ins_srtgroep_module = 'INS'
|
|
AND ins_discipline_key = v_discipline_key
|
|
AND TRIM (ins_srtgroep_upper) = rec.ins_srtgroep_upper;
|
|
|
|
IF ccount = 0
|
|
THEN
|
|
INSERT INTO ins_srtgroep (ins_discipline_key,
|
|
ins_srtgroep_module,
|
|
ins_srtgroep_omschrijving)
|
|
VALUES (v_discipline_key,
|
|
'INS',
|
|
SUBSTR (TRIM (rec.ins_srtgroep_omschrijving), 1, 60));
|
|
|
|
v_count_update := v_count_update + 1;
|
|
END IF;
|
|
|
|
COMMIT;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg :=
|
|
v_errormsg
|
|
|| ' (error '
|
|
|| oracle_err_num
|
|
|| '/'
|
|
|| oracle_err_mes
|
|
|| ')';
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_errormsg,
|
|
'');
|
|
COMMIT;
|
|
END;
|
|
END LOOP;
|
|
|
|
fac.imp_writelog (p_import_key,
|
|
'S',
|
|
'Groepsoorten/aantal ingelezen: ' || TO_CHAR (v_count_tot),
|
|
'');
|
|
fac.imp_writelog (p_import_key,
|
|
'S',
|
|
'Groepsoorten/aantal toegevoegd: ' || TO_CHAR (v_count_update),
|
|
'');
|
|
COMMIT;
|
|
END;
|
|
|
|
-- SUBPROC
|
|
PROCEDURE add_srtdeel (p_import_key IN NUMBER)
|
|
AS
|
|
CURSOR c1
|
|
IS
|
|
SELECT UPPER (ins_discipline_omschrijving) ins_discipline_upper,
|
|
UPPER (ins_srtgroep_omschrijving) ins_srtgroep_upper,
|
|
UPPER (ins_srtdeel_code) ins_srtdeel_code_upper,
|
|
UPPER (ins_srtdeel_omschrijving) ins_srtdeel_upper,
|
|
MAX (ins_discipline_omschrijving) ins_discipline_omschrijving,
|
|
MAX (ins_srtgroep_omschrijving) ins_srtgroep_omschrijving,
|
|
MAX (ins_srtdeel_code) ins_srtdeel_code,
|
|
MAX (ins_srtdeel_omschrijving) ins_srtdeel_omschrijving
|
|
FROM fac_imp_ins
|
|
GROUP BY UPPER (ins_discipline_omschrijving),
|
|
UPPER (ins_srtgroep_omschrijving),
|
|
UPPER (ins_srtdeel_code),
|
|
UPPER (ins_srtdeel_omschrijving);
|
|
|
|
v_discipline_key NUMBER (10);
|
|
v_srtgroep_key NUMBER (10);
|
|
ccount NUMBER (10);
|
|
v_count_tot NUMBER (10);
|
|
v_count_update NUMBER (10);
|
|
BEGIN
|
|
v_count_tot := 0;
|
|
v_count_update := 0;
|
|
|
|
FOR rec IN c1
|
|
LOOP
|
|
BEGIN
|
|
v_count_tot := v_count_tot + 1;
|
|
v_errormsg := 'Fout bij bepalen discipline';
|
|
|
|
SELECT ins_discipline_key
|
|
INTO v_discipline_key
|
|
FROM ins_tab_discipline
|
|
WHERE ins_discipline_verwijder IS NULL
|
|
AND ins_discipline_module = 'INS'
|
|
AND UPPER (TRIM (ins_discipline_omschrijving)) = rec.ins_discipline_upper;
|
|
|
|
v_errormsg := 'Fout bij bepalen groepsoort';
|
|
|
|
SELECT ins_srtgroep_key
|
|
INTO v_srtgroep_key
|
|
FROM ins_srtgroep
|
|
WHERE ins_srtgroep_verwijder IS NULL
|
|
AND ins_srtgroep_module = 'INS'
|
|
AND ins_discipline_key = v_discipline_key
|
|
AND TRIM (ins_srtgroep_upper) = rec.ins_srtgroep_upper;
|
|
|
|
v_errormsg :=
|
|
'Fout bij toevoegen objectsoort [' || rec.ins_srtdeel_omschrijving || ']';
|
|
|
|
SELECT COUNT ( * )
|
|
INTO ccount
|
|
FROM ins_srtdeel
|
|
WHERE ins_srtdeel_verwijder IS NULL
|
|
AND ins_srtdeel_module = 'INS'
|
|
AND ins_srtgroep_key = v_srtgroep_key
|
|
AND TRIM (ins_srtdeel_upper) = rec.ins_srtdeel_upper;
|
|
|
|
IF ccount = 0
|
|
THEN
|
|
-- binding 17 betekent ruimtegebonden of persoonsgebonden
|
|
INSERT INTO ins_srtdeel (ins_srtgroep_key,
|
|
ins_srtdeel_module,
|
|
ins_srtdeel_code,
|
|
ins_srtdeel_omschrijving,
|
|
ins_srtdeel_binding)
|
|
VALUES (v_srtgroep_key,
|
|
'INS',
|
|
rec.ins_srtdeel_code,
|
|
rec.ins_srtdeel_omschrijving,
|
|
17);
|
|
|
|
v_count_update := v_count_update + 1;
|
|
END IF;
|
|
|
|
COMMIT;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg :=
|
|
v_errormsg
|
|
|| ' (error '
|
|
|| oracle_err_num
|
|
|| '/'
|
|
|| oracle_err_mes
|
|
|| ')';
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_errormsg,
|
|
'');
|
|
COMMIT;
|
|
END;
|
|
END LOOP;
|
|
|
|
fac.imp_writelog (p_import_key,
|
|
'S',
|
|
'Objectsoorten/aantal ingelezen: ' || TO_CHAR (v_count_tot),
|
|
'');
|
|
fac.imp_writelog (p_import_key,
|
|
'S',
|
|
'Objectsoorten/aantal toegevoegd: ' || TO_CHAR (v_count_update),
|
|
'');
|
|
COMMIT;
|
|
END;
|
|
|
|
-- SUBPROC
|
|
-- p_srtkenmerkgroepwaarde = '234|1=37-ZB-DR'
|
|
-- Ofwel: srtkenmerk_key|groep=waarde
|
|
PROCEDURE upsert_inskenmerk (p_deel_key IN NUMBER,
|
|
p_srtkenmerkgroepwaarde IN VARCHAR2)
|
|
AS
|
|
v_kenmerk_key NUMBER;
|
|
v_srtkenmerk_key NUMBER;
|
|
v_groep NUMBER;
|
|
v_waarde VARCHAR(255);
|
|
v_srtkenmerk_type VARCHAR2 (1);
|
|
ccount NUMBER;
|
|
v_objectnaam VARCHAR2 (30);
|
|
v_kolomnaam VARCHAR2 (30);
|
|
v_kolomtxt VARCHAR2 (30);
|
|
sql_stmt VARCHAR2 (1000);
|
|
v_kenmerkdeel_key NUMBER;
|
|
l_cursor_1 INTEGER;
|
|
l_rowsprocessed NUMBER DEFAULT 0;
|
|
BEGIN
|
|
IF p_srtkenmerkgroepwaarde IS NOT NULL
|
|
THEN
|
|
v_errormsg := 'Fout bij bepalen kenmerk van soort [' || p_srtkenmerkgroepwaarde || ']';
|
|
|
|
v_srtkenmerk_key := fac.safe_to_number (
|
|
SUBSTR (p_srtkenmerkgroepwaarde, 1, INSTR (p_srtkenmerkgroepwaarde, '|') - 1));
|
|
v_groep := fac.safe_to_number (
|
|
SUBSTR (p_srtkenmerkgroepwaarde,
|
|
INSTR (p_srtkenmerkgroepwaarde, '|') + 1,
|
|
INSTR (p_srtkenmerkgroepwaarde, '=') - 1 - INSTR (p_srtkenmerkgroepwaarde, '|')));
|
|
v_waarde := SUBSTR (p_srtkenmerkgroepwaarde, INSTR (p_srtkenmerkgroepwaarde, '=') + 1);
|
|
|
|
SELECT k.ins_kenmerk_key, sk.ins_srtkenmerk_kenmerktype
|
|
INTO v_kenmerk_key, v_srtkenmerk_type
|
|
FROM ins_deel d,
|
|
ins_srtdeel sd,
|
|
ins_srtgroep sg,
|
|
ins_v_aanwezigkenmerk k,
|
|
ins_v_aanwezigsrtkenmerk sk
|
|
WHERE d.ins_deel_key = p_deel_key
|
|
AND d.ins_srtdeel_key = sd.ins_srtdeel_key
|
|
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
|
|
AND k.ins_srtkenmerk_key = v_srtkenmerk_key
|
|
AND k.ins_kenmerk_groep = v_groep
|
|
AND ( (k.ins_srtinstallatie_key = sd.ins_srtdeel_key
|
|
AND k.ins_kenmerk_niveau = 'S')
|
|
OR (k.ins_srtinstallatie_key = sg.ins_srtgroep_key
|
|
AND k.ins_kenmerk_niveau = 'G')
|
|
OR (k.ins_srtinstallatie_key = sg.ins_discipline_key
|
|
AND k.ins_kenmerk_niveau = 'D'))
|
|
AND k.ins_srtkenmerk_key = sk.ins_srtkenmerk_key;
|
|
|
|
IF v_waarde IS NOT NULL
|
|
THEN
|
|
IF v_srtkenmerk_type IN ('R', 'S')
|
|
THEN
|
|
v_errormsg := 'Fout bij bepalen eigen tabel';
|
|
|
|
SELECT COUNT ( * )
|
|
INTO ccount
|
|
FROM ins_srtkenmerk sk, fac_kenmerkdomein d
|
|
WHERE sk.ins_srtkenmerk_key = v_srtkenmerk_key
|
|
AND sk.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key
|
|
AND d.fac_usrtab_key IS NOT NULL;
|
|
|
|
v_errormsg := 'Fout bij bepalen nieuwe waarde [' || v_waarde || ']';
|
|
|
|
IF ccount = 1
|
|
THEN -- Eigen tabel
|
|
SELECT TO_CHAR (ud.fac_usrdata_key)
|
|
INTO v_waarde
|
|
FROM ins_srtkenmerk sk, fac_kenmerkdomein d, fac_v_aanwezigusrdata ud
|
|
WHERE sk.ins_srtkenmerk_key = v_srtkenmerk_key
|
|
AND sk.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key
|
|
AND d.fac_usrtab_key = ud.fac_usrtab_key
|
|
AND UPPER (TRIM (ud.fac_usrdata_omschr)) = UPPER (v_waarde);
|
|
ELSE -- FACILITOR view/tabel
|
|
SELECT d.fac_kenmerkdomein_objectnaam,
|
|
d.fac_kenmerkdomein_kolomnaam,
|
|
d.fac_kenmerkdomein_kolomtxt
|
|
INTO v_objectnaam, v_kolomnaam, v_kolomtxt
|
|
FROM ins_srtkenmerk sk, fac_kenmerkdomein d
|
|
WHERE sk.ins_srtkenmerk_key = v_srtkenmerk_key
|
|
AND sk.fac_kenmerkdomein_key = d.fac_kenmerkdomein_key
|
|
AND d.fac_usrtab_key IS NULL;
|
|
|
|
sql_stmt :=
|
|
'SELECT MAX ('
|
|
|| v_kolomnaam
|
|
|| ') FROM '
|
|
|| v_objectnaam
|
|
|| ' WHERE UPPER (TRIM ('
|
|
|| v_kolomtxt
|
|
|| ')) = UPPER (:pwaarde)';
|
|
l_cursor_1 := DBMS_SQL.open_cursor;
|
|
DBMS_SQL.parse (l_cursor_1, sql_stmt, DBMS_SQL.native);
|
|
DBMS_SQL.BIND_VARIABLE(l_cursor_1,':pwaarde', v_waarde);
|
|
DBMS_SQL.define_column(l_cursor_1, 1, v_waarde, 255);
|
|
l_rowsprocessed := DBMS_SQL.execute_and_fetch (l_cursor_1);
|
|
DBMS_SQL.column_value (l_cursor_1, 1, v_waarde);
|
|
DBMS_SQL.close_cursor(l_cursor_1);
|
|
END IF;
|
|
ELSE -- C(Karakter)/D(Datum)/N(Numeriek)/X(Bestandsnaam)
|
|
NULL; -- v_waarde := p_waarde;
|
|
END IF;
|
|
|
|
v_errormsg := 'Fout bij bepalen huidige waarde';
|
|
|
|
SELECT COUNT ( * ), MAX (ins_kenmerkdeel_key)
|
|
INTO ccount, v_kenmerkdeel_key
|
|
FROM ins_v_aanwezigkenmerkdeel
|
|
WHERE ins_deel_key = p_deel_key AND ins_kenmerk_key = v_kenmerk_key;
|
|
|
|
IF v_srtkenmerk_type = 'N' -- Alleen voor numerieke waarden de decimale komma vervangen door punt.
|
|
THEN
|
|
v_waarde := REPLACE (v_waarde, ',', '.');
|
|
END IF;
|
|
|
|
IF ccount = 0
|
|
THEN
|
|
v_errormsg := 'Fout bij toevoegen waarde [' || v_waarde || ']';
|
|
|
|
INSERT INTO ins_kenmerkdeel (ins_deel_key, ins_kenmerk_key, ins_kenmerkdeel_waarde)
|
|
VALUES (p_deel_key, v_kenmerk_key, v_waarde);
|
|
ELSE
|
|
v_errormsg := 'Fout bij bijwerken waarde [' || v_waarde || ']';
|
|
|
|
UPDATE ins_kenmerkdeel
|
|
SET ins_kenmerkdeel_waarde = v_waarde
|
|
WHERE ins_kenmerkdeel_key = v_kenmerkdeel_key;
|
|
END IF;
|
|
ELSE
|
|
-- Verwijder kenmerken die als bestaan maar met de nieuwe import leeg zijn.
|
|
DELETE ins_kenmerkdeel
|
|
WHERE ins_kenmerk_key = v_kenmerk_key
|
|
AND ins_deel_key = p_deel_key;
|
|
END IF;
|
|
END IF;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg :=
|
|
v_errormsg || ' (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || v_errormsg,
|
|
'upsert_inskenmerk');
|
|
END;
|
|
|
|
-- SUBPROC
|
|
PROCEDURE add_deel (p_import_key IN NUMBER)
|
|
AS
|
|
CURSOR c1
|
|
IS
|
|
SELECT ins_discipline_omschrijving,
|
|
ins_srtgroep_omschrijving,
|
|
ins_srtdeel_code,
|
|
ins_srtdeel_omschrijving,
|
|
ins_deel_omschrijving,
|
|
ins_deel_opmerking,
|
|
alg_locatie_code,
|
|
alg_gebouw_code,
|
|
alg_verdieping_volgnr,
|
|
alg_ruimte_nr,
|
|
reserveerbaar,
|
|
res_discipline_omschrijving,
|
|
res_deel_eenheid,
|
|
res_deel_prijs,
|
|
res_deel_alg_level,
|
|
prs_perslid_matchcode,
|
|
prs_perslid_matchwaarde,
|
|
ins_kenmerkwaarde1,
|
|
ins_kenmerkwaarde2,
|
|
ins_kenmerkwaarde3,
|
|
ins_kenmerkwaarde4,
|
|
ins_kenmerkwaarde5,
|
|
ins_kenmerkwaarde6,
|
|
ins_kenmerkwaarde7,
|
|
ins_kenmerkwaarde8,
|
|
ins_kenmerkwaarde9,
|
|
ins_kenmerkwaarde10,
|
|
ins_kenmerkwaarde11,
|
|
ins_kenmerkwaarde12,
|
|
ins_kenmerkwaarde13,
|
|
ins_kenmerkwaarde14,
|
|
ins_kenmerkwaarde15,
|
|
ins_kenmerkwaarde16,
|
|
ins_kenmerkwaarde17,
|
|
ins_kenmerkwaarde18,
|
|
ins_kenmerkwaarde19,
|
|
ins_kenmerkwaarde20
|
|
FROM fac_imp_ins;
|
|
|
|
v_discipline_key NUMBER (10);
|
|
v_rdiscipline_key NUMBER (10);
|
|
v_srtgroep_key NUMBER (10);
|
|
v_srtdeel_key NUMBER (10);
|
|
v_locatie_key NUMBER (10);
|
|
v_gebouw_key NUMBER (10);
|
|
v_verdieping_key NUMBER (10);
|
|
v_ruimte_key NUMBER (10);
|
|
v_matchkolom VARCHAR2 (255);
|
|
sql_stmt VARCHAR2 (1000);
|
|
v_ruimte_type VARCHAR2 (10);
|
|
v_deel_key NUMBER (10);
|
|
ccount NUMBER (10);
|
|
pcount NUMBER (10);
|
|
v_count_tot NUMBER (10);
|
|
v_count_insnew NUMBER (10);
|
|
v_count_insupd NUMBER (10);
|
|
v_count_resnew NUMBER (10);
|
|
v_srtnoti_code VARCHAR2 (6);
|
|
l_cursor_1 INTEGER;
|
|
l_rowsprocessed NUMBER DEFAULT 0;
|
|
BEGIN
|
|
v_count_tot := 0;
|
|
v_count_insnew := 0;
|
|
v_count_insupd := 0;
|
|
v_count_resnew := 0;
|
|
v_aanduiding := '';
|
|
|
|
FOR rec IN c1
|
|
LOOP
|
|
BEGIN
|
|
v_count_tot := v_count_tot + 1;
|
|
v_aanduiding :=
|
|
'['
|
|
|| rec.ins_discipline_omschrijving
|
|
|| '|'
|
|
|| rec.ins_srtgroep_omschrijving
|
|
|| '|'
|
|
|| rec.ins_srtdeel_code
|
|
|| '|'
|
|
|| rec.ins_srtdeel_omschrijving
|
|
|| '|'
|
|
|| rec.ins_deel_omschrijving
|
|
|| '] ';
|
|
v_errormsg := 'Fout bij bepalen discipline';
|
|
|
|
SELECT ins_discipline_key
|
|
INTO v_discipline_key
|
|
FROM ins_tab_discipline
|
|
WHERE ins_discipline_verwijder IS NULL AND ins_discipline_module = 'INS'
|
|
AND UPPER (TRIM (ins_discipline_omschrijving)) =
|
|
UPPER (rec.ins_discipline_omschrijving);
|
|
|
|
v_errormsg := 'Fout bij bepalen groepsoort';
|
|
|
|
SELECT ins_srtgroep_key
|
|
INTO v_srtgroep_key
|
|
FROM ins_srtgroep
|
|
WHERE ins_srtgroep_verwijder IS NULL
|
|
AND ins_srtgroep_module = 'INS'
|
|
AND ins_discipline_key = v_discipline_key
|
|
AND TRIM (ins_srtgroep_upper) = UPPER (rec.ins_srtgroep_omschrijving);
|
|
|
|
v_errormsg := 'Fout bij bepalen objectsoort';
|
|
|
|
SELECT ins_srtdeel_key
|
|
INTO v_srtdeel_key
|
|
FROM ins_srtdeel
|
|
WHERE ins_srtdeel_verwijder IS NULL
|
|
AND ins_srtdeel_module = 'INS'
|
|
AND ins_srtgroep_key = v_srtgroep_key
|
|
AND TRIM (UPPER(ins_srtdeel_code)) = UPPER (rec.ins_srtdeel_code)
|
|
AND TRIM (ins_srtdeel_upper) = UPPER (rec.ins_srtdeel_omschrijving);
|
|
|
|
v_locatie_key := NULL;
|
|
|
|
IF rec.alg_locatie_code IS NOT NULL
|
|
THEN -- ruimtegebonden object
|
|
v_errormsg := 'Fout bij bepalen locatie [' || rec.alg_locatie_code || ']';
|
|
|
|
SELECT alg_locatie_key
|
|
INTO v_locatie_key
|
|
FROM alg_v_aanweziglocatie
|
|
WHERE UPPER (TRIM (alg_locatie_code)) = UPPER (rec.alg_locatie_code);
|
|
|
|
v_errormsg := 'Fout bij bepalen gebouw [' || rec.alg_gebouw_code || ']';
|
|
|
|
SELECT alg_gebouw_key
|
|
INTO v_gebouw_key
|
|
FROM alg_v_aanweziggebouw
|
|
WHERE alg_locatie_key = v_locatie_key
|
|
AND UPPER (TRIM (alg_gebouw_code)) = UPPER (rec.alg_gebouw_code);
|
|
|
|
v_errormsg :=
|
|
'Fout bij bepalen verdieping [' || rec.alg_verdieping_volgnr || ']';
|
|
|
|
SELECT alg_verdieping_key
|
|
INTO v_verdieping_key
|
|
FROM alg_v_aanwezigverdieping
|
|
WHERE alg_gebouw_key = v_gebouw_key
|
|
AND alg_verdieping_volgnr = rec.alg_verdieping_volgnr;
|
|
|
|
v_errormsg := 'Fout bij bepalen ruimte [' || rec.alg_ruimte_nr || ']';
|
|
|
|
SELECT alg_ruimte_key
|
|
INTO v_ruimte_key
|
|
FROM alg_v_aanwezigruimte
|
|
WHERE alg_verdieping_key = v_verdieping_key
|
|
AND TRIM (alg_ruimte_upper_nr) = UPPER (rec.alg_ruimte_nr);
|
|
|
|
v_ruimte_type := 'R';
|
|
|
|
-- ruimtegebonden objecten hebben een unieke ID binnen locatie
|
|
SELECT COUNT ( * )
|
|
INTO ccount
|
|
FROM ins_v_aanwezigdeel
|
|
WHERE ins_deel_module = 'INS'
|
|
AND ins_srtdeel_key = v_srtdeel_key
|
|
AND ins_alg_ruimte_type = v_ruimte_type -- R
|
|
AND ins_alg_locatie_key = v_locatie_key
|
|
AND TRIM (ins_deel_upper) = UPPER (rec.ins_deel_omschrijving);
|
|
ELSE -- persoonsgebonden object
|
|
v_matchkolom := '';
|
|
|
|
CASE rec.prs_perslid_matchcode
|
|
WHEN '1'
|
|
THEN
|
|
v_matchkolom := 'PRS_PERSLID_EMAIL';
|
|
WHEN '2'
|
|
THEN
|
|
v_matchkolom := 'PRS_PERSLID_OSLOGIN';
|
|
WHEN '3'
|
|
THEN
|
|
v_matchkolom := 'PRS_PERSLID_KEY';
|
|
WHEN '4'
|
|
THEN
|
|
v_matchkolom := 'PRS_PERSLID_NR';
|
|
WHEN '5'
|
|
THEN
|
|
v_matchkolom := 'PRS_PERSLID_VOORNAAM || '' '' || PRS_PERSLID_NAAM';
|
|
ELSE
|
|
-- voor developers only: indien geen code wordt gebruikt,
|
|
-- kan als persoonmatchcode een kolom uit de perslid-tabel
|
|
-- worden ingevoerd, bijvoorbeeld: prs_perslid_oslogin2
|
|
v_matchkolom := rec.prs_perslid_matchcode;
|
|
END CASE;
|
|
|
|
v_errormsg := 'Fout bij bepalen persoon [' || rec.prs_perslid_matchwaarde || ']';
|
|
sql_stmt :=
|
|
'SELECT MIN (prs_perslid_key), COUNT (prs_perslid_key) '
|
|
|| ' FROM prs_v_aanwezigperslid '
|
|
|| ' WHERE UPPER ('
|
|
|| v_matchkolom
|
|
|| ') = UPPER (:pwaarde) '
|
|
|| 'GROUP BY prs_perslid_key';
|
|
--dbms_output.put_line(rec.prs_perslid_matchwaarde);
|
|
l_cursor_1 := DBMS_SQL.open_cursor;
|
|
DBMS_SQL.parse (l_cursor_1, sql_stmt, DBMS_SQL.native);
|
|
DBMS_SQL.BIND_VARIABLE(l_cursor_1,':pwaarde', rec.prs_perslid_matchwaarde);
|
|
DBMS_SQL.define_column(l_cursor_1, 1, v_ruimte_key);
|
|
DBMS_SQL.define_column(l_cursor_1, 2, pcount);
|
|
l_rowsprocessed := DBMS_SQL.execute_and_fetch (l_cursor_1);
|
|
-- Bij no rows gaat-ie naar de exception. Moet daar dan nog een cursor dicht??
|
|
DBMS_SQL.column_value (l_cursor_1, 1, v_ruimte_key);
|
|
DBMS_SQL.column_value (l_cursor_1, 2, pcount);
|
|
DBMS_SQL.close_cursor(l_cursor_1);
|
|
--dbms_output.put_line(pcount);
|
|
|
|
IF pcount != 1
|
|
THEN
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || v_errormsg,
|
|
'Kan persoon niet 1-duidig bepalen');
|
|
END IF;
|
|
|
|
v_ruimte_type := 'P';
|
|
|
|
-- persoonsgebonden objecten hebben een unieke ID
|
|
SELECT COUNT ( * )
|
|
INTO ccount
|
|
FROM ins_v_aanwezigdeel
|
|
WHERE ins_deel_module = 'INS'
|
|
AND ins_srtdeel_key = v_srtdeel_key
|
|
AND ins_alg_ruimte_type = v_ruimte_type -- P
|
|
AND ins_alg_locatie_key IS NULL
|
|
AND TRIM (ins_deel_upper) = UPPER (rec.ins_deel_omschrijving);
|
|
END IF;
|
|
|
|
IF ccount = 0
|
|
THEN -- toevoegen object!
|
|
v_errormsg := 'Fout bij toevoegen INS-object';
|
|
|
|
INSERT INTO ins_deel (ins_discipline_key,
|
|
ins_srtdeel_key,
|
|
ins_deel_module,
|
|
ins_deel_omschrijving,
|
|
ins_deel_opmerking,
|
|
ins_alg_ruimte_key,
|
|
ins_alg_ruimte_type,
|
|
ins_alg_locatie_key)
|
|
VALUES (v_discipline_key,
|
|
v_srtdeel_key,
|
|
'INS',
|
|
rec.ins_deel_omschrijving,
|
|
rec.ins_deel_opmerking,
|
|
v_ruimte_key,
|
|
v_ruimte_type,
|
|
v_locatie_key)
|
|
RETURNING ins_deel_key
|
|
INTO v_deel_key;
|
|
|
|
-- Overslaan als reserveerbaar en geen RES-discipline of andersom,
|
|
-- dus verder geen controle op eventuele inconsistentie!
|
|
IF (rec.reserveerbaar = 1 AND rec.res_discipline_omschrijving IS NOT NULL)
|
|
THEN
|
|
v_errormsg :=
|
|
'Fout bij bepalen RES-discipline ['
|
|
|| rec.res_discipline_omschrijving
|
|
|| ']';
|
|
|
|
SELECT ins_discipline_key
|
|
INTO v_rdiscipline_key
|
|
FROM res_discipline
|
|
WHERE ins_discipline_verwijder IS NULL AND ins_discipline_module = 'RES'
|
|
AND UPPER (TRIM (ins_discipline_omschrijving)) =
|
|
UPPER (rec.res_discipline_omschrijving);
|
|
|
|
v_errormsg := 'Fout bij toevoegen RES-object';
|
|
|
|
INSERT INTO res_deel (res_ins_deel_key,
|
|
res_deel_omschrijving,
|
|
res_deel_opmerking,
|
|
res_deel_eenheid,
|
|
res_deel_prijs,
|
|
res_discipline_key,
|
|
res_deel_alg_level)
|
|
VALUES (v_deel_key,
|
|
rec.ins_deel_omschrijving,
|
|
rec.ins_deel_opmerking,
|
|
rec.res_deel_eenheid,
|
|
rec.res_deel_prijs,
|
|
v_rdiscipline_key,
|
|
rec.res_deel_alg_level);
|
|
|
|
v_count_resnew := v_count_resnew + 1;
|
|
END IF;
|
|
|
|
v_srtnoti_code := 'INSNEW';
|
|
v_count_insnew := v_count_insnew + 1;
|
|
ELSE -- bijwerken object!
|
|
v_errormsg := 'Fout bij bepalen INS-object';
|
|
|
|
SELECT ins_deel_key
|
|
INTO v_deel_key
|
|
FROM ins_v_aanwezigdeel
|
|
WHERE ins_deel_module = 'INS'
|
|
AND ins_srtdeel_key = v_srtdeel_key
|
|
AND ins_alg_ruimte_type = v_ruimte_type -- R/P
|
|
AND COALESCE (ins_alg_locatie_key, -1) = COALESCE (v_locatie_key, -1) -- gevuld/NULL
|
|
AND TRIM (ins_deel_upper) = UPPER (rec.ins_deel_omschrijving);
|
|
|
|
v_srtnoti_code := 'INSUPD';
|
|
v_count_insupd := v_count_insupd + 1;
|
|
END IF;
|
|
|
|
-- NULL-waarden resulteren NIET in het wissen van kenmerkvelden
|
|
-- (bijwerken kan wel, maar wissen dus niet)! ins_kenmerkwaarde1
|
|
upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde1);
|
|
upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde2);
|
|
upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde3);
|
|
upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde4);
|
|
upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde5);
|
|
upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde6);
|
|
upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde7);
|
|
upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde8);
|
|
upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde9);
|
|
upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde10);
|
|
upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde11);
|
|
upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde12);
|
|
upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde13);
|
|
upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde14);
|
|
upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde15);
|
|
upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde16);
|
|
upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde17);
|
|
upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde18);
|
|
upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde19);
|
|
upsert_inskenmerk (v_deel_key, rec.ins_kenmerkwaarde20);
|
|
|
|
fac.trackaction (v_srtnoti_code,
|
|
v_deel_key,
|
|
sys_context('USERENV', 'CLIENT_IDENTIFIER'),
|
|
NULL,
|
|
NULL);
|
|
COMMIT;
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg :=
|
|
v_errormsg
|
|
|| ' (error '
|
|
|| oracle_err_num
|
|
|| '/'
|
|
|| oracle_err_mes
|
|
|| ')';
|
|
fac.imp_writelog (p_import_key,
|
|
'W',
|
|
v_aanduiding || v_errormsg,
|
|
'');
|
|
COMMIT;
|
|
END;
|
|
END LOOP;
|
|
|
|
fac.imp_writelog (p_import_key,
|
|
'S',
|
|
'INS-objecten/aantal ingelezen: ' || TO_CHAR (v_count_tot),
|
|
'');
|
|
fac.imp_writelog (p_import_key,
|
|
'S',
|
|
'INS-objecten/aantal toegevoegd: ' || TO_CHAR (v_count_insnew),
|
|
'');
|
|
fac.imp_writelog (p_import_key,
|
|
'S',
|
|
'INS-objecten/aantal bijgewerkt: ' || TO_CHAR (v_count_insupd),
|
|
'');
|
|
fac.imp_writelog (p_import_key,
|
|
'S',
|
|
'RES-objecten/aantal toegevoegd: ' || TO_CHAR (v_count_resnew),
|
|
'');
|
|
COMMIT;
|
|
END;
|
|
-- MAIN
|
|
BEGIN
|
|
dvon_import_ins (p_import_key);
|
|
add_kostensoort (p_import_key);
|
|
add_insdiscipline (p_import_key);
|
|
add_resdiscipline (p_import_key);
|
|
add_srtgroep (p_import_key);
|
|
add_srtdeel (p_import_key);
|
|
add_deel (p_import_key);
|
|
EXCEPTION
|
|
WHEN OTHERS
|
|
THEN
|
|
oracle_err_num := SQLCODE;
|
|
oracle_err_mes := SUBSTR (SQLERRM, 1, 200);
|
|
v_errormsg :=
|
|
v_errormsg || ' (error ' || oracle_err_num || '/' || oracle_err_mes || ')';
|
|
fac.imp_writelog (p_import_key,
|
|
'E',
|
|
v_errormsg,
|
|
'Importproces objecten afgebroken!');
|
|
END dvon_update_extrains;
|
|
/
|
|
|
|
-- Ingelezen objecten in bulk uitleenbaar maken via export
|
|
CREATE OR REPLACE PROCEDURE DVON_EXPORT_LEENMAARUIT (p_applname IN VARCHAR2,
|
|
p_applrun IN VARCHAR2,
|
|
p_filedir IN VARCHAR2,
|
|
p_filename IN VARCHAR2)
|
|
AS
|
|
BEGIN
|
|
UPDATE ins_srtdeel
|
|
SET ins_srtdeel_uitleenbaar = 1
|
|
WHERE ins_srtdeel_verwijder IS NULL
|
|
AND ins_srtdeel_uitleenbaar != 1;
|
|
|
|
UPDATE ins_deel
|
|
SET ins_alg_ruimte_key_org = 201,
|
|
ins_alg_ruimte_type_org = 'R'
|
|
WHERE ins_alg_ruimte_type = 'P'
|
|
AND ins_alg_ruimte_key_org IS NULL;
|
|
END;
|
|
/
|
|
|
|
-- Vanaf hier rapportages
|
|
|
|
CREATE OR REPLACE VIEW dvon_v_rap_voorraad
|
|
(
|
|
srtdeel_key,
|
|
object_groep,
|
|
object_soort,
|
|
maat,
|
|
aantal,
|
|
locatie,
|
|
gebouw,
|
|
verdiepingcode,
|
|
ruimtenr
|
|
)
|
|
AS
|
|
SELECT i.ins_srtdeel_key,
|
|
ig.ins_srtgroep_omschrijving,
|
|
srt.ins_srtdeel_omschrijving,
|
|
maat.fac_usrdata_omschr,
|
|
COALESCE (COUNT (maat.fac_usrdata_omschr), 0),
|
|
al.alg_locatie_omschrijving,
|
|
ag.alg_gebouw_omschrijving,
|
|
av.alg_verdieping_volgnr,
|
|
ar.alg_ruimte_nr
|
|
FROM ins_deel i,
|
|
ins_srtdeel srt,
|
|
ins_srtgroep ig,
|
|
alg_ruimte ar,
|
|
alg_locatie al,
|
|
alg_gebouw ag,
|
|
alg_verdieping av,
|
|
(SELECT f.fac_usrdata_omschr, iv.ins_deel_key
|
|
FROM fac_usrdata f,
|
|
ins_v_srtdeel_kenmerkdeel iv,
|
|
ins_kenmerk ik,
|
|
ins_srtkenmerk isk
|
|
WHERE f.fac_usrdata_key = iv.ins_kenmerkdeel_waarde
|
|
AND ik.ins_srtkenmerk_key = isk.ins_srtkenmerk_key
|
|
AND iv.ins_kenmerk_key = ik.ins_kenmerk_key
|
|
AND isk.ins_srtkenmerk_upper LIKE '%MAAT%') maat
|
|
WHERE i.ins_srtdeel_key = srt.ins_srtdeel_key
|
|
AND i.ins_alg_ruimte_key = ar.alg_ruimte_key
|
|
AND srt.ins_srtgroep_key = ig.ins_srtgroep_key
|
|
AND ar.alg_verdieping_key = av.alg_verdieping_key
|
|
AND av.alg_gebouw_key = ag.alg_gebouw_key
|
|
AND ag.alg_locatie_key = al.alg_locatie_key
|
|
AND i.ins_deel_key = maat.ins_deel_key(+)
|
|
AND maat.fac_usrdata_omschr IS NOT NULL
|
|
AND i.ins_alg_ruimte_key_org IS NULL
|
|
GROUP BY i.ins_srtdeel_key,
|
|
ig.ins_srtgroep_omschrijving,
|
|
srt.ins_srtdeel_omschrijving,
|
|
maat.fac_usrdata_omschr,
|
|
al.alg_locatie_omschrijving,
|
|
ag.alg_gebouw_omschrijving,
|
|
av.alg_verdieping_volgnr,
|
|
ar.alg_ruimte_nr
|
|
UNION ALL
|
|
SELECT i.ins_srtdeel_key,
|
|
ig.ins_srtgroep_omschrijving,
|
|
srt.ins_srtdeel_omschrijving,
|
|
'NVT',
|
|
COUNT (i.ins_deel_key),
|
|
al.alg_locatie_omschrijving,
|
|
ag.alg_gebouw_omschrijving,
|
|
av.alg_verdieping_volgnr,
|
|
ar.alg_ruimte_nr
|
|
FROM ins_deel i,
|
|
ins_srtdeel srt,
|
|
ins_srtgroep ig,
|
|
alg_ruimte ar,
|
|
alg_locatie al,
|
|
alg_gebouw ag,
|
|
alg_verdieping av
|
|
WHERE NOT EXISTS
|
|
(SELECT 1
|
|
FROM ins_kenmerk ik, ins_srtkenmerk isk
|
|
WHERE i.ins_srtdeel_key = ik.ins_srtinstallatie_key
|
|
AND ik.ins_srtkenmerk_key = isk.ins_srtkenmerk_key
|
|
AND isk.ins_srtkenmerk_upper LIKE '%MAAT%')
|
|
AND i.ins_srtdeel_key = srt.ins_srtdeel_key
|
|
AND i.ins_alg_ruimte_key = ar.alg_ruimte_key
|
|
AND srt.ins_srtgroep_key = ig.ins_srtgroep_key
|
|
AND ar.alg_verdieping_key = av.alg_verdieping_key
|
|
AND av.alg_gebouw_key = ag.alg_gebouw_key
|
|
AND ag.alg_locatie_key = al.alg_locatie_key
|
|
AND i.ins_alg_ruimte_key_org IS NULL
|
|
GROUP BY i.ins_srtdeel_key,
|
|
ig.ins_srtgroep_omschrijving,
|
|
srt.ins_srtdeel_omschrijving,
|
|
al.alg_locatie_omschrijving,
|
|
ag.alg_gebouw_omschrijving,
|
|
av.alg_verdieping_volgnr,
|
|
ar.alg_ruimte_nr;
|
|
|
|
CREATE OR REPLACE VIEW dvon_v_rap_voorraad_auth
|
|
(
|
|
fclt_3d_discipline_key,
|
|
srtdeel_key,
|
|
object_groep,
|
|
object_soort,
|
|
maat,
|
|
aantal,
|
|
locatie,
|
|
gebouw,
|
|
verdiepingcode,
|
|
ruimtenr
|
|
)
|
|
AS
|
|
SELECT i.ins_discipline_key,
|
|
sub.ins_srtdeel_key,
|
|
iv.groep,
|
|
iv.soort,
|
|
maat.fac_usrdata_omschr,
|
|
COALESCE (COUNT (maat.fac_usrdata_omschr), 0),
|
|
iv.locatie_omschrijving,
|
|
iv.gebouw,
|
|
iv.verdiepingcode,
|
|
iv.ruimtenr
|
|
FROM ins_v_udr_deel iv,
|
|
ins_discipline i,
|
|
( SELECT ins_deel_key, ins_srtdeel_key FROM ins_deel) sub,
|
|
(SELECT f.fac_usrdata_omschr, iv.ins_deel_key
|
|
FROM fac_usrdata f,
|
|
ins_v_srtdeel_kenmerkdeel iv,
|
|
ins_kenmerk ik,
|
|
ins_srtkenmerk isk
|
|
WHERE f.fac_usrdata_key = iv.ins_kenmerkdeel_waarde
|
|
AND ik.ins_srtkenmerk_key = isk.ins_srtkenmerk_key
|
|
AND iv.ins_kenmerk_key = ik.ins_kenmerk_key
|
|
AND isk.ins_srtkenmerk_upper LIKE '%MAAT%') maat
|
|
WHERE iv.deel_key = maat.ins_deel_key(+)
|
|
AND maat.fac_usrdata_omschr IS NOT NULL
|
|
AND iv.uitgeleend NOT LIKE 'ja'
|
|
AND sub.ins_deel_key = iv.deel_key
|
|
AND i.ins_discipline_omschrijving = iv.discipline
|
|
AND i.ins_discipline_verwijder IS NULL
|
|
GROUP BY sub.ins_srtdeel_key,
|
|
maat.fac_usrdata_omschr,
|
|
iv.groep,
|
|
iv.soort,
|
|
iv.locatie_omschrijving,
|
|
iv.gebouw,
|
|
iv.verdiepingcode,
|
|
iv.ruimtenr,
|
|
i.ins_discipline_key
|
|
UNION ALL
|
|
SELECT i.ins_discipline_key,
|
|
sub.ins_srtdeel_key,
|
|
iv.groep,
|
|
iv.soort,
|
|
'NVT',
|
|
COUNT (iv.deel_key),
|
|
iv.locatie_omschrijving,
|
|
iv.gebouw,
|
|
iv.verdiepingcode,
|
|
iv.ruimtenr
|
|
FROM ins_v_udr_deel iv,
|
|
ins_discipline i,
|
|
( SELECT ins_deel_key, ins_srtdeel_key FROM ins_deel) sub
|
|
WHERE NOT EXISTS
|
|
(SELECT 1
|
|
FROM ins_kenmerk ik,
|
|
ins_srtkenmerk isk
|
|
WHERE
|
|
sub.ins_srtdeel_key = ik.ins_srtinstallatie_key
|
|
AND ik.ins_srtkenmerk_key = isk.ins_srtkenmerk_key
|
|
AND isk.ins_srtkenmerk_upper LIKE '%MAAT%')
|
|
AND iv.uitgeleend NOT LIKE 'ja'
|
|
AND sub.ins_deel_key = iv.deel_key
|
|
AND i.ins_discipline_omschrijving = iv.discipline
|
|
AND i.ins_discipline_verwijder IS NULL
|
|
GROUP BY sub.ins_srtdeel_key,
|
|
iv.groep,
|
|
iv.soort,
|
|
iv.locatie_omschrijving,
|
|
iv.gebouw,
|
|
iv.verdiepingcode,
|
|
iv.ruimtenr,
|
|
i.ins_discipline_key;
|
|
|
|
CREATE OR REPLACE VIEW dvon_v_rap_bes_voorraad
|
|
(
|
|
bestelopdrachtnummer,
|
|
bestellingkey,
|
|
bestelaanvraagnr,
|
|
besteldatum,
|
|
status,
|
|
besteller,
|
|
catalogus,
|
|
groep,
|
|
objectgroep,
|
|
productomschrijving,
|
|
productcode,
|
|
maat,
|
|
aantal,
|
|
kleurbolletje,
|
|
op_voorraad,
|
|
voorraad_locatie,
|
|
opmerking,
|
|
besteld_voor,
|
|
bestopdr_key
|
|
)
|
|
AS
|
|
SELECT bo.bes_bestelopdr_id,
|
|
b.bes_bestelling_key,
|
|
'A-' || b.bes_bestelling_key bestelaanvraagnr,
|
|
b.bes_bestelling_datum besteldatum,
|
|
(SELECT bes_bestellingstatuses_omschr
|
|
FROM bes_bestellingstatuses bs
|
|
WHERE bs.bes_bestellingstatuses_key = b.bes_bestelling_status)
|
|
status,
|
|
(SELECT prs_perslid_naam_full
|
|
FROM prs_v_perslid_fullnames_all pf
|
|
WHERE pf.prs_perslid_key = b.prs_perslid_key)
|
|
besteller,
|
|
d.ins_discipline_omschrijving catalogus,
|
|
sg.bes_srtgroep_omschrijving bestelgroep,
|
|
COALESCE (dv.object_groep, 'Niet beschikbaar') objectgroep,
|
|
sd.bes_srtdeel_omschrijving productomschrijving,
|
|
sd.bes_srtdeel_nr productcode,
|
|
COALESCE (maat.fac_usrdata_omschr, 'NVT') maat,
|
|
bi.bes_bestelling_item_aantal aantal,
|
|
lcl.l ('lcl_bestelopdr_flag' || bo.bes_bestelopdr_flag),
|
|
COALESCE (dv.aantal, 0) op_voorraad,
|
|
COALESCE (dv.locatie, 'Niet beschikbaar') voorraad_locatie,
|
|
bo.bes_bestelopdr_opmerking,
|
|
(SELECT prs_perslid_naam_full
|
|
FROM prs_v_perslid_fullnames_all pf
|
|
WHERE pf.prs_perslid_key = b.prs_perslid_key_voor)
|
|
besteld_voor,
|
|
bo.bes_bestelopdr_key
|
|
FROM bes_bestelling b,
|
|
bes_bestelling_item bi,
|
|
bes_bestelopdr_item boi,
|
|
bes_bestelopdr bo,
|
|
bes_kenmerkbesteli bki,
|
|
bes_kenmerk bk,
|
|
dvon_v_rap_voorraad dv,
|
|
ins_tab_discipline d,
|
|
bes_srtdeel sd,
|
|
bes_srtgroep sg,
|
|
(SELECT f.fac_usrdata_omschr,
|
|
f.fac_usrdata_key,
|
|
bsk.bes_srtkenmerk_key
|
|
FROM fac_usrdata f, bes_srtkenmerk bsk
|
|
WHERE bsk.bes_srtkenmerk_upper LIKE '%MAAT%') maat
|
|
WHERE b.bes_bestelling_key = bi.bes_bestelling_key
|
|
AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
|
|
AND boi.bes_bestelopdr_key = bo.bes_bestelopdr_key
|
|
AND bki.bes_bestelling_item_key(+) = bi.bes_bestelling_item_key
|
|
AND bki.bes_kenmerk_key = bk.bes_kenmerk_key(+)
|
|
AND bk.bes_srtkenmerk_key = maat.bes_srtkenmerk_key(+)
|
|
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key
|
|
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key
|
|
AND sg.ins_discipline_key = d.ins_discipline_key
|
|
AND maat.fac_usrdata_key(+) =
|
|
fac.safe_to_number (bki.bes_kenmerkbesteli_waarde)
|
|
AND dv.srtdeel_key(+) = sd.ins_srtdeel_key
|
|
AND bo.bes_bestelopdr_key IS NOT NULL
|
|
AND dv.maat(+) = maat.fac_usrdata_omschr
|
|
AND maat.fac_usrdata_omschr NOT LIKE '%NVT%'
|
|
UNION ALL
|
|
SELECT bo.bes_bestelopdr_id,
|
|
b.bes_bestelling_key,
|
|
'A-' || b.bes_bestelling_key bestelaanvraagnr,
|
|
b.bes_bestelling_datum besteldatum,
|
|
(SELECT bes_bestellingstatuses_omschr
|
|
FROM bes_bestellingstatuses bs
|
|
WHERE bs.bes_bestellingstatuses_key = b.bes_bestelling_status)
|
|
status,
|
|
(SELECT prs_perslid_naam_full
|
|
FROM prs_v_perslid_fullnames_all pf
|
|
WHERE pf.prs_perslid_key = b.prs_perslid_key)
|
|
besteller,
|
|
d.ins_discipline_omschrijving catalogus,
|
|
sg.bes_srtgroep_omschrijving bestelgroep,
|
|
COALESCE (dv.object_groep, 'Niet beschikbaar') objectgroep,
|
|
sd.bes_srtdeel_omschrijving productomschrijving,
|
|
sd.bes_srtdeel_nr productcode,
|
|
COALESCE (maat.fac_usrdata_omschr, 'NVT') maat,
|
|
bi.bes_bestelling_item_aantal aantal,
|
|
lcl.l ('lcl_bestelopdr_flag' || bo.bes_bestelopdr_flag),
|
|
COALESCE (dv.aantal, 0) op_voorraad,
|
|
COALESCE (dv.locatie, 'Niet beschikbaar') voorraad_locatie,
|
|
bo.bes_bestelopdr_opmerking,
|
|
(SELECT prs_perslid_naam_full
|
|
FROM prs_v_perslid_fullnames_all pf
|
|
WHERE pf.prs_perslid_key = b.prs_perslid_key_voor)
|
|
besteld_voor,
|
|
bo.bes_bestelopdr_key
|
|
FROM bes_bestelling b,
|
|
bes_bestelling_item bi,
|
|
bes_bestelopdr_item boi,
|
|
bes_bestelopdr bo,
|
|
bes_kenmerkbesteli bki,
|
|
bes_kenmerk bk,
|
|
dvon_v_rap_voorraad dv,
|
|
ins_tab_discipline d,
|
|
bes_srtdeel sd,
|
|
bes_srtgroep sg,
|
|
(SELECT f.fac_usrdata_omschr,
|
|
f.fac_usrdata_key,
|
|
bsk.bes_srtkenmerk_key
|
|
FROM fac_usrdata f, bes_srtkenmerk bsk
|
|
WHERE bsk.bes_srtkenmerk_upper LIKE '%MAAT%') maat
|
|
WHERE b.bes_bestelling_key = bi.bes_bestelling_key
|
|
AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
|
|
AND boi.bes_bestelopdr_key = bo.bes_bestelopdr_key
|
|
AND bki.bes_bestelling_item_key(+) = bi.bes_bestelling_item_key
|
|
AND bki.bes_kenmerk_key = bk.bes_kenmerk_key(+)
|
|
AND bk.bes_srtkenmerk_key = maat.bes_srtkenmerk_key(+)
|
|
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key
|
|
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key
|
|
AND sg.ins_discipline_key = d.ins_discipline_key
|
|
AND maat.fac_usrdata_key(+) =
|
|
fac.safe_to_number (bki.bes_kenmerkbesteli_waarde)
|
|
AND dv.srtdeel_key(+) = sd.ins_srtdeel_key
|
|
AND bo.bes_bestelopdr_key IS NOT NULL
|
|
AND dv.maat = 'NVT';
|
|
|
|
CREATE OR REPLACE VIEW dvon_v_rap_bes_voorraad_auth
|
|
(
|
|
fclt_3d_discipline_key,
|
|
bestelopdrachtnummer,
|
|
bestellingkey,
|
|
bestelaanvraagnr,
|
|
besteldatum,
|
|
status,
|
|
besteller,
|
|
catalogus,
|
|
groep,
|
|
objectgroep,
|
|
productomschrijving,
|
|
productcode,
|
|
maat,
|
|
aantal,
|
|
kleurbolletje,
|
|
op_voorraad,
|
|
voorraad_locatie,
|
|
opmerking,
|
|
besteld_voor,
|
|
bestopdr_key
|
|
)
|
|
AS
|
|
SELECT d.ins_discipline_key,
|
|
bo.bes_bestelopdr_id,
|
|
b.bes_bestelling_key,
|
|
'A-' || b.bes_bestelling_key bestelaanvraagnr,
|
|
b.bes_bestelling_datum besteldatum,
|
|
(SELECT bes_bestellingstatuses_omschr
|
|
FROM bes_bestellingstatuses bs
|
|
WHERE bs.bes_bestellingstatuses_key = b.bes_bestelling_status)
|
|
status,
|
|
(SELECT prs_perslid_naam_full
|
|
FROM prs_v_perslid_fullnames_all pf
|
|
WHERE pf.prs_perslid_key = b.prs_perslid_key)
|
|
besteller,
|
|
d.ins_discipline_omschrijving catalogus,
|
|
sg.bes_srtgroep_omschrijving bestelgroep,
|
|
COALESCE (dv.object_groep, 'Niet beschikbaar') objectgroep,
|
|
sd.bes_srtdeel_omschrijving productomschrijving,
|
|
sd.bes_srtdeel_nr productcode,
|
|
COALESCE (maat.fac_usrdata_omschr, 'NVT') maat,
|
|
bi.bes_bestelling_item_aantal aantal,
|
|
lcl.l ('lcl_bestelopdr_flag' || bo.bes_bestelopdr_flag),
|
|
COALESCE (dv.aantal, 0) op_voorraad,
|
|
COALESCE (dv.locatie, 'Niet beschikbaar') voorraad_locatie,
|
|
bo.bes_bestelopdr_opmerking,
|
|
(SELECT prs_perslid_naam_full
|
|
FROM prs_v_perslid_fullnames_all pf
|
|
WHERE pf.prs_perslid_key = b.prs_perslid_key_voor)
|
|
besteld_voor,
|
|
bo.bes_bestelopdr_key
|
|
FROM bes_bestelling b,
|
|
bes_bestelling_item bi,
|
|
bes_bestelopdr_item boi,
|
|
bes_bestelopdr bo,
|
|
bes_kenmerkbesteli bki,
|
|
bes_kenmerk bk,
|
|
dvon_v_rap_voorraad dv,
|
|
ins_tab_discipline d,
|
|
bes_srtdeel sd,
|
|
bes_srtgroep sg,
|
|
(SELECT f.fac_usrdata_omschr,
|
|
f.fac_usrdata_key,
|
|
bsk.bes_srtkenmerk_key
|
|
FROM fac_usrdata f, bes_srtkenmerk bsk
|
|
WHERE bsk.bes_srtkenmerk_upper LIKE '%MAAT%') maat
|
|
WHERE b.bes_bestelling_key = bi.bes_bestelling_key
|
|
AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
|
|
AND boi.bes_bestelopdr_key = bo.bes_bestelopdr_key
|
|
AND bki.bes_bestelling_item_key(+) = bi.bes_bestelling_item_key
|
|
AND bki.bes_kenmerk_key = bk.bes_kenmerk_key(+)
|
|
AND bk.bes_srtkenmerk_key = maat.bes_srtkenmerk_key(+)
|
|
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key
|
|
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key
|
|
AND sg.ins_discipline_key = d.ins_discipline_key
|
|
AND maat.fac_usrdata_key(+) =
|
|
fac.safe_to_number (bki.bes_kenmerkbesteli_waarde)
|
|
AND dv.srtdeel_key(+) = sd.ins_srtdeel_key
|
|
AND bo.bes_bestelopdr_key IS NOT NULL
|
|
AND dv.maat(+) = maat.fac_usrdata_omschr
|
|
AND maat.fac_usrdata_omschr NOT LIKE '%NVT%'
|
|
UNION ALL
|
|
SELECT d.ins_discipline_key,
|
|
bo.bes_bestelopdr_id,
|
|
b.bes_bestelling_key,
|
|
'A-' || b.bes_bestelling_key bestelaanvraagnr,
|
|
b.bes_bestelling_datum besteldatum,
|
|
(SELECT bes_bestellingstatuses_omschr
|
|
FROM bes_bestellingstatuses bs
|
|
WHERE bs.bes_bestellingstatuses_key = b.bes_bestelling_status)
|
|
status,
|
|
(SELECT prs_perslid_naam_full
|
|
FROM prs_v_perslid_fullnames_all pf
|
|
WHERE pf.prs_perslid_key = b.prs_perslid_key)
|
|
besteller,
|
|
d.ins_discipline_omschrijving catalogus,
|
|
sg.bes_srtgroep_omschrijving bestelgroep,
|
|
COALESCE (dv.object_groep, 'Niet beschikbaar') objectgroep,
|
|
sd.bes_srtdeel_omschrijving productomschrijving,
|
|
sd.bes_srtdeel_nr productcode,
|
|
COALESCE (maat.fac_usrdata_omschr, 'NVT') maat,
|
|
bi.bes_bestelling_item_aantal aantal,
|
|
lcl.l ('lcl_bestelopdr_flag' || bo.bes_bestelopdr_flag),
|
|
COALESCE (dv.aantal, 0) op_voorraad,
|
|
COALESCE (dv.locatie, 'Niet beschikbaar') voorraad_locatie,
|
|
bo.bes_bestelopdr_opmerking,
|
|
(SELECT prs_perslid_naam_full
|
|
FROM prs_v_perslid_fullnames_all pf
|
|
WHERE pf.prs_perslid_key = b.prs_perslid_key_voor)
|
|
besteld_voor,
|
|
bo.bes_bestelopdr_key
|
|
FROM bes_bestelling b,
|
|
bes_bestelling_item bi,
|
|
bes_bestelopdr_item boi,
|
|
bes_bestelopdr bo,
|
|
bes_kenmerkbesteli bki,
|
|
bes_kenmerk bk,
|
|
dvon_v_rap_voorraad dv,
|
|
ins_tab_discipline d,
|
|
bes_srtdeel sd,
|
|
bes_srtgroep sg,
|
|
(SELECT f.fac_usrdata_omschr,
|
|
f.fac_usrdata_key,
|
|
bsk.bes_srtkenmerk_key
|
|
FROM fac_usrdata f, bes_srtkenmerk bsk
|
|
WHERE bsk.bes_srtkenmerk_upper LIKE '%MAAT%') maat
|
|
WHERE b.bes_bestelling_key = bi.bes_bestelling_key
|
|
AND bi.bes_bestelopdr_item_key = boi.bes_bestelopdr_item_key
|
|
AND boi.bes_bestelopdr_key = bo.bes_bestelopdr_key
|
|
AND bki.bes_bestelling_item_key(+) = bi.bes_bestelling_item_key
|
|
AND bki.bes_kenmerk_key = bk.bes_kenmerk_key(+)
|
|
AND bk.bes_srtkenmerk_key = maat.bes_srtkenmerk_key(+)
|
|
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key
|
|
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key
|
|
AND sg.ins_discipline_key = d.ins_discipline_key
|
|
AND maat.fac_usrdata_key(+) =
|
|
fac.safe_to_number (bki.bes_kenmerkbesteli_waarde)
|
|
AND dv.srtdeel_key(+) = sd.ins_srtdeel_key
|
|
AND bo.bes_bestelopdr_key IS NOT NULL
|
|
AND dv.maat = 'NVT';
|
|
|
|
CREATE OR REPLACE VIEW dvon_v_rap_gelev_nbev
|
|
(
|
|
bestelling_key,
|
|
bestelaanvraagnr,
|
|
besteld_voor,
|
|
bestelling_status,
|
|
kostenplaats,
|
|
datum_laatste_lev,
|
|
email_besteld_voor,
|
|
fiatteur,
|
|
email_fiatteur
|
|
)
|
|
AS
|
|
SELECT DISTINCT
|
|
b.bes_bestelling_key,
|
|
'A-' || b.bes_bestelling_key bestelaanvraagnr,
|
|
(SELECT prs_perslid_naam_full
|
|
FROM prs_v_perslid_fullnames_all pf
|
|
WHERE pf.prs_perslid_key = b.prs_perslid_key_voor)
|
|
besteld_voor,
|
|
(SELECT bes_bestellingstatuses_omschr
|
|
FROM bes_bestellingstatuses bs
|
|
WHERE bs.bes_bestellingstatuses_key = b.bes_bestelling_status)
|
|
status,
|
|
pk.prs_kostenplaats_omschrijving,
|
|
b.bes_bestelling_leverdatum,
|
|
(SELECT p.prs_perslid_email
|
|
FROM prs_perslid p
|
|
WHERE p.prs_perslid_key = b.prs_perslid_key_voor)
|
|
email_voor,
|
|
(SELECT prs_perslid_naam_full
|
|
FROM prs_v_perslid_fullnames_all pf
|
|
WHERE pf.prs_perslid_key = b.bes_bestelling_fiat_user)
|
|
fiatteur,
|
|
(SELECT p.prs_perslid_email
|
|
FROM prs_perslid p
|
|
WHERE p.prs_perslid_key = b.bes_bestelling_fiat_user)
|
|
email_fiat
|
|
FROM bes_bestelling b,
|
|
prs_v_perslid_fullnames pf,
|
|
prs_kostenplaats pk,
|
|
prs_perslid p
|
|
WHERE b.prs_kostenplaats_key = pk.prs_kostenplaats_key
|
|
AND b.bes_bestelling_leverdatum IS NOT NULL
|
|
AND b.bes_bestelling_status = 6;
|
|
|
|
CREATE OR REPLACE VIEW dvon_v_rap_bezit_extra
|
|
(
|
|
perslid_key,
|
|
deel_key,
|
|
fclt_3d_discipline_key,
|
|
deel_soort,
|
|
deel_oms,
|
|
maat,
|
|
uitgegeven,
|
|
eigenaar,
|
|
locatie
|
|
)
|
|
AS
|
|
SELECT (SELECT pf.prs_perslid_key
|
|
FROM prs_v_perslid_fullnames pf
|
|
WHERE i.ins_alg_ruimte_key = pf.prs_perslid_key
|
|
AND i.ins_alg_ruimte_type = 'P')
|
|
perslid_key,
|
|
i.ins_deel_key,
|
|
i.ins_discipline_key,
|
|
isrt.ins_srtdeel_omschrijving,
|
|
i.ins_deel_omschrijving,
|
|
maat.fac_usrdata_omschr,
|
|
DECODE (i.ins_alg_ruimte_key_org, NULL, 'Nee', 'Ja') uitgegeven,
|
|
(SELECT pf.prs_perslid_naam_friendly
|
|
FROM prs_v_perslid_fullnames pf
|
|
WHERE i.ins_alg_ruimte_key = pf.prs_perslid_key
|
|
AND i.ins_alg_ruimte_type = 'P')
|
|
persoon,
|
|
(SELECT ar.alg_ruimte_upper_nr
|
|
FROM alg_ruimte ar
|
|
WHERE i.ins_alg_ruimte_key = ar.alg_ruimte_key
|
|
AND i.ins_alg_ruimte_type = 'R')
|
|
locatie
|
|
FROM ins_deel i,
|
|
ins_srtdeel isrt,
|
|
(SELECT f.fac_usrdata_omschr, iv.ins_deel_key
|
|
FROM fac_usrdata f,
|
|
ins_v_srtdeel_kenmerkdeel iv,
|
|
ins_kenmerk ik,
|
|
ins_srtkenmerk isk
|
|
WHERE f.fac_usrdata_key = fac.safe_to_number (iv.ins_kenmerkdeel_waarde)
|
|
AND ik.ins_srtkenmerk_key = isk.ins_srtkenmerk_key
|
|
AND iv.ins_kenmerk_key = ik.ins_kenmerk_key
|
|
AND isk.ins_srtkenmerk_upper LIKE '%MAAT%') maat
|
|
WHERE i.ins_deel_key = maat.ins_deel_key(+)
|
|
AND i.ins_srtdeel_key = isrt.ins_srtdeel_key
|
|
AND i.ins_deel_verwijder IS NULL;
|
|
|
|
CREATE OR REPLACE VIEW dvon_v_rap_bezit_extra_print
|
|
(
|
|
perslid_key,
|
|
deel_key,
|
|
fclt_3d_discipline_key,
|
|
discipline,
|
|
deel_soort,
|
|
deel_oms,
|
|
maat,
|
|
uitgegeven,
|
|
eigenaar,
|
|
locatie
|
|
)
|
|
AS
|
|
SELECT (SELECT pf.prs_perslid_key
|
|
FROM prs_v_perslid_fullnames pf
|
|
WHERE i.ins_alg_ruimte_key = pf.prs_perslid_key
|
|
AND i.ins_alg_ruimte_type = 'P')
|
|
perslid_key,
|
|
i.ins_deel_key,
|
|
i.ins_discipline_key,
|
|
idc.ins_discipline_omschrijving,
|
|
isrt.ins_srtdeel_omschrijving,
|
|
i.ins_deel_omschrijving,
|
|
maat.fac_usrdata_omschr,
|
|
DECODE (i.ins_alg_ruimte_key_org, NULL, 'Nee', 'Ja') uitgegeven,
|
|
(SELECT pf.prs_perslid_naam_friendly
|
|
FROM prs_v_perslid_fullnames pf
|
|
WHERE i.ins_alg_ruimte_key = pf.prs_perslid_key
|
|
AND i.ins_alg_ruimte_type = 'P')
|
|
persoon,
|
|
(SELECT ar.alg_ruimte_upper_nr
|
|
FROM alg_ruimte ar
|
|
WHERE i.ins_alg_ruimte_key = ar.alg_ruimte_key
|
|
AND i.ins_alg_ruimte_type = 'R')
|
|
locatie
|
|
FROM ins_deel i,
|
|
ins_srtdeel isrt,
|
|
ins_discipline idc,
|
|
(SELECT f.fac_usrdata_omschr, iv.ins_deel_key
|
|
FROM fac_usrdata f,
|
|
ins_v_srtdeel_kenmerkdeel iv,
|
|
ins_kenmerk ik,
|
|
ins_srtkenmerk isk
|
|
WHERE f.fac_usrdata_key = iv.ins_kenmerkdeel_waarde
|
|
AND ik.ins_srtkenmerk_key = isk.ins_srtkenmerk_key
|
|
AND iv.ins_kenmerk_key = ik.ins_kenmerk_key
|
|
AND isk.ins_srtkenmerk_upper LIKE '%MAAT%') maat
|
|
WHERE i.ins_deel_key = maat.ins_deel_key(+)
|
|
AND i.ins_srtdeel_key = isrt.ins_srtdeel_key
|
|
AND i.ins_deel_verwijder IS NULL
|
|
AND i.ins_discipline_key = idc.ins_discipline_key;
|
|
|
|
CREATE OR REPLACE VIEW dvon_v_rap_art_voorraad
|
|
(
|
|
-- fclt_3d_discipline_key,
|
|
-- catalogus,
|
|
-- groep,
|
|
productomschrijving,
|
|
maat,
|
|
aantal_besteld,
|
|
op_voorraad,
|
|
onvoldoende_voorraad
|
|
)
|
|
AS
|
|
SELECT --fclt_3d_discipline_key,
|
|
--catalogus,
|
|
--groep,
|
|
productomschrijving,
|
|
maat,
|
|
SUM (aantal) besteld,
|
|
op_voorraad,
|
|
CASE WHEN op_voorraad - SUM (aantal) < 0 THEN '!' ELSE 'V' END
|
|
FROM dvon_v_rap_bes_voorraad_auth
|
|
GROUP BY --fclt_3d_discipline_key,
|
|
--catalogus,
|
|
--groep,
|
|
productomschrijving,
|
|
maat,
|
|
op_voorraad;
|
|
|
|
CREATE OR REPLACE VIEW dvon_v_rap_impobjsrt
|
|
(
|
|
objsrtkey,
|
|
disciplineomschrijving,
|
|
groepsoortomschrijving,
|
|
objectsoortcode,
|
|
objectsoortomschrijving,
|
|
Uitleenbaar,
|
|
Leverancier,
|
|
Vervaldatum,
|
|
Kenmerksoort,
|
|
Bewerken_bij,
|
|
Volgnummer,
|
|
Verplicht,
|
|
Groep
|
|
)
|
|
AS
|
|
SELECT i.ins_srtdeel_key,
|
|
itab.ins_discipline_omschrijving,
|
|
ig.ins_srtgroep_omschrijving,
|
|
i.ins_srtdeel_code,
|
|
i.ins_srtdeel_omschrijving,
|
|
DECODE (i.ins_srtdeel_uitleenbaar, 1, 'ja', 'nee'),
|
|
sub.fac_usrdata_omschr,
|
|
i.ins_srtdeel_vervaldatum,
|
|
isk.ins_srtkenmerk_omschrijving,
|
|
DECODE (ik.ins_kenmerk_bewerkniveau, 'D', 'deel', 'S', 'soort'),
|
|
ik.ins_kenmerk_volgnummer,
|
|
DECODE (ik.ins_kenmerk_verplicht, 1, 'ja', 'nee'),
|
|
ik.ins_kenmerk_groep
|
|
FROM ins_srtdeel i,
|
|
ins_kenmerk ik,
|
|
ins_srtkenmerk isk,
|
|
ins_srtgroep ig,
|
|
ins_tab_discipline itab,
|
|
(SELECT f.fac_usrdata_omschr, i.ins_deel_key
|
|
FROM fac_usrdata f, ins_kenmerkdeel i
|
|
WHERE i.ins_kenmerkdeel_waarde = f.fac_usrdata_key
|
|
AND i.ins_kenmerk_key = 241) sub
|
|
WHERE i.ins_srtgroep_key = ig.ins_srtgroep_key
|
|
AND ig.ins_discipline_key = itab.ins_discipline_key
|
|
AND ik.ins_srtkenmerk_key = isk.ins_srtkenmerk_key
|
|
AND ik.ins_kenmerk_niveau = 'S'
|
|
AND ik.ins_srtinstallatie_key = i.ins_srtdeel_key
|
|
AND i.ins_srtdeel_key = sub.ins_deel_key(+)
|
|
AND i.ins_srtdeel_verwijder IS NULL
|
|
AND ik.ins_kenmerk_verwijder IS NULL;
|
|
|
|
CREATE OR REPLACE VIEW DVON_V_RAP_ORGKOST
|
|
(
|
|
Bedrijfsnaam,
|
|
Afdelingscodeparent,
|
|
Afdelingscode,
|
|
Afdelingsomschrijving,
|
|
Kostenplaats,
|
|
Kostenplaatsomschrijving,
|
|
KostenplaatsType,
|
|
Kostenplaatsbegin,
|
|
Kostenplaatseind,
|
|
Budgethouder,
|
|
KostenplaatsBudget,
|
|
KostenplaatsBudgetPeriode,
|
|
KostenplaatsExtern,
|
|
OpdrachtenFiatteren,
|
|
Kostenplaatsgroep,
|
|
Kostenplaatsgroepnummer,
|
|
Fiatteur_1,
|
|
Fiatteur_2,
|
|
Fiatteur_3,
|
|
Limiet,
|
|
Limiet_periode
|
|
)
|
|
AS
|
|
SELECT pb.prs_bedrijf_naam,
|
|
par.prs_afdeling_naam,
|
|
pa.prs_afdeling_naam,
|
|
pa.prs_afdeling_omschrijving,
|
|
pk.prs_kostenplaats_nr,
|
|
pk.prs_kostenplaats_omschrijving,
|
|
pk.prs_kostenplaats_module,
|
|
TRUNC (pk.prs_kostenplaats_begin),
|
|
TRUNC (pk.prs_kostenplaats_eind),
|
|
(SELECT prs_perslid_oslogin
|
|
FROM prs_perslid
|
|
WHERE prs_perslid_key = pk.prs_perslid_key)
|
|
budgethouder,
|
|
prs_kostenplaats_limiet,
|
|
DECODE (pk.prs_kostenplaats_limietperiode, 1, 'M', 2, 'J', 0),
|
|
pk.prs_kostenplaats_extern,
|
|
pk.prs_kostenplaats_fiat,
|
|
pkg.prs_kostenplaatsgrp_oms,
|
|
pkg.prs_kostenplaatsgrp_nr,
|
|
(SELECT prs_perslid_oslogin
|
|
FROM prs_perslid
|
|
WHERE prs_perslid_key = pkg.prs_perslid_key)
|
|
fiat1,
|
|
(SELECT prs_perslid_oslogin
|
|
FROM prs_perslid
|
|
WHERE prs_perslid_key = pkg.prs_kostenplaatsgrp_fiat2_key)
|
|
fiat2,
|
|
(SELECT prs_perslid_oslogin
|
|
FROM prs_perslid
|
|
WHERE prs_perslid_key = pkg.prs_kostenplaatsgrp_fiat3_key)
|
|
fiat3,
|
|
pkg.prs_kostenplaatsgrp_limiet,
|
|
DECODE (pkg.prs_kostenplaatsgrp_limperiode, 1, 'M', 2, 'J', 0)
|
|
FROM prs_afdeling pa,
|
|
prs_bedrijf pb,
|
|
prs_kostenplaats pk,
|
|
prs_kostenplaatsgrp pkg,
|
|
(SELECT prs_afdeling_key, prs_afdeling_naam FROM prs_afdeling) par
|
|
WHERE pa.prs_bedrijf_key = pb.prs_bedrijf_key(+)
|
|
AND pa.prs_afdeling_parentkey = par.prs_afdeling_key(+)
|
|
AND pa.prs_kostenplaats_key = pk.prs_kostenplaats_key
|
|
AND pk.prs_kostenplaatsgrp_key = pkg.prs_kostenplaatsgrp_key(+)
|
|
AND pb.prs_bedrijf_verwijder IS NULL
|
|
AND pk.prs_kostenplaats_verwijder IS NULL
|
|
AND pa.prs_afdeling_verwijder IS NULL;
|
|
|
|
-- t.b.v. de import CATARTIKEL, IN TESTFASE!!
|
|
CREATE OR REPLACE VIEW dvon_v_rap_impcatartikel
|
|
(
|
|
catalogusnaam,
|
|
leverancier,
|
|
artikelnr,
|
|
groep,
|
|
omschrijving,
|
|
prijs,
|
|
eenheid,
|
|
picture,
|
|
wijzigdagen,
|
|
annuleerdagen,
|
|
duedate,
|
|
minimumvoorraad,
|
|
maximumvoorraad,
|
|
opmerking,
|
|
objectsoortcode,
|
|
kenmerksoort,
|
|
volgnummer,
|
|
verplicht,
|
|
kenmerkgroep
|
|
)
|
|
AS
|
|
SELECT DISTINCT
|
|
i.ins_discipline_omschrijving,
|
|
pb.prs_bedrijf_naam,
|
|
b.bes_srtdeel_nr,
|
|
bg.bes_srtgroep_omschrijving,
|
|
b.bes_srtdeel_omschrijving,
|
|
NULL ,--prijs is altijd leeg
|
|
b.bes_srtdeel_eenheid,
|
|
b.bes_srtdeel_image,
|
|
b.bes_srtdeel_wijzigdagen,
|
|
b.bes_srtdeel_annuleerdagen,
|
|
b.bes_srtdeel_vervaldatum,
|
|
b.bes_srtdeel_voorraadmin,
|
|
b.bes_srtdeel_voorraadmax,
|
|
b.bes_srtdeel_opmerking,
|
|
sd.ins_srtdeel_code,
|
|
bsk.bes_srtkenmerk_omschrijving,
|
|
bk.bes_kenmerk_volgnummer,
|
|
bk.bes_kenmerk_verplicht,
|
|
bk.bes_kenmerk_groep
|
|
FROM
|
|
bes_srtdeel b,
|
|
bes_srtgroep bg,
|
|
bes_kenmerk bk,
|
|
bes_srtkenmerk bsk,
|
|
prs_bedrijf pb,
|
|
bes_discipline i,
|
|
ins_srtdeel sd
|
|
WHERE
|
|
b.prs_bedrijf_key = pb.prs_bedrijf_key
|
|
AND b.bes_srtgroep_key = bg.bes_srtgroep_key(+)
|
|
AND bg.ins_discipline_key = i.ins_discipline_key(+)
|
|
AND b.ins_srtdeel_key = sd.ins_srtdeel_key
|
|
AND bk.bes_srtkenmerk_key = bsk.bes_srtkenmerk_key
|
|
AND bk.bes_srtinstallatie_key = b.bes_srtdeel_key
|
|
AND b.bes_srtdeel_verwijder IS NULL;
|
|
|
|
-- Voor het exporteren van bestelde artikelen om later in te lezen via de objectenimport
|
|
CREATE OR REPLACE VIEW dvon_v_rap_expbestelling
|
|
(
|
|
bestelling_key,
|
|
disciplineomschrijving,
|
|
disciplinekostensoort,
|
|
groepsoortomschrijving,
|
|
objectsoortcode,
|
|
objectsoortomschrijving,
|
|
objectidentificatie,
|
|
objectopmerking,
|
|
reserveerbaar,
|
|
eenheid,
|
|
prijs,
|
|
locatiecode,
|
|
gebouwcode,
|
|
bouwlaagvolgnummer,
|
|
ruimtenummer,
|
|
reserveringscope,
|
|
catalogusnaam,
|
|
cataloguskostensoort,
|
|
persoonmatchcode,
|
|
persoonmatchwaarde,
|
|
ingangsdatum,
|
|
vervaldatum,
|
|
aantal,
|
|
maat,
|
|
kenmerk2,
|
|
kenmerk3,
|
|
kenmerk4,
|
|
kenmerk5,
|
|
kenmerk6,
|
|
kenmerk7,
|
|
kenmerk8,
|
|
kenmerk9,
|
|
kenmerk10,
|
|
kenmerk11,
|
|
kenmerk12,
|
|
kenmerk13,
|
|
kenmerk14,
|
|
kenmerk15,
|
|
kenmerk16,
|
|
kenmerk17,
|
|
kenmerk18,
|
|
kenmerk19,
|
|
kenmerk20
|
|
)
|
|
AS
|
|
SELECT sub.bes_bestelling_key,
|
|
d.ins_discipline_omschrijving,
|
|
NULL,
|
|
sg.ins_srtgroep_omschrijving,
|
|
sd.ins_srtdeel_code,
|
|
sd.ins_srtdeel_omschrijving,
|
|
MAX (I.INS_DEEL_OMSCHRIJVING),
|
|
NULL, -- geen opmerking
|
|
NULL, -- reserveerbaar is nvt
|
|
NULL, -- eenheid is nvt
|
|
NULL, -- prijs is nvt
|
|
'DVO-ASSEN3', -- locatiecode
|
|
'DVO-ASS-MA', -- gebouwcode
|
|
'0', -- bouwlaag
|
|
'MAGAZIJN', --ruimtenummer
|
|
NULL, -- reserveringscope
|
|
NULL, -- catalogusnaam
|
|
NULL, -- cataloguskostensoort
|
|
NULL, -- persoonmatchcode
|
|
NULL, -- persoonmatchwaarde
|
|
NULL, -- ingangsdatum
|
|
NULL, -- vervaldatum
|
|
sub.aantal, -- aantal, moet nog omgebogen worden
|
|
sub.maat, -- kenmerk 1
|
|
-- en hieronder kenmerk 2 tm 20
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL,
|
|
NULL
|
|
FROM ( SELECT b.bes_bestelling_key,
|
|
sd.ins_srtdeel_key,
|
|
sd.bes_srtdeel_omschrijving productomschrijving,
|
|
maat.fac_usrdata_omschr maat,
|
|
SUM (bi.bes_bestelling_item_aantal) aantal
|
|
FROM bes_bestelling b,
|
|
bes_bestelling_item bi,
|
|
bes_bestelopdr_item boi,
|
|
bes_bestelopdr bo,
|
|
bes_kenmerkbesteli bki,
|
|
bes_kenmerk bk,
|
|
ins_tab_discipline d,
|
|
bes_srtdeel sd,
|
|
bes_srtgroep sg,
|
|
(SELECT f.fac_usrdata_omschr,
|
|
f.fac_usrdata_key,
|
|
bsk.bes_srtkenmerk_key
|
|
FROM fac_usrdata f, bes_srtkenmerk bsk
|
|
WHERE bsk.bes_srtkenmerk_upper LIKE '%MAAT%') maat
|
|
WHERE b.bes_bestelling_key = bi.bes_bestelling_key
|
|
AND bi.bes_bestelopdr_item_key =
|
|
boi.bes_bestelopdr_item_key
|
|
AND boi.bes_bestelopdr_key = bo.bes_bestelopdr_key
|
|
AND bki.bes_bestelling_item_key(+) =
|
|
bi.bes_bestelling_item_key
|
|
AND bki.bes_kenmerk_key = bk.bes_kenmerk_key(+)
|
|
AND bk.bes_srtkenmerk_key = maat.bes_srtkenmerk_key(+)
|
|
AND bi.bes_srtdeel_key = sd.bes_srtdeel_key
|
|
AND sd.bes_srtgroep_key = sg.bes_srtgroep_key
|
|
AND sg.ins_discipline_key = d.ins_discipline_key
|
|
AND maat.fac_usrdata_key(+) =
|
|
fac.safe_to_number (bki.bes_kenmerkbesteli_waarde)
|
|
GROUP BY (b.bes_bestelling_key,
|
|
sd.ins_srtdeel_key,
|
|
sd.bes_srtdeel_omschrijving,
|
|
-- bi.bes_bestelling_item_aantal,
|
|
maat.fac_usrdata_omschr)) sub,
|
|
ins_tab_discipline d,
|
|
ins_deel i,
|
|
ins_srtdeel sd,
|
|
ins_srtgroep sg
|
|
WHERE sub.ins_srtdeel_key = sd.ins_srtdeel_key
|
|
AND sd.ins_srtdeel_key = i.ins_srtdeel_key
|
|
AND sd.ins_srtgroep_key = sg.ins_srtgroep_key
|
|
AND sg.ins_discipline_key = d.ins_discipline_key
|
|
AND sub.ins_srtdeel_key IS NOT NULL
|
|
GROUP BY (sub.bes_bestelling_key,
|
|
d.ins_discipline_omschrijving,
|
|
sg.ins_srtgroep_omschrijving,
|
|
sd.ins_srtdeel_code,
|
|
sd.ins_srtdeel_omschrijving,
|
|
sub.aantal,
|
|
sub.maat);
|
|
|
|
-- Bovenstaande view maar dan in formaat voor import EXTRAINS
|
|
CREATE OR REPLACE VIEW dvon_v_expbestelling_data
|
|
(
|
|
bestelling_key,
|
|
disciplineomschrijving,
|
|
disciplinekostensoort,
|
|
groepsoortomschrijving,
|
|
objectsoortcode,
|
|
objectsoortomschrijving,
|
|
objectomschrijving,
|
|
nummer,
|
|
objectopmerking,
|
|
reserveerbaar,
|
|
eenheid,
|
|
prijs,
|
|
locatiecode,
|
|
gebouwcode,
|
|
bouwlaagvolgnummer,
|
|
ruimtenummer,
|
|
reserveringscope,
|
|
catalogusnaam,
|
|
cataloguskostensoort,
|
|
persoonmatchcode,
|
|
persoonmatchwaarde,
|
|
maat,
|
|
kenmerk2,
|
|
kenmerk3,
|
|
kenmerk4,
|
|
kenmerk5,
|
|
kenmerk6,
|
|
kenmerk7,
|
|
kenmerk8,
|
|
kenmerk9,
|
|
kenmerk10,
|
|
kenmerk11,
|
|
kenmerk12,
|
|
kenmerk13,
|
|
kenmerk14,
|
|
kenmerk15,
|
|
kenmerk16,
|
|
kenmerk17,
|
|
kenmerk18,
|
|
kenmerk19,
|
|
kenmerk20
|
|
)
|
|
AS
|
|
SELECT bestelling_key,
|
|
disciplineomschrijving,
|
|
disciplinekostensoort,
|
|
groepsoortomschrijving,
|
|
objectsoortcode,
|
|
objectsoortomschrijving,
|
|
ROWNUM,
|
|
objectidentificatie,
|
|
objectopmerking,
|
|
reserveerbaar,
|
|
eenheid,
|
|
prijs,
|
|
locatiecode,
|
|
gebouwcode,
|
|
bouwlaagvolgnummer,
|
|
ruimtenummer,
|
|
reserveringscope,
|
|
catalogusnaam,
|
|
cataloguskostensoort,
|
|
persoonmatchcode,
|
|
persoonmatchwaarde,
|
|
maat,
|
|
kenmerk2,
|
|
kenmerk3,
|
|
kenmerk4,
|
|
kenmerk5,
|
|
kenmerk6,
|
|
kenmerk7,
|
|
kenmerk8,
|
|
kenmerk9,
|
|
kenmerk10,
|
|
kenmerk11,
|
|
kenmerk12,
|
|
kenmerk13,
|
|
kenmerk14,
|
|
kenmerk15,
|
|
kenmerk16,
|
|
kenmerk17,
|
|
kenmerk18,
|
|
kenmerk19,
|
|
kenmerk20
|
|
FROM dvon_v_rap_expbestelling d
|
|
CROSS JOIN
|
|
( SELECT ROWNUM n
|
|
FROM DUAL
|
|
CONNECT BY LEVEL <=
|
|
(SELECT MAX (aantal)
|
|
FROM dvon_v_rap_expbestelling))
|
|
WHERE n <= aantal
|
|
ORDER BY objectsoortcode;
|
|
|
|
CREATE OR REPLACE VIEW dvon_v_noti_bes_deel
|
|
(
|
|
code,
|
|
sender,
|
|
receiver,
|
|
text,
|
|
key,
|
|
xkey
|
|
)
|
|
AS
|
|
SELECT DISTINCT
|
|
'CUST01',
|
|
NULL,
|
|
b.prs_perslid_key,
|
|
'Deellevering voor bestelling met nummer '
|
|
|| b.bes_bestelling_key,
|
|
b.bes_bestelling_key,
|
|
NULL
|
|
FROM bes_bestelling b,
|
|
(SELECT
|
|
bes_bestelling_key,
|
|
SUM (bes_bestelling_item_aantalontv) aantalontv,
|
|
SUM (bes_bestelling_item_aantal) aantal
|
|
FROM bes_bestelling_item
|
|
GROUP BY bes_bestelling_key) bi,
|
|
bes_bestelopdr bo,
|
|
fac_tracking fa
|
|
WHERE b.bes_bestelling_key = bi.bes_bestelling_key
|
|
AND bi.aantalontv IS NOT NULL -- Er moeten artikelen ontvangen zijn voor een deellevering
|
|
AND bi.aantalontv < bi.aantal -- Levering is nog niet compleet
|
|
AND fa.fac_tracking_refkey = bo.bes_bestelopdr_key
|
|
AND fa.fac_srtnotificatie_key = 25 -- BESUPD er is iets geleverd
|
|
AND b.bes_bestelling_key = substr(bo.bes_bestelopdr_id, 1, instr(bo.bes_bestelopdr_id, '/')-1)
|
|
AND fa.fac_tracking_datum BETWEEN (SELECT fac_notificatie_job_nextrun
|
|
- fac_notificatie_job_interval
|
|
/ 24
|
|
FROM fac_notificatie_job
|
|
WHERE fac_notificatie_job_view =
|
|
'DVON_V_NOTI_BES_DEEL')
|
|
AND (SELECT fac_notificatie_job_nextrun
|
|
FROM fac_notificatie_job
|
|
WHERE fac_notificatie_job_view =
|
|
'DVON_V_NOTI_BES_DEEL');
|
|
|
|
------ payload end ------
|
|
|
|
SET DEFINE OFF
|
|
BEGIN adm.systrackscriptId ('$Id$', 0); END;
|
|
/
|
|
|
|
COMMIT;
|
|
SET ECHO OFF
|
|
SPOOL OFF
|
|
SET DEFINE ON
|
|
PROMPT Logfile of this upgrade is: &fcltlogfile
|